{"version":3,"file":"js/167-85705c5d4210d8331b8e.js","mappings":"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D,eAAgB,CACd/iH,MAAO,kBACPitB,YACE,qPACF41F,SACE,uFACFC,QAASH,EACT7tD,MAAO,GAGTw4B,cAAe,CACbttF,MAAO,iBACPitB,YACE,sMACF41F,SACE,sFACFC,QAASH,EACT7tD,MAAO,GAGTq7B,OAAQ,CACNnwF,MAAO,SACPitB,YACE,+KACF41F,SACE,uFACFC,QAASH,EACT7tD,MAAO,GAGThN,OAAQ,CACN9nD,MAAO,SACPitB,YACE,+NACF41F,SACE,yEACFC,QAASH,EACT7tD,MAAO,GAGTkuD,aAAc,CACZhjH,MAAO,gBACPitB,YACE,sNACF41F,SACE,qFACFC,QAASH,EACT7tD,MAAO,GAGTmuD,qBAAsB,CACpBjjH,MAAO,8CACPitB,YACE,oIACF41F,SACE,8EACFC,QAAS,iBACThuD,MAAO,GAGT+nC,SAAU,CACR78F,MAAO,8CACPitB,YACE,oIACF41F,SACE,8EACFC,QAASH,EACT7tD,MAAO,GAET8wC,MAAO,CACL5lG,MAAO,8CACPitB,YACE,oIACF41F,SACE,8EACFC,QAASH,EACT7tD,MAAO,GAGTgb,WAAY,CACV9vE,MAAO,aACPitB,YACE,+JACF41F,SAAU,4DACVC,QAASH,EACT7tD,MAAO,GAGTouD,SAAU,CACRljH,MAAO,YACPitB,YACE,kIACF41F,SACE,qEACFC,QAASH,EACT7tD,MAAO,GAGTquD,OAAQ,CACNnjH,MAAO,2CACPitB,YACE,qJACF41F,SAAU,GACVC,QAASH,EACT7tD,MAAO,GAGTp8B,SAAU,CACR14B,MAAO,WACPitB,YAAa,8CACb41F,SAAU,GACVC,QAASH,EACT7tD,MAAO,GAGTz/C,WAAY,CACVrV,MAAO,aACPitB,YAAa,gDACb41F,SAAU,GACVC,QAASH,EACT7tD,MAAO,GAETsuD,UAAW,CACTpjH,MAAO,YACPitB,YAAa,+CACb41F,SAAU,GACVC,QAASH,EACT7tD,MAAO,GAET/iC,SAAU,CACR/xB,MAAO,WACPitB,YAAa,8CACb41F,SAAU,GACVC,QAASH,EACT7tD,MAAO,GAETuuD,OAAQ,CACNr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","sources":["webpack://white_knight/./app/javascript/packs/googleAnalytics.ts","webpack://white_knight/./app/javascript/packs/sentry.ts","webpack://white_knight/./app/javascript/src/api/api.ts","webpack://white_knight/./app/javascript/src/components/AdoptechAccordionCard/AdoptechAccordionCard.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechButton/AdoptechButton.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechCheckbox/AdoptechCheckbox.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechCountrySelect/AdoptechCountrySelect.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechDatePicker/AdoptechDatePicker.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechDatePicker2/AdoptechDatePicker2.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechDropdownToggle/AdoptechDropdownToggle.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechFileInput/AdoptechFileInput.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechGridTable/AdoptechGridTable.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechDrawer/AdoptechDrawer.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechHS/AdoptechHS.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechModal/AdoptechModal.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechOverflowLine/AdoptechOverflowLine.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechPanel/AdoptechPanel.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechRadioButton/AdoptechRadioButton.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechRadioButtonsGroup/AdoptechRadioButtonsGroup.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechReacSelect2/AdoptechReactSelect2.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechReactSelect/AdoptechReactSelect.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechStateSelect/AdoptechStateSelect.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechTable/AdoptechTable.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechTextArea/AdoptechTextArea.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechTextArea2/AdoptechTextArea2.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechTextInput/AdoptechTextInput.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechTextInput2/AdoptechTextInput2.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechTooltip/AdoptechTooltip.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AddNewAgreementForm/NameStep/NameStep.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AddNewAgreementForm/Footer.tsx","webpack://white_knight/./app/javascript/src/hooks/agreements/useAgreementsTermsRadioOptions.ts","webpack://white_knight/./app/javascript/src/components/Agreements/AddNewAgreementForm/TermsStep/TermsStep.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AddNewAgreementForm/AddNewAgreementForm.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AddNewAgreementForm/SignatoriesStep/SignatoriesStep.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementEditor/PreviewMode/PreviewMode.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementMeatballMenu/AgreementMeatballMenu.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementSendReviewModal/AgreementSendReviewModal.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementsList/AgreementsRow.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementsList/AgreementsList.tsx","webpack://white_knight/./app/javascript/src/hooks/agreements/useAgreementsList.ts","webpack://white_knight/./app/javascript/src/components/SendReminderModal/SendReminderModal.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementsModals/AgreementsModals.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/EditAgreementForm/DocumentUploadStep/DocumentUploadStep.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/EditAgreementForm/PrimaryStep/DocumentPermissionsSection/DocumentPermissionsSection.tsx","webpack://white_knight/./app/javascript/src/selectors/selectAgreementsEditForm.ts","webpack://white_knight/./app/javascript/src/components/Agreements/EditAgreementForm/PrimaryStep/OverviewSection/OverviewSection.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/EditAgreementForm/PrimaryStep/BrandingSection/BrandingSection.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/EditAgreementForm/PrimaryStep/SignatoriesSection/SignatoriesMeatballMenu.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/EditAgreementForm/PrimaryStep/SignatoriesSection/ExternalSignatories.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/EditAgreementForm/PrimaryStep/SignatoriesSection/InternalSignatories.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/EditAgreementForm/PrimaryStep/SignatoriesSection/SignatoriesSection.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/EditAgreementForm/PrimaryStep/PrimaryStep.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/EditAgreementForm/SignatoriesEditStep/SignatoriesEditStep.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/EditAgreementForm/Footer.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/EditAgreementForm/EditAgreementForm.tsx","webpack://white_knight/./app/javascript/src/components/ColourPalette/ColourPalette.tsx","webpack://white_knight/./app/javascript/src/components/ConfirmModal/ConfirmModal.tsx","webpack://white_knight/./app/javascript/src/components/ConfirmationModal/ConfirmationModal.tsx","webpack://white_knight/./app/javascript/src/components/DashboardTile/DashboardTile.tsx","webpack://white_knight/./app/javascript/src/components/DownloadDocumentModal/DownloadDocumentModal.tsx","webpack://white_knight/./app/javascript/src/components/DropZone/DropZone.tsx","webpack://white_knight/./app/javascript/src/components/EditActionModal/EditActionModal.tsx","webpack://white_knight/./app/javascript/src/components/EditProfileFields/EditProfileFields.tsx","webpack://white_knight/./app/javascript/src/components/ErrorToast/ErrorToast.tsx","webpack://white_knight/./app/javascript/src/components/ExitConfirmationModal/ExitConfirmationModal.tsx","webpack://white_knight/./app/javascript/src/components/ExternalSignatoryForm/ExternalSignatoryForm.tsx","webpack://white_knight/./app/javascript/src/components/Frameworks/Pills.tsx","webpack://white_knight/./app/javascript/src/components/GenericModal/GenericModal.tsx","webpack://white_knight/./app/javascript/src/components/GlobalToast/GlobalToast.tsx","webpack://white_knight/./app/javascript/src/components/IconButton/IconButton.tsx","webpack://white_knight/./app/javascript/src/components/PolicyProgress/PolicyProgress.tsx","webpack://white_knight/./app/javascript/src/components/InProgressPoliciesGrid/InProgressPolicyRow.tsx","webpack://white_knight/./app/javascript/src/components/LoadingScreen/LoadingScreen.tsx","webpack://white_knight/./app/javascript/src/components/LoadingSpinner/LoadingSpinner.tsx","webpack://white_knight/./app/javascript/src/components/Lozenge/Lozenge.tsx","webpack://white_knight/./app/javascript/src/components/MainMenuItems/mainMenuConfig.ts","webpack://white_knight/./app/javascript/src/components/MeatballMenu/MeatballMenu.tsx","webpack://white_knight/./app/javascript/src/components/MessageToast/MessageToast.tsx","webpack://white_knight/./app/javascript/src/components/NoDataText/NoDataText.tsx","webpack://white_knight/./app/javascript/src/functions/flattenMainMenuConfig.ts","webpack://white_knight/./app/javascript/src/selectors/selectPageLabel.ts","webpack://white_knight/./app/javascript/src/selectors/selectCustomPageLabel.ts","webpack://white_knight/./app/javascript/src/functions/formatRelativeDate.ts","webpack://white_knight/./app/javascript/src/components/NotificationsItem/NotificationsItem.tsx","webpack://white_knight/./app/javascript/src/components/Notifications/Notifications.tsx","webpack://white_knight/./app/javascript/src/selectors/selectUserInitials.ts","webpack://white_knight/./app/javascript/src/components/ManageInvoicesGrid/ManageInvoicesGrid.tsx","webpack://white_knight/./app/javascript/src/components/ManageInvoices/ManageInvoices.tsx","webpack://white_knight/./app/javascript/src/components/AddPaymentMethodModal/AddPaymentMethod.reducer.ts","webpack://white_knight/./app/javascript/src/store/user/userState.ts","webpack://white_knight/./app/javascript/src/selectors/selectCurrentPaymentMethod.ts","webpack://white_knight/./app/javascript/src/components/AddPaymentMethodModal/AddPaymentMethodModal.tsx","webpack://white_knight/./app/javascript/src/components/DeletePaymentMethodModal/DeletePaymentMethodModal.tsx","webpack://white_knight/./app/javascript/src/components/ManagePaymentMethodsGrid/ManagePaymentMethodsGrid.tsx","webpack://white_knight/./app/javascript/src/components/ManagePaymentMethods/ManagePaymentMethods.tsx","webpack://white_knight/./app/javascript/src/components/ManageBillingModal/ManageBillingModal.tsx","webpack://white_knight/./app/javascript/src/hooks/useOnClickOutside.ts","webpack://white_knight/./app/javascript/src/components/ProfileMenu/ProfileMenu.tsx","webpack://white_knight/./app/javascript/src/components/EditProfileDrawer/EditProfileDrawer.tsx","webpack://white_knight/./app/javascript/src/features/pricing/WarningSubscriptionLimitModal/WarningSubscriptionLimitModal.tsx","webpack://white_knight/./app/javascript/src/components/UserBadge/UserBadge.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentsMenuItem/AssessmentsMenuItem.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentsMenu/AssessmentsMenu.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentsMenu/AssessmentsMenuConfig.ts","webpack://white_knight/./app/javascript/src/components/GlobalSearch/GlobalSearchResults.tsx","webpack://white_knight/./app/javascript/src/components/GlobalSearch/GlobalSearchBar.tsx","webpack://white_knight/./app/javascript/src/components/PageHeader/PageHeader.tsx","webpack://white_knight/./app/javascript/src/components/Panel/Panel.tsx","webpack://white_knight/./app/javascript/src/components/PartOfMyPlanBanner/PartOfMyPlanBanner.tsx","webpack://white_knight/./app/javascript/src/components/PdfPreviewCard/PdfPreviewCard.tsx","webpack://white_knight/./app/javascript/src/components/PdfPreviewDocument/PdfPreviewDocument.tsx","webpack://white_knight/./app/javascript/src/selectors/selectVendorPolicyToEdit.ts","webpack://white_knight/./app/javascript/src/components/PolicyFrameworksList/PolicyFrameworksList.tsx","webpack://white_knight/./app/javascript/src/components/PolicyDrawer/PolicyTeamsSelector/PolicyTeamsSelector.tsx","webpack://white_knight/./app/javascript/src/components/PolicyDrawer/PolicyReadRequestsSection/PolicyReadRequestsSection.tsx","webpack://white_knight/./app/javascript/src/components/PolicyDrawer/PolicyVersionSection/PolicyVersionSection.tsx","webpack://white_knight/./app/javascript/src/components/PolicyDrawer/PolicyDrawer.tsx","webpack://white_knight/./app/javascript/src/components/PolicyDrawer/PolicyOverviewSection/PolicyOverviewSection.tsx","webpack://white_knight/./app/javascript/src/components/ProgressBar/ProgressBar.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsList/ReportsList.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/ReportVersionField.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/ReportOwnerField.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/ReportSummaryField.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/LegalRegisterSection/LegalRegisterSection.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/PestelRegisterSection/PestelRegisterSection.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/RiskRegisterSection/RiskRegisterSection.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/VendorRegisterSection/VendorRegisterSection.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/SoaSection/SoaSection.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/SoaSummarySection/SoaSummarySection.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/ReportNameField.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/ReportFileField.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/ReportCompletionField.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/ReportFreeVersionField.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/UploadedReportSection/UploadedReportSection.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsManageDrawer/ReportsManageDrawer.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsHeader/ReportsHeader.tsx","webpack://white_knight/./app/javascript/src/selectors/reports/selectReports.ts","webpack://white_knight/./app/javascript/src/components/Reports/ReportsPage/ReportsPage.tsx","webpack://white_knight/./app/javascript/src/components/AddOfficeAddressModal/AddOfficeAddressModal.tsx","webpack://white_knight/./app/javascript/src/components/AddTeamModal/AddTeamModal.tsx","webpack://white_knight/./app/javascript/src/components/AddUserModal/AddUserModal.tsx","webpack://white_knight/./app/javascript/src/components/AutoSaveToast/AutoSaveToast.tsx","webpack://white_knight/./app/javascript/src/functions/getClauseLastUpdatedInfo.ts","webpack://white_knight/./app/javascript/src/functions/policyAnswerCommonFields.ts","webpack://white_knight/./app/javascript/src/components/CheckboxesAnswer/CheckboxesAnswer.tsx","webpack://white_knight/./app/javascript/src/components/DateFieldAnswer/DateFieldAnswer.tsx","webpack://white_knight/./app/javascript/src/store/assessments/assessmentsThunks.ts","webpack://white_knight/./app/javascript/src/components/FileSelectAnswerGrid/FileSelectAnswerGrid.tsx","webpack://white_knight/./app/javascript/src/components/FileSelectAnswer/FileSelectAnswer.tsx","webpack://white_knight/./app/javascript/src/functions/getRadioButtonOptions.ts","webpack://white_knight/./app/javascript/src/functions/selectRadioButtonOptionsFactory.ts","webpack://white_knight/./app/javascript/src/components/TextBasedAnswer/TextBasedAnswer.tsx","webpack://white_knight/./app/javascript/src/components/RadioButtonsAnswer/RadioButtonsAnswer.tsx","webpack://white_knight/./app/javascript/src/functions/getSelectionValue.ts","webpack://white_knight/./app/javascript/src/components/SelectAnswer/SelectAnswer.tsx","webpack://white_knight/./app/javascript/src/functions/flattenArray.ts","webpack://white_knight/./app/javascript/src/functions/getTableValue.ts","webpack://white_knight/./app/javascript/src/functions/getTableQuestionsAndAnswers.ts","webpack://white_knight/./app/javascript/src/components/TableAnswer/TableAnswer.tsx","webpack://white_knight/./app/javascript/src/components/TextAreaAnswer/TextAreaAnswer.tsx","webpack://white_knight/./app/javascript/src/components/TableAnswer2/TableAnswerEditModal2/TableAnswerEditModal2.tsx","webpack://white_knight/./app/javascript/src/components/TableAnswer2/tableUtils.ts","webpack://white_knight/./app/javascript/src/components/TableAnswer2/TableAnswerDeleteModal2/TableAnswerDeleteModal2.tsx","webpack://white_knight/./app/javascript/src/components/TableAnswer2/TableAnswer2.tsx","webpack://white_knight/./app/javascript/src/selectors/selectAudits.ts","webpack://white_knight/./app/javascript/src/features/compliance/audits/AuditsMeatballMenu.tsx","webpack://white_knight/./app/javascript/src/features/compliance/audits/PreviewMode/PreviewMode.tsx","webpack://white_knight/./app/javascript/src/features/compliance/audits/AuditsUploadDrawer.tsx","webpack://white_knight/./app/javascript/src/features/compliance/audits/MeetingsUploadDrawer/MeetingsUploadDrawer.tsx","webpack://white_knight/./app/javascript/src/features/compliance/audits/AuditsPage.tsx","webpack://white_knight/./app/javascript/src/features/compliance/audits/AuditReviewTableAnswer.tsx","webpack://white_knight/./app/javascript/src/functions/normalizeTableAnswers.ts","webpack://white_knight/./app/javascript/src/components/AnswerFormControl/AnswerFormControl.tsx","webpack://white_knight/./app/javascript/src/functions/formatLongDate.ts","webpack://white_knight/./app/javascript/src/components/LastUpdatedInfo/LastUpdatedInfo.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementQuestion/useHandleAnswerChange.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementQuestion/AgreementQuestion.tsx","webpack://white_knight/./app/javascript/src/functions/sortByDateColumn.ts","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementClauseQuestions/AgreementClauseQuestions.tsx","webpack://white_knight/./app/javascript/src/selectors/selectAgreementsProgress.tsx","webpack://white_knight/./app/javascript/src/selectors/selectAgreementQuestionsAreFilledIn.ts","webpack://white_knight/./app/javascript/src/components/AdoptechSliderSwitcher/AdoptechSliderSwitcher.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/SignAgreementModal/SignAgreementModal.tsx","webpack://white_knight/./app/javascript/src/functions/getCurrentSignatoryByUserEmail.ts","webpack://white_knight/./app/javascript/src/functions/b64ToBlob.ts","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementSummaryTile/AgreementSummaryTile.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementClauseHeader/AgreementClauseHeader.tsx","webpack://white_knight/./app/javascript/src/selectors/selectAuditsProgress.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementEditor/QuestionsMode/useClauseProgress.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementEditor/QuestionsMode/QuestionsMode.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementsTextEditor/AgreementsTextEditor.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementsTextEditorFooter/AgreementsTextEditorFooter.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementEditor/AgreementEditor.tsx","webpack://white_knight/./app/javascript/src/functions/approvalStatusSort.ts","webpack://white_knight/./app/javascript/src/functions/approvalSort.ts","webpack://white_knight/./app/javascript/src/selectors/selectApprovals.ts","webpack://white_knight/./app/javascript/src/functions/getCurrentApprovals.ts","webpack://white_knight/./app/javascript/src/components/ApprovedStatus/ApprovedStatus.tsx","webpack://white_knight/./app/javascript/src/components/ApprovalManagementModal/ApprovalManagementModal.tsx","webpack://white_knight/./app/javascript/src/functions/getFilteredQuestionsWithoutTableQuestions.ts","webpack://white_knight/./app/javascript/src/components/AddFileOrUrlModal/AddFileOrUrlModal.tsx","webpack://white_knight/./app/javascript/src/functions/getTableAnswers.ts","webpack://white_knight/./app/javascript/src/functions/getQuestionLastUpdatedInfo.ts","webpack://white_knight/./app/javascript/src/components/AssessmentResponseHistoryPopup/AssessmentResponseHistoryPopup.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentResponseLibraryPopup/AssessmentResponseLibraryPopup.tsx","webpack://white_knight/./app/javascript/src/functions/doTableAnswersExist.ts","webpack://white_knight/./app/javascript/src/functions/getCheckboxAnswers.ts","webpack://white_knight/./app/javascript/src/components/AssessmentSummaryExportModal/AssessmentSummaryExportModal.tsx","webpack://white_knight/./app/javascript/src/functions/IsTableAnswerConfirmed.ts","webpack://white_knight/./app/javascript/src/components/AssessmentSummaryTile/AssessmentSummaryTile.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentQuestion/AssessmentQuestion.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentQuestionHeader/AssessmentQuestionHeader.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentQuestions/AssessmentQuestions.tsx","webpack://white_knight/./app/javascript/src/components/Assessment/Assessment.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentPublishedModal/AssessmentPublishedModal.tsx","webpack://white_knight/./app/javascript/src/functions/completedAssessmentSort.ts","webpack://white_knight/./app/javascript/src/selectors/selectCompletedAssessments.ts","webpack://white_knight/./app/javascript/src/selectors/selectCompletedAssessmentsResponses.ts","webpack://white_knight/./app/javascript/src/components/CompletedAssessmentsGridIn/CompletedAssessmentsGridIn.tsx","webpack://white_knight/./app/javascript/src/components/CompletedAssessmentsGridOut/CompletedAssessmentsGridOut.tsx","webpack://white_knight/./app/javascript/src/components/CompletedAssessmentsGrid/CompletedAssessmentsGrid.tsx","webpack://white_knight/./app/javascript/src/components/CompletedAssessments/CompletedAssessments.tsx","webpack://white_knight/./app/javascript/src/components/PendingAssessmentsGrid/PendingAssessmentsGrid.tsx","webpack://white_knight/./app/javascript/src/components/PendingAssessments/PendingAssessments.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechErrorBoundary/AdoptechErrorBoundary.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentsIn/AssessmentsIn.tsx","webpack://white_knight/./app/javascript/src/selectors/selectRecentlyCreatedAssessments.ts","webpack://white_knight/./app/javascript/src/functions/assessmentSort.ts","webpack://white_knight/./app/javascript/src/components/DeleteAssessmentModal/DeleteAssessmentModal.tsx","webpack://white_knight/./app/javascript/src/components/RecentlyCreatedAssessmentsGrid/RecentlyCreatedAssessmentsGrid.tsx","webpack://white_knight/./app/javascript/src/components/RecentlyCreatedAssessments/RecentlyCreatedAssessments.tsx","webpack://white_knight/./app/javascript/src/components/EntityCard/EntityCard.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentsTemplateTile/AssessmentsTemplateTile.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentsTemplateTilesGrid/AssessmentsTemplateTilesGrid.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentsTemplates/AssessmentsTemplates.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentsOut/AssessmentsOut.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentsSummary/AssessmentsSummary.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentSummaryQuestions/AssessmentSummaryQuestions.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentCompletedResponseBody/AssessmentCompletedResponseBody.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentCompletedResponses/AssessmentCompletedResponses.tsx","webpack://white_knight/./app/javascript/src/selectors/selectAllAssessmentPendingResponses.ts","webpack://white_knight/./app/javascript/src/components/ConfirmDeleteAssessmentResponseModal/ConfirmDeleteAssessmentResponseModal.tsx","webpack://white_knight/./app/javascript/src/components/ResendAssessmentConfirmationModal/ResendAssessmentConfirmationModal.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentPendingResponses/AssessmentPendingResponses.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentSummaryResponses/AssessmentSummaryResponses.tsx","webpack://white_knight/./app/javascript/src/components/SendAssessmentConfirmationModal/SendAssessmentConfirmationModal.tsx","webpack://white_knight/./app/javascript/src/functions/checkEmailList.ts","webpack://white_knight/./app/javascript/src/components/SendAssessmentModal/SendAssessmentModal.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentSummary/AssessmentSummary.tsx","webpack://white_knight/./app/javascript/src/components/GenerateAssessmentModal/GenerateAssessmentModal.tsx","webpack://white_knight/./app/javascript/src/components/OutgoingAssessmentHeader/OutgoingAssessmentHeader.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentTemplateSummary/AssessmentTemplateSummary.tsx","webpack://white_knight/./app/javascript/src/components/Assessments/Assessments.tsx","webpack://white_knight/./app/javascript/src/components/AssessmentTour/AssessmentTour.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechRoundCheckbox/AdoptechRoundCheckbox.tsx","webpack://white_knight/./app/javascript/src/components/ChecklistGroupItem/ChecklistGroupItem.tsx","webpack://white_knight/./app/javascript/src/components/ChecklistSummaryTile/ChecklistSummaryTile.tsx","webpack://white_knight/./app/javascript/src/components/Checklist/Checklist.tsx","webpack://white_knight/./app/javascript/src/functions/calculateChecklistProgress.ts","webpack://white_knight/./app/javascript/src/functions/getChecklistAssociatedUsername.ts","webpack://white_knight/./app/javascript/src/selectors/selectActiveChecklists.ts","webpack://white_knight/./app/javascript/src/components/ActiveChecklists/ActiveChecklists.tsx","webpack://white_knight/./app/javascript/src/functions/getChecklistProgress.ts","webpack://white_knight/./app/javascript/src/components/ChecklistTemplateCard/ChecklistTemplateCard.tsx","webpack://white_knight/./app/javascript/src/components/GenerateChecklistManagersModal/GenerateChecklistManagersModal.tsx","webpack://white_knight/./app/javascript/src/components/GenerateChecklistSuccessToast/GenerateChecklistSuccessToast.tsx","webpack://white_knight/./app/javascript/src/components/GenerateChecklistUsersModal/GenerateChecklistUsersModal.tsx","webpack://white_knight/./app/javascript/src/components/ChecklistTemplates/ChecklistTemplates.tsx","webpack://white_knight/./app/javascript/src/selectors/selectCompletedChecklists.ts","webpack://white_knight/./app/javascript/src/components/CompleteChecklists/CompleteChecklists.tsx","webpack://white_knight/./app/javascript/src/components/Checklists/Checklists.tsx","webpack://white_knight/./app/javascript/src/components/ChecklistTemplateItem/ChecklistTemplateItem.tsx","webpack://white_knight/./app/javascript/src/components/ChecklistTemplate/ChecklistTemplate.tsx","webpack://white_knight/./app/javascript/src/components/ConfirmSendInvitationModal/ConfirmSendInvitationModal.tsx","webpack://white_knight/./app/javascript/src/components/DeleteProfileModal/DeleteProfileModal.tsx","webpack://white_knight/./app/javascript/src/components/Download/Download.tsx","webpack://white_knight/./app/javascript/src/components/EditOwnerModal/EditOwnerModal.tsx","webpack://white_knight/./app/javascript/src/components/Manage2FAModal/Manage2FAModal.tsx","webpack://white_knight/./app/javascript/src/components/EscrowAccounts/EscrowAccounts.tsx","webpack://white_knight/./app/javascript/src/components/FileUploadedToast/FileUploadedToast.tsx","webpack://white_knight/./app/javascript/src/functions/formatShortDateTime.ts","webpack://white_knight/./app/javascript/src/features/compliance/tests/Pager.tsx","webpack://white_knight/./app/javascript/src/features/compliance/tests/Status.tsx","webpack://white_knight/./app/javascript/src/features/compliance/tests/EventDetailsDrawer.tsx","webpack://white_knight/./app/javascript/src/features/compliance/tests/TestLogPage.tsx","webpack://white_knight/./app/javascript/src/components/Home/Home.tsx","webpack://white_knight/./app/javascript/src/components/InvitationSentModal/InvitationSentModal.tsx","webpack://white_knight/./app/javascript/src/components/MainMenuLogo/MainMenuLogo.tsx","webpack://white_knight/./app/javascript/src/components/MainMenuFooter/MainMenuFooter.tsx","webpack://white_knight/./app/javascript/src/selectors/selectUserRoles.ts","webpack://white_knight/./app/javascript/src/components/MainMenuItem/MainMenuItem.tsx","webpack://white_knight/./app/javascript/src/components/MainMenuItems/MainMenuItems.tsx","webpack://white_knight/./app/javascript/src/components/VendorSelector/VendorSelector.tsx","webpack://white_knight/./app/javascript/src/components/MainMenu/MainMenu.tsx","webpack://white_knight/./app/javascript/src/components/PaymentSuccessfulToast/PaymentSuccessfulToast.tsx","webpack://white_knight/./app/javascript/src/components/CustomizeClauseWarningModal/CustomizeClauseWarningModal.tsx","webpack://white_knight/./app/javascript/src/hooks/useDidMountEffect.ts","webpack://white_knight/./app/javascript/src/components/PolicyQuestion/PolicyQuestion.tsx","webpack://white_knight/./app/javascript/src/components/PolicyQuestions/PolicyQuestions.tsx","webpack://white_knight/./app/javascript/src/components/PolicyCategoryRow/PolicyCategoryRow.tsx","webpack://white_knight/./app/javascript/src/components/PolicyClauseHeader/PolicyClauseHeader.tsx","webpack://white_knight/./app/javascript/src/components/PolicySummaryTile/PolicySummaryTile.tsx","webpack://white_knight/./app/javascript/src/features/policies/PolicyEditor/PolicyEditor.tsx","webpack://white_knight/./app/javascript/src/features/policies/PolicyEditor/useExpandNextClause.ts","webpack://white_knight/./app/javascript/src/components/PolicyTour/PolicyTour.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechTagAutocomplete/AdoptechTagAutocomplete.tsx","webpack://white_knight/./app/javascript/src/components/ShareAutocomplete/ShareAutocomplete.tsx","webpack://white_knight/./app/javascript/src/components/ShareModal/constants.ts","webpack://white_knight/./app/javascript/src/components/SharesTable/SharesTable.tsx","webpack://white_knight/./app/javascript/src/components/ShareModal/ShareModal.tsx","webpack://white_knight/./app/javascript/src/components/StripeSignupError/StripeSignupError.tsx","webpack://white_knight/./app/javascript/src/features/pricing/StripeSignupSuccess/StripeSignupSuccess.tsx","webpack://white_knight/./app/javascript/src/components/TableAnswerDeleteModal/TableAnswerDeleteModal.tsx","webpack://white_knight/./app/javascript/src/components/TableAnswerEditModal/TableAnswerEditModal.tsx","webpack://white_knight/./app/javascript/src/selectors/selectVendorSuppliers.ts","webpack://white_knight/./app/javascript/src/functions/vendorSupplierSort.ts","webpack://white_knight/./app/javascript/src/components/VendorRegisterRiskProfile/VendorRegisterRiskProfile.tsx","webpack://white_knight/./app/javascript/src/features/risk/vendor/VendorSupplierLogo.tsx","webpack://white_knight/./app/javascript/src/components/VendorRegisterRow/VendorRegisterRow.tsx","webpack://white_knight/./app/javascript/src/components/DeleteVendorModal/DeleteVendorModal.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechTextInput/AdoptechTextSuggestion.tsx","webpack://white_knight/./app/javascript/src/components/ManageSupplierDrawer/OverviewSection.tsx","webpack://white_knight/./app/javascript/src/components/ManageSupplierDrawer/ContractSection.tsx","webpack://white_knight/./app/javascript/src/components/ManageSupplierDrawer/ContactsSection.tsx","webpack://white_knight/./app/javascript/src/components/ChatWidgetIcon/ChatWidgetIcon.tsx","webpack://white_knight/./app/javascript/src/components/ManageSupplierDrawer/RiskSection.tsx","webpack://white_knight/./app/javascript/src/components/ManageSupplierDrawer/DeleteSection.tsx","webpack://white_knight/./app/javascript/src/components/ManageSupplierDrawer/ManageSupplierDrawer.tsx","webpack://white_knight/./app/javascript/src/features/risk/vendor/VendorRegisterPage.tsx","webpack://white_knight/./app/javascript/src/store/legalRegister/legalRegisterThunks.ts","webpack://white_knight/./app/javascript/src/selectors/selectLegislations.ts","webpack://white_knight/./app/javascript/src/functions/legislationSort.ts","webpack://white_knight/./app/javascript/src/features/legalRegister/EditLegislationDrawer/OverviewSection.tsx","webpack://white_knight/./app/javascript/src/features/legalRegister/EditLegislationDrawer/DetailsSection.tsx","webpack://white_knight/./app/javascript/src/features/legalRegister/EditLegislationDrawer/EditLegislationDrawer.tsx","webpack://white_knight/./app/javascript/src/components/RegisterReviewDrawer/OverviewSection.tsx","webpack://white_knight/./app/javascript/src/store/pestel/pestelThunks.ts","webpack://white_knight/./app/javascript/src/components/RegisterReviewDrawer/RegisterReviewDrawer.tsx","webpack://white_knight/./app/javascript/src/components/RegistryHeader/RegisterHeader.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechCircleIcon/AdoptecCircleIcon.tsx","webpack://white_knight/./app/javascript/src/features/legalRegister/AddLegislationModal/AddNewLegislation.tsx","webpack://white_knight/./app/javascript/src/features/legalRegister/AddLegislationModal/useJurisdictionsList.tsx","webpack://white_knight/./app/javascript/src/features/legalRegister/AddLegislationModal/useAddLegislationFormHandler.tsx","webpack://white_knight/./app/javascript/src/features/legalRegister/AddLegislationModal/AddOwnLegislation.tsx","webpack://white_knight/./app/javascript/src/features/legalRegister/AddLegislationModal/useAddOwnLegislationHandler.tsx","webpack://white_knight/./app/javascript/src/features/legalRegister/AddLegislationModal/AddLegislationModal.tsx","webpack://white_knight/./app/javascript/src/features/legalRegister/LegalRegisterPage/LegalRegisterPage.tsx","webpack://white_knight/./app/javascript/src/components/pestel/PestelSection/PestelRow.tsx","webpack://white_knight/./app/javascript/src/selectors/selectPestels.ts","webpack://white_knight/./app/javascript/src/components/pestel/PestelSection/PestelSection.tsx","webpack://white_knight/./app/javascript/src/components/pestel/getGridFromPestelArea.ts","webpack://white_knight/./app/javascript/src/selectors/selectFilteredPestels.ts","webpack://white_knight/./app/javascript/src/components/ManagePestelItemsDrawer/OverviewSection.tsx","webpack://white_knight/./app/javascript/src/components/ManagePestelItemsDrawer/AssessmentSection.tsx","webpack://white_knight/./app/javascript/src/components/ManagePestelItemsDrawer/useManagePestelItemsController.tsx","webpack://white_knight/./app/javascript/src/components/ManagePestelItemsDrawer/ManagePestelItemsDrawer.tsx","webpack://white_knight/./app/javascript/src/components/pestel/PestelPage/PestelPage.tsx","webpack://white_knight/./app/javascript/src/features/compliance/audits/AuditsEditForm.tsx","webpack://white_knight/./app/javascript/src/features/compliance/audits/AuditsAreasForm.tsx","webpack://white_knight/./app/javascript/src/functions/dynamicClauses.ts","webpack://white_knight/./app/javascript/src/features/compliance/audits/AuditsStartNewDrawer.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechTile/AdoptechTile.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechPageNavBar/AdoptechPageNavBar.tsx","webpack://white_knight/./app/javascript/src/features/compliance/audits/AuditsTemplates.tsx","webpack://white_knight/./app/javascript/src/selectors/selectAuditQuestionsAreFilledIn.ts","webpack://white_knight/./app/javascript/src/features/compliance/audits/AuditsSummaryTile.tsx","webpack://white_knight/./app/javascript/src/features/compliance/audits/AuditsEditDrawer.tsx","webpack://white_knight/./app/javascript/src/features/compliance/audits/AuditsReviewHistoryDropdown.tsx","webpack://white_knight/./app/javascript/src/features/compliance/audits/QuestionsMode/AuditQuestion/AuditQuestion.tsx","webpack://white_knight/./app/javascript/src/features/compliance/audits/QuestionsMode/AuditClauseQuestions/AuditClauseQuestions.tsx","webpack://white_knight/./app/javascript/src/features/compliance/audits/QuestionsMode/QuestionsMode.tsx","webpack://white_knight/./app/javascript/src/features/compliance/audits/AuditsEditor.tsx","webpack://white_knight/./app/javascript/src/components/Welcome/Welcome.tsx","webpack://white_knight/./app/javascript/src/components/Agreements/AgreementsTemplates/AgreementsTemplates.tsx","webpack://white_knight/./app/javascript/src/selectors/riskRegistry/selectRisks.ts","webpack://white_knight/./app/javascript/src/components/RiskRegistry/RiskRegistryPage/RiskRegistryPage.tsx","webpack://white_knight/./app/javascript/src/components/RiskRegistry/RiskRegistryStartNewDrawer/RiskRegistryStartNewDrawer.tsx","webpack://white_knight/./app/javascript/src/components/RiskRegistry/RiskRegistryLibrary/RiskRegistryLibrary.tsx","webpack://white_knight/./app/javascript/src/components/RiskRegistry/RiskRegistryTreatment/RiskRegisterTreatment.tsx","webpack://white_knight/./app/javascript/src/components/RiskRegistry/EditRiskModal/EditRiskModal.tsx","webpack://white_knight/./app/javascript/src/components/RiskRegistry/RiskRegistryEditor/RiskRegisterEditor.tsx","webpack://white_knight/./app/javascript/src/selectors/riskRegistry/selectRisksTemplates.ts","webpack://white_knight/./app/javascript/src/components/RiskRegistry/RiskRegistryCategoryPage/RiskRegistryCategoryPage.tsx","webpack://white_knight/./app/javascript/src/components/Reports/ReportsPreviewPage/ReportsPreviewPage.tsx","webpack://white_knight/./app/javascript/src/components/Frameworks/Requirements/FrameworkGuidence.tsx","webpack://white_knight/./app/javascript/src/components/Frameworks/Requirements/FrameworkRequirementCategories.tsx","webpack://white_knight/./app/javascript/src/components/Frameworks/Requirements/FrameworkRequirementsPage.tsx","webpack://white_knight/./app/javascript/src/features/pricing/SubscriptionRequiredModal/SubscriptionRequiredModal.tsx","webpack://white_knight/./app/javascript/src/features/companyProfile/CompanyCertificatesPreviewPage/CompanyCertificatesPreviewPage.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/UserAdmin/TrustHubUserAdminPage/TrustHubUserAdminEditCompanyForm/TrustHubUserAdminEditCompanyForm.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/UserAdmin/selectCompanyUsers.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/UserAdmin/TrustHubUserAdminPage/TrustHubUserAdminApprovedUsers/TrustHubUserAdminApprovedUsers.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/UserAdmin/TrustHubUserAdminPage/TrustHubUserAdminCompanyPage/TrustHubUserAdminCompanyPage.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/UserAdmin/TrustHubUserAdminPage/TrustHubUserAdminEditUserForm/TrustHubUserAdminEditUserForm.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/UserAdmin/selectVendorUserDocumentPermissions.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/UserAdmin/TrusthubUserAdminAddDocumentPermissionDrawer/TrusthubUserAdminAddDocumentPermissionDrawer.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/UserAdmin/TrustHubUserAdminPage/TrustHubUserAdminDocumentPermissions/TrustHubUserAdminDocumentPermissions.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/UserAdmin/selectVendorUserActivities.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/UserAdmin/TrustHubUserAdminPage/TrustHubUserAdminVendorUserActivities/TrustHubUserAdminVendorUserActivities.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/UserAdmin/TrustHubUserAdminPage/TrustHubUserAdminUserPage/TrustHubUserAdminUserPage.tsx","webpack://white_knight/./app/javascript/src/hooks/useChatWidgetToken.ts","webpack://white_knight/./app/javascript/src/features/compliance/dataRoom/DataRoomEvidencePage/DataRoomEvidencePage.tsx","webpack://white_knight/./app/javascript/src/functions/getVendorDocuments.ts","webpack://white_knight/./app/javascript/src/functions/vendorDocumentSort.ts","webpack://white_knight/./app/javascript/src/selectors/selectArchivedDocuments.ts","webpack://white_knight/./app/javascript/src/components/ArchivedDocuments/ArchivedDocuments.tsx","webpack://white_knight/./app/javascript/src/selectors/selectAllDocuments.ts","webpack://white_knight/./app/javascript/src/components/AllDocuments/AllDocuments.tsx","webpack://white_knight/./app/javascript/src/components/DeleteVendorDocumentModal/DeleteVendorDocumentModal.tsx","webpack://white_knight/./app/javascript/src/features/policies/AllDocumentsPage/AllDocumentsPage.tsx","webpack://white_knight/./app/javascript/src/features/policies/ArchivedDocumentsPage/ArchivedDocumentsPage.tsx","webpack://white_knight/./app/javascript/src/features/policies/DraftPoliciesPage/DraftPoliciesPage.tsx","webpack://white_knight/./app/javascript/src/components/Routes/Routes.tsx","webpack://white_knight/./app/javascript/src/functions/attestationSort.ts","webpack://white_knight/./app/javascript/src/functions/attestationStatusSort.ts","webpack://white_knight/./app/javascript/src/components/AttestedStatus/AttestedStatus.tsx","webpack://white_knight/./app/javascript/src/components/SentAttestationsTable/SentAttestationsTable.tsx","webpack://white_knight/./app/javascript/src/selectors/selectAttestations.ts","webpack://white_knight/./app/javascript/src/components/SortableTableHeader/SortableTableHeader.tsx","webpack://white_knight/./app/javascript/src/components/Start/StartFooter/StartFooter.tsx","webpack://white_knight/./app/javascript/src/components/ToggleSwitch/ToggleSwitch.tsx","webpack://white_knight/./app/javascript/src/functions/getPaletteColour.ts","webpack://white_knight/./app/javascript/src/functions/getPaletteColourFromString.ts","webpack://white_knight/./app/javascript/src/functions/getHash.ts","webpack://white_knight/./app/javascript/src/components/UserAvatar/UserAvatar.tsx","webpack://white_knight/./app/javascript/src/components/WithCountries/WithCountries.tsx","webpack://white_knight/./app/javascript/src/components/compliance/ReviewHistoryItems/ReviewHistoryItems.tsx","webpack://white_knight/./app/javascript/src/components/compliance/Types/complianceTypes.ts","webpack://white_knight/./app/javascript/src/components/dataRoom/DataRoomMoveEntitiesModal/DataRoomMoveEntitiesModalTabsInfo.ts","webpack://white_knight/./app/javascript/src/components/payment/PaymentLandingPage/paymentLandingPageConfig.ts","webpack://white_knight/./app/javascript/src/components/payment/PaymentLandingPage/PaymentLandingPage.tsx","webpack://white_knight/./app/javascript/src/constants/DocumentType.ts","webpack://white_knight/./app/javascript/src/features/calendar/CalendarHS/CalendarHS.tsx","webpack://white_knight/./app/javascript/src/features/calendar/CalendarItemsList/CalendarItemsList.tsx","webpack://white_knight/./app/javascript/src/features/calendar/CalendarHeader/CalendarHeader.tsx","webpack://white_knight/./app/javascript/src/features/calendar/CalendarSearch/CalendarSearch.tsx","webpack://white_knight/./app/javascript/src/functions/calendarItemsSort.ts","webpack://white_knight/./app/javascript/src/features/calendar/selectors/selectCalendarPageItems.ts","webpack://white_knight/./app/javascript/src/features/calendar/CalendarPage/CalendarPage.tsx","webpack://white_knight/./app/javascript/src/features/calendar/EditCorrectiveActionModal/EditCorrectiveActionModal.tsx","webpack://white_knight/./app/javascript/src/features/calendar/EditIncidentModal/EditIncidentModal.tsx","webpack://white_knight/./app/javascript/src/features/calendar/CalendarPage/CalendarPageModals.tsx","webpack://white_knight/./app/javascript/src/features/calendar/EditEventModal/CalendarAttachments/CalendarAttachments.tsx","webpack://white_knight/./app/javascript/src/features/calendar/EditEventModal/EditEventModal.tsx","webpack://white_knight/./app/javascript/src/features/calendar/selectors/selectCalendarHSItems.ts","webpack://white_knight/./app/javascript/src/features/calendar/store/calendarSlice.ts","webpack://white_knight/./app/javascript/src/features/calendar/store/calendarThunks.ts","webpack://white_knight/./app/javascript/src/features/calendar/store/calendarThunksApiHelpers.ts","webpack://white_knight/./app/javascript/src/components/UploadLogoModal/UploadLogoModal.tsx","webpack://white_knight/./app/javascript/src/features/companyProfile/CompanyBrandingTable/CompanyBrandingTable.tsx","webpack://white_knight/./app/javascript/src/features/companyProfile/store/companyProfileSlice.ts","webpack://white_knight/./app/javascript/src/features/companyProfile/store/companyProfileThunks.ts","webpack://white_knight/./app/javascript/src/features/compliance/audits/store/auditsSlice.ts","webpack://white_knight/./app/javascript/src/features/compliance/audits/store/auditsThunks.ts","webpack://white_knight/./app/javascript/src/features/compliance/controls/AdoptechIcon/AdoptechIcon.tsx","webpack://white_knight/./app/javascript/src/selectors/compliance/selectIsViewModeEditTaskDrawer.ts","webpack://white_knight/./app/javascript/src/hooks/useChildClass.ts","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlCheckDrawer/EditTestDrawer/EditTestForm/EditTestFormMainSection/EditTestFormMainSection.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlCheckDrawer/EditTestDrawer/EditTestForm/EditTestFormAutoSection/EditTestFormAutoSection.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlCheckDrawer/EditTestDrawer/EditTestForm/EditTestFormReviewTestModal/EditTestFormReviewTestModal.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlCheckDrawer/EditTestDrawer/EditTestForm/EditTestFormLastResultsSection/EditTestFormLastResultsSection.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlCheckDrawer/EditTestDrawer/EditTestForm/EditTestForm.tsx","webpack://white_knight/./app/javascript/src/functions/formatDate.ts","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlCheckDrawer/EditTestDrawer/EditTestForm/EditTestFormLastResultsSection/ExcludeResultModal/ExcludeResultModal.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlCheckDrawer/EditTestDrawer/EditTestForm/EditTestFormLastResultsSection/EditTestFormLastResultsList/EditTestFormLastResultsList.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlCheckDrawer/EditAssertionModal/EditAssertionModal.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlCheckDrawer/EditTestDrawer/EditTestDrawer.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlCheckDrawer/ControlCheckTests/ControlCheckTests.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlCheckDrawer/ControlCheckCalendarActions/ControlCheckCalendarActions.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlCheckDrawer/ComplianceEditTaskForm/ComplianceEditTaskForm.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlCheckDrawer/ComplianceEditTaskDrawer/ComplianceEditTaskDrawer.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlCheckDrawer/ControlCheckControls/ControlCheckControls.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlDrawer/ComplianceEditControlDrawer/ComplianceEditControlDrawer.tsx","webpack://white_knight/./app/javascript/src/selectors/compliance/selectIsViewModeEditControlDrawer.ts","webpack://white_knight/./app/javascript/src/components/compliance/ComplianceControlPoliciesSimpleList/ControlEditPolicyModal/ControlEditPolicyModal.tsx","webpack://white_knight/./app/javascript/src/components/compliance/ComplianceControlPoliciesSimpleList/ComplianceControlPoliciesSimpleList.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlDrawer/ComplianceControlTasksSimpleList/ComplianceControlTasksSimpleList.tsx","webpack://white_knight/./app/javascript/src/selectors/compliance/selectIsNormalModeEditControlDrawer.ts","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlDrawer/EditControlReview/EditControlReview.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlDrawer/EditControlTreatmentPlan/EditControlTreatmentPlan.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlDrawer/EditControlFrameworksModal/EditControlFrameworksModal.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlDrawer/ComplianceControlFrameworksSimpleList/ComplianceControlFrameworksSimpleList.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlDrawer/ComplianceControlRisksList/ComplianceControlRisksList.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlDrawer/ComplianceEditControlForm/ComplianceEditControlForm.tsx","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlDrawer/ComplianceEditControlForm/complianceStatus.ts","webpack://white_knight/./app/javascript/src/features/compliance/controls/EditControlDrawer/EditDocumentModal/EditDocumentModal.tsx","webpack://white_knight/./app/javascript/src/features/compliance/dataRoom/DataRoomTabs/DataRoomTabs.tsx","webpack://white_knight/./app/javascript/src/features/compliance/tests/TestResult.tsx","webpack://white_knight/./app/javascript/src/features/compliance/tests/store/testsSlice.ts","webpack://white_knight/./app/javascript/src/features/compliance/tests/store/testsThunks.ts","webpack://white_knight/./app/javascript/src/features/documents/UploadDocumentModal/UploadDocumentModal.tsx","webpack://white_knight/./app/javascript/src/components/ExistingPolicyWarningModal/ExistingPolicyWarningModal.tsx","webpack://white_knight/./app/javascript/src/selectors/selectInProgressPolicies.ts","webpack://white_knight/./app/javascript/src/functions/vendorPolicySort.ts","webpack://white_knight/./app/javascript/src/selectors/selectAllAvailableCategories.ts","webpack://white_knight/./app/javascript/src/selectors/selectAvailablePolicies.ts","webpack://white_knight/./app/javascript/src/functions/getPolicies.ts","webpack://white_knight/./app/javascript/src/functions/genericSort.ts","webpack://white_knight/./app/javascript/src/components/DocumentLibraryHeader/DocumentLibraryHeader.tsx","webpack://white_knight/./app/javascript/src/components/DocumentLibraryDescriptionModal/DocumentLibraryDescriptionModal.tsx","webpack://white_knight/./app/javascript/src/features/policies/PolicyTiles/PolicyItem.tsx","webpack://white_knight/./app/javascript/src/features/policies/AddNewPolicy/AddNewPolicy.tsx","webpack://white_knight/./app/javascript/src/features/policies/UploadOwnPolicy/UploadOwnPolicy.tsx","webpack://white_knight/./app/javascript/src/components/DocumentLibraryModal/DocumentLibraryModal.tsx","webpack://white_knight/./app/javascript/src/components/InProgressPoliciesGrid/InProgressPoliciesGrid.tsx","webpack://white_knight/./app/javascript/src/components/InProgressPolicies/InProgressPolicies.tsx","webpack://white_knight/./app/javascript/src/components/AttestationManagementModal/AttestationManagementModal.tsx","webpack://white_knight/./app/javascript/src/components/CompleteDocumentAuditModal/CompleteDocumentAuditModal.tsx","webpack://white_knight/./app/javascript/src/components/ReadRequestModal/ReadRequestModal.tsx","webpack://white_knight/./app/javascript/src/features/policies/LivePolicies/LivePolicyRow.tsx","webpack://white_knight/./app/javascript/src/features/policies/LivePolicies/LivePolicies.tsx","webpack://white_knight/./app/javascript/src/selectors/selectPolicyRejections.ts","webpack://white_knight/./app/javascript/src/components/ManagePolicyRejectionModal/ManagePolicyRejectionModal.tsx","webpack://white_knight/./app/javascript/src/selectors/selectPendingApprovalPolicies.ts","webpack://white_knight/./app/javascript/src/features/policies/PendingApprovalPolicies/PendingApprovalPolicyRow.tsx","webpack://white_knight/./app/javascript/src/features/policies/PendingApprovalPolicies/PendingApprovalPolicies.tsx","webpack://white_knight/./app/javascript/src/features/policies/PolicyTiles/PolicyTiles.tsx","webpack://white_knight/./app/javascript/src/features/policies/PoliciesPageTables/PoliciesPageTables.tsx","webpack://white_knight/./app/javascript/src/features/policies/PoliciesTabs/PoliciesTabs.tsx","webpack://white_knight/./app/javascript/src/features/pricing/ManageSubscriptionPage/PaymentPlanCard/PaymentPlanCard.tsx","webpack://white_knight/./app/javascript/src/features/pricing/NoValidRoleText/NoValidRoleText.tsx","webpack://white_knight/./app/javascript/src/features/pricing/PaymentLandingPageChecker/PaymentLandingPageChecker.tsx","webpack://white_knight/./app/javascript/src/features/pricing/store/pricingSlice.ts","webpack://white_knight/./app/javascript/src/features/pricing/store/pricingThunks.ts","webpack://white_knight/./app/javascript/src/features/trusthub/CertificationsSection/CertificationsSection.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/ColorHeader/ColorHeader.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/CompanyDetailsEditSection/CompanyDetailsEditSection.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/CompanyDetailsSection/CompanyDetailsSection.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/ControlsSection/ControlRow.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/ControlsEditSection/ControlDragPreview.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/ControlsEditSection/ControlEditLeftPanel.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/ControlsSection/ControlCategoryRow.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/ControlsEditSection/ControlEditRightPanel.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/ControlsEditSection/ControlsEditSection.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/ControlsSection/ControlsSection.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/CertificationsEditSection/CertificationsEditSection.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/SectionRow/SectionRow.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/DocumentsSection/DocumentsSection.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/InformationSecuritySection/InformationSecurityDocumentsSection/InformationSecurityDocumentsSection.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/InformationSecuritySection/InformationSecuritySection.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/PoliciesSection/PoliciesSection.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/DocumentsEditSection/DocumentsEditSection.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/EditSectionRow/EditSectionRow.tsx","webpack://white_knight/./app/javascript/src/components/AdoptechColourInput/AdoptechColourInput.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/TrustHubSettingsDrawer/TrustHubSettingsDrawer.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/UserAdmin/TrustHubUserAdminUsersPage/TrustHubVendorUserTableRow/TrustHubVendorUserTableRow.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/admin/UserAdmin/TrusthubUserAdminAddDocumentPermissionDrawer/DocumentPermissionTableRow/DocumentPermissionTableRow.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/store/trusthubSelectors.ts","webpack://white_knight/./app/javascript/src/features/trusthub/store/trusthubSlice.ts","webpack://white_knight/./app/javascript/src/features/trusthub/store/trusthubThunks.ts","webpack://white_knight/./app/javascript/src/features/trusthub/admin/useEditTrustHubSection.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/useTrustHubSection.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/user/TrustHubUserPageHeaderButtons/TrustHubUserPageHeaderButtons.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/user/TrustHubRequestDocumentModal/RequestDocumentModalDocumentSection/RequestDocumentModalDocumentSection.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/user/TrustHubRequestDocumentModal/TrustHubRequestDocumentModal.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/user/TrustHubUserPage/TrustHubUserPage.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/user/TrustHubAuthModal/TrustHubAuthModal.tsx","webpack://white_knight/./app/javascript/src/features/trusthub/user/TrustHubUserRoutes.tsx","webpack://white_knight/./app/javascript/src/functions/access.ts","webpack://white_knight/./app/javascript/src/functions/capitaliseFirst.ts","webpack://white_knight/./app/javascript/src/functions/capitalize.ts","webpack://white_knight/./app/javascript/src/functions/chatWidgetHelper.ts","webpack://white_knight/./app/javascript/src/functions/dateSort.ts","webpack://white_knight/./app/javascript/src/functions/dentaku.ts","webpack://white_knight/./app/javascript/src/functions/formatLongDateTime.ts","webpack://white_knight/./app/javascript/src/functions/formatShortDate.ts","webpack://white_knight/./app/javascript/src/functions/getApiErrorMessage.ts","webpack://white_knight/./app/javascript/src/functions/getDate.ts","webpack://white_knight/./app/javascript/src/functions/getDefaultSelectionOptions.ts","webpack://white_knight/./app/javascript/src/functions/getFlatFoldersList.ts","webpack://white_knight/./app/javascript/src/functions/getInitials.ts","webpack://white_knight/./app/javascript/src/functions/getMetaContent.ts","webpack://white_knight/./app/javascript/src/functions/getPercentage.ts","webpack://white_knight/./app/javascript/src/functions/getPolicyDocuments.ts","webpack://white_knight/./app/javascript/src/functions/getRequest.ts","webpack://white_knight/./app/javascript/src/functions/getRequestWithRetry.tsx","webpack://white_knight/./app/javascript/src/functions/getVendorAssessmentResponses.ts","webpack://white_knight/./app/javascript/src/functions/getVendorAssessments.ts","webpack://white_knight/./app/javascript/src/functions/getVendorPolicies.ts","webpack://white_knight/./app/javascript/src/functions/isValidEmailAddress.ts","webpack://white_knight/./app/javascript/src/functions/isValidUrl.ts","webpack://white_knight/./app/javascript/src/functions/isVendorPolicyFilled.ts","webpack://white_knight/./app/javascript/src/functions/mapTableAnswers.ts","webpack://white_knight/./app/javascript/src/functions/reactSelectCustomStyles.ts","webpack://white_knight/./app/javascript/src/functions/reactSelectCustomTheme.ts","webpack://white_knight/./app/javascript/src/functions/registerTitle.ts","webpack://white_knight/./app/javascript/src/functions/routePathsHelpers.tsx","webpack://white_knight/./app/javascript/src/functions/sendAnalytics.ts","webpack://white_knight/./app/javascript/src/functions/sort.ts","webpack://white_knight/./app/javascript/src/functions/sortByDate.ts","webpack://white_knight/./app/javascript/src/functions/sortByOwner.ts","webpack://white_knight/./app/javascript/src/functions/uniqueArrayObjects.ts","webpack://white_knight/./app/javascript/src/functions/vendorDocumentWithCategoryNameSort.ts","webpack://white_knight/./app/javascript/src/functions/vendorPolicyCalculations.ts","webpack://white_knight/./app/javascript/src/hooks/agreements/useAgreementsModals.ts","webpack://white_knight/./app/javascript/src/hooks/compliance/useOnTaskViewClick.ts","webpack://white_knight/./app/javascript/src/hooks/useAdoptechDebounce.tsx","webpack://white_knight/./app/javascript/src/hooks/useAppDispatch.ts","webpack://white_knight/./app/javascript/src/hooks/useAutoGrowTextArea.ts","webpack://white_knight/./app/javascript/src/hooks/useBackground.tsx","webpack://white_knight/./app/javascript/src/hooks/useIdleLogout.ts","webpack://white_knight/./app/javascript/src/hooks/useOwnerOptions.ts","webpack://white_knight/./app/javascript/src/hooks/useQueryParams.ts","webpack://white_knight/./app/javascript/src/middleware/errorHandler.ts","webpack://white_knight/./app/javascript/src/selectors/pricing/selectVendorProductsFeatures.ts","webpack://white_knight/./app/javascript/src/selectors/selectActiveSubscription.ts","webpack://white_knight/./app/javascript/src/functions/sortBySignatoriesStats.ts","webpack://white_knight/./app/javascript/src/functions/aggrementSort.ts","webpack://white_knight/./app/javascript/src/selectors/selectAwaitingSignatureAgreements.ts","webpack://white_knight/./app/javascript/src/selectors/selectDraftAgreements.ts","webpack://white_knight/./app/javascript/src/selectors/selectAgreements.ts","webpack://white_knight/./app/javascript/src/selectors/selectAgreementsCreateForm.ts","webpack://white_knight/./app/javascript/src/selectors/selectAssessmentsTab.ts","webpack://white_knight/./app/javascript/src/selectors/selectCompletedAgreements.ts","webpack://white_knight/./app/javascript/src/selectors/selectCurrentAgreement.ts","webpack://white_knight/./app/javascript/src/selectors/selectCurrentCompany.ts","webpack://white_knight/./app/javascript/src/selectors/selectCurrentVendor.ts","webpack://white_knight/./app/javascript/src/selectors/selectCurrentVendorUser.ts","webpack://white_knight/./app/javascript/src/selectors/selectCurrentVendorUserId.ts","webpack://white_knight/./app/javascript/src/selectors/selectLivePolicies.ts","webpack://white_knight/./app/javascript/src/selectors/selectPaymentPlans.ts","webpack://white_knight/./app/javascript/src/selectors/selectPendingAssessments.ts","webpack://white_knight/./app/javascript/src/functions/assessmentResponseSort.ts","webpack://white_knight/./app/javascript/src/selectors/selectRouteName.ts","webpack://white_knight/./app/javascript/src/selectors/selectSelectedFramework.ts","webpack://white_knight/./app/javascript/src/selectors/selectSortSettings.ts","webpack://white_knight/./app/javascript/src/functions/vendorUserSort.ts","webpack://white_knight/./app/javascript/src/selectors/selectUsers.ts","webpack://white_knight/./app/javascript/src/selectors/selectVendorDetails.ts","webpack://white_knight/./app/javascript/src/store/agreements/agreementsSlice.ts","webpack://white_knight/./app/javascript/src/store/agreements/agreementsThunks.ts","webpack://white_knight/./app/javascript/src/store/assessments/assessmentsSlice.ts","webpack://white_knight/./app/javascript/src/store/assessments/assessmentsState.ts","webpack://white_knight/./app/javascript/src/store/checklists/checklistsSlice.ts","webpack://white_knight/./app/javascript/src/store/checklists/checklistsThunks.ts","webpack://white_knight/./app/javascript/src/store/compliance/complianceSlice.ts","webpack://white_knight/./app/javascript/src/store/compliance/complianceState.ts","webpack://white_knight/./app/javascript/src/store/compliance/complianceThunks.ts","webpack://white_knight/./app/javascript/src/store/dataRoom/dataRoomSlice.ts","webpack://white_knight/./app/javascript/src/store/dataRoom/dataRoomThunks.ts","webpack://white_knight/./app/javascript/src/store/global/globalSlice.ts","webpack://white_knight/./app/javascript/src/functions/rotateDirection.ts","webpack://white_knight/./app/javascript/src/store/global/globalThunks.ts","webpack://white_knight/./app/javascript/src/store/helpers/thunkHelpers.ts","webpack://white_knight/./app/javascript/src/store/legalRegister/legalRegisterSlice.ts","webpack://white_knight/./app/javascript/src/store/notifications/notificationSlice.ts","webpack://white_knight/./app/javascript/src/store/notifications/notificationsThunks.ts","webpack://white_knight/./app/javascript/src/store/pestel/pestelSlice.ts","webpack://white_knight/./app/javascript/src/functions/keepCurrentAnswersAndClauses.ts","webpack://white_knight/./app/javascript/src/functions/safelyDeleteItemFromArray.ts","webpack://white_knight/./app/javascript/src/store/policies/policiesState.ts","webpack://white_knight/./app/javascript/src/store/policies/policiesSlice.ts","webpack://white_knight/./app/javascript/src/functions/mapPolicyTable.ts","webpack://white_knight/./app/javascript/src/store/policies/policiesThunks.ts","webpack://white_knight/./app/javascript/src/store/reports/reportsSlice.ts","webpack://white_knight/./app/javascript/src/store/reports/reportsThunks.ts","webpack://white_knight/./app/javascript/src/store/riskRegistry/riskRegistrySlice.ts","webpack://white_knight/./app/javascript/src/store/riskRegistry/riskRegistryThunks.ts","webpack://white_knight/./app/javascript/src/store/user/userSlice.ts","webpack://white_knight/./app/javascript/src/store/user/userThunks.ts","webpack://white_knight/./app/javascript/src/store/vendors/vendorsSlice.ts","webpack://white_knight/./app/javascript/src/functions/rawDownloadFile.ts","webpack://white_knight/./app/javascript/src/store/vendors/vendorsThunks.ts","webpack://white_knight/./app/javascript/src/swagger/apis/DefaultApi.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementSignatoryModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/AuditModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/CertificateModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/PestelItemArea.ts","webpack://white_knight/./app/javascript/src/swagger/models/PestelItemLocationType.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReferenceCreatePayloadReference.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReportCreatePayloadReport.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReviewStatusEnum.ts","webpack://white_knight/./app/javascript/src/swagger/models/SharedPaymentPeriod.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorEventEventType.ts","webpack://white_knight/./app/javascript/src/swagger/models/Access.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementCreatePayloadAgreement.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementCreatePayloadAgreementSignatories.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementExtendedAllOf.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementModelSignatoriesStats.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementSendPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementSignatoryCreateExternalPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementSignatoryNotifyPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementSignatoryRejectPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementSignatoryUpdateInternalPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementTemplateCategoryModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementTemplateModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AgreementVersionCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/Answer.ts","webpack://white_knight/./app/javascript/src/swagger/models/AnswerDeletePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionCategoryModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionCreatePayloadAssertion.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionFrequency.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionResultExcludePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionResultExcludePayloadAssertionResult.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionResultExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionResultModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionRunExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionRunList.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionRunModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionSource.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssertionUpdatePayloadAssertion.ts","webpack://white_knight/./app/javascript/src/swagger/models/Assessment.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssessmentCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssessmentDeletePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssessmentDownload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssessmentRecipient.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssessmentResponse.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssessmentResponseAnswer.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssessmentResponseAnswerFile.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssessmentSection.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssessmentTemplateExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssessmentTemplateModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/AssessmentUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AttestationFrequencyEnum.ts","webpack://white_knight/./app/javascript/src/swagger/models/AuditCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AuditCreatePayloadAudit.ts","webpack://white_knight/./app/javascript/src/swagger/models/AuditExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/AuditReviewHistoryItem.ts","webpack://white_knight/./app/javascript/src/swagger/models/AuditTemplateExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/AuditTemplateModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/AuditType.ts","webpack://white_knight/./app/javascript/src/swagger/models/AuditUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/AuditUpdatePayloadAudit.ts","webpack://white_knight/./app/javascript/src/swagger/models/BoardMember.ts","webpack://white_knight/./app/javascript/src/swagger/models/BusinessFunctionCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/BusinessFunctionCreatePayloadBusinessFunction.ts","webpack://white_knight/./app/javascript/src/swagger/models/BusinessFunctionModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/BusinessFunctionUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/BusinessFunctionUpdatePayloadBusinessFunction.ts","webpack://white_knight/./app/javascript/src/swagger/models/CalendarItemList.ts","webpack://white_knight/./app/javascript/src/swagger/models/CalendarItemModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/Card.ts","webpack://white_knight/./app/javascript/src/swagger/models/CardBillingDetails.ts","webpack://white_knight/./app/javascript/src/swagger/models/CardBillingDetailsAddress.ts","webpack://white_knight/./app/javascript/src/swagger/models/Category.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChatWidgetLogin.ts","webpack://white_knight/./app/javascript/src/swagger/models/Checklist.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistChangedStatusPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistCheckable.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistCreatePayloadChecklist.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistCreatePayloadChecklistUsers.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistCreatePayloadQuestions.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistExtendedAllOfChecklistVendorUsers.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistItem.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistItemsGroups.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistTemplate.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistTemplateCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistTemplateCreatePayloadChecklistTemplate.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistTemplateCreatePayloadQuestions.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistTemplateExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistTemplateExtendedAllOfItemsGroups.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistTemplateItem.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistTemplateUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/ChecklistUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/Company.ts","webpack://white_knight/./app/javascript/src/swagger/models/CompanyExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/CompanyIdentifierCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/CompanyIdentifierModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/CompanyIdentifierType.ts","webpack://white_knight/./app/javascript/src/swagger/models/CompanyIdentifierUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/CompanySector.ts","webpack://white_knight/./app/javascript/src/swagger/models/CompanyUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlCategoryExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlCategoryModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlCategoryTemplateExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlCategoryTemplateModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlCreatePayloadControl.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlCreatePayloadControlFrameworksRelations.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlReviewFrequencyEnum.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlRiskModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlTemplateExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlTemplateModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlUpdatePayloadControl.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlUpdateStatusPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/ControlUpdateStatusPayloadControl.ts","webpack://white_knight/./app/javascript/src/swagger/models/CorrectiveActionExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/CorrectiveActionModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/DashboardSummary.ts","webpack://white_knight/./app/javascript/src/swagger/models/DashboardSummaryData.ts","webpack://white_knight/./app/javascript/src/swagger/models/DashboardSummaryWidgets.ts","webpack://white_knight/./app/javascript/src/swagger/models/DataRoomEntityDeletePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/DataRoomEntityFolderCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/DataRoomEntityFolderCreatePayloadFolder.ts","webpack://white_knight/./app/javascript/src/swagger/models/DataRoomEntityModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/DataRoomEntityMovePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/DataRoomEntityUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/DataRoomEntityUpdatePayloadEntity.ts","webpack://white_knight/./app/javascript/src/swagger/models/EmailArray.ts","webpack://white_knight/./app/javascript/src/swagger/models/EmailText.ts","webpack://white_knight/./app/javascript/src/swagger/models/ErrorResponseErrors.ts","webpack://white_knight/./app/javascript/src/swagger/models/EscrowAccount.ts","webpack://white_knight/./app/javascript/src/swagger/models/EvidenceModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/ExternalShare.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkExportEvidencePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkGuidanceModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkModelStats.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkModelStatsControls.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkModelStatsPolicies.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkModelStatsRequirements.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkModelStatsTasks.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkRelation.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkRelationControlCategory.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkRelationFramework.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkRequirementCategoryExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkRequirementCategoryModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkRequirementExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkRequirementModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkTemplateExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/FrameworkTemplateModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/GlobalSearchItem.ts","webpack://white_knight/./app/javascript/src/swagger/models/Image.ts","webpack://white_knight/./app/javascript/src/swagger/models/ImageUrls.ts","webpack://white_knight/./app/javascript/src/swagger/models/IncidentEventExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/InlineObject.ts","webpack://white_knight/./app/javascript/src/swagger/models/Invoice.ts","webpack://white_knight/./app/javascript/src/swagger/models/ItemCreationRequestCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/ItemCreationRequestCreatePayloadItemCreationRequest.ts","webpack://white_knight/./app/javascript/src/swagger/models/JurisdictionModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/LegalRegisterModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/LegalRegisterModelStats.ts","webpack://white_knight/./app/javascript/src/swagger/models/LegalRegisterUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/LegislationAddPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/LegislationClassificationModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/LegislationCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/LegislationCreatePayloadLegislation.ts","webpack://white_knight/./app/javascript/src/swagger/models/LegislationExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/LegislationModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/LegislationReviewModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/LegislationTemplateModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/LegislationUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/LegislationUpdatePayloadLegislationReviews.ts","webpack://white_knight/./app/javascript/src/swagger/models/MessageResponse.ts","webpack://white_knight/./app/javascript/src/swagger/models/MultipleShare.ts","webpack://white_knight/./app/javascript/src/swagger/models/MultipleShareDelete.ts","webpack://white_knight/./app/javascript/src/swagger/models/MultipleShareShares.ts","webpack://white_knight/./app/javascript/src/swagger/models/NotificationList.ts","webpack://white_knight/./app/javascript/src/swagger/models/NotificationModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/Office.ts","webpack://white_knight/./app/javascript/src/swagger/models/Officer.ts","webpack://white_knight/./app/javascript/src/swagger/models/OfficerRole.ts","webpack://white_knight/./app/javascript/src/swagger/models/PaymentMethod.ts","webpack://white_knight/./app/javascript/src/swagger/models/PaymentMethodBillingDetails.ts","webpack://white_knight/./app/javascript/src/swagger/models/PaymentMethodBillingDetailsAddress.ts","webpack://white_knight/./app/javascript/src/swagger/models/PaymentMethodCard.ts","webpack://white_knight/./app/javascript/src/swagger/models/PaymentMethodUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/PaymentPlan.ts","webpack://white_knight/./app/javascript/src/swagger/models/PaymentPlanPrice.ts","webpack://white_knight/./app/javascript/src/swagger/models/PaymentPlanVendorCheckoutCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/PaymentPlanVendorCheckoutModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/PestelItemCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/PestelItemCreatePayloadPestelItem.ts","webpack://white_knight/./app/javascript/src/swagger/models/PestelItemItemType.ts","webpack://white_knight/./app/javascript/src/swagger/models/PestelItemModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/PestelItemUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/PestelRegisterModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/PestelRegisterModelStats.ts","webpack://white_knight/./app/javascript/src/swagger/models/PestelRegisterUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/Policy.ts","webpack://white_knight/./app/javascript/src/swagger/models/PolicyCategory.ts","webpack://white_knight/./app/javascript/src/swagger/models/PreviousAnswer.ts","webpack://white_knight/./app/javascript/src/swagger/models/Product.ts","webpack://white_knight/./app/javascript/src/swagger/models/Progress.ts","webpack://white_knight/./app/javascript/src/swagger/models/Question.ts","webpack://white_knight/./app/javascript/src/swagger/models/QuestionColumn.ts","webpack://white_knight/./app/javascript/src/swagger/models/QuestionGroup.ts","webpack://white_knight/./app/javascript/src/swagger/models/QuestionRow.ts","webpack://white_knight/./app/javascript/src/swagger/models/QuestionTable.ts","webpack://white_knight/./app/javascript/src/swagger/models/QuestionVisibilityCondition.ts","webpack://white_knight/./app/javascript/src/swagger/models/RecurringPaymentCheckoutCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/RecurringPaymentCheckoutModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/RecurringProduct.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReferenceCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/RegisteredCompany.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReminderCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReminderCreatePayloadReminder.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReminderList.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReminderModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReminderUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReminderUpdatePayloadReminder.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReportCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReportModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReviewFrequencyEnum.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReviewHistoryItemCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReviewHistoryItemCreatePayloadReviewHistoryItem.ts","webpack://white_knight/./app/javascript/src/swagger/models/ReviewHistoryItemModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/RiskCategoryModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/RiskCategoryModelRiskStats.ts","webpack://white_knight/./app/javascript/src/swagger/models/RiskCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/RiskCreatePayloadRisk.ts","webpack://white_knight/./app/javascript/src/swagger/models/RiskExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/RiskModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/RiskModelActionStats.ts","webpack://white_knight/./app/javascript/src/swagger/models/RiskReportCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/RiskReportCreatePayloadRiskReport.ts","webpack://white_knight/./app/javascript/src/swagger/models/RiskReportModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/RiskTemplateModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/RiskUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/RiskUpdatePayloadRisk.ts","webpack://white_knight/./app/javascript/src/swagger/models/ShareAccessLevel.ts","webpack://white_knight/./app/javascript/src/swagger/models/ShareReceiver.ts","webpack://white_knight/./app/javascript/src/swagger/models/ShareSuggestionList.ts","webpack://white_knight/./app/javascript/src/swagger/models/ShareSuggestionListData.ts","webpack://white_knight/./app/javascript/src/swagger/models/ShareSuggestionListMeta.ts","webpack://white_knight/./app/javascript/src/swagger/models/ShareableType.ts","webpack://white_knight/./app/javascript/src/swagger/models/SharedAttachmentModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/SharedDocumentList.ts","webpack://white_knight/./app/javascript/src/swagger/models/SharedDocumentListData.ts","webpack://white_knight/./app/javascript/src/swagger/models/SharedEmploymentStatus.ts","webpack://white_knight/./app/javascript/src/swagger/models/SharedLegislationRecurring.ts","webpack://white_knight/./app/javascript/src/swagger/models/SharedMaxUsersAmount.ts","webpack://white_knight/./app/javascript/src/swagger/models/SharedPaginationMeta.ts","webpack://white_knight/./app/javascript/src/swagger/models/SharedTaskRecurring.ts","webpack://white_knight/./app/javascript/src/swagger/models/SharedUserType.ts","webpack://white_knight/./app/javascript/src/swagger/models/SharedVendorUserStatus.ts","webpack://white_knight/./app/javascript/src/swagger/models/SharesList.ts","webpack://white_knight/./app/javascript/src/swagger/models/SharesListData.ts","webpack://white_knight/./app/javascript/src/swagger/models/Subscription.ts","webpack://white_knight/./app/javascript/src/swagger/models/SubscriptionInvoices.ts","webpack://white_knight/./app/javascript/src/swagger/models/SubscriptionUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/Survey.ts","webpack://white_knight/./app/javascript/src/swagger/models/SurveyClause.ts","webpack://white_knight/./app/javascript/src/swagger/models/SurveyClauseUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/Table.ts","webpack://white_knight/./app/javascript/src/swagger/models/TableColumn.ts","webpack://white_knight/./app/javascript/src/swagger/models/TableRow.ts","webpack://white_knight/./app/javascript/src/swagger/models/TaskAvailableAssertionsPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/TaskCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/TaskCreatePayloadTask.ts","webpack://white_knight/./app/javascript/src/swagger/models/TaskExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/TaskList.ts","webpack://white_knight/./app/javascript/src/swagger/models/TaskListMeta.ts","webpack://white_knight/./app/javascript/src/swagger/models/TaskListMetaStats.ts","webpack://white_knight/./app/javascript/src/swagger/models/TaskModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/TaskTemplateModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/TaskUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/TaskUpdatePayloadTask.ts","webpack://white_knight/./app/javascript/src/swagger/models/TwoFactorRequestOtpPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/TwoFactorSmsRequestPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/TwoFactorVerifyOtpPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/TwoFactorVerifyOtpPayloadMfa.ts","webpack://white_knight/./app/javascript/src/swagger/models/TwoFactorVerifyOtpSetupPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/TwoFactorVerifyOtpSetupResponse.ts","webpack://white_knight/./app/javascript/src/swagger/models/TwoFactorVerifyTokenPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/TwoFactorVerifyTokenPayloadObj.ts","webpack://white_knight/./app/javascript/src/swagger/models/UserDetails.ts","webpack://white_knight/./app/javascript/src/swagger/models/UserForgotPassword.ts","webpack://white_knight/./app/javascript/src/swagger/models/UserInvitation.ts","webpack://white_knight/./app/javascript/src/swagger/models/UserPassword.ts","webpack://white_knight/./app/javascript/src/swagger/models/UserResetPassword.ts","webpack://white_knight/./app/javascript/src/swagger/models/UserSignIn.ts","webpack://white_knight/./app/javascript/src/swagger/models/UserSignUp.ts","webpack://white_knight/./app/javascript/src/swagger/models/Vendor.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorAccess.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorActionExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorActionModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorDetails.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorDetailsCounts.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorDetailsRegisters.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorDocument.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorDocumentApproval.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorDocumentApprovalReject.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorDocumentApprovalStats.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorDocumentAttestation.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorDocumentAttestationStats.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorDocumentAttestationsGroupUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorDocumentDownload.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorDocumentExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorDocumentUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorEventExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorEventModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorFrameworkRequirementCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirement.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorFrameworkRequirementModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorIntegrationCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorIntegrationCreatePayloadVendorIntegration.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorIntegrationExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorIntegrationModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorIntegrationSetting.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorIntegrationSyncCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorIntegrationSyncCreatePayloadVendorIntegrationSync.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorIntegrationSyncExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorIntegrationSyncModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorIntegrationUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorIntegrationUpdatePayloadVendorIntegration.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorPolicy.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorPolicyAnswer.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorPolicyAnswerClosestQuestion.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorPolicyClause.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorPolicyDetails.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorPolicyProgress.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorPolicyPublish.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorPolicyType.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorProductIndex.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorProductIndexFeatures.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorProductModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorSupplierAccessControl.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorSupplierCategory.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorSupplierExtended.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorSupplierModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorSupplierPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorSupplierStatus.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorTeamModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorTeamUpsertPayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorTeamUpsertPayloadVendorTeams.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorTreeNodeModel.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorUser.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorUserComplianceStats.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorUserCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorUserCreatePayloadVendorUsers.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorUserExternalIdentifier.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorUserRoles.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorUserStatus.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorUserUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorUserUpdatePayloadVendorUser.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorsCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/models/VendorsCreatePayloadCompany.ts","webpack://white_knight/./app/javascript/src/swagger/runtime.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/apis/DefaultApi.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/Image.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/ImageUrls.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/SharedPaginationMeta.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubAccessRequestApprovePayload.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubAccessRequestApprovePayloadTrusthubAccessRequest.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubAccessRequestCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubAccessRequestCreatePayloadTrusthubAccessRequest.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubAccessRequestModel.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubCategoryModel.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubCategorySectionIdentifier.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubCompanyCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubCompanyCreatePayloadTrusthubCompany.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubCompanyExtended.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubCompanyModel.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubCompanyStatus.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubCompanyUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubCompanyUpdatePayloadTrusthubCompany.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubDocumentExtended.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubDocumentModel.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubDocumentModelExtra.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubDocumentPermissionModel.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubInvitationCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubInvitationCreatePayloadTrusthubUser.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubInvitationModel.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubInvitationUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubInvitationUpdatePayloadTrusthubUser.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubSectionModel.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubSectionUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubSectionUpdatePayloadTrusthubSection.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubSettingsModel.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubSharedStatus.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubUserModel.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubUserPasswordForgotPayload.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubUserPasswordForgotPayloadTrusthubUser.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubUserPasswordResetPayload.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubUserPasswordResetPayloadTrusthubUser.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubUserSignInPayload.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubUserSignInPayloadTrusthubUser.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubUserSignUpPayload.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubUserSignUpPayloadTrusthubUser.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubVendorUserActivityList.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubVendorUserActivityModel.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubVendorUserCreatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubVendorUserCreatePayloadTrusthubVendorUser.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubVendorUserExtended.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubVendorUserModel.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubVendorUserStatus.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubVendorUserUpdatePayload.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/models/TrusthubVendorUserUpdatePayloadTrusthubVendorUser.ts","webpack://white_knight/./app/javascript/src/swagger/trusthub/runtime.ts","webpack://white_knight/./app/javascript/src/types/OwnerObjectType.ts","webpack://white_knight/./app/javascript/src/types/accessObject.ts","webpack://white_knight/./app/javascript/src/types/constants.ts","webpack://white_knight/./app/javascript/src/types/grid.ts","webpack://white_knight/./app/javascript/src/types/pdfOpenMode.ts","webpack://white_knight/./app/javascript/src/types/sortDirection.ts","webpack://white_knight/./app/javascript/unauthenticated/src/components/InputField/InputField.tsx","webpack://white_knight/./app/javascript/unauthenticated/src/components/PasswordStrength/PasswordStrength.tsx","webpack://white_knight/./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import ReactGA from 'react-ga4';\nimport { UserDetails } from '../src/swagger';\n\nexport const googleAnalyticsInit = () => {\n if (process.env.NODE_ENV !== 'development') {\n ReactGA.initialize(process.env.REACT_APP_GA_PROPERTY_ID);\n ReactGA.send('pageview');\n }\n};\n\nexport const setGoogleAnalyticsUser = (user: UserDetails) => {\n if (process.env.NODE_ENV !== 'development') {\n ReactGA.set({ userId: user.email, userFullName: user.fullName });\n }\n};\n","import * as Sentry from '@sentry/react';\nimport { Integrations } from '@sentry/tracing';\nimport { UserDetails } from '../src/swagger/models/UserDetails';\n\nexport const sentryInit = () => {\n if (process.env.NODE_ENV !== 'development') {\n Sentry.init({\n dsn: process.env.SENTRY_URL,\n autoSessionTracking: true,\n integrations: [new Integrations.BrowserTracing()],\n // We recommend adjusting this value in production, or using tracesSampler\n // for finer control\n tracesSampleRate: 1.0,\n environment: process.env.RAILS_ENV || process.env.NODE_ENV,\n });\n }\n};\n\nexport const getSentryReduxEnhancer = () => {\n if (process.env.NODE_ENV !== 'development') {\n return Sentry.createReduxEnhancer({});\n }\n return undefined;\n};\n\nexport const setSentryUser = (user: UserDetails) => {\n if (process.env.NODE_ENV !== 'development') {\n Sentry.setUser({\n email: user.email,\n username: user.fullName,\n });\n }\n};\n","import { getMetaContent } from '../functions/getMetaContent';\nimport { Configuration, HTTPHeaders } from '../swagger';\nimport { Configuration as TrustHubConfiguration } from '../swagger/trusthub';\n\nimport { DefaultApi as Api } from '../swagger/apis';\nimport { DefaultApi as TrustHubApi } from '../swagger/trusthub/apis';\n\nconst configuration = (additionalHeaders?: HTTPHeaders) => {\n const csrfHeader = { 'X-CSRF-Token': getMetaContent('csrf-token') };\n const headers = Object.assign({}, csrfHeader, additionalHeaders);\n return new Configuration({\n basePath: `${window.location.origin}/api/v1`,\n headers,\n });\n};\n\nexport const TRUSTHUB_BASE_PATH = '/trusthub/api/v1';\n\nconst TrustHubConfig = (additionalHeaders?: HTTPHeaders) => {\n const csrfHeader = { 'X-CSRF-Token': getMetaContent('csrf-token') };\n const headers = Object.assign({}, csrfHeader, additionalHeaders);\n return new TrustHubConfiguration({\n basePath: `${window.location.origin}${TRUSTHUB_BASE_PATH}`,\n headers,\n });\n};\nexport const api = (additionalHeaders?: HTTPHeaders) =>\n new Api(configuration(additionalHeaders));\n\nexport const trusthubApi = (additionalHeaders?: HTTPHeaders) =>\n new TrustHubApi(TrustHubConfig(additionalHeaders));\n","import { faAngleDown } from '@fortawesome/pro-light-svg-icons/faAngleDown';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport moment from 'moment';\nimport React, {\n CSSProperties,\n SyntheticEvent,\n useContext,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport {\n Accordion,\n AccordionContext,\n Card,\n useAccordionToggle,\n} from 'react-bootstrap';\nimport { useCookies } from 'react-cookie';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n resetScrollCardIntoView,\n scrollToY,\n} from '../../store/global/globalSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport './AdoptechAccordionCard.scss';\n\nexport interface AdoptechAccordionCardProps {\n hasDoneButton?: boolean;\n index: string;\n nested?: boolean;\n nestedVerticalOffset?: number;\n noMargin?: boolean;\n headerOffset?: number;\n title: any;\n cardBodyClass?: string;\n headerClass?: string;\n iconSize?: string;\n callbackOnOpen?: (i: string) => void;\n shouldShowCoachmark?: boolean;\n style?: CSSProperties;\n scrollDisabled?: boolean;\n handleDone?: () => void;\n triggerClick?: boolean;\n hasError?: boolean;\n\n // Needed to customize click flow:\n // on body click run headerHandleClick() without default behavior,\n // on arrow icon click run default behavior ( collapse accordion )\n headerHandleClick?: () => void;\n}\n\nexport const AdoptechAccordionCard = React.forwardRef<\n HTMLDivElement,\n React.PropsWithChildren\n>((props, ref) => {\n const {\n children,\n index,\n nested,\n nestedVerticalOffset,\n noMargin,\n headerOffset,\n title,\n cardBodyClass,\n headerClass,\n iconSize,\n hasDoneButton,\n callbackOnOpen,\n shouldShowCoachmark,\n style,\n scrollDisabled,\n handleDone,\n hasError,\n headerHandleClick,\n } = props;\n const currentEventKey = useContext(AccordionContext);\n const isCurrentEventKey = currentEventKey === index;\n\n useEffect(() => {\n if (isCurrentEventKey && callbackOnOpen) {\n callbackOnOpen(currentEventKey);\n }\n }, [isCurrentEventKey]);\n\n const cardRef = useRef(null);\n const toggleRef = useRef(null);\n const bodyRef = useRef(null);\n useImperativeHandle(ref, () => toggleRef.current);\n\n const handleDoneClick = () => {\n toggleRef.current?.click();\n handleDone && handleDone();\n };\n\n const { scrollCardIntoView } = useSelector(\n (state: ApplicationState) => state.global\n );\n\n const dispatch = useDispatch();\n\n const defaultAccordionToggle = useAccordionToggle(\n index,\n (event: SyntheticEvent) => {\n event.stopPropagation();\n setTimeout(() => {\n scroll();\n }, 250);\n }\n );\n\n useEffect(() => {\n if (scrollCardIntoView === index) {\n scroll();\n dispatch(resetScrollCardIntoView());\n }\n }, [scrollCardIntoView]);\n\n const scroll = () => {\n if (scrollDisabled) return;\n if (!nested) {\n cardRef.current.scrollIntoView({ behavior: 'smooth' });\n } else {\n dispatch(scrollToY(nestedVerticalOffset + cardRef.current.offsetTop));\n }\n };\n\n const [showCoachmark, setShowCoachmark] = useState(false);\n const [cookies, setCookies] = useCookies(['firstPolicyOpened']);\n\n const handleCoachmarkClose = () => {\n setShowCoachmark(false);\n setCookies('firstPolicyOpened', true, {\n expires: moment().add(10, 'years').toDate(),\n });\n toggleRef.current.click();\n };\n\n useEffect(() => {\n if (!cookies.firstPolicyOpened) {\n setShowCoachmark(true);\n }\n }, [cookies.firstPolicyOpened]);\n\n return (\n \n \n \n {title}\n \n \n \n \n <>\n {children}\n {hasDoneButton && isCurrentEventKey && (\n
\n \n Done\n \n
\n )}\n \n
\n
\n
\n\n {shouldShowCoachmark && showCoachmark && (\n
\n
\n Complete each section to generate the policy text.\n \n GOT IT\n
\n \n )}\n \n );\n});\n\nAdoptechAccordionCard.defaultProps = {\n nested: false,\n nestedVerticalOffset: 0,\n};\n","import classNames from 'classnames';\nimport googleLogo from 'images/google.svg';\nimport microsoftLogo from 'images/microsoft.png';\nimport React from 'react';\nimport { Button, Spinner } from 'react-bootstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport './AdoptechButton.scss';\n\nexport enum AdoptechButtonVariant {\n Default,\n Inverse,\n Primary,\n Warning,\n Success,\n SuccessFilled,\n Google,\n PrimaryTransparent,\n SuccessTransparent,\n WarningTransparent,\n Gray,\n White,\n OrangeOnOrange,\n OrangeOnWhite,\n Transparent,\n PrimaryOrange,\n WhiteOnDarkOrange,\n DarkOrangeOnWhite,\n DarkGray,\n Microsoft,\n}\n\nexport interface AdoptechButtonProps {\n busy?: boolean;\n disabled?: boolean;\n icon?: IconDefinition;\n rawIcon?: string;\n iconSize?: 'large';\n iconAlignment?: 'left' | 'right';\n uppercase?: boolean;\n onClick?: React.MouseEventHandler;\n variant?: AdoptechButtonVariant;\n disabledTooltip?: string;\n type?: 'button' | 'reset' | 'submit';\n extraClass?: string;\n disablePointerEvents?: boolean;\n shadow?: boolean;\n rounded?: boolean;\n size?: 'middle' | 'middle2';\n}\n\nexport const AdoptechButton: React.FC = ({\n children,\n busy,\n disabled,\n icon,\n iconSize,\n uppercase,\n onClick,\n variant,\n disabledTooltip,\n type,\n extraClass,\n disablePointerEvents,\n shadow,\n rounded,\n iconAlignment,\n rawIcon,\n size,\n}) => {\n const mainClasses = classNames({\n adoptechButton: true,\n 'adoptechButton-uppercase': uppercase,\n 'adoptechButton-inverse': variant === AdoptechButtonVariant.Inverse,\n 'adoptechButton-primary': variant === AdoptechButtonVariant.Primary,\n 'adoptechButton-primaryOrange':\n variant === AdoptechButtonVariant.PrimaryOrange,\n 'adoptechButton-whiteOnDarkOrange':\n variant === AdoptechButtonVariant.WhiteOnDarkOrange,\n 'adoptechButton-darkOrangeOnWhite':\n variant === AdoptechButtonVariant.DarkOrangeOnWhite,\n 'adoptechButton-primaryTransparent':\n variant === AdoptechButtonVariant.PrimaryTransparent,\n 'adoptechButton-warning': variant === AdoptechButtonVariant.Warning,\n 'adoptechButton-warningTransparent':\n variant === AdoptechButtonVariant.WarningTransparent,\n 'adoptechButton-success': variant === AdoptechButtonVariant.Success,\n 'adoptechButton-successFilled':\n variant === AdoptechButtonVariant.SuccessFilled,\n 'adoptechButton-successTransparent':\n variant === AdoptechButtonVariant.SuccessTransparent,\n 'adoptechButton-gray': variant === AdoptechButtonVariant.Gray,\n 'adoptechButton-darkGray': variant === AdoptechButtonVariant.DarkGray,\n 'adoptechButton-white': variant === AdoptechButtonVariant.White,\n 'adoptechButton-google': variant === AdoptechButtonVariant.Google,\n 'adoptechButton-microsoft': variant === AdoptechButtonVariant.Microsoft,\n 'adoptechButton-orangeOnOrange':\n variant === AdoptechButtonVariant.OrangeOnOrange,\n 'adoptechButton-orangeOnWhite':\n variant === AdoptechButtonVariant.OrangeOnWhite,\n 'adoptechButton-transparent': variant === AdoptechButtonVariant.Transparent,\n 'adoptechButton-pointer-events-none': disablePointerEvents,\n 'adoptechButton--shadow': shadow,\n 'adoptechButton--rounded': rounded,\n 'adoptechButton--with-large-icon': iconSize === 'large',\n 'adoptechButton--with-right-icon': iconAlignment === 'right',\n 'adoptechButton--middleSize': size === 'middle',\n 'adoptechButton--middleSize2': size === 'middle2',\n [extraClass || '']: !!extraClass,\n });\n\n return (\n
\n \n {busy && }\n {!busy && (\n
\n {variant === AdoptechButtonVariant.Google && (\n \n )}\n {variant === AdoptechButtonVariant.Microsoft && (\n \n )}\n {iconAlignment == 'right' ? (\n <>\n {children}\n {icon && (\n \n )}\n \n ) : (\n <>\n {icon && (\n \n )}\n {rawIcon && }\n {children}\n \n )}\n
\n )}\n \n
\n );\n};\n\nAdoptechButton.defaultProps = {\n variant: AdoptechButtonVariant.Default,\n};\n","import classNames from 'classnames';\nimport React, { CSSProperties } from 'react';\nimport './AdoptechCheckbox.scss';\n\ninterface AdoptechCheckboxProps {\n checked: boolean;\n className?: string;\n id: string;\n label?: JSX.Element | string;\n onChange?: (e?: React.SyntheticEvent) => void;\n disabled?: boolean;\n color?: 'white' | 'white-black';\n style?: CSSProperties;\n labelPadding?: 'small';\n size?: 'small';\n}\n\nexport const AdoptechCheckbox: React.FC = props => {\n const classes = classNames(\n {\n adoptechCheckbox: true,\n 'adoptechCheckbox--disabled': props.disabled,\n 'adoptechCheckbox--white-background': props.color === 'white',\n 'adoptechCheckbox--white-black-background': props.color === 'white-black',\n 'adoptechCheckbox--small-label-padding': props.labelPadding === 'small',\n 'adoptechCheckbox--small': props.size === 'small',\n },\n props.className\n );\n\n return (\n
\n \n \n
\n );\n};\n\nAdoptechCheckbox.defaultProps = {\n label: '',\n};\n","import React from 'react';\nimport { SelectionOption } from '../../types/selectionOption';\nimport { AdoptechReactSelect } from '../AdoptechReactSelect/AdoptechReactSelect';\nimport { WithCountries } from '../WithCountries/WithCountries';\n\ninterface AdoptechCountrySelectContentProps extends AdoptechCountrySelectProps {\n options: SelectionOption[];\n}\n\nconst AdoptechCountrySelectContent: React.FC<\n AdoptechCountrySelectContentProps\n> = ({ onChange, value, disabled, placeholder, isMultiSelect, options }) => {\n if (options?.length) {\n const uk = options.find(x => x.value === 'GB');\n const us = options.find(x => x.value === 'US');\n options.splice(options.indexOf(uk), 1);\n options.splice(options.indexOf(us), 1);\n options.unshift(uk, us);\n }\n\n return (\n value?.split(',').includes(x.value))\n : options.find(x => x.value === value)\n }\n placeholder={placeholder}\n />\n );\n};\n\ninterface AdoptechCountrySelectProps {\n onChange?: (value: SelectionOption) => void;\n value: string;\n disabled?: boolean;\n placeholder?: string;\n isMultiSelect?: boolean;\n}\n\nexport const AdoptechCountrySelect: React.FC<\n AdoptechCountrySelectProps\n> = props => (\n \n {countryOptions => (\n \n )}\n \n);\n","import React, { ReactNode, useEffect, useRef, useState } from 'react';\nimport { AdoptechButton } from '../AdoptechButton/AdoptechButton';\nimport './AdoptechDatePicker.scss';\nimport DatePicker from 'react-datepicker';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faAngleDown } from '@fortawesome/pro-solid-svg-icons/faAngleDown';\nimport classNames from 'classnames';\nimport { typeOptions } from '../Reports/ReportsHeader/ReportsHeader';\nimport { instanceOf } from 'prop-types';\n\nexport type DeadLineData = {\n label: string;\n value: Date;\n};\n\nexport interface AdoptechDatePickerProps {\n outputDate: Date;\n onDateSelect: (date: Date) => void;\n onPresetDateSelected?: (date: Date) => void;\n labelText?: string;\n baseCssName?: string;\n placeHolderText?: string;\n labelStyle?: string;\n id?: string;\n endNode?: ReactNode;\n deadLines?: DeadLineData[];\n minDate?: Date;\n maxDate?: Date;\n disabled?: boolean;\n hasError?: boolean;\n rounded?: boolean;\n popperPlacement?: string;\n // Example: If refreshDateOnPreselect is false => On preselect ( ex: 1 year from now) => don't update current date ( only call onPresetDateSelected())\n refreshDateOnPreselect?: boolean;\n}\n\nexport const getFutureDate = (value: number): Date => {\n const date = new Date();\n date.setMonth(date.getMonth() + value);\n return date;\n};\n\nconst defaultDeadlines: DeadLineData[] = [\n { label: '3 months from today', value: getFutureDate(3) },\n { label: '6 months from today', value: getFutureDate(6) },\n { label: '9 months from today', value: getFutureDate(9) },\n { label: '12 months from today', value: getFutureDate(12) },\n];\n\nexport const AdoptechDatePicker: React.FC = ({\n labelText = 'Set response deadline (optional)',\n baseCssName = 'adoptechDatePicker',\n placeHolderText = 'Select date',\n onDateSelect = () => {},\n labelStyle = baseCssName + '--label',\n id = baseCssName + '--datePicker',\n endNode,\n deadLines = defaultDeadlines,\n minDate = new Date(),\n maxDate = null,\n onPresetDateSelected = () => {},\n disabled = false,\n hasError,\n outputDate,\n popperPlacement = 'top-end',\n refreshDateOnPreselect = true,\n}) => {\n const datePickerRef = useRef();\n\n let initialDate = outputDate;\n if (\n outputDate &&\n outputDate instanceof Date &&\n outputDate.toString() === 'Invalid Date'\n ) {\n console.error('Invalid date', outputDate);\n initialDate = null;\n }\n\n useEffect(() => {\n setSelectedDate(initialDate);\n }, [initialDate]);\n\n const [selectedDate, setSelectedDate] = useState(initialDate);\n\n const refreshDate = (date: Date): void => {\n setSelectedDate(date);\n onDateSelect(date);\n };\n\n const presetDates: DeadLineData[] = deadLines.map(deadline => ({\n label: deadline.label,\n value: deadline.value,\n }));\n\n const handlePresetDateSelect = (date: Date): void => {\n onPresetDateSelected(date);\n refreshDateOnPreselect && refreshDate(date);\n datePickerRef.current.setOpen(false);\n };\n\n const popperClassName = baseCssName + '--popperClass';\n\n return (\n {\n const insideDatepickerModal = (e.target as HTMLDivElement).closest(\n '.' + popperClassName\n );\n if (insideDatepickerModal) return;\n datePickerRef.current.setOpen(true);\n }}\n >\n {labelText && (\n \n )}\n \n \n {presetDates && presetDates.length > 0 && (\n
\n {presetDates.map(option => (\n handlePresetDateSelect(option.value)}\n >\n {option.label}\n \n ))}\n
\n )}\n
\n {endNode ? (\n endNode\n ) : (\n
\n \n
\n )}\n \n \n );\n};\n","import { faCalendar } from '@fortawesome/pro-light-svg-icons/faCalendar';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React from 'react';\nimport {\n AdoptechDatePicker,\n AdoptechDatePickerProps,\n} from '../AdoptechDatePicker/AdoptechDatePicker';\nimport './AdoptechDatePicker2.scss';\n\nexport const AdoptechDatePicker2: React.FC = props => {\n const baseCss = 'adoptech-datepicker2';\n const customProps = { ...props, hasError: false };\n return (\n \n \n }\n />\n \n );\n};\n","import React, { DOMAttributes } from 'react';\n\nexport const AdoptechDropdownToggle = React.forwardRef<\n HTMLDivElement,\n DOMAttributes\n>(({ onClick, children }, ref) => {\n return (\n {\n e.stopPropagation();\n e.preventDefault();\n onClick(e);\n }}\n >\n {children}\n \n );\n});\n","import React, { useRef, useState } from 'react';\nimport './AdoptechFileInput.scss';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCloudUpload } from '@fortawesome/pro-light-svg-icons/faCloudUpload';\n\ninterface AdoptechFileInputProps {\n onChange: (value: T) => void;\n label: string;\n accept?: string;\n name: string;\n urls: string[]; // initial previews\n extraClass?: string;\n multiple?: boolean;\n placeholder?: string;\n}\n\nexport const AdoptechFileInput: React.FC<\n AdoptechFileInputProps\n> = props => {\n const baseCss = 'adoptechFileInput';\n const hasError = !props.urls;\n const inputRef = useRef();\n const [imagePreviews, setImagePreviews] = useState(\n props.urls || []\n );\n\n const [fileNames, setFileNames] = useState([]);\n\n const handleChange = (e: React.ChangeEvent) => {\n const selectedFiles = Array.from(e.currentTarget.files);\n\n const previews = selectedFiles.map(file => URL.createObjectURL(file));\n const names = selectedFiles.map(file => file.name);\n setFileNames(names);\n setImagePreviews(previews);\n props.onChange(selectedFiles);\n };\n\n const handleClick = () => inputRef.current.click();\n const acceptImage = props.accept?.split(',').includes('image');\n const hasPlaceholder = props.placeholder !== undefined;\n return (\n \n
\n
{props.label}
\n\n {hasPlaceholder && (\n
{props.placeholder}
\n )}\n {!hasPlaceholder && (\n
\n {acceptImage &&\n imagePreviews.length > 0 &&\n imagePreviews.map((preview, index) => (\n \n ))}\n {fileNames.length === 0 && `No ${props.name} uploaded`}\n\n {!acceptImage && fileNames.length > 0 && fileNames.join(', ')}\n
\n )}\n
\n\n
\n \n\n \n
\n \n );\n};\n","import React from 'react';\nimport './AdoptechGridTable.scss';\n\ninterface Props {\n header: React.ReactElement;\n}\n\nexport const adoptechGridTableCss = 'adoptechGridTable';\n\nconst AdoptechGridTable: React.FC = props => {\n return (\n <>\n {props.header}\n {props.children}\n \n );\n};\n\nexport default AdoptechGridTable;\n","import classNames from 'classnames';\nimport React, { useEffect, useLayoutEffect, useRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport './AdoptechDrawer.scss';\nimport { faAngleLeft } from '@fortawesome/pro-regular-svg-icons/faAngleLeft';\nimport { faXmark } from '@fortawesome/pro-solid-svg-icons/faXmark';\nimport { moveChatWidgetPosition } from '../../functions/chatWidgetHelper';\n\nexport interface AdoptechDrawerProps {\n title: string;\n inverted?: boolean;\n show: boolean;\n className?: string;\n onClose?(): void;\n backButton?: boolean;\n onBackClick?(): void;\n badges?: Array<{ title: string }>;\n}\n\n// for RHS please use AdoptechHS component\n// Need to create a controller for dynamic drawers and modals, to reduce code duplication and styles collision\nexport const AdoptechDrawer: React.FC = ({\n title = '',\n inverted,\n className = '',\n show = false,\n children,\n backButton,\n badges,\n onClose = () => {},\n onBackClick = () => {},\n}) => {\n const openClass = 'adoptechDrawer--open';\n const classes = classNames(\n 'adoptechDrawer',\n show ? openClass : '',\n className\n );\n\n const headerClasses = classNames(\n 'adoptechDrawer--header',\n inverted ? 'adoptechDrawer--header-inverted' : '',\n backButton ? 'adoptechDrawer--header--with-back-button' : ''\n );\n\n const ref = useRef(null);\n\n useEffect(() => {\n const toggleChatWidgetPosition = () => {\n setTimeout(() => {\n const offsetWidth =\n (document.querySelector(`.${openClass}`) as HTMLElement)\n ?.offsetWidth || 0;\n moveChatWidgetPosition(offsetWidth + 20);\n }, 100);\n };\n\n toggleChatWidgetPosition();\n return () => {\n toggleChatWidgetPosition();\n };\n }, [show]);\n return ReactDOM.createPortal(\n
\n
\n
\n {backButton && (\n \n \n \n )}\n {(badges || []).map(badge => (\n \n {badge.title}\n
\n ))}\n\n {title}\n
\n \n
\n {show && children}\n ,\n document.querySelector('#drawer')\n );\n};\n","import { faAngleLeft } from '@fortawesome/pro-regular-svg-icons/faAngleLeft';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React, { useState } from 'react';\nimport {\n AdoptechDrawer,\n AdoptechDrawerProps,\n} from '../AdoptechDrawer/AdoptechDrawer';\nimport { ExitConfirmationModal } from '../ExitConfirmationModal/ExitConfirmationModal';\nimport './AdoptechHS.scss';\n\ninterface AdoptechHSProps {\n show: boolean;\n onClose: () => void;\n footer?: JSX.Element;\n title: string;\n extraClass?: string;\n extraFooterClass?: string;\n backButton?: AdoptechDrawerProps['backButton'];\n onBackClick?: AdoptechDrawerProps['onBackClick'];\n subHeaderTitle?: string;\n showConfirmationWarning: boolean;\n confirmText?: string;\n badges?: AdoptechDrawerProps['badges'];\n noFormPadding?: boolean;\n theme?: 'medium';\n}\n\nexport const AdoptechHS = React.forwardRef<\n HTMLDivElement,\n React.PropsWithChildren\n>((props, ref) => {\n const {\n children,\n show,\n onClose,\n footer,\n title,\n extraClass,\n extraFooterClass,\n backButton,\n onBackClick,\n subHeaderTitle,\n showConfirmationWarning,\n confirmText,\n noFormPadding,\n badges,\n theme,\n } = props;\n const [isConfirmationShowing, setIsConfirmationShowing] = useState(false);\n\n const onClickCloseOrOutsideDrawer = (value: boolean) => {\n if (!showConfirmationWarning) {\n // Skip confirmation dialog:\n // For example, if form is not touched, don't show the confirmation\n setIsConfirmationShowing(false);\n onClose();\n return;\n }\n\n setIsConfirmationShowing(value);\n };\n const baseCss = 'adoptechHS--drawer';\n const mainClasses = classNames(baseCss, extraClass, {\n [`${baseCss}--with-sub-header`]: subHeaderTitle,\n [`adoptechHS--medium`]: theme === 'medium',\n });\n\n return (\n {\n onClickCloseOrOutsideDrawer(true);\n }}\n style={{ display: show ? 'block' : 'none' }}\n >\n {\n event.stopPropagation();\n // Don't use preventDefault, it brakes behaviors.\n }}\n >\n onClickCloseOrOutsideDrawer(true)}\n className={mainClasses}\n >\n {subHeaderTitle && (\n
\n \n \n \n\n {subHeaderTitle}\n
\n )}\n \n {isConfirmationShowing && (\n {\n setIsConfirmationShowing(false);\n onClose();\n }}\n onCancel={() => {\n setIsConfirmationShowing(false);\n }}\n />\n )}\n {children}\n \n {footer && (\n
\n {footer}\n
\n )}\n \n \n \n );\n});\n\nexport default AdoptechHS;\n","import classNames from 'classnames';\nimport React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport './AdoptechModal.scss';\n\ninterface AdoptechModalProps {\n className?: string;\n show: boolean;\n onHide: any;\n backdrop?: any;\n}\n\nconst AdoptechModal: React.FC = ({\n className,\n children,\n show,\n onHide,\n backdrop,\n}) => {\n const classes = classNames('adoptechModal', className);\n\n if (!show) {\n return null;\n }\n\n return (\n {}}\n backdrop={backdrop}\n >\n <>{children}\n \n );\n};\n\nexport default AdoptechModal;\n","import React, { useRef, useState, useEffect } from 'react';\nimport classNames from 'classnames';\n\nimport './AdoptechOverflowLine.scss';\n\ninterface AdoptechOverflowLineProps {\n speed?: number;\n className?: string;\n}\n\nconst AdoptechOverflowLine: React.FC = ({\n speed = 300,\n className = '',\n children,\n}) => {\n // on rename class please rename it at AdoptechGridTable.scss#40\n const baseCss = 'adoptechOverflowLine';\n const fadeCompensation = 20;\n\n const elWrapper = useRef(null);\n const elContent = useRef(null);\n\n const [overflowValue, setOverflow] = useState(0);\n const [scroll, setScroll] = useState(false);\n\n useEffect(() => {\n setTimeout(() => {\n elContent.current &&\n elWrapper.current &&\n setOverflow(\n elContent.current.offsetWidth - elWrapper.current.offsetWidth\n );\n }, 100);\n }, [elWrapper.current, elContent.current]);\n\n const overflow = overflowValue > 0;\n\n const scrollForward = () => setScroll(true);\n const scrollBack = () => setScroll(false);\n\n const style = overflow\n ? {\n marginLeft: scroll ? `-${overflowValue + fadeCompensation}px` : '0',\n }\n : {};\n\n return (\n \n
\n {children}\n
\n \n );\n};\n\nexport default AdoptechOverflowLine;\n","import React from 'react';\n\ninterface AdoptechPanelProps {\n className?: string;\n padding?: string;\n borderRadius?: string;\n}\nexport const AdoptechPanel: React.FC = props => {\n return (\n \n {props.children}\n \n );\n};\n","import { Interweave } from 'interweave';\nimport React from 'react';\nimport './AdoptechRadioButton.scss';\n\nexport interface AdoptechRadioButtonProps {\n checked: boolean;\n disabled?: boolean;\n id: string;\n label?: string;\n onChange?: (value: string) => void;\n value: string;\n}\n\nexport const AdoptechRadioButton: React.FC<\n AdoptechRadioButtonProps\n> = props => {\n return (\n
\n props.onChange(props.value)}\n value={props.value}\n type=\"radio\"\n />\n \n
\n );\n};\n","import classNames from 'classnames';\nimport React, { useEffect, useState } from 'react';\nimport { AdoptechRadioButton } from '../AdoptechRadioButton/AdoptechRadioButton';\nimport './AdoptechRadioButtonsGroup.scss';\n\ntype T = string;\n\ninterface Props {\n disabled?: boolean;\n labels: string[];\n values: T[];\n value?: T;\n ids?: string[];\n onChange: (value: T) => any;\n wrappers?: React.FC[]; // for the ability to wrap radios inside tooltips\n}\n\nexport const AdoptechRadioButtonsGroup: React.FC = ({\n values,\n labels,\n onChange,\n value,\n disabled,\n ids,\n wrappers,\n}) => {\n const [groupValue, setGroupValue] = useState(value || null);\n\n useEffect(() => {\n setGroupValue(value);\n }, [value]);\n\n const radios = values.map((val, index) => {\n const radio = (\n {\n setGroupValue(newValue);\n onChange(newValue);\n }}\n />\n );\n\n const Wrapper = wrappers ? wrappers[index] : null;\n return Wrapper ? {radio} : radio;\n });\n\n return (\n \n {radios}\n \n );\n};\n","import classNames from 'classnames';\nimport React from 'react';\n\nimport {\n AdoptechReactSelect,\n AdoptechReactSelectProps,\n} from '../AdoptechReactSelect/AdoptechReactSelect';\nimport './AdoptechReactSelect2.scss';\n\ninterface AdoptechReactSelect2Props extends AdoptechReactSelectProps {\n bottomComponent?: JSX.Element;\n}\n\nexport const AdoptechReactSelect2: React.FC<\n AdoptechReactSelect2Props\n> = props => {\n const baseCss = 'adoptech-select2-container';\n\n const customComponents = {\n IndicatorSeparator: (): null => null,\n };\n\n const newProps = {\n ...props,\n ...{\n components: !props.components\n ? customComponents\n : { ...props.components, ...customComponents },\n label: null,\n hasError: false,\n },\n };\n\n return (\n \n {props.label}\n \n {props.bottomComponent}\n \n );\n};\n","import classNames from 'classnames';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport { reactSelectCustomStyles } from '../../functions/reactSelectCustomStyles';\nimport { reactSelectCustomTheme } from '../../functions/reactSelectCustomTheme';\nimport { ApplicationState } from '../../types/applicationState';\nimport { SelectionOption } from '../../types/selectionOption';\nimport { AdoptechTooltip } from '../AdoptechTooltip/AdoptechTooltip';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\nimport './AdoptechReactSelect.scss';\nimport ReactSelect, {\n GroupBase,\n OptionProps,\n Theme,\n components as reactSelectComponents,\n} from 'react-select';\nimport { selectUsers } from '../../selectors/selectUsers';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faEye } from '@fortawesome/pro-solid-svg-icons/faEye';\n\nconst CheckboxOption = (\n props: OptionProps>\n) => (\n
\n \n null} />{' '}\n \n \n
\n);\n\nexport interface AdoptechReactSelectProps {\n allowAdd?: boolean;\n addText?: string;\n id: string;\n onAdd?: () => void;\n onChange: (value: any) => void;\n options: SelectionOption[];\n value?: any;\n isDisabled?: boolean;\n isLoading?: boolean;\n isMulti?: boolean;\n isCheckbox?: boolean;\n placeholder?: string;\n label?: string;\n ariaLabel?: string;\n hasError?: boolean;\n components?: any;\n noOptionsText?: string;\n maxMenuHeight?: number;\n showUserAvatar?: boolean;\n additionalStyling?: { [key: string]: React.CSSProperties };\n closeMenuOnSelect?: boolean;\n hideSelectedOptions?: boolean;\n isClearable?: boolean;\n theme?: (theme: Theme) => Theme;\n labelTooltipText?: string;\n showUserEmail?: boolean;\n rounded?: boolean;\n formatOptionLabel?: (option: SelectionOption) => React.ReactNode;\n}\n\nexport const AdoptechReactSelect: React.FC = ({\n allowAdd,\n addText,\n id,\n onChange,\n onAdd,\n options,\n value,\n isDisabled,\n isLoading,\n isMulti,\n isCheckbox,\n placeholder,\n label,\n ariaLabel,\n hasError,\n components,\n noOptionsText,\n maxMenuHeight,\n showUserAvatar,\n additionalStyling,\n closeMenuOnSelect,\n hideSelectedOptions,\n isClearable,\n theme,\n labelTooltipText,\n showUserEmail = false,\n formatOptionLabel,\n}) => {\n const optionsWithCreate = allowAdd\n ? [{ label: addText ? addText : 'Add ...', value: 'Add' }, ...options]\n : options;\n\n const mainClasses = classNames({\n adoptechReactSelect: true,\n 'adoptech-error': hasError,\n 'adoptechReactSelect--isDisabled': isDisabled,\n });\n\n const prefixClass = 'adoptechReactSelect--prefix';\n\n // TODO: remove \"VendorUser dependency in this 'base component'\"\n const vendorUsers = useSelector((state: ApplicationState) =>\n selectUsers(state)\n );\n\n const getUser = (userId: string) => {\n return vendorUsers?.find(u => u.id === userId);\n };\n\n const customComponents = isCheckbox\n ? { ...components, Option: CheckboxOption }\n : components;\n\n return (\n
\n {label && (\n \n \n \n )}\n {\n const selectionOption = option as SelectionOption;\n if (allowAdd && selectionOption.value === 'Add') {\n onAdd();\n return;\n }\n onChange(selectionOption);\n }}\n closeMenuOnSelect={closeMenuOnSelect}\n hideSelectedOptions={hideSelectedOptions}\n options={optionsWithCreate}\n styles={reactSelectCustomStyles(showUserAvatar, additionalStyling)}\n theme={theme || reactSelectCustomTheme}\n value={value}\n isDisabled={isDisabled}\n isLoading={isLoading}\n isClearable={isClearable}\n isMulti={isMulti}\n components={customComponents}\n placeholder={placeholder || 'Please choose ...'}\n noOptionsMessage={() => noOptionsText}\n maxMenuHeight={maxMenuHeight}\n classNamePrefix=\"adoptechReactSelect--prefix\" // !!! Classes like ValueContainer are disappearing after compilation build inside shadow DOM! https://github.com/JedWatson/react-select/issues/3309\n formatOptionLabel={\n formatOptionLabel ||\n (showUserAvatar\n ? (option: SelectionOption) => {\n const user = getUser(option.value);\n if (!user) {\n return option.label;\n }\n return (\n \n );\n }\n : undefined)\n }\n />\n
\n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getDefaultSelectionOptions } from '../../functions/getDefaultSelectionOptions';\nimport { fetchTable } from '../../store/vendors/vendorsThunks';\nimport { QuestionTableTypeEnum } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport { SelectionOption } from '../../types/selectionOption';\nimport { AdoptechReactSelect } from '../AdoptechReactSelect/AdoptechReactSelect';\n\ninterface AdoptechStateSelectProps {\n onChange?: (value: SelectionOption) => void;\n value: string;\n placeholder?: string;\n}\n\nexport const AdoptechStateSelect: React.FC = ({\n onChange,\n value,\n placeholder,\n}) => {\n const dispatch = useDispatch();\n useEffect(() => {\n dispatch(fetchTable(QuestionTableTypeEnum.UsState));\n }, []);\n const options = useSelector((state: ApplicationState) =>\n getDefaultSelectionOptions(QuestionTableTypeEnum.UsState, state)\n );\n\n return (\n x.value === value)}\n placeholder={placeholder}\n />\n );\n};\n","import classNames from 'classnames';\nimport React from 'react';\nimport { Table } from 'react-bootstrap';\nimport './AdoptechTable.scss';\n\ninterface AdoptechTableProps {\n embedded?: boolean;\n hasMenu?: boolean;\n modal?: boolean;\n className?: string;\n}\n\nconst AdoptechTable: React.FC = props => {\n const classes = classNames(\n {\n adoptechTable: true,\n 'adoptechTable-embedded': props.embedded,\n 'adoptechTable-hasMenu': props.hasMenu,\n 'adoptechTable-modal': props.modal,\n },\n props.className\n );\n\n return (\n
\n \n <>{props.children}\n
\n
\n );\n};\n\nexport default AdoptechTable;\n","import { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport classNames from 'classnames';\nimport React from 'react';\nimport './AdoptechTextArea.scss';\n\nexport interface AdoptechTextAreaProps {\n id: string;\n label?: string;\n disabled?: boolean;\n onChange: (event: React.ChangeEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n hasError?: boolean;\n placeholder?: string;\n value: string;\n rows?: number;\n autoFocus?: boolean;\n errorClass?: string;\n textAreaOnly?: boolean;\n icon?: IconDefinition;\n errorText?: string;\n rounded?: boolean;\n customLabel?: JSX.Element;\n extraStyles?: React.CSSProperties;\n}\n\nexport const AdoptechTextArea = React.forwardRef<\n HTMLTextAreaElement,\n AdoptechTextAreaProps\n>((props, ref) => {\n const mainClasses = classNames({\n adoptechTextArea: true,\n 'adoptechTextArea-error': props.hasError && !props.errorClass,\n [`${props.errorClass}`]: props.hasError,\n });\n\n const textArea = (\n \n );\n\n if (props.textAreaOnly) return textArea;\n\n return (\n
\n {props.label && }\n {textArea}\n
\n );\n});\n","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { forwardRef, useState } from 'react';\nimport {\n AdoptechTextArea,\n AdoptechTextAreaProps,\n} from '../AdoptechTextArea/AdoptechTextArea';\nimport './AdoptechTextArea2.scss';\nimport classNames from 'classnames';\n\nconst AdoptechTextArea2 = forwardRef<\n HTMLTextAreaElement,\n AdoptechTextAreaProps\n>((props, ref) => {\n const inputProps = {\n ...props,\n ...{\n hasError: false,\n label: null,\n textAreaOnly: true,\n },\n };\n\n const baseCss = 'adoptechTextAreaInternalLabel';\n\n return (\n <>\n {props.hasError && props.errorText && (\n
{props.errorText}
\n )}\n \n
\n {props.label && }\n {props.customLabel}\n\n \n {props.icon && (\n {\n const target = e.target as HTMLInputElement;\n\n (\n target.previousElementSibling as HTMLInputElement | null\n )?.select();\n }}\n />\n )}\n
\n \n \n );\n});\n\nAdoptechTextArea2.displayName = 'AdoptechTextArea2';\nexport { AdoptechTextArea2 };\n","import { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React from 'react';\nimport './AdoptechTextInput.scss';\n\nexport interface AdoptechTextInputProps {\n id: string;\n autoFocus?: boolean;\n label?: string;\n htmlLabel?: React.ReactNode;\n disabled?: boolean;\n onChange: (event: React.ChangeEvent) => void;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n onIconClicked?: (event: React.MouseEvent) => void;\n hasError?: boolean;\n placeholder?: string;\n value: string;\n rows?: number;\n maxLength?: number;\n type: 'text' | 'email' | 'password' | 'number';\n additionalClass?: string;\n errorClass?: string;\n icon?: IconDefinition;\n onlyInput?: boolean;\n rounded?: boolean;\n bottomElement?: React.ReactElement; // for custom error badges at bottom\n autoCapitalize?: string;\n prefixText?: string; // for read only bold prefix before input\n size?: 'large';\n max?: number;\n min?: number;\n}\n\nconst AdoptechTextInput = React.forwardRef<\n HTMLInputElement,\n AdoptechTextInputProps\n>((props, ref) => {\n const mainClasses = classNames({\n adoptechTextInput: true,\n 'adoptechTextInput-error': props.hasError && !props.errorClass,\n 'adoptechTextInput-large': props.size === 'large',\n [`${props.errorClass}`]: props.hasError,\n });\n\n const isNumberValueValid = (value: string) => {\n if (value === '') return true;\n const numberValue = parseFloat(value);\n return (\n !isNaN(numberValue) &&\n (props.min === undefined || numberValue >= props.min) &&\n (props.max === undefined || numberValue <= props.max)\n );\n };\n\n const handleChange = (event: React.ChangeEvent) => {\n const { value } = event.target;\n\n if (props.type === 'number' && !isNumberValueValid(value)) {\n return;\n }\n\n props.onChange(event);\n };\n\n const input = (\n ) => {\n const allowOnlyPositiveNumbers =\n props.type === 'number' &&\n props.min !== undefined &&\n props.min >= 0 &&\n e.key === '-';\n if (allowOnlyPositiveNumbers) {\n e.preventDefault();\n }\n }}\n />\n );\n\n if (props.onlyInput) return input;\n\n return (\n <>\n \n {props.label && }\n {props.htmlLabel ? props.htmlLabel : null}\n {props.hasError && props.label && (\n \n {`Please fill in ${props.label.toLowerCase()}`}\n \n )}\n\n {input}\n {props.icon && (\n props.onIconClicked && props.onIconClicked(e)}\n >\n \n \n )}\n \n {props.bottomElement}\n \n );\n});\n\nAdoptechTextInput.displayName = 'AdoptechTextInput';\nexport { AdoptechTextInput };\n","import React, { forwardRef } from 'react';\nimport {\n AdoptechTextInput,\n AdoptechTextInputProps,\n} from '../AdoptechTextInput/AdoptechTextInput';\nimport './AdoptechTextInput2.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\n\nconst AdoptechTextInput2 = forwardRef(\n (props, ref) => {\n const inputProps = {\n ...props,\n ...{\n hasError: false,\n label: null,\n additionalClass: null,\n onlyInput: true,\n },\n };\n const baseCss = 'adoptechTextInput2';\n return (\n <>\n \n {props.label && }\n
\n {props.prefixText && (\n {\n e.stopPropagation();\n const parentContainer = e.currentTarget.parentNode;\n parentContainer?.querySelector('input')?.focus();\n }}\n >\n {props.prefixText}\n \n )}\n \n\n {props.icon && (\n \n )}\n
\n \n \n );\n }\n);\n\nAdoptechTextInput2.displayName = 'AdoptechTextInput2';\nexport { AdoptechTextInput2 };\n","import classNames from 'classnames';\nimport React from 'react';\nimport './AdoptechTooltip.scss';\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\n\nexport const tooltipClassName = 'adoptech-tooltip';\n\nexport enum AdoptechTooltipVariant {\n Black, // default\n Orange,\n Large,\n Middle,\n}\n\nexport const AdoptechTooltip: React.FC<{\n text: string;\n identifier: string;\n children: JSX.Element;\n showTooltip: boolean;\n placement?: 'bottom' | 'top' | 'top-start' | 'right' | 'left';\n variant?:\n | AdoptechTooltipVariant.Orange\n | AdoptechTooltipVariant.Large\n | AdoptechTooltipVariant.Middle;\n}> = ({\n text,\n identifier,\n children,\n showTooltip,\n placement = 'top',\n variant,\n}) => {\n if (!showTooltip) return children;\n return (\n \n {text}\n \n }\n >\n {children}\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectAgreementsCreateForm } from '../../../../selectors/selectAgreementsCreateForm';\nimport { updateAgreementsCreateFormField } from '../../../../store/agreements/agreementsSlice';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { AdoptechTextInput2 } from '../../../AdoptechTextInput2/AdoptechTextInput2';\nimport { AgreementsCreateForm } from '../AddNewAgreementForm';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\n\nexport const useAgreementTemplateName = (form: AgreementsCreateForm) => {\n const agreementTemplates = useSelector(\n (state: ApplicationState) => state.agreements.agreementTemplates\n );\n\n const standardTemplate = agreementTemplates.find(\n template => template.id === form.standardTemplateId\n );\n return standardTemplate.name;\n};\n\nexport const NameStepIsValid = (form: AgreementsCreateForm) => {\n return form.name?.length > 0;\n};\n\nexport const NameStep: React.FC = () => {\n const form = useSelector(selectAgreementsCreateForm);\n\n const defaultName = useAgreementTemplateName(form);\n const dispatch = useDispatch();\n\n const setName = (name: string) =>\n dispatch(updateAgreementsCreateFormField({ name }));\n\n const baseCss = 'addNewAgreementForm';\n\n return (\n <>\n \n Give your agreement a unique name:\n \n
\n {\n setName(e.currentTarget.value);\n }}\n type=\"text\"\n label=\"Agreement name\"\n value={form.name || ''}\n placeholder={`${defaultName} - Jenny Smith`}\n hasError={!form.name}\n icon={faPen}\n />\n
\n \n );\n};\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { updateAgreementsCreateFormField } from '../../../store/agreements/agreementsSlice';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport { handleSubmitClass } from '../../ExternalSignatoryForm/ExternalSignatoryForm';\nimport { AgreementsCreateForm, StepType } from './AddNewAgreementForm';\nimport { NameStepIsValid } from './NameStep/NameStep';\nimport { SignatoriesStepIsValid } from './SignatoriesStep/SignatoriesStep';\n\ninterface FooterProps {\n onClose: () => void;\n isLastStep: boolean;\n currentStepName: StepType;\n goToStep: (n: AgreementsCreateForm['step']) => void;\n}\n\nexport const Footer: React.FC = ({\n onClose,\n isLastStep,\n currentStepName,\n goToStep,\n}) => {\n const dispatch = useDispatch();\n\n const {\n isCreatingAgreement,\n isCreatingOrUpdatingSignatory,\n agreementsCreateForm: form,\n } = useSelector((state: ApplicationState) => state.agreements);\n\n const isBusy = isCreatingAgreement || isCreatingOrUpdatingSignatory;\n const handleNext = () => {\n if (isLastStep) {\n (\n document.getElementsByClassName(\n handleSubmitClass\n )[0] as HTMLElement | null\n )?.click();\n return;\n }\n dispatch(updateAgreementsCreateFormField({ isTouched: true }));\n goToStep(form.step + 1);\n };\n\n const isStepValid = () => {\n if (currentStepName === 'NameStep') {\n return NameStepIsValid(form);\n }\n\n if (currentStepName === 'SignatoriesStep') {\n return SignatoriesStepIsValid(form);\n }\n\n return true;\n };\n\n return (\n \n {isLastStep ? 'DONE' : 'NEXT'}\n \n );\n};\n","import { useSelector } from 'react-redux';\nimport { AgreementsCreateForm } from '../../components/Agreements/AddNewAgreementForm/AddNewAgreementForm';\nimport { termsModel } from '../../components/Agreements/AddNewAgreementForm/TermsStep/TermsStep';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { AgreementTemplateModel } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\n\ninterface AgreementRadioOption {\n value: termsModel['id'];\n label: string;\n}\n\nexport const useAgreementsTermsRadioOptions = (\n form: AgreementsCreateForm\n): { options: AgreementRadioOption[]; onlyStandardTermsExist: boolean } => {\n const allAgreements = useSelector(\n (state: ApplicationState) => state.agreements.agreements\n );\n\n const agreementTemplates = useSelector(\n (state: ApplicationState) => state.agreements.agreementTemplates\n );\n\n const standardTemplate = agreementTemplates.find(\n (template: AgreementTemplateModel) =>\n template.id === form.standardTemplateId\n );\n const allAgreementsWithTheSameTemplate = (allAgreements || []).filter(\n agreement => agreement.agreementType === standardTemplate?.agreementType\n );\n\n const labelWithDate = (agreementOrTemplate: termsModel) => {\n const date = formatShortDate(agreementOrTemplate?.createdAt);\n return `${agreementOrTemplate.name} Created ${date}`;\n };\n\n const standardModel = {\n id: standardTemplate.id,\n name: 'Adoptech Standard Terms',\n createdAt: standardTemplate.createdAt,\n };\n\n const allModels = [standardModel].concat(allAgreementsWithTheSameTemplate);\n\n const options = allModels.map((agreement: termsModel) => {\n return {\n value: agreement.id,\n label: labelWithDate(agreement),\n };\n });\n\n const onlyStandardTermsExist = options.length === 1;\n\n return { options, onlyStandardTermsExist };\n};\n","import React, { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useAgreementsTermsRadioOptions } from '../../../../hooks/agreements/useAgreementsTermsRadioOptions';\nimport { updateAgreementsCreateFormField } from '../../../../store/agreements/agreementsSlice';\nimport { AgreementModel, AgreementTemplateModel } from '../../../../swagger';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { AdoptechRadioButtonsGroup } from '../../../AdoptechRadioButtonsGroup/AdoptechRadioButtonsGroup';\nimport { useAgreementTemplateName } from '../NameStep/NameStep';\n\nexport type termsModel = AgreementModel | AgreementTemplateModel;\n\nexport const TermsStep: React.FC = () => {\n const form = useSelector(\n (state: ApplicationState) => state.agreements.agreementsCreateForm\n );\n\n const dispatch = useDispatch();\n\n const setSelectedTermsId = (selectedTermsId: termsModel['id']) =>\n dispatch(\n updateAgreementsCreateFormField({\n selectedTermsId,\n })\n );\n\n const { options } = useAgreementsTermsRadioOptions(form);\n\n const defaultName = useAgreementTemplateName(form);\n const baseCss = 'addNewAgreementForm';\n const values = useMemo(() => options.map(option => option.value), options);\n const labels = useMemo(() => options.map(option => option.label), options);\n\n return (\n <>\n \n Use our standard terms or copy the terms from a previous {defaultName}.\n \n
\n setSelectedTermsId(value)}\n />\n
\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectAgreementsCreateForm } from '../../../selectors/selectAgreementsCreateForm';\nimport { updateAgreementsCreateFormField } from '../../../store/agreements/agreementsSlice';\nimport {\n AgreementModel,\n AgreementTemplateCategoryModel,\n AgreementTemplateModel,\n AgreementSignatoryModel,\n} from '../../../swagger';\nimport { NameStep, useAgreementTemplateName } from './NameStep/NameStep';\nimport { Footer } from './Footer';\nimport { TermsStep } from './TermsStep/TermsStep';\nimport AdoptechHS from '../../AdoptechHS/AdoptechHS';\nimport { useAgreementsTermsRadioOptions } from '../../../hooks/agreements/useAgreementsTermsRadioOptions';\nimport { SignatoriesStep } from './SignatoriesStep/SignatoriesStep';\nimport './AddNewAgreementForm.scss';\n\nexport interface AgreementFormProps {\n show: boolean;\n onClose(): void;\n}\n\nexport interface AgreementsCreateForm {\n name: string;\n step: number;\n standardTemplateId: AgreementTemplateCategoryModel['id'];\n selectedTermsId: AgreementModel['id'] | AgreementTemplateModel['id'];\n isTouched: boolean;\n signatory: AgreementSignatoryModel;\n}\n\nexport const agreementConfirmText =\n 'Are you sure you wish to close this window? Your changes will not be saved. To save changes click CANCEL to return to the agreement workflow. Select CLOSE to exit without saving.';\n\nexport type AgreementCreateFormFieldPayload = Partial;\n\nexport type StepType = 'NameStep' | 'TermsStep' | 'SignatoriesStep';\n\nexport const AddNewAgreementForm: React.FC = ({\n show,\n onClose,\n}) => {\n const form = useSelector(selectAgreementsCreateForm);\n\n const { onlyStandardTermsExist } = useAgreementsTermsRadioOptions(form);\n\n const Steps = onlyStandardTermsExist\n ? [NameStep, SignatoriesStep]\n : [NameStep, TermsStep, SignatoriesStep];\n\n const currentStepIndex = (form.step || 1) - 1;\n const isLastStep = !Steps[currentStepIndex + 1];\n const Step = Steps[currentStepIndex];\n const dispatch = useDispatch();\n const goToStep = (step: AgreementsCreateForm['step']) =>\n dispatch(updateAgreementsCreateFormField({ step }));\n\n const footer = (\n \n );\n\n useEffect(() => {\n if (!form.step) {\n dispatch(updateAgreementsCreateFormField({ step: 1 }));\n }\n }, []);\n const defaultName = useAgreementTemplateName(form);\n return (\n 1}\n onBackClick={() => goToStep(form.step - 1)}\n extraClass=\"adoptechHS--medium\"\n showConfirmationWarning\n confirmText={agreementConfirmText}\n >\n \n \n );\n};\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectAgreementsCreateForm } from '../../../../selectors/selectAgreementsCreateForm';\nimport {\n cleanupAgreementsCreateForm,\n toggleAddAgreementDrawer,\n updateAgreementsCreateFormField,\n} from '../../../../store/agreements/agreementsSlice';\nimport { hideDocumentLibraryModal } from '../../../../store/policies/policiesSlice';\nimport {\n ExternalSignatoryForm,\n SignatoryTypeMode,\n} from '../../../ExternalSignatoryForm/ExternalSignatoryForm';\nimport { AgreementsCreateForm } from '../AddNewAgreementForm';\nimport {\n AgreementCreatePayloadAgreementSignatories,\n AgreementSignatoryModelTypeEnum,\n} from '../../../../swagger';\nimport { isValidEmailAddress } from '../../../../functions/isValidEmailAddress';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { AgreementsEditForm } from '../../EditAgreementForm/EditAgreementForm';\n\n// We reuse this method both in Add and Edit form\nexport const SignatoriesStepIsValid = (\n form: AgreementsCreateForm | AgreementsEditForm\n) => {\n type Fields = Array;\n const requiredIndividualFields: Fields = [\n 'email',\n 'firstName',\n 'lastName',\n 'address',\n ];\n const requiredCompanyFields: Fields = [\n 'email',\n 'firstName',\n 'lastName',\n 'companyAddress',\n 'companyName',\n ];\n\n const requiredFields =\n (form.signatory || {}).type ===\n AgreementSignatoryModelTypeEnum.ExternalIndividual\n ? requiredIndividualFields\n : requiredCompanyFields;\n return requiredFields.every(field => (form.signatory || {})[field]);\n};\n\nexport const SignatoriesStep: React.FC = () => {\n const baseCss = 'addNewAgreementForm';\n const form = useSelector(selectAgreementsCreateForm);\n const dispatch = useDispatch();\n\n const handleSubmit = () => {\n dispatch(hideDocumentLibraryModal());\n dispatch(toggleAddAgreementDrawer());\n dispatch(cleanupAgreementsCreateForm());\n };\n\n const handleChange = (\n signatory: AgreementCreatePayloadAgreementSignatories\n ) => {\n const formSignatory = { ...signatory };\n if (formSignatory.email && !isValidEmailAddress(formSignatory.email)) {\n formSignatory.email = '';\n }\n\n dispatch(\n updateAgreementsCreateFormField({\n signatory: formSignatory,\n })\n );\n };\n\n const agreementTemplates = useSelector(\n (state: ApplicationState) => state.agreements.agreementTemplates\n );\n const standardTemplate = agreementTemplates.find(\n template => template.id === form.standardTemplateId\n );\n\n const mode =\n standardTemplate.agreementType === 'employee_agreement'\n ? SignatoryTypeMode.employee\n : null;\n\n return (\n <>\n {mode != SignatoryTypeMode.employee && (\n \n Is the other party an individual or company?\n \n )}\n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectCurrentAgreement } from '../../../../selectors/selectCurrentAgreement';\nimport {\n closePdfPreview,\n openPdfPreview,\n setPdfPreviewUrl,\n} from '../../../../store/global/globalSlice';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { PdfOpenMode } from '../../../../types/pdfOpenMode';\nimport { PdfPreviewCard } from '../../../PdfPreviewCard/PdfPreviewCard';\nimport { DocumentType } from '../../../../constants/DocumentType';\nimport {\n AgreementModel,\n AgreementModelStatusEnum,\n VendorDocument,\n} from '../../../../swagger';\nimport {\n currentAgreementPdfRequestFailure,\n setRequestingAgreementPdf,\n} from '../../../../store/agreements/agreementsSlice';\nimport { getRequestWithRetry } from '../../../../functions/getRequestWithRetry';\nimport { fetchVendorDocumentDownload } from '../../../../store/vendors/vendorsThunks';\n\n// When RHS submitted, reload PDF;\n\nexport const pdfURL = (agreement: AgreementModel) => {\n return `/api/v1/agreements/${agreement.id}/preview`;\n};\n\nconst openPreview = (url: string, agreement: AgreementModel) =>\n openPdfPreview({\n mode: PdfOpenMode.Preview,\n documentType: DocumentType.Agreement,\n objectId: agreement.id,\n title: agreement.name,\n url,\n inline: true,\n });\n\n// If agreement draft use /preview API else /download\n\nconst useFetchFile = (agreement: AgreementModel) => {\n const dispatch = useDispatch();\n const fetchFile = () => {\n dispatch(setRequestingAgreementPdf(true));\n if (agreement.status !== AgreementModelStatusEnum.Draft) {\n dispatch(\n fetchVendorDocumentDownload({\n id: agreement.vendorDocumentId,\n\n successCallback: vendorDocumentDownload => {\n dispatch(openPreview(vendorDocumentDownload.document, agreement));\n dispatch(setRequestingAgreementPdf(false));\n },\n })\n );\n return;\n }\n getRequestWithRetry({\n url: pdfURL(agreement),\n retries: 5,\n isBinary: true,\n })\n .then((blob: Blob) => {\n const localURL = URL.createObjectURL(blob);\n dispatch(openPreview(localURL, agreement));\n })\n .catch(() => {\n dispatch(\n currentAgreementPdfRequestFailure('Cannot load agreement PDF')\n );\n dispatch(openPreview(pdfURL(agreement), agreement)); // Show default \"Failed load pdf\" react-pdf library warning\n })\n .finally(() => dispatch(setRequestingAgreementPdf(false)));\n };\n\n return fetchFile;\n};\n\nexport const usePreviewModeReload = () => {\n const openedDraftPdfPreview = useSelector(\n (state: ApplicationState) =>\n state.global.pdfPreviewInline && state.global.isPreviewingPdf\n );\n const agreement = useSelector(selectCurrentAgreement);\n const dispatch = useDispatch();\n const fetchFile = useFetchFile(agreement);\n const reloadPdf = () => {\n if (!openedDraftPdfPreview) return;\n dispatch(setPdfPreviewUrl(null));\n fetchFile();\n };\n\n return { reloadPdf };\n};\n\nexport const PreviewMode: React.FC = () => {\n const dispatch = useDispatch();\n const agreement = useSelector(selectCurrentAgreement);\n const mode = useSelector(\n (state: ApplicationState) => state.agreements.currentAgreementMode\n );\n\n const isSavingDataRequiredForPdf = useSelector(\n (state: ApplicationState) =>\n state.agreements.isPatchingAgreement ||\n state.agreements.isPatchingAgreementContent ||\n state.agreements.isPostingAgreementAnswer\n );\n\n const isRequestingAgreementPdf = useSelector(\n (state: ApplicationState) => state.agreements.isRequestingAgreementPdf\n );\n\n const fetchFile = useFetchFile(agreement);\n useEffect(() => {\n if (isSavingDataRequiredForPdf) return;\n fetchFile();\n return () => {\n dispatch(closePdfPreview());\n };\n }, [mode, isSavingDataRequiredForPdf]);\n\n return (\n \n );\n};\n","import { faCloudDownload } from '@fortawesome/pro-light-svg-icons/faCloudDownload';\nimport { faCommentEdit } from '@fortawesome/pro-light-svg-icons/faCommentEdit';\nimport { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\n\nimport { faArchive } from '@fortawesome/pro-light-svg-icons/faArchive';\nimport { faCalendar } from '@fortawesome/pro-light-svg-icons/faCalendar';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport { useDispatch } from 'react-redux';\nimport { hasFeature } from '../../../functions/access';\n\nimport {\n setCurrentAgreementId,\n toggleEditAgreementDrawer,\n updateAgreementsEditFormField,\n} from '../../../store/agreements/agreementsSlice';\nimport { archiveAgreement } from '../../../store/agreements/agreementsThunks';\nimport { fetchVendorDocumentDownload } from '../../../store/vendors/vendorsThunks';\nimport { AgreementModel, AgreementModelStatusEnum } from '../../../swagger';\nimport { AccessObject } from '../../../types/accessObject';\nimport { RowProps } from '../AgreementsList/AgreementsRow';\nimport { MeatballMenu } from '../../MeatballMenu/MeatballMenu';\nimport { AgreementEditFormStep } from '../EditAgreementForm/EditAgreementForm';\nimport { useParams } from 'react-router';\n\ninterface MeatballProps {\n agreement: RowProps['agreement'];\n handleDeleteClick: RowProps['handleDeleteClick'];\n}\nconst isDraft = (agreement: AgreementModel) =>\n agreement.status === AgreementModelStatusEnum.Draft;\nconst isCompleted = (agreement: AgreementModel) =>\n agreement.status === AgreementModelStatusEnum.Signed;\n\nexport const agreementsAccess = (agreement: AgreementModel) => {\n return {\n canEditOwner: hasFeature(AccessObject.manage_ownership, agreement?.access),\n canEditReviewDate: hasFeature(\n AccessObject.set_review_reminder,\n agreement?.access\n ),\n canShare: hasFeature(AccessObject.share, agreement?.access),\n canEditBranding: isDraft(agreement),\n canDelete: isDraft(agreement),\n canEditName: isDraft(agreement),\n canEditSignatories: isDraft(agreement),\n canArchive: isCompleted(agreement),\n canUploadSignatoryDocument:\n agreement.status === AgreementModelStatusEnum.AwaitingSignature,\n };\n};\n\nexport const AgreementMeatballMenu: React.FC = ({\n agreement,\n handleDeleteClick,\n}) => {\n const dispatch = useDispatch();\n const access = agreementsAccess(agreement);\n\n const showHSMenu = () => {\n dispatch(setCurrentAgreementId(agreement.id));\n dispatch(toggleEditAgreementDrawer());\n };\n\n const handleViewOrEditSignatories = () => {\n if (agreementsAccess(agreement).canEditSignatories) {\n dispatch(\n updateAgreementsEditFormField({\n step: AgreementEditFormStep.SignatoriesEdit,\n })\n );\n }\n showHSMenu();\n };\n const params = useParams() as { id?: string };\n const isAgreementShowPage = params.id;\n return (\n \n {access.canEditName && (\n \n \n Edit name\n \n )}\n {access.canEditOwner && (\n \n \n Edit owner\n \n )}\n\n \n \n Set review date\n \n {agreementsAccess(agreement).canEditBranding && (\n \n \n Edit branding\n \n )}\n {agreement.status !== 'rejected' && (\n <>\n \n \n {isDraft(agreement) ? 'Signatories' : 'View Signatories'}\n \n \n )}\n\n {agreementsAccess(agreement).canArchive && (\n \n dispatch(\n archiveAgreement({\n id: agreement.id,\n name: agreement.name,\n })\n )\n }\n >\n \n Archive\n \n )}\n\n {agreementsAccess(agreement).canDelete ? (\n <>\n \n {\n dispatch(() => handleDeleteClick(agreement.id));\n }}\n >\n \n Delete\n \n \n ) : (\n !isAgreementShowPage && (\n <>\n \n {\n dispatch(\n fetchVendorDocumentDownload({\n id: agreement.vendorDocumentId,\n successCallback: vendorDocumentDownload => {\n window.location.href = vendorDocumentDownload.document;\n },\n })\n );\n }}\n >\n \n Download\n \n \n )\n )}\n \n );\n};\n","import { push } from 'connected-react-router';\nimport React, { useEffect, useState } from 'react';\nimport Modal from 'react-bootstrap/esm/Modal';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { clearCurrentAgreementSignatories } from '../../../store/agreements/agreementsSlice';\nimport {\n fetchAgreementSignatoriesById,\n sendToReviewAgreement,\n} from '../../../store/agreements/agreementsThunks';\nimport { showGlobalToast } from '../../../store/global/globalSlice';\nimport {\n AgreementExtended,\n AgreementSignatoryModel,\n AgreementSignatoryModelStatusEnum,\n AgreementSignatoryModelTypeEnum,\n SharedVendorUserStatus,\n VendorUser,\n} from '../../../swagger';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport { AdoptechCheckbox } from '../../AdoptechCheckbox/AdoptechCheckbox';\nimport AdoptechModal from '../../AdoptechModal/AdoptechModal';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport { NoDataText } from '../../NoDataText/NoDataText';\nimport { agreementsPageRoute } from '../../Routes/Routes';\nimport { UserAvatar } from '../../UserAvatar/UserAvatar';\nimport './AgreementSendReviewModal.scss';\n\ninterface AgreementSendReviewModalProps {\n agreementId: AgreementExtended['id'];\n onCancel: () => void;\n}\n\nexport const useAgreementSignatories = () => {\n const isRequestingSignatories = useSelector(\n (state: ApplicationState) =>\n state.agreements.isRequestingCurrentAgreementSignatories\n );\n\n const internalSignatories = useSelector(\n (state: ApplicationState) =>\n state.agreements.currentAgreementSignatories?.filter(\n s => s.type === AgreementSignatoryModelTypeEnum.Internal\n ) || []\n );\n const externalSignatories = useSelector(\n (state: ApplicationState) =>\n state.agreements.currentAgreementSignatories?.filter(\n s => s.type !== AgreementSignatoryModelTypeEnum.Internal\n ) || []\n );\n\n return { internalSignatories, externalSignatories, isRequestingSignatories };\n};\n\nexport const signatoryUser = (signatory: AgreementSignatoryModel) => {\n if (signatory.type === AgreementSignatoryModelTypeEnum.Internal)\n return signatory.user;\n const { firstName, lastName, email } = signatory;\n const fullName = firstName ? `${firstName} ${lastName}`.trim() : email;\n const user: VendorUser = {\n ...signatory,\n fullName,\n status: SharedVendorUserStatus.Null,\n };\n return user;\n};\n\nexport const AgreementSendReviewModal: React.FC<\n AgreementSendReviewModalProps\n> = ({ agreementId, onCancel }) => {\n const baseCss = 'agreementSendReviewModal';\n const dispatch = useDispatch();\n const currentUser = useSelector(\n (state: ApplicationState) => state.user.userDetails\n );\n useEffect(() => {\n const onSuccess = (signatories: AgreementSignatoryModel[]) => {\n const getDefaultSelectedSignatoriesIds = signatories\n .filter(signatory => signatory.user?.email !== currentUser.email)\n .map(signatory => signatory.id);\n setSelectedSignatoriesIds(getDefaultSelectedSignatoriesIds);\n };\n dispatch(fetchAgreementSignatoriesById(agreementId, onSuccess));\n return () => {\n dispatch(clearCurrentAgreementSignatories());\n };\n }, [agreementId]);\n\n const { isRequestingSignatories, internalSignatories, externalSignatories } =\n useAgreementSignatories();\n\n const isSendingToReview = useSelector(\n (state: ApplicationState) => state.agreements.isSendingToReview\n );\n const [selectedSignatoriesIds, setSelectedSignatoriesIds] = useState<\n AgreementSignatoryModel['id'][]\n >([]);\n\n const signatoriesList = (signatories: AgreementSignatoryModel[]) =>\n signatories.map(signatory => {\n const { id } = signatory;\n return (\n
\n {\n const newSignatories = e.currentTarget.checked\n ? [...selectedSignatoriesIds, id]\n : selectedSignatoriesIds.filter(\n signatoryId => signatoryId !== id\n );\n setSelectedSignatoriesIds(newSignatories);\n }}\n id={id}\n />\n \n
\n );\n });\n\n const handleDone = () => {\n dispatch(\n sendToReviewAgreement({\n agreementId,\n signatoryIds: selectedSignatoriesIds,\n onSuccess: () => {\n onCancel();\n showGlobalToast('Your agreement has been sent for signing.');\n dispatch(push(agreementsPageRoute));\n },\n })\n );\n };\n\n return (\n \n Send for review\n \n {isRequestingSignatories && }\n {!isRequestingSignatories && (\n <>\n
\n Send an email with a link to the agreement.\n
\n
Counterpart
\n {externalSignatories.length === 0 && (\n \n )}\n {signatoriesList(externalSignatories)}\n
\n Internal signatories\n
\n {internalSignatories.length === 0 && (\n \n )}\n {signatoriesList(internalSignatories)}\n \n )}\n
\n \n {\n onCancel();\n }}\n >\n Cancel\n \n \n Send\n \n \n
\n );\n};\n","import { faCheckSquare } from '@fortawesome/pro-light-svg-icons/faCheckSquare';\nimport { faClock } from '@fortawesome/pro-light-svg-icons/faClock';\nimport { faExclamationCircle } from '@fortawesome/pro-light-svg-icons/faExclamationCircle';\nimport { faFileCheck } from '@fortawesome/pro-light-svg-icons/faFileCheck';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport moment from 'moment';\nimport React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { formatShortDate } from '../../../functions/formatShortDate';\nimport {\n getPdfDocumentPath,\n PdfPreviewEntityPaths,\n} from '../../../functions/routePathsHelpers';\nimport { AgreementSignatoryModelStatusEnum } from '../../../swagger';\nimport {\n AgreementModel,\n AgreementModelStatusEnum,\n} from '../../../swagger/models/AgreementModel';\nimport { PdfOpenMode } from '../../../types/pdfOpenMode';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport AdoptechOverflowLine from '../../AdoptechOverflowLine/AdoptechOverflowLine';\nimport { AgreementMeatballMenu } from '../AgreementMeatballMenu/AgreementMeatballMenu';\nimport { UserAvatar } from '../../UserAvatar/UserAvatar';\nimport { AgreementsMode } from './AgreementsList';\nimport { agreementShowPage } from '../../Routes/Routes';\nimport { AdoptechTooltip } from '../../AdoptechTooltip/AdoptechTooltip';\n\nexport interface RowProps {\n mode: AgreementsMode;\n handleDeleteClick: (id: AgreementModel['id']) => void;\n showStatusColumn: boolean;\n showReviewDateColumn: boolean;\n agreement: AgreementModel;\n baseCss: string;\n baseTableCss: string;\n}\n\nexport const AgreementsRow: React.FC = ({\n mode,\n agreement,\n baseCss,\n baseTableCss,\n handleDeleteClick,\n showReviewDateColumn,\n showStatusColumn,\n}) => {\n const dispatch = useDispatch();\n const handleRowClick = () => {\n dispatch(push(agreementShowPage.replace(':id', agreement.id)));\n return;\n };\n\n const isRejected = agreement.status === AgreementModelStatusEnum.Rejected;\n\n const isOverdue =\n agreement.reviewDate && moment(agreement.reviewDate).isBefore(new Date());\n\n return (\n handleRowClick()}\n className={\n baseTableCss +\n '--row ' +\n baseTableCss +\n '--slim' +\n (isRejected || isOverdue ? ' ' + baseTableCss + '--alert' : '')\n }\n >\n \n {`${agreement.name} ${agreement.version}`}\n \n \n {agreement?.externalSignatoriesNames[0] || ''}\n \n \n \n \n {mode === AgreementsMode.Draft && (\n
\n {agreement.shared ? (\n
\n \n
Shared
\n \n
\n ) : (\n ''\n )}\n
\n )}\n {mode === AgreementsMode.AwaitingSignature && (\n \n {agreement.signatoriesStats.signed}/{agreement.signatoriesStats.total}\n \n )}\n {showStatusColumn && mode === AgreementsMode.AwaitingSignature && (\n
\n {isRejected && (\n
\n \n Rejected\n
\n )}\n {agreement.signatoriesStats.signed > 0 && !agreement.toBeSigned && (\n
\n \n Signed\n
\n )}\n {agreement.toBeSigned && (\n {\n e.stopPropagation();\n dispatch(push(agreementShowPage.replace(':id', agreement.id)));\n }}\n variant={AdoptechButtonVariant.PrimaryTransparent}\n >\n Sign\n \n )}\n
\n )}\n {showReviewDateColumn &&\n (isOverdue ? (\n
\n \n Overdue\n
\n ) : (\n
{formatShortDate(agreement.reviewDate) || '-'}
\n ))}\n {showStatusColumn &&\n mode === AgreementsMode.Completed &&\n agreement.signatoriesStats.signed > 0 &&\n (agreement.agreementSignatories || []).some(\n signatory =>\n signatory.status ===\n AgreementSignatoryModelStatusEnum.NotRequired ||\n signatory.status === AgreementSignatoryModelStatusEnum.SignedOffline\n ) && (\n
\n \n {agreement.agreementSignatories.some(\n signatory =>\n signatory.status ===\n AgreementSignatoryModelStatusEnum.NotRequired\n )\n ? 'Signature not required'\n : 'Signed offline'}\n
\n )}\n {\n e.stopPropagation();\n }}\n >\n \n \n \n );\n};\n","import React from 'react';\nimport { SortableTableHeader } from '../../SortableTableHeader/SortableTableHeader';\nimport { AgreementModel } from '../../../swagger';\nimport './AgreementsList.scss';\nimport { Lozenge } from '../../Lozenge/Lozenge';\nimport { NoDataText } from '../../NoDataText/NoDataText';\nimport AdoptechGridTable from '../../AdoptechGridTable/AdoptechGridTable';\nimport { AgreementsRow } from './AgreementsRow';\nimport { useAgreementsList } from '../../../hooks/agreements/useAgreementsList';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport classNames from 'classnames';\nimport { showDocumentUploadModal } from '../../../store/vendors/vendorsSlice';\nimport { useDispatch } from 'react-redux';\nimport { useCanFeature } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport { agreementsStartRoute } from '../../Routes/Routes';\nimport { push } from 'connected-react-router';\nimport { faCloudArrowUp } from '@fortawesome/pro-light-svg-icons/faCloudArrowUp';\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus';\n\nexport enum AgreementsMode {\n Draft = 'draft',\n AwaitingSignature = 'awaiting_signature',\n Completed = 'completed',\n}\n\ninterface AgreementsListProps {\n mode: AgreementsMode;\n handleDeleteClick: (agreementId: AgreementModel['id']) => void;\n}\n\nexport const AgreementsList: React.FC = ({\n mode,\n handleDeleteClick,\n}) => {\n const baseCss = 'agreementsList';\n\n const { agreements, header, placeholderText, currentGrid } =\n useAgreementsList(mode);\n\n const showStatusColumn = [\n AgreementsMode.AwaitingSignature,\n AgreementsMode.Completed,\n ].includes(mode);\n const showReviewDateColumn = mode === AgreementsMode.Completed;\n const baseTableCss = 'adoptechGridTable';\n\n const isCompleted = mode === AgreementsMode.Completed;\n const dispatch = useDispatch();\n const isDraft = mode === AgreementsMode.Draft;\n const canManageAgreements = useCanFeature(AccessObject.agreements_manage);\n\n return (\n <>\n {isDraft && (\n
\n
\n {header}\n \n
\n
\n {canManageAgreements && (\n dispatch(push(agreementsStartRoute))}\n rounded\n variant={AdoptechButtonVariant.PrimaryOrange}\n icon={faPlus}\n iconSize=\"large\"\n >\n Start new\n \n )}\n
\n
\n )}\n
\n {!isDraft && (\n \n {header}\n \n {isCompleted && canManageAgreements && (\n dispatch(showDocumentUploadModal())}\n variant={AdoptechButtonVariant.Default}\n icon={faCloudArrowUp}\n extraClass=\"adoptechButton-small ml-5 adoptechButton--large\"\n iconAlignment=\"right\"\n >\n Upload\n \n )}\n
\n )}\n\n {agreements.length <= 0 ? (\n \n ) : (\n \n \n columnName=\"name\"\n grid={currentGrid}\n label=\"Name\"\n className={baseCss + '--name'}\n notInTable\n />\n \n columnName=\"externalSignatoriesNames\"\n grid={currentGrid}\n label=\"Counterparty\"\n notInTable\n />\n \n columnName=\"owner\"\n grid={currentGrid}\n label=\"Owner\"\n notInTable\n />\n {mode === AgreementsMode.AwaitingSignature && (\n \n columnName=\"signatoriesStats\"\n grid={currentGrid}\n label=\"Signatories\"\n notInTable\n />\n )}\n {showReviewDateColumn && (\n \n columnName=\"reviewDate\"\n grid={currentGrid}\n label=\"Review date\"\n notInTable\n />\n )}\n {showStatusColumn && (\n \n columnName=\"toBeSigned\"\n grid={currentGrid}\n label={\n mode === AgreementsMode.AwaitingSignature ? 'Status' : ''\n }\n notInTable\n />\n )}\n {isDraft ? (\n <>\n
\n
\n
Actions
\n \n ) : (\n
Actions
\n )}\n \n }\n >\n
\n {agreements.map((agreement: AgreementModel) => {\n return (\n \n );\n })}\n
\n \n )}\n \n \n );\n};\n","import { useSelector } from 'react-redux';\nimport { AgreementsMode } from '../../components/Agreements/AgreementsList/AgreementsList';\nimport { selectAgreements } from '../../selectors/selectAgreements';\nimport { Grid } from '../../types/grid';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\n\nexport const useAgreementsList = (mode: AgreementsMode) => {\n const placeholders = {\n [AgreementsMode.Draft]: 'Once started, Draft agreements will appear here',\n [AgreementsMode.AwaitingSignature]:\n 'Agreements sent for signature will appear here',\n [AgreementsMode.Completed]:\n 'Once signed, completed agreements will appear here',\n };\n\n const currentVendor = useSelector(selectCurrentVendor);\n\n const headers = {\n [AgreementsMode.Draft]: 'Drafts',\n [AgreementsMode.AwaitingSignature]: `Awaiting ${currentVendor?.name}'s signature`,\n [AgreementsMode.Completed]: 'Completed',\n };\n\n const grids = {\n [AgreementsMode.Draft]: Grid.DraftAgreements,\n [AgreementsMode.AwaitingSignature]: Grid.AwaitingSignatureAgreements,\n [AgreementsMode.Completed]: Grid.CompletedAgreements,\n };\n const currentGrid = grids[mode];\n const agreements = useSelector(selectAgreements(mode, currentGrid));\n\n const placeholderText = placeholders[mode];\n const header = headers[mode];\n return { agreements, header, placeholderText, currentGrid };\n};\n","import React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Modal } from 'react-bootstrap';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { AdoptechTextArea } from '../AdoptechTextArea/AdoptechTextArea';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './SendReminderModal.scss';\nimport { sendSignatoryNotification } from '../../store/agreements/agreementsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport { showGlobalToast } from '../../store/global/globalSlice';\n\ninterface SendReminderModalProps {\n signatoryData: { email?: string; id?: string };\n onSubmit: () => void;\n onCancel: () => void;\n}\n\nexport const SendReminderModal: React.FC = ({\n signatoryData = null,\n onSubmit = () => {},\n onCancel = () => {},\n}) => {\n const dispatch = useDispatch();\n const isDispatchingNotification = useSelector(\n (state: ApplicationState) => state.agreements.isDispatchingNotification\n );\n const [message, setMessage] = useState('');\n const submit = () => {\n dispatch(\n sendSignatoryNotification({\n signatoryId: signatoryData.id,\n body: { message },\n onSuccess: () => {\n dispatch(showGlobalToast('Notification has been sent successfully.'));\n onSubmit();\n },\n })\n );\n };\n\n return (\n \n Resend signatory notification\n \n
\n To: {signatoryData?.email}\n
\n
\n setMessage(e.currentTarget.value)}\n value={message}\n id=\"Add optional message\"\n />\n
\n
\n \n Cancel\n \n send\n \n \n
\n );\n};\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n cleanupAgreementsEditForm,\n toggleAgreementReminderModal,\n toggleEditAgreementDrawer,\n} from '../../../store/agreements/agreementsSlice';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { usePreviewModeReload } from '../AgreementEditor/PreviewMode/PreviewMode';\nimport { EditAgreementForm } from '../EditAgreementForm/EditAgreementForm';\nimport { GenericModal } from '../../GenericModal/GenericModal';\nimport { SendReminderModal } from '../../SendReminderModal/SendReminderModal';\n\ninterface ModalProps {\n showDeleteModal: boolean;\n setShowDeleteModal: any;\n handleConfirmDelete: any;\n isDeletingAgreement: boolean;\n setCurrentId: any;\n}\n\nexport const useCleanupAgreementRHS = () => {\n const { reloadPdf } = usePreviewModeReload();\n const dispatch = useDispatch();\n const onCloseHSMenu = () => {\n reloadPdf();\n dispatch(toggleEditAgreementDrawer());\n dispatch(cleanupAgreementsEditForm());\n };\n return { onCloseHSMenu };\n};\n\nexport const AgreementsModals: React.FC = ({\n showDeleteModal,\n setShowDeleteModal,\n handleConfirmDelete,\n isDeletingAgreement,\n}) => {\n const dispatch = useDispatch();\n\n const isShowingEditAgreementDrawer = useSelector(\n (state: ApplicationState) => state.agreements.isShowingEditAgreementDrawer\n );\n\n const { onCloseHSMenu } = useCleanupAgreementRHS();\n\n const reminderModalData = useSelector(\n (state: ApplicationState) => state.agreements.agreementSendReminderModalData\n );\n\n const cleanupReminderModal = () =>\n dispatch(toggleAgreementReminderModal({ isShowing: false }));\n\n const { isShowing: isShowingSendReminderModal, ...currentSignatoryData } =\n reminderModalData;\n\n return (\n <>\n {showDeleteModal && (\n setShowDeleteModal(false)}\n onClose={handleConfirmDelete}\n show={showDeleteModal}\n showCancelButton\n title=\"Confirm delete?\"\n isBusy={isDeletingAgreement}\n >\n
\n Click CONFIRM to permanently delete this version of the agreement.\n
\n \n )}\n {isShowingSendReminderModal && (\n cleanupReminderModal()}\n onCancel={() => cleanupReminderModal()}\n />\n )}\n {isShowingEditAgreementDrawer && (\n \n )}\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { capitaliseFirst } from '../../../../functions/capitaliseFirst';\nimport { selectCurrentAgreement } from '../../../../selectors/selectCurrentAgreement';\nimport { updateAgreementsEditFormField } from '../../../../store/agreements/agreementsSlice';\nimport {\n AgreementModel,\n AgreementSignatoriesIdPatchRequest,\n} from '../../../../swagger';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { AdoptechTextInput2 } from '../../../AdoptechTextInput2/AdoptechTextInput2';\nimport { agreementsAccess } from '../../AgreementMeatballMenu/AgreementMeatballMenu';\nimport { DropZone } from '../../../DropZone/DropZone';\nimport {\n AgreementsEditForm,\n AgreementSignatoryModelExtended,\n} from '../EditAgreementForm';\nimport '../EditAgreementForm.scss';\n\nexport const DocumentUploadStepIsValid = (\n agreement: AgreementModel,\n form: AgreementsEditForm\n) => {\n return (\n agreementsAccess(agreement).canUploadSignatoryDocument &&\n form.signatoryDocumentExist\n );\n};\n\nexport const DocumentUploadStep: React.FC = () => {\n const agreement = useSelector(selectCurrentAgreement);\n const baseCss = 'editAgreementForm';\n const [agreementName, setAgreementName] = useState(agreement.name);\n const form = useSelector(\n (state: ApplicationState) => state.agreements.agreementsEditForm\n );\n const dispatch = useDispatch();\n\n const onSignatoriesChange = (\n signatories: AgreementsEditForm['signatoriesWithDocs']\n ) => {\n dispatch(\n updateAgreementsEditFormField({ signatoriesWithDocs: signatories })\n );\n };\n const signatories = form.signatoriesWithDocs || [];\n\n const signatory = useSelector((state: ApplicationState) => {\n return state.agreements.currentAgreementSignatories.find(\n s => s.id === form.currentSignatoryId\n );\n });\n\n const [agreementFile, setAgreementFile] = useState();\n\n useEffect(() => {\n dispatch(updateAgreementsEditFormField({ signatoryDocumentExist: false }));\n }, []);\n const handleOnChange = (file: File) => {\n setAgreementFile(file);\n dispatch(updateAgreementsEditFormField({ signatoryDocumentExist: true }));\n const body: AgreementSignatoryModelExtended = {\n ...signatory,\n documentBinary: file,\n };\n\n const newSignatories = signatories.map(signatoryWithDoc => {\n if (signatoryWithDoc.id === body.id) return body;\n return signatoryWithDoc;\n });\n\n if (\n !newSignatories.find(signatoryWithDoc => signatoryWithDoc.id === body.id)\n ) {\n newSignatories.push(body);\n }\n\n onSignatoriesChange(newSignatories);\n };\n\n return (\n <>\n
Document details
\n
\n Please add the agreement name and an optional description.\n
\n\n
\n setAgreementName(e.currentTarget.value)}\n type=\"text\"\n label=\"Agreement name\"\n value={agreementName || ''}\n hasError={!agreementName}\n disabled={!agreementsAccess(agreement).canEditName}\n />\n
\n
Upload document
\n
\n \n
\n \n );\n};\n","import { faCircleXmark } from '@fortawesome/pro-light-svg-icons/faCircleXmark';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectCurrentAgreement } from '../../../../../selectors/selectCurrentAgreement';\nimport { selectCurrentVendor } from '../../../../../selectors/selectCurrentVendor';\nimport { fetchShares } from '../../../../../store/vendors/vendorsThunks';\nimport {\n ShareableType,\n SharesListData,\n SharesListDataAccessLevelEnum,\n} from '../../../../../swagger';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { LoadingSpinner } from '../../../../LoadingSpinner/LoadingSpinner';\nimport { UserAvatar } from '../../../../UserAvatar/UserAvatar';\nimport AdoptechOverflowLine from '../../../../AdoptechOverflowLine/AdoptechOverflowLine';\n\nexport const DocumentPermissionsSection: React.FC = () => {\n const baseCss = 'editAgreementForm';\n const agreement = useSelector(selectCurrentAgreement);\n const currentVendor = useSelector(selectCurrentVendor);\n const sharesList = useSelector(\n (state: ApplicationState) => state.vendors.sharesList?.data || []\n );\n const isFetchingSharesList = useSelector(\n (state: ApplicationState) => state.vendors.isFetchingSharesList\n );\n\n useEffect(() => {\n dispatch(\n fetchShares({\n id: currentVendor.id,\n shareableType: ShareableType.Agreement,\n shareableId: agreement.id,\n })\n );\n }, []);\n\n const dispatch = useDispatch();\n\n const accessLevelIcon = (\n share: SharesListData,\n level: SharesListDataAccessLevelEnum\n ) => {\n if (share.accessLevel === level) {\n return (\n \n );\n }\n const color =\n level === SharesListDataAccessLevelEnum.Contributor ? 'red' : 'grey';\n return (\n \n );\n };\n\n if (isFetchingSharesList) return ;\n\n return (\n <>\n
\n
Document permissions
\n
\n \n
Name
\n
Manager
\n
Contributor
\n
Viewer
\n \n {sharesList.map(share => {\n return (\n
\n \n \n \n \n
\n {accessLevelIcon(share, SharesListDataAccessLevelEnum.Manager)}\n
\n
\n {accessLevelIcon(\n share,\n SharesListDataAccessLevelEnum.Contributor\n )}\n
\n
\n {accessLevelIcon(share, SharesListDataAccessLevelEnum.Viewer)}\n
\n
\n \n );\n })}\n \n );\n};\n","import { ApplicationState } from '../types/applicationState';\n\nexport const selectAgreementsEditForm = (state: ApplicationState) =>\n state.agreements.agreementsEditForm;\n","import classNames from 'classnames';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { capitaliseFirst } from '../../../../../functions/capitaliseFirst';\nimport { getDate } from '../../../../../functions/getDate';\nimport { useOwnerOptions } from '../../../../../hooks/useOwnerOptions';\nimport { selectAgreementMode } from '../../../../../selectors/selectAgreements';\nimport { selectAgreementsEditForm } from '../../../../../selectors/selectAgreementsEditForm';\nimport { selectCurrentAgreement } from '../../../../../selectors/selectCurrentAgreement';\nimport { updateAgreementsEditFormField } from '../../../../../store/agreements/agreementsSlice';\nimport { SelectionOption } from '../../../../../types/selectionOption';\nimport { AdoptechDatePicker2 } from '../../../../AdoptechDatePicker2/AdoptechDatePicker2';\nimport { AdoptechReactSelect2 } from '../../../../AdoptechReacSelect2/AdoptechReactSelect2';\nimport { AdoptechTextInput2 } from '../../../../AdoptechTextInput2/AdoptechTextInput2';\nimport { agreementsAccess } from '../../../AgreementMeatballMenu/AgreementMeatballMenu';\nimport { AgreementsEditForm } from '../../EditAgreementForm';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\n\nexport const OverviewSection: React.FC = () => {\n const form = useSelector(selectAgreementsEditForm);\n const dispatch = useDispatch();\n\n const currentAgreement = useSelector(selectCurrentAgreement);\n const { name, reviewDate, owner } = currentAgreement;\n const baseCss = 'editAgreementForm';\n const mode = selectAgreementMode(currentAgreement);\n\n const setName = (value: AgreementsEditForm['name']) =>\n dispatch(updateAgreementsEditFormField({ name: value }));\n\n const setOwner = (value: AgreementsEditForm['owner']) =>\n dispatch(updateAgreementsEditFormField({ owner: value }));\n\n const setReviewDate = (value: AgreementsEditForm['reviewDate']) =>\n dispatch(updateAgreementsEditFormField({ reviewDate: value }));\n\n const { users, ownerOptions } = useOwnerOptions();\n const loaded = form.overviewSectionLoaded;\n\n const setLoaded = () => {\n dispatch(updateAgreementsEditFormField({ overviewSectionLoaded: true }));\n };\n\n useEffect(() => {\n if (!loaded) {\n dispatch(updateAgreementsEditFormField({ name, owner, reviewDate }));\n setLoaded();\n }\n }, []);\n\n if (!loaded) return null;\n return (\n <>\n
\n Overview\n
\n {capitaliseFirst(mode)}\n
\n
\n\n
\n {\n setName(e.currentTarget.value);\n }}\n type=\"text\"\n label=\"Agreement name\"\n value={form.name || ''}\n hasError={!form.name}\n disabled={!agreementsAccess(currentAgreement).canEditName}\n icon={faPen}\n />\n
\n\n
\n {\n const selectedOwner = users.find(user => user.id === option.value);\n setOwner(selectedOwner);\n }}\n value={ownerOptions.find(option => option.value === form.owner?.id)}\n placeholder=\"Select owner\"\n label=\"Owner\"\n showUserAvatar\n isDisabled={!agreementsAccess(currentAgreement).canEditOwner}\n />\n {\n setReviewDate(value.toISOString());\n }}\n placeHolderText=\"Select date\"\n disabled={!agreementsAccess(currentAgreement).canEditReviewDate}\n >\n
\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { push } from 'connected-react-router';\nimport { selectAgreementMode } from '../../../../../selectors/selectAgreements';\nimport { selectCurrentAgreement } from '../../../../../selectors/selectCurrentAgreement';\nimport { AdoptechRadioButtonsGroup } from '../../../../AdoptechRadioButtonsGroup/AdoptechRadioButtonsGroup';\nimport { updateAgreementsEditFormField } from '../../../../../store/agreements/agreementsSlice';\nimport { AgreementsMode } from '../../../AgreementsList/AgreementsList';\nimport { fetchAgreementEditFormFields } from '../../../../../store/agreements/agreementsThunks';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { selectAgreementsEditForm } from '../../../../../selectors/selectAgreementsEditForm';\nimport { fetchCompanyLogo } from '../../../../../store/vendors/vendorsThunks';\nimport { selectCurrentVendor } from '../../../../../selectors/selectCurrentVendor';\nimport { selectCurrentCompany } from '../../../../../selectors/selectCurrentCompany';\nimport { faCircle } from '@fortawesome/free-solid-svg-icons/faCircle';\nimport { faBan } from '@fortawesome/pro-light-svg-icons/faBan';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { useCleanupAgreementRHS } from '../../../AgreementsModals/AgreementsModals';\nimport { selectVendorDetails } from '../../../../../selectors/selectVendorDetails';\nimport { agreementsAccess } from '../../../AgreementMeatballMenu/AgreementMeatballMenu';\n\nexport const BrandingSection: React.FC = () => {\n const dispatch = useDispatch();\n\n const currentAgreement = useSelector(selectCurrentAgreement);\n const baseCss = 'editAgreementForm';\n const mode = selectAgreementMode(currentAgreement);\n const form = useSelector(selectAgreementsEditForm);\n\n const currentVendor = useSelector(selectCurrentVendor);\n const vendorId = currentVendor?.id;\n\n useEffect(() => {\n dispatch(fetchCompanyLogo({ vendorId }));\n }, [vendorId]);\n\n const logo = useSelector(\n (state: ApplicationState) => state.vendors.companyDetailsState.logo\n );\n const vendorDetails = useSelector(selectVendorDetails);\n\n const colour = useSelector(selectCurrentCompany)?.brandingColor;\n\n useEffect(() => {\n if (mode == AgreementsMode.Draft) {\n dispatch(fetchAgreementEditFormFields(currentAgreement.id));\n }\n }, [currentAgreement.id]);\n\n const { onCloseHSMenu } = useCleanupAgreementRHS();\n\n if (!agreementsAccess(currentAgreement).canEditBranding) return <>;\n if (!form.isLoadedExtendedFields) return <>;\n\n const setUseLogo = (value: string) =>\n dispatch(\n updateAgreementsEditFormField({\n useCompanyLogo: value == 'useLogo',\n })\n );\n\n const setUseColor = (value: string) =>\n dispatch(\n updateAgreementsEditFormField({\n useBrandingColor: value == 'useColor',\n })\n );\n\n const handleAnchor = (event: React.MouseEvent) => {\n event.preventDefault();\n const url = event.currentTarget.getAttribute('href');\n onCloseHSMenu();\n dispatch(push(url));\n };\n\n return (\n <>\n
\n Company branding\n
\n\n
\n
\n Logo  \n {logo?.filename ? (\n \n ) : (\n '(no logo uploaded)'\n )}\n
\n \n
\n Colour  \n {colour ? (\n \n ) : (\n \n )}\n
\n \n \n To select a colour and logo please go to the Company profile  \n \n here\n \n .\n \n
\n \n );\n};\n","import { faCloudArrowUp } from '@fortawesome/pro-light-svg-icons/faCloudArrowUp';\nimport { faCheckSquare } from '@fortawesome/pro-light-svg-icons/faCheckSquare';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { faSend } from '@fortawesome/pro-light-svg-icons/faSend';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport React, { useRef, useState } from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectCurrentAgreement } from '../../../../../selectors/selectCurrentAgreement';\nimport { updateAgreementsEditFormField } from '../../../../../store/agreements/agreementsSlice';\nimport {\n AgreementModelStatusEnum,\n AgreementSignatoriesIdPatchRequest,\n AgreementSignatoryModel,\n AgreementSignatoryModelStatusEnum,\n AgreementSignatoryModelTypeEnum,\n} from '../../../../../swagger';\nimport { agreementsAccess } from '../../../AgreementMeatballMenu/AgreementMeatballMenu';\nimport { MeatballMenu } from '../../../../MeatballMenu/MeatballMenu';\nimport {\n AgreementEditFormStep,\n AgreementSignatoryModelExtended,\n} from '../../EditAgreementForm';\nimport { faCloudDownload } from '@fortawesome/pro-light-svg-icons/faCloudDownload';\nimport classNames from 'classnames';\nimport { faSquareXmark } from '@fortawesome/pro-light-svg-icons/faSquareXmark';\nimport { ApplicationState } from '../../../../../types/applicationState';\n\ninterface SignatoryMeatballMenuProps {\n onSendReminderClick(signatory: AgreementSignatoryModel): void;\n onSignedOfflineClick?: (signatory: AgreementSignatoryModel) => void;\n onSignatureNotRequiredClick?: (signatory: AgreementSignatoryModel) => void;\n onUploadClick?: (signatory: AgreementSignatoryModel) => void;\n onViewClick?: () => void;\n signatory: AgreementSignatoryModel;\n}\nexport const SignatoriesMeatballMenu: React.FC = ({\n onSendReminderClick,\n onSignedOfflineClick,\n onSignatureNotRequiredClick,\n onUploadClick,\n onViewClick,\n signatory,\n}) => {\n const isExternal =\n signatory.type !== AgreementSignatoryModelTypeEnum['Internal'];\n const agreement = useSelector(selectCurrentAgreement);\n\n const isDraft = agreement.status === AgreementModelStatusEnum.Draft;\n\n const showReminderMenuItem =\n isExternal &&\n !isDraft &&\n signatory.status === AgreementSignatoryModelStatusEnum.AwaitingSignature;\n\n const showSignedOfflineMenuItem =\n isExternal &&\n agreementsAccess(agreement).canUploadSignatoryDocument &&\n signatory.status === AgreementSignatoryModelStatusEnum.AwaitingSignature;\n\n const showUploadDocumentMenuItem =\n isExternal &&\n signatory.status === AgreementSignatoryModelStatusEnum.SignedOffline &&\n !signatory.document;\n\n const showMarkAsNotRequiredMenuItem =\n isExternal &&\n agreementsAccess(agreement).canUploadSignatoryDocument &&\n signatory.status === AgreementSignatoryModelStatusEnum.AwaitingSignature;\n\n const form = useSelector(\n (state: ApplicationState) => state.agreements.agreementsEditForm\n );\n const binaryDocument = (form.signatoriesWithDocs || []).find(\n (model: AgreementSignatoryModelExtended) => model.id === signatory.id\n )?.documentBinary;\n\n const document = binaryDocument || signatory.document;\n const documentUploaded =\n isExternal &&\n signatory.status === AgreementSignatoryModelStatusEnum.SignedOffline &&\n document;\n\n const showSignatoriesMenuItem =\n agreementsAccess(agreement).canEditSignatories;\n\n const dispatch = useDispatch();\n const menuItemClasses = classNames({\n 'meatballMenu-item': true,\n disabled: !documentUploaded,\n });\n\n const downloadButtonRef = useRef(null);\n\n if (\n !isExternal ||\n signatory.status === AgreementSignatoryModelStatusEnum.NotRequired\n )\n return null;\n\n return (\n \n {showReminderMenuItem && (\n onSendReminderClick(signatory)}\n >\n \n Send reminder\n \n )}\n {showSignatoriesMenuItem && (\n \n dispatch(\n updateAgreementsEditFormField({\n step: AgreementEditFormStep.SignatoriesEdit,\n currentSignatoryId: signatory.id,\n })\n )\n }\n >\n \n Edit signatory\n \n )}\n {showReminderMenuItem && (\n \n dispatch(\n updateAgreementsEditFormField({\n step: AgreementEditFormStep.SignatoriesEdit,\n currentSignatoryId: signatory.id,\n })\n )\n }\n >\n \n View signatory\n \n )}\n {showSignedOfflineMenuItem && (\n {\n if (onSignedOfflineClick) onSignedOfflineClick(signatory);\n }}\n >\n \n Mark as Signed offline\n \n )}\n {showMarkAsNotRequiredMenuItem && (\n {\n if (onSignatureNotRequiredClick)\n onSignatureNotRequiredClick(signatory);\n }}\n >\n \n Mark as Signature not required\n \n )}\n {showUploadDocumentMenuItem && (\n {\n if (onUploadClick) onUploadClick(signatory);\n }}\n >\n \n Upload agreement signed offline\n \n )}\n {!isDraft && (\n <>\n {\n if (onViewClick) onViewClick();\n }}\n >\n \n View agreement signed offline\n \n \n {\n e.preventDefault();\n downloadButtonRef.current.click();\n }}\n >\n \n Download agreement signed offline\n \n \n )}\n \n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport {\n AgreementSignatoryModel,\n AgreementSignatoryModelStatusEnum,\n} from '../../../../../swagger/models/AgreementSignatoryModel';\nimport { SignatoriesMeatballMenu } from './SignatoriesMeatballMenu';\nimport { capitaliseFirst } from '../../../../../functions/capitaliseFirst';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { updateSignatory } from '../../../../../store/agreements/agreementsSlice';\nimport '../../EditAgreementForm.scss';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../AdoptechButton/AdoptechButton';\nimport { faCloudArrowUp } from '@fortawesome/pro-light-svg-icons/faCloudArrowUp';\nimport { PdfOpenMode } from '../../../../../types/pdfOpenMode';\nimport { DocumentType } from '../../../../../constants/DocumentType';\nimport { openPdfPreview } from '../../../../../store/global/globalSlice';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { UserAvatar } from '../../../../UserAvatar/UserAvatar';\nimport AdoptechOverflowLine from '../../../../AdoptechOverflowLine/AdoptechOverflowLine';\nimport { signatoryUser } from '../../../AgreementSendReviewModal/AgreementSendReviewModal';\n\ninterface ExternalSignatoriesProps {\n externalSignatories: AgreementSignatoryModel[];\n onSendReminderClick(model: AgreementSignatoryModel): void;\n onUploadClick(model: AgreementSignatoryModel): void;\n isDraft: boolean;\n}\n\nexport const ExternalSignatories: React.FC = ({\n externalSignatories,\n onSendReminderClick,\n onUploadClick,\n isDraft,\n}) => {\n const baseCss = 'editAgreementForm';\n const dispatch = useDispatch();\n\n const form = useSelector(\n (state: ApplicationState) => state.agreements.agreementsEditForm\n );\n\n const signatories = form.signatoriesWithDocs || [];\n\n if (!externalSignatories) {\n return null;\n }\n\n return (\n <>\n {externalSignatories.map(signatory => {\n const showUploadButton =\n signatory.status ===\n AgreementSignatoryModelStatusEnum.SignedOffline &&\n !signatory.document;\n\n const user = signatoryUser(signatory);\n\n return (\n
\n \n \n \n \n
\n {isDraft\n ? ''\n : signatory.status ===\n AgreementSignatoryModelStatusEnum.NotRequired\n ? 'Marked as Signature not required'\n : capitaliseFirst(signatory.status)}\n
\n {showUploadButton && (\n
\n
\n onUploadClick(signatory)}\n variant={AdoptechButtonVariant.PrimaryTransparent}\n >\n Upload\n \n
\n
\n )}\n
\n \n onSendReminderClick(model)\n }\n onSignedOfflineClick={() =>\n dispatch(\n updateSignatory({\n ...signatory,\n status: AgreementSignatoryModelStatusEnum.SignedOffline,\n })\n )\n }\n onSignatureNotRequiredClick={() =>\n dispatch(\n updateSignatory({\n ...signatory,\n status: AgreementSignatoryModelStatusEnum.NotRequired,\n })\n )\n }\n onUploadClick={() => onUploadClick(signatory)}\n onViewClick={() => {\n const uploadedButNotSavedDocument: Blob = signatories.find(\n model => model.id === signatory.id\n )?.documentBinary;\n\n const savedDocument = signatory.document;\n const url = uploadedButNotSavedDocument\n ? URL.createObjectURL(uploadedButNotSavedDocument)\n : savedDocument;\n\n dispatch(\n openPdfPreview({\n mode: PdfOpenMode.Preview,\n documentType: DocumentType.AgreementSignatory,\n title: `Signed Offline Document for ${form.name}`,\n documentableId: signatory.id,\n navigateUrlOnClose: null,\n url,\n })\n );\n }}\n />\n
\n
\n \n );\n })}\n \n );\n};\n","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { faEnvelope } from '@fortawesome/pro-light-svg-icons/faEnvelope';\n\nimport React from 'react';\nimport classNames from 'classnames';\nimport {\n AgreementSignatoryModel,\n AgreementSignatoryModelStatusEnum,\n} from '../../../../../swagger/models/AgreementSignatoryModel';\nimport { SignatoriesMeatballMenu } from './SignatoriesMeatballMenu';\nimport { UserAvatar } from '../../../../UserAvatar/UserAvatar';\nimport { formatShortDate } from '../../../../../functions/formatShortDate';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../AdoptechButton/AdoptechButton';\nimport '../../EditAgreementForm.scss';\n\ninterface InternalSignatoriesProps {\n internalSignatories: AgreementSignatoryModel[];\n onSendReminderClick(model: AgreementSignatoryModel): void;\n isDraft: boolean;\n}\n\nexport const InternalSignatories: React.FC = ({\n internalSignatories,\n onSendReminderClick,\n isDraft,\n}) => {\n const baseCss = 'editAgreementForm';\n\n if (!internalSignatories) {\n return null;\n }\n\n const atLeastOneSignatorySigned = internalSignatories.some(\n item => item.status === AgreementSignatoryModelStatusEnum.Signed\n );\n\n return (\n <>\n {internalSignatories.map(signatory => {\n return (\n
\n \n
\n \n
\n
\n {!isDraft &&\n signatory.status ===\n AgreementSignatoryModelStatusEnum.Signed ? (\n <>\n \n {formatShortDate(signatory.updatedAt)}\n \n ) : (\n !atLeastOneSignatorySigned &&\n !isDraft && (\n onSendReminderClick(signatory)}\n variant={AdoptechButtonVariant.Default}\n >\n Send reminder\n \n )\n )}\n
\n
\n \n onSendReminderClick(model)\n }\n />\n
\n
\n \n );\n })}\n \n );\n};\n","import React, { useEffect } from 'react';\nimport classNames from 'classnames';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectAgreementsEditForm } from '../../../../../selectors/selectAgreementsEditForm';\nimport { selectCurrentAgreement } from '../../../../../selectors/selectCurrentAgreement';\nimport { fetchAgreementSignatoriesById } from '../../../../../store/agreements/agreementsThunks';\nimport { AgreementSignatoryModel } from '../../../../../swagger/models/AgreementSignatoryModel';\nimport { LoadingSpinner } from '../../../../LoadingSpinner/LoadingSpinner';\nimport {\n AgreementReminderModal,\n toggleAgreementReminderModal,\n updateAgreementsEditFormField,\n} from '../../../../../store/agreements/agreementsSlice';\nimport { ExternalSignatories } from './ExternalSignatories';\nimport { InternalSignatories } from './InternalSignatories';\nimport { AgreementModelStatusEnum } from '../../../../../swagger';\nimport { AgreementEditFormStep } from '../../EditAgreementForm';\nimport { useAgreementSignatories } from '../../../AgreementSendReviewModal/AgreementSendReviewModal';\n\nexport const SignatoriesSection: React.FC = () => {\n const baseCss = 'editAgreementForm';\n const form = useSelector(selectAgreementsEditForm);\n const dispatch = useDispatch();\n const currentAgreement = useSelector(selectCurrentAgreement);\n const isDraft = currentAgreement.status === AgreementModelStatusEnum.Draft;\n useEffect(() => {\n if (currentAgreement.id && !form.signatoriesSectionLoaded) {\n dispatch(\n updateAgreementsEditFormField({ signatoriesSectionLoaded: true })\n );\n dispatch(fetchAgreementSignatoriesById(currentAgreement.id));\n }\n }, []);\n\n const { isRequestingSignatories, internalSignatories, externalSignatories } =\n useAgreementSignatories();\n\n const showReminderModal = (modalProps: AgreementReminderModal) => {\n dispatch(toggleAgreementReminderModal(modalProps));\n };\n\n const onSendReminderClick = (signatory: AgreementSignatoryModel) => {\n showReminderModal({\n email: signatory.email,\n id: signatory.id,\n isShowing: true,\n });\n };\n\n const onShowUpload = (signatory: AgreementSignatoryModel) => {\n dispatch(\n updateAgreementsEditFormField({\n step: AgreementEditFormStep.DocumentUpload,\n currentSignatoryId: signatory.id,\n document: signatory.document,\n })\n );\n };\n\n const signatoryTables = [\n {\n ['Type']: 'Internal',\n ['UiElement']: (\n \n ),\n },\n {\n ['Type']: 'External',\n ['UiElement']: (\n \n ),\n },\n ];\n\n if (isRequestingSignatories) {\n return ;\n }\n\n return (\n <>\n
Signatories
\n {signatoryTables.map(table => {\n return (\n <>\n \n {table.Type}\n \n \n
Name
\n
\n {isDraft ? '' : 'Status'}\n
\n
\n
\n \n {table.UiElement}\n \n );\n })}\n \n );\n};\n","import React from 'react';\nimport { AgreementsEditForm } from '../EditAgreementForm';\nimport { DocumentPermissionsSection } from './DocumentPermissionsSection/DocumentPermissionsSection';\nimport { OverviewSection } from './OverviewSection/OverviewSection';\nimport { BrandingSection } from './BrandingSection/BrandingSection';\nimport { SignatoriesSection } from './SignatoriesSection/SignatoriesSection';\n\nexport const PrimaryStepIsValid = (form: AgreementsEditForm) => {\n return form.name?.length > 0;\n};\n\nexport const PrimaryStep: React.FC = () => {\n return (\n <>\n \n \n \n \n \n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { isValidEmailAddress } from '../../../../functions/isValidEmailAddress';\nimport { selectAgreementsEditForm } from '../../../../selectors/selectAgreementsEditForm';\nimport { selectCurrentAgreement } from '../../../../selectors/selectCurrentAgreement';\nimport { updateAgreementsEditFormField } from '../../../../store/agreements/agreementsSlice';\nimport { fetchAgreementSignatoriesById } from '../../../../store/agreements/agreementsThunks';\nimport {\n AgreementCreatePayloadAgreementSignatories,\n AgreementModel,\n AgreementModelStatusEnum,\n AgreementSignatoryModelTypeEnum,\n} from '../../../../swagger';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport {\n ExternalSignatoryForm,\n SignatoryTypeMode,\n} from '../../../ExternalSignatoryForm/ExternalSignatoryForm';\nimport { LoadingSpinner } from '../../../LoadingSpinner/LoadingSpinner';\nimport { SignatoriesStepIsValid } from '../../AddNewAgreementForm/SignatoriesStep/SignatoriesStep';\nimport {\n AgreementEditFormStep,\n AgreementsEditForm,\n} from '../EditAgreementForm';\n\nexport const SignatoryStepIsValid = (\n agreement: AgreementModel,\n form: AgreementsEditForm\n) => {\n const readOnly = agreement.status !== AgreementModelStatusEnum.Draft;\n return (\n readOnly ||\n form.step !== AgreementEditFormStep.SignatoriesEdit ||\n SignatoriesStepIsValid(form)\n );\n};\n\nexport const SignatoriesEditForm: React.FC = () => {\n const dispatch = useDispatch();\n const form = useSelector(selectAgreementsEditForm);\n const agreement = useSelector(selectCurrentAgreement);\n\n const handleSubmit = () => {\n dispatch(fetchAgreementSignatoriesById(agreement.id));\n dispatch(\n updateAgreementsEditFormField({\n step: AgreementEditFormStep.Primary,\n })\n );\n };\n\n const readOnly = agreement.status !== AgreementModelStatusEnum.Draft;\n\n const signatories = useSelector(\n (state: ApplicationState) =>\n state.agreements.currentAgreementSignatories || []\n );\n\n useEffect(() => {\n if (agreement.id) {\n dispatch(fetchAgreementSignatoriesById(agreement.id));\n }\n }, [agreement.id]);\n\n const signatoryFromSignatoriesMeatballMenu = signatories.find(\n model => model.id === form.currentSignatoryId\n ); // if click on the specific external signatory. ( SignatoriesMeatballMenu.tsx )\n\n const signatoryFromAgreementMeatballMenu = signatories.find(\n model => model.type !== AgreementSignatoryModelTypeEnum.Internal\n ); // if click on agreement row ( AgreementMeatballMenu.tsx )\n\n const signatory =\n signatoryFromSignatoriesMeatballMenu || signatoryFromAgreementMeatballMenu;\n const isRequestingSignatories = useSelector(\n (state: ApplicationState) =>\n state.agreements.isRequestingCurrentAgreementSignatories\n );\n\n if (!signatory) return null;\n\n if (isRequestingSignatories) {\n return ;\n }\n\n const handleChange = (\n changedSignatory: AgreementCreatePayloadAgreementSignatories\n ) => {\n const formSignatory = { ...changedSignatory };\n if (formSignatory.email && !isValidEmailAddress(formSignatory.email)) {\n formSignatory.email = '';\n }\n\n dispatch(\n updateAgreementsEditFormField({\n signatory: formSignatory,\n })\n );\n };\n\n const mode =\n agreement.agreementType === 'employee_agreement'\n ? SignatoryTypeMode.employee\n : null;\n\n return (\n <>\n \n \n );\n};\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectCurrentAgreement } from '../../../selectors/selectCurrentAgreement';\nimport {\n patchAgreement,\n updateExternalAgreementSignatory,\n} from '../../../store/agreements/agreementsThunks';\nimport { AgreementSignatoriesIdPatchRequest } from '../../../swagger';\nimport { updateAgreementsEditFormField } from '../../../store/agreements/agreementsSlice';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport { DocumentUploadStepIsValid } from './DocumentUploadStep/DocumentUploadStep';\nimport {\n AgreementEditFormStep,\n AgreementSignatoryModelExtended,\n} from './EditAgreementForm';\nimport { PrimaryStepIsValid } from './PrimaryStep/PrimaryStep';\nimport { SignatoryStepIsValid } from './SignatoriesEditStep/SignatoriesEditStep';\nimport { capitaliseFirst } from '../../../functions/capitaliseFirst';\nimport { handleSubmitClass } from '../../ExternalSignatoryForm/ExternalSignatoryForm';\n\ninterface FooterProps {\n onClose: () => void;\n upload?: boolean;\n}\n\nexport const Footer: React.FC = ({ onClose, upload }) => {\n const baseCss = 'editAgreementForm';\n const dispatch = useDispatch();\n const form = useSelector(\n (state: ApplicationState) => state.agreements.agreementsEditForm\n );\n\n const signatories = form.signatoriesWithDocs || [];\n\n const updatedSignatoryIds = useSelector(\n (state: ApplicationState) =>\n state.agreements.currentAgreementSignatoriesUpdated\n );\n\n const signatoriesToUpdate = useSelector((state: ApplicationState) =>\n state.agreements.currentAgreementSignatories?.filter(cas =>\n updatedSignatoryIds.includes(cas.id)\n )\n );\n\n const currentId = useSelector(\n (state: ApplicationState) => state.agreements.currentAgreementId\n );\n\n const isPrimary = form.step === AgreementEditFormStep.Primary;\n const currentAgreement = useSelector(selectCurrentAgreement);\n const patchSignatory = (\n signatoryUpdatePayload: AgreementSignatoriesIdPatchRequest\n ) => {\n dispatch(\n updateExternalAgreementSignatory({\n body: signatoryUpdatePayload,\n onSuccess: () => {},\n onError: () => {},\n })\n );\n };\n\n const convertToUpdatePayload = (\n signatory: AgreementSignatoryModelExtended\n ): AgreementSignatoriesIdPatchRequest => {\n const { id, documentBinary, ...signatoryFields } = signatory;\n\n const payload = Object.fromEntries(\n Object.entries(signatoryFields).map(([k, v]) => [\n `agreementSignatory${capitaliseFirst(k)}`,\n v,\n ])\n ) as unknown as AgreementSignatoriesIdPatchRequest;\n\n const body: AgreementSignatoriesIdPatchRequest = {\n ...payload,\n agreementSignatoryDocument: documentBinary,\n id,\n };\n\n return body;\n };\n\n const handleSubmit = () => {\n if (form.step == AgreementEditFormStep.SignatoriesEdit) {\n (\n document.getElementsByClassName(\n handleSubmitClass\n )[0] as HTMLElement | null\n )?.click();\n }\n\n if (upload) {\n dispatch(\n updateAgreementsEditFormField({\n step: AgreementEditFormStep.Primary,\n })\n );\n } else {\n const toBeUpdated = signatoriesToUpdate.filter(\n stu => !signatories.find(swd => swd.id === stu.id)\n );\n toBeUpdated.forEach(stbu =>\n patchSignatory({\n ...stbu,\n agreementSignatoryStatus: stbu.status,\n })\n );\n\n signatories.forEach(\n (extendedSignatory: AgreementSignatoryModelExtended) =>\n patchSignatory(convertToUpdatePayload(extendedSignatory))\n );\n }\n\n if (!isPrimary && upload) return;\n\n dispatch(\n patchAgreement({\n agreementId: currentAgreement.id,\n reviewDate: form.reviewDate,\n name: form.name,\n ownerId: form.owner?.id,\n useBrandingColor: form.useBrandingColor,\n useCompanyLogo: form.useCompanyLogo,\n onSuccess: onClose,\n })\n );\n };\n\n const handleCancel = () => {\n onClose && onClose();\n };\n\n const isStepValid = () => {\n if (isPrimary) {\n return PrimaryStepIsValid(form);\n }\n\n if (form.step === AgreementEditFormStep.SignatoriesEdit) {\n return SignatoryStepIsValid(currentAgreement, form);\n }\n\n if (form.step === AgreementEditFormStep.DocumentUpload) {\n return DocumentUploadStepIsValid(currentAgreement, form);\n }\n\n return false;\n };\n const { isCreatingOrUpdatingSignatory, isPatchingAgreement } = useSelector(\n (state: ApplicationState) => state.agreements\n );\n const isBusy = isCreatingOrUpdatingSignatory || isPatchingAgreement;\n\n return (\n <>\n {(isPrimary || upload) && (\n \n Cancel\n \n )}\n
\n \n {upload ? 'UPLOAD' : 'DONE'}\n \n
\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Footer } from './Footer';\nimport {\n agreementConfirmText,\n AgreementFormProps,\n} from '../AddNewAgreementForm/AddNewAgreementForm';\nimport AdoptechHS from '../../AdoptechHS/AdoptechHS';\nimport {\n AgreementExtended,\n AgreementModel,\n AgreementModelStatusEnum,\n AgreementSignatoriesIdPatchRequest,\n AgreementSignatoryModel,\n} from '../../../swagger';\nimport { selectAgreementsEditForm } from '../../../selectors/selectAgreementsEditForm';\nimport { updateAgreementsEditFormField } from '../../../store/agreements/agreementsSlice';\nimport { PrimaryStep } from './PrimaryStep/PrimaryStep';\nimport './EditAgreementForm.scss';\nimport { SignatoriesEditForm } from './SignatoriesEditStep/SignatoriesEditStep';\nimport { selectCurrentAgreement } from '../../../selectors/selectCurrentAgreement';\nimport { DocumentUploadStep } from './DocumentUploadStep/DocumentUploadStep';\n\ninterface OverviewSection {\n name: AgreementModel['name'];\n owner: AgreementModel['owner'];\n reviewDate: AgreementModel['reviewDate'];\n overviewSectionLoaded: boolean;\n}\n\ninterface BrandingSection {\n useBrandingColor: AgreementExtended['useBrandingColor'];\n useCompanyLogo: AgreementExtended['useCompanyLogo'];\n}\n\nexport interface AgreementSignatoryModelExtended\n extends AgreementSignatoryModel {\n documentBinary: File;\n}\n\ninterface SignatoriesSection {\n currentSignatoryId: AgreementSignatoryModel['id'];\n // TODO refactoring: use form.signatories\n // instead of form.signatoriesWithDocs ( for upload ) and state.agreements.currentAgreementSignatories ( for display the list )\n signatoriesWithDocs: AgreementSignatoryModelExtended[];\n signatoriesSectionLoaded: boolean;\n signatory: AgreementSignatoryModel;\n}\n\ninterface DocumentUploadSection {\n signatoryDocumentExist: boolean;\n}\n\nexport enum AgreementEditFormStep {\n Primary = 'primary',\n SignatoriesEdit = 'signatories-edit',\n DocumentUpload = 'document-upload',\n}\n\ntype sections = OverviewSection &\n BrandingSection &\n SignatoriesSection &\n DocumentUploadSection;\n\nexport interface AgreementsEditForm extends sections {\n step: AgreementEditFormStep;\n isLoadedExtendedFields: boolean;\n}\n\nexport type AgreementEditFormFieldPayload = Partial;\n\nexport const EditAgreementForm: React.FC = ({\n show,\n onClose,\n}) => {\n const form = useSelector(selectAgreementsEditForm);\n const footer = (\n \n );\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (!form.step) {\n dispatch(\n updateAgreementsEditFormField({\n step: AgreementEditFormStep.Primary,\n })\n );\n }\n }, []);\n\n const currentAgreement = useSelector(selectCurrentAgreement);\n const fillHeader = () => {\n if (!form.name)\n dispatch(updateAgreementsEditFormField({ name: currentAgreement.name }));\n };\n\n // We need name in the header for all steps\n useEffect(() => {\n fillHeader();\n }, []);\n\n if (!form.step) {\n return null;\n }\n\n const steps = {\n [AgreementEditFormStep.SignatoriesEdit]: ,\n [AgreementEditFormStep.Primary]: ,\n [AgreementEditFormStep.DocumentUpload]: ,\n };\n\n const subHeaders = {\n [AgreementEditFormStep.SignatoriesEdit]:\n currentAgreement.status === AgreementModelStatusEnum.Draft\n ? 'Edit signatory'\n : 'View signatory',\n [AgreementEditFormStep.Primary]: null as string,\n [AgreementEditFormStep.DocumentUpload]:\n 'Upload the agreement signed offline',\n };\n\n const onBackClick = () => {\n dispatch(\n updateAgreementsEditFormField({ step: AgreementEditFormStep.Primary })\n );\n };\n\n const subHeaderTitle = subHeaders[form.step];\n\n return (\n \n {steps[form.step]}\n \n );\n};\n","import { faCircle } from '@fortawesome/free-solid-svg-icons/faCircle';\nimport { faBan } from '@fortawesome/pro-light-svg-icons/faBan';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React from 'react';\nimport './ColourPalette.scss';\nimport classNames from 'classnames';\n\ninterface ColourPaletteProps {\n onSelect: (colour: string) => void;\n colourList?: string[];\n gap: '4px' | '10px';\n}\n\nexport const defaultColoursList = [\n '#9400D3',\n '#4B0082',\n '#0000FF',\n '#00FF00',\n '#FFFF00',\n '#FF7F00',\n '#FF0000',\n '#7B3F00',\n '#FF33F9',\n '#ffa727',\n '#3880fa',\n '#01436f',\n '#222222',\n];\n\nexport const ColourPalette: React.FC = ({\n onSelect,\n colourList,\n gap,\n}) => {\n const colours = colourList ? colourList : defaultColoursList;\n const baseCss = 'colourPalette';\n return (\n
\n {colours?.map(c => {\n return (\n onSelect(c)}\n >\n \n
\n );\n })}\n
onSelect('')}>\n \n
\n \n );\n};\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './ConfirmModal.scss';\n\ninterface ConfirmModalProps {\n close: () => void;\n confirm: () => void;\n headerText: string;\n description: string;\n show: boolean;\n}\n\n// TODO: Replace with ConfirmationModal\nexport const ConfirmModal: React.FC = ({\n close = () => {},\n confirm = () => {},\n headerText = 'Confirm',\n description = 'Are you sure you wish to proceed',\n children,\n show,\n}) => {\n const baseCss = 'confirmModal';\n\n return (\n {}} show={show}>\n {headerText}\n \n
\n {description && (\n
{description}
\n )}\n {children}\n
\n
\n \n {\n close();\n }}\n >\n Cancel\n \n \n confirm\n \n \n
\n );\n};\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { CommandConfirmation } from '../../types/CommandConfirmation';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './ConfirmationModal.scss';\n\nconst baseCss = 'confirmationModal';\n\nexport const ConfirmationModal: React.FC<{\n command?: CommandConfirmation;\n // If click outside modal or Cancel button => onCancel will be fired with confirmed false\n // if click save inside modal => onCancel also will be fired with confirmed true\n onCancel(confirmed: boolean): void;\n}> = ({ command, onCancel }) => {\n const { showCancelButton = true } = command || {};\n let description = `Are you sure you would like to proceed`;\n\n if (command?.description) {\n description = command.description;\n } else if (command?.action) {\n description = `Are you sure you would like to ${command.action.toLowerCase()}`;\n if (command?.subject)\n description += ` this ${command.subject.type.toLowerCase()}`;\n description += '?';\n }\n\n const hasSubject = !!command?.subject;\n\n const title =\n command?.title ||\n (command?.subject && `${command.action} ${command.subject.type}`) ||\n 'Confirmation';\n\n const variant = command\n ? command.buttonVariant\n : AdoptechButtonVariant.Primary;\n\n return (\n onCancel(false)}\n show={!!command}\n >\n {title}\n \n
\n
{description}
\n {command?.subject && (\n \n )}\n
\n
\n \n onCancel(false)}\n extraClass={showCancelButton ? '' : 'd-none'}\n >\n {command?.cancelButtonText || 'Cancel'}\n \n {\n command.onConfirm && command.onConfirm();\n onCancel(true);\n }}\n variant={variant}\n >\n {command?.buttonText || command?.action || 'Confirm'}\n \n \n \n );\n};\n","import React from 'react';\nimport './DashboardTile.scss';\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faAngleRight } from '@fortawesome/pro-regular-svg-icons/faAngleRight';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { Interweave } from 'interweave';\n\nexport interface SingleMetricWithLabel {\n label: string;\n value: string;\n}\n\nexport type TileMetrics = string | SingleMetricWithLabel[];\n\nenum DashboardTileStyle {\n SingleMetric,\n SingleMetricWithLabel,\n DualMetric,\n SingleText,\n}\n\ninterface DashboardTileProps {\n action?: () => void;\n icon: IconDefinition;\n isBusy?: boolean;\n title: string;\n footerText?: string;\n className?: string;\n}\n\ninterface DashboardMetricsProps extends DashboardTileProps {\n metrics: TileMetrics;\n}\n\ninterface DashboardTextProps extends DashboardTileProps {\n text: string;\n}\n\ntype TileProps = DashboardMetricsProps | DashboardTextProps;\n\nconst Card: React.FC = props => {\n if ('text' in props) {\n return (\n
\n
\n \n
\n
\n );\n }\n\n const style: DashboardTileStyle = Array.isArray(props.metrics)\n ? props.metrics.length > 1\n ? DashboardTileStyle.DualMetric\n : DashboardTileStyle.SingleMetricWithLabel\n : DashboardTileStyle.SingleMetric;\n\n const metricsWithLabels = props.metrics as SingleMetricWithLabel[];\n\n if (!metricsWithLabels || metricsWithLabels?.length === 0) return null;\n\n switch (style) {\n case DashboardTileStyle.DualMetric:\n return (\n
\n
\n
\n
{metricsWithLabels[0].label}
\n
{metricsWithLabels[0].value}
\n
\n
\n
{metricsWithLabels[1].label}
\n
{metricsWithLabels[1].value}
\n
\n
\n
\n );\n case DashboardTileStyle.SingleMetric: {\n return (\n
\n
{metricsWithLabels}
\n
\n );\n }\n case DashboardTileStyle.SingleMetricWithLabel:\n return (\n
\n
\n
\n {metricsWithLabels[0].label}\n
\n
\n {metricsWithLabels[0].value}\n
\n
\n
\n );\n }\n};\n\nexport const DashboardTile: React.FC = props => {\n return (\n
\n
\n
\n
\n \n
\n
\n
{props.title}
\n
\n {!props.isBusy && }\n {!props.isBusy && props.action && (\n props.action()}\n >\n
\n {props.footerText || 'See details'}\n
\n
\n \n
\n \n )}\n {props.isBusy && }\n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchVendorDocumentDownload } from '../../store/vendors/vendorsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AdoptechRadioButton } from '../AdoptechRadioButton/AdoptechRadioButton';\nimport './DownloadDocumentModal.scss';\n\nenum DownloadOptions {\n Document = 'Document',\n Audit = 'Audit',\n All = 'All',\n}\n\ninterface DownloadDocumentModalProps {\n onClose: () => void;\n show: boolean;\n vendorDocumentId: string;\n}\n\nexport const DownloadDocumentModal: React.FC<\n DownloadDocumentModalProps\n> = props => {\n const dispatch = useDispatch();\n const [downloadOption, setDownloadOption] = useState();\n\n const vendorDocumentDownload = useSelector(\n (state: ApplicationState) =>\n state.vendors.documentState.vendorDocumentDownload\n );\n\n useEffect(() => {\n setDownloadOption(null);\n\n if (props.show && props.vendorDocumentId) {\n dispatch(fetchVendorDocumentDownload({ id: props.vendorDocumentId }));\n }\n }, [props.show]);\n\n if (!props.vendorDocumentId) {\n return null;\n }\n\n return (\n \n Download\n \n
\n Please select which items to download:\n
\n
\n setDownloadOption(value)}\n value={DownloadOptions.Document}\n />\n setDownloadOption(value)}\n value={DownloadOptions.Audit}\n />\n setDownloadOption(value)}\n value={DownloadOptions.All}\n />\n
\n
\n \n Cancel\n {\n switch (downloadOption) {\n case DownloadOptions.Document:\n window.location.href = vendorDocumentDownload.document;\n break;\n case DownloadOptions.Audit:\n window.location.href = `/api/v1/vendor_documents/${props.vendorDocumentId}/summary`;\n break;\n case DownloadOptions.All:\n window.location.href = vendorDocumentDownload.document;\n setTimeout(() => {\n window.location.href = `/api/v1/vendor_documents/${props.vendorDocumentId}/summary`;\n }, 1000);\n break;\n }\n props.onClose();\n }}\n variant={AdoptechButtonVariant.Primary}\n >\n EXPORT\n \n \n \n );\n};\n","import { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { faCloudUpload } from '@fortawesome/pro-light-svg-icons/faCloudUpload';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport { filesize } from 'filesize';\nimport { Interweave } from 'interweave';\nimport React, { useRef, useState, useEffect } from 'react';\nimport './DropZone.scss';\nimport { faFile } from '@fortawesome/pro-light-svg-icons/faFile';\nimport { faTrashAlt } from '@fortawesome/pro-solid-svg-icons/faTrashAlt';\n\ntype DropSingleFile = {\n multiple?: false;\n onChange: (file: File) => void;\n};\n\ntype DropMultipleFiles = {\n multiple?: true;\n onChange: (files: File[]) => void;\n};\ntype DropZoneProps = {\n accept?: string;\n additionalDescription?: string; // only displayed if file is not uploaded\n fileDescription?: string; // always displayed\n icon?: IconDefinition;\n placeholderText?: string;\n placeholderFileListText?: string;\n showPlaceholderText?: boolean;\n showFileName?: boolean;\n dottedBorder?: boolean;\n smallHeight?: boolean;\n} & (DropMultipleFiles | DropSingleFile);\n\nexport const DropZone: React.FC = ({\n showPlaceholderText = true,\n showFileName = true,\n ...props\n}) => {\n const [dragCounter, setDragCounter] = useState(0);\n const [fileState, setFiles] = useState([]);\n const files = fileState;\n const inputRef = useRef();\n\n type DragEvent = React.DragEvent;\n const dragOver = (e: DragEvent) => e.preventDefault();\n const dragEnter = (e: DragEvent) => {\n e.preventDefault();\n setDragCounter(c => c + 1);\n };\n const dragLeave = (e: DragEvent) => {\n e.preventDefault();\n setDragCounter(c => c - 1);\n };\n\n const verifyFile = (fileToVerify: File) => {\n if (!props.accept) return true;\n const allowedTypes = props.accept.split(',').map(x => x.replace(' ', ''));\n const parts = fileToVerify.name.split('.');\n\n return (\n props.accept !== '' &&\n allowedTypes\n .map(s => s.toLowerCase())\n .includes('.' + parts[parts.length - 1].toLowerCase())\n );\n };\n\n const handlePaste = (e: ClipboardEvent) => {\n e.preventDefault();\n\n if (e.clipboardData && e.clipboardData.files.length > 0) {\n const pasteFiles = Array.from(e.clipboardData.files);\n if (pasteFiles.length > 0) {\n handleFileChanges(pasteFiles);\n }\n }\n };\n\n useEffect(() => {\n document.addEventListener('paste', handlePaste);\n return () => {\n document.removeEventListener('paste', handlePaste);\n };\n }, []);\n\n const handleFiles = (filesArray: FileList) => {\n const validFiles = Array.from(filesArray).filter(verifyFile);\n handleFileChanges(validFiles);\n };\n\n const handleInputChange = (e: React.ChangeEvent): void => {\n if (e.currentTarget.files) {\n handleFiles(e.currentTarget.files);\n }\n };\n\n const handleFileDrop = (e: DragEvent) => {\n e.preventDefault();\n setDragCounter(0);\n if (e.dataTransfer?.files) {\n handleFiles(e.dataTransfer.files);\n }\n };\n\n const onChangeCall = (arr: File[]) =>\n props.multiple\n ? props.onChange(arr)\n : (props.onChange as DropSingleFile['onChange'])(arr[0]);\n\n const handleFileChanges = (newFiles: File[]) => {\n setFiles((prevFiles: File[]) => {\n const arr = props.multiple ? prevFiles.concat(newFiles) : newFiles;\n onChangeCall(arr);\n return arr;\n });\n };\n\n const dropZoneHitAreaClasses = classNames('dropZone--hitArea', {\n 'dropZone--hitArea-dragging': dragCounter > 0,\n 'dropZone--hitArea-dotted': props.dottedBorder,\n 'dropZone--hitArea-smallHeight': props.smallHeight,\n });\n\n const baseCss = 'dropZone';\n\n const filesBaseCss = 'dropZoneFiles';\n\n const isMac = window.navigator.userAgent.includes('Mac');\n const modifierKey = isMac ? '⌘' : 'Ctrl';\n const hintText = `Drag and drop file${props.multiple ? 's' : ''} or click here to upload from computer.`;\n\n const handleRemoveAttachment = (e: React.MouseEvent, file: File) => {\n e.preventDefault();\n setFiles((prevFiles: File[]) => {\n const arr = prevFiles.filter(f => f !== file);\n onChangeCall(arr);\n return arr;\n });\n };\n\n return (\n <>\n
\n
\n {`Press ${modifierKey} + V to quickly paste files.`}\n
\n inputRef.current.click()}\n onDragOver={dragOver}\n data-testid=\"dropzone\"\n onDragEnter={dragEnter}\n onDragLeave={dragLeave}\n onDrop={handleFileDrop}\n >\n {!props.multiple && files.length > 0 ? (\n <>\n {showFileName && (\n <>\n {files.map(fileObject => {\n const isImage =\n !!fileObject && fileObject.type.startsWith('image/');\n return (\n
\n {isImage ? (\n \n ) : (\n \n )}\n
\n {fileObject.name}\n
\n
\n {filesize(fileObject.size)}\n
\n
\n );\n })}\n \n )}\n
\n {props.fileDescription}\n
\n \n ) : (\n <>\n \n
\n {showPlaceholderText && (\n
\n \n
\n )}\n {props.additionalDescription && (\n
\n {props.additionalDescription}\n
\n )}\n\n
\n {props.fileDescription}\n
\n
\n \n )}\n \n
\n \n
\n {props.multiple && (\n <>\n
\n {props.placeholderFileListText}\n
\n\n {files\n .sort((a, b) => a.name.localeCompare(b.name))\n .map(fileObject => {\n const isImage =\n !!fileObject && fileObject.type.startsWith('image/');\n return (\n
\n
\n {fileObject.name}\n {isImage && (\n {\n e.preventDefault();\n e.stopPropagation();\n const newTab = window.open();\n newTab.location = URL.createObjectURL(fileObject);\n }}\n className=\"dropZoneFiles--preview\"\n />\n )}\n handleRemoveAttachment(e, fileObject)}\n />\n
\n
\n );\n })}\n \n )}\n
\n \n );\n};\n\nDropZone.defaultProps = {\n accept: '',\n};\n","import React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './EditActionModal.scss';\nimport { VendorActionModel, VendorEventEventType } from '../../swagger';\nimport { AdoptechTextInput2 } from '../AdoptechTextInput2/AdoptechTextInput2';\nimport { AdoptechTextArea2 } from '../AdoptechTextArea2/AdoptechTextArea2';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { AdoptechDatePicker2 } from '../AdoptechDatePicker2/AdoptechDatePicker2';\nimport { AdoptechReactSelect2 } from '../AdoptechReacSelect2/AdoptechReactSelect2';\nimport moment from 'moment';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { useOwnerOptions } from '../../hooks/useOwnerOptions';\nimport CalendarAttachments from '../../features/calendar/EditEventModal/CalendarAttachments/CalendarAttachments';\nimport { useAppDispatch } from '../../hooks/useAppDispatch';\nimport { fetchAction } from '../../features/calendar/store/calendarThunks';\nimport { ActionFormType } from '../../features/calendar/CalendarPage/CalendarPageModals';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../types/applicationState';\n\ninterface Props {\n init?:\n | ActionFormType\n | { actionType: ActionFormType['actionType'] }\n | { id: VendorActionModel['id'] };\n close: () => void;\n confirm: ({\n name,\n owner,\n description,\n dueDate,\n completed,\n actionType,\n }: ActionFormType) => void;\n show: boolean;\n disabledFields?: string[];\n onDelete?: (id: VendorActionModel['id']) => void;\n}\n\nconst baseCss = 'editActionModal';\nexport const EditActionModal: React.FC = ({\n init = {},\n confirm = () => {},\n onDelete = () => {},\n disabledFields = [],\n close,\n show,\n}) => {\n const { users, ownerOptions: userOptions } = useOwnerOptions({\n includingGuest: true,\n });\n const [model, setModel] = useState(init as ActionFormType);\n\n const dispatch = useAppDispatch();\n const { createActionStatus, isUpdatingCalendarItem } = useSelector(\n (state: ApplicationState) => state.calendar\n );\n const fetchActionAsync = async (id: string) => {\n const action = await dispatch(fetchAction(id)).unwrap();\n\n setModel(action);\n };\n\n useEffect(() => {\n model.id && fetchActionAsync(model.id);\n }, [model.id]);\n\n const deadline = model.dueDate ? new Date(model.dueDate) : null;\n\n const dataMissing =\n !model.name || !model.owner || !model.dueDate || !model.actionType;\n\n const modalTitle = model.id ? 'Edit Action' : 'Create Action';\n\n const actionName = model.id ? 'Save' : 'Create';\n\n const actionTypes = [\n ['PESTEL', VendorEventEventType.PestelReview],\n ['Risk register', VendorEventEventType.RiskRegisterReview],\n ['Legal register', VendorEventEventType.LegalRegisterReview],\n ['Vendor register', VendorEventEventType.VendorRegisterReview],\n ['Security Meeting', VendorEventEventType.SecurityMeeting],\n ['Internal Audit', VendorEventEventType.InternalAudit],\n ['External Audit', VendorEventEventType.ExternalAudit],\n ['Other', VendorEventEventType.Other],\n ];\n\n if (\n (init as VendorActionModel).actionType ===\n VendorEventEventType.ControlCheckReview\n ) {\n actionTypes.push([\n 'Control check',\n VendorEventEventType.ControlCheckReview,\n ]);\n }\n const typeOptions = actionTypes.map(item => {\n return {\n label: item[0],\n value: item[1],\n };\n });\n\n return (\n \n \n
{modalTitle}
\n {model.id && (\n \n {model.completed ? 'Completed' : 'Pending'}\n \n )}\n
\n \n
\n
\n
\n \n setModel({ ...model, name: e.currentTarget.value })\n }\n hasError={!model.name}\n icon={faPen}\n />\n
\n
\n
\n
\n \n setModel({ ...model, description: e.currentTarget.value })\n }\n icon={faPen}\n />\n
\n
\n
\n
\n \n setModel({\n ...model,\n actionType: option.value as VendorEventEventType,\n })\n }\n value={typeOptions.filter(\n option => option.value === model.actionType\n )}\n placeholder=\"Please select\"\n />\n
\n
\n {\n setModel({\n ...model,\n owner: users.find(user => user.id === e.value),\n });\n }}\n value={userOptions.find(\n option => option.value == model.owner?.id\n )}\n />\n
\n
\n
\n
\n {\n const endOfDay = moment(d).endOf('day');\n const endOfDayToDateTime = endOfDay.toJSON();\n\n setModel({\n ...model,\n dueDate: endOfDayToDateTime,\n });\n }}\n />\n
\n
\n
\n \n
\n
\n \n {model.id ? (\n
\n {\n const data = { ...model, completed: !model.completed };\n confirm(data);\n }}\n >\n {model.completed ? 'Mark as pending' : 'Mark as completed'}\n \n\n onDelete(model.id)}\n >\n Delete\n \n
\n ) : (\n {\n close();\n }}\n >\n Cancel\n \n )}\n confirm(model)}\n busy={createActionStatus == 'loading' || isUpdatingCalendarItem}\n variant={AdoptechButtonVariant.Primary}\n >\n {actionName}\n \n
\n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport PhoneInput from 'react-phone-number-input';\nimport { UserDetails } from '../../swagger';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport 'react-phone-number-input/style.css';\nimport './EditProfileFields.scss';\n\ninterface EditProfileFieldsProps {\n onChange: (userDetails: UserDetails) => void;\n userDetails: UserDetails;\n inDrawer?: boolean;\n formValid?: boolean;\n formTouched?: boolean;\n disabledFields?: string[];\n}\n\nexport const EditProfileFields: React.FC = props => {\n const [userDetails, setUserDetails] = useState({\n email: '',\n firstName: '',\n lastName: '',\n mobile: '',\n phone: '',\n });\n\n useEffect(() => {\n if (props.userDetails) {\n setUserDetails(props.userDetails);\n }\n }, [props.userDetails]);\n\n const disabledField = (prop: string) => props.disabledFields?.includes(prop);\n return (\n
\n
\n
\n {\n const updatedUserDetails: UserDetails = {\n ...userDetails,\n firstName: e.currentTarget.value,\n };\n setUserDetails(updatedUserDetails);\n props.onChange(updatedUserDetails);\n }}\n placeholder=\"First name\"\n type=\"text\"\n disabled={disabledField('firstName')}\n value={userDetails.firstName || ''}\n />\n
\n
\n {\n const updatedUserDetails: UserDetails = {\n ...userDetails,\n lastName: e.currentTarget.value,\n };\n setUserDetails(updatedUserDetails);\n props.onChange(updatedUserDetails);\n }}\n placeholder=\"Last name\"\n type=\"text\"\n disabled={disabledField('lastName')}\n value={userDetails.lastName || ''}\n />\n
\n
\n
\n
\n {\n const updatedUserDetails: UserDetails = {\n ...userDetails,\n email: e.currentTarget.value,\n };\n setUserDetails(updatedUserDetails);\n props.onChange(updatedUserDetails);\n }}\n hasError={props.formTouched && !props.formValid}\n placeholder=\"Email address*\"\n type=\"email\"\n disabled={disabledField('email')}\n value={userDetails.email || ''}\n />\n
\n
\n {!props.inDrawer && (\n
\n
\n
\n {\n const updatedUserDetails: UserDetails = {\n ...userDetails,\n phone: phone ? phone : '',\n };\n setUserDetails(updatedUserDetails);\n props.onChange(updatedUserDetails);\n }}\n placeholder=\"Phone number\"\n value={userDetails.phone || ''}\n />\n
\n
\n
\n
\n {\n const updatedUserDetails: UserDetails = {\n ...userDetails,\n mobile: mobile ? mobile : '',\n };\n setUserDetails(updatedUserDetails);\n props.onChange(updatedUserDetails);\n }}\n placeholder=\"Mobile number\"\n value={userDetails.mobile || ''}\n />\n
\n
\n
\n )}\n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Toast } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../types/applicationState';\nimport './ErrorToast.scss';\nimport { clearErrorMessage } from '../../store/global/globalSlice';\n\nexport const ErrorToast: React.FC = () => {\n const [show, setShow] = useState(false);\n\n const errorMessage = useSelector(\n (state: ApplicationState) => state.global.errorMessage\n );\n\n useEffect(() => {\n if (errorMessage) {\n setShow(true);\n }\n }, [errorMessage]);\n\n const dispatch = useDispatch();\n\n return (\n
\n {\n dispatch(clearErrorMessage());\n setShow(false);\n }}\n show={show}\n >\n \n
Adoptech Portal Error
\n
\n \n
{errorMessage}
\n
\n \n
\n );\n};\n","import { Interweave } from 'interweave';\nimport React, { useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './ExitConfirmationModal.scss';\n\ninterface ExitConfirmationModalProps {\n onCancel(): void;\n onConfirm(): void;\n submitButtonText?: string;\n title?: string;\n text?: string;\n submitButtonVariant?: AdoptechButtonVariant;\n}\n\nexport const ExitConfirmationModal: React.FC = ({\n onCancel,\n onConfirm,\n submitButtonText,\n submitButtonVariant,\n title,\n text,\n}) => {\n const content =\n text ||\n 'Are you sure you wish to close this window? Your changes will not be saved. To save changes click CANCEL to return to Edit profile . Select Close to exit without saving.';\n\n const [submitting, setSubmitting] = useState(false);\n return (\n \n {}} show>\n {title || 'Close window'}\n \n \n \n \n \n CANCEL\n \n {\n setSubmitting(true);\n onConfirm();\n }}\n uppercase\n busy={submitting}\n variant={submitButtonVariant || AdoptechButtonVariant.Primary}\n >\n {submitButtonText || 'Close'}\n \n \n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { push } from 'connected-react-router';\nimport { isValidEmailAddress } from '../../functions/isValidEmailAddress';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport {\n createAgreement,\n createExternalAgreementSignatory,\n updateExternalAgreementSignatory,\n} from '../../store/agreements/agreementsThunks';\nimport { fetchUserDetailsByEmail } from '../../store/user/userThunks';\nimport {\n AgreementSignatoryModel,\n UserDetails,\n AgreementCreatePayloadAgreementSignatories,\n AgreementExtended,\n AgreementSignatoryModelTypeEnum,\n AgreementSignatoriesIdPatchRequest,\n} from '../../swagger';\nimport './ExternalSignatoryForm.scss';\nimport { showGlobalToast } from '../../store/global/globalSlice';\nimport { termsModel } from '../Agreements/AddNewAgreementForm/TermsStep/TermsStep';\nimport { AdoptechRadioButtonsGroup } from '../AdoptechRadioButtonsGroup/AdoptechRadioButtonsGroup';\nimport { AdoptechTextInput2 } from '../AdoptechTextInput2/AdoptechTextInput2';\nimport { capitaliseFirst } from '../../functions/capitaliseFirst';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { agreementShowPage } from '../Routes/Routes';\nimport { useAdoptechDebounce } from '../../hooks/useAdoptechDebounce';\n\nexport enum SignatoryTypeMode {\n employee,\n}\ninterface ExternalSignatoryFormProps {\n agreementId?: string;\n signatory?: AgreementSignatoryModel | null;\n standardTemplateId?: string;\n templateId?: termsModel['id'];\n onSubmit?(): void;\n onCancel?(): void;\n name: string;\n onSubmitError?(): void;\n onChange?(signatory: AgreementCreatePayloadAgreementSignatories): void;\n readonly?: boolean;\n mode?: SignatoryTypeMode; // if employee -> show only individual fields else can be company/invididual\n}\n\nconst EXTERNAL_SIGNATORY_COMPANY_MODEL: AgreementCreatePayloadAgreementSignatories =\n {\n type: AgreementSignatoryModelTypeEnum.ExternalCompany,\n firstName: '',\n lastName: '',\n email: '',\n companyName: '',\n companyAddress: '',\n companyNumber: undefined,\n };\nconst EXTERNAL_SIGNATORY_INDIVIDUAL_MODEL: AgreementCreatePayloadAgreementSignatories =\n {\n type: AgreementSignatoryModelTypeEnum.ExternalIndividual,\n firstName: '',\n lastName: '',\n email: '',\n address: '',\n };\n\nexport const handleSubmitClass = 'handleSubmit';\n\nexport const ExternalSignatoryForm: React.FC = ({\n agreementId,\n signatory,\n standardTemplateId,\n templateId,\n onSubmit = () => {},\n onSubmitError = () => {},\n name,\n readonly,\n onChange = () => {},\n mode,\n}) => {\n const reduceSignatory = (externalSignatory: AgreementSignatoryModel) => {\n return Object.keys(getInitialSignatoryState(signatoryType)).reduce(\n (\n acc: AgreementCreatePayloadAgreementSignatories,\n val: keyof AgreementCreatePayloadAgreementSignatories\n ) => {\n if (val === 'type') {\n acc[val] = signatoryType;\n } else {\n acc[val] = externalSignatory[val];\n }\n\n return acc;\n },\n {}\n );\n };\n const getInitialSignatoryState = (type: string) => {\n switch (type) {\n case AgreementSignatoryModelTypeEnum.ExternalCompany:\n return EXTERNAL_SIGNATORY_COMPANY_MODEL;\n break;\n case AgreementSignatoryModelTypeEnum.ExternalIndividual:\n return EXTERNAL_SIGNATORY_INDIVIDUAL_MODEL;\n break;\n default:\n return {};\n }\n };\n const dispatch = useDispatch();\n const vendorId = useSelector(selectCurrentVendor)?.id;\n const [signatoryType, setSignatoryType] =\n useState(signatory?.type);\n const [isEmailInvalid, setIsEmailInvalid] = useState(false);\n const [currentSignatory, setCurrentSignatory] =\n useState(\n signatory\n ? reduceSignatory(signatory)\n : getInitialSignatoryState(signatoryType)\n );\n\n const optionalFields = ['companyNumber'];\n\n const allFieldsAreFilled = !Object.keys(currentSignatory).some(\n (key: keyof AgreementCreatePayloadAgreementSignatories) => {\n return optionalFields.includes(key) ? false : !currentSignatory[key];\n }\n );\n const formValid = allFieldsAreFilled && !isEmailInvalid;\n\n const handleTypeChange = (type: AgreementSignatoryModelTypeEnum) => {\n setSignatoryType(type);\n setIsEmailInvalid(false);\n const initialState = getInitialSignatoryState(type);\n setCurrentSignatory(initialState);\n onChange(initialState);\n };\n const updateCurrentSignatory = (\n event: React.ChangeEvent\n ) => {\n const { id } = event.target;\n const value =\n event.target.id === 'email'\n ? event.target.value?.toLowerCase()\n : event.target.value;\n setCurrentSignatory(previousSignatory => ({\n ...previousSignatory,\n [id]: value,\n }));\n const payload = { [id]: value };\n const updatedSignatory = { ...currentSignatory, ...payload };\n onChange(updatedSignatory);\n };\n const employeeMode = mode === SignatoryTypeMode.employee;\n useEffect(() => {\n if (employeeMode) {\n const type = AgreementSignatoryModelTypeEnum.ExternalIndividual;\n setSignatoryType(type);\n setCurrentSignatory(\n agreementId ? currentSignatory : getInitialSignatoryState(type)\n );\n onChange(currentSignatory);\n }\n }, []);\n\n const handleDebouncedEmailCheck = (email: string): void => {\n if (email && isValidEmailAddress(email)) {\n setIsEmailInvalid(false);\n dispatch(\n fetchUserDetailsByEmail({\n email,\n onSuccess: (users: UserDetails[]) => {\n if (users.length) {\n const user = users[0];\n\n setCurrentSignatory(previousSignatory => ({\n ...previousSignatory,\n firstName: user.firstName,\n lastName: user.lastName,\n }));\n }\n },\n })\n );\n } else if (!isValidEmailAddress(email)) {\n setIsEmailInvalid(true);\n }\n };\n\n const checkWithDebounce = useAdoptechDebounce();\n\n const handleEmailChange = (event: React.ChangeEvent) => {\n const value = event.target.value?.toLowerCase();\n updateCurrentSignatory(event);\n checkWithDebounce(() => {\n handleDebouncedEmailCheck(value);\n });\n };\n\n const onSuccess = (toastText: string) => {\n dispatch(showGlobalToast(toastText));\n onSubmit && onSubmit();\n };\n\n const handleSubmit = () => {\n if (!formValid) {\n onSubmitError();\n return;\n }\n\n if (!agreementId) {\n return dispatch(\n createAgreement({\n vendorId,\n body: {\n agreement: {\n agreementTemplateId: standardTemplateId,\n name,\n ...(templateId !== standardTemplateId && {\n sourceAgreementId: templateId,\n }),\n },\n agreementSignatories: [currentSignatory],\n },\n onError: onSubmitError,\n onSuccess: (response: AgreementExtended) => {\n dispatch(push(agreementShowPage.replace(':id', response.id)));\n onSuccess('Agreement has been successfully created.');\n },\n })\n );\n }\n\n if (!signatory) {\n dispatch(\n createExternalAgreementSignatory({\n agreementId,\n body: {\n agreementSignatories: [currentSignatory],\n },\n onError: onSubmitError,\n onSuccess: () => {\n onSuccess('Signatory has been successfully created.');\n },\n })\n );\n } else {\n const signatoryUpdatePayloadFields = Object.fromEntries(\n Object.entries(currentSignatory).map(([k, v]) => [\n `agreementSignatory${capitaliseFirst(k)}`,\n v,\n ])\n );\n const body: AgreementSignatoriesIdPatchRequest = {\n ...signatoryUpdatePayloadFields,\n id: signatory.id,\n };\n\n dispatch(\n updateExternalAgreementSignatory({\n body,\n onError: onSubmitError,\n onSuccess: () => {\n onSuccess('Signatory has been successfully updated.');\n },\n })\n );\n }\n };\n\n const baseCss = 'externalSignatoryForm';\n\n const signatoryLabel = employeeMode\n ? 'employee'\n : signatoryType === AgreementSignatoryModelTypeEnum.ExternalIndividual\n ? 'individual'\n : 'company';\n\n const formFields = (\n <>\n \n {`Please enter the ${signatoryLabel}'s details below.`}\n \n \n \n \n {signatoryType === AgreementSignatoryModelTypeEnum.ExternalIndividual && (\n \n \n \n )}\n {signatoryType === AgreementSignatoryModelTypeEnum.ExternalCompany && (\n \n \n \n \n \n )}\n \n );\n\n return (\n
\n {agreementId && !employeeMode && (\n
\n Enter counterparty details below\n
\n )}\n
handleSubmit()}>
\n
\n {!employeeMode && (\n \n handleTypeChange(value as AgreementSignatoryModelTypeEnum)\n }\n />\n )}\n {signatoryType && formFields}\n
\n
\n );\n};\n","import React from 'react';\nimport { FrameworkRelationFramework } from '../../swagger';\nimport { AdoptechTooltip } from '../AdoptechTooltip/AdoptechTooltip';\nimport './Pills.scss';\n\nconst baseCss = 'frameworksPills';\n\ninterface Props {\n frameworks: FrameworkRelationFramework[];\n}\n\nexport const FrameworksPills: React.FC = ({ frameworks }) => {\n return (\n
\n {frameworks.map(framework => (\n \n \n {framework.name.split(':')[0]}\n
\n \n ))}\n \n );\n};\n","import classNames from 'classnames';\nimport React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport './GenericModal.scss';\n\ninterface GenericModalProps {\n backdrop?: true | false | 'static';\n cancelButtonLabel?: string;\n className?: string;\n closeButtonLabel?: string;\n closeButtonVariant?: AdoptechButtonVariant;\n isBusy?: boolean;\n onCancel?: () => void;\n onClose: () => void;\n show: boolean;\n showCancelButton?: boolean;\n title: string;\n}\n\nexport const GenericModal: React.FC = props => {\n const classes = classNames(props.className, 'genericModal');\n const footerClasses = classNames({\n 'genericModal--footer': true,\n 'genericModal--footer-twoButtons': props.showCancelButton,\n });\n\n return (\n \n {props.title}\n \n
{props.children}
\n
\n \n
\n {props.showCancelButton && (\n {\n if (props.onCancel) {\n props.onCancel();\n } else {\n props.onClose();\n }\n }}\n >\n {props.cancelButtonLabel}\n \n )}\n props.onClose()}\n variant={props.closeButtonVariant}\n >\n {props.closeButtonLabel}\n \n
\n
\n \n );\n};\n\nGenericModal.defaultProps = {\n backdrop: true,\n cancelButtonLabel: 'Cancel',\n closeButtonLabel: 'CLOSE',\n closeButtonVariant: AdoptechButtonVariant.Primary,\n showCancelButton: false,\n};\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../types/applicationState';\nimport { MessageToast } from '../MessageToast/MessageToast';\nimport { hideGlobalToast } from '../../store/global/globalSlice';\nimport './GlobalToast.scss';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { unarchiveAgreement } from '../../store/agreements/agreementsThunks';\nimport classNames from 'classnames';\nimport { unarchiveVendorDocument } from '../../store/vendors/vendorsThunks';\n\nexport const GlobalToast: React.FC = () => {\n const dispatch = useDispatch();\n\n const { isShowing, text, undoButton } = useSelector(\n (state: ApplicationState) => state.global.globalToastConfig\n );\n\n // In trusthub user part we don't use router for now => can be null\n const route = useSelector(\n (state: ApplicationState) => state.router?.location?.pathname\n );\n\n return (\n \n {\n dispatch(hideGlobalToast());\n }}\n show={isShowing}\n >\n
\n
{text}
\n {undoButton && (\n
\n {\n route && route.endsWith('agreements')\n ? dispatch(unarchiveAgreement({ showToast: false }))\n : route.endsWith('documents')\n ? dispatch(unarchiveVendorDocument())\n : '';\n dispatch(hideGlobalToast());\n }}\n variant={AdoptechButtonVariant.Inverse}\n >\n Undo\n \n
\n )}\n
\n \n \n );\n};\n","import { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React, { SyntheticEvent } from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport './IconButton.scss';\n\ninterface IconButtonProps {\n ariaLabel: string;\n className?: string;\n disabled?: boolean;\n icon: IconDefinition;\n isBusy?: boolean;\n onClick?: (e: SyntheticEvent) => void;\n tooltip?: string;\n}\n\nexport const IconButton: React.FC = props => {\n const iconButtonClasses = classNames(\n { iconButton: true, 'iconButton--disabled': props.disabled },\n props.className\n );\n\n return (\n {\n if (props.disabled) {\n return;\n }\n if (!props.onClick) {\n return;\n }\n props.onClick(e);\n }}\n onKeyPress={e => {\n if (props.disabled) {\n return;\n }\n if (e.currentTarget === e.target && e.key === 'Enter') {\n props.onClick(e);\n }\n }}\n tabIndex={0}\n role=\"button\"\n title={props.tooltip}\n >\n {props.isBusy ? (\n \n ) : (\n \n )}\n \n );\n};\n\nIconButton.defaultProps = {\n ariaLabel: 'Button',\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { calculatePolicyProgress } from '../../store/policies/policiesThunks';\nimport { VendorPolicyDetails } from '../../swagger';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { ApplicationState } from '../../types/applicationState';\n\nimport './PolicyProgress.scss';\nimport classNames from 'classnames';\n\nexport const PolicyProgress: React.FC = policy => {\n const dispatch = useDispatch();\n\n const selectVendorPolicy = (state: ApplicationState) =>\n state.policies.vendorPolicies.find(vp => vp.id === policy.id);\n\n const storePolicy = useSelector(selectVendorPolicy);\n // allows to use component as view only for externally prepared progress value.\n const progress = policy.progress || storePolicy?.progress || 0;\n\n const percentage = Math.round(progress * 100);\n const completedPercentage = 100;\n\n const barClasses = classNames('policyProgress--bar', {\n 'policyProgress--green': percentage >= completedPercentage,\n 'policyProgress--orange': percentage < completedPercentage,\n });\n\n return (\n
\n
{percentage}%
\n
\n
\n
\n
\n );\n};\n","import { push } from 'connected-react-router';\nimport React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { ShareableType, VendorPolicyDetails } from '../../swagger';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\nimport { PolicyProgress } from '../PolicyProgress/PolicyProgress';\nimport AdoptechOverflowLine from '../AdoptechOverflowLine/AdoptechOverflowLine';\nimport { MeatballMenu } from '../MeatballMenu/MeatballMenu';\nimport { Dropdown } from 'react-bootstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { AccessObject } from '../../types/accessObject';\nimport {\n mapShareFeaturesToAccessLevels,\n useHasFeature,\n} from '../../functions/access';\nimport { showShareModal } from '../../store/vendors/vendorsSlice';\nimport { openVendorPolicyPdf } from '../../store/policies/policiesThunks';\nimport { PdfOpenMode } from '../../types/pdfOpenMode';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { isVendorPolicyFilled } from '../../functions/isVendorPolicyFilled';\nimport { faLink } from '@fortawesome/pro-light-svg-icons/faLink';\nimport { policyPageItemRouteURL } from '../Routes/Routes';\n\nexport const PolicyGetLinkInfo =\n 'Restricted Only people with Security Manager role will be able to open this link.';\ninterface InProgressPolicyRowProps {\n policy: VendorPolicyDetails;\n baseCss: string;\n baseTableCss: string;\n setSelectedPolicyId: (id: string) => void;\n setShowDeleteModal: (show: boolean) => void;\n}\n\nexport const InProgressPolicyRow: React.FC = ({\n policy,\n baseCss,\n baseTableCss,\n setSelectedPolicyId,\n setShowDeleteModal,\n}) => {\n const dispatch = useDispatch();\n const isFilledIn = isVendorPolicyFilled(policy);\n\n const handlePolicyClick = (\n e: React.MouseEvent\n ): void => {\n e.stopPropagation();\n dispatch(push(policyPageItemRouteURL(policy.id)));\n };\n return (\n \n
{policy.name}
\n
{policy.categoryName}
\n \n \n \n \n
\n \n \n \n Edit\n \n {\n e.stopPropagation();\n dispatch(\n showShareModal({\n shareableId: policy.id,\n showOnlyGetLink: true,\n getLinkInfo: PolicyGetLinkInfo,\n shareableType: ShareableType.VendorPolicy,\n accessLevels: mapShareFeaturesToAccessLevels(\n policy.access.feature\n ),\n relativePath: policy.relativePath,\n })\n );\n }}\n >\n \n Get link\n \n {isFilledIn && (\n {\n e.stopPropagation();\n dispatch(openVendorPolicyPdf(policy.id, PdfOpenMode.Preview));\n }}\n >\n \n Preview\n \n )}\n \n {\n e.stopPropagation();\n setSelectedPolicyId(policy.id);\n setShowDeleteModal(true);\n }}\n >\n \n Delete\n \n \n
\n \n );\n};\n","import React from 'react';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport StartFooter from '../Start/StartFooter/StartFooter';\nimport './LoadingScreen.scss';\nimport adoptechLogoDark from 'images/adoptech-logo-dark.svg';\n\nexport const LoadingScreen: React.FC = () => {\n return (\n
\n
\n
\n
\n \n
\n
\n
\n \n \n
\n );\n};\n","import classNames from 'classnames';\nimport React, { useEffect, useState } from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport './LoadingSpinner.scss';\n\nexport const LoadingSpinner = ({\n delayed,\n inlineSmall,\n}: {\n delayed?: boolean;\n inlineSmall?: boolean;\n}) => {\n const [show, setShow] = useState(delayed ? false : true);\n\n useEffect(() => {\n const timeout = setTimeout(() => setShow(true), 500);\n\n return () => {\n clearTimeout(timeout);\n };\n }, []);\n\n return (\n show && (\n \n \n \n )\n );\n};\n","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React from 'react';\nimport './Lozenge.scss';\nimport { faTimes } from '@fortawesome/pro-light-svg-icons/faTimes';\n\nexport enum Intent {\n None,\n Primary,\n Success,\n}\nexport const lozengeTestId = 'lozenge-div';\nexport const valueTestId = 'lozenge-value';\nexport const deleteIconTestId = 'lozenge-delete-icon';\nexport const primaryIntentClass = 'lozenge-primary';\nexport const successIntentClass = 'lozenge-success';\nexport const deleteIconClass = 'lozenge--delete';\n\ninterface LozengeProps {\n intent?: Intent;\n onDelete?: () => void;\n value: string | number;\n className?: string;\n}\n\nexport const Lozenge: React.FC = props => {\n const lozengeClassNames = classNames(\n {\n lozenge: !props.className,\n [`${primaryIntentClass}`]: props.intent === Intent.Primary,\n [`${successIntentClass}`]: props.intent === Intent.Success,\n },\n props.className\n );\n\n return (\n
\n
{props.value}
\n {props.onDelete && (\n props.onDelete()}\n >\n \n
\n )}\n \n );\n};\n","import { faBookAlt } from '@fortawesome/pro-light-svg-icons/faBookAlt';\nimport { faBuilding } from '@fortawesome/pro-light-svg-icons/faBuilding';\nimport { faChartNetwork } from '@fortawesome/pro-light-svg-icons/faChartNetwork';\nimport { faClipboardCheck } from '@fortawesome/pro-light-svg-icons/faClipboardCheck';\nimport { faClipboardList } from '@fortawesome/pro-light-svg-icons/faClipboardList';\nimport { faFileCertificate } from '@fortawesome/pro-light-svg-icons/faFileCertificate';\nimport { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\nimport { faFileSearch } from '@fortawesome/pro-light-svg-icons/faFileSearch';\nimport { faHandshake } from '@fortawesome/pro-light-svg-icons/faHandshake';\nimport { faHomeAlt } from '@fortawesome/pro-light-svg-icons/faHomeAlt';\nimport { faIdBadge } from '@fortawesome/pro-light-svg-icons/faIdBadge';\nimport { faGavel } from '@fortawesome/pro-light-svg-icons/faGavel';\nimport { faServer } from '@fortawesome/pro-light-svg-icons/faServer';\nimport { faUserFriends } from '@fortawesome/pro-light-svg-icons/faUserFriends';\nimport { faBuildingColumns } from '@fortawesome/pro-light-svg-icons/faBuildingColumns';\nimport { faBallotCheck } from '@fortawesome/pro-light-svg-icons/faBallotCheck';\nimport { faCalendarCheck } from '@fortawesome/pro-light-svg-icons/faCalendarCheck';\n\nimport {\n agreementsPageRoute,\n auditsPageRoute,\n calendarRoute,\n companyProfileRoute,\n complianceFrameworksRoute,\n complianceTasksRoute,\n complianceTestsRoute,\n controlsPageRoute,\n dataRoomRoute,\n policiesPageRoute,\n policyRoutes,\n trusthubAdminPageRoute,\n} from '../Routes/Routes';\nimport { MainMenuItemConfiguration } from './MainMenuItemConfiguration';\nimport { AccessObject } from '../../types/accessObject';\nimport { useCanFeature } from '../../functions/access';\nimport {\n FrameworkModel,\n Subscription,\n VendorProductIndex,\n VendorProductIndexFeatures,\n} from '../../swagger';\nimport { faLockKeyhole } from '@fortawesome/pro-light-svg-icons/faLockKeyhole';\nimport { faPlayCircle } from '@fortawesome/pro-light-svg-icons/faPlayCircle';\nimport { faCheckCircle } from '@fortawesome/pro-light-svg-icons/faCheckCircle';\n\nexport const isProductPaid = (\n feature: keyof VendorProductIndexFeatures,\n featuresState: VendorProductIndexFeatures\n): boolean => {\n // for guest user ( for example if assessment outside adoptech and he will create an account) featureState during signup can be null\n return featuresState ? featuresState[feature] : false;\n};\n\nexport const mainMenuConfig = (\n activeSubscription: Subscription,\n options?: {\n fromSignup: boolean;\n isPaidAssessments: boolean;\n }\n): MainMenuItemConfiguration[] => {\n const noSubscription = !activeSubscription;\n const { fromSignup, isPaidAssessments } = options || {};\n\n const canFeature = useCanFeature;\n const disabledMenuItem = (item: keyof typeof AccessObject) => {\n return !canFeature(AccessObject[item]);\n };\n\n return [\n {\n icon: faHomeAlt,\n label: 'Dashboard',\n route: '/r/dashboard',\n disabledExpression: _ =>\n disabledMenuItem('vendor_dashboard') || noSubscription,\n },\n\n {\n icon: faCalendarCheck,\n label: 'Actions & Events',\n route: calendarRoute,\n disabledExpression: _ => disabledMenuItem('calendar') || noSubscription,\n },\n {\n label: 'GOVERNANCE',\n childItems: [\n {\n icon: faBookAlt,\n label: 'Policies & Docs',\n route: policiesPageRoute,\n routes: policyRoutes,\n disabledExpression: _ => noSubscription,\n },\n {\n icon: faFileContract,\n label: 'Agreements',\n route: agreementsPageRoute,\n disabledExpression: _ =>\n disabledMenuItem('agreements') || noSubscription,\n },\n {\n icon: faUserFriends,\n label: 'People',\n route: '/r/governance/people',\n disabledExpression: _ => disabledMenuItem('people') || noSubscription,\n },\n ],\n },\n {\n label: 'RISK MANAGEMENT',\n childItems: [\n {\n icon: faFileSearch,\n label: 'Assessments',\n route: '/r/riskManagement/assessments',\n disabledExpression: _ => {\n // add const below to avoid condition hook render error: \"Rendered more hooks than during the previous render\"\n const disabled = disabledMenuItem('assessments');\n if (isPaidAssessments) return false; // if has been paid ( >= professional ) -> always enable\n return disabled; // if have incoming assessment -> enable else disable\n },\n },\n {\n icon: faBuildingColumns,\n\n label: 'PESTEL',\n route: '/r/riskManagement/pestel',\n disabledExpression: _ => disabledMenuItem('pestel') || noSubscription,\n },\n {\n icon: faGavel,\n label: 'Legal register',\n route: '/r/riskManagement/legalRegister',\n disabledExpression: _ =>\n disabledMenuItem('legal_register') || noSubscription,\n },\n {\n icon: faIdBadge,\n label: 'Vendor register',\n route: '/r/riskManagement/vendorRegister',\n disabledExpression: _ =>\n disabledMenuItem('vendor_register') || noSubscription,\n },\n {\n icon: faBallotCheck,\n label: 'Risk register',\n route: '/r/riskManagement/riskRegister',\n disabledExpression: _ =>\n disabledMenuItem('risk_register') || noSubscription,\n },\n ],\n },\n {\n label: 'COMPLIANCE',\n childItems: [\n {\n icon: faFileCertificate,\n label: 'Frameworks',\n route: complianceFrameworksRoute,\n disabledExpression: _ =>\n disabledMenuItem('frameworks') || noSubscription,\n },\n {\n icon: faPlayCircle,\n label: 'Controls',\n route: controlsPageRoute,\n disabledExpression: _ =>\n disabledMenuItem('controls') || noSubscription,\n },\n {\n icon: faCheckCircle,\n label: 'Checks',\n route: complianceTasksRoute,\n disabledExpression: _ => disabledMenuItem('tasks') || noSubscription,\n },\n {\n icon: faClipboardList,\n label: 'Test results',\n route: complianceTestsRoute,\n disabledExpression: _ => disabledMenuItem('tasks') || noSubscription,\n },\n {\n icon: faBallotCheck,\n label: 'Audits',\n route: auditsPageRoute,\n disabledExpression: _ => disabledMenuItem('audits') || noSubscription,\n },\n {\n disabledExpression: _ => noSubscription,\n icon: faServer,\n label: 'Data Room',\n route: dataRoomRoute,\n },\n ],\n },\n {\n label: 'COMPANY INFORMATION',\n childItems: [\n {\n icon: faBuilding,\n label: 'Profile',\n route: companyProfileRoute,\n disabledExpression: _ => noSubscription,\n },\n {\n icon: faChartNetwork,\n label: 'Apps & Integrations',\n route: '/r/companyInformation/integrations',\n disabledExpression: _ =>\n disabledMenuItem('integrations') || noSubscription,\n },\n {\n icon: faHandshake,\n label: 'TrustHub',\n route: trusthubAdminPageRoute,\n disabledExpression: _ =>\n disabledMenuItem('trusthub') || noSubscription,\n },\n {\n icon: faClipboardCheck,\n label: 'Checklists',\n route: '/r/companyInformation/checklists',\n disabledExpression: _ =>\n disabledMenuItem('checklists') || noSubscription,\n },\n ],\n },\n ];\n};\n","import { faEllipsisH } from '@fortawesome/pro-light-svg-icons/faEllipsisH';\nimport classNames from 'classnames';\nimport React, { useState, useRef } from 'react';\nimport { ButtonGroup, Dropdown, Overlay } from 'react-bootstrap';\nimport { IconButton } from '../IconButton/IconButton';\nimport './MeatballMenu.scss';\nimport { AdoptechDropdownToggle } from '../AdoptechDropdownToggle/AdoptechDropdownToggle';\n\nexport interface MeatballMenuProps {\n leftHandPointer?: boolean;\n popperStrategy?: 'absolute' | 'fixed';\n}\n\nexport const MeatballMenu: React.FC = props => {\n const [open, setOpen] = useState(false);\n\n const meatballMenuButtonClasses = classNames({\n 'meatballMenu--button': true,\n 'meatballMenu--button-open': open,\n });\n const classes = classNames(\n 'meatballMenu--pointer',\n props.leftHandPointer\n ? 'meatballMenu--pointer-lhs'\n : 'meatballMenu--pointer-rhs'\n );\n\n const target = useRef(null);\n\n return (\n
\n setOpen(isOpen)}>\n \n \n \n \n \n <>\n
\n {props.children}\n \n \n \n \n
\n );\n};\n","import { faTimes } from '@fortawesome/pro-light-svg-icons/faTimes';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport moment from 'moment';\nimport React, { ChangeEvent, useEffect, useState } from 'react';\nimport { Toast } from 'react-bootstrap';\nimport { useCookies } from 'react-cookie';\nimport { AdoptechCheckbox } from '../AdoptechCheckbox/AdoptechCheckbox';\nimport './MessageToast.scss';\n\nexport enum MessageToastVariant {\n Primary,\n Success,\n Warning,\n}\n\ninterface MessageToastProps {\n autohide?: boolean;\n doNotShowCookieName?: string;\n delay?: number;\n onClose: () => void;\n size?: 'large' | 'middle';\n show: boolean;\n showClose?: boolean;\n variant?: MessageToastVariant;\n}\n\nexport const MessageToast: React.FC = props => {\n const [cookies, setCookie] = useCookies([props.doNotShowCookieName]);\n const [doNotShow, setDoNotShow] = useState(false);\n const [showToast, setShowToast] = useState(false);\n\n const messageToastClasses = classNames({\n messageToast: true,\n 'messageToast-success': props.variant === MessageToastVariant.Success,\n 'messageToast-warning': props.variant === MessageToastVariant.Warning,\n 'messageToast-large': props.size === 'large',\n 'messageToast-middle': props.size === 'middle',\n });\n\n const messageToastContentClasses = classNames({\n 'messageToast--content': true,\n 'messageToast--content-shiftUp': props.showClose,\n });\n\n const { doNotShowCookieName, onClose, showClose, show, ...otherProps } =\n props;\n\n const handleClose = () => {\n if (props.doNotShowCookieName) {\n setCookie(props.doNotShowCookieName, doNotShow, {\n expires: moment().add(10, 'years').toDate(),\n });\n }\n props.onClose();\n };\n\n const handleDoNotShowChange = (e: ChangeEvent) => {\n setDoNotShow(e.target.checked);\n };\n\n useEffect(() => {\n if (cookies[props.doNotShowCookieName] === 'true') {\n setShowToast(false);\n return;\n }\n\n setShowToast(show);\n }, [show]);\n\n return (\n
\n \n \n
\n {props.showClose && (\n
\n handleClose()}\n />\n
\n )}\n
{props.children}
\n {props.doNotShowCookieName && (\n
\n \n
\n )}\n
\n
\n
\n
\n );\n};\n\nMessageToast.defaultProps = {\n autohide: true,\n showClose: true,\n variant: MessageToastVariant.Primary,\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport './NoDataText.scss';\n\ninterface NoDataTextProps {\n text: string;\n extraClass?: string;\n}\n\nexport const NoDataText = ({ text, extraClass = '' }: NoDataTextProps) => {\n return
{text}
;\n};\n","import { MainMenuItemConfiguration } from '../components/MainMenuItems/MainMenuItemConfiguration';\n\nexport const flattenMainMenuConfig = (\n mainMenuConfig: MainMenuItemConfiguration[]\n): MainMenuItemConfiguration[] => {\n const result: MainMenuItemConfiguration[] = [];\n\n mainMenuConfig.map(mmc => {\n const newMainMenuConfig: MainMenuItemConfiguration = { ...mmc };\n newMainMenuConfig.childItems = undefined;\n result.push(newMainMenuConfig);\n if (mmc.childItems && mmc.childItems.length > 0) {\n result.push(...flattenMainMenuConfig(mmc.childItems));\n }\n });\n\n return result;\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { selectRouteName } from './selectRouteName';\nimport { mainMenuConfig } from '../components/MainMenuItems/mainMenuConfig';\nimport { flattenMainMenuConfig } from '../functions/flattenMainMenuConfig';\nimport { selectCustomPageLabel } from './selectCustomPageLabel';\nimport {\n complianceControlsRoute,\n complianceFrameworkTasksRoute,\n legalRegisterPageRoute,\n manageSubscriptionRoute,\n paymentLandingPageRoute,\n policyRoutes,\n} from '../components/Routes/Routes';\nimport { selectActiveSubscription } from './selectActiveSubscription';\n\nexport const selectPageLabel = createSelector(\n selectRouteName,\n selectCustomPageLabel,\n selectActiveSubscription,\n (routeName, customLabel, subscription) => {\n const flattenedMainMenuConfigItems = flattenMainMenuConfig(\n mainMenuConfig(subscription)\n );\n let currentRouteName = routeName;\n if (currentRouteName?.startsWith('/r/calendar'))\n currentRouteName = '/r/calendar';\n\n const configItem = flattenedMainMenuConfigItems.find(\n item => item.route === currentRouteName\n );\n\n if (\n [\n complianceControlsRoute,\n complianceFrameworkTasksRoute,\n manageSubscriptionRoute,\n paymentLandingPageRoute,\n legalRegisterPageRoute,\n ...policyRoutes,\n ].includes(routeName) &&\n customLabel\n )\n return customLabel;\n\n return configItem ? configItem.label : undefined;\n }\n);\n","import { ApplicationState } from '../types/applicationState';\n\nexport const selectCustomPageLabel = (state: ApplicationState) => {\n return state.global.customPageHeaderLabel;\n};\n","import moment from 'moment';\n\nexport const formatRelativeDate = (date: string) => {\n if (!date) return;\n const dateObject = moment(date);\n const today = dateObject.isSame(moment(), 'day');\n const yesterday = dateObject.isSame(moment().subtract(1, 'days'), 'day');\n\n if (today) return 'Today';\n if (yesterday) return '1 day ago';\n return dateObject.fromNow();\n};\n","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport { push } from 'connected-react-router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Interweave } from 'interweave';\nimport { NotificationModel } from '../../swagger';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport {\n fetchNotifications,\n markNotificationAsRead,\n} from '../../store/notifications/notificationsThunks';\nimport { selectCurrentVendorUserId } from '../../selectors/selectCurrentVendorUserId';\nimport { formatRelativeDate } from '../../functions/formatRelativeDate';\nimport './NotificationsItem.scss';\n\ninterface NotificationsItemProps {\n notification: NotificationModel;\n}\n\nexport const NotificationsItem: React.FC = ({\n notification,\n}) => {\n const dispatch = useDispatch();\n const vendorUserId = useSelector(selectCurrentVendorUserId);\n\n const goToEntity = () => {\n dispatch(push(notification.relatedToPath));\n };\n\n return (\n \n
\n
\n \n
\n
\n {\n e.stopPropagation();\n dispatch(\n markNotificationAsRead({\n notificationId: notification.id,\n onSuccess: () => {\n dispatch(fetchNotifications(vendorUserId, false));\n },\n })\n );\n }}\n >\n Clear\n \n
\n
\n
\n {formatRelativeDate(notification.createdAt)}\n
\n
\n );\n};\n","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport DropdownMenu from 'react-bootstrap/DropdownMenu';\nimport { IconButton } from '../IconButton/IconButton';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../types/applicationState';\nimport { faBellExclamation } from '@fortawesome/pro-light-svg-icons/faBellExclamation';\nimport { NotificationsItem } from '../NotificationsItem/NotificationsItem';\nimport { NotificationModel } from '../../swagger';\nimport { NoDataText } from '../NoDataText/NoDataText';\nimport './Notifications.scss';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { AdoptechDropdownToggle } from '../AdoptechDropdownToggle/AdoptechDropdownToggle';\n\nexport const Notifications: React.FC = () => {\n const notifications = useSelector(\n (state: ApplicationState) => state.notifications.notificationsList.data\n );\n\n const isLoading = useSelector(\n (state: ApplicationState) => state.notifications.isRequestingNotifications\n );\n\n const notificationsExists = notifications.length;\n return (\n \n \n \n {!!notifications.length && (\n {notifications.length}\n )}\n \n \n {notificationsExists ? (\n notifications.map((item: NotificationModel) => (\n
\n \n
\n ))\n ) : (\n <>\n
\n \n {isLoading && }\n
\n \n )}\n \n
\n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { getInitials } from '../functions/getInitials';\nimport { UserDetails } from '../swagger/models';\nimport { ApplicationState } from '../types/applicationState';\n\nconst getUserDetails = (state: ApplicationState) => state.user.userDetails;\n\nexport const selectUserInitials = createSelector(\n getUserDetails,\n (userDetails: UserDetails) => {\n return getInitials({ user: userDetails });\n }\n);\n","import { faCloudDownload } from '@fortawesome/pro-light-svg-icons/faCloudDownload';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport getSymbolFromCurrency from 'currency-symbol-map';\nimport React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { fetchInvoices } from '../../store/user/userThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { IconButton } from '../IconButton/IconButton';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport './ManageInvoicesGrid.scss';\n\nexport const ManageInvoicesGrid: React.FC = () => {\n const invoices = useSelector(\n (state: ApplicationState) => state.user.invoices\n );\n\n const isFetchingInvoices = useSelector(\n (state: ApplicationState) => state.user.isFetchingInvoices\n );\n\n const { isManageBillingModalShowing } = useSelector(\n (state: ApplicationState) => state.vendors\n );\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (isManageBillingModalShowing) {\n dispatch(fetchInvoices());\n }\n }, [isManageBillingModalShowing]);\n\n return (\n
\n {invoices.length > 0 && (\n \n \n \n Date\n Invoice number\n Description\n Amount\n Actions\n \n \n \n {invoices.map(invoice => {\n return (\n \n {formatShortDate(invoice.createdAt)}\n {invoice.number}\n {invoice.description}\n \n {getSymbolFromCurrency(invoice.currency)}\n {(invoice.amount / 100).toFixed(2)}\n \n \n
\n {\n window.open(invoice.invoiceUrl, '_blank');\n }}\n />\n {invoice.invoicePdf && (\n {\n window.location.href = invoice.invoicePdf;\n }}\n />\n )}\n
\n \n \n );\n })}\n {isFetchingInvoices && (\n \n \n \n \n \n )}\n \n
\n )}\n {!isFetchingInvoices && invoices.length === 0 && (\n
No invoices found
\n )}\n
\n );\n};\n","import React from 'react';\nimport './ManageInvoices.scss';\nimport { ManageInvoicesGrid } from '../ManageInvoicesGrid/ManageInvoicesGrid';\n\nexport const ManageInvoices: React.FC = () => {\n return (\n
\n
\n
Invoices
\n \n
\n
\n );\n};\n","interface PaymentMethodState {\n card_number: string; //req\n card_cvc: string; //req\n card_exp_month: string; //req\n card_exp_year: string; //req\n name: string;\n address_line1: string;\n address_line2: string;\n address_city: string;\n address_state: string;\n address_zip: string;\n address_country: string;\n}\n\nexport const initialState: PaymentMethodState = {\n card_number: '',\n card_cvc: '',\n card_exp_month: '',\n card_exp_year: '',\n name: '',\n address_line1: '',\n address_line2: '',\n address_city: '',\n address_state: '',\n address_zip: '',\n address_country: '',\n};\n\nexport enum PaymentMethodActionType {\n Change,\n Cleanup,\n}\n\nexport type ChangePaymentMethodAction = {\n type: PaymentMethodActionType;\n payload?: { [key: string]: string };\n};\n\nexport type PaymentMethodAction = ChangePaymentMethodAction;\n\nexport const paymentMethodReducer = (\n state: PaymentMethodState,\n action: PaymentMethodAction\n): PaymentMethodState => {\n switch (action.type) {\n case PaymentMethodActionType.Change:\n return {\n ...state,\n ...action.payload,\n };\n case PaymentMethodActionType.Cleanup:\n return initialState;\n default:\n return state;\n }\n};\n","import {\n Image,\n Invoice,\n PaymentMethod,\n Subscription,\n UserDetails,\n} from '../../swagger';\nimport { ApiRequestStatus } from '../global/globalState';\n\nexport enum PaymentMethodModalMode {\n Add,\n Edit,\n}\n\nexport interface UserState {\n addingTwoFactorError?: string;\n addPaymentMethodError?: string;\n updatePaymentMethodError?: string;\n changePasswordError?: string;\n deletePaymentMethodError?: string;\n deleteSubscriptionError?: string;\n deleteUserError?: string;\n fetchInvoicesError?: string;\n fetchPaymentMethodsError?: string;\n fetchSubscriptionsError?: string;\n fetchingUserDetailsError?: string;\n invoices: Invoice[];\n isAddPaymentMethodModalShowing: boolean;\n paymentMethodModalMode: PaymentMethodModalMode;\n currentPaymentMethodId?: string;\n isAddingPaymentMethod: boolean;\n isUpdatingPaymentMethod: boolean;\n is2FAEnabledShowing: boolean;\n isChangingPassword: boolean;\n isDeletePaymentMethodModalShowing: boolean;\n isDeleteUserModalShowing: boolean;\n isDeletingPaymentMethod: boolean;\n isDeletingSubscription: boolean;\n isDeletingUser: boolean;\n isFetchingPaymentMethods: boolean;\n isFetchingSubscriptions: boolean;\n isFetchingInvoices: boolean;\n isFetchingUserDetails: boolean;\n isPasswordChangeSuccessfulToastShowing: boolean;\n isPasswordModalShowing: boolean;\n isProfileDeletedToastShowing: boolean;\n isProfileMenuShowing: boolean;\n isProfileModalShowing: boolean;\n isProfileSavedToastShowing: boolean;\n isTwoFactorSavedToastShowing: boolean;\n isUpdatingUserDetails: boolean;\n paymentMethods: PaymentMethod[];\n subscriptions: Subscription[];\n subscriptionToDelete: string;\n updatingUserDetailsError?: string;\n userDetails: UserDetails;\n isRequestingUserSignature: boolean;\n userSignature: Image;\n userSignatureRequestFailure: string;\n mfaQrCode?: string;\n mfaBackupCodes?: string[];\n mfaIsVerifying: boolean;\n mfaAlreadyEnabled?: boolean;\n logoutUserStatus: ApiRequestStatus;\n}\n","import { createSelector } from '@reduxjs/toolkit';\nimport { ApplicationState } from '../types/applicationState';\n\nconst getPaymentMethods = (state: ApplicationState) =>\n state.user.paymentMethods;\nconst currentId = (state: ApplicationState) =>\n state.user.currentPaymentMethodId;\n\nexport const selectCurrentPaymentMethod = createSelector(\n getPaymentMethods,\n currentId,\n (paymentMethods, id) => {\n return paymentMethods.find(model => model.id === id);\n }\n);\n","import React, { useReducer, useEffect } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n hideAddPaymentMethodModal,\n setCurrentPaymentMethodId,\n} from '../../store/user/userSlice';\nimport {\n addPaymentMethod,\n updatePaymentMethod,\n} from '../../store/user/userThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport { SelectionOption } from '../../types/selectionOption';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { AdoptechCountrySelect } from '../AdoptechCountrySelect/AdoptechCountrySelect';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport {\n PaymentMethodActionType,\n paymentMethodReducer,\n initialState,\n} from './AddPaymentMethod.reducer';\nimport './AddPaymentMethodModal.scss';\nimport { PaymentMethodModalMode } from '../../store/user/userState';\nimport { selectCurrentPaymentMethod } from '../../selectors/selectCurrentPaymentMethod';\n\nexport const AddPaymentMethodModal: React.FC = () => {\n const reduxDispatch = useDispatch();\n\n const isAddPaymentMethodModalShowing = useSelector(\n (state: ApplicationState) => state.user.isAddPaymentMethodModalShowing\n );\n const isAddingPaymentMethod = useSelector(\n (state: ApplicationState) => state.user.isAddingPaymentMethod\n );\n\n const isUpdatingPaymentMethod = useSelector(\n (state: ApplicationState) => state.user.isUpdatingPaymentMethod\n );\n\n const mode = useSelector(\n (state: ApplicationState) => state.user.paymentMethodModalMode\n );\n\n const isAddMode = mode === PaymentMethodModalMode.Add;\n\n const [paymentMethodState, dispatch] = useReducer(\n paymentMethodReducer,\n initialState\n );\n\n const handleAdd = () => {\n reduxDispatch(\n addPaymentMethod({\n card: {\n cvc: paymentMethodState.card_cvc,\n cardNo: paymentMethodState.card_number,\n expMonth: paymentMethodState.card_exp_month,\n expYear: paymentMethodState.card_exp_year,\n billingDetails: {\n name: paymentMethodState.name || null,\n address: {\n city: paymentMethodState.address_city || null,\n country: paymentMethodState.address_country || null,\n line1: paymentMethodState.address_line1 || null,\n line2: paymentMethodState.address_line2 || null,\n state: paymentMethodState.address_state || null,\n postalCode: paymentMethodState.address_zip || null,\n },\n },\n },\n })\n );\n };\n\n const handleUpdate = () => {\n reduxDispatch(\n updatePaymentMethod({\n card: {\n expMonth: paymentMethodState.card_exp_month,\n expYear: paymentMethodState.card_exp_year,\n },\n id: currentId,\n })\n );\n };\n\n const handleCancel = () => {\n reduxDispatch(hideAddPaymentMethodModal());\n\n reduxDispatch(setCurrentPaymentMethodId());\n dispatch({\n type: PaymentMethodActionType.Cleanup,\n });\n };\n\n const handleChange = (event: {\n currentTarget: { id: string; value: string };\n }) => {\n dispatch({\n type: PaymentMethodActionType.Change,\n payload: { [event.currentTarget.id]: event.currentTarget.value },\n });\n };\n\n const setCountry = (option: SelectionOption) => {\n dispatch({\n type: PaymentMethodActionType.Change,\n payload: { address_country: option.value },\n });\n };\n\n const formIsValid = () => {\n const { card_number, card_cvc, card_exp_month, card_exp_year } =\n paymentMethodState;\n\n if (!isAddMode) return card_exp_month && card_exp_year;\n\n return card_number && card_cvc && card_exp_month && card_exp_year;\n };\n\n const currentPaymentMethod = useSelector(selectCurrentPaymentMethod);\n const currentId = currentPaymentMethod?.id;\n\n useEffect(() => {\n if (!currentPaymentMethod) return;\n\n const { address } = currentPaymentMethod.billingDetails;\n\n dispatch({\n type: PaymentMethodActionType.Change,\n payload: {\n card_exp_month: currentPaymentMethod.card.expMonth,\n card_exp_year: currentPaymentMethod.card.expYear?.toString().slice(-2),\n name: currentPaymentMethod.billingDetails.name,\n address_line1: address.line1,\n address_line2: address.line2,\n address_city: address.city,\n address_state: address.state,\n address_zip: address.postalCode,\n address_country: address.country,\n },\n });\n }, [currentId]);\n\n return (\n \n \n \n {isAddMode ? 'Add new payment method' : 'Edit expiration date'}{' '}\n \n \n
\n {isAddMode && (\n \n )}\n {!isAddMode && (\n
\n Expiration date*\n
\n )}\n
\n
\n \n \n
\n {isAddMode && (\n \n )}\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n
\n \n
\n
*Required fields
\n
\n \n Cancel\n \n {isAddMode ? 'ADD' : 'UPDATE'}\n \n \n \n
\n );\n};\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { capitaliseFirst } from '../../functions/capitaliseFirst';\nimport { hideDeletePaymentMethodModal } from '../../store/user/userSlice';\nimport { deletePaymentMethod } from '../../store/user/userThunks';\nimport { PaymentMethod } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './DeletePaymentMethodModal.scss';\n\ninterface DeletePaymentMethodModalProps {\n paymentMethod: PaymentMethod;\n}\n\nexport const DeletePaymentMethodModal: React.FC<\n DeletePaymentMethodModalProps\n> = props => {\n const { isDeletePaymentMethodModalShowing, isDeletingPaymentMethod } =\n useSelector((state: ApplicationState) => state.user);\n\n const dispatch = useDispatch();\n\n if (!props.paymentMethod) {\n return null;\n } else {\n return (\n dispatch(hideDeletePaymentMethodModal())}\n show={isDeletePaymentMethodModalShowing}\n >\n Delete payment method\n \n
\n Please confirm that you wish to permanently delete this payment\n method?\n
\n
\n
\n {capitaliseFirst(props.paymentMethod.card.brand)} ending in{' '}\n {props.paymentMethod.card.last4}, expiring{' '}\n {props.paymentMethod.card.expMonth}/\n {props.paymentMethod.card.expYear}.\n
\n
\n
\n \n {\n dispatch(hideDeletePaymentMethodModal());\n }}\n >\n Cancel\n \n {\n dispatch(deletePaymentMethod(props.paymentMethod.id));\n }}\n variant={AdoptechButtonVariant.Primary}\n >\n Confirm\n \n \n \n );\n }\n};\n","import { faCreditCard } from '@fortawesome/pro-light-svg-icons/faCreditCard';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { capitaliseFirst } from '../../functions/capitaliseFirst';\nimport {\n showDeletePaymentMethodModal,\n showAddPaymentMethodModal,\n setCurrentPaymentMethodId,\n} from '../../store/user/userSlice';\n\nimport { PaymentMethodModalMode } from '../../store/user/userState';\n\nimport { fetchPaymentMethods } from '../../store/user/userThunks';\nimport { PaymentMethod } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { DeletePaymentMethodModal } from '../DeletePaymentMethodModal/DeletePaymentMethodModal';\nimport { IconButton } from '../IconButton/IconButton';\nimport './ManagePaymentMethodsGrid.scss';\nimport { selectActiveSubscription } from '../../selectors/selectActiveSubscription';\n\nexport const ManagePaymentMethodsGrid: React.FC = () => {\n const [paymentMethod, setPaymentMethod] = useState();\n\n const isManageBillingModalShowing = useSelector(\n (state: ApplicationState) => state.vendors.isManageBillingModalShowing\n );\n\n const paymentMethods = useSelector(\n (state: ApplicationState) => state.user.paymentMethods\n );\n\n const hasActiveSubscription = !!useSelector(selectActiveSubscription);\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (isManageBillingModalShowing && hasActiveSubscription) {\n dispatch(fetchPaymentMethods());\n }\n }, [isManageBillingModalShowing]);\n\n return (\n \n
\n {paymentMethods.length > 0 && (\n \n \n \n Card type\n Number\n Expiry date\n \n Actions\n \n \n \n {paymentMethods.map(p => {\n return (\n \n \n
\n \n {capitaliseFirst(p.card.brand)}\n
\n \n Ending ............{p.card.last4}\n \n {p.card.expMonth}/{p.card.expYear}\n \n {p.card.isDefault ? 'Default' : '-'}\n \n
\n {\n dispatch(setCurrentPaymentMethodId(p.id));\n dispatch(\n showAddPaymentMethodModal(\n PaymentMethodModalMode.Edit\n )\n );\n }}\n tooltip=\"Edit\"\n />\n {\n setPaymentMethod(p);\n dispatch(showDeletePaymentMethodModal());\n }}\n />\n
\n \n \n );\n })}\n \n
\n )}\n {paymentMethods.length === 0 && (\n
\n No payment methods found\n
\n )}\n
\n\n \n
\n );\n};\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n showAddPaymentMethodModal,\n setCurrentPaymentMethodId,\n} from '../../store/user/userSlice';\nimport { AddPaymentMethodModal } from '../AddPaymentMethodModal/AddPaymentMethodModal';\nimport { AdoptechButton } from '../AdoptechButton/AdoptechButton';\nimport { ManagePaymentMethodsGrid } from '../ManagePaymentMethodsGrid/ManagePaymentMethodsGrid';\nimport './ManagePaymentMethods.scss';\nimport { selectActiveSubscription } from '../../selectors/selectActiveSubscription';\nimport { PaymentMethodModalMode } from '../../store/user/userState';\n\nexport const ManagePaymentMethods: React.FC = () => {\n const dispatch = useDispatch();\n\n const hasActiveSubscription = !!useSelector(selectActiveSubscription);\n\n return (\n
\n
\n
Payment method
\n
\n {hasActiveSubscription && (\n {\n dispatch(setCurrentPaymentMethodId(null));\n dispatch(showAddPaymentMethodModal(PaymentMethodModalMode.Add));\n }}\n >\n Add payment method\n \n )}\n
\n
\n \n \n
\n );\n};\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './ManageBillingModal.scss';\nimport { hideManageBillingModal } from '../../store/vendors/vendorsSlice';\nimport { ManageInvoices } from '../ManageInvoices/ManageInvoices';\nimport { ManagePaymentMethods } from '../ManagePaymentMethods/ManagePaymentMethods';\n\nexport const ManageBillingModal: React.FC = () => {\n const { isManageBillingModalShowing } = useSelector(\n (state: ApplicationState) => state.vendors\n );\n\n const dispatch = useDispatch();\n\n return (\n dispatch(hideManageBillingModal())}\n show={isManageBillingModalShowing}\n >\n Manage billing information\n \n \n \n \n \n dispatch(hideManageBillingModal())}\n variant={AdoptechButtonVariant.Primary}\n >\n Done\n \n \n \n );\n};\n","import { MutableRefObject, useEffect } from 'react';\n\nconst useOnClickOutside = (\n ref: MutableRefObject,\n handler: (event: any) => void\n): void => {\n useEffect(\n () => {\n const listener = (event: any) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n\n handler(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n },\n // Add ref and handler to effect dependencies\n // It's worth noting that because passed in handler is a new ...\n // ... function on every render that will cause this effect ...\n // ... callback/cleanup to run every render. It's not a big deal ...\n // ... but to optimize you can wrap handler in useCallback before ...\n // ... passing it into this hook.\n [ref, handler]\n );\n};\n\nexport default useOnClickOutside;\n","import React, { useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { canCreate } from '../../functions/access';\nimport useOnClickOutside from '../../hooks/useOnClickOutside';\nimport {\n addTwoFactorAuthentication,\n changePassword,\n closeProfileMenu,\n} from '../../store/user/userSlice';\nimport { showManageBillingModal } from '../../store/vendors/vendorsSlice';\nimport { AccessObject } from '../../types/accessObject';\nimport { ApplicationState } from '../../types/applicationState';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\nimport './ProfileMenu.scss';\nimport { manageSubscriptionRoute } from '../Routes/Routes';\nimport { push } from 'connected-react-router';\nimport { logoutUser } from '../../store/user/userThunks';\n\ninterface ProfileMenuProps {\n onEditProfileClick(): void;\n}\n\nexport const ProfileMenu: React.FC = ({\n onEditProfileClick,\n}) => {\n const { userDetails } = useSelector((state: ApplicationState) => state.user);\n\n const dispatch = useDispatch();\n\n const containerRef = useRef();\n useOnClickOutside(containerRef, () => {\n dispatch(closeProfileMenu());\n });\n\n const canCreateSubscriptions = canCreate(AccessObject.payment_plan_vendors);\n\n return (\n
(containerRef.current = el)}>\n
\n \n
\n
\n Your profile\n
\n dispatch(changePassword())}\n >\n Change password\n
\n {!userDetails.authyUserid && (\n dispatch(addTwoFactorAuthentication())}\n >\n Two Factor Authentication\n
\n )}\n {canCreateSubscriptions && (\n dispatch(push(manageSubscriptionRoute))}\n >\n Manage subscription\n \n )}\n {canCreateSubscriptions && (\n dispatch(showManageBillingModal())}\n >\n Manage billing\n \n )}\n
dispatch(logoutUser())}>\n Logout\n
\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { isValidEmailAddress } from '../../functions/isValidEmailAddress';\nimport {\n clearProfileSavedToast,\n closeProfileModal,\n initiateUserDeletion,\n} from '../../store/user/userSlice';\nimport { updateProfile } from '../../store/user/userThunks';\nimport { UserDetails } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { EditProfileFields } from '../EditProfileFields/EditProfileFields';\nimport { MessageToast } from '../MessageToast/MessageToast';\nimport './EditProfileDrawer.scss';\nimport AdoptechHS from '../AdoptechHS/AdoptechHS';\nimport { selectUsers } from '../../selectors/selectUsers';\n\nexport const EditProfileDrawer: React.FC = () => {\n const [showLastUserDeletionToast, setShowLastUserDeletionToast] =\n useState(false);\n const [userDetails, setUserDetails] = useState();\n\n const userState = useSelector((state: ApplicationState) => state.user);\n const users = useSelector((state: ApplicationState) =>\n selectUsers(state, { excludeLeft: false })\n );\n\n useEffect(() => {\n setUserDetails(\n userState.userDetails ? userState.userDetails : { email: '' }\n );\n }, [userState]);\n\n const saveEnabled = userDetails && isValidEmailAddress(userDetails.email);\n\n const dispatch = useDispatch();\n\n const deleteUser = () => {\n if (users.length === 1) {\n setShowLastUserDeletionToast(true);\n return;\n }\n dispatch(initiateUserDeletion());\n };\n\n const save = () => {\n dispatch(updateProfile(userDetails, false));\n dispatch(closeProfileModal());\n };\n\n const Footer = (\n <>\n {\n dispatch(closeProfileModal());\n }}\n >\n Cancel\n \n \n SAVE\n \n \n );\n\n return (\n \n dispatch(clearProfileSavedToast())}\n show={userState.isProfileSavedToastShowing}\n >\n Your profile has been updated.\n \n setShowLastUserDeletionToast(false)}\n show={showLastUserDeletionToast}\n >\n It is not possible to delete this User, please contact Adoptech support.\n \n\n {\n dispatch(closeProfileModal());\n }}\n showConfirmationWarning={false}\n footer={Footer}\n extraClass=\"editProfileDrawer\"\n >\n <>\n \n Please click here if you wish to\n deleteUser()}\n >\n delete your account\n \n \n \n \n );\n};\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { hideWarningSubscriptionLimitModal } from '../../../store/vendors/vendorsSlice';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { ExitConfirmationModal } from '../../../components/ExitConfirmationModal/ExitConfirmationModal';\nimport { manageSubscriptionRoute } from '../../../components/Routes/Routes';\nimport { push } from 'connected-react-router';\nimport { AdoptechButtonVariant } from '../../../components/AdoptechButton/AdoptechButton';\n\nexport const WarningSubscriptionLimitModal = () => {\n const isShowing = useSelector(\n (state: ApplicationState) =>\n state.vendors.isWarningSubscriptionLimitModalShowing\n );\n\n const dispatch = useDispatch();\n\n if (!isShowing) return null;\n return (\n {\n dispatch(hideWarningSubscriptionLimitModal());\n dispatch(push(manageSubscriptionRoute));\n }}\n onCancel={() => dispatch(hideWarningSubscriptionLimitModal())}\n />\n );\n};\n","import { faCircle } from '@fortawesome/free-solid-svg-icons/faCircle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectUserInitials } from '../../selectors/selectUserInitials';\nimport { editProfile, toggleProfileMenu } from '../../store/user/userSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport { ManageBillingModal } from '../ManageBillingModal/ManageBillingModal';\nimport { ProfileMenu } from '../ProfileMenu/ProfileMenu';\nimport { EditProfileDrawer } from '../EditProfileDrawer/EditProfileDrawer';\nimport './UserBadge.scss';\nimport { WarningSubscriptionLimitModal } from '../../features/pricing/WarningSubscriptionLimitModal/WarningSubscriptionLimitModal';\n\nexport const UserBadge: React.FC = () => {\n const dispatch = useDispatch();\n const [hovered, setHovered] = useState(false);\n\n const initials = useSelector((state: ApplicationState) =>\n selectUserInitials(state)\n );\n const isProfileMenuShowing = useSelector(\n (state: ApplicationState) => state.user.isProfileMenuShowing\n );\n\n return (\n \n {\n setHovered(false);\n dispatch(toggleProfileMenu());\n }}\n onMouseOver={() => setHovered(true)}\n onMouseOut={() => setHovered(false)}\n >\n {isProfileMenuShowing && (\n {\n dispatch(editProfile());\n }}\n />\n )}\n \n \n \n \n {initials}\n \n \n \n \n \n \n );\n};\n","import React from 'react';\nimport './AssessmentsMenuItem.scss';\nimport { AssessmentsMenuItemConfiguration } from '../AssessmentsMenu/AssessmentsMenuConfig';\nimport classNames from 'classnames';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { push } from 'connected-react-router';\nimport { ApplicationState } from '../../types/applicationState';\nimport { Intent, Lozenge } from '../Lozenge/Lozenge';\nimport { selectPendingAssessments } from '../../selectors/selectPendingAssessments';\n\nexport interface AssessmentsMenuItemProps {\n item: AssessmentsMenuItemConfiguration;\n}\n\nconst AssessmentsMenuItem: React.FC = props => {\n const dispatch = useDispatch();\n\n const tabToSelect = useSelector(\n (state: ApplicationState) => state.assessments.assessmentTabToShow\n );\n const assessmentResponses = useSelector(selectPendingAssessments);\n\n const isSelected = tabToSelect === props.item.tabId;\n\n const classes = classNames(\n 'assessmentsMenuItem',\n {\n 'assessmentsMenuItem-disabled': props.item.disabled,\n },\n { 'assessmentsMenuItem-selected': isSelected }\n );\n\n const handleClick = (item: AssessmentsMenuItemConfiguration) => {\n if (item.disabled) return;\n\n if (item.onClick) {\n item.onClick();\n return;\n }\n\n if (item.route) {\n dispatch(push(item.route));\n }\n };\n\n return (\n <>\n handleClick(props.item)}\n >\n
{props.item.label}
\n \n {props.item.showLozenge && assessmentResponses.length > 0 && (\n \n )}\n \n );\n};\n\nexport default AssessmentsMenuItem;\n","import React, { useEffect } from 'react';\nimport './AssessmentsMenu.scss';\nimport { assessmentsMenuConfig } from './AssessmentsMenuConfig';\nimport AssessmentsMenuItem from '../AssessmentsMenuItem/AssessmentsMenuItem';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectAssessmentsTab } from '../../selectors/selectAssessmentsTab';\nimport { saveSelectedAssessmentTab } from '../../store/assessments/assessmentsSlice';\nimport { AssessmentTabs } from '../../store/assessments/assessmentsState';\nimport { push } from 'connected-react-router';\nimport { selectVendorProductsFeatures } from '../../selectors/pricing/selectVendorProductsFeatures';\nimport { isProductPaid } from '../MainMenuItems/mainMenuConfig';\n\nconst AssessmentsMenu: React.FC = () => {\n const dispatch = useDispatch();\n const tabToShow = useSelector(selectAssessmentsTab);\n const features = useSelector(selectVendorProductsFeatures);\n const isPaid = isProductPaid('assessments', features);\n\n useEffect(() => {\n dispatch(saveSelectedAssessmentTab(tabToShow));\n\n if (\n location.pathname.includes('outgoing') &&\n tabToShow === AssessmentTabs.Incoming\n ) {\n dispatch(push('r/riskManagement/assessments/incoming'));\n }\n }, [tabToShow]);\n\n return (\n
\n {assessmentsMenuConfig(isPaid).map((item, index) => {\n return ;\n })}\n
\n );\n};\n\nexport default AssessmentsMenu;\n\nexport const assessmentsMenuVisibleRoute = '/r/riskManagement/assessments';\n","import { useSelector } from 'react-redux';\nimport { AssessmentTabs } from '../../store/assessments/assessmentsState';\n\nexport interface AssessmentsMenuItemConfiguration {\n label: string;\n tabId: AssessmentTabs;\n disabled?: boolean;\n hidden?: boolean;\n onClick?: () => void;\n route?: string;\n tooltip?: string;\n showLozenge?: boolean;\n}\n\nexport const assessmentsMenuConfig = (\n isPaid: boolean\n): AssessmentsMenuItemConfiguration[] => {\n return [\n {\n label: 'Outgoing',\n route: '/r/riskManagement/assessments/outgoing',\n showLozenge: false,\n tabId: AssessmentTabs.Outgoing,\n disabled: !isPaid,\n },\n {\n label: 'Incoming',\n route: '/r/riskManagement/assessments/incoming',\n showLozenge: true,\n tabId: AssessmentTabs.Incoming,\n },\n ];\n};\n","import classNames from 'classnames';\nimport { push } from 'connected-react-router';\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../types/applicationState';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { NoDataText } from '../NoDataText/NoDataText';\nimport { MIN_SEARCH_LENGTH } from './GlobalSearchBar';\nimport './GlobalSearch.scss';\n\ninterface GlobalSearchResultsProps {\n inputText: string;\n baseCss: string;\n}\n\nexport const GlobalSearchResults: React.FC = ({\n inputText,\n baseCss,\n}) => {\n const dispatch = useDispatch();\n\n const results = useSelector(\n (state: ApplicationState) => state.global.globalSearchResults\n );\n\n const globalSearchInProgress = useSelector(\n (state: ApplicationState) => state.global.globalSearchInProgress\n );\n\n const searchResultClasses = classNames({\n [`${baseCss}--results`]: true,\n });\n\n return (\n <>\n {inputText && (\n
\n {inputText.length < MIN_SEARCH_LENGTH ? (\n \n ) : globalSearchInProgress ? (\n \n ) : results.length > 0 ? (\n <>\n
\n
\n
\n {results.map(item => {\n return (\n {\n dispatch(push(item.url));\n }}\n >\n {item.name}\n
\n );\n })}\n
\n
\n
\n \n ) : (\n \n )}\n \n )}\n \n );\n};\nexport default GlobalSearchResults;\n","import { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport classNames from 'classnames';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getSearchResults } from '../../store/global/globalThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport GlobalSearchResults from './GlobalSearchResults';\nimport './GlobalSearch.scss';\nimport { faDeleteRight } from '@fortawesome/pro-light-svg-icons/faDeleteRight';\nimport {\n clearGlobalSearchResults,\n setGlobalSearchBarVisible,\n} from '../../store/global/globalSlice';\n\nexport const MIN_SEARCH_LENGTH = 3;\n\nexport const GlobalSearchBar: React.FC = () => {\n const [inputText, setInputText] = useState('');\n const [searchTerm, setSearchTerm] = useState('');\n const baseCss = 'globalSearch';\n const dispatch = useDispatch();\n const delayMilliseconds = 700;\n const vendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n\n useEffect(() => {\n const timeoutId = setTimeout(() => {\n dispatch(getSearchResults(vendorId, searchTerm));\n }, delayMilliseconds);\n\n return () => {\n clearTimeout(timeoutId);\n };\n }, [searchTerm]);\n\n const searchClasses = classNames({\n [`${baseCss}--input`]: true,\n [`${baseCss}--open`]: !!inputText,\n [`${baseCss}--closed`]: !inputText,\n });\n\n return (\n <>\n {\n dispatch(setGlobalSearchBarVisible(false));\n }}\n >\n {\n setInputText('');\n setSearchTerm('');\n dispatch(clearGlobalSearchResults());\n }}\n id=\"globalSearch\"\n value={inputText}\n onChange={e => {\n setInputText(e.target.value);\n if (e.target.value.length >= MIN_SEARCH_LENGTH)\n setSearchTerm(e.target.value);\n else dispatch(clearGlobalSearchResults());\n }}\n type=\"text\"\n placeholder=\"Search the Adoptech platform\"\n icon={inputText ? faDeleteRight : faSearch}\n additionalClass={searchClasses}\n />\n \n \n );\n};\nexport default GlobalSearchBar;\n","import React, { useEffect } from 'react';\nimport './PageHeader.scss';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectPageLabel } from '../../selectors/selectPageLabel';\nimport { Notifications } from '../Notifications/Notifications';\nimport { UserBadge } from '../UserBadge/UserBadge';\nimport AssessmentsMenu, {\n assessmentsMenuVisibleRoute,\n} from '../AssessmentsMenu/AssessmentsMenu';\nimport { selectRouteName } from '../../selectors/selectRouteName';\nimport GlobalSearch from '../GlobalSearch/GlobalSearchBar';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n setGlobalSearchBarVisible,\n showHelpMenu,\n} from '../../store/global/globalSlice';\nimport { faClose } from '@fortawesome/pro-light-svg-icons/faClose';\nimport { faCircleQuestion } from '@fortawesome/pro-light-svg-icons/faCircleQuestion';\n\nexport const setPageTitle = (title: string) => {\n document.title = title;\n};\nconst PageHeader: React.FC = () => {\n const dispatch = useDispatch();\n const pageLabel = useSelector(selectPageLabel);\n const routeName = useSelector(selectRouteName);\n const searchBarVisible = useSelector(\n (state: ApplicationState) => state.global.globalSearchBarVisible\n );\n\n useEffect(() => {\n setPageTitle(pageLabel);\n }, [pageLabel]);\n\n return (\n
\n
{pageLabel}
\n {routeName === assessmentsMenuVisibleRoute && (\n
\n \n
\n )}\n
\n {searchBarVisible && }\n
\n
\n
\n {\n dispatch(setGlobalSearchBarVisible(!searchBarVisible));\n }}\n />\n {\n dispatch(showHelpMenu());\n }}\n />\n \n \n
\n
\n
\n );\n};\n\nexport default PageHeader;\n","import classNames from 'classnames';\nimport React from 'react';\nimport './Panel.scss';\n\nexport interface PanelProps {\n clickable?: boolean;\n onClick?: () => void;\n placedOnDarkBackground?: boolean;\n selected?: boolean;\n}\n\nexport const Panel: React.FC = props => {\n const classes = classNames({\n panel: true,\n 'panel-clickable': props.clickable,\n 'panel-darkerBoxShadow': props.placedOnDarkBackground,\n 'panel-selected': props.selected,\n });\n\n const handleClick = () => {\n if (props.clickable && props.onClick) {\n props.onClick();\n }\n };\n\n return (\n {\n if (e.currentTarget === e.target && e.key === 'Enter') {\n handleClick();\n }\n }}\n tabIndex={props.clickable ? 0 : null}\n >\n {props.children}\n \n );\n};\n","import { faCheckCircle } from '@fortawesome/free-solid-svg-icons/faCheckCircle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React from 'react';\nimport './PartOfMyPlanBanner.scss';\n\nconst PartOfMyPlanBanner = () => (\n
\n \n
Part of my plan
\n
\n);\n\nexport default PartOfMyPlanBanner;\n","import React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport useMeasure from 'react-use/lib/useMeasure';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { ApplicationState } from '../../types/applicationState';\nimport { PdfPreviewDocument } from '../PdfPreviewDocument/PdfPreviewDocument';\nimport './PdfPreviewCard.scss';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\n\ninterface PdfPreviewCardProps {\n waitingBeforeLoadingPDF: boolean;\n}\n\nexport const PdfPreviewCard: React.FC = ({\n waitingBeforeLoadingPDF,\n}) => {\n const url = useSelector(\n (state: ApplicationState) => state.global.pdfPreviewUrl\n );\n const [pageCount, setPageCount] = useState(0);\n const [minHeightBackground, setMinHeightBackground] = useState(500);\n\n const handleLoadSuccess = (pdf: { numPages: number }) => {\n setMinHeightBackground(null);\n setPageCount(pdf.numPages);\n };\n const [modalBodyMeasurementRef, modalBodyBounds] = useMeasure();\n\n return (\n \n
\n \n Preview\n
\n {waitingBeforeLoadingPDF ? (\n \n ) : (\n \n )}\n \n );\n};\n","import React from 'react';\nimport { Document, Page } from 'react-pdf/dist/esm/entry.webpack';\nimport { UseMeasureRect } from 'react-use/lib/useMeasure';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\n\ninterface PdfPreviewDocumentProps {\n fileSource: string;\n bodyBounds: UseMeasureRect;\n handleLoadSuccess(pdf: { numPages: number }): void;\n pageCount: number;\n}\n\nexport const PdfPreviewDocument: React.FC = ({\n fileSource,\n bodyBounds,\n handleLoadSuccess,\n pageCount,\n}) => {\n if (!fileSource) return null;\n\n return (\n }\n onLoadSuccess={handleLoadSuccess}\n >\n {Array.from(Array(pageCount)).map((_, index: number) => (\n \n ))}\n \n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { ApplicationState } from '../types/applicationState';\nimport { VendorDocumentExtended, VendorPolicyDetails } from '../swagger';\n\nexport const selectVendorPolicyToEdit = createSelector(\n (state: ApplicationState) => state.policies.vendorPolicies,\n (state: ApplicationState) => state.policies.policyToEdit,\n (policies: VendorPolicyDetails[], policyToEdit: VendorDocumentExtended) => {\n if (policyToEdit?.documentType === 'policy') {\n const vendorPolicyId = policyToEdit?.documentableId;\n return policies.find(p => p.id === vendorPolicyId);\n }\n return policyToEdit;\n }\n);\n","import React, { MouseEventHandler } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport {\n FrameworkModel,\n FrameworkRelation,\n VendorPolicyDetails,\n} from '../../swagger';\nimport { selectVendorPolicyToEdit } from '../../selectors/selectVendorPolicyToEdit';\nimport { complianceControlsRoute } from '../Routes/Routes';\nimport { push } from 'connected-react-router';\nimport { setSelectedFramework } from '../../store/compliance/complianceSlice';\n\nimport './PolicyFrameworksList.scss';\n\nexport const PolicyFrameworksList: React.FC = () => {\n const baseCss = 'policyFrameworksList';\n const policy = useSelector(selectVendorPolicyToEdit) as VendorPolicyDetails;\n const dispatch = useDispatch();\n\n const navigateToFrameworkControls =\n (fw: FrameworkRelation['framework']): MouseEventHandler =>\n e => {\n e.stopPropagation();\n dispatch(setSelectedFramework(fw as FrameworkModel));\n dispatch(push(complianceControlsRoute));\n };\n\n if (!policy) return <>;\n\n if (policy.frameworksRelations.length < 1) {\n return (\n
\n There are no framework references for this policy yet\n
\n );\n }\n\n return (\n <>\n
\n
\n
Framework
\n
Category
\n
Reference
\n
\n {policy.frameworksRelations?.map(r => (\n
\n \n {r.framework.name}\n
\n
\n {r.controlCategory.name}\n
\n
{r.annexRef}
\n
\n ))}\n \n \n );\n};\n","import React, { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { SelectionOption } from '../../../types/selectionOption';\nimport { VendorDocumentExtended, VendorTeamModel } from '../../../swagger';\nimport { Lozenge } from '../../Lozenge/Lozenge';\n\nimport AsyncSelect from 'react-select/async';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport { fetchPolicyAttestationGroups } from '../../../store/policies/policiesThunks';\nimport debounce from 'debounce-promise';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport { fetchVendorTeams } from '../../../store/vendors/vendorsThunks';\nimport { reactSelectLightTheme } from '../../../functions/reactSelectCustomTheme';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport { PoliciesState } from '../../../store/policies/policiesState';\nimport { updatePolicyToEditField } from '../../../store/policies/policiesSlice';\n\nexport const PolicyTeamsSelector: React.FC = () => {\n const baseCss = 'policyTeamsSelector';\n const setSelectedTeams = (\n newTeams: PoliciesState['policyToEdit']['selectedTeams']\n ) => {\n dispatch(\n updatePolicyToEditField({\n selectedTeams: newTeams,\n })\n );\n };\n const selectedTeams = useSelector((state: ApplicationState) => {\n return (state.policies.policyToEdit || {}).selectedTeams || [];\n });\n\n const handleRemove = async (teamId: VendorTeamModel['id']) => {\n const updatedTeams = selectedTeams.filter(team => team.id !== teamId);\n setSelectedTeams(updatedTeams);\n };\n\n const handleChange = async (selectedOptions: SelectionOption[]) => {\n const teams = selectedOptions.map(option => ({\n id: option.value,\n name: option.label,\n }));\n setSelectedTeams(teams);\n };\n\n const dispatch = useAppDispatch();\n const policy = useSelector(\n (state: ApplicationState) =>\n state.policies.policyToEdit as VendorDocumentExtended\n );\n const currentDocument = policy;\n const searchTeams = debounce((query: string) => {\n return new Promise(resolve => {\n dispatch(\n fetchVendorTeams(\n false,\n (teams: VendorTeamModel[]) => {\n const formattedTeams = teams.map(team => ({\n label: team.name,\n value: team.id,\n }));\n resolve(formattedTeams);\n },\n query\n )\n );\n });\n }, 500);\n\n const promiseOptions = async (query: string) => {\n if (query === '' || !query || query.length < 1) {\n return [];\n }\n return searchTeams(query);\n };\n\n useEffect(() => {\n const fetchInitialTeams = async () => {\n const teams = await dispatch(\n fetchPolicyAttestationGroups({ id: currentDocument.id })\n ).unwrap();\n const teamsOptions = teams.map(team => ({\n id: team.id,\n name: team.name,\n }));\n\n dispatch(\n updatePolicyToEditField({\n initialTeamsFetched: true,\n selectedTeams: teamsOptions,\n })\n );\n };\n\n fetchInitialTeams();\n }, []);\n\n const { fetchPolicyAttestationGroupsStatus } = useSelector(\n (state: ApplicationState) => state.policies\n );\n\n const isLoadingTeams = fetchPolicyAttestationGroupsStatus === 'loading';\n\n return (\n
\n ({\n value: team.id,\n label: team.name,\n }))}\n noOptionsMessage={() => null}\n components={{\n DropdownIndicator: () => (\n
\n \n
\n ),\n IndicatorSeparator: () => null,\n ClearIndicator: () => null,\n }}\n theme={reactSelectLightTheme}\n placeholder=\"Start typing to search a Group\"\n />\n {(isLoadingTeams || selectedTeams.length > 0) && (\n <>\n
\n
\n Groups required to read\n
\n :{' '}\n {isLoadingTeams ? (\n
\n \n
\n ) : null}\n
\n\n
\n {selectedTeams.map(team => (\n handleRemove(team.id)}\n value={team.name}\n />\n ))}\n
\n \n )}\n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n AttestationFrequencyEnum,\n VendorDocumentExtended,\n} from '../../../swagger';\nimport { SelectionOption } from '../../../types/selectionOption';\nimport { AdoptechReactSelect2 } from '../../AdoptechReacSelect2/AdoptechReactSelect2';\nimport classNames from 'classnames';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport {\n openAttestationManagement,\n updatePolicyToEditField,\n} from '../../../store/policies/policiesSlice';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport {\n SentAttestationsTable,\n useSentAttestations,\n} from '../../SentAttestationsTable/SentAttestationsTable';\nimport './PolicyReadRequestsSection.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faExternalLink } from '@fortawesome/pro-light-svg-icons/faExternalLink';\nimport { PolicyTeamsSelector } from '../PolicyTeamsSelector/PolicyTeamsSelector';\nimport { fetchVendorDocumentAttestations } from '../../../store/vendors/vendorsThunks';\n\nexport const PolicyReadRequestsSection: React.FC = () => {\n const dispatch = useAppDispatch();\n const policy = useSelector(\n (state: ApplicationState) =>\n state.policies.policyToEdit as VendorDocumentExtended\n );\n const currentDocument = policy;\n\n useEffect(() => {\n if (!currentDocument?.id) return;\n dispatch(fetchVendorDocumentAttestations(currentDocument.id));\n }, [currentDocument?.id]);\n\n const baseCss = 'policyReadRequestsSection';\n\n const { attestationFrequency } = policy;\n\n const deprecatedValues = [\n AttestationFrequencyEnum.Annually,\n AttestationFrequencyEnum.Monthly,\n AttestationFrequencyEnum.Quarterly,\n ];\n const attestationFrequencyOptions = Object.values(\n AttestationFrequencyEnum\n ).map(value => {\n return { label: value, value };\n });\n const [\n selectedAttestationFrequencyOption,\n setSelectedAttestationFrequencyOption,\n ] = useState(\n attestationFrequencyOptions.find(\n option => option.value === attestationFrequency\n )\n );\n\n const { sentAttestations } = useSentAttestations(currentDocument);\n const { isFetchingVendorDocumentAttestations } = useSelector(\n (state: ApplicationState) => state.vendors.documentState\n );\n const {\n attestationStats: { attested },\n } = currentDocument;\n\n const total = (sentAttestations || []).length;\n\n const requestsHeader = `Shared with ${total} | Read by ${attested}`;\n const handleOpenOldRequestsModal = () =>\n dispatch(openAttestationManagement(policy));\n\n return (\n <>\n
\n When a new version of this policy is created, read requests will\n automatically be sent to all People in the selected Group(s) and new\n People added to the selected Group(s).\n
\n \n \n !deprecatedValues.includes(option.value)\n )}\n onChange={(selectedOption: SelectionOption) => {\n setSelectedAttestationFrequencyOption(selectedOption);\n dispatch(\n updatePolicyToEditField({\n attestationFrequency: selectedOption.value,\n })\n );\n }}\n value={selectedAttestationFrequencyOption}\n placeholder=\"Select deadline\"\n label=\"Set Read request deadline\"\n />\n \n\n {isFetchingVendorDocumentAttestations ? (\n
\n \n
\n ) : (\n <>\n {total > 0 && (\n \n {requestsHeader}\n \n \n )}\n
\n \n
\n \n )}\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n VendorDocumentApprovalStatusEnum,\n VendorDocumentExtended,\n} from '../../../swagger';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport { formatShortDate } from '../../../functions/formatShortDate';\nimport { fetchDocumentApprovals } from '../../../store/policies/policiesThunks';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport { DownloadDocumentModal } from '../../DownloadDocumentModal/DownloadDocumentModal';\nimport './PolicyVersionSection.scss';\n\nexport const PolicyVersionSection: React.FC = () => {\n const dispatch = useAppDispatch();\n const [isShowingDownloadModal, setIsShowingDownloadModal] = useState(false);\n const policy = useSelector(\n (state: ApplicationState) =>\n state.policies.policyToEdit as VendorDocumentExtended\n );\n\n const { isFetchingDocumentApprovals, approvals } = useSelector(\n (state: ApplicationState) => state.policies\n );\n\n const currentDocument = policy;\n const baseCss = 'policyVersionSection';\n\n useEffect(() => {\n policy?.id && dispatch(fetchDocumentApprovals(policy?.id));\n }, [policy?.id]);\n\n const approvedBy = (approvals || [])\n .filter(\n approval => approval.status === VendorDocumentApprovalStatusEnum.Current\n )\n .map(approval => approval.fullName)\n .join(', ');\n return (\n
\n
\n
Current version
:{' '}\n {currentDocument.version}\n
\n
\n
Approved by
:{' '}\n {isFetchingDocumentApprovals ? (\n \n ) : (\n approvedBy\n )}\n
\n
\n
Live date
:{' '}\n {formatShortDate(currentDocument.createdAt)}\n
\n\n setIsShowingDownloadModal(true)}\n >\n Download Document Audit\n \n\n {isShowingDownloadModal && (\n setIsShowingDownloadModal(false)}\n show\n vendorDocumentId={currentDocument.id}\n />\n )}\n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n hidePolicyDrawer,\n openAttestationManagement,\n} from '../../store/policies/policiesSlice';\nimport {\n patchPolicyAttestationGroups,\n patchVendorPolicy,\n skipAttestation,\n} from '../../store/policies/policiesThunks';\nimport { patchVendorDocument } from '../../store/vendors/vendorsThunks';\nimport {\n VendorDocumentExtended,\n VendorDocumentStatusEnum,\n VendorPolicyDetails,\n} from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechHS from '../AdoptechHS/AdoptechHS';\nimport { PolicyOverviewSection } from './PolicyOverviewSection/PolicyOverviewSection';\nimport { PolicyFrameworksList } from '../PolicyFrameworksList/PolicyFrameworksList';\nimport { Accordion } from 'react-bootstrap';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { PolicyReadRequestsSection } from './PolicyReadRequestsSection/PolicyReadRequestsSection';\nimport { useCanFeature } from '../../functions/access';\nimport { AccessObject } from '../../types/accessObject';\nimport { PolicyVersionSection } from './PolicyVersionSection/PolicyVersionSection';\nimport { showGlobalToast } from '../../store/global/globalSlice';\n\ninterface PolicyAccordionProps {\n title: string;\n defaultActiveKey?: string;\n}\nconst PolicyAccordion: React.FC<\n React.PropsWithChildren\n> = props => {\n return (\n \n \n {props.children}\n \n \n );\n};\nexport const PolicyDrawer: React.FC = () => {\n const dispatch = useDispatch();\n const {\n isPolicyDrawerShowing,\n isPolicyDrawerShowingForReadRequest,\n patchPolicyAttestationGroupsStatus,\n isPatchingVendorPolicy,\n } = useSelector((state: ApplicationState) => state.policies);\n\n const {\n documentState: { isPatchingVendorDocument },\n } = useSelector((state: ApplicationState) => state.vendors);\n const policy = useSelector(\n (state: ApplicationState) => state.policies.policyToEdit\n );\n const [policyCopy, setPolicyCopy] = useState(null);\n const onPolicyDrawerClose = () => {\n dispatch(hidePolicyDrawer());\n };\n const isADocument = (thing: VendorPolicyDetails | VendorDocumentExtended) =>\n Object.values(VendorDocumentStatusEnum).includes(\n (thing as VendorDocumentExtended).status\n );\n\n const canManageAttestations = useCanFeature(\n AccessObject.manage_read_requests\n );\n const isVendorDoc = policy && isADocument(policy);\n\n const showReadRequestsSection = isVendorDoc && canManageAttestations;\n useEffect(() => {\n const policyCopyData = { ...policy };\n setPolicyCopy(policyCopyData);\n }, [policy?.id, policy?.policyId, policy?.initialTeamsFetched]);\n\n const handleSkipReadRequest = () => {\n dispatch(\n skipAttestation({\n policyId: policy.id,\n })\n );\n };\n\n const handleSave = async () => {\n // send only changed attributes\n const params: VendorDocumentExtended | VendorPolicyDetails = {};\n\n if (policy.reviewFrequency !== policyCopy?.reviewFrequency) {\n params.reviewFrequency = policy.reviewFrequency;\n }\n\n if (policy.ownerId !== policyCopy?.ownerId) {\n params.ownerId = policy.ownerId;\n }\n\n if (isVendorDoc) {\n if (\n (policy as VendorDocumentExtended).attestationFrequency !==\n policyCopy?.attestationFrequency\n ) {\n (params as VendorDocumentExtended).attestationFrequency = (\n policy as VendorDocumentExtended\n ).attestationFrequency;\n }\n const hasFormChanges = Object.keys(params).length > 0;\n\n hasFormChanges &&\n (await dispatch(\n patchVendorDocument({\n documentId: policy.id,\n vendorDocument: (params || {}) as VendorDocumentExtended,\n })\n ));\n\n const teamsChanged = policy.selectedTeams !== policyCopy?.selectedTeams;\n\n if (teamsChanged) {\n await dispatch(\n patchPolicyAttestationGroups({\n id: policy.id,\n body: {\n groupIds: (policy.selectedTeams || []).map(team => team.id),\n },\n })\n );\n }\n\n if (isPolicyDrawerShowingForReadRequest) {\n handleSkipReadRequest();\n }\n\n dispatch(\n showGlobalToast('Policy document has been successfully updated.')\n );\n } else {\n const hasFormChanges = Object.keys(params).length > 0;\n hasFormChanges &&\n (await dispatch(\n patchVendorPolicy(\n policy.id,\n (params || {}) as VendorPolicyDetails,\n false\n )\n ));\n }\n dispatch(hidePolicyDrawer());\n };\n\n const Footer: React.FC = () => {\n const isBusy =\n patchPolicyAttestationGroupsStatus === 'loading' ||\n isPatchingVendorDocument ||\n isPatchingVendorPolicy;\n return (\n <>\n \n Cancel\n \n \n Save\n \n \n );\n };\n\n return isPolicyDrawerShowing && policy ? (\n }\n title={`${policy.name} Settings`}\n extraClass=\"adoptechHS--medium\"\n showConfirmationWarning\n noFormPadding\n >\n \n \n \n {showReadRequestsSection && (\n \n \n \n )}\n {isVendorDoc && (\n \n \n \n )}\n {isVendorDoc && (\n \n \n \n )}\n \n ) : null;\n};\n","import classNames from 'classnames';\nimport React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { capitaliseFirst } from '../../../functions/capitaliseFirst';\nimport { useOwnerOptions } from '../../../hooks/useOwnerOptions';\nimport { updatePolicyToEditField } from '../../../store/policies/policiesSlice';\nimport {\n ReviewFrequencyEnum,\n VendorDocumentExtended,\n VendorDocumentStatusEnum,\n VendorPolicyDetails,\n VendorPolicyDetailsStatusEnum,\n} from '../../../swagger';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { SelectionOption } from '../../../types/selectionOption';\nimport { AdoptechReactSelect2 } from '../../AdoptechReacSelect2/AdoptechReactSelect2';\nimport { AdoptechTextInput2 } from '../../AdoptechTextInput2/AdoptechTextInput2';\nimport './PolicyOverviewSection.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faInfoCircle } from '@fortawesome/pro-light-svg-icons';\nimport { formatShortDate } from '../../../functions/formatShortDate';\nimport moment, { DurationInputArg1, DurationInputArg2 } from 'moment';\nimport { selectLivePolicies } from '../../../selectors/selectLivePolicies';\n\nexport const calculateNextReviewDate = (\n createdAt: string,\n reviewFrequency: string\n): string => {\n const date = moment(createdAt);\n // ex: '5 months'\n const [periodCount, periodWord] = reviewFrequency.split(' ');\n return date\n .add(periodCount as DurationInputArg1, periodWord as DurationInputArg2)\n .toISOString();\n};\n\nexport interface PolicyOverviewSection {\n name: VendorPolicyDetails['name'] | VendorDocumentExtended['name'];\n owner: VendorPolicyDetails['owner'] | VendorDocumentExtended['owner'];\n overviewSectionLoaded: boolean;\n}\n\nexport const PolicyOverviewSection: React.FC = () => {\n const dispatch = useDispatch();\n const policy = useSelector(\n (state: ApplicationState) => state.policies.policyToEdit\n );\n const { name, owner, reviewFrequency, createdAt } = policy;\n\n const setOwnerId = (id: string) =>\n dispatch(updatePolicyToEditField({ ownerId: id }));\n\n const { users, ownerOptions } = useOwnerOptions({\n onlyAdminable: true,\n });\n\n const [selectedOwnerOption, setSelectedOwnerOption] =\n useState(\n ownerOptions.find(option => option.value === owner?.id)\n );\n\n const reviewFrequencyOptions = Object.values(ReviewFrequencyEnum).map(\n value => {\n return { label: value, value };\n }\n );\n const [selectedReviewFrequencyOption, setSelectedReviewFrequencyOption] =\n useState(\n reviewFrequencyOptions.find(option => option.value === reviewFrequency)\n );\n const baseCss = 'policyOverview';\n\n enum PolicyMode {\n Draft = 'draft',\n WaitingForApproval = 'waiting_for_approval',\n WaitingForAttestation = 'waiting_for_attestation',\n Live = 'live',\n Rejected = 'rejected',\n Available = 'available',\n }\n\n const selectPolicyMode = () => {\n switch (policy.status) {\n case VendorPolicyDetailsStatusEnum.InProgress:\n return PolicyMode.Draft;\n case VendorPolicyDetailsStatusEnum.Available:\n return PolicyMode.Available;\n case VendorPolicyDetailsStatusEnum.Completed:\n case VendorDocumentStatusEnum.Complete:\n return PolicyMode.Live;\n case VendorDocumentStatusEnum.Approval:\n return PolicyMode.WaitingForApproval;\n case VendorDocumentStatusEnum.Attestation:\n return PolicyMode.WaitingForAttestation;\n case VendorDocumentStatusEnum.Rejected:\n return PolicyMode.Rejected;\n default:\n return PolicyMode.Draft;\n }\n };\n\n const policyMode = selectPolicyMode();\n const livePolicies = useSelector(selectLivePolicies);\n const isLive = livePolicies\n .map(livePolicy => livePolicy.id)\n .includes(policy.id);\n const nextReviewDate =\n isLive && reviewFrequency && createdAt\n ? calculateNextReviewDate(createdAt, reviewFrequency)\n : null;\n\n return (\n
\n
\n
\n {capitaliseFirst(policyMode)}\n
\n
\n\n
\n {}}\n type=\"text\"\n label=\"Policy name\"\n value={name}\n disabled\n />\n
\n\n
\n {\n const selectedOwner = users.find(\n user => user.id === selectedOption.value\n );\n setOwnerId(selectedOwner.id);\n setSelectedOwnerOption(selectedOption);\n }}\n value={selectedOwnerOption}\n placeholder=\"Select owner\"\n label=\"Owner\"\n showUserAvatar\n />\n {\n setSelectedReviewFrequencyOption(selectedOption);\n dispatch(\n updatePolicyToEditField({\n reviewFrequency: selectedOption.value,\n })\n );\n }}\n value={selectedReviewFrequencyOption}\n placeholder=\"Set review frequency\"\n label=\"Next review\"\n bottomComponent={\n nextReviewDate ? (\n
\n \n {`Next review on ${formatShortDate(nextReviewDate)}`}\n
\n ) : null\n }\n />\n
\n
\n );\n};\n","import classNames from 'classnames';\nimport React, { useEffect, useState } from 'react';\nimport { Transition } from 'react-transition-group';\nimport './ProgressBar.scss';\n\nexport interface ProgressBarProps {\n disabled?: boolean;\n previousProgress?: number;\n progress: number;\n hasRadius?: boolean;\n}\n\nexport const ProgressBar: React.FC = props => {\n const [progress, setProgress] = useState(0);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setProgress(props.disabled ? 0 : props.progress);\n }, 100);\n return () => clearTimeout(timer);\n });\n\n const progressClasses = classNames({\n progressBar: true,\n 'progressBar--progress': true,\n [`progressBar--progress-${progress}`]: true,\n 'progressBar--progress-full': progress === 100,\n 'progressBar--radius': props.hasRadius,\n });\n\n const defaultStyle = {\n WebkitTransition: 'width 1s ease-in-out',\n MozTransition: 'width 1s ease-in-out',\n OTransition: 'width 1s ease-in-out',\n transition: 'width 1s ease-in-out',\n width: 0,\n };\n\n const transitionStyle = {\n entering: { width: `${progress}%` },\n entered: { width: `${progress}%` },\n exiting: { width: 0 },\n exited: { width: `${props.previousProgress}%` },\n unmounted: { width: 0 },\n };\n\n return (\n 0} timeout={1000}>\n {state => (\n \n )}\n \n );\n};\n\nProgressBar.defaultProps = {\n previousProgress: 0,\n};\n","import React, { useState } from 'react';\nimport { ReportModel } from '../../../swagger/models/ReportModel';\nimport { useDispatch } from 'react-redux';\nimport { NoDataText } from '../../NoDataText/NoDataText';\nimport AdoptechGridTable from '../../AdoptechGridTable/AdoptechGridTable';\nimport { SortableTableHeader } from '../../SortableTableHeader/SortableTableHeader';\nimport { GenericModal } from '../../GenericModal/GenericModal';\nimport {\n deleteReport,\n fetchReportDocument,\n} from '../../../store/reports/reportsThunks';\nimport { Grid } from '../../../types/grid';\nimport AdoptechOverflowLine from '../../AdoptechOverflowLine/AdoptechOverflowLine';\nimport { UserAvatar } from '../../UserAvatar/UserAvatar';\nimport { formatShortDate } from '../../../functions/formatShortDate';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { AdoptechTooltip } from '../../AdoptechTooltip/AdoptechTooltip';\nimport { faCloudDownload } from '@fortawesome/pro-light-svg-icons/faCloudDownload';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport './ReportsList.scss';\nimport { AdoptechPanel } from '../../AdoptechPanel/AdoptechPanel';\nimport { push } from 'connected-react-router';\nimport { reportsPreviewRoute } from '../../Routes/Routes';\nimport { useCanFeature } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport { registerTitle } from '../../../functions/registerTitle';\n\ninterface ReportsListProps {\n reports: ReportModel[];\n}\nexport const downloadReportFile = (url: string, name: string) => {\n const tempLink = document.createElement('a');\n tempLink.href = url;\n tempLink.setAttribute('download', `${name}.pdf`);\n tempLink.click();\n};\nexport const ReportsList: React.FC = props => {\n const [reportIdToDelete, setReportIdToBeDeleted] =\n useState();\n const baseCss = 'reportsList';\n const dispatch = useDispatch();\n const clickPreviewHandler =\n (report: ReportModel) => (e: React.MouseEvent) => {\n dispatch(push(reportsPreviewRoute.replace(':id', report.id)));\n e.stopPropagation();\n };\n\n const clickDownloadHandler =\n (report: ReportModel) => (e: React.MouseEvent) => {\n dispatch(\n fetchReportDocument({\n id: report.id,\n successCallback: (url: string) => {\n downloadReportFile(url, report.name);\n },\n })\n );\n e.stopPropagation();\n };\n\n const clickDeleteHandler = (report: ReportModel) => (e: React.MouseEvent) => {\n setReportIdToBeDeleted(report.id);\n e.stopPropagation();\n };\n const canManageReports = useCanFeature(AccessObject.reports_manage);\n\n if (props.reports.length < 1) {\n return (\n \n \n \n );\n }\n\n return (\n \n
\n \n \n columnName=\"name\"\n grid={Grid.Reports}\n label=\"Name\"\n notInTable\n />\n \n columnName=\"type\"\n grid={Grid.Reports}\n label=\"Type\"\n notInTable\n />\n \n columnName=\"owner\"\n grid={Grid.Reports}\n label=\"Owner\"\n notInTable\n />\n \n columnName=\"createdAt\"\n grid={Grid.Reports}\n label=\"Date\"\n notInTable\n />\n
Actions
\n
\n }\n >\n {props.reports.map(report => {\n return (\n \n
{report.name}
\n
\n
\n {registerTitle(report.type.replace('Report::', '')).replace(\n 'Statement Of Applicability',\n 'SoA'\n )}\n
\n
\n \n \n \n
{formatShortDate(report.createdAt)}
\n
\n \n \n \n \n \n \n {canManageReports && (\n \n \n \n )}\n
\n \n );\n })}\n \n\n setReportIdToBeDeleted(undefined)}\n onClose={() => {\n dispatch(deleteReport(reportIdToDelete));\n setReportIdToBeDeleted(undefined);\n }}\n show={!!reportIdToDelete}\n showCancelButton\n title=\"Confirm delete?\"\n >\n
\n

{props.reports.find(p => p.id === reportIdToDelete)?.name}

\n
\n
Click CONFIRM to permanently delete this report
\n \n \n
\n );\n};\n","import React from 'react';\nimport { AdoptechRadioButtonsGroup } from '../../AdoptechRadioButtonsGroup/AdoptechRadioButtonsGroup';\nimport { ReportSectionProps } from './ReportsManageDrawer';\nimport { ReportCreatePayloadReportVersionBumpEnum } from '../../../swagger/models/ReportCreatePayloadReport';\n\nexport const ReportVersionField: React.FC = ({\n formData,\n updateField,\n updateForm,\n}) => {\n const baseCss = 'reportsManageDrawer';\n return (\n <>\n
\n
\n Would you like this to be a formal version controlled document?\n
\n
\n {\n updateForm({\n hasVersion: value === 'yes',\n versionBump:\n value === 'yes'\n ? ReportCreatePayloadReportVersionBumpEnum.Minor\n : null,\n });\n }}\n />\n
\n
\n {formData.versionBump && (\n
\n
\n Please select whether this is a minor or major version.\n
\n
\n {\n updateField('versionBump', value);\n }}\n />\n
\n
\n )}\n \n );\n};\n","import React from 'react';\nimport { ReportForm, ReportSectionProps } from './ReportsManageDrawer';\nimport { AdoptechReactSelect2 } from '../../AdoptechReacSelect2/AdoptechReactSelect2';\nimport { useOwnerOptions } from '../../../hooks/useOwnerOptions';\n\nexport const ReportOwnerField: React.FC = ({\n formData,\n updateField,\n updateForm,\n}) => {\n const { ownerOptions } = useOwnerOptions({\n onlyAdminable: true,\n });\n const hasError = (field: keyof ReportForm) => !formData[field];\n const baseCss = 'reportsManageDrawer';\n return (\n
\n
\n updateField('ownerId', e.value)}\n value={ownerOptions.find(option => option.value == formData.ownerId)}\n placeholder=\"Select owner\"\n showUserAvatar\n showUserEmail={false}\n />\n
\n
\n );\n};\n","import React from 'react';\nimport { ReportForm, ReportSectionProps } from './ReportsManageDrawer';\nimport { AdoptechTextArea2 } from '../../AdoptechTextArea2/AdoptechTextArea2';\nimport { faPen } from '@fortawesome/pro-solid-svg-icons';\n\nexport const ReportSummaryField: React.FC = ({\n formData,\n updateField,\n updateForm,\n}) => {\n const hasError = (field: keyof ReportForm) => !formData[field];\n const baseCss = 'reportsManageDrawer';\n\n let description;\n switch (formData.type) {\n case 'Report::LegalRegister':\n description = `Provide details of changes to the legislation or jurisdictions covered since the last review and outline how the register was/ will be reviewed. For example “Since our last Legal Register review the company has decided to expand into Europe, as a result a number of additional laws in the jurisdiction of France have been added to the register. The register was reviewed by the senior management team in our quarterly security management meeting held on 01/04/2023 and all legislation and regulations were approved”`;\n break;\n case 'Report::PestelRegister':\n description = `Provide details of any major changes in the business risks and opportunities since the last report, any significant strategic decisions being discussed or external factors affecting the strategic direction of the company. For example “Since our last PESTEL review the company has decided to expand into Europe, as a result a number of additional risks, and opportunities have been added to the register. The register was reviewed by the senior management team in our quarterly security management meeting held on 01/04/2023 and all risks and opportunities have subsequently been approved.”`;\n break;\n case 'Report::RiskRegister':\n description = `Provide details of any major changes in risk since the last report, any significant tasks completed, overdue or new tasks added. For example \"Since our last risk review the company implemented a SaaS service on GCP, as a result a number of addition risks, controls and tasks have been added to the register. The register was reviewed by the senior management team in our quarterly security management meeting held on 01/10/2022 and all risks have subsequently been approved.\"`;\n break;\n case 'Report::VendorRegister':\n description = `Provide details of changes to the vendor register since the last review and outline how the register was/ will be reviewed. For example “Since our last vendor register review vendor A has been added, the risk profile of vendor B was amended and vendor C has been set to inactive. The register was reviewed by the senior management team in our quarterly security management meeting held on 01/04/2023.”`;\n break;\n default:\n alert(`Description not found for report type ${formData.type}`);\n }\n\n return (\n
\n
\n Enter a summary or comments to support the report.\n
\n
{description}
\n
\n updateField('summary', e.currentTarget.value)}\n icon={faPen}\n />\n
\n
\n );\n};\n","import React from 'react';\nimport { ReportForm, ReportSectionProps } from '../ReportsManageDrawer';\nimport { ReportVersionField } from '../ReportVersionField';\nimport { ReportOwnerField } from '../ReportOwnerField';\nimport { ReportSummaryField } from '../ReportSummaryField';\n\nexport const legalSectionValid = (formData: ReportForm): boolean => {\n const versionSelected =\n formData.hasVersion === false || formData.hasVersion === true;\n return versionSelected && formData.ownerId && formData.summary ? true : false;\n};\n\nexport const LegalRegisterSection: React.FC = ({\n formData,\n updateField,\n updateForm,\n}) => {\n const sectionProps = { formData, updateField, updateForm };\n return (\n
\n \n \n \n
\n );\n};\n","import React from 'react';\nimport { ReportForm, ReportSectionProps } from '../ReportsManageDrawer';\nimport { ReportVersionField } from '../ReportVersionField';\nimport { ReportOwnerField } from '../ReportOwnerField';\nimport { ReportSummaryField } from '../ReportSummaryField';\nimport { AdoptechRadioButtonsGroup } from '../../../AdoptechRadioButtonsGroup/AdoptechRadioButtonsGroup';\n\nexport const pestelSectionValid = (formData: ReportForm): boolean => {\n const incompleteActionsSelected =\n formData.includeIncompleteActions === false ||\n formData.includeIncompleteActions === true;\n return incompleteActionsSelected && formData.ownerId && formData.summary\n ? true\n : false;\n};\n\nexport const PestelRegisterSection: React.FC = ({\n formData,\n updateField,\n updateForm,\n}) => {\n const sectionProps = { formData, updateField, updateForm };\n const baseCss = 'reportsManageDrawer';\n return (\n
\n
\n
\n Would you like to include a table of incomplete PESTEL actions?\n
\n
\n {\n updateField('includeIncompleteActions', value === 'yes');\n }}\n />\n
\n
\n \n \n \n
\n );\n};\n","import React from 'react';\nimport { ReportForm, ReportSectionProps } from '../ReportsManageDrawer';\nimport { ReportVersionField } from '../ReportVersionField';\nimport { ReportOwnerField } from '../ReportOwnerField';\nimport { ReportSummaryField } from '../ReportSummaryField';\nimport { AdoptechRadioButtonsGroup } from '../../../AdoptechRadioButtonsGroup/AdoptechRadioButtonsGroup';\n\nexport const riskSectionValid = (formData: ReportForm): boolean => {\n const includeUnapprovedRisks =\n formData.includeUnapprovedRisks === false ||\n formData.includeUnapprovedRisks === true;\n return includeUnapprovedRisks && formData.ownerId && formData.summary\n ? true\n : false;\n};\n\nexport const RiskRegisterSection: React.FC = ({\n formData,\n updateField,\n updateForm,\n}) => {\n const sectionProps = { formData, updateField, updateForm };\n const baseCss = 'reportsManageDrawer';\n return (\n
\n
\n
\n Do you wish to include or exclude unapproved risks in your report?\n
\n
\n Ideally all risks should be approved following a review and prior to\n generating a report.\n
\n
\n {\n updateField('includeUnapprovedRisks', value === 'include');\n }}\n />\n
\n
\n \n \n \n
\n );\n};\n","import React from 'react';\nimport { ReportForm, ReportSectionProps } from '../ReportsManageDrawer';\nimport { ReportVersionField } from '../ReportVersionField';\nimport { ReportOwnerField } from '../ReportOwnerField';\nimport { ReportSummaryField } from '../ReportSummaryField';\n\nexport const vendorSectionValid = (formData: ReportForm): boolean => {\n const versionSelected =\n formData.hasVersion === false || formData.hasVersion === true;\n return !!(versionSelected && formData.ownerId && formData.summary);\n};\n\nexport const VendorRegisterSection: React.FC = ({\n formData,\n updateField,\n updateForm,\n}) => {\n const sectionProps = { formData, updateField, updateForm };\n return (\n
\n \n \n \n
\n );\n};\n","import React, { useEffect } from 'react';\nimport { ReportForm, ReportSectionProps } from '../ReportsManageDrawer';\nimport { ReportVersionField } from '../ReportVersionField';\nimport { ReportOwnerField } from '../ReportOwnerField';\nimport { AdoptechRadioButtonsGroup } from '../../../AdoptechRadioButtonsGroup/AdoptechRadioButtonsGroup';\nimport { ReportCreatePayloadReportFrameworkEnum } from '../../../../swagger/models/ReportCreatePayloadReport';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\n\nexport const soaSectionValid = (formData: ReportForm): boolean => {\n const hasVersionSelected =\n formData.hasVersion === false || formData.hasVersion === true;\n return hasVersionSelected && formData.ownerId && formData.framework\n ? true\n : false;\n};\n\nexport const SoaSection: React.FC = ({\n formData,\n updateField,\n updateForm,\n}) => {\n const sectionProps = { formData, updateField, updateForm };\n const baseCss = 'reportsManageDrawer';\n const frameworkParam = useQueryParams().get(\n 'framework'\n ) as ReportCreatePayloadReportFrameworkEnum;\n\n useEffect(() => {\n frameworkParam && updateField('framework', frameworkParam);\n }, []);\n return (\n
\n \n
\n
\n Is this report for ISO 27001:2013 or 2022?\n
\n
\n {\n updateField('framework', value);\n }}\n />\n
\n
\n \n
\n );\n};\n","import React from 'react';\nimport { ReportForm, ReportSectionProps } from '../ReportsManageDrawer';\nimport { ReportVersionField } from '../ReportVersionField';\nimport { ReportOwnerField } from '../ReportOwnerField';\n\nexport const soaSummarySectionValid = (formData: ReportForm): boolean => {\n const hasVersionSelected =\n formData.hasVersion === false || formData.hasVersion === true;\n return !!(hasVersionSelected && formData.ownerId);\n};\n\nexport const SoaSummarySection: React.FC = ({\n formData,\n updateField,\n updateForm,\n}) => {\n const sectionProps = { formData, updateField, updateForm };\n return (\n
\n \n \n
\n );\n};\n","import React from 'react';\nimport { ReportForm, ReportSectionProps } from './ReportsManageDrawer';\nimport { faPen } from '@fortawesome/pro-solid-svg-icons';\nimport { AdoptechTextInput2 } from '../../AdoptechTextInput2/AdoptechTextInput2';\n\nexport const ReportNameField: React.FC = ({\n formData,\n updateField,\n updateForm,\n}) => {\n const hasError = (field: keyof ReportForm) => !formData[field];\n const baseCss = 'reportsManageDrawer';\n\n return (\n
\n
\n updateField('name', e.currentTarget.value)}\n icon={faPen}\n />\n
\n
\n );\n};\n","import React from 'react';\nimport { ReportSectionProps } from './ReportsManageDrawer';\nimport { DropZone } from '../../DropZone/DropZone';\n\nexport const ReportFileField: React.FC = ({\n updateField,\n}) => {\n const setFile = (file: File) => updateField('file', file);\n const baseCss = 'reportsManageDrawer';\n return (\n
\n \n
\n );\n};\n","import React from 'react';\nimport { ReportForm, ReportSectionProps } from './ReportsManageDrawer';\nimport { AdoptechDatePicker2 } from '../../AdoptechDatePicker2/AdoptechDatePicker2';\nimport { getDate } from '../../../functions/getDate';\n\nexport const ReportCompletionField: React.FC = ({\n formData,\n updateField,\n updateForm,\n}) => {\n const hasError = (field: keyof ReportForm) => !formData[field];\n const baseCss = 'reportsManageDrawer';\n\n return (\n
\n
\n {\n updateField('completedAt', value.toISOString());\n }}\n placeHolderText=\"Select the date the report was completed\"\n />\n
\n
\n );\n};\n","import React from 'react';\nimport { ReportForm, ReportSectionProps } from './ReportsManageDrawer';\nimport { AdoptechTextInput2 } from '../../AdoptechTextInput2/AdoptechTextInput2';\n\nconst format = (v: string) =>\n (/\\d+\\.\\d+/.exec(v) || /\\d+\\./.exec(v) || /\\d+/.exec(v) || '')[0];\n\nexport const formatFinalVersion = (v: string) => {\n if (/\\d+\\.\\d+/.test(v)) return v;\n if (/\\d+/.test(v)) return `${/\\d+/.exec(v)}.0`;\n return '1.0';\n};\n\nexport const ReportFreeVersionField: React.FC = ({\n formData,\n updateField,\n updateForm,\n}) => {\n const baseCss = 'reportsManageDrawer';\n\n const onChange = (e: React.ChangeEvent) =>\n updateField('version', format(e.currentTarget.value));\n\n const onBlur = (e: React.ChangeEvent) =>\n updateField('version', formatFinalVersion(e.currentTarget.value));\n\n const hasError = (field: keyof ReportForm) => !formData[field];\n return (\n <>\n
\n
\n \n
\n
\n \n );\n};\n","import React from 'react';\nimport { ReportForm, ReportSectionProps } from '../ReportsManageDrawer';\nimport { ReportNameField } from '../ReportNameField';\nimport { ReportOwnerField } from '../ReportOwnerField';\nimport { ReportFileField } from '../ReportFileField';\nimport { ReportCompletionField } from '../ReportCompletionField';\nimport { ReportFreeVersionField } from '../ReportFreeVersionField';\n\nexport const uploadedReportSectionValid = (formData: ReportForm): boolean => {\n return !!(formData.version && formData.file && formData.ownerId);\n};\n\nexport const UploadedReportSection: React.FC = ({\n formData,\n updateField,\n updateForm,\n}) => {\n const sectionProps = { formData, updateField, updateForm };\n return (\n
\n \n \n \n \n \n
\n );\n};\n","import React, { useState } from 'react';\nimport {\n ReportCreatePayloadReport,\n ReportModelTypeEnum,\n} from '../../../swagger';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport { useDispatch, useSelector } from 'react-redux';\nimport AdoptechHS from '../../AdoptechHS/AdoptechHS';\nimport {\n LegalRegisterSection,\n legalSectionValid,\n} from './LegalRegisterSection/LegalRegisterSection';\nimport {\n PestelRegisterSection,\n pestelSectionValid,\n} from './PestelRegisterSection/PestelRegisterSection';\nimport {\n RiskRegisterSection,\n riskSectionValid,\n} from './RiskRegisterSection/RiskRegisterSection';\nimport {\n VendorRegisterSection,\n vendorSectionValid,\n} from './VendorRegisterSection/VendorRegisterSection';\nimport { SoaSection, soaSectionValid } from './SoaSection/SoaSection';\nimport {\n SoaSummarySection,\n soaSummarySectionValid,\n} from './SoaSummarySection/SoaSummarySection';\nimport './ReportsManageDrawer.scss';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n createReport,\n uploadReport,\n} from '../../../store/reports/reportsThunks';\nimport { reportsRoute } from '../../Routes/Routes';\nimport { push } from 'connected-react-router';\nimport { registerTitle } from '../../../functions/registerTitle';\nimport {\n UploadedReportSection,\n uploadedReportSectionValid,\n} from './UploadedReportSection/UploadedReportSection';\nimport { formatFinalVersion as formatFinalVersion } from './ReportFreeVersionField';\n\ninterface ReportsManageDrawerProps {\n onClose(): void;\n type: `${ReportModelTypeEnum}`;\n}\n\nexport interface ReportForm extends ReportCreatePayloadReport {\n completedAt: string;\n file: File;\n hasVersion: boolean;\n name: string;\n version: string;\n}\ntype updateReportFieldType = (\n field: keyof ReportForm,\n value: ValueOf\n) => void;\n\ntype updateReportFormType = (newForm: Partial) => void;\n\nexport interface ReportSectionProps {\n formData: ReportForm;\n updateField: updateReportFieldType;\n updateForm: updateReportFormType;\n}\ntype ValueOf = T[keyof T];\n\nexport const ReportsManageDrawer: React.FC = ({\n onClose,\n type,\n}) => {\n const [formData, setFormData] = useState({ type } as ReportForm);\n const updateField: updateReportFieldType = (field, value) => {\n setFormData({\n ...formData,\n [field]: value,\n });\n };\n\n const updateForm: updateReportFormType = newForm => {\n setFormData({\n ...formData,\n ...newForm,\n });\n };\n\n const { isCreatingReport } = useSelector(\n (state: ApplicationState) => state.reports\n );\n const dispatch = useDispatch();\n const formIsValid = () => {\n if (formData.type === ReportModelTypeEnum.LegalRegister)\n return legalSectionValid(formData);\n if (formData.type === ReportModelTypeEnum.PestelRegister)\n return pestelSectionValid(formData);\n if (formData.type === ReportModelTypeEnum.RiskRegister)\n return riskSectionValid(formData);\n if (formData.type === ReportModelTypeEnum.StatementOfApplicability)\n return soaSectionValid(formData);\n if (formData.type === ReportModelTypeEnum.StatementOfApplicabilitySummary)\n return soaSummarySectionValid(formData);\n if (formData.type === ReportModelTypeEnum.VendorRegister)\n return vendorSectionValid(formData);\n if (formData.type === ReportModelTypeEnum.Uploaded)\n return uploadedReportSectionValid(formData);\n console.error(`form type ${formData.type} is not supported`);\n return false;\n };\n\n const onSuccess = () => {\n dispatch(push(reportsRoute)); // cleanup all get params\n onClose();\n };\n\n const isReportUploading = formData.type === 'Report::Uploaded';\n\n const onConfirm = () => {\n const version = formatFinalVersion(formData.version);\n const { hasVersion, ...otherFields } = formData;\n const payload = { version, ...otherFields };\n const thunk = isReportUploading ? uploadReport : createReport;\n dispatch(thunk(payload, onSuccess));\n };\n\n const Footer = (\n <>\n \n Cancel\n \n \n {isReportUploading ? 'Upload' : 'Add'}\n \n \n );\n\n const sectionProps = { formData, updateField, updateForm };\n let section;\n switch (type) {\n case 'Report::LegalRegister':\n section = ;\n break;\n case 'Report::PestelRegister':\n section = ;\n break;\n case 'Report::RiskRegister':\n section = ;\n break;\n case 'Report::StatementOfApplicability':\n section = ;\n break;\n case 'Report::StatementOfApplicabilitySummary':\n section = ;\n break;\n case 'Report::VendorRegister':\n section = ;\n break;\n case 'Report::Uploaded':\n section = ;\n break;\n default:\n console.error(`Report type ${type} is not supported yet`);\n }\n\n const baseCss = 'reportsManageDrawer';\n\n return (\n \n {section}\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { AdoptechPanel } from '../../AdoptechPanel/AdoptechPanel';\nimport { Lozenge } from '../../Lozenge/Lozenge';\nimport { ReportModel, ReportModelTypeEnum } from '../../../swagger';\nimport { AdoptechReactSelect } from '../../AdoptechReactSelect/AdoptechReactSelect';\nimport { AdoptechTextInput } from '../../AdoptechTextInput/AdoptechTextInput';\nimport { faSearch } from '@fortawesome/pro-solid-svg-icons';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { setReportsSearch } from '../../../store/reports/reportsSlice';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { Dropdown } from 'react-bootstrap';\nimport { AdoptechDropdownToggle } from '../../AdoptechDropdownToggle/AdoptechDropdownToggle';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport './ReportsHeader.scss';\nimport { useQueryParams } from '../../../hooks/useQueryParams';\nimport { useHistory } from 'react-router-dom';\nimport { ReportsManageDrawer } from '../ReportsManageDrawer/ReportsManageDrawer';\nimport { useCanFeature } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus';\nimport { reactSelectLightStyle } from '../../../functions/reactSelectCustomTheme';\n\ninterface ReportsHeaderProps {\n reports: ReportModel[];\n}\nexport type reportTypeValues =\n | 'all'\n | 'legal'\n | 'pestel'\n | 'risk'\n | 'soa'\n | 'soa_summary'\n | 'vendor';\n\ninterface TypeOption {\n label: string;\n value: reportTypeValues;\n enum: ReportModelTypeEnum;\n}\n\nexport const typeOptions: TypeOption[] = [\n {\n label: 'All Reports',\n value: 'all',\n enum: null,\n },\n {\n label: 'Legal Register reports',\n value: 'legal',\n enum: ReportModelTypeEnum.LegalRegister,\n },\n {\n label: 'PESTEL Reports',\n value: 'pestel',\n enum: ReportModelTypeEnum.PestelRegister,\n },\n {\n label: 'Risk Register Reports',\n value: 'risk',\n enum: ReportModelTypeEnum.RiskRegister,\n },\n {\n label: 'SoA Reports',\n value: 'soa',\n enum: ReportModelTypeEnum.StatementOfApplicability,\n },\n {\n label: 'SoA Summary Reports',\n value: 'soa_summary',\n enum: ReportModelTypeEnum.StatementOfApplicabilitySummary,\n },\n {\n label: 'Vendor Register Reports',\n value: 'vendor',\n enum: ReportModelTypeEnum.VendorRegister,\n },\n];\n\nexport const ReportsHeader: React.FC = props => {\n const baseCss = 'reportsHeader';\n const search = useSelector(\n (state: ApplicationState) => state.reports.reportsSearch\n );\n const onTypeChange = (param: reportTypeValues) => {\n history.push({\n pathname: window.location.pathname,\n search: `?type=${param}`,\n });\n };\n const canManageReports = useCanFeature(AccessObject.reports_manage);\n\n const dispatch = useDispatch();\n const [isShowingAddDrawer, setIsShowingAddDrawer] = useState<\n false | ReportModelTypeEnum\n >(false);\n\n const reportTypeParam = useQueryParams().get('type') as reportTypeValues;\n const addReportTypeParam = useQueryParams().get(\n 'add-type'\n ) as reportTypeValues;\n\n useEffect(() => {\n const addDrawerType = () => {\n if (addReportTypeParam === 'legal')\n return ReportModelTypeEnum.LegalRegister;\n if (addReportTypeParam === 'pestel')\n return ReportModelTypeEnum.PestelRegister;\n if (addReportTypeParam === 'risk')\n return ReportModelTypeEnum.RiskRegister;\n if (addReportTypeParam === 'soa')\n return ReportModelTypeEnum.StatementOfApplicability;\n if (addReportTypeParam === 'soa_summary')\n return ReportModelTypeEnum.StatementOfApplicabilitySummary;\n if (addReportTypeParam === 'vendor')\n return ReportModelTypeEnum.VendorRegister;\n\n alert(`type param ${addReportTypeParam} is unsupported`);\n };\n addReportTypeParam && setIsShowingAddDrawer(addDrawerType());\n }, [addReportTypeParam]);\n\n const selectedType = reportTypeParam || 'all';\n\n const history = useHistory();\n return (\n
\n \n
\n Reports\n \n
\n
\n
\n
Filter
\n {\n onTypeChange(selectOption.value as reportTypeValues);\n }}\n value={typeOptions.find(option => option.value === selectedType)}\n placeholder=\"All Reports\"\n additionalStyling={reactSelectLightStyle}\n />\n
\n
\n
\n dispatch(setReportsSearch(e.currentTarget.value))}\n type=\"text\"\n placeholder=\"Search for reports\"\n icon={faSearch}\n additionalClass=\"adoptechTextInput-search\"\n />\n
\n
\n {canManageReports && (\n \n \n \n Add new\n \n \n \n \n setIsShowingAddDrawer(ReportModelTypeEnum.LegalRegister)\n }\n >\n Legal Register\n \n \n setIsShowingAddDrawer(ReportModelTypeEnum.PestelRegister)\n }\n >\n PESTEL Register\n \n \n setIsShowingAddDrawer(ReportModelTypeEnum.RiskRegister)\n }\n >\n Risk Register\n \n \n setIsShowingAddDrawer(\n ReportModelTypeEnum.StatementOfApplicability\n )\n }\n >\n SoA\n \n \n setIsShowingAddDrawer(\n ReportModelTypeEnum.StatementOfApplicabilitySummary\n )\n }\n >\n SoA Summary\n \n \n setIsShowingAddDrawer(ReportModelTypeEnum.VendorRegister)\n }\n >\n Vendor Register\n \n \n setIsShowingAddDrawer(ReportModelTypeEnum.Uploaded)\n }\n >\n Upload Report\n \n \n \n )}\n {isShowingAddDrawer && (\n setIsShowingAddDrawer(false)}\n />\n )}\n \n
\n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport Fuse from 'fuse.js';\nimport { sort } from '../../functions/sort';\nimport { sortByDate } from '../../functions/sortByDate';\nimport { sortByOwner } from '../../functions/sortByOwner';\nimport { ReportModel } from '../../swagger/models/ReportModel';\nimport { VendorUser } from '../../swagger/models/VendorUser';\nimport { ApplicationState } from '../../types/applicationState';\nimport { ColumnSort } from '../../types/columnSort';\nimport { Grid } from '../../types/grid';\nimport { selectSortSettings } from '../selectSortSettings';\nimport {\n reportTypeValues,\n typeOptions,\n} from '../../components/Reports/ReportsHeader/ReportsHeader';\n\nconst sorts = (a: ReportModel, b: ReportModel, columnSort: ColumnSort) => {\n const typedColumn = columnSort.name as keyof ReportModel;\n\n if (typedColumn === 'owner') {\n return sortByOwner(\n a[typedColumn] as VendorUser,\n b[typedColumn] as VendorUser,\n columnSort.direction\n );\n }\n\n if (typedColumn === 'createdAt') {\n return sortByDate(a[typedColumn], b[typedColumn], columnSort.direction);\n }\n\n return sort(a[typedColumn] || '', b[typedColumn] || '', columnSort.direction);\n};\n\nexport const filteredByTextsReports = (\n items: ReportModel[],\n searchText: string\n) => {\n if (!items) return [];\n if (!searchText) return items;\n\n const fuseTask = new Fuse(items, {\n ignoreLocation: true,\n includeScore: true,\n keys: ['name', 'owner.email', 'owner.fullName', 'createdAt', 'type'],\n threshold: 0,\n });\n return fuseTask.search(searchText).map(x => x.item);\n};\n\nconst filteredByTypeReports = (\n reports: ReportModel[],\n selectedType: reportTypeValues\n) => {\n return reports.filter(report => {\n if (!selectedType || selectedType === 'all') return true;\n const option = typeOptions.find(type => type.value === selectedType);\n return option.enum === report.type;\n });\n};\n\nexport const selectsReports = (\n searchText: string,\n selectedType: reportTypeValues\n) =>\n createSelector(\n (state: ApplicationState) => state.reports.reports,\n selectSortSettings(Grid.Reports),\n (reports: ReportModel[], sortSetting) => {\n return [\n ...filteredByTextsReports(\n filteredByTypeReports(reports, selectedType),\n searchText\n ),\n ].sort((a, b) => sorts(a, b, sortSetting.columnSort));\n }\n );\n","import { useDispatch, useSelector } from 'react-redux';\nimport { selectCurrentVendorUser } from '../../../selectors/selectCurrentVendorUser';\nimport { ApplicationState } from '../../../types/applicationState';\nimport React, { useEffect } from 'react';\nimport { fetchReports } from '../../../store/reports/reportsThunks';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport {\n ReportsHeader,\n reportTypeValues,\n} from '../ReportsHeader/ReportsHeader';\nimport { ReportsList } from '../ReportsList/ReportsList';\nimport {\n ReportModel,\n ReportCreatePayloadReportFrameworkEnum,\n} from '../../../swagger';\nimport { selectsReports } from '../../../selectors/reports/selectReports';\nimport { useQueryParams } from '../../../hooks/useQueryParams';\nimport { reportsRoute } from '../../Routes/Routes';\nimport { DataRoomTabs } from '../../../features/compliance/dataRoom/DataRoomTabs/DataRoomTabs';\n\nexport const reportsRouteWithType = (type: reportTypeValues) =>\n `${reportsRoute}?type=${type}`;\nexport const reportsRouteWithAddType = (type: reportTypeValues) =>\n `${reportsRoute}?add-type=${type}`;\nexport const reportsSoaRoute = (\n framework: ReportCreatePayloadReportFrameworkEnum,\n addType: reportTypeValues = 'soa'\n) => `${reportsRoute}?add-type=${addType}&framework=${framework}`;\n\nexport const ReportsPage: React.FC = () => {\n const baseCss = 'reportsPage';\n const vendorUser = useSelector(selectCurrentVendorUser);\n const dispatch = useDispatch();\n const vendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n const searchText = useSelector(\n (state: ApplicationState) => state.reports.reportsSearch\n );\n const { isFetchingReports, reports, isCreatingReport } = useSelector(\n (state: ApplicationState) => state.reports\n );\n const reportTypeParam = useQueryParams().get('type') as reportTypeValues;\n const selectedType = reportTypeParam || 'all';\n\n const filteredReports: ReportModel[] = useSelector(\n selectsReports(searchText, selectedType)\n );\n useEffect(() => {\n dispatch(fetchReports(vendorId));\n }, [vendorId, vendorUser.roles]);\n\n if (isFetchingReports || isCreatingReport) {\n return ;\n }\n\n return (\n
\n \n \n \n
\n );\n};\n","import React, { useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectCurrentCompany } from '../../selectors/selectCurrentCompany';\nimport {\n cancelAddCompanyOfficeAddressModal,\n hideOfficeAddressAddedToast,\n} from '../../store/vendors/vendorsSlice';\nimport { updateOfficeAddress } from '../../store/vendors/vendorsThunks';\nimport { Office } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport { SelectionOption } from '../../types/selectionOption';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { AdoptechCountrySelect } from '../AdoptechCountrySelect/AdoptechCountrySelect';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AdoptechStateSelect } from '../AdoptechStateSelect/AdoptechStateSelect';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport { MessageToast } from '../MessageToast/MessageToast';\nimport './AddOfficeAddressModal.scss';\n\nexport const AddOfficeAddressModal: React.FC = () => {\n const company = useSelector(selectCurrentCompany);\n\n const showModal = useSelector(\n (state: ApplicationState) =>\n state.vendors.companyDetailsState.isAddOfficeAddressModalShowing\n );\n const showToast = useSelector(\n (state: ApplicationState) =>\n state.vendors.companyDetailsState.showAddedToast\n );\n\n const [currentOffice, setCurrentOffice] = useState();\n const [formTouched, setFormTouchedStatus] = useState(false);\n\n const addressValid = !!(currentOffice?.address1 || currentOffice?.address2);\n const formValid = !!(\n currentOffice?.name &&\n (currentOffice?.address1 || currentOffice?.address2)\n );\n\n const dispatch = useDispatch();\n\n const save = () => {\n if (!formTouched) {\n setFormTouchedStatus(true);\n }\n\n if (formValid) {\n dispatch(\n updateOfficeAddress({\n company,\n office: currentOffice,\n isExisting: false,\n onSuccess: () => {\n clearForm();\n },\n })\n );\n }\n };\n\n const setAddress = (event: React.ChangeEvent) => {\n const { id, value } = event.target;\n\n setCurrentOffice(office => ({\n ...office,\n [id]: value,\n }));\n };\n\n const setCountry = (option: SelectionOption) => {\n setCurrentOffice(office => ({\n ...office,\n country: option.value,\n }));\n };\n\n const setState = (option: SelectionOption) => {\n setCurrentOffice(office => ({\n ...office,\n state: option.value,\n }));\n };\n\n const handleCancel = () => {\n dispatch(cancelAddCompanyOfficeAddressModal());\n clearForm();\n };\n\n const clearForm = () => {\n setCurrentOffice(null);\n setFormTouchedStatus(false);\n };\n\n return (\n \n \n Add office location\n \n
\n Please add your office location below.\n
\n
\n \n \n \n {currentOffice?.country === 'US' && (\n \n )}\n {currentOffice?.country !== 'US' && (\n \n )}\n \n \n
\n
\n \n Cancel\n \n Add\n \n \n \n dispatch(hideOfficeAddressAddedToast())}\n show={showToast}\n >\n Your new location has been added.\n \n
\n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport { showGlobalToast } from '../../store/global/globalSlice';\nimport { cancelAddTeamModal } from '../../store/vendors/vendorsSlice';\nimport {\n fetchVendorTable,\n fetchVendorTeams,\n upsertVendorTeams,\n} from '../../store/vendors/vendorsThunks';\nimport { QuestionObjectTypeEnum } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport './AddTeamModal.scss';\n\nexport const AddTeamModal: React.FC = () => {\n const teamNameRef = useRef();\n const [teamName, setTeamName] = useState();\n\n const { isUpsertingVendorTeams, isAddTeamModalShowing } = useSelector(\n (state: ApplicationState) => state.vendors.teamsState\n );\n\n const currentVendor = useSelector(selectCurrentVendor);\n const vendorId = currentVendor?.id;\n\n const teams = useSelector(\n (state: ApplicationState) => state.vendors.teamsState.vendorTeams\n );\n\n useEffect(() => {\n isAddTeamModalShowing && dispatch(fetchVendorTeams(true));\n }, [isAddTeamModalShowing]);\n\n useEffect(() => {\n setTeamName('');\n\n if (teamNameRef.current) {\n teamNameRef.current.focus();\n }\n }, [isAddTeamModalShowing]);\n\n const dispatch = useDispatch();\n\n const handleAdd = () => {\n dispatch(\n upsertVendorTeams({\n vendorTeams: teams\n .map(({ id, name }) => ({\n id,\n name,\n }))\n .concat([{ name: teamName, id: null }]),\n vendorId,\n onSuccess: () => {\n dispatch(showGlobalToast('Your team has been added successfully.'));\n handleCancel();\n dispatch(\n fetchVendorTable({\n vendorId,\n type: QuestionObjectTypeEnum.VendorTeam,\n })\n );\n },\n })\n );\n };\n\n const handleCancel = () => {\n dispatch(cancelAddTeamModal());\n };\n\n return (\n \n \n Add new group\n \n
\n Enter the group name as you would like it to appear in documents\n generated. Do not include \"Group\" in the group name\n
\n
\n
Group name
\n {\n setTeamName(e.currentTarget.value);\n }}\n ref={teamNameRef}\n type=\"text\"\n value={teamName}\n />\n
\n
\n \n Cancel\n t.name === teamName)}\n onClick={handleAdd}\n variant={AdoptechButtonVariant.Primary}\n >\n ADD\n \n \n
\n
\n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectUsers } from '../../selectors/selectUsers';\nimport {\n cancelAddUserModal,\n hideAddUserModal,\n showConfirmResendInvitationModal,\n showConfirmSendInvitationModal,\n updateInviteUserDetails,\n} from '../../store/vendors/vendorsSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport './AddUserModal.scss';\n\nexport const AddUserModal: React.FC = () => {\n const firstNameRef = useRef();\n const dispatch = useDispatch();\n const { firstName, lastName, emailAddress, isAddUserModalShowing } =\n useSelector((state: ApplicationState) => state.vendors.inviteState);\n const users = useSelector(selectUsers);\n const [userDetails, setUserDetails] = useState({\n firstName,\n lastName,\n emailAddress,\n });\n\n useEffect(() => {\n setUserDetails({ firstName, lastName, emailAddress });\n }, [firstName, lastName, emailAddress]);\n\n const handleUserDetailChange = (\n event: React.ChangeEvent\n ) => {\n const { value, id } = event.target;\n setUserDetails(details => ({\n ...details,\n [id]: value,\n }));\n };\n\n const alreadyInvited = () =>\n users && users.some(user => user.email === userDetails.emailAddress);\n\n const isFormValid = () =>\n !!userDetails.firstName &&\n !!userDetails.lastName &&\n !!userDetails.emailAddress;\n const clearForm = () => {\n setUserDetails({ firstName: '', lastName: '', emailAddress: '' });\n dispatch(\n updateInviteUserDetails({ firstName: '', lastName: '', emailAddress: '' })\n );\n };\n\n const submit = () => {\n dispatch(updateInviteUserDetails(userDetails));\n if (alreadyInvited()) {\n dispatch(showConfirmResendInvitationModal());\n } else {\n dispatch(showConfirmSendInvitationModal(false));\n }\n dispatch(hideAddUserModal());\n };\n\n useEffect(() => {\n if (firstNameRef.current) {\n firstNameRef.current.focus();\n }\n }, [isAddUserModalShowing]);\n\n const handleCancel = () => {\n clearForm();\n dispatch(cancelAddUserModal());\n };\n\n return (\n \n Add User\n \n

\n Please complete the user information below and we will send them an\n invitation by email.\n

\n
\n \n \n
\n
\n \n
\n
\n \n
\n Cancel\n \n Next\n \n
\n
\n \n );\n};\n","import React from 'react';\nimport { Toast } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { clearAutoSave } from '../../store/policies/policiesSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport './AutoSaveToast.scss';\n\nexport const AutoSaveToast: React.FC = () => {\n const show = useSelector(\n (state: ApplicationState) => state.policies.showAutoSaveToast\n );\n\n const dispatch = useDispatch();\n\n return (\n
\n {\n dispatch(clearAutoSave());\n }}\n show={show}\n >\n Autosave complete\n \n
\n );\n};\n","export const getClauseLastUpdatedInfo = (\n updatedAt: string,\n updatedBy: string\n): { updatedAt: string; updatedBy: string } => {\n if (updatedAt && updatedBy) {\n return {\n updatedAt,\n updatedBy,\n };\n }\n return null;\n};\n","import { VendorPolicyAnswerClosestQuestion } from '../swagger';\n\nexport const policyAnswerCommonFields = (\n props: any\n): { closestQuestion: VendorPolicyAnswerClosestQuestion } => {\n const question = props.closestQuestion || props.question;\n return {\n closestQuestion: {\n id: question.id,\n layout: question.layout,\n },\n };\n};\n","import React, { useMemo } from 'react';\nimport { Question } from '../../swagger';\nimport { AdoptechCheckbox } from '../AdoptechCheckbox/AdoptechCheckbox';\nimport './CheckboxesAnswer.scss';\nimport { CommonAnswerType } from '../../types/CommonAnswerType';\nimport { OnChangeAnswerOptions } from '../AnswerFormControl/AnswerFormControl';\nimport { policyAnswerCommonFields } from '../../functions/policyAnswerCommonFields';\n\ninterface CheckboxesAnswerProps {\n answers: CommonAnswerType[];\n disabled?: boolean;\n readonly?: boolean;\n onChange: (value: CommonAnswerType[], options: OnChangeAnswerOptions) => void;\n question: Question;\n indexProperty: 'name' | 'propertyName';\n usingNewSurveyStructure: boolean;\n}\n\nexport const CheckboxesAnswer: React.FC = props => {\n const calculateAllState = (checkboxAnswers: CommonAnswerType[]): boolean => {\n const hasAtLeastOneUncheckedValue = checkboxAnswers.some(answer => {\n const propertyName = answer[props.indexProperty].toString();\n return (\n answer.value === 'f' &&\n !propertyName.endsWith('.other') &&\n !propertyName.endsWith('.none')\n );\n });\n\n return !hasAtLeastOneUncheckedValue;\n };\n\n // Use only one \"piece of parent state\": `props.answers` to read, convert it temporary to `answers` and update with `onChange`.\n // But: \"props.answers\" is always empty array for AgreementQuestion, TableAnswerEditModal and not empty in PolicyQuestion, AssessmentQuestion\n // => use props.question.questionRows for compatibility\n const parentAnswers = useMemo(\n () =>\n props.answers.length > 0\n ? props.answers\n : (props.question.questionRows\n .map(question => question.answer)\n .filter(answer => answer) as CommonAnswerType[]),\n [props.answers, props.question.questionRows]\n );\n const answers: CommonAnswerType[] = props.question.questionRows.map(\n question => {\n let value = 'f';\n let previousAnswer: CommonAnswerType;\n const rowName = question[props.indexProperty];\n\n if (parentAnswers) {\n previousAnswer = parentAnswers.find(\n a => a[props.indexProperty] === rowName\n );\n if (previousAnswer) value = previousAnswer.value;\n }\n\n const fields = {\n [props.indexProperty]: rowName,\n ...policyAnswerCommonFields(props),\n value,\n };\n\n if (props.usingNewSurveyStructure) {\n return {\n ...fields,\n questionRowId: question.id,\n id: question.answer?.id,\n };\n }\n\n return fields;\n }\n );\n\n const allSelected = calculateAllState(answers);\n\n const handleClick = (propertyName: string) => {\n const newAnswers = [...answers];\n const currentAnswer = newAnswers.find(\n na => na[props.indexProperty] === propertyName\n );\n currentAnswer.value = currentAnswer.value === 't' ? 'f' : 't';\n\n if (\n !(\n currentAnswer[props.indexProperty].endsWith('.none') ||\n currentAnswer[props.indexProperty].endsWith('.other')\n )\n ) {\n newAnswers\n .filter(answer => answer[props.indexProperty].endsWith('.none'))\n .forEach(answer => (answer.value = 'f'));\n }\n\n currentAnswer.closestQuestion =\n policyAnswerCommonFields(props).closestQuestion;\n props.onChange(newAnswers, { isCheckboxAnswer: true });\n };\n\n const handleSelectAll = () => {\n const newAnswers = [...answers];\n props.question.questionRows.forEach(qr => {\n const answer = newAnswers.find(\n na => na[props.indexProperty] === qr[props.indexProperty]\n );\n\n if (answer[props.indexProperty].endsWith('.none')) {\n answer.value = 'f';\n return;\n }\n answer.value = allSelected ? 'f' : 't';\n answer.closestQuestion = policyAnswerCommonFields(props).closestQuestion;\n });\n\n props.onChange(newAnswers, { isCheckboxAnswer: true });\n };\n return (\n
\n
\n \n {props.question.questionRows.map(r => {\n const questionRowAnswerValue = r[props.indexProperty];\n\n return (\n \n v[props.indexProperty] === questionRowAnswerValue &&\n v.value === 't'\n ) > -1\n }\n disabled={props.disabled || props.readonly}\n onChange={() => {\n handleClick(questionRowAnswerValue);\n }}\n label={r.rowText}\n />\n );\n })}\n
\n
\n );\n};\n","import moment from 'moment';\nimport React, { useEffect, useState } from 'react';\nimport DatePicker from 'react-datepicker';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport { Question } from '../../swagger/models';\nimport './DateFieldAnswer.scss';\nimport { CommonAnswerType } from '../../types/CommonAnswerType';\nimport { policyAnswerCommonFields } from '../../functions/policyAnswerCommonFields';\n\ninterface DateFieldAnswerProps {\n previousAnswer?: CommonAnswerType;\n disabled?: boolean;\n readonly?: boolean;\n onChange: (value: CommonAnswerType[]) => void;\n question: Question;\n indexProperty: 'name' | 'propertyName';\n disableDebounce?: boolean;\n asTextReadonly?: boolean;\n}\n\nexport const DateFieldAnswer: React.FC = props => {\n const [value, setValue] = useState(\n props.previousAnswer\n ? moment(props.previousAnswer.value).toDate()\n : undefined\n );\n\n useEffect(\n () =>\n setValue(\n props.previousAnswer\n ? moment(props.previousAnswer.value).toDate()\n : undefined\n ),\n [props.previousAnswer]\n );\n\n return (\n
\n {\n setValue(e);\n const momentDate = moment.parseZone(e);\n const normalizedDate = moment.utc(\n `${momentDate.format('YYYY-MM-DD')}T00:00:00Z`\n );\n props.onChange([\n {\n [props.indexProperty]: props.question[props.indexProperty],\n value: normalizedDate.toDate().toISOString(),\n ...policyAnswerCommonFields(props),\n },\n ]);\n }}\n selected={value}\n />\n
\n );\n};\n","import { push } from 'connected-react-router';\nimport { api } from '../../api/api';\nimport { getApiErrorMessage } from '../../functions/getApiErrorMessage';\nimport { getMetaContent } from '../../functions/getMetaContent';\nimport {\n AssessmentRecipient,\n AssessmentResponse,\n AssessmentResponseAnswer,\n AssessmentResponseAnswerStatusEnum,\n AssessmentResponseFromJSON,\n} from '../../swagger';\nimport { UNKNOWN_ERROR } from '../../types/constants';\nimport { VoidThunk } from '../../types/voidThunk';\nimport { download } from '../global/globalSlice';\nimport { showAutoSave } from '../policies/policiesSlice';\nimport {\n deleteAssessmentFileOrUrlFailure,\n deleteAssessmentFileOrUrlRequest,\n deleteAssessmentFileOrUrlSuccess,\n deleteAssessmentRecipientFailure,\n deleteAssessmentRecipientRequest,\n deleteAssessmentRecipientSuccess,\n deleteAssessmentResponseFailure,\n deleteAssessmentResponseRequest,\n deleteAssessmentResponseSuccess,\n exportAssessmentResponsesFailure,\n exportAssessmentResponsesRequest,\n exportAssessmentResponsesSuccess,\n fetchAssessmentFailure,\n fetchAssessmentRequest,\n fetchAssessmentResponseFailure,\n fetchAssessmentResponseHistoryFailure,\n fetchAssessmentResponseHistoryRequest,\n fetchAssessmentResponseHistorySuccess,\n fetchAssessmentResponseRequest,\n fetchAssessmentResponseSuccess,\n fetchAssessmentTemplatesRequest,\n fetchAssessmentTemplatesSuccess,\n fetchAssessmentTemplatesError,\n fetchAssessmentTemplateRequest,\n fetchAssessmentTemplateSuccess,\n fetchAssessmentTemplateError,\n fetchAssessmentsFailure,\n fetchAssessmentsRequest,\n fetchAssessmentsSuccess,\n fetchAssessmentSuccess,\n fetchIncomingAssessmentResponsesFailure,\n fetchIncomingAssessmentResponsesRequest,\n fetchIncomingAssessmentResponsesSuccess,\n hideAddFileOrUrlModal,\n hideAssessmentSummaryExportModal,\n hideConfirmDeleteAssessmentResponseModal,\n hideDeleteTableAnswersModal,\n hideEditPublishedAssessmentModal,\n hideEditTableAnswersModal,\n hidePublishAssessmentModal,\n patchAssessmentResponseFailure,\n patchAssessmentResponseRequest,\n patchAssessmentResponseSuccess,\n publishAssessmentResponseRequest,\n publishAssessmentResponseSuccess,\n publishAssessmentResponseFailure,\n reopenAssessmentResponseFailure,\n reopenAssessmentResponseRequest,\n reopenAssessmentResponseSuccess,\n resendAssessmentFailure,\n resendAssessmentRequest,\n resendAssessmentSuccess,\n sendAssessmentFailure,\n sendAssessmentRequest,\n sendAssessmentSuccess,\n showFileOrUrlSuccessfulToast,\n showPublishedAssessmentModal,\n uploadFileOrUrlFailure,\n uploadFileOrUrlRequest,\n uploadFileOrUrlSuccess,\n confirmAssessmentResponseRequest,\n confirmAssessmentResponseSuccess,\n confirmAssessmentResponseFailure,\n patchAssessmentRequest,\n patchAssessmentSuccess,\n patchAssessmentFailure,\n generateAssessmentRequest,\n generateAssessmentSuccess,\n generateAssessmentError,\n deleteAssessmentRequest,\n deleteAssessmentSuccess,\n deleteAssessmentError,\n showDeleteAssessmentToast,\n} from './assessmentsSlice';\nimport { QuestionType } from '../../types/QuestionType';\n\nexport const fetchAssessment =\n (assessmentId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchAssessmentRequest());\n const response = await api().assessmentsIdGet({ id: assessmentId });\n dispatch(fetchAssessmentSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchAssessmentFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchAssessmentFailure(\n 'An error occurred fetching the assessment. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchAssessmentFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchAssessmentResponse =\n (assessmentId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchAssessmentResponseRequest());\n const response = await api().assessmentResponsesIdGet({\n id: assessmentId,\n });\n dispatch(fetchAssessmentResponseSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchAssessmentResponseFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchAssessmentResponseFailure(\n 'An error occurred fetching the assessment response. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchAssessmentResponseFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchAssessmentResponseHistory =\n (assessmentResponseId: string, questionId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchAssessmentResponseHistoryRequest());\n const response =\n await api().assessmentResponsesIdAssessmentResponseAnswersHistoryGet({\n id: assessmentResponseId,\n questionId,\n });\n dispatch(\n fetchAssessmentResponseHistorySuccess({\n id: questionId,\n answers: response,\n })\n );\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchAssessmentResponseHistoryFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchAssessmentResponseHistoryFailure(\n 'An error occurred fetching the assessment response history. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchAssessmentResponseHistoryFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchAssessments =\n (vendorId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchAssessmentsRequest());\n const response = await Promise.all([\n api().vendorsIdAssessmentsGet({ id: vendorId }),\n api().vendorsIdAssessmentResponsesGet({ id: vendorId }),\n ]);\n dispatch(fetchAssessmentsSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchAssessmentsFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchAssessmentsFailure(\n 'An error occurred fetching the assessments. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchAssessmentsFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const sendAssessment = (): VoidThunk => async (dispatch, getState) => {\n try {\n const { currentAssessment, sendAssessmentDetails } = getState().assessments;\n dispatch(sendAssessmentRequest());\n await api().assessmentsIdSharePost({\n id: sendAssessmentDetails.id,\n externalShare: {\n deadline: sendAssessmentDetails.responseDeadline,\n emailAddresses: sendAssessmentDetails.to,\n message: sendAssessmentDetails.optionalMessage,\n subject: currentAssessment.name,\n },\n });\n dispatch(sendAssessmentSuccess());\n dispatch(fetchAssessment(currentAssessment.id));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(sendAssessmentFailure(apiErrorMessage));\n } else {\n dispatch(\n sendAssessmentFailure(\n 'An error occurred sending the assessments. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(sendAssessmentFailure(UNKNOWN_ERROR));\n }\n }\n};\n\nexport const resendAssessment =\n ({ message }: { message: string }): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const { currentAssessment, resendRecipient } = getState().assessments;\n dispatch(resendAssessmentRequest());\n await api().assessmentsIdSharePost({\n id: currentAssessment.id,\n externalShare: {\n emailAddresses: resendRecipient.email,\n subject: currentAssessment.name,\n message,\n },\n });\n dispatch(resendAssessmentSuccess());\n dispatch(fetchAssessment(currentAssessment.id));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(resendAssessmentFailure(apiErrorMessage));\n } else {\n dispatch(\n resendAssessmentFailure(\n 'An error occurred resending the assessments. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(resendAssessmentFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const patchAssessmentResponse =\n ({\n id,\n assessmentResponse,\n mode,\n onSuccess,\n }: {\n id: string;\n assessmentResponse: AssessmentResponse;\n mode?: 'table';\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(patchAssessmentResponseRequest());\n const response = await api().assessmentResponsesIdPatch({\n id,\n body: assessmentResponse,\n });\n dispatch(patchAssessmentResponseSuccess(response));\n onSuccess && onSuccess();\n\n if (mode === 'table') {\n dispatch(hideEditTableAnswersModal());\n } else {\n dispatch(showAutoSave());\n }\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(patchAssessmentResponseFailure(apiErrorMessage));\n } else {\n dispatch(\n patchAssessmentResponseFailure(\n 'An error occurred updating the policy. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(patchAssessmentResponseFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchIncomingAssessmentResponses =\n (id: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchIncomingAssessmentResponsesRequest());\n const response = await api().assessmentsIdAssessmentResponsesGet({ id });\n dispatch(fetchIncomingAssessmentResponsesSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchIncomingAssessmentResponsesFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchIncomingAssessmentResponsesFailure(\n 'An error occurred fetching the incoming assessment responses. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchIncomingAssessmentResponsesFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport interface FileOrUrlDetails {\n description: string;\n file?: File;\n url?: string;\n}\n\nexport const addFileOrUrl =\n (fileOrUrlDetails: FileOrUrlDetails): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const assessmentResponse =\n getState().assessments.currentAssessmentResponse;\n dispatch(uploadFileOrUrlRequest());\n\n const formData = new FormData();\n formData.append(\n 'assessment_response[assessment_response_answers][][name]',\n getState().assessments.addFileToQuestionName\n );\n formData.append(\n 'assessment_response[assessment_response_answers][][status]',\n AssessmentResponseAnswerStatusEnum.Answered\n );\n formData.append(\n 'assessment_response[assessment_response_answers][][assessment_response_answer_files][][name]',\n fileOrUrlDetails.description\n );\n if (fileOrUrlDetails.file) {\n formData.append(\n 'assessment_response[assessment_response_answers][][assessment_response_answer_files][][document]',\n fileOrUrlDetails.file\n );\n }\n if (fileOrUrlDetails.url) {\n formData.append(\n 'assessment_response[assessment_response_answers][][assessment_response_answer_files][][url]',\n fileOrUrlDetails.url\n );\n }\n\n const response = await fetch(\n `/api/v1/assessment_responses/${assessmentResponse.id}`,\n {\n body: formData,\n headers: {\n Accept: 'application/json',\n 'X-CSRF-Token': getMetaContent('csrf-token'),\n },\n method: 'PATCH',\n }\n );\n\n if (!response.ok) {\n const apiErrorMessage = await getApiErrorMessage(response);\n if (apiErrorMessage) {\n if (apiErrorMessage.includes('url is invalid')) {\n dispatch(uploadFileOrUrlFailure('URL is invalid'));\n } else {\n dispatch(uploadFileOrUrlFailure(apiErrorMessage));\n }\n } else {\n dispatch(\n uploadFileOrUrlFailure(\n 'An error occurred uploading the file. Please try again or contact support.'\n )\n );\n }\n } else {\n const updatedAssessmentResponse = AssessmentResponseFromJSON(\n await response.json()\n );\n\n dispatch(uploadFileOrUrlSuccess(updatedAssessmentResponse));\n dispatch(hideAddFileOrUrlModal());\n dispatch(showFileOrUrlSuccessfulToast());\n }\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(uploadFileOrUrlFailure(apiErrorMessage));\n } else {\n dispatch(\n uploadFileOrUrlFailure(\n 'An error occurred uploading the file. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(uploadFileOrUrlFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const deleteAssessmentFileOrUrl =\n (id: string): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(deleteAssessmentFileOrUrlRequest());\n await api().assessmentResponseAnswerFilesIdDelete({ id });\n const updatedAssessmentResponse = await api().assessmentResponsesIdGet({\n id: getState().assessments.currentAssessmentResponse.id,\n });\n dispatch(deleteAssessmentFileOrUrlSuccess(updatedAssessmentResponse));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(deleteAssessmentFileOrUrlFailure(apiErrorMessage));\n } else {\n dispatch(\n deleteAssessmentFileOrUrlFailure(\n 'An error occurred deleting the file/url. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(deleteAssessmentFileOrUrlFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const deleteAssessmentRecipient =\n (assessmentId: string, recipientId: string): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(deleteAssessmentRecipientRequest());\n await api().assessmentsAssessmentIdAssessmentRecipientsRecipientIdDelete({\n assessmentId,\n recipientId,\n });\n dispatch(deleteAssessmentRecipientSuccess());\n dispatch(fetchAssessment(getState().assessments.currentAssessment.id));\n dispatch(hideConfirmDeleteAssessmentResponseModal());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(deleteAssessmentRecipientFailure(apiErrorMessage));\n } else {\n dispatch(\n deleteAssessmentRecipientFailure(\n 'An error occurred deleting the file/url. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(deleteAssessmentRecipientFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const deleteAssessmentResponse =\n (id: string): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(deleteAssessmentResponseRequest());\n await api().assessmentResponsesIdDelete({ id });\n dispatch(deleteAssessmentResponseSuccess());\n dispatch(fetchAssessment(getState().assessments.currentAssessment.id));\n dispatch(hideConfirmDeleteAssessmentResponseModal());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(deleteAssessmentResponseFailure(apiErrorMessage));\n } else {\n dispatch(\n deleteAssessmentResponseFailure(\n 'An error occurred deleting the file/url. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(deleteAssessmentResponseFailure(UNKNOWN_ERROR));\n }\n }\n };\nexport const deleteAssessmentResponseAnswers =\n (\n ids: string[],\n tableQuestions: QuestionType[],\n onSuccess: () => void = () => {}\n ): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(deleteAssessmentResponseRequest());\n await Promise.all(\n ids.map(\n async id => await api().assessmentResponseAnswersIdDelete({ id })\n )\n );\n dispatch(deleteAssessmentResponseSuccess());\n if (tableQuestions) {\n const tableAnswers: AssessmentResponseAnswer[] = [];\n tableQuestions.forEach(question => {\n const answersToUpdate = question.answers.filter(\n answer => ids.indexOf(answer.id) === -1\n );\n answersToUpdate && tableAnswers.push(...answersToUpdate);\n });\n dispatch(\n patchAssessmentResponse({\n id: getState().assessments.currentAssessmentResponse.id,\n assessmentResponse: {\n assessmentResponseAnswers: tableAnswers.map(answer => ({\n name: answer.name,\n value: answer.value,\n index: answer.index,\n datatype: answer.datatype,\n status: AssessmentResponseAnswerStatusEnum.Answered,\n })),\n },\n mode: 'table',\n })\n );\n }\n onSuccess();\n dispatch(hideDeleteTableAnswersModal());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(deleteAssessmentResponseFailure(apiErrorMessage));\n } else {\n dispatch(\n deleteAssessmentResponseFailure(\n 'An error occurred deleting the answers. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(deleteAssessmentResponseFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const reopenAssessmentResponse =\n (id: string): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const assessmentResponse =\n getState().assessments.assessmentResponses.find(ar => ar.id === id);\n\n if (!assessmentResponse) {\n dispatch(\n reopenAssessmentResponseFailure(\n 'An error occurred finding the assessment. Please try again or contact support.'\n )\n );\n return;\n }\n\n dispatch(reopenAssessmentResponseRequest());\n const response = await api().assessmentResponsesIdPatch({\n id,\n body: { status: 'in_progress' },\n });\n dispatch(reopenAssessmentResponseSuccess(response));\n dispatch(push(`/r/riskManagement/assessments/response/${id}`));\n dispatch(hideEditPublishedAssessmentModal());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(reopenAssessmentResponseFailure(apiErrorMessage));\n } else {\n dispatch(\n reopenAssessmentResponseFailure(\n 'An error occurred reopening the assessment. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(reopenAssessmentResponseFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const publishAssessmentResponse =\n (assessmentResponse: AssessmentResponse): VoidThunk =>\n async dispatch => {\n try {\n dispatch(publishAssessmentResponseRequest());\n const response = await api().assessmentResponsesIdPublishPatch({\n id: assessmentResponse.id,\n });\n dispatch(publishAssessmentResponseSuccess(response));\n dispatch(hidePublishAssessmentModal());\n dispatch(push('/r/riskManagement/assessments/summary'));\n dispatch(showPublishedAssessmentModal());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(publishAssessmentResponseFailure(apiErrorMessage));\n } else {\n dispatch(\n publishAssessmentResponseFailure(\n 'An error occurred publishing the assessment. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(publishAssessmentResponseFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const exportAssessmentResponses =\n (assessmentId: string, ids: string[]): VoidThunk =>\n async dispatch => {\n try {\n dispatch(exportAssessmentResponsesRequest(0));\n const response = await api().assessmentsIdAssessmentDownloadsPost({\n id: assessmentId,\n assessmentDownload: {\n assessmentResponseIds: ids,\n },\n });\n dispatch(checkForExportSuccess(response.id, 0));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(exportAssessmentResponsesFailure(apiErrorMessage));\n } else {\n dispatch(\n exportAssessmentResponsesFailure(\n 'An error occurred reopening the assessment. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(exportAssessmentResponsesFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nconst RECHECK_INTERVAL_MS = 1000;\n\nconst checkForExportSuccess =\n (id: string, progress: number): VoidThunk =>\n async (dispatch, getState) => {\n if (getState().assessments.exportCancelled) {\n return;\n }\n\n try {\n const response = await api().assessmentDownloadsIdGet({ id });\n if (response.status === 'ready') {\n dispatch(exportAssessmentResponsesSuccess(response));\n dispatch(hideAssessmentSummaryExportModal());\n dispatch(download(response.document));\n } else {\n if (progress > 99) {\n progress = 99;\n } else {\n progress = progress + Math.floor(Math.random() * 3) + 1;\n }\n dispatch(exportAssessmentResponsesRequest(progress));\n setTimeout(\n () => dispatch(checkForExportSuccess(id, progress)),\n RECHECK_INTERVAL_MS\n );\n }\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(reopenAssessmentResponseFailure(apiErrorMessage));\n } else {\n dispatch(\n reopenAssessmentResponseFailure(\n 'An error occurred exporting the assessment. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(reopenAssessmentResponseFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const confirmAssessmentResponse =\n (ids: string[]): VoidThunk =>\n async (dispatch, getState) => {\n if (!ids?.length) {\n return;\n }\n try {\n dispatch(confirmAssessmentResponseRequest());\n await Promise.all(\n ids.map(id => api().assessmentResponseAnswersIdConfirmPatch({ id }))\n );\n const updatedAssessmentResponse = await api().assessmentResponsesIdGet({\n id: getState().assessments.currentAssessmentResponse.id,\n });\n dispatch(confirmAssessmentResponseSuccess(updatedAssessmentResponse));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(confirmAssessmentResponseFailure(apiErrorMessage));\n } else {\n dispatch(\n confirmAssessmentResponseFailure(\n 'An error occurred confirming the answer. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(confirmAssessmentResponseFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const patchAssessment =\n ({\n assessmentId,\n ownerId,\n onSuccess,\n }: {\n assessmentId: string;\n ownerId?: string;\n name?: string;\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(patchAssessmentRequest());\n const result = await api().assessmentsIdPatch({\n id: assessmentId,\n body: {\n ownerId,\n },\n });\n dispatch(patchAssessmentSuccess(result));\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(patchAssessmentFailure(apiErrorMessage));\n } else {\n dispatch(\n patchAssessmentFailure(\n 'An error occurred updating the assessment. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(patchAssessmentFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchAssessmentTemplates =\n (vendorId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchAssessmentTemplatesRequest());\n const response = await api().vendorsVendorIdAssessmentTemplatesGet({\n vendorId: vendorId,\n });\n dispatch(fetchAssessmentTemplatesSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchAssessmentTemplatesError(apiErrorMessage));\n } else {\n dispatch(\n fetchAssessmentTemplatesError(\n 'An error occurred fetching assessment templates. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchAssessmentTemplatesError(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchAssessmentTemplate =\n (id: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchAssessmentTemplateRequest());\n const response = await api().assessmentTemplatesIdGet({\n id: id,\n });\n dispatch(fetchAssessmentTemplateSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchAssessmentTemplateError(apiErrorMessage));\n } else {\n dispatch(\n fetchAssessmentTemplateError(\n 'An error occurred fetching an assessment template. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchAssessmentTemplateError(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const generateAssessmentFromTemplate =\n (vendorId: string, templateId: string, name: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(generateAssessmentRequest());\n const response = await api().vendorsIdAssessmentsPost({\n id: vendorId,\n body: { assessmentTemplateId: templateId, name: name },\n });\n dispatch(generateAssessmentSuccess(response));\n dispatch(sendAssessment());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(generateAssessmentError(apiErrorMessage));\n } else {\n dispatch(\n generateAssessmentError(\n 'An error occurred fetching an assessment template. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(generateAssessmentError(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const deleteAssessment =\n (id: string, recipients: AssessmentRecipient[]): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deleteAssessmentRequest());\n await api().assessmentsIdDelete({\n id,\n body: {\n notificationRecipients: recipients.map(r => {\n return r.email;\n }),\n },\n });\n dispatch(deleteAssessmentSuccess());\n dispatch(showDeleteAssessmentToast());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(deleteAssessmentError(apiErrorMessage));\n } else {\n dispatch(\n deleteAssessmentError(\n 'An error occurred deleting an assessment. Please try again later or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(deleteAssessmentError(UNKNOWN_ERROR));\n }\n }\n };\n","import { IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { faFileCsv } from '@fortawesome/pro-light-svg-icons/faFileCsv';\nimport { faFileExcel } from '@fortawesome/pro-light-svg-icons/faFileExcel';\nimport { faFilePdf } from '@fortawesome/pro-light-svg-icons/faFilePdf';\nimport { faFileSpreadsheet } from '@fortawesome/pro-light-svg-icons/faFileSpreadsheet';\nimport { faLink } from '@fortawesome/pro-light-svg-icons/faLink';\nimport { faQuestionSquare } from '@fortawesome/pro-light-svg-icons/faQuestionSquare';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { deleteAssessmentFileOrUrl } from '../../store/assessments/assessmentsThunks';\nimport { AssessmentResponseAnswer, Question } from '../../swagger';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport '../AdoptechTable/AdoptechTable.scss';\nimport { GenericModal } from '../GenericModal/GenericModal';\nimport { IconButton } from '../IconButton/IconButton';\nimport './FileSelectAnswerGrid.scss';\n\nexport interface FileSelectAnswerGridProps {\n answers: AssessmentResponseAnswer[];\n question: Question;\n readonly?: boolean;\n}\n\nexport const FileSelectAnswerGrid: React.FC<\n FileSelectAnswerGridProps\n> = props => {\n const [deletingId, setDeletingId] = useState('');\n\n const answer = props.answers.find(ara => ara.name === props.question.name);\n\n const hasFiles =\n answer &&\n answer.assessmentResponseAnswerFiles &&\n answer.assessmentResponseAnswerFiles.length > 0;\n\n const dispatch = useDispatch();\n\n return (\n \n
\n \n \n \n Description\n Link\n Actions\n \n \n \n {hasFiles &&\n answer.assessmentResponseAnswerFiles.map(file => {\n let fileTypeIcon: IconProp;\n\n switch (file.contentType) {\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n fileTypeIcon = faFileSpreadsheet;\n break;\n case 'application/vnd.ms-excel':\n case 'application/vnd.ms-excel.sheet.macroenabled.12':\n fileTypeIcon = faFileExcel;\n break;\n case 'application/pdf':\n fileTypeIcon = faFilePdf;\n break;\n case 'text/csv':\n fileTypeIcon = faFileCsv;\n break;\n default:\n fileTypeIcon = faQuestionSquare;\n }\n\n return (\n \n {file.name}\n \n {file.document && (\n \n \n \n )}\n {file.url && (\n \n \n \n )}\n \n \n {!props.readonly && (\n setDeletingId(file.id)}\n tooltip=\"Delete\"\n />\n )}\n \n \n );\n })}\n {!hasFiles && (\n \n \n No files provided\n \n \n )}\n \n \n
\n\n setDeletingId('')}\n onClose={() => {\n dispatch(deleteAssessmentFileOrUrl(deletingId));\n setDeletingId('');\n }}\n show={deletingId !== ''}\n showCancelButton\n title=\"Confirm delete?\"\n >\n
Click CONFIRM to permanently delete this file or URL.
\n \n
\n );\n};\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport {\n addFileAnswer,\n addUrlAnswer,\n} from '../../store/assessments/assessmentsSlice';\nimport { AssessmentResponseAnswer, Question } from '../../swagger';\nimport { AdoptechButton } from '../AdoptechButton/AdoptechButton';\nimport { FileSelectAnswerGrid } from '../FileSelectAnswerGrid/FileSelectAnswerGrid';\nimport './FileSelectAnswer.scss';\n\ninterface FileSelectAnswerProps {\n answers: AssessmentResponseAnswer[];\n disabled?: boolean;\n readonly?: boolean;\n onChange: (value: AssessmentResponseAnswer[]) => void;\n question: Question;\n indexProperty: 'name' | 'propertyName';\n}\n\n/***\n * TODO: This Component only support assessments for now, rewrite to be common for all entities\n */\nexport const FileSelectAnswer: React.FC = props => {\n const dispatch = useDispatch();\n\n return (\n
\n {!props.readonly && (\n
\n dispatch(addUrlAnswer(props.question.name))}\n >\n Add Link\n \n dispatch(addFileAnswer(props.question.name))}\n >\n Upload File\n \n
\n )}\n \n
\n );\n};\n","import { RadioButtonsAnswerProps } from '../components/RadioButtonsAnswer/RadioButtonsAnswer';\nimport { ApplicationState } from '../types/applicationState';\n\nexport const getRadioButtonOptions = (\n state: ApplicationState,\n props: RadioButtonsAnswerProps\n) => {\n if (!state.vendors.vendorTableCache) {\n return null;\n }\n\n if (state.vendors.vendorTableCache[props.question.tableType] === undefined) {\n return null;\n }\n\n return state.vendors.vendorTableCache[props.question.tableType];\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { getRadioButtonOptions } from './getRadioButtonOptions';\nimport { QuestionColumn } from '../swagger/models/QuestionColumn';\n\nexport const selectRadioButtonOptionsFactory = () => {\n return createSelector(getRadioButtonOptions, vendorTable => {\n let results: QuestionColumn[] = [];\n if (vendorTable) {\n results = vendorTable.rows.map(r => ({\n columnValue: r.value,\n columnText: r.cells[0],\n }));\n }\n return results;\n });\n};\n","import React, { useEffect, useState } from 'react';\nimport { isValidEmailAddress } from '../../functions/isValidEmailAddress';\nimport {\n Question,\n QuestionDatatypeEnum,\n QuestionLayoutEnum,\n} from '../../swagger';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport './TextBasedAnswer.scss';\nimport { CommonAnswerType } from '../../types/CommonAnswerType';\nimport { usePrevious } from 'react-use';\n\ninterface TextBasedAnswerProps {\n previousAnswer?: CommonAnswerType;\n disabled?: boolean;\n readonly?: boolean;\n onChange: (value: CommonAnswerType[]) => void;\n question: Question;\n indexProperty: 'name' | 'propertyName';\n disableDebounce?: boolean;\n responseId?: string;\n}\n\nexport const TextBasedAnswer: React.FC = props => {\n const [value, setValue] = useState(props.previousAnswer?.value || '');\n\n const previousPreviousAnswer = usePrevious(props.previousAnswer);\n\n useEffect(\n () => setValue(props.previousAnswer?.value),\n [props.previousAnswer?.propertyName]\n );\n\n useEffect(() => {\n if (!props.readonly && previousPreviousAnswer !== undefined) return;\n if (props.previousAnswer === undefined) return;\n setValue(props.previousAnswer.value);\n }, [props.previousAnswer]);\n\n const pattern =\n props.question.datatype === QuestionDatatypeEnum.Integer\n ? /[^0123456789]/\n : /[^-0123456789.]/;\n\n const handleChange = (e: React.ChangeEvent) => {\n const newValue =\n props.question.datatype === QuestionDatatypeEnum.String\n ? e.currentTarget.value\n : e.currentTarget.value.replace(pattern, '');\n\n if (newValue === value) {\n return;\n }\n\n setValue(newValue);\n };\n\n const handleBlur = () => {\n if (\n props.question.layout === QuestionLayoutEnum.EmailField &&\n !isValidEmailAddress(value)\n ) {\n return;\n }\n\n if (!value && !props.previousAnswer) return;\n\n if (props.previousAnswer && value === props.previousAnswer.value) return;\n\n props.onChange([\n {\n [props.indexProperty]: props.question[props.indexProperty],\n value: value,\n closestQuestion: {\n id: props.question.id,\n layout: props.question.layout,\n },\n },\n ]);\n };\n\n return (\n
\n \n
\n );\n};\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectRadioButtonOptionsFactory } from '../../functions/selectRadioButtonOptionsFactory';\nimport { fetchTable } from '../../store/vendors/vendorsThunks';\nimport { Question } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport { AdoptechRadioButton } from '../AdoptechRadioButton/AdoptechRadioButton';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport './RadioButtonsAnswer.scss';\nimport { TextBasedAnswer } from '../TextBasedAnswer/TextBasedAnswer';\nimport { CommonAnswerType } from '../../types/CommonAnswerType';\nimport { policyAnswerCommonFields } from '../../functions/policyAnswerCommonFields';\n\nexport interface RadioButtonsAnswerProps {\n previousAnswer?: CommonAnswerType;\n disabled?: boolean;\n readonly?: boolean;\n onChange: (value: CommonAnswerType[]) => void;\n question: Question;\n indexProperty: 'name' | 'propertyName';\n asTextReadonly?: boolean;\n}\n\nexport const RadioButtonsAnswer: React.FC = props => {\n const dispatch = useDispatch();\n\n const isTableType =\n !props.question.questionColumns && !!props.question.tableType;\n\n const selectRadioButtonOptions = useMemo(selectRadioButtonOptionsFactory, []);\n\n useEffect(() => {\n if (isTableType) {\n dispatch(fetchTable(props.question.tableType));\n }\n }, []);\n\n const radioButtonOptions = useSelector((state: ApplicationState) =>\n selectRadioButtonOptions(state, props)\n );\n\n const options = isTableType\n ? radioButtonOptions\n : props.question.questionColumns;\n\n const [selected, setSelected] = useState();\n const otherInputFieldRef = useRef(null);\n const [otherValue, setOtherValue] = useState('');\n\n const isOtherValue = (answer: CommonAnswerType) => {\n return (\n answer &&\n options.length > 0 &&\n !options.some(question => question.columnValue === answer.value)\n );\n };\n\n useEffect(() => {\n if (props.previousAnswer) {\n setSelected(props.previousAnswer.value);\n }\n if (isOtherValue(props.previousAnswer)) {\n setSelected('other');\n setOtherValue(props.previousAnswer.value);\n }\n }, [props.previousAnswer, options]);\n\n const isClosedQuestion = () => {\n if (props.question.other) return false;\n const allOptionTexts = options.map(o => o.columnText.toLowerCase());\n return allOptionTexts.sort().join() == 'no,yes';\n };\n\n let radioButtonAnswerWrapper = 'radioButtonsAnswer--buttons';\n if (isClosedQuestion()) {\n radioButtonAnswerWrapper = 'radioButtonsAnswer--buttonsClosedQuestion';\n }\n\n const handleOnChange = (value: string) => {\n props.onChange([\n {\n [props.indexProperty]: props.question[props.indexProperty],\n value,\n ...policyAnswerCommonFields(props),\n },\n ]);\n };\n\n if (props.asTextReadonly) {\n const selectedOption = options.find(opt => opt.columnValue === selected);\n return (\n \n );\n }\n\n return (\n
\n
\n {options.map(c => {\n return (\n {\n setSelected(value);\n setOtherValue('');\n handleOnChange(value);\n }}\n value={c.columnValue}\n />\n );\n })}\n {props.question.other && (\n
\n {\n setSelected(value);\n otherInputFieldRef.current.focus();\n }}\n value=\"other\"\n />\n {props.question.otherLayout === 'text_field' && (\n
\n {\n setSelected('other');\n setOtherValue(event.currentTarget.value);\n }}\n onBlur={event => {\n handleOnChange(event.currentTarget.value);\n }}\n ref={otherInputFieldRef}\n type=\"text\"\n value={otherValue}\n />\n {selected === 'other' && otherValue === '' && (\n \n Please enter a value for 'Other'\n \n )}\n
\n )}\n
\n )}\n
\n
\n );\n};\n","import { SelectionOption } from '../types/selectionOption';\n\nexport const getSelectionValue = (\n values: SelectionOption[] | SelectionOption\n): string | undefined => {\n if (!values) {\n return undefined;\n }\n if (Array.isArray(values)) {\n return values.map((r: { value: string }) => r.value).join(',');\n } else {\n return values.value;\n }\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { canCreate } from '../../functions/access';\nimport { getDefaultSelectionOptions } from '../../functions/getDefaultSelectionOptions';\nimport { getSelectionValue } from '../../functions/getSelectionValue';\nimport {\n showAddCompanyOfficeAddressModal,\n showAddTeamModal,\n showAddUserModal,\n} from '../../store/vendors/vendorsSlice';\nimport {\n fetchTable,\n fetchVendorTable,\n} from '../../store/vendors/vendorsThunks';\nimport {\n Question,\n QuestionLayoutEnum,\n QuestionObjectTypeEnum,\n QuestionTableTypeEnum,\n} from '../../swagger';\nimport { AccessObject } from '../../types/accessObject';\nimport { ApplicationState } from '../../types/applicationState';\nimport { SelectionOption } from '../../types/selectionOption';\nimport { AdoptechCountrySelect } from '../AdoptechCountrySelect/AdoptechCountrySelect';\nimport { AdoptechReactSelect } from '../AdoptechReactSelect/AdoptechReactSelect';\nimport { GenericModal } from '../GenericModal/GenericModal';\nimport './SelectAnswer.scss';\nimport { TextBasedAnswer } from '../TextBasedAnswer/TextBasedAnswer';\nimport { WithCountries } from '../WithCountries/WithCountries';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport { CommonAnswerType } from '../../types/CommonAnswerType';\nimport { policyAnswerCommonFields } from '../../functions/policyAnswerCommonFields';\n\ninterface SelectAnswerProps {\n previousAnswer?: CommonAnswerType;\n disabled?: boolean;\n readonly?: boolean;\n onChange: (value: CommonAnswerType[]) => void;\n question: Question;\n indexProperty: 'name' | 'propertyName';\n vendorId?: string;\n asTextReadonly?: boolean;\n}\n\nexport const SelectAnswer: React.FC = props => {\n let canCreateOffice = false;\n let canCreateTeam = false;\n let canCreateUser = false;\n\n // TODO: Hook up when permission exists\n canCreateOffice = true;\n canCreateTeam = canCreate(AccessObject.vendor_teams);\n canCreateUser = canCreate(AccessObject.vendor_users);\n const currentVendor = useSelector(selectCurrentVendor);\n\n const [\n isShowingInsufficientPermissionModal,\n setIsShowingInsufficientPermissionModal,\n ] = useState(false);\n const [objectType, setObjectType] = useState('');\n const [selected, setSelected] = useState<\n SelectionOption | SelectionOption[]\n >();\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (\n props.question.objectType &&\n !props.readonly &&\n currentVendor.access.tables\n ) {\n dispatch(\n fetchVendorTable({\n type: props.question.objectType,\n vendorId: props.vendorId,\n })\n );\n }\n if (props.question.tableType && !isCountrySelect()) {\n dispatch(fetchTable(props.question.tableType));\n }\n }, []);\n\n const isFetchingVendorTable = useSelector(\n (state: ApplicationState) => state.vendors.isFetchingVendorTable\n );\n\n const options = useSelector((state: ApplicationState) => {\n if (props.question.objectType) {\n const opts = getDefaultSelectionOptions(\n props.question.objectType || props.question.tableType,\n state\n );\n return opts;\n }\n return (props.question.questionRows || []).map(row => {\n return { value: row.rowText, label: row.propertyName.split('.').pop() };\n });\n });\n\n useEffect(() => {\n if (!props.previousAnswer) {\n return;\n }\n\n const selectedOptions = options.filter(\n o => props.previousAnswer.value?.split(',').indexOf(o.value) > -1\n );\n\n setSelected(selectedOptions);\n }, [props.previousAnswer?.value, options?.length]);\n\n const handleChange = (values: SelectionOption[] | SelectionOption) => {\n setSelected(values);\n props.onChange([\n {\n [props.indexProperty]: props.question[props.indexProperty],\n value: getSelectionValue(values),\n ...policyAnswerCommonFields(props),\n },\n ]);\n };\n\n const isMultiSelect = () =>\n props.question.layout === QuestionLayoutEnum.MultiSelect;\n\n const isCountrySelect = () =>\n props.question.tableType === QuestionTableTypeEnum.Country;\n\n const add = () => {\n switch (props.question.objectType) {\n case QuestionObjectTypeEnum.Office:\n if (!canCreateOffice) {\n setObjectType('Office');\n setIsShowingInsufficientPermissionModal(true);\n return;\n }\n dispatch(showAddCompanyOfficeAddressModal(true));\n break;\n case QuestionObjectTypeEnum.VendorTeam:\n if (!canCreateTeam) {\n setObjectType('Team');\n setIsShowingInsufficientPermissionModal(true);\n return;\n }\n dispatch(showAddTeamModal(true));\n break;\n case QuestionObjectTypeEnum.VendorUser:\n if (!canCreateUser) {\n setObjectType('User');\n setIsShowingInsufficientPermissionModal(true);\n return;\n }\n dispatch(showAddUserModal(true));\n break;\n }\n };\n\n if (props.asTextReadonly) {\n return (\n \n {countryOptions => {\n const previousAnswer = {\n value: Array.isArray(selected)\n ? selected.length > 0\n ? selected[0].label\n : undefined\n : selected?.label,\n };\n if (isCountrySelect() && countryOptions?.length) {\n const countryName = countryOptions.find(\n opt => previousAnswer.value === opt.value\n );\n if (countryName) {\n previousAnswer.value = countryName.label;\n }\n }\n\n return ;\n }}\n \n );\n }\n\n return (\n <>\n
\n {isCountrySelect() && (\n \n )}\n {!isCountrySelect() && (\n \n )}\n
\n\n setIsShowingInsufficientPermissionModal(false)}\n show={isShowingInsufficientPermissionModal}\n title=\"Insufficient permission\"\n >\n You do not have permission to add a new {objectType}, please contact\n your Administrator.\n \n \n );\n};\n","const flattenArray = (array: any) => [].concat.apply([], array);\n\nexport default flattenArray;\n","import { QuestionDatatypeEnum } from '../swagger';\nimport { QuestionType } from '../types/QuestionType';\nimport { formatShortDate } from './formatShortDate';\n\nconst getTableValue = (question: QuestionType, index: number) => {\n const value = question.answers.find(a => a.index === index)?.value;\n if (question.datatype === QuestionDatatypeEnum.Date) {\n return formatShortDate(value);\n } else {\n return value;\n }\n};\n\nexport default getTableValue;\n","import { Question } from '../swagger';\nimport { QuestionType } from '../types/QuestionType';\nimport { CommonAnswerType } from '../types/CommonAnswerType';\n\nconst getTableQuestionsAndAnswers = ({\n question,\n questions,\n answers,\n indexProperty,\n}: {\n question: Question;\n questions: Question[];\n answers: CommonAnswerType[];\n indexProperty: 'name' | 'propertyName';\n}): QuestionType[] => {\n return questions\n .filter(q =>\n question.questionColumns.some(\n column => column.columnValue === q[indexProperty]\n )\n )\n .map((tableQuestion: Question) => ({\n ...tableQuestion,\n answers: answers.filter(\n answer => answer[indexProperty] === tableQuestion[indexProperty]\n ),\n }));\n};\n\nexport default getTableQuestionsAndAnswers;\n","import { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport React, { useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport flattenArray from '../../functions/flattenArray';\nimport getTableValue from '../../functions/getTableValue';\nimport {\n setCurrentTableQuestions,\n showDeleteTableAnswersModal,\n showEditTableAnswersModal,\n} from '../../store/assessments/assessmentsSlice';\nimport { Question } from '../../swagger/models';\nimport { QuestionType } from '../../types/QuestionType';\nimport { AdoptechButton } from '../AdoptechButton/AdoptechButton';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { IconButton } from '../IconButton/IconButton';\nimport './TableAnswer.scss';\nimport getTableQuestionsAndAnswers from '../../functions/getTableQuestionsAndAnswers';\nimport { CommonAnswerType } from '../../types/CommonAnswerType';\n\ninterface TableAnswerProps {\n answers: CommonAnswerType[];\n disabled?: boolean;\n readonly?: boolean;\n onChange: (value: CommonAnswerType[]) => void;\n question: Question;\n questions: Question[];\n indexProperty: 'name' | 'propertyName';\n}\n\nexport const TableAnswer: React.FC = ({\n question,\n questions,\n answers,\n indexProperty,\n disabled,\n readonly,\n}) => {\n const dispatch = useDispatch();\n\n const tableQuestions: QuestionType[] = useMemo(() => {\n return getTableQuestionsAndAnswers({\n question,\n questions,\n answers,\n indexProperty,\n });\n }, [question, questions, answers, indexProperty]);\n\n const handleEdit = (index: number) => () => {\n dispatch(setCurrentTableQuestions({ tableQuestions, index }));\n dispatch(showEditTableAnswersModal());\n };\n\n const handleDelete = (index: number) => () => {\n dispatch(setCurrentTableQuestions({ tableQuestions, index }));\n dispatch(showDeleteTableAnswersModal());\n };\n\n const allIndexes = flattenArray(\n tableQuestions.map(q => q.answers.map(a => a.index || 0))\n );\n const maxIndex = allIndexes.length ? Math.max(...allIndexes) : 0;\n\n const handleAdd = () => {\n dispatch(setCurrentTableQuestions({ tableQuestions, index: maxIndex + 1 }));\n dispatch(showEditTableAnswersModal());\n };\n\n const rowHasAnyValue = (index: number) =>\n tableQuestions.some(q => !!q.answers.find(a => a.index === index)?.value);\n\n return (\n
\n \n \n \n {tableQuestions.map((tableQuestion: QuestionType) => (\n {tableQuestion.questionText}\n ))}\n Actions\n \n \n \n {new Array(maxIndex + 1).fill(undefined).map(\n (_, index) =>\n rowHasAnyValue(index) && (\n \n {tableQuestions.map((tableQuestion: QuestionType) => (\n \n {getTableValue(tableQuestion, index)}\n \n ))}\n \n {!disabled && !readonly && (\n
\n \n \n
\n )}\n \n \n )\n )}\n \n
\n {!disabled && !readonly && (\n
\n + Add\n
\n )}\n
\n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Question } from '../../swagger';\nimport { AdoptechTextArea } from '../AdoptechTextArea/AdoptechTextArea';\nimport './TextAreaAnswer.scss';\nimport { CommonAnswerType } from '../../types/CommonAnswerType';\nimport { policyAnswerCommonFields } from '../../functions/policyAnswerCommonFields';\nimport { useAutoGrowTextArea } from '../../hooks/useAutoGrowTextArea';\n\ninterface TextAreaAnswerProps {\n previousAnswer?: CommonAnswerType;\n answers: CommonAnswerType[];\n disabled?: boolean;\n readonly?: boolean;\n onChange: (value: CommonAnswerType[]) => void;\n question: Question;\n indexProperty: 'name' | 'propertyName';\n}\n\nexport const TextAreaAnswer: React.FC = props => {\n const [value, setValue] = useState(\n props.previousAnswer ? props.previousAnswer.value : ''\n );\n\n useEffect(() => {\n setValue(props.previousAnswer ? props.previousAnswer.value : '');\n }, [props.previousAnswer?.propertyName]);\n\n useEffect(() => {\n if (props.previousAnswer === undefined) return;\n setValue(props.previousAnswer.value);\n }, [props.previousAnswer]);\n\n const textAreaRef = useRef(null);\n useAutoGrowTextArea(textAreaRef.current, value);\n\n return (\n
\n {\n if (!value && !props.previousAnswer) return;\n\n if (props.previousAnswer && value === props.previousAnswer.value)\n return;\n\n props.onChange([\n {\n [props.indexProperty]: props.question[props.indexProperty],\n value: value,\n ...policyAnswerCommonFields(props),\n },\n ]);\n }}\n onChange={e => {\n setValue(e.currentTarget.value);\n }}\n value={value}\n ref={textAreaRef}\n rows={7}\n />\n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { Answer, Question } from '../../../swagger';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../../AdoptechModal/AdoptechModal';\nimport { AnswerFormControl } from '../../AnswerFormControl/AnswerFormControl';\nimport './TableAnswerEditModal2.scss';\nimport { TableActions } from '../TableAnswer2';\nimport { CommonAnswerType } from '../../../types/CommonAnswerType';\nimport { Interweave } from 'interweave';\n\ninterface TableAnswerMap {\n [key: string]: Answer;\n}\n\ninterface TableAnswerEditModal2Props {\n rowToChange: { index: number; row: Answer[] };\n question: Question;\n action: TableActions;\n onCancel(): void;\n onUpdate(answers: Answer[]): void;\n}\n\nexport const TableAnswerEditModal2: React.FC = ({\n rowToChange,\n action,\n question,\n onCancel,\n onUpdate,\n}) => {\n const [tableAnswers, setTableAnswers] = useState({});\n const updateButtonDisabled = Object.values(tableAnswers).some(\n answer => !answer?.value\n );\n\n const getCurrentAnswerOutsideModal = (questionId: string) => {\n return rowToChange?.row?.find(answer => answer.questionId === questionId);\n };\n\n useEffect(() => {\n const answers: TableAnswerMap = {};\n question.table.questions.forEach(tableQuestion => {\n return (answers[tableQuestion.propertyName] =\n getCurrentAnswerOutsideModal(tableQuestion.id));\n });\n setTableAnswers(answers);\n }, []);\n\n const handleChange = (\n answers: CommonAnswerType[],\n questionId: string,\n answerId?: string\n ) => {\n setTableAnswers(currentAnswers => ({\n ...currentAnswers,\n [answers[0].propertyName]: {\n ...answers[0],\n questionId: questionId,\n index: rowToChange.index,\n id: answerId,\n closestQuestion: {\n id: question.id,\n layout: 'table_layout',\n },\n },\n }));\n };\n\n const handleUpdate = () => {\n if (updateButtonDisabled) {\n return;\n }\n\n if (action === TableActions.View) {\n onCancel();\n return;\n }\n\n onUpdate(Object.values(tableAnswers));\n onCancel();\n };\n\n return (\n \n {action} Table Row\n \n {question.table.questions.map(tableQuestion => (\n \n
\n {tableQuestion.questionText}\n
\n
\n \n
\n
\n \n handleChange(\n answers,\n tableQuestion.id,\n tableAnswers[tableQuestion.propertyName]?.id\n )\n }\n disableDebounce\n />\n
\n
\n
\n ))}\n \n \n Cancel\n \n {action === TableActions.Add && 'Add'}\n {action === TableActions.Edit && 'Save'}\n {action === TableActions.View && 'OK'}\n \n \n \n );\n};\n","import {\n Answer,\n Question,\n QuestionDatatypeEnum,\n VendorTable,\n} from '../../swagger/models';\nimport { formatShortDate } from '../../functions/formatShortDate';\n\nexport const getAnswerDisplayValue = (\n question: Question,\n answer: Answer,\n vendorTableCache: { [key: string]: VendorTable }\n) => {\n if (!question || !answer) {\n return '';\n }\n const respectiveQuestion = question.table.questions.find(\n (tableQuestion: Question) =>\n tableQuestion.propertyName === answer.propertyName\n );\n\n if (\n respectiveQuestion.objectType &&\n (!vendorTableCache || !vendorTableCache[respectiveQuestion.objectType])\n ) {\n return;\n }\n\n if (respectiveQuestion.objectType) {\n const vendorTable = vendorTableCache[respectiveQuestion.objectType];\n const value = vendorTable.rows.find(r => r.value === answer.value)\n ?.cells[0];\n return value;\n }\n\n return respectiveQuestion.datatype === QuestionDatatypeEnum.Date\n ? formatShortDate(answer.value)\n : answer.value;\n};\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../../AdoptechModal/AdoptechModal';\nimport { Answer, Question, VendorTable } from '../../../swagger/models';\nimport { getAnswerDisplayValue } from '../tableUtils';\n\ninterface TableAnswerDeleteModal2Props {\n rowToChange: { index: number; row: Answer[] };\n question: Question;\n onCancel(): void;\n onDelete(answers: Answer[]): void;\n vendorTableCache: { [key: string]: VendorTable };\n}\n\nexport const TableAnswerDeleteModal2: React.FC<\n TableAnswerDeleteModal2Props\n> = ({ question, rowToChange, onCancel, onDelete, vendorTableCache }) => {\n const getAnswerValue = (tableQuestion: Question): string => {\n const respectiveAnswer = rowToChange?.row?.find(\n (answer: Answer) => answer.propertyName === tableQuestion.propertyName\n );\n return getAnswerDisplayValue(question, respectiveAnswer, vendorTableCache);\n };\n\n return (\n \n Delete\n \n Are you sure you wish to delete this row?\n
\n
    \n {question.table.questions?.map((tableQuestion: Question) => (\n \n
  • \n {tableQuestion.questionText}: {getAnswerValue(tableQuestion)}\n
  • \n
    \n ))}\n
\n
\n \n Cancel\n {\n onDelete(rowToChange.row);\n onCancel();\n }}\n variant={AdoptechButtonVariant.Primary}\n >\n CONFIRM\n \n \n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport {\n Answer,\n Question,\n QuestionObjectTypeEnum,\n QuestionTableTypeEnum,\n} from '../../swagger/models';\nimport { AdoptechButton } from '../AdoptechButton/AdoptechButton';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { IconButton } from '../IconButton/IconButton';\nimport './TableAnswer2.scss';\nimport { CommonAnswerType } from '../../types/CommonAnswerType';\nimport { TableAnswerEditModal2 } from './TableAnswerEditModal2/TableAnswerEditModal2';\nimport { OnChangeAnswerOptions } from '../AnswerFormControl/AnswerFormControl';\nimport { TableAnswerDeleteModal2 } from './TableAnswerDeleteModal2/TableAnswerDeleteModal2';\nimport { getAnswerDisplayValue } from './tableUtils';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { OverlayTrigger, Popover } from 'react-bootstrap';\nimport { Interweave } from 'interweave';\nimport { fetchVendorTable } from '../../store/vendors/vendorsThunks';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport { ApplicationState } from '../../types/applicationState';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { faQuestionCircle } from '@fortawesome/pro-light-svg-icons/faQuestionCircle';\n\nexport interface TableAnswer2Props {\n onDeleteTable2Answers: (answers: CommonAnswerType[]) => void;\n onChange: (value: CommonAnswerType[], options: OnChangeAnswerOptions) => void;\n question: Question;\n}\n\nexport enum TableActions {\n Edit = 'Edit',\n Delete = 'Delete',\n Add = 'Add',\n View = 'View',\n}\n\nexport const TableAnswer2: React.FC = ({\n question,\n onChange,\n onDeleteTable2Answers,\n}) => {\n const [rowToChange, setRowToChange] = useState<{\n index: number;\n row: Answer[];\n }>();\n\n const [action, setAction] = useState();\n\n const handleEdit = (index: number, row: Answer[]) => () => {\n setAction(TableActions.Edit);\n setRowToChange({ index, row });\n };\n\n const handleView = (index: number, row: Answer[]) => () => {\n setAction(TableActions.View);\n setRowToChange({ index, row });\n };\n\n const handleDelete = (index: number, row: Answer[]) => () => {\n setAction(TableActions.Delete);\n setRowToChange({\n index,\n row,\n });\n };\n\n const handleAdd = () => {\n const largestIndex =\n sortedAnswersRows?.length > 0\n ? [...sortedAnswersRows.map(row => row[0].index)].pop() + 1\n : 0;\n setRowToChange({ index: largestIndex, row: null });\n setAction(TableActions.Add);\n };\n\n const handleCancelUpdateModals = () => {\n setAction(null);\n setRowToChange(null);\n };\n\n const showEditTableModal =\n action === TableActions.Add ||\n action === TableActions.Edit ||\n action === TableActions.View;\n\n const showDeleteAnswersModal = action === TableActions.Delete;\n\n const dispatch = useDispatch();\n\n const currentVendor = useSelector(selectCurrentVendor);\n const vendorTableCache = useSelector(\n (state: ApplicationState) => state.vendors.vendorTableCache\n );\n\n const sortedAnswersRows = question.table.answers\n .slice()\n .sort((a, b) => a[0].index - b[0].index);\n\n useEffect(() => {\n if (!question) {\n return;\n }\n\n const questionsWithObjects = question.table.questions.filter(\n q => q.objectType\n );\n\n const alreadyRequested: QuestionObjectTypeEnum[] = [];\n questionsWithObjects.forEach(questionWithObject => {\n if (\n alreadyRequested.indexOf(questionWithObject.objectType) > -1 ||\n (vendorTableCache && vendorTableCache[questionWithObject.objectType])\n ) {\n return;\n }\n\n dispatch(\n fetchVendorTable({\n type: questionWithObject.objectType,\n vendorId: currentVendor.id,\n })\n );\n\n alreadyRequested.push(questionWithObject.objectType);\n });\n }, [question]);\n\n return (\n
\n \n \n \n {question.table.questions\n .filter(q => q.primary)\n .map((tableQuestion: Question) => (\n \n {tableQuestion.questionText}\n {tableQuestion.explanatoryText && (\n \n \n \n \n \n \n \n \n }\n placement=\"auto\"\n >\n \n \n )}\n \n ))}\n {question.table.questions.some(q => !q.primary) && (\n \n Additional Columns\n \n This table contains additional columns that are not\n displayed. In order to see these columns, click on the\n ellipsis for the row.\n \n \n }\n placement=\"auto\"\n >\n \n ...\n \n \n \n )}\n Actions\n \n \n \n {sortedAnswersRows.map((answerRow: Answer[]) => {\n const index = answerRow[0].index;\n\n return (\n \n {question.table.questions\n .filter(q => q.primary)\n .map((tableQuestion: Question) => {\n const answer = answerRow.find(\n currentAnswer =>\n currentAnswer.propertyName ===\n tableQuestion.propertyName\n );\n if (!answer) return null;\n return (\n \n {answer &&\n getAnswerDisplayValue(\n question,\n answer,\n vendorTableCache\n )}\n \n );\n })}\n {question.table.questions.some(q => !q.primary) && (\n \n ...\n \n )}\n \n
\n \n \n
\n \n \n );\n })}\n \n
\n
\n + Add\n
\n {showEditTableModal && (\n onChange(answers, { isTable2Answer: true })}\n onCancel={handleCancelUpdateModals}\n question={question}\n rowToChange={rowToChange}\n action={action}\n />\n )}\n {showDeleteAnswersModal && (\n \n )}\n
\n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { sort } from '../functions/sort';\nimport { sortByDate } from '../functions/sortByDate';\nimport { sortByOwner } from '../functions/sortByOwner';\nimport { AuditModel, AuditModelStatusEnum } from '../swagger/models/AuditModel';\nimport { VendorUser } from '../swagger/models/VendorUser';\nimport { ApplicationState } from '../types/applicationState';\nimport { ColumnSort } from '../types/columnSort';\nimport { Grid } from '../types/grid';\nimport { selectSortSettings } from './selectSortSettings';\n\nconst sortAudits = (a: AuditModel, b: AuditModel, columnSort: ColumnSort) => {\n const typedColumn = columnSort.name as keyof Omit;\n\n if (['owner', 'createdBy'].includes(typedColumn)) {\n return sortByOwner(\n a[typedColumn] as VendorUser,\n b[typedColumn] as VendorUser,\n columnSort.direction\n );\n }\n if (['startedAt', 'completedAt'].includes(typedColumn)) {\n const dateColumn = typedColumn as 'startedAt' | 'completedAt';\n return sortByDate(a[dateColumn], b[dateColumn], columnSort.direction);\n }\n\n return sort(a[typedColumn] || '', b[typedColumn] || '', columnSort.direction);\n};\n\nexport const selectAudits = createSelector(\n (state: ApplicationState) => state.audits.audits,\n selectSortSettings(Grid.Audits),\n (state: ApplicationState) => state.audits.completedFilter,\n (audits: AuditModel[], sortSetting, completedFilter) => {\n return [...audits]\n .filter(audit =>\n completedFilter ? true : audit.status !== AuditModelStatusEnum.Completed\n )\n .sort((a, b) => sortAudits(a, b, sortSetting.columnSort));\n }\n);\n","import { faCloudDownload } from '@fortawesome/pro-light-svg-icons/faCloudDownload';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { faUserPlus } from '@fortawesome/pro-light-svg-icons/faUserPlus';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { setAuditIdToBeDeleted } from './store/auditsSlice';\nimport {\n useCanFeature,\n hasFeature,\n mapShareFeaturesToAccessLevels,\n} from '../../../functions/access';\nimport { MeatballMenu } from '../../../components/MeatballMenu/MeatballMenu';\nimport { fetchAuditPDF } from './store/auditsThunks';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { AccessObject } from '../../../types/accessObject';\nimport { showShareModal } from '../../../store/vendors/vendorsSlice';\nimport {\n AuditModel,\n AuditModelStatusEnum,\n ShareableType,\n} from '../../../swagger';\nimport { fetchVendorDocumentDownload } from '../../../store/vendors/vendorsThunks';\nimport { auditType } from './AuditsPage';\nimport { capitaliseFirst } from '../../../functions/capitaliseFirst';\n\ninterface MeatballProps {\n audit: AuditModel;\n onClick: (audit: AuditModel) => void; // TODO: rename to onEditClick\n}\n\nexport const auditAccess = (audit: AuditModel, isIndexPage: boolean) => {\n const completed = audit.status === AuditModelStatusEnum.Completed;\n return {\n canEdit: !completed,\n canDelete: isIndexPage,\n canView: completed,\n canDownload: completed,\n };\n};\n\nexport const AuditsMeatballMenu: React.FC = ({\n audit,\n onClick,\n}) => {\n const currentAudit = useSelector(\n (state: ApplicationState) => state.audits.currentAudit\n );\n const dispatch = useDispatch();\n const isIndexPage = !currentAudit;\n const access = auditAccess(audit, isIndexPage);\n const canManageAudits = useCanFeature(AccessObject.audits_manage);\n const hasVisibleSectionBeforeDelete = Object.entries(access).some(\n section => section[0] !== 'canDelete' && section[1]\n );\n\n return (\n \n {access.canEdit && canManageAudits && (\n onClick(audit)}\n >\n \n Edit\n \n )}\n {access.canView && (\n {\n dispatch(fetchAuditPDF(audit));\n }}\n >\n \n View\n \n )}\n {\n dispatch(\n showShareModal({\n shareableId: audit.id,\n shareableType: ShareableType.Audit,\n accessLevels: mapShareFeaturesToAccessLevels(\n audit.access.feature\n ),\n title: capitaliseFirst(auditType(audit)),\n relativePath: audit.relativePath,\n })\n );\n e.stopPropagation();\n }}\n >\n \n Share\n \n {access.canDownload && (\n {\n dispatch(\n fetchVendorDocumentDownload({\n id: audit.vendorDocumentId,\n successCallback: vendorDocumentDownload => {\n window.location.href = vendorDocumentDownload.document;\n },\n })\n );\n }}\n >\n \n Download\n \n )}\n {hasVisibleSectionBeforeDelete && isIndexPage && }\n {access.canDelete && canManageAudits && (\n {\n dispatch(setAuditIdToBeDeleted(audit.id));\n }}\n >\n \n Delete\n \n )}\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n closePdfPreview,\n openPdfPreview,\n} from '../../../../store/global/globalSlice';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { PdfOpenMode } from '../../../../types/pdfOpenMode';\nimport { PdfPreviewCard } from '../../../../components/PdfPreviewCard/PdfPreviewCard';\nimport { DocumentType } from '../../../../constants/DocumentType';\nimport {\n fetchAuditPDFError,\n fetchAuditPDFRequest,\n fetchAuditPDFSuccess,\n} from '../store/auditsSlice';\nimport { PdfPreviewEntityPaths } from '../../../../functions/routePathsHelpers';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { AuditModel } from '../../../../swagger/models/AuditModel';\nimport { getRequestWithRetry } from '../../../../functions/getRequestWithRetry';\n\nexport const useAuditPreviewModal = () => {\n const params = useQueryParams();\n const documentableId = params.get('documentableId');\n const audits = useSelector((state: ApplicationState) => state.audits.audits);\n const dispatch = useDispatch();\n useEffect(() => {\n const audit = audits.find(item => item.id === documentableId);\n if (!audit) return;\n dispatch(\n openPdfPreview({\n mode: PdfOpenMode.PreviewDocument,\n documentType: DocumentType.Audit,\n objectId: audit.id,\n title: audit.name,\n vendorDocumentId: audit.vendorDocumentId,\n navigateUrlOnClose: PdfPreviewEntityPaths.audits,\n })\n );\n }, [documentableId]);\n};\n\nconst pdfURL = (audit: AuditModel) => {\n return `/api/v1/audits/${audit.id}/preview`;\n};\n\n// TODO: When BE done && RHS submitted, reload PDF may be useful as for agreements\n// export const usePreviewModeReload = () => {\n// const openedDraftPdfPreview = useSelector(\n// (state: ApplicationState) =>\n// state.global.pdfPreviewInline && state.global.isPreviewingPdf\n// );\n// const audit = useSelector((state: ApplicationState) => state.audits.currentAudit);\n// const dispatch = useDispatch();\n// const reloadPdf = () => {\n// if (!openedDraftPdfPreview) return;\n// dispatch(setPdfPreviewUrl(null));\n// dispatch(setPdfPreviewUrl(pdfURL(audit)));\n// };\n\n// return { reloadPdf };\n// };\n\nexport const PreviewMode: React.FC = () => {\n const dispatch = useDispatch();\n const audit = useSelector(\n (state: ApplicationState) => state.audits.currentAudit\n );\n\n // Wait if audit from RHS is updating OR audit answer is updating\n const isSavingDataRequiredForPdf = useSelector(\n (state: ApplicationState) =>\n state.audits.isPostingAuditAnswer ||\n state.audits.isDeletingAuditAnswer ||\n state.audits.isUpdatingAudit\n );\n\n const openPreview = (url: string) =>\n dispatch(\n openPdfPreview({\n mode: PdfOpenMode.Preview,\n documentType: DocumentType.Audit,\n objectId: audit.id,\n title: audit.name,\n url,\n inline: true,\n })\n );\n\n const isRequestingAuditPdf = useSelector(\n (state: ApplicationState) => state.audits.isFetchingAuditPDF\n );\n\n useEffect(() => {\n dispatch(fetchAuditPDFRequest());\n getRequestWithRetry({\n url: pdfURL(audit),\n retries: 2,\n isBinary: true,\n })\n .then((blob: Blob) => {\n const localURL = URL.createObjectURL(blob);\n openPreview(localURL);\n dispatch(fetchAuditPDFSuccess());\n })\n .catch(() => {\n dispatch(fetchAuditPDFError());\n openPreview(pdfURL(audit)); // Show default \"Failed load pdf\" react-pdf library warning\n });\n\n return () => {\n dispatch(closePdfPreview());\n };\n }, [isSavingDataRequiredForPdf]);\n\n return (\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { AuditModelRatingEnum, VendorUserRoles } from '../../../swagger';\nimport AdoptechHS from '../../../components/AdoptechHS/AdoptechHS';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { AdoptechTextInput2 } from '../../../components/AdoptechTextInput2/AdoptechTextInput2';\nimport { AdoptechReactSelect2 } from '../../../components/AdoptechReacSelect2/AdoptechReactSelect2';\nimport { AdoptechDatePicker2 } from '../../../components/AdoptechDatePicker2/AdoptechDatePicker2';\nimport { useOwnerOptions } from '../../../hooks/useOwnerOptions';\nimport { DropZone } from '../../../components/DropZone/DropZone';\nimport {\n UploadAuditPayload,\n fetchAudits,\n uploadAudit,\n} from './store/auditsThunks';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../types/applicationState';\nimport './AuditsUploadDrawer.scss';\n\nconst baseCss = 'auditsUploadDrawer';\n\nexport const validation = (\n data: UploadAuditPayload\n): Record => ({\n name: data.name ? null : ['Audit name must be set'],\n owner: data.owner?.id ? null : ['Owner must be set'],\n startedAt: data.startedAt ? null : ['Start date must be set'],\n completedAt: data.completedAt ? null : ['End date must be set'],\n rating: data.rating ? null : ['Rating must be set'],\n origin: data.origin ? null : ['Rating must be set'],\n file: data.file ? null : ['File must be attached'],\n});\n\ntype Field =\n | 'name'\n | 'origin'\n | 'owner'\n | 'startedAt'\n | 'completedAt'\n | 'rating'\n | 'file';\n\ninterface Props {\n show: boolean;\n onClose(): void;\n}\n\nexport const AuditsUploadDrawer: React.FC = ({ show, onClose }) => {\n const dispatch = useDispatch();\n const [data, setData] = useState({} as UploadAuditPayload);\n const setName = (name: string) => setData({ ...data, name });\n const setFile = (file: File) => setData({ ...data, file });\n\n const { users, ownerOptions } = useOwnerOptions({\n onlyRoles: [\n VendorUserRoles.Admin,\n VendorUserRoles.SecurityManager,\n VendorUserRoles.Auditor,\n ],\n });\n\n const inProgress = useSelector(\n (state: ApplicationState) => state.audits.isCreatingAudit\n );\n\n const originOptions = [\n { label: 'Internal', value: 'internal' },\n { label: 'Vendor', value: 'vendor' },\n { label: 'Supplier', value: 'supplier' },\n { label: 'Surveillance', value: 'surveillance' },\n { label: 'External', value: 'external' },\n ];\n\n const ratingOptions = [\n { label: 'Compliant', value: AuditModelRatingEnum.Compliant },\n {\n label: 'Improvement needed',\n value: AuditModelRatingEnum.ImprovementNeeded,\n },\n {\n label: 'Not compliant',\n value: AuditModelRatingEnum.NotCompliant,\n },\n ];\n\n const startDate = data.startedAt ? new Date(data.startedAt) : null;\n const endDate = data.completedAt ? new Date(data.completedAt) : null;\n\n useEffect(() => {\n if (endDate && endDate < startDate) setData({ ...data, completedAt: null });\n }, [startDate]);\n\n const busy = inProgress;\n\n const hasError = (field: Field) => !!validation(data)[field];\n\n const formIsValid = Object.values(validation(data)).every(v => !v);\n const vendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n\n const submitChanges = async () => {\n await dispatch(uploadAudit(data));\n dispatch(fetchAudits(vendorId));\n onClose();\n };\n\n const Footer = (\n <>\n \n Cancel\n \n \n Add\n \n \n );\n\n return (\n \n
\n
\n
Name your audit
\n setName(e.currentTarget.value)}\n id=\"auditsUploadFormName\"\n hasError={hasError('name')}\n value={data.name || ''}\n type=\"text\"\n />\n
\n
\n
Type of audit
\n {\n setData({\n ...data,\n origin: e.value,\n });\n }}\n value={originOptions.find(option => option.value == data.origin)}\n />\n
\n
\n
\n Who is responsible for this audit report?\n
\n {\n setData({\n ...data,\n owner: users.find(user => user.id === e.value),\n });\n }}\n value={ownerOptions.find(option => option.value == data.owner?.id)}\n />\n
\n
\n
\n What date did the audit start?\n
\n {\n setData({\n ...data,\n startedAt: d.toJSON().split('T')[0],\n });\n }}\n />\n
\n
\n
\n What date did the audit end?\n
\n {\n setData({\n ...data,\n completedAt: d.toJSON().split('T')[0],\n });\n }}\n />\n
\n
\n
\n Please give the audit a compliance rating\n
\n {\n setData({\n ...data,\n rating: e.value as AuditModelRatingEnum,\n });\n }}\n value={ratingOptions.find(option => option.value == data.rating)}\n />\n
\n
\n
\n \n
\n
\n \n );\n};\n","import React, { useState } from 'react';\nimport { VendorUserRoles } from '../../../../swagger';\nimport AdoptechHS from '../../../../components/AdoptechHS/AdoptechHS';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../components/AdoptechButton/AdoptechButton';\nimport { AdoptechTextInput2 } from '../../../../components/AdoptechTextInput2/AdoptechTextInput2';\nimport { AdoptechReactSelect2 } from '../../../../components/AdoptechReacSelect2/AdoptechReactSelect2';\nimport { AdoptechDatePicker2 } from '../../../../components/AdoptechDatePicker2/AdoptechDatePicker2';\nimport { useOwnerOptions } from '../../../../hooks/useOwnerOptions';\nimport { DropZone } from '../../../../components/DropZone/DropZone';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport './MeetingsUploadDrawer.scss';\nimport {\n UploadMeetingsPayload,\n fetchAudits,\n postMeeting,\n} from '../store/auditsThunks';\n\nconst baseCss = 'meetingsEditForm';\n\nexport const validation = (\n data: UploadMeetingsPayload\n): Record => ({\n auditName: data.auditName ? null : ['Meeting name must be set'],\n auditOwnerId: data.auditOwnerId ? null : ['Owner must be set'],\n auditStartedAt: data.auditStartedAt ? null : ['Start date must be set'],\n auditFile: data.auditFile ? null : ['File must be attached'],\n});\n\ntype Field = 'auditName' | 'auditOwnerId' | 'auditStartedAt' | 'auditFile';\n\ninterface Props {\n onClose(): void;\n}\n\nexport const MeetingsUploadDrawer: React.FC = ({ onClose }) => {\n const dispatch = useDispatch();\n const [data, setData] = useState({} as UploadMeetingsPayload);\n const handleNameChange = (auditName: string) =>\n setData({ ...data, ...{ auditName } });\n const handleFileChange = (auditFile: File) =>\n setData({ ...data, ...{ auditFile } });\n\n const handleOwnerChange = (e: { value: any }) =>\n setData({\n ...data,\n ...{ auditOwnerId: e.value },\n });\n\n const handleDateChange = (d: Date): void => {\n setData({\n ...data,\n auditStartedAt: d.toJSON().split('T')[0],\n });\n };\n\n const { users, ownerOptions } = useOwnerOptions({\n onlyRoles: [\n VendorUserRoles.Admin,\n VendorUserRoles.SecurityManager,\n VendorUserRoles.Auditor,\n ],\n });\n\n const startDate = data.auditStartedAt ? new Date(data.auditStartedAt) : null;\n const hasError = (field: Field) => !!validation(data)[field];\n const formIsValid = Object.values(validation(data)).every(v => !v);\n\n const vendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n const handleSubmit = async () => {\n await dispatch(postMeeting(data));\n dispatch(fetchAudits(vendorId));\n onClose();\n };\n\n const isPosting = useSelector(\n (state: ApplicationState) => state.audits.postMeetingStatus === 'loading'\n );\n\n const Footer = (\n <>\n \n Cancel\n \n \n Add\n \n \n );\n\n return (\n \n
\n
\n
Give your meeting a name
\n handleNameChange(e.currentTarget.value)}\n id=\"meetingsUploadFormName\"\n hasError={hasError('auditName')}\n value={data.auditName || ''}\n type=\"text\"\n />\n
\n
\n
\n Who owns the minutes of this meeting?\n
\n option.value === data.auditOwnerId\n )}\n />\n
\n
\n
\n What was the date of the meeting\n
\n \n
\n
\n \n
\n
\n \n );\n};\n","import './AuditsPage.scss';\nimport { push } from 'connected-react-router';\nimport React, { useEffect, useState } from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { capitalize } from '../../../functions/capitalize';\nimport { formatShortDate } from '../../../functions/formatShortDate';\nimport { selectAudits } from '../../../selectors/selectAudits';\nimport { selectCurrentVendorUser } from '../../../selectors/selectCurrentVendorUser';\nimport {\n cleanupAudits,\n setAuditIdToBeDeleted,\n toggleCompletedFilter,\n} from './store/auditsSlice';\nimport { deleteAudit, fetchAuditPDF, fetchAudits } from './store/auditsThunks';\nimport { getVendorProducts } from '../../../store/vendors/vendorsThunks';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { Grid } from '../../../types/grid';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport AdoptechGridTable from '../../../components/AdoptechGridTable/AdoptechGridTable';\nimport AdoptechOverflowLine from '../../../components/AdoptechOverflowLine/AdoptechOverflowLine';\nimport { GenericModal } from '../../../components/GenericModal/GenericModal';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport { Lozenge } from '../../../components/Lozenge/Lozenge';\nimport { NoDataText } from '../../../components/NoDataText/NoDataText';\nimport { SortableTableHeader } from '../../../components/SortableTableHeader/SortableTableHeader';\nimport { ToggleSwitch } from '../../../components/ToggleSwitch/ToggleSwitch';\nimport { UserAvatar } from '../../../components/UserAvatar/UserAvatar';\nimport { AuditsMeatballMenu } from './AuditsMeatballMenu';\nimport { auditStartRoute } from '../../../components/Routes/Routes';\nimport { useAuditPreviewModal } from './PreviewMode/PreviewMode';\nimport { AuditModel, AuditModelStatusEnum } from '../../../swagger';\nimport { useCanFeature } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport { fetchComplianceControls } from '../../../store/compliance/complianceThunks';\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus';\nimport { AdoptechDropdownToggle } from '../../../components/AdoptechDropdownToggle/AdoptechDropdownToggle';\nimport { AuditsUploadDrawer } from './AuditsUploadDrawer';\nimport { MeetingsUploadDrawer } from './MeetingsUploadDrawer/MeetingsUploadDrawer';\n\nexport const auditRating = (rating: string) => {\n const ratingString = rating ?? 'n/a';\n if (ratingString === 'n/a') return ratingString;\n return capitalize(ratingString?.replace('_', ' '));\n};\n\nconst AuditsList: React.FC<{\n items?: AuditModel[];\n onClick(audit: AuditModel): void;\n}> = ({ items, onClick }) => {\n if (items.length < 1) return ;\n const baseCss = 'auditsPage';\n\n return (\n
\n
\n \n \n columnName=\"name\"\n grid={Grid.Audits}\n label=\"Audit/Meeting name\"\n notInTable\n />\n \n columnName=\"owner\"\n grid={Grid.Audits}\n label=\"Owner\"\n notInTable\n />\n \n columnName=\"startedAt\"\n grid={Grid.Audits}\n label=\"Audit/Meeting date\"\n notInTable\n />\n \n columnName=\"rating\"\n grid={Grid.Audits}\n label=\"Rating\"\n notInTable\n />\n \n columnName=\"status\"\n grid={Grid.Audits}\n label=\"Status\"\n notInTable\n />\n
\n }\n >\n {items.map(audit => (\n onClick(audit)}\n >\n
{audit.name}
\n \n \n \n
{formatShortDate(audit.startedAt)}
\n
{auditRating(audit.rating)}
\n
{capitalize(audit.status.replace('_', ' '))}
\n
e.stopPropagation()}>\n \n
\n
\n ))}\n \n
\n );\n};\n\nexport const auditType = (audit: AuditModel) => {\n return audit?.type === 'Audit::Meeting' ? 'meeting' : 'audit';\n};\n\nexport const AuditsPage: React.FC = () => {\n const baseCss = 'auditsPage';\n\n const vendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n const vendorUser = useSelector(selectCurrentVendorUser);\n\n const filteredAudits = useSelector(selectAudits);\n const auditsState = useSelector((state: ApplicationState) => state.audits);\n const [showUploadDrawer, setShowUploadDrawer] = useState(false);\n const [showMeetingsUploadDrawer, setShowMeetingsUploadDrawer] =\n useState(false);\n const {\n completedFilter,\n isFetchingAudits,\n isDeletingAudit,\n auditIdToDelete,\n audits, // select all audits from redux, no matter what filter value is\n } = auditsState;\n const dispatch = useDispatch();\n useEffect(() => {\n dispatch(fetchComplianceControls({ vendorId }));\n dispatch(getVendorProducts(true));\n dispatch(fetchAudits(vendorId));\n }, [vendorId, vendorUser.roles]);\n\n useAuditPreviewModal();\n useEffect(() => {\n return () => {\n dispatch(cleanupAudits());\n };\n }, []);\n const canManageAudits = useCanFeature(AccessObject.audits_manage);\n\n if (isFetchingAudits || isDeletingAudit) {\n return ;\n }\n\n const handleRowClick = (audit: AuditModel) => {\n if (audit.status === AuditModelStatusEnum.Completed) {\n dispatch(fetchAuditPDF(audit));\n return;\n }\n dispatch(push(`/r/compliance/audits/${audit.id}`));\n };\n\n const auditToRemove = filteredAudits.find(p => p.id === auditIdToDelete);\n return (\n
\n
\n
\n Audits and Management Reviews\n \n
\n\n
\n dispatch(toggleCompletedFilter())}\n handlerStyle=\"small\"\n />\n Show completed audits/meetings\n
\n {canManageAudits && (\n
\n \n \n \n Add new\n \n \n \n dispatch(push(auditStartRoute))}>\n Start new\n \n setShowUploadDrawer(true)}>\n Upload audit\n \n setShowMeetingsUploadDrawer(true)}\n >\n Upload meeting minutes\n \n \n \n
\n )}\n
\n \n dispatch(setAuditIdToBeDeleted(undefined))}\n onClose={() => {\n dispatch(deleteAudit(auditIdToDelete));\n }}\n show={!!auditIdToDelete}\n showCancelButton\n title=\"Confirm delete?\"\n >\n
\n

{auditToRemove?.name}

\n
\n
\n Click CONFIRM to permanently delete this {auditType(auditToRemove)}\n
\n \n {\n setShowUploadDrawer(false);\n }}\n />\n {showMeetingsUploadDrawer && (\n {\n setShowMeetingsUploadDrawer(false);\n }}\n />\n )}\n
\n );\n};\n","import { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectCurrentVendorUser } from '../../../selectors/selectCurrentVendorUser';\nimport {\n Answer,\n AuditModelRatingEnum,\n QuestionTable,\n VendorUser,\n} from '../../../swagger';\nimport { AdoptechReactSelect } from '../../../components/AdoptechReactSelect/AdoptechReactSelect';\nimport { TableAnswer2Props } from '../../../components/TableAnswer2/TableAnswer2';\nimport './AuditReviewTableAnswer.scss';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { AdoptechTextArea } from '../../../components/AdoptechTextArea/AdoptechTextArea';\nimport { auditRating } from './AuditsPage';\nimport { reactSelectLightTheme } from '../../../functions/reactSelectCustomTheme';\nimport { ApplicationState } from '../../../types/applicationState';\nimport classNames from 'classnames';\nimport { IconButton } from '../../../components/IconButton/IconButton';\nimport { setAuditQuestionTableAnswers } from './store/auditsSlice';\nimport { globalUserId, useOwnerOptions } from '../../../hooks/useOwnerOptions';\nimport { normalizeTableAnswers } from '../../../functions/normalizeTableAnswers';\n\nexport const addToggleClass = 'add-new-toggle';\n\nexport const isMyAnswer = (answer: Answer, currentVendorUser: VendorUser) => {\n const newAnswer = !answer.id;\n if (newAnswer) return true;\n return answer.userName === currentVendorUser.fullName;\n};\n\nexport const AuditReviewTableAnswer: React.FC = ({\n question,\n onChange,\n onDeleteTable2Answers,\n}) => {\n // Avoid using local state answers here. Use only redux store (question?.table?.answers) for checking answers outside of this component\n const answers = normalizeTableAnswers(question);\n const dispatch = useDispatch();\n const setAnswers = (answersPayload: Answer[]) => {\n const answersFormatForRedux: QuestionTable['answers'] = [answersPayload];\n dispatch(\n setAuditQuestionTableAnswers({\n id: question.id,\n answers: answersFormatForRedux,\n })\n );\n };\n const baseCss = 'auditReviewTable';\n const { ownerOptions } = useOwnerOptions({\n valuesAsGlobalId: true,\n includingGuest: true,\n });\n const currentVendorUser = useSelector(selectCurrentVendorUser);\n const ratingOptions = Object.entries(AuditModelRatingEnum).map(entry => {\n return { label: auditRating(entry[0]), value: entry[1] };\n });\n\n const { isPostingAuditAnswer, isFetchingAudit } = useSelector(\n (state: ApplicationState) => state.audits\n );\n\n const answerByType = (array: Answer[], type: string) =>\n array.find(answer => answer.propertyName.endsWith(type)) ||\n ({ propertyName: type, value: '' } as Answer);\n const updateAnswer = (\n currentAnswer: Answer,\n value: AuditModelRatingEnum | string // rating or comments or \"user global id format\"\n ) => {\n const newAnswers = answers.map(answer => {\n return answer.id === currentAnswer.id &&\n answer.propertyName === currentAnswer.propertyName\n ? { ...answer, value }\n : answer;\n });\n setAnswers(newAnswers);\n const { propertyName } = currentAnswer;\n const isSelectField =\n propertyName.endsWith('.auditor_name') ||\n propertyName.endsWith('.rating');\n if (isSelectField) {\n // if select field, call BE request without waiting blur\n onUpdateRequest(newAnswers);\n }\n };\n\n // Send request to the backend only if ALL answers in the row are filled in\n // ELSE empty answers will be created but on reload empty answers will be not returned from the survey =>\n // page will be broken\n\n const onUpdateRequest = (newAnswers: Answer[]) => {\n const myAnswers = newAnswers.filter(answer =>\n isMyAnswer(answer, currentVendorUser)\n );\n onChange(myAnswers, { isTable2Answer: true });\n };\n\n const sortedIndexes = [...new Set(answers.map(answer => answer.index))];\n const isDisabledDeletion = isPostingAuditAnswer || isFetchingAudit;\n const onAddClick = () => {\n const numbers = (answers || []).map(answer => answer.rowOrder);\n const rowOrder = numbers.length > 0 ? Math.max(...numbers) + 1 : 0;\n const index = answers.length > 0 ? answers.length + 1 : 0;\n\n const attrs: Answer = {\n value: null,\n questionId: question.id,\n index,\n rowOrder,\n };\n const newAnswers: Answer[] = question.table.questions.map(childQuestion => {\n const customAttrs = childQuestion.propertyName.endsWith('.auditor_name')\n ? {\n value: globalUserId(currentVendorUser),\n }\n : {};\n\n return {\n ...attrs,\n questionId: childQuestion.id,\n propertyName: childQuestion.propertyName,\n value: null,\n ...customAttrs,\n };\n });\n setAnswers([...answers].concat(newAnswers));\n };\n\n return (\n
\n
\n {question.questionColumns.map(column => (\n
{column.columnText}
\n ))}\n
\n
\n
\n {sortedIndexes.sort().map(index => {\n const row = answers.filter(answer => answer.index === index);\n const commentsAnswer = answerByType(row, '.comments');\n const ownerAnswer = answerByType(row, '.auditor_name');\n const ratingAnswer = answerByType(row, '.rating');\n const isDisabled = row.some(\n answer => !isMyAnswer(answer, currentVendorUser)\n );\n return (\n \n
\n {\n updateAnswer(ownerAnswer, e.value);\n }}\n value={ownerOptions.find(\n option => option.value === ownerAnswer.value\n )}\n placeholder=\"Please select\"\n label={null}\n />\n
\n
\n {\n updateAnswer(ratingAnswer, e.value as AuditModelRatingEnum);\n }}\n value={ratingOptions.find(\n option => option.value == ratingAnswer.value\n )}\n placeholder=\"Please select\"\n theme={reactSelectLightTheme}\n />\n
\n
\n {\n updateAnswer(commentsAnswer, e.currentTarget.value);\n }}\n onBlur={e => {\n onUpdateRequest(answers);\n }}\n icon={faPen}\n placeholder=\"Enter auditor comments\"\n />\n
\n
\n {\n const indexes = row.map(answer => answer.index);\n const rowToDelete = answers.filter(answer =>\n indexes.includes(answer.index)\n );\n const answersOutsideRow = answers.filter(\n answer => !indexes.includes(answer.index)\n );\n setAnswers(answersOutsideRow);\n onDeleteTable2Answers(rowToDelete);\n }}\n tooltip={isDisabledDeletion ? 'Please wait ...' : 'Delete'}\n />\n
\n
\n );\n })}\n
\n );\n};\n","import { Question, Answer } from '../swagger';\n\nconst completeRow = (question: Question, row: Answer[]): Answer[] => {\n const questions = question.table.questions;\n if (questions.length == row.length) return row;\n\n return questions.map(({ propertyName, id }) => {\n const existingAnswer = row.find(a => a.propertyName == propertyName);\n if (existingAnswer) return existingAnswer;\n\n const prototype = row[0]; // to share fields common for the row\n const { index, userName } = prototype;\n\n return {\n questionId: id,\n index,\n userName,\n propertyName,\n } as Answer;\n });\n};\n\nexport const normalizeTableAnswers = (question: Question): Answer[] => {\n const answers = question?.table?.answers?.flat();\n if (!answers) return [];\n\n const sortedIndexes = [...new Set(answers.map(answer => answer.index))];\n\n const rows = sortedIndexes.map(index =>\n completeRow(\n question,\n answers.filter(answer => answer.index === index)\n )\n );\n\n return rows.flat();\n};\n","import React from 'react';\nimport { Question, QuestionLayoutEnum } from '../../swagger';\nimport { CheckboxesAnswer } from '../CheckboxesAnswer/CheckboxesAnswer';\nimport { DateFieldAnswer } from '../DateFieldAnswer/DateFieldAnswer';\nimport { FileSelectAnswer } from '../FileSelectAnswer/FileSelectAnswer';\nimport { RadioButtonsAnswer } from '../RadioButtonsAnswer/RadioButtonsAnswer';\nimport { SelectAnswer } from '../SelectAnswer/SelectAnswer';\nimport { TableAnswer } from '../TableAnswer/TableAnswer';\nimport { TextAreaAnswer } from '../TextAreaAnswer/TextAreaAnswer';\nimport { TextBasedAnswer } from '../TextBasedAnswer/TextBasedAnswer';\nimport { CommonAnswerType } from '../../types/CommonAnswerType';\nimport { TableAnswer2 } from '../TableAnswer2/TableAnswer2';\nimport { AuditReviewTableAnswer } from '../../features/compliance/audits/AuditReviewTableAnswer';\n\nexport interface OnChangeAnswerOptions {\n isTable2Answer?: boolean;\n isCheckboxAnswer?: boolean;\n}\n\ninterface AnswerProps {\n question: Question;\n questions: Question[];\n disabled?: boolean;\n readonly?: boolean;\n answers: CommonAnswerType[];\n previousAnswer?: CommonAnswerType;\n onChange: (\n answers: CommonAnswerType[],\n options?: OnChangeAnswerOptions\n ) => void;\n onDeleteTable2Answers?: (answers: CommonAnswerType[]) => void;\n indexProperty: 'name' | 'propertyName';\n vendorId?: string;\n disableDebounce?: boolean;\n asTextReadonly?: boolean;\n responseId?: string;\n usingNewSurveyStructure?: boolean;\n}\n\nexport const AnswerFormControl: React.FC = props => {\n const questionTypes: { [key in QuestionLayoutEnum]: any } = {\n check_boxes: CheckboxesAnswer,\n date_field: DateFieldAnswer,\n email_field: TextBasedAnswer,\n file_select: FileSelectAnswer,\n multi_select: SelectAnswer,\n number_field: TextBasedAnswer,\n radio_buttons: RadioButtonsAnswer,\n radio_grid: RadioButtonsAnswer,\n single_select: SelectAnswer,\n text_area: TextAreaAnswer,\n text_field: TextBasedAnswer,\n audit_review_table_layout: AuditReviewTableAnswer,\n table_layout: props.usingNewSurveyStructure ? TableAnswer2 : TableAnswer,\n };\n const AnswerComponent = questionTypes[props.question.layout];\n\n return (\n
\n \n
\n );\n};\n","import moment from 'moment';\n\nexport const formatLongDate = (date: string) => {\n if (date) {\n return moment(date).format('llll');\n }\n return null;\n};\n","import React from 'react';\nimport { formatLongDate } from '../../functions/formatLongDate';\nimport './LastUpdatedInfo.scss';\n\ninterface LastUpdatedInfoProps {\n customText?: string;\n includeConfirmation?: boolean;\n isConfirmed?: boolean;\n lastUpdatedInfo: {\n confirmedAt?: string;\n confirmedBy?: string;\n updatedAt: string;\n updatedBy: string;\n };\n title?: string;\n}\n\nexport const LastUpdatedInfo: React.FC = ({\n customText,\n includeConfirmation,\n isConfirmed,\n lastUpdatedInfo,\n title,\n}) => {\n return (\n
\n {customText}\n {!customText &&\n lastUpdatedInfo &&\n (includeConfirmation ? (\n
\n
\n Last updated by\n {lastUpdatedInfo.updatedBy && (\n
\n {lastUpdatedInfo.updatedBy}\n
\n )}\n
\n {formatLongDate(lastUpdatedInfo.updatedAt)}\n
\n
\n
\n {isConfirmed && (\n <>\n Confirmed by\n {lastUpdatedInfo.updatedBy && (\n
\n {lastUpdatedInfo.confirmedBy}\n
\n )}\n
\n {formatLongDate(lastUpdatedInfo.confirmedAt)}\n
\n \n )}\n
\n
\n ) : (\n <>\n {title || 'Last updated by'}\n {lastUpdatedInfo.updatedBy && (\n
\n {lastUpdatedInfo.updatedBy}\n
\n )}\n
\n {formatLongDate(lastUpdatedInfo.updatedAt)}\n
\n \n ))}\n
\n );\n};\n","import { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router';\nimport { selectCurrentVendor } from '../../../selectors/selectCurrentVendor';\nimport {\n addAgreementAnswers,\n deleteAgreementTableAnswers,\n fetchAgreementById,\n} from '../../../store/agreements/agreementsThunks';\nimport {\n addAuditAnswers,\n deleteAuditTableAnswers,\n} from '../../../features/compliance/audits/store/auditsThunks';\nimport { showAutoSave } from '../../../store/policies/policiesSlice';\nimport {\n AgreementExtended,\n Answer,\n AuditExtended,\n Question,\n} from '../../../swagger';\nimport { OnChangeAnswerOptions } from '../../AnswerFormControl/AnswerFormControl';\n\ninterface useHandleAnswerChangeProps {\n currentModel: AgreementExtended | AuditExtended;\n mode: 'agreements' | 'audits';\n question: Question;\n}\n\nexport const useHandleAnswerChange = ({\n currentModel,\n mode,\n question,\n}: useHandleAnswerChangeProps) => {\n const isAgreements = mode === 'agreements';\n const dispatch = useDispatch();\n const params = useParams() as { id: string };\n const currentVendor = useSelector(selectCurrentVendor);\n\n const onSuccess = () => {\n if (isAgreements) dispatch(fetchAgreementById(params.id, false));\n dispatch(showAutoSave());\n };\n\n const handleTableChange = (answers: Answer[]) => {\n const payload = {\n vendorId: currentVendor.id,\n answers: answers.map(answer => ({\n value: answer.value,\n questionId: answer.questionId,\n surveyId: currentModel.survey.id,\n propertyName: answer.propertyName,\n index: answer.index,\n id: answer.id,\n })),\n onSuccess,\n };\n dispatch(\n isAgreements ? addAgreementAnswers(payload) : addAuditAnswers(payload)\n );\n };\n\n const handleDeleteTableAnswers = (answers: Answer[]) => {\n const payload = {\n vendorId: currentVendor.id,\n answersIds: answers.map(answer => answer.id),\n onSuccess,\n };\n dispatch(\n isAgreements\n ? deleteAgreementTableAnswers(payload)\n : deleteAuditTableAnswers(payload)\n );\n };\n\n const handleCheckboxAnswer = (answers: Answer[]) => {\n const payload = {\n vendorId: currentVendor.id,\n answers: answers.map(answer => ({\n value: answer.value,\n questionRowId: answer.questionRowId,\n surveyId: currentModel.survey.id,\n propertyName: answer.propertyName,\n id: answer.id,\n })),\n onSuccess,\n };\n dispatch(\n isAgreements ? addAgreementAnswers(payload) : addAuditAnswers(payload)\n );\n };\n\n const handleChange = (answers: Answer[], options?: OnChangeAnswerOptions) => {\n if (options?.isTable2Answer) {\n handleTableChange(answers);\n return;\n }\n\n if (options?.isCheckboxAnswer) {\n handleCheckboxAnswer(answers);\n return;\n }\n\n // Upsert answer\n\n const payload = {\n vendorId: currentVendor.id,\n answers: answers.map((answer: Answer) => ({\n value: answer.value,\n questionId: question.id,\n surveyId: currentModel.survey.id,\n questionRowId: answer.questionRowId,\n index: answer.index,\n propertyName: answer.propertyName,\n })),\n onSuccess,\n };\n\n dispatch(\n isAgreements ? addAgreementAnswers(payload) : addAuditAnswers(payload)\n );\n };\n return { handleChange, handleDeleteTableAnswers };\n};\n","import React from 'react';\nimport { AgreementExtended, Answer, Question } from '../../../swagger';\nimport './AgreementQuestion.scss';\nimport { Interweave } from 'interweave';\nimport { AnswerFormControl } from '../../AnswerFormControl/AnswerFormControl';\nimport { LastUpdatedInfo } from '../../LastUpdatedInfo/LastUpdatedInfo';\nimport { getClauseLastUpdatedInfo } from '../../../functions/getClauseLastUpdatedInfo';\nimport { sortByDateColumn } from '../../../functions/sortByDateColumn';\nimport { useHandleAnswerChange } from './useHandleAnswerChange';\n\ninterface AgreementQuestionProps {\n question: Question;\n agreement: AgreementExtended;\n}\n\nexport const useLastUpdated = (question: Question) => {\n const latestAnswer = () => {\n const questionHasManyAnswers = question?.answer?.questionRowId;\n if (!questionHasManyAnswers) return question.answer;\n\n const arr = (question?.questionRows || []).map(q => q.answer);\n return sortByDateColumn(arr, 'updatedAt', -1)[0];\n };\n const lastUpdatedAnswer = latestAnswer();\n return lastUpdatedAnswer\n ? getClauseLastUpdatedInfo(\n lastUpdatedAnswer.updatedAt,\n lastUpdatedAnswer.userName\n )\n : null;\n};\n\nexport const AgreementQuestion: React.FC = ({\n question,\n agreement,\n}) => {\n const lastUpdated = useLastUpdated(question);\n const { handleChange, handleDeleteTableAnswers } = useHandleAnswerChange({\n currentModel: agreement,\n mode: 'agreements',\n question,\n });\n\n return (\n
\n
\n \n
\n {question.explanatoryTextAsHtml && (\n
\n \n
\n )}\n
\n \n
\n {lastUpdated && }\n
\n );\n};\n","import { sortByDate } from './sortByDate';\n\ntype T = Record;\n\nexport const sortByDateColumn = (\n arr: T[],\n column: keyof T,\n direction: 1 | -1\n): T[] => {\n return arr.sort((a, b) => sortByDate(a[column], b[column], direction));\n};\n","import React from 'react';\nimport { getClauseLastUpdatedInfo } from '../../../functions/getClauseLastUpdatedInfo';\n\nimport {\n AgreementExtended,\n Question,\n SurveyClause,\n} from '../../../swagger/models';\nimport { AgreementQuestion } from '../AgreementQuestion/AgreementQuestion';\nimport { LastUpdatedInfo } from '../../LastUpdatedInfo/LastUpdatedInfo';\nimport './AgreementClauseQuestions.scss';\nimport { dentaku } from '../../../functions/dentaku';\n\ninterface AgreementClauseQuestionsProps {\n agreementClause: SurveyClause;\n agreement: AgreementExtended;\n}\n\nexport const selectVisibleClauseQuestions = (clause: SurveyClause) => {\n const context = clause.questions.reduce(\n (acc: Record, { answer }) =>\n answer\n ? {\n ...acc,\n [answer.propertyName]: answer.value,\n }\n : acc,\n {}\n );\n const questions = clause.questions.filter(q => dentaku(q.showWhen, context));\n\n return questions;\n};\nexport const AgreementClauseQuestions: React.FC<\n AgreementClauseQuestionsProps\n> = ({ agreementClause, agreement }) => {\n const lastUpdated = getClauseLastUpdatedInfo(\n agreementClause.updatedAt,\n agreementClause.updatedBy?.fullName\n );\n\n const questions = selectVisibleClauseQuestions(agreementClause);\n\n return (\n \n {questions.length > 0 &&\n questions.map((question: Question) => (\n \n ))}\n\n {lastUpdated && (\n
\n \n
\n )}\n
\n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { selectVisibleClauseQuestions } from '../components/Agreements/AgreementClauseQuestions/AgreementClauseQuestions';\nimport { Survey } from '../swagger/models/Survey';\nimport { SurveyClause } from '../swagger/models/SurveyClause';\nimport { ApplicationState } from '../types/applicationState';\nimport { Question } from '../swagger';\n\nexport interface Stats {\n answered: number;\n unanswered: number;\n percents: number;\n id: string;\n questions: any;\n}\n\nconst checkIfAnswered = (question: Question): boolean => {\n if (!question.answer) return false;\n\n if (question.layout == 'audit_review_table_layout') {\n const answerAuthor = question.answer.userName;\n const answerRow = question.table.answers.find(\n row => row[0]?.userName == answerAuthor\n );\n if ((answerRow?.length || 0) < question.questionColumns.length)\n return false;\n }\n\n return true;\n};\n\nconst progressPerClause = (clause: SurveyClause): Stats => {\n const { id } = clause;\n const questions = selectVisibleClauseQuestions(clause);\n const answered = questions.filter(q => checkIfAnswered(q)).length;\n const unanswered = questions.length - answered;\n const percents = questions.length === 0 ? 1 : answered / questions.length;\n\n return {\n id,\n answered,\n unanswered,\n percents,\n questions,\n };\n};\n\nexport interface AgreementsStats {\n stats: Array;\n total: number;\n}\n\nexport const calculateSurveyProgress = (survey: Survey): AgreementsStats => {\n if (!survey) {\n return { stats: [], total: 0 };\n }\n\n const interactiveSurveyClauses = survey.surveyClauses.filter(\n clause => clause.questions.length > 0\n );\n const stats = interactiveSurveyClauses.map(clause =>\n progressPerClause(clause)\n );\n const answeredPercentage = stats.reduce(\n (accumulator: number, statsPerClause: Stats) => {\n return accumulator + statsPerClause.percents;\n },\n 0\n );\n const total = answeredPercentage / interactiveSurveyClauses.length;\n\n return { stats, total };\n};\n\nexport const selectAgreementsProgress = createSelector(\n (state: ApplicationState) => state.agreements.currentAgreement?.survey,\n (survey): AgreementsStats => {\n return calculateSurveyProgress(survey);\n }\n);\n","import { AgreementModel, AgreementModelStatusEnum } from '../swagger';\nimport { selectAgreementsProgress } from './selectAgreementsProgress';\nimport { selectCurrentAgreement } from './selectCurrentAgreement';\nimport { createSelector } from '@reduxjs/toolkit';\n\nexport const selectAgreementQuestionsAreFilledIn = createSelector(\n selectCurrentAgreement,\n selectAgreementsProgress,\n (_agreement: AgreementModel, progress) => {\n return progress.total === 1;\n }\n);\n","import classNames from 'classnames';\nimport React, { Dispatch, SetStateAction } from 'react';\nimport { AdoptechTooltip } from '../AdoptechTooltip/AdoptechTooltip';\nimport './AdoptechSliderSwitcher.scss';\n\ntype Values = string[];\n\ninterface TooltipOption {\n enabled: boolean;\n text?: string;\n}\n\ninterface SliderProps {\n values: Values;\n labels?: Values;\n selected: Values[0];\n setSelected: Dispatch>;\n tooltipsOptions?: TooltipOption[];\n onClickHandlers?: ((value: Values[0]) => void)[];\n fieldWidth?: number;\n}\n\nexport const AdoptechSliderSwitcher: React.FC = ({\n values,\n labels,\n selected,\n setSelected,\n tooltipsOptions,\n onClickHandlers,\n fieldWidth,\n}) => {\n const baseCss = 'adoptechSliderSwitcher';\n\n const backgroundOffset = (selectedValue: Values[0]) => {\n const roundedBorderOffset = 3;\n const width = fieldWidth || (values.length === 2 ? 80 : 100);\n const index = values.indexOf(selectedValue);\n\n if (index == 0) return 0 + roundedBorderOffset;\n return width * index - roundedBorderOffset;\n };\n\n const style = { left: backgroundOffset(selected) };\n\n return (\n \n
\n {values.map((value, index) => {\n const customClickHandler = (onClickHandlers || [])[index];\n\n const fieldClass = value === selected ? '-selected' : '';\n const labelDiv = (\n {\n customClickHandler\n ? customClickHandler(value)\n : setSelected(value);\n }}\n className={\n baseCss + '--field' + ' ' + baseCss + '--field' + fieldClass\n }\n >\n \n {labels ? labels[index] : value}\n \n
\n );\n const tooltip = (tooltipsOptions || [])[index];\n\n return tooltip?.enabled ? (\n \n {labelDiv}\n \n ) : (\n labelDiv\n );\n })}\n
\n {/* needed for applying css transition effect */}\n
\n \n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport CanvasDraw from 'react-canvas-draw';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../../AdoptechModal/AdoptechModal';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n fetchAgreements,\n fetchAgreementSignatoriesById,\n signAgreement,\n SignAgreementArguments,\n} from '../../../store/agreements/agreementsThunks';\nimport { selectCurrentVendor } from '../../../selectors/selectCurrentVendor';\nimport { fetchUserSignature } from '../../../store/user/userThunks';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport './SignAgreementModal.scss';\nimport { faUndo } from '@fortawesome/pro-light-svg-icons/faUndo';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport {\n showGlobalToast,\n closePdfPreview,\n} from '../../../store/global/globalSlice';\nimport { DataURIToBlob } from '../../../functions/b64ToBlob';\nimport { getCurrentSignatoryByUserEmail } from '../../../functions/getCurrentSignatoryByUserEmail';\nimport { agreementsPageRoute } from '../../Routes/Routes';\nimport { clearCurrentAgreementSignatories } from '../../../store/agreements/agreementsSlice';\nimport { cleanupUserSignature } from '../../../store/user/userSlice';\n\ninterface SignAgreementModalProps {\n onClose: () => void;\n}\nconst SignAgreementModal: React.FC = ({ onClose }) => {\n const dispatch = useDispatch();\n const canvasRef = useRef();\n const isSigningAgreement = useSelector(\n (state: ApplicationState) => state.agreements.isSigningAgreement\n );\n const userSignature = useSelector(\n (state: ApplicationState) => state.user.userSignature\n );\n const isRequestingUserSignature = useSelector(\n (state: ApplicationState) => state.user.isRequestingUserSignature\n );\n\n const isRequestingCurrentAgreement = useSelector(\n (state: ApplicationState) => state.agreements.isRequestingCurrentAgreement\n );\n const currentVendor = useSelector(selectCurrentVendor);\n const currentUser = useSelector(\n (state: ApplicationState) => state.user.userDetails\n );\n const currentSignatories = useSelector(\n (state: ApplicationState) => state.agreements.currentAgreementSignatories\n );\n const currentSignatoryId = getCurrentSignatoryByUserEmail(\n currentSignatories,\n currentUser.email\n )?.id;\n\n const [isEditingSignature, setIsEditingSignature] = useState(true);\n const [isSignatureDrawn, setIsSignatureDrawn] = useState(false);\n\n const imageUrl = userSignature?.urls?.full;\n const isSignButtonDisabled = Boolean(\n !currentSignatoryId ||\n isRequestingUserSignature ||\n (isEditingSignature && !isSignatureDrawn) ||\n (!isEditingSignature && !imageUrl)\n );\n const agreement = useSelector(\n (state: ApplicationState) => state.agreements.currentAgreement\n );\n useEffect(() => {\n dispatch(fetchAgreementSignatoriesById(agreement.id));\n dispatch(fetchUserSignature(currentUser.id));\n\n return () => {\n dispatch(clearCurrentAgreementSignatories());\n dispatch(cleanupUserSignature());\n };\n }, []);\n\n useEffect(() => {\n if (imageUrl) {\n setIsEditingSignature(false);\n }\n }, [imageUrl]);\n\n /**\n * We need to put white bg on the canvas before exporting it to image\n * because otherwise the bg will be black\n */\n const getImage = () => {\n const canvasElement: HTMLCanvasElement = (canvasRef.current as any)\n .canvasContainer.childNodes[1];\n const context = canvasElement.getContext('2d');\n const width = canvasElement.width;\n const height = canvasElement.height;\n\n //get the current ImageData for the canvas.\n const data = context.getImageData(0, 0, width, height);\n //store the signature that has ben drawn\n const compositeOperation = context.globalCompositeOperation;\n //set to draw behind current content\n context.globalCompositeOperation = 'destination-over';\n //set background color\n context.fillStyle = '#fff';\n //draw background\n context.fillRect(0, 0, width, height);\n //get the image data from the canvas\n const imageData = canvasElement.toDataURL('image/jpeg');\n //clear the canvas\n context.clearRect(0, 0, width, height);\n //restore it with original ImageData\n context.putImageData(data, 0, 0);\n //reset the signature to what it was\n context.globalCompositeOperation = compositeOperation;\n //return the Base64 encoded data url string\n return imageData;\n };\n\n const handleSign = () => {\n const signAgreementArguments: SignAgreementArguments = {\n signatoryId: currentSignatoryId,\n onSuccess: () => {\n handleClose();\n dispatch(closePdfPreview());\n dispatch(push(agreementsPageRoute));\n dispatch(fetchAgreements(currentVendor.id, false));\n dispatch(showGlobalToast('The agreement has been signed.'));\n },\n };\n if (isEditingSignature) {\n signAgreementArguments.userId = currentUser.id;\n signAgreementArguments.image = DataURIToBlob(getImage());\n }\n dispatch(signAgreement(signAgreementArguments));\n };\n\n const handleClose = () => {\n onClose();\n };\n\n const baseCss = 'signAgreementModal';\n\n return (\n \n Sign agreement\n \n {isRequestingCurrentAgreement || isRequestingUserSignature ? (\n \n ) : currentSignatoryId ? (\n
\n
\n By clicking on SIGN you are confirming you have read and\n understood this agreement. I agree for my e-signature below to be\n a valid means of signing.\n
\n
\n {isEditingSignature ? (\n
\n
\n Use your mouse to draw your signature here. Your signature\n will be saved for future use.\n
\n
\n {\n canvasRef.current.clear();\n setIsSignatureDrawn(false);\n }}\n >\n \n
\n
\n {\n setIsSignatureDrawn(\n JSON.parse(canvas.getSaveData())?.lines?.length\n );\n }}\n hideInterface\n hideGrid\n brushRadius={1}\n canvasHeight={137}\n canvasWidth={418}\n ref={canvasRef}\n />\n
\n
\n
\n ) : (\n
\n setIsEditingSignature(true)}\n >\n \n
\n \"signature\"\n
\n )}\n \n \n ) : (\n 'No current signatory. Please send agreement for the review to the current user'\n )}\n
\n \n Cancel\n \n Sign\n \n \n
\n );\n};\n\nexport default SignAgreementModal;\n","import { AgreementSignatoryModel } from '../swagger';\n\nexport const getCurrentSignatoryByUserEmail = (\n signatories: AgreementSignatoryModel[],\n email: string\n): AgreementSignatoryModel => {\n return signatories?.find(signatory => signatory.email === email);\n};\n","export const DataURIToBlob = (dataURI: string) => {\n const splitDataURI = dataURI.split(',');\n const byteString =\n splitDataURI[0].indexOf('base64') >= 0\n ? atob(splitDataURI[1])\n : decodeURI(splitDataURI[1]);\n const mimeString = splitDataURI[0].split(':')[1].split(';')[0];\n\n const ia = new Uint8Array(byteString.length);\n for (let i = 0; i < byteString.length; i++) ia[i] = byteString.charCodeAt(i);\n\n return new Blob([ia], { type: mimeString });\n};\n","import { faAngleLeft } from '@fortawesome/pro-light-svg-icons/faAngleLeft';\nimport { faCloudDownload } from '@fortawesome/pro-light-svg-icons/faCloudDownload';\nimport { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\nimport { faPaperPlane } from '@fortawesome/pro-light-svg-icons/faPaperPlane';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport { push } from 'connected-react-router';\nimport React, { useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useAgreementsModals } from '../../../hooks/agreements/useAgreementsModals';\nimport { AgreementsModals } from '../AgreementsModals/AgreementsModals';\nimport { AdoptechTooltip } from '../../AdoptechTooltip/AdoptechTooltip';\nimport { selectAgreementQuestionsAreFilledIn } from '../../../selectors/selectAgreementQuestionsAreFilledIn';\nimport { selectAgreementsProgress } from '../../../selectors/selectAgreementsProgress';\nimport { patchAgreement } from '../../../store/agreements/agreementsThunks';\nimport { fetchVendorDocumentDownload } from '../../../store/vendors/vendorsThunks';\nimport {\n AgreementExtended,\n AgreementExtendedModesAvailableEnum,\n AgreementModelStatusEnum,\n} from '../../../swagger';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { AdoptechSliderSwitcher } from '../../AdoptechSliderSwitcher/AdoptechSliderSwitcher';\nimport { canEditAgreement } from '../AgreementEditor/AgreementEditor';\nimport { ExitConfirmationModal } from '../../ExitConfirmationModal/ExitConfirmationModal';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport { Panel } from '../../Panel/Panel';\nimport { ProgressBar } from '../../ProgressBar/ProgressBar';\nimport { agreementsPageRoute } from '../../Routes/Routes';\nimport { AgreementMeatballMenu } from '../AgreementMeatballMenu/AgreementMeatballMenu';\nimport { AgreementSendReviewModal } from '../AgreementSendReviewModal/AgreementSendReviewModal';\nimport SignAgreementModal from '../SignAgreementModal/SignAgreementModal';\nimport './AgreementSummaryTile.scss';\n\ninterface AgreementSummaryTileProps {\n setMode: (mode: AgreementExtendedModesAvailableEnum) => void;\n}\n\nexport const currentAgreementModes = (agreement: AgreementExtended) => {\n const labelsMap = [\n [AgreementExtendedModesAvailableEnum.Survey, 'Questions'],\n [AgreementExtendedModesAvailableEnum.Preview, 'Preview'],\n [AgreementExtendedModesAvailableEnum.Edit, 'Edit'],\n ].filter(label =>\n (Object.values(agreement.modesAvailable) as string[]).includes(label[0])\n );\n const labels = labelsMap.map(valueAndLabel => valueAndLabel[1]);\n const values = labelsMap.map(valueAndLabel => valueAndLabel[0]);\n return { labels, values };\n};\n\nexport const AgreementSummaryTile: React.FC = ({\n setMode,\n}) => {\n const agreement = useSelector(\n (state: ApplicationState) => state.agreements.currentAgreement\n );\n\n const questionsAreFilledIn = useSelector(selectAgreementQuestionsAreFilledIn);\n const progress = useSelector(selectAgreementsProgress);\n\n const dispatch = useDispatch();\n const [isShowingSendReviewModal, setIsShowingSendReviewModal] =\n useState(false);\n\n const mode = useSelector(\n (state: ApplicationState) => state.agreements.currentAgreementMode\n );\n const { labels, values } = currentAgreementModes(agreement);\n\n const modalsProps = useAgreementsModals();\n const { handleDeleteClick } = modalsProps;\n\n const [showConfirmModal, setShowConfirmModal] = useState(false);\n const [showSignModal, setShowSignModal] = useState(false);\n // Set custom handler on click per each div inside SliderSwitcher\n // For example: On click question mode => show confirmation modal\n // By default: On click any mode => show this mode.\n\n const onClickModeHandlers = () => {\n const clickSliderModeDisabled =\n !questionsAreFilledIn &&\n mode === AgreementExtendedModesAvailableEnum.Survey;\n if (clickSliderModeDisabled)\n return Array(Object.values(values).length).fill(() => {});\n\n if (\n values.includes(AgreementExtendedModesAvailableEnum.Survey) &&\n (agreement.contentIsCustom ||\n mode === AgreementExtendedModesAvailableEnum.Edit)\n ) {\n const showWarningOnQuestionsModeClick = [\n (value: AgreementExtendedModesAvailableEnum) => {\n setShowConfirmModal(true);\n },\n null,\n null,\n ];\n return showWarningOnQuestionsModeClick;\n }\n };\n\n const isPreviewMode = mode === AgreementExtendedModesAvailableEnum.Preview;\n const iconEnabled = isPreviewMode;\n\n const pdfPreviewUrl = useSelector(\n (state: ApplicationState) => state.global.pdfPreviewUrl\n );\n\n const isRequestingAgreementPdf = useSelector(\n (state: ApplicationState) => state.agreements.isRequestingAgreementPdf\n );\n\n const tooltipsPerMode = [\n { enabled: false },\n {\n enabled: true,\n text: 'You have to answer all questions to preview the document.',\n },\n {\n enabled: true,\n text: 'You have to answer all questions to edit the document.',\n },\n ];\n\n const isCompleted =\n agreement.status === AgreementModelStatusEnum.Signed ||\n agreement.status === AgreementModelStatusEnum.Rejected;\n\n const downloadRef = useRef(null);\n\n const canEdit = agreement.access.update;\n if (!agreement) {\n return null;\n }\n\n return (\n \n
\n
\n \n
\n
\n {\n dispatch(push(agreementsPageRoute));\n }}\n >\n \n
\n
\n
\n
\n Agreement\n
\n
\n {agreement.name}\n
\n
\n {canEditAgreement(agreement) && (\n
\n \n
\n )}\n\n
\n {isRequestingAgreementPdf && }\n {!isRequestingAgreementPdf && (\n <>\n {!isCompleted && canEdit && (\n \n iconEnabled ? setIsShowingSendReviewModal(true) : ''\n }\n >\n \n \n \n
\n )}\n {\n if (!iconEnabled) return;\n // For download if agreement.vendorDocumentId use /download else /preview endpoint.\n if (agreement.vendorDocumentId) {\n dispatch(\n fetchVendorDocumentDownload({\n id: agreement.vendorDocumentId,\n successCallback: vendorDocumentDownload => {\n window.location.href =\n vendorDocumentDownload.document;\n },\n })\n );\n return;\n }\n downloadRef.current.click();\n }}\n >\n \n \n \n \n
\n {agreement.toBeSigned && (\n \n iconEnabled ? setShowSignModal(true) : ''\n }\n >\n \n \n \n
\n )}\n\n
\n \n
\n \n )}\n \n \n \n \n {isShowingSendReviewModal && (\n setIsShowingSendReviewModal(false)}\n />\n )}\n {showSignModal && (\n setShowSignModal(false)} />\n )}\n \n {showConfirmModal && (\n setShowConfirmModal(false)}\n onConfirm={() => {\n dispatch(\n patchAgreement({\n agreementId: agreement.id,\n contentIsCustom: false,\n onSuccess: () => {\n setShowConfirmModal(false);\n dispatch(setMode(AgreementExtendedModesAvailableEnum.Survey));\n },\n })\n );\n }}\n submitButtonText=\"Continue\"\n title=\"Warning\"\n text=\"By entering Question mode your text changes will be lost and the agreement will revert to the standard text generated by your answers.\"\n />\n )}\n
\n );\n};\n","import { faCircle } from '@fortawesome/pro-light-svg-icons/faCircle';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React from 'react';\nimport { SurveyClause } from '../../../swagger/models';\n\nimport './AgreementClauseHeader.scss';\n\ninterface AgreementClauseHeaderProps {\n agreementClause: SurveyClause;\n clauseProgress: number;\n}\n\nexport const AgreementClauseHeader: React.FC = ({\n agreementClause,\n clauseProgress,\n}) => {\n const tickClass = clauseProgress === 1 ? 'greenTick' : 'greyTick';\n const icon = clauseProgress === 1 ? faCheckCircle : faCircle;\n\n return (\n
\n \n
\n {agreementClause.title}\n
\n
\n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { ApplicationState } from '../types/applicationState';\nimport {\n AgreementsStats,\n calculateSurveyProgress,\n} from './selectAgreementsProgress';\n\nexport const selectAuditsProgress = createSelector(\n (state: ApplicationState) => state.audits.currentAudit?.survey,\n (survey): AgreementsStats => {\n return calculateSurveyProgress(survey);\n }\n);\n","import { useSelector } from 'react-redux';\nimport { selectAgreementsProgress } from '../../../../selectors/selectAgreementsProgress';\nimport { selectAuditsProgress } from '../../../../selectors/selectAuditsProgress';\nimport { SurveyClause } from '../../../../swagger';\nimport { ApplicationState } from '../../../../types/applicationState';\n\nexport const useClauseProgress = (mode: 'agreements' | 'audits') => {\n const isAgreement = mode === 'agreements';\n const currentModel = useSelector((state: ApplicationState) =>\n isAgreement ? state.agreements.currentAgreement : state.audits.currentAudit\n );\n\n const getFirstClauseWithQuestions = () =>\n currentModel.survey.surveyClauses\n .filter(surveyClause => surveyClause.questions.length > 0)\n ?.findIndex(\n // TODO: reimplement using 'completed' instead of 'progress'\n clause => clauseProgress(clause) !== 1\n )\n .toString();\n\n const { stats } = useSelector(\n isAgreement ? selectAgreementsProgress : selectAuditsProgress\n );\n const clauseProgress = ({ id }: SurveyClause) => {\n return stats.find(statsPerClause => statsPerClause.id === id).percents;\n };\n\n const interactiveSurveyClauses = currentModel.survey.surveyClauses.filter(\n clause => clause.questions.length > 0\n );\n\n return {\n interactiveSurveyClauses,\n currentModel,\n getFirstClauseWithQuestions,\n clauseProgress,\n };\n};\n","import { SurveyClause, AgreementExtended } from '../../../../swagger';\nimport React from 'react';\nimport Accordion from 'react-bootstrap/esm/Accordion';\nimport { AdoptechAccordionCard } from '../../../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AgreementClauseHeader } from '../../AgreementClauseHeader/AgreementClauseHeader';\nimport { AgreementClauseQuestions } from '../../AgreementClauseQuestions/AgreementClauseQuestions';\nimport { useClauseProgress } from './useClauseProgress';\n\nexport const QuestionsMode: React.FC = () => {\n const {\n currentModel,\n getFirstClauseWithQuestions,\n interactiveSurveyClauses,\n clauseProgress,\n } = useClauseProgress('agreements');\n\n return (\n \n {interactiveSurveyClauses.map((clause: SurveyClause, index) => (\n \n }\n nested\n nestedVerticalOffset={-245}\n headerOffset={101}\n >\n \n \n ))}\n \n );\n};\n","import React from 'react';\nimport './AgreementsTextEditor.scss';\nimport FroalaEditor from 'react-froala-wysiwyg';\nimport 'froala-editor/css/froala_style.min.css';\nimport 'froala-editor/css/froala_editor.pkgd.min.css';\nimport 'froala-editor/js/plugins/align.min';\nimport 'froala-editor/js/plugins/code_view.min';\nimport 'froala-editor/js/plugins/link.min';\nimport 'froala-editor/js/plugins/lists.min';\nimport 'froala-editor/js/plugins/table.min';\nimport 'froala-editor/js/plugins/paragraph_format.min';\n\nexport interface AgreementsTextEditorProps {\n onChange: (model: string) => void;\n placeholder?: string;\n text: string;\n}\n\nconst AgreementsTextEditor: React.FC = props => {\n const config = {\n key: process.env.REACT_APP_FROALA_EDITOR_KEY,\n attribution: false,\n htmlUntouched: true,\n toolbarButtons: {\n moreText: {\n align: 'left',\n buttons: [\n 'bold',\n 'italic',\n 'underline',\n 'strikeThrough',\n 'subscript',\n 'superscript',\n 'paragraphFormat',\n ],\n buttonsVisible: 14,\n },\n moreLists: {\n align: 'left',\n buttons: ['formatOL', 'formatUL', 'indent', 'outdent'],\n buttonsVisible: 4,\n },\n moreJustification: {\n align: 'left',\n buttons: ['alignLeft', 'alignCenter', 'alignRight', 'alignJustify'],\n buttonsVisible: 4,\n },\n moreRich: {\n align: 'left',\n buttons: ['insertLink', 'insertTable', 'insertHR'],\n },\n moreMisc: {\n align: 'right',\n buttons: ['undo', 'redo', '|', 'html'],\n buttonsVisible: 2,\n },\n },\n toolbarSticky: true,\n toolbarStickyOffset: 209,\n };\n\n const handleModelChange = (model: Record) => {\n props.onChange(model.toString());\n };\n\n return (\n
\n \n
\n );\n};\n\nexport default AgreementsTextEditor;\n","import React from 'react';\nimport { Panel } from '../../Panel/Panel';\nimport './AgreementsTextEditorFooter.scss';\nimport { UserDetails } from '../../../swagger';\nimport { formatLongDate } from '../../../functions/formatLongDate';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\n\ninterface AgreementsTextEditorFooterProps {\n doneDisabled?: boolean;\n onDone: () => void;\n updatedBy?: UserDetails;\n updatedAt: string;\n}\n\nconst AgreementsTextEditorFooter: React.FC<\n AgreementsTextEditorFooterProps\n> = props => {\n return (\n \n
\n {props.updatedBy ? (\n <>\n
\n Last update by\n
\n
\n {props.updatedBy.fullName}\n
\n \n ) : (\n
\n Last updated at\n
\n )}\n
\n {formatLongDate(props.updatedAt)}\n
\n
\n \n DONE\n \n
\n
\n
\n );\n};\n\nexport default AgreementsTextEditorFooter;\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { AutoSaveToast } from '../../AutoSaveToast/AutoSaveToast';\nimport './AgreementEditor.scss';\nimport {\n fetchAgreementById,\n patchAgreementContent,\n} from '../../../store/agreements/agreementsThunks';\nimport {\n setAgreementContent,\n setAgreementContentChanged,\n setAgreementMode,\n setCurrentAgreement,\n} from '../../../store/agreements/agreementsSlice';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport {\n AgreementSummaryTile,\n currentAgreementModes,\n} from '../AgreementSummaryTile/AgreementSummaryTile';\nimport {\n AgreementExtended,\n AgreementExtendedModesAvailableEnum,\n AgreementModel,\n AgreementModelStatusEnum,\n} from '../../../swagger';\nimport { PreviewMode } from './PreviewMode/PreviewMode';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport { selectAgreementQuestionsAreFilledIn } from '../../../selectors/selectAgreementQuestionsAreFilledIn';\nimport { QuestionsMode } from './QuestionsMode/QuestionsMode';\nimport AgreementsTextEditor from '../AgreementsTextEditor/AgreementsTextEditor';\nimport AgreementsTextEditorFooter from '../AgreementsTextEditorFooter/AgreementsTextEditorFooter';\nimport { useQueryParams } from '../../../hooks/useQueryParams';\nimport { setErrorMessage } from '../../../store/global/globalSlice';\n\nexport const canEditAgreement = (agreement: AgreementModel) =>\n agreement.access.update &&\n agreement.status === AgreementModelStatusEnum.Draft;\n\nexport const AgreementEditor: React.FC = () => {\n const params = useParams() as { id: string };\n\n const {\n currentAgreement,\n agreementContent,\n agreementContentChanged,\n isRequestingCurrentAgreement,\n currentAgreementMode: mode,\n agreementContentChanged: contentChanged,\n agreementContent: content,\n } = useSelector((state: ApplicationState) => state.agreements);\n const questionsAreFilledIn = useSelector(selectAgreementQuestionsAreFilledIn);\n const dispatch = useDispatch();\n useEffect(() => {\n dispatch(setCurrentAgreement(null));\n\n if (params?.id) {\n const onSuccess = (agreement: AgreementExtended) => {\n const { values } = currentAgreementModes(agreement);\n\n dispatch(\n setAgreementMode(\n canEditAgreement(agreement)\n ? (values[0] as AgreementExtendedModesAvailableEnum)\n : AgreementExtendedModesAvailableEnum.Preview\n )\n );\n };\n dispatch(fetchAgreementById(params.id, true, onSuccess));\n }\n return () => {\n dispatch(setCurrentAgreement(null));\n };\n }, [params?.id]);\n\n useEffect(() => {\n if (!currentAgreement) return;\n dispatch(setAgreementContent(currentAgreement.content));\n dispatch(setAgreementContentChanged(false));\n }, [currentAgreement]);\n\n const [isRequestingEditSection, setIsRequestingEditSection] = useState(false);\n const currentModeSection = () => {\n if (mode === AgreementExtendedModesAvailableEnum.Preview)\n return ;\n if (mode === AgreementExtendedModesAvailableEnum.Edit)\n return (\n {\n dispatch(setAgreementContent(c));\n dispatch(setAgreementContentChanged(true));\n }}\n />\n );\n return ;\n };\n\n const agreementLoading = isRequestingCurrentAgreement;\n\n if (agreementLoading) {\n return ;\n }\n\n if (!currentAgreement) {\n return null;\n }\n\n const handleDone = () => {\n if (mode === AgreementExtendedModesAvailableEnum.Edit) {\n dispatch(\n patchAgreementContent({\n agreementId: currentAgreement.id,\n content,\n onSuccess: () => {\n dispatch(\n setAgreementMode(AgreementExtendedModesAvailableEnum.Preview)\n );\n },\n })\n );\n } else {\n dispatch(setAgreementMode(AgreementExtendedModesAvailableEnum.Preview));\n }\n };\n const doneDisabled = () => {\n if (\n mode === AgreementExtendedModesAvailableEnum.Survey &&\n questionsAreFilledIn\n ) {\n return false;\n }\n\n return !(\n mode === AgreementExtendedModesAvailableEnum.Edit && contentChanged\n );\n };\n\n const setMode = (value: AgreementExtendedModesAvailableEnum) => {\n if (value === AgreementExtendedModesAvailableEnum.Edit) {\n setIsRequestingEditSection(true);\n // refetch agreement, because we need the latest content field\n // ( without page spinner but with spinner below header before showing the editor with new content )\n dispatch(\n fetchAgreementById(params.id, false, agreement => {\n // if external counterpart signed but owner still on this page and click switch to editor,\n // show \"simplified preview only\" mode.\n\n if (!canEditAgreement(agreement)) {\n dispatch(\n setErrorMessage(\n 'Agreement should be in draft state to be editable'\n )\n );\n window.location.reload();\n return;\n }\n dispatch(setAgreementMode(value));\n setIsRequestingEditSection(false);\n })\n );\n return;\n }\n\n if (agreementContentChanged) {\n dispatch(\n patchAgreementContent({\n agreementId: params.id,\n content: agreementContent,\n onSuccess: () => {\n dispatch(setAgreementContentChanged(false));\n },\n })\n );\n }\n dispatch(setAgreementMode(value));\n };\n const baseCss = 'agreementEditor';\n return (\n
\n
\n
\n
\n \n
\n
\n
\n {isRequestingEditSection ? : currentModeSection()}\n
\n {mode === AgreementExtendedModesAvailableEnum.Survey && (\n
\n \n Done\n \n
\n )}\n {mode === AgreementExtendedModesAvailableEnum.Edit && (\n \n )}\n
\n \n
\n );\n};\n","import { VendorDocumentApprovalStatusEnum } from '../swagger';\n\nexport const approvalStatusSort = (\n a: VendorDocumentApprovalStatusEnum,\n b: VendorDocumentApprovalStatusEnum,\n direction: number\n): number => {\n if (a === VendorDocumentApprovalStatusEnum.Requested) {\n return direction;\n } else {\n return direction * -1;\n }\n};\n","import { VendorDocumentApproval } from '../swagger';\nimport { ColumnSort } from '../types/columnSort';\nimport { SortDirection } from '../types/sortDirection';\nimport { approvalStatusSort } from './approvalStatusSort';\nimport { sort } from './sort';\n\nexport const approvalSort = (\n a: VendorDocumentApproval,\n b: VendorDocumentApproval,\n columnSort: ColumnSort\n): number => {\n let direction = 1;\n if (columnSort.direction === SortDirection.Ascending) {\n direction = -1;\n }\n\n const typedColumn: keyof VendorDocumentApproval =\n columnSort.name as keyof VendorDocumentApproval;\n\n switch (typedColumn) {\n case 'status':\n return approvalStatusSort(a.status, b.status, direction);\n default:\n return sort(a[typedColumn], b[typedColumn], direction);\n }\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { approvalSort } from '../functions/approvalSort';\nimport { getCurrentApprovals } from '../functions/getCurrentApprovals';\nimport { Grid } from '../types/grid';\nimport { selectSortSettings } from './selectSortSettings';\n\nexport const selectApprovals = createSelector(\n getCurrentApprovals,\n selectSortSettings(Grid.ApprovalManagement),\n (approvals, sortSetting) => {\n const clonedAttestations = [...approvals];\n return clonedAttestations.sort((a, b) =>\n approvalSort(a, b, sortSetting.columnSort)\n );\n }\n);\n","import { ApplicationState } from '../types/applicationState';\n\nexport const getCurrentApprovals = (state: ApplicationState) => {\n return state.policies.approvals;\n};\n","import { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport {\n VendorDocumentApproval,\n VendorDocumentApprovalStatusEnum,\n} from '../../swagger';\nimport './ApprovedStatus.scss';\n\nexport interface ApprovedStatusProps {\n approval?: VendorDocumentApproval;\n notRequestedTitle?: string;\n}\n\nexport const ApprovedStatus: React.FC = ({\n approval,\n notRequestedTitle = '',\n}) => {\n if (\n !approval ||\n (approval.status !== VendorDocumentApprovalStatusEnum.Current &&\n approval.status !== VendorDocumentApprovalStatusEnum.WasNotRequested)\n ) {\n return null;\n }\n\n const classes = classNames(\n 'approvedStatus--icon',\n 'approvedStatus--icon-green'\n );\n\n const icon = faCheckCircle;\n\n return (\n
\n {approval.status === VendorDocumentApprovalStatusEnum.Current && (\n \n )}\n {formatShortDate(approval.lastApprovedAt) || notRequestedTitle}\n
\n );\n};\n","import { faTimes } from '@fortawesome/pro-light-svg-icons/faTimes';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectApprovals } from '../../selectors/selectApprovals';\nimport { selectCurrentVendorUserId } from '../../selectors/selectCurrentVendorUserId';\nimport { showGlobalToast } from '../../store/global/globalSlice';\nimport { fetchNotifications } from '../../store/notifications/notificationsThunks';\nimport { closeApprovalManagement } from '../../store/policies/policiesSlice';\nimport {\n fetchDocumentApprovals,\n patchApproval,\n skipApproval,\n} from '../../store/policies/policiesThunks';\nimport { VendorDocumentApproval } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport { Grid } from '../../types/grid';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { AdoptechCheckbox } from '../AdoptechCheckbox/AdoptechCheckbox';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { AdoptechTextArea } from '../AdoptechTextArea/AdoptechTextArea';\nimport { ApprovedStatus } from '../ApprovedStatus/ApprovedStatus';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { SortableTableHeader } from '../SortableTableHeader/SortableTableHeader';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\nimport './ApprovalManagementModal.scss';\nimport { selectUsers } from '../../selectors/selectUsers';\n\nexport const ApprovalManagementModal: React.FC = () => {\n const isApprovalManagementModalShowing = useSelector(\n (state: ApplicationState) => state.policies.isApprovalManagementModalShowing\n );\n const vendorUserId = useSelector(selectCurrentVendorUserId);\n const isCancelable = useSelector(\n (state: ApplicationState) =>\n state.policies.isApprovalManagementModalCancelable\n );\n const isFetchingDocumentApprovals = useSelector(\n (state: ApplicationState) => state.policies.isFetchingDocumentApprovals\n );\n const isPostingApproval = useSelector(\n (state: ApplicationState) => state.policies.isPostingApproval\n );\n const isSkippingApproval = useSelector(\n (state: ApplicationState) => state.policies.isSkippingApproval\n );\n const id = useSelector(\n (state: ApplicationState) =>\n state.policies.approvalManagementVendorDocumentId\n );\n const name = useSelector(\n (state: ApplicationState) =>\n state.policies.approvalManagementVendorDocumentName\n );\n\n const approvals = useSelector(selectApprovals);\n\n const [message, setMessage] = useState('');\n\n const [selectedUsers, setSelectedUsers] = useState(\n approvals.filter(v => v.required) || []\n );\n\n useEffect(() => {\n if (id) {\n dispatch(fetchDocumentApprovals(id));\n }\n }, [id]);\n\n useEffect(() => {\n if (approvals) {\n setSelectedUsers(approvals.filter(v => v.required) || []);\n }\n }, [approvals]);\n\n const dispatch = useDispatch();\n\n const handleDone = () => {\n dispatch(\n patchApproval({\n policyId: id,\n approvalMessage: message,\n approvals,\n selectedUsers,\n onSuccess: () =>\n dispatch(showGlobalToast('The policy has been sent for Approval.')),\n })\n );\n };\n\n const handleSkip = () => {\n dispatch(\n skipApproval({\n policyId: id,\n onSuccess: () => {\n dispatch(fetchNotifications(vendorUserId, false));\n dispatch(\n showGlobalToast(\n 'Approval has been skipped. The policy will move to the Live table where you can configure Read requests.'\n )\n );\n },\n })\n );\n };\n\n const isAllUsersSelected = () => selectedUsers.length === approvals.length;\n const isUserSelected = (user: VendorDocumentApproval) =>\n !!selectedUsers.find(u => u.vendorUserId === user.vendorUserId);\n\n const updateAllSelectedUsers = () => {\n if (isAllUsersSelected()) {\n setSelectedUsers([]);\n } else {\n setSelectedUsers(approvals);\n }\n };\n\n const updateSelectedUser = (user: VendorDocumentApproval) => () => {\n if (selectedUsers.find(u => u.vendorUserId === user.vendorUserId)) {\n setSelectedUsers(\n selectedUsers.filter(u => u.vendorUserId !== user.vendorUserId)\n );\n } else {\n setSelectedUsers([...selectedUsers, user]);\n }\n };\n\n const handleMessageChange = (\n event: React.ChangeEvent\n ) => {\n const { value } = event.target;\n setMessage(value);\n };\n\n const vendorUsers = useSelector((state: ApplicationState) =>\n selectUsers(state)\n );\n return (\n \n \n \n {isCancelable && (\n dispatch(closeApprovalManagement())}\n >\n \n \n )}\n
\n
Send for approval
\n
\n Select and notify Approvers or skip to confirm Approval is not\n required.\n
\n
\n Document: {name}\n
\n
\n
\n \n
\n \n \n \n \n \n \n \n columnName=\"status\"\n grid={Grid.ApprovalManagement}\n label=\"Status\"\n />\n \n \n \n {isFetchingDocumentApprovals ? (\n \n \n \n \n \n ) : (\n approvals?.map(user => {\n const { email } = user;\n const vendorUser = vendorUsers.find(\n currentVendorUser =>\n currentVendorUser.id === user.vendorUserId\n );\n return (\n \n \n \n }\n onChange={updateSelectedUser(user)}\n />\n \n \n \n \n \n );\n })\n )}\n \n \n
\n
\n \n
\n
\n \n
\n Skip\n
\n Skip this step, if no approval is required\n
\n
\n \n Send\n \n
\n \n
\n );\n};\n","import {\n AssessmentSection,\n Question,\n QuestionColumn,\n QuestionDatatypeEnum,\n} from '../swagger';\nimport flattenArray from './flattenArray';\nimport { dentaku } from './dentaku';\n\nconst getFilteredQuestionsWithoutTableQuestions = (\n section: AssessmentSection,\n context?: Record\n): Question[] => {\n const excludedQuestionList = section.questions\n .filter(\n (question: Question) => question.datatype === QuestionDatatypeEnum.NoData\n )\n .map((question: Question) =>\n question.questionColumns.map(\n (questionColumn: QuestionColumn) => questionColumn.columnValue\n )\n );\n\n const flattenedList = flattenArray(excludedQuestionList);\n\n let questions = section.questions.filter(\n (question: Question) => !flattenedList.includes(question.name)\n );\n\n if (context) {\n questions = questions.filter(q => dentaku(q.showWhen, context));\n }\n\n return questions;\n};\n\nexport default getFilteredQuestionsWithoutTableQuestions;\n","import classNames from 'classnames';\nimport { filesize } from 'filesize';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n hideAddFileOrUrlModal,\n hideFileOrUrlSuccessfulToast,\n} from '../../store/assessments/assessmentsSlice';\nimport { AddFileMode } from '../../store/assessments/assessmentsState';\nimport { addFileOrUrl } from '../../store/assessments/assessmentsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport { URL_REGEX } from '../../types/constants';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AdoptechTextArea } from '../AdoptechTextArea/AdoptechTextArea';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport { MessageToast } from '../MessageToast/MessageToast';\nimport './AddFileOrUrlModal.scss';\nimport { portalRoutes } from '../Routes/Routes';\n\nexport const AddFileOrUrlModal: React.FC = () => {\n const fileRef = useRef();\n const urlRef = useRef();\n\n const [description, setDescription] = useState('');\n const [file, setFile] = useState(null);\n const [url, setUrl] = useState('');\n const [valid, setValid] = useState(false);\n\n const {\n addFileMode,\n isShowingAddFileModal,\n isShowingFileOrUrlSuccessfulToast,\n isUploadingFile,\n } = useSelector((state: ApplicationState) => state.assessments);\n\n useEffect(() => {\n if (fileRef.current) {\n fileRef.current.focus();\n }\n if (urlRef.current) {\n urlRef.current.focus();\n }\n setDescription('');\n setFile(null);\n setUrl('');\n }, [isShowingAddFileModal]);\n\n useEffect(() => {\n if (addFileMode === AddFileMode.File) {\n setValid(\n file &&\n file.size <= +process.env.REACT_APP_MAX_FILE_SIZE &&\n description !== ''\n );\n }\n\n if (addFileMode === AddFileMode.Url) {\n setValid(URL_REGEX.test(url) && description !== '');\n }\n }, [file, description, url]);\n\n const dispatch = useDispatch();\n\n return (\n \n dispatch(hideAddFileOrUrlModal())}\n show={isShowingAddFileModal}\n >\n \n {addFileMode === AddFileMode.File && 'Upload'}\n {addFileMode === AddFileMode.Url && 'Add Link'}\n \n \n
\n {addFileMode === AddFileMode.File && (\n \n

\n Please click on Choose file to upload your document up to and\n enter a description that will be displayed in the portal.\n

\n

\n Supported file types: csv, pdf, xls, xlsm, xlsx.\n
Maximum file size: 10MB.\n

\n
\n )}\n {addFileMode === AddFileMode.Url && (\n
\n Enter the URL to the file and a description that will be\n displayed in the portal.\n
\n )}\n
\n
\n {addFileMode === AddFileMode.File && (\n
\n
\n
File*
\n
\n {\n fileRef.current.click();\n }}\n >\n Choose file\n \n {file ? (\n
\n {file.name} [{filesize(file.size)}]\n
\n ) : (\n
No file selected
\n )}\n setFile(e.currentTarget.files[0])}\n ref={fileRef}\n type=\"file\"\n />\n
\n
\n
\n )}\n {addFileMode === AddFileMode.Url && (\n
\n
\n
Link URL*
\n setUrl(e.currentTarget.value)}\n ref={urlRef}\n placeholder={portalRoutes.myDocument}\n type=\"text\"\n value={url}\n />\n
\n
\n )}\n
\n
\n
Description*
\n setDescription(e.currentTarget.value)}\n value={description}\n id=\"Description\"\n />\n
\n
\n
\n
*Required fields
\n
\n \n dispatch(hideAddFileOrUrlModal())}>\n Cancel\n \n dispatch(addFileOrUrl({ description, file, url }))}\n variant={AdoptechButtonVariant.Primary}\n >\n {addFileMode === AddFileMode.File && 'UPLOAD'}\n {addFileMode === AddFileMode.Url && 'ADD'}\n \n \n \n\n dispatch(hideFileOrUrlSuccessfulToast())}\n show={isShowingFileOrUrlSuccessfulToast}\n >\n {addFileMode === AddFileMode.File && 'File '}\n {addFileMode === AddFileMode.Url && 'URL '}\n successfully added.\n \n
\n );\n};\n","import { Question, QuestionColumn } from '../swagger';\nimport flattenArray from './flattenArray';\nimport { CommonAnswerType } from '../types/CommonAnswerType';\n\nconst getTableAnswers = ({\n question,\n answers,\n indexProperty,\n}: {\n question: Question;\n answers: CommonAnswerType[];\n indexProperty: 'name' | 'propertyName';\n}): CommonAnswerType[] =>\n flattenArray(\n question.questionColumns.map((questionColumn: QuestionColumn) =>\n answers.filter(\n answer => answer[indexProperty] === questionColumn.columnValue\n )\n )\n );\n\nexport default getTableAnswers;\n","import moment from 'moment';\nimport { Question, QuestionLayoutEnum } from '../swagger';\nimport getTableAnswers from './getTableAnswers';\nimport { CommonAnswerType } from '../types/CommonAnswerType';\n\nexport const getQuestionLastUpdatedInfo = (\n question: Question,\n answers: CommonAnswerType[],\n indexProperty: 'name' | 'propertyName',\n isConfirmed?: boolean,\n checkShowAuditInfo?: boolean\n) => {\n if (!question) {\n return undefined;\n }\n\n if (!answers) {\n return undefined;\n }\n\n const timeField = isConfirmed ? 'confirmedAt' : 'updatedAt';\n\n if (question.layout === QuestionLayoutEnum.TableLayout) {\n const lastUpdatedAnswer = getTableAnswers({\n question,\n answers,\n indexProperty,\n }).sort((a: CommonAnswerType, b: CommonAnswerType) =>\n moment(a[timeField]).isBefore(b[timeField]) ? 1 : -1\n )?.[0];\n\n if (\n !lastUpdatedAnswer ||\n (checkShowAuditInfo && !lastUpdatedAnswer.showAuditInfo)\n ) {\n return null;\n }\n\n return {\n confirmedAt: lastUpdatedAnswer.confirmedAt,\n confirmedBy: lastUpdatedAnswer.confirmedBy,\n updatedAt: lastUpdatedAnswer.updatedAt,\n updatedBy: lastUpdatedAnswer.updatedBy,\n };\n }\n\n if (question.layout === QuestionLayoutEnum.CheckBoxes) {\n const checkboxAnswers = answers\n .filter(a => a[indexProperty]?.startsWith(question[indexProperty]))\n .sort((a, b) => (moment(a[timeField]).isBefore(b[timeField]) ? 1 : -1));\n\n if (\n !checkboxAnswers ||\n checkboxAnswers.length === 0 ||\n (checkShowAuditInfo &&\n checkboxAnswers.some(\n (checkboxAnswer: CommonAnswerType) => !checkboxAnswer.showAuditInfo\n ))\n ) {\n return null;\n }\n\n return {\n confirmedAt: checkboxAnswers[0].confirmedAt,\n confirmedBy: checkboxAnswers[0].confirmedBy,\n updatedAt: checkboxAnswers[0].updatedAt,\n updatedBy: checkboxAnswers[0].updatedBy,\n };\n }\n\n const answer = answers.find(\n a => a[indexProperty] === question[indexProperty]\n );\n\n if (!answer || (checkShowAuditInfo && !answer.showAuditInfo)) {\n return null;\n }\n\n return {\n confirmedAt: answer.confirmedAt,\n confirmedBy: answer.confirmedBy,\n updatedAt: answer.updatedAt,\n updatedBy: answer.updatedBy,\n };\n};\n","import { faExclamationTriangle } from '@fortawesome/pro-light-svg-icons/faExclamationTriangle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React, { DOMAttributes, useEffect, useState } from 'react';\nimport { ButtonGroup, Dropdown } from 'react-bootstrap';\nimport DropdownMenu from 'react-bootstrap/DropdownMenu';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { formatLongDate } from '../../functions/formatLongDate';\nimport { fetchAssessmentResponseHistory } from '../../store/assessments/assessmentsThunks';\nimport {\n AssessmentResponseAnswer,\n Question,\n QuestionLayoutEnum,\n} from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport { AdoptechButton } from '../AdoptechButton/AdoptechButton';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { AnswerFormControl } from '../AnswerFormControl/AnswerFormControl';\nimport './AssessmentResponseHistoryPopup.scss';\nimport { cleanupAssessmentHistories } from '../../store/assessments/assessmentsSlice';\n\ninterface AssessmentResponseHistoryPopupProps {\n assessmentResponseId: string;\n previousAnswer: AssessmentResponseAnswer;\n question: Question;\n questions: Question[];\n}\n\nconst baseCss = 'assessmentResponseHistoryPopup';\n// TODO: reuse AdoptechDropdownToggle\nconst HistoryButton = React.forwardRef>(\n (props, ref) => (\n {\n e.stopPropagation();\n e.preventDefault();\n props.onClick(e);\n }}\n ref={ref}\n >\n History\n \n )\n);\n\ninterface AssessmentHistoryProps {\n assessmentResponseId: string;\n question: Question;\n}\n\nexport const useAssessmentHistory = ({\n assessmentResponseId,\n question,\n}: AssessmentHistoryProps) => {\n const dispatch = useDispatch();\n const fetchHistory = () => {\n if (!assessmentResponseId) return;\n dispatch(fetchAssessmentResponseHistory(assessmentResponseId, question.id));\n };\n\n useEffect(() => {\n dispatch(cleanupAssessmentHistories());\n }, []);\n\n const { assessmentResponseHistories, isFetchingAssessmentResponseHistory } =\n useSelector((state: ApplicationState) => state.assessments);\n const history =\n assessmentResponseHistories?.[question.id]?.filter(\n r => r.assessmentResponseId !== assessmentResponseId\n ) || [];\n return {\n isFetchingAssessmentResponseHistory,\n history,\n fetchHistory,\n };\n};\n\n// This component is similar to AssessmentResponseLibraryPopup, but is used only on completed assessments\nexport const AssessmentResponseHistoryPopup: React.FC<\n AssessmentResponseHistoryPopupProps\n> = ({ assessmentResponseId, previousAnswer, question, questions }) => {\n const { history, fetchHistory, isFetchingAssessmentResponseHistory } =\n useAssessmentHistory({ assessmentResponseId, question });\n\n // No history for file upload questions\n if (question.layout === QuestionLayoutEnum.FileSelect) {\n return null;\n }\n\n const tableHistory: { [key: string]: AssessmentResponseAnswer[] } = {};\n if (history && question.layout === QuestionLayoutEnum.TableLayout) {\n history.forEach(entry => {\n tableHistory[entry.assessmentResponseId]\n ? tableHistory[entry.assessmentResponseId].push(entry)\n : (tableHistory[entry.assessmentResponseId] = [entry]);\n });\n }\n\n const renderTableHistory = (\n tableHistoryAnswers: AssessmentResponseAnswer[],\n index: number\n ) => {\n const entry = history[0];\n return renderEntry(entry, index, tableHistoryAnswers);\n };\n\n let prevAnswer = previousAnswer?.value;\n const exclamation = !!history && prevAnswer !== history?.[0]?.value;\n\n const renderEntry = (\n entry: AssessmentResponseAnswer,\n index: number,\n historyAnswers: AssessmentResponseAnswer[]\n ) => {\n const isConfirmed = prevAnswer === entry.value;\n prevAnswer = entry.value;\n\n return (\n \n
\n {isConfirmed ? 'Confirmed' : index === 0 ? 'Last updated' : 'Updated'}\n
\n
\n {formatLongDate(isConfirmed ? entry.confirmedAt : entry.updatedAt)}\n
\n <>\n
\n Response\n
\n {}}\n readonly\n asTextReadonly\n responseId={entry.assessmentResponseId}\n />\n \n \n );\n };\n\n return (\n \n {\n if (isOpen) fetchHistory();\n }}\n drop=\"down\"\n alignRight\n >\n \n\n \n
\n
\n
\n Version history \n
\n
\n {!isFetchingAssessmentResponseHistory && history && (\n <>\n {question.layout === QuestionLayoutEnum.TableLayout\n ? Object.values(tableHistory).map(renderTableHistory)\n : history.map(renderEntry)}\n \n )}\n {isFetchingAssessmentResponseHistory && }\n\n {!isFetchingAssessmentResponseHistory &&\n (!history || history.length === 0) &&\n 'There is no previous answer to this question'}\n
\n
\n \n \n
\n );\n};\n","import React, { DOMAttributes } from 'react';\nimport { ButtonGroup, Dropdown } from 'react-bootstrap';\nimport DropdownMenu from 'react-bootstrap/DropdownMenu';\nimport {\n AssessmentResponseAnswer,\n Question,\n QuestionLayoutEnum,\n} from '../../swagger';\nimport { AdoptechButton } from '../AdoptechButton/AdoptechButton';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { AnswerFormControl } from '../AnswerFormControl/AnswerFormControl';\nimport './AssessmentResponseLibraryPopup.scss';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { useAssessmentHistory } from '../AssessmentResponseHistoryPopup/AssessmentResponseHistoryPopup';\n\ninterface AssessmentResponseLibraryPopupProps {\n assessmentResponseId: string;\n previousAnswer: AssessmentResponseAnswer;\n question: Question;\n questions: Question[];\n onAnswerClick: (\n library: AssessmentResponseAnswer[],\n entry: AssessmentResponseAnswer\n ) => void;\n}\n\nconst baseCss = 'assessmentResponseLibraryPopup';\n// TODO: reuse AdoptechDropdownToggle\nconst LibraryButton = React.forwardRef>(\n (props, ref) => (\n {\n e.stopPropagation();\n e.preventDefault();\n props.onClick(e);\n }}\n ref={ref}\n >\n Library\n \n )\n);\n\nexport const AssessmentResponseLibraryPopup: React.FC<\n AssessmentResponseLibraryPopupProps\n> = ({\n assessmentResponseId,\n previousAnswer,\n question,\n questions,\n onAnswerClick,\n}) => {\n const { history, isFetchingAssessmentResponseHistory, fetchHistory } =\n useAssessmentHistory({ assessmentResponseId, question });\n\n const historyExist = history.length > 0;\n\n if (question?.layout === QuestionLayoutEnum.FileSelect) {\n return null;\n }\n\n const tableLibrary: { [key: string]: AssessmentResponseAnswer[] } = {};\n if (historyExist && question.layout === QuestionLayoutEnum.TableLayout) {\n history.forEach(entry => {\n tableLibrary[entry.assessmentResponseId]\n ? tableLibrary[entry.assessmentResponseId].push(entry)\n : (tableLibrary[entry.assessmentResponseId] = [entry]);\n });\n }\n\n const renderTableLibrary = (\n tableLibraryAnswers: AssessmentResponseAnswer[],\n index: number\n ) => {\n const entry = tableLibraryAnswers[0];\n return renderEntry(entry, index, tableLibraryAnswers);\n };\n\n let prevAnswer = previousAnswer?.value;\n\n const renderEntry = (\n entry: AssessmentResponseAnswer,\n index: number,\n libraryAnswers: AssessmentResponseAnswer[]\n ) => {\n const isConfirmed = prevAnswer === entry.value;\n prevAnswer = entry.value;\n\n return (\n {\n onAnswerClick(libraryAnswers, entry);\n }}\n className=\"assessmentResponseLibraryPopup--libraryEntry\"\n key={entry.id}\n >\n
\n
\n Previous answer\n
\n
\n {`Last used: ${formatShortDate(\n isConfirmed ? entry.confirmedAt : entry.updatedAt\n )}`}\n
\n
\n
\n
\n {isConfirmed ? entry.confirmedBy : entry.updatedBy}\n
\n
\n {}}\n readonly\n asTextReadonly\n responseId={entry.assessmentResponseId}\n />\n \n );\n };\n\n return (\n
\n {\n if (isShowing) fetchHistory();\n }}\n drop=\"up\"\n alignRight\n >\n \n\n \n
\n {historyExist && (\n
{`Library of previous answers (${history.length})`}
\n )}\n
\n {historyExist && (\n <>\n {question.layout === QuestionLayoutEnum.TableLayout\n ? Object.values(tableLibrary).map(renderTableLibrary)\n : history.map(renderEntry)}\n \n )}\n {isFetchingAssessmentResponseHistory && }\n {!isFetchingAssessmentResponseHistory &&\n !historyExist &&\n 'There is no previous answer to this question'}\n
\n
\n
\n \n \n
\n );\n};\n","import { QuestionType } from '../types/QuestionType';\n\nconst doTableAnswersExist = (tableQuestions: QuestionType[]): boolean => {\n return tableQuestions.some(question =>\n question.answers.some(answer => Boolean(answer))\n );\n};\n\nexport default doTableAnswersExist;\n","import { AssessmentResponseAnswer, QuestionRow } from '../swagger';\n\nconst getCheckboxAnswers = (\n questionRows: QuestionRow[],\n answers: AssessmentResponseAnswer[]\n): AssessmentResponseAnswer[] => {\n if (!questionRows?.length || !answers?.length) {\n return null;\n }\n\n return answers.filter((answer: AssessmentResponseAnswer) => {\n return Boolean(\n questionRows.find(question => question.name === answer.name)\n );\n });\n};\n\nexport default getCheckboxAnswers;\n","import { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\n\nimport Fuse from 'fuse.js';\nimport React, { useState } from 'react';\nimport { Modal, ProgressBar } from 'react-bootstrap';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { hideAssessmentSummaryExportModal } from '../../store/assessments/assessmentsSlice';\nimport { exportAssessmentResponses } from '../../store/assessments/assessmentsThunks';\nimport { AssessmentResponse } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport { COMPLETED_TEXT } from '../../types/constants';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { AdoptechCheckbox } from '../AdoptechCheckbox/AdoptechCheckbox';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport './AssessmentSummaryExportModal.scss';\n\nconst options = {\n includeScore: true,\n keys: ['vendorName', 'updatedAt'],\n};\n\nconst MAX_EXPORT_ITEMS = 100;\n\nexport const AssessmentSummaryExportModal: React.FC = () => {\n const dispatch = useDispatch();\n\n const [search, setSearch] = useState('');\n\n const {\n isShowingAssessmentSummaryExportModal,\n incomingAssessmentResponses,\n isExportingAssessmentResponses,\n exportProgress,\n } = useSelector((state: ApplicationState) => state.assessments);\n\n const isCompleted = (response: AssessmentResponse) =>\n response.status === COMPLETED_TEXT;\n\n const completedResponses = [...incomingAssessmentResponses]?.filter(\n isCompleted\n );\n\n const fuse = new Fuse(completedResponses, options);\n const responses = search\n ? fuse.search(search).map(x => x.item)\n : completedResponses;\n\n const handleExport = () => {\n const ids = selectedResponses.map(r => r.id);\n\n if (ids.length > 0) {\n const assessmentId = incomingAssessmentResponses[0].assessmentId;\n dispatch(exportAssessmentResponses(assessmentId, ids));\n }\n };\n\n const [selectedResponses, setSelectedResponses] = useState<\n AssessmentResponse[]\n >([]);\n\n const updateSelectedResponse = (response: AssessmentResponse) => () => {\n if (selectedResponses.find(selected => selected.id === response.id)) {\n setSelectedResponses(\n selectedResponses.filter(selected => selected.id !== response.id)\n );\n } else {\n if (selectedResponses.length < MAX_EXPORT_ITEMS) {\n setSelectedResponses(\n (selectedAssessmentResponses: AssessmentResponse[]) => [\n ...selectedAssessmentResponses,\n response,\n ]\n );\n }\n }\n };\n\n const isResponseSelected = (response: AssessmentResponse) =>\n !!selectedResponses.find(selected => selected.id === response.id);\n\n return (\n \n dispatch(hideAssessmentSummaryExportModal())}\n show={isShowingAssessmentSummaryExportModal}\n >\n Export responses\n \n
\n Please select the published responses you would like to download.\n Please select up to a maximum of one hundred Responders.\n
\n
\n
\n
\n Select responder(s)\n
\n
\n setSearch(event.currentTarget.value)}\n type=\"text\"\n placeholder=\"Filter\"\n icon={faSearch}\n />\n
\n
\n
\n \n \n \n \n Respondee\n Date\n \n \n \n {responses.map(response => {\n return (\n \n \n \n \n \n {response.vendorName}\n \n \n {formatShortDate(response.updatedAt)}\n \n \n );\n })}\n \n \n\n
\n {isExportingAssessmentResponses && (\n \n )}\n
\n
\n \n dispatch(hideAssessmentSummaryExportModal())}\n >\n Cancel\n \n \n Export\n \n \n \n
\n );\n};\n","import { QuestionType } from '../types/QuestionType';\n\nconst isTableAnswerConfirmed = (tableQuestions: QuestionType[]): boolean => {\n return tableQuestions.every(\n question =>\n question.answers.length &&\n question.answers.every(answer => answer.isConfirmed)\n );\n};\n\nexport default isTableAnswerConfirmed;\n","import { faFileExport } from '@fortawesome/pro-light-svg-icons/faFileExport';\nimport { faLockAlt } from '@fortawesome/pro-light-svg-icons/faLockAlt';\nimport { faUserPlus } from '@fortawesome/pro-light-svg-icons/faUserPlus';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport {\n hidePublishAssessmentModal,\n initiateSendAssessment,\n showAssessmentSummaryExportModal,\n showPublishAssessmentModal,\n} from '../../store/assessments/assessmentsSlice';\nimport { publishAssessmentResponse } from '../../store/assessments/assessmentsThunks';\nimport {\n Assessment,\n AssessmentResponse,\n AssessmentResponseAnswer,\n Question,\n ShareableType,\n} from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { AssessmentSummaryExportModal } from '../AssessmentSummaryExportModal/AssessmentSummaryExportModal';\nimport { GenericModal } from '../GenericModal/GenericModal';\nimport { Panel } from '../Panel/Panel';\nimport './AssessmentSummaryTile.scss';\nimport { showShareModal } from '../../store/vendors/vendorsSlice';\nimport {\n hasFeature,\n mapShareFeaturesToAccessLevels,\n} from '../../functions/access';\nimport { AccessObject } from '../../types/accessObject';\nimport { COMPLETED_TEXT } from '../../types/constants';\nimport getFilteredQuestionsWithoutTableQuestions from '../../functions/getFilteredQuestionsWithoutTableQuestions';\nimport getCheckboxAnswers from '../../functions/getCheckboxAnswers';\nimport getTableQuestionsAndAnswers from '../../functions/getTableQuestionsAndAnswers';\nimport isTableAnswerConfirmed from '../../functions/IsTableAnswerConfirmed';\n\nexport enum ActionType {\n 'summary',\n 'answer',\n 'completed',\n}\n\ninterface AssessmentSummaryTileProps {\n assessment: Assessment | AssessmentResponse;\n actionType: ActionType;\n}\n\ninterface isQuestionConfirmedProps {\n question: Question;\n answers: AssessmentResponseAnswer[];\n questions: Question[];\n}\n\nexport const isQuestionConfirmed = ({\n question,\n answers,\n questions,\n}: isQuestionConfirmedProps) => {\n if (!question) return false;\n\n const isTableAnswer = question.layout === 'table_layout';\n const isCheckboxAnswer = question.layout === 'check_boxes';\n const previousAnswer = (answers || []).find(\n (answer: AssessmentResponseAnswer) =>\n (answer.name || answer.propertyName) === question.name\n );\n\n if (isTableAnswer) {\n const tableQuestions = getTableQuestionsAndAnswers({\n question,\n questions,\n answers,\n indexProperty: 'name',\n });\n return isTableAnswerConfirmed(tableQuestions);\n }\n if (isCheckboxAnswer) {\n const checkboxAnswers = getCheckboxAnswers(question?.questionRows, answers);\n return (\n Boolean(checkboxAnswers?.length) &&\n checkboxAnswers.every(answer => answer.isConfirmed)\n );\n }\n return previousAnswer?.isConfirmed;\n};\n\nexport const assessmentResponseContext = (response: AssessmentResponse) => {\n if (!response) return {};\n return response.assessmentResponseAnswers.reduce(\n (\n acc: Record<\n AssessmentResponseAnswer['name'],\n AssessmentResponseAnswer['value']\n >,\n answer\n ) => ({\n ...acc,\n [answer.name]: answer.value,\n }),\n {}\n );\n};\n\nexport const AssessmentSummaryTile: React.FC = ({\n assessment,\n actionType,\n}) => {\n const currentAssessmentResponse = useSelector(\n (state: ApplicationState) => state.assessments.currentAssessmentResponse\n );\n const currentAssessment = useSelector(\n (state: ApplicationState) => state.assessments.currentAssessment\n );\n const isShowingPublishAssessmentModal = useSelector(\n (state: ApplicationState) =>\n state.assessments.isShowingPublishAssessmentModal\n );\n const isPublishingAssessmentResponse = useSelector(\n (state: ApplicationState) =>\n state.assessments.isPublishingAssessmentResponse\n );\n\n const context = assessmentResponseContext(currentAssessmentResponse);\n\n const questions = currentAssessmentResponse\n ? currentAssessmentResponse.assessmentSections\n ?.map(section => {\n return (\n getFilteredQuestionsWithoutTableQuestions(section, context) || []\n );\n })\n .flat()\n : [];\n\n const answers = currentAssessmentResponse?.assessmentResponseAnswers;\n\n const allFilledInAndConfirmed = questions.every(question =>\n isQuestionConfirmed({ questions, answers, question })\n );\n const disableButton =\n (answers || []).length === 0 || !allFilledInAndConfirmed;\n const handleShare = (\n shareableType: ShareableType,\n assessmentData: Assessment | AssessmentResponse\n ) => {\n dispatch(\n showShareModal({\n shareableId: assessmentData.id,\n shareableType,\n accessLevels: mapShareFeaturesToAccessLevels(\n assessmentData.access.feature\n ),\n relativePath: assessmentData.relativePath,\n })\n );\n };\n\n const dispatch = useDispatch();\n const baseCss = 'assessmentSummaryTile';\n\n const getActions = () => {\n switch (actionType) {\n case ActionType.summary:\n return (\n \n \n handleShare(ShareableType.Assessment, currentAssessment)\n }\n >\n \n Share\n \n dispatch(showAssessmentSummaryExportModal())}\n disabled={currentAssessment.status !== COMPLETED_TEXT}\n disabledTooltip=\"You have no completed responses yet.\"\n >\n \n Export\n \n dispatch(initiateSendAssessment())}\n variant={AdoptechButtonVariant.Primary}\n >\n Send\n \n \n );\n case ActionType.answer:\n return (\n <>\n dispatch(showPublishAssessmentModal())}\n variant={AdoptechButtonVariant.SuccessFilled}\n busy={isPublishingAssessmentResponse}\n disabledTooltip=\"All questions need to be answered and answers confirmed to publish the assessment\"\n >\n \n Publish\n \n \n handleShare(\n ShareableType.AssessmentResponse,\n currentAssessmentResponse\n )\n }\n >\n \n Share\n \n \n dispatch(push('/r/riskManagement/assessments/summary'))\n }\n variant={AdoptechButtonVariant.Primary}\n >\n Close\n \n \n );\n case ActionType.completed:\n return null;\n }\n };\n\n return (\n \n \n
\n
\n
\n
\n
Name
\n
\n {assessment?.name}\n
\n
\n
\n
Created by
\n
\n {actionType === ActionType.summary\n ? assessment?.vendorName\n : (assessment as AssessmentResponse)?.requestingVendorName}\n
\n
\n {actionType !== ActionType.summary && (\n
\n
\n Last modified\n
\n
\n {formatShortDate(assessment.updatedAt)}\n
\n
\n )}\n \n
\n {getActions()}\n
\n
\n
\n
\n
\n \n\n dispatch(hidePublishAssessmentModal())}\n onClose={() =>\n dispatch(publishAssessmentResponse(currentAssessmentResponse))\n }\n show={isShowingPublishAssessmentModal}\n showCancelButton\n title=\"Publish\"\n >\n Click on PUBLISH to make your answers available to the Questioner. This\n assessment will be moved to the Complete section.\n \n \n \n );\n};\n","import { Interweave } from 'interweave';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { getQuestionLastUpdatedInfo } from '../../functions/getQuestionLastUpdatedInfo';\nimport {\n patchAssessmentResponse,\n confirmAssessmentResponse,\n deleteAssessmentResponseAnswers,\n} from '../../store/assessments/assessmentsThunks';\nimport {\n AssessmentResponseAnswer,\n AssessmentResponseAnswerSourceTypeEnum,\n AssessmentResponseAnswerStatusEnum,\n Question,\n} from '../../swagger';\nimport { AssessmentResponseLibraryPopup } from '../AssessmentResponseLibraryPopup/AssessmentResponseLibraryPopup';\nimport { AssessmentResponseHistoryPopup } from '../AssessmentResponseHistoryPopup/AssessmentResponseHistoryPopup';\nimport { LastUpdatedInfo } from '../LastUpdatedInfo/LastUpdatedInfo';\nimport { AnswerFormControl } from '../AnswerFormControl/AnswerFormControl';\nimport './AssessmentQuestion.scss';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { faCheck } from '@fortawesome/pro-regular-svg-icons/faCheck';\nimport { QuestionType } from '../../types/QuestionType';\nimport getTableQuestionsAndAnswers from '../../functions/getTableQuestionsAndAnswers';\nimport doTableAnswersExist from '../../functions/doTableAnswersExist';\nimport getCheckboxAnswers from '../../functions/getCheckboxAnswers';\nimport { updateAnswer } from '../../store/assessments/assessmentsSlice';\nimport { isQuestionConfirmed } from '../AssessmentSummaryTile/AssessmentSummaryTile';\n\ninterface AssessmentQuestionProps {\n assessmentResponseId?: string;\n question: Question;\n questions?: Question[];\n answers?: AssessmentResponseAnswer[];\n readonly?: boolean;\n showHistory?: boolean;\n vendorId?: string;\n}\n\nexport const AssessmentQuestion: React.FC = ({\n assessmentResponseId,\n question,\n questions,\n answers,\n readonly,\n showHistory,\n vendorId,\n}) => {\n const dispatch = useDispatch();\n const isCheckboxAnswer = question.layout === 'check_boxes';\n const isTableAnswer = question.layout === 'table_layout';\n const previousAnswer = useMemo(() => {\n return (answers || []).find(\n (answer: AssessmentResponseAnswer) =>\n (answer.name || answer.propertyName) === question.name\n );\n }, [answers]);\n\n const indexProperty = 'name';\n const isReadonly = readonly || previousAnswer?.readOnly;\n const [lastUpdatedAnswers, setLastUpdatedAnswers] =\n useState(null);\n\n const tableQuestions: QuestionType[] = useMemo(() => {\n if (isTableAnswer) {\n return getTableQuestionsAndAnswers({\n question,\n questions,\n answers,\n indexProperty,\n });\n }\n return null;\n }, [question, questions, answers, indexProperty]);\n\n const checkboxAnswers = useMemo(\n () => getCheckboxAnswers(question?.questionRows, answers),\n [question?.questionRows, answers]\n );\n\n const isConfirmed = isQuestionConfirmed({ question, answers, questions });\n const isConfirmedButtonDisabled = useMemo(() => {\n if (isTableAnswer) {\n return !doTableAnswersExist(tableQuestions);\n }\n if (isCheckboxAnswer) {\n return !checkboxAnswers?.length;\n }\n return !previousAnswer;\n }, [\n isTableAnswer,\n tableQuestions,\n previousAnswer,\n isCheckboxAnswer,\n checkboxAnswers,\n ]);\n\n const lastUpdatedInfo = getQuestionLastUpdatedInfo(\n question,\n answers,\n 'name',\n isConfirmed,\n true\n );\n\n const handleChange = (\n assessmentResponseAnswers: AssessmentResponseAnswer[]\n ) => {\n assessmentResponseAnswers.forEach(ara => {\n dispatch(updateAnswer(ara));\n if (!ara?.sourceType)\n ara.sourceType =\n AssessmentResponseAnswerSourceTypeEnum.AssessmentResponse;\n });\n setLastUpdatedAnswers(assessmentResponseAnswers);\n };\n\n const handleConfirm = () => {\n if (!isTableAnswer) {\n const ids = isCheckboxAnswer\n ? checkboxAnswers?.map(answer => answer.id)\n : [previousAnswer.id];\n return dispatch(confirmAssessmentResponse(ids));\n }\n\n const tableAnswers: AssessmentResponseAnswer[] = [];\n tableQuestions.forEach((questionType: QuestionType) => {\n tableAnswers.push(...questionType.answers);\n });\n\n dispatch(\n patchAssessmentResponse({\n id: assessmentResponseId,\n assessmentResponse: {\n assessmentResponseAnswers: tableAnswers.map(answer => ({\n name: answer.name,\n value: answer.value,\n index: answer.index,\n datatype: answer.datatype,\n status: AssessmentResponseAnswerStatusEnum.Confirmed,\n })),\n },\n mode: 'table',\n })\n );\n };\n\n const handleAnswerClick = (\n library: AssessmentResponseAnswer[],\n entry: AssessmentResponseAnswer\n ) => {\n const assessmentResponseAnswers = isTableAnswer ? library : [entry];\n\n const updateAnswers = () =>\n dispatch(\n patchAssessmentResponse({\n id: assessmentResponseId,\n assessmentResponse: {\n assessmentResponseAnswers: assessmentResponseAnswers.map(\n answer => ({\n name: answer.name,\n value: answer.value,\n index: answer.index,\n datatype: answer.datatype,\n })\n ),\n },\n mode: isTableAnswer ? 'table' : null,\n })\n );\n\n if (!isTableAnswer) {\n return updateAnswers();\n }\n\n const tableAnswers: string[] = [];\n tableQuestions?.forEach((tableQuestion: QuestionType) => {\n tableQuestion.answers?.length &&\n tableAnswers.push(...tableQuestion.answers.map(answer => answer.id));\n });\n if (tableAnswers?.length) {\n dispatch(\n deleteAssessmentResponseAnswers(tableAnswers, null, updateAnswers)\n );\n }\n };\n\n useEffect(() => {\n const timer = setTimeout(() => {\n if (lastUpdatedAnswers) {\n dispatch(\n patchAssessmentResponse({\n id: assessmentResponseId,\n assessmentResponse: {\n assessmentResponseAnswers: lastUpdatedAnswers,\n },\n })\n );\n }\n }, 300);\n\n return () => clearTimeout(timer);\n }, [lastUpdatedAnswers]);\n\n return (\n
\n
\n \n {showHistory && (\n \n )}\n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n {!isCheckboxAnswer && (\n \n )}\n {!isReadonly &&\n (isConfirmed ? (\n \n Confirmed\n \n ) : (\n \n Confirm\n \n ))}\n
\n
\n
\n );\n};\n\nAssessmentQuestion.defaultProps = {\n answers: [],\n questions: [],\n};\n","import React from 'react';\nimport { AssessmentSection } from '../../swagger';\nimport { ProgressBar } from '../ProgressBar/ProgressBar';\nimport './AssessmentQuestionHeader.scss';\n\ninterface AssessmentQuestionHeaderProps {\n section: AssessmentSection;\n}\n\nexport const AssessmentQuestionHeader: React.FC<\n AssessmentQuestionHeaderProps\n> = ({ section }) => {\n return (\n
\n
{section.title}
\n
{section.answered}
\n
{section.unanswered}
\n
\n
\n {section.progress !== undefined &&\n (section.progress * 100).toFixed(0) + '%'}\n
\n
\n {section.progress !== undefined && (\n \n )}\n
\n
\n
\n );\n};\n","import React, { useState } from 'react';\nimport { Accordion } from 'react-bootstrap';\nimport getFilteredQuestionsWithoutTableQuestions from '../../functions/getFilteredQuestionsWithoutTableQuestions';\nimport { AssessmentResponse } from '../../swagger';\nimport { COMPLETED_TEXT } from '../../types/constants';\nimport { AddFileOrUrlModal } from '../AddFileOrUrlModal/AddFileOrUrlModal';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AssessmentQuestion } from '../AssessmentQuestion/AssessmentQuestion';\nimport { AssessmentQuestionHeader } from '../AssessmentQuestionHeader/AssessmentQuestionHeader';\nimport { assessmentResponseContext } from '../AssessmentSummaryTile/AssessmentSummaryTile';\nimport './AssessmentQuestions.scss';\n\ninterface AssessmentQuestionProps {\n assessment: AssessmentResponse;\n}\n\nexport const AssessmentQuestions: React.FC = ({\n assessment,\n}) => {\n const isAssessmentCompleted = assessment.status === COMPLETED_TEXT;\n\n const context = assessmentResponseContext(assessment);\n\n return (\n \n
\n
\n
Category
\n
Answered
\n
Unanswered
\n
Progress
\n
\n \n {assessment?.assessmentSections?.map((section, index) => (\n \n }\n hasDoneButton={!isAssessmentCompleted}\n >\n {getFilteredQuestionsWithoutTableQuestions(\n section,\n context\n )?.map(question => (\n \n ))}\n
\n \n \n ))}\n \n
\n\n \n
\n );\n};\n","import { faAngleLeft } from '@fortawesome/pro-light-svg-icons/faAngleLeft';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport {\n fetchAssessmentResponse,\n fetchAssessments,\n} from '../../store/assessments/assessmentsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport { AssessmentQuestions } from '../AssessmentQuestions/AssessmentQuestions';\nimport {\n ActionType,\n AssessmentSummaryTile,\n} from '../AssessmentSummaryTile/AssessmentSummaryTile';\nimport { AutoSaveToast } from '../AutoSaveToast/AutoSaveToast';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport './Assessment.scss';\n\nexport const Assessment: React.FC = () => {\n const dispatch = useDispatch();\n const params = useParams() as { id: string };\n const assessmentId = params.id;\n\n const currentVendor = useSelector(selectCurrentVendor);\n const currentAssessmentResponse = useSelector(\n (state: ApplicationState) => state.assessments.currentAssessmentResponse\n );\n\n useEffect(() => {\n if (!assessmentId) {\n dispatch(push('/r/riskManagement/assessments/summary'));\n } else {\n dispatch(fetchAssessmentResponse(assessmentId));\n }\n }, []);\n\n useEffect(() => {\n dispatch(fetchAssessments(currentVendor?.id));\n }, [currentVendor?.id]);\n\n if (!assessmentId) {\n return;\n }\n\n if (!currentAssessmentResponse) {\n return ;\n }\n\n return (\n \n
\n
\n {currentAssessmentResponse.status !==\n ActionType[ActionType.completed] && (\n
\n )}\n {\n dispatch(push('/r/riskManagement/assessments/summary'));\n }}\n >\n \n
\n
\n \n
\n
\n \n
\n \n
\n );\n};\n","import { push } from 'connected-react-router';\nimport React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { hidePublishedAssessmentModal } from '../../store/assessments/assessmentsSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './AssessmentPublishedModal.scss';\nimport { logoutUser } from '../../store/user/userThunks';\n\nexport const AssessmentPublishedModal: React.FC = () => {\n const isShowingPublishedAssessmentModal = useSelector(\n (state: ApplicationState) =>\n state.assessments.isShowingPublishedAssessmentModal\n );\n\n const dispatch = useDispatch();\n\n return (\n \n \n

Thank you!

\n

Your assessment has been submitted.

\n

\n Please feel free to logout, or click CONTINUE to stay in the platform.\n

\n
\n \n {\n dispatch(logoutUser());\n }}\n variant={AdoptechButtonVariant.Success}\n >\n Logout\n \n {\n dispatch(hidePublishedAssessmentModal());\n dispatch(push('/r/dashboard'));\n }}\n variant={AdoptechButtonVariant.Inverse}\n >\n CONTINUE\n \n \n \n );\n};\n","import moment from 'moment';\nimport { CompletedAssessment } from '../selectors/selectCompletedAssessments';\nimport { ColumnSort } from '../types/columnSort';\nimport { SortDirection } from '../types/sortDirection';\nimport { sort } from './sort';\n\nexport const completedAssessmentSort = (\n a: CompletedAssessment,\n b: CompletedAssessment,\n columnSort: ColumnSort\n): number => {\n let direction = 1;\n if (columnSort.direction === SortDirection.Ascending) {\n direction = -1;\n }\n\n const typedColumn: keyof CompletedAssessment =\n columnSort.name as keyof CompletedAssessment;\n\n switch (typedColumn) {\n case 'dateCompleted':\n return sort(moment(a.dateCompleted), moment(b.dateCompleted), direction);\n default:\n return sort(a[typedColumn], b[typedColumn], direction);\n }\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { completedAssessmentSort } from '../functions/completedAssessmentSort';\nimport { getVendorAssessments } from '../functions/getVendorAssessments';\nimport { VendorUser } from '../swagger';\nimport { COMPLETED_TEXT } from '../types/constants';\nimport { Grid } from '../types/grid';\nimport { selectSortSettings } from './selectSortSettings';\n\nexport enum CompletedAssessmentType {\n Assessment,\n AssessmentResponse,\n}\n\nexport interface CompletedAssessment {\n id: string;\n name: string;\n createdBy: string;\n owner?: VendorUser;\n dateCompleted: string;\n type: CompletedAssessmentType;\n path: string;\n}\n\nexport const selectCompletedAssessments = createSelector(\n getVendorAssessments,\n selectSortSettings(Grid.CompletedAssessments),\n\n (vendorAssessments, sortSetting) => {\n const assessments: CompletedAssessment[] = vendorAssessments\n .filter(a => a.status === COMPLETED_TEXT)\n .map(a => {\n return {\n id: a.id,\n name: a.name,\n createdBy: a.vendorName,\n owner: a.owner,\n dateCompleted: a.updatedAt,\n type: CompletedAssessmentType.Assessment,\n path: a.relativePath,\n };\n });\n\n return assessments.sort((a, b) =>\n completedAssessmentSort(a, b, sortSetting.columnSort)\n );\n }\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { completedAssessmentSort } from '../functions/completedAssessmentSort';\nimport { getVendorAssessmentResponses } from '../functions/getVendorAssessmentResponses';\nimport { COMPLETED_TEXT } from '../types/constants';\nimport { Grid } from '../types/grid';\nimport {\n CompletedAssessment,\n CompletedAssessmentType,\n} from './selectCompletedAssessments';\nimport { selectSortSettings } from './selectSortSettings';\n\nexport const selectCompletedAssessmentsResponses = createSelector(\n getVendorAssessmentResponses,\n selectSortSettings(Grid.CompletedAssessments),\n\n (vendorAssessmentResponses, sortSetting) => {\n const assessmentResponses: CompletedAssessment[] = vendorAssessmentResponses\n .filter(ar => ar.status === COMPLETED_TEXT)\n .map(ar => {\n return {\n id: ar.id,\n name: ar.name,\n createdBy: ar.requestingVendorName,\n owner: ar.owner,\n dateCompleted: ar.updatedAt,\n type: CompletedAssessmentType.AssessmentResponse,\n path: ar.relativePath,\n };\n });\n\n return assessmentResponses.sort((a, b) =>\n completedAssessmentSort(a, b, sortSetting.columnSort)\n );\n }\n);\n","import { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { push } from 'connected-react-router';\nimport React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport {\n CompletedAssessment,\n CompletedAssessmentType,\n} from '../../selectors/selectCompletedAssessments';\nimport { showEditPublishedAssessmentModal } from '../../store/assessments/assessmentsSlice';\nimport { Grid } from '../../types/grid';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { SortableTableHeader } from '../SortableTableHeader/SortableTableHeader';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\nimport './CompletedAssessmentsGridIn.scss';\nimport { Dropdown } from 'react-bootstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { canCreate } from '../../functions/access';\nimport { AccessObject } from '../../types/accessObject';\nimport { MeatballMenu } from '../MeatballMenu/MeatballMenu';\nimport classNames from 'classnames';\nimport { showEditOwnerModal } from '../../store/global/globalSlice';\nimport { OwnerObjectType } from '../../types/OwnerObjectType';\nimport { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\n\nexport interface CompletedAssessmentsGridIn {\n assessments: CompletedAssessment[];\n rowClickHandler: (assessment: CompletedAssessment) => () => void;\n}\n\nexport const CompletedAssessmentsGridIn: React.FC<\n CompletedAssessmentsGridIn\n> = props => {\n const canCreateAssessments = canCreate(AccessObject.assessments);\n\n const dispatch = useDispatch();\n const baseClassName = 'completedAssessmentsGridIn';\n const handleRowClick = props.rowClickHandler;\n if (props.assessments.length === 0) {\n return null;\n }\n\n return (\n \n
\n \n \n \n \n className={baseClassName + '--nameHeader'}\n columnName=\"name\"\n grid={Grid.CompletedAssessments}\n label=\"Name\"\n />\n \n className={baseClassName + '--createdByHeader'}\n columnName=\"createdBy\"\n grid={Grid.CompletedAssessments}\n label=\"Created by\"\n />\n \n className={baseClassName + '--dateCompletedHeader'}\n columnName=\"dateCompleted\"\n grid={Grid.CompletedAssessments}\n label=\"Date completed\"\n />\n \n className={baseClassName + '--ownerHeader'}\n columnName=\"owner\"\n grid={Grid.CompletedAssessments}\n label=\"Owner\"\n />\n \n \n \n \n \n {props.assessments.map(assessment => {\n return (\n \n \n {assessment.name}\n \n \n {assessment.createdBy}\n \n \n {formatShortDate(assessment.dateCompleted)}\n \n \n canCreateAssessments\n ? dispatch(\n showEditOwnerModal({\n object: assessment,\n type: OwnerObjectType.AssessmentResponse,\n })\n )\n : handleRowClick(assessment)()\n }\n >\n \n \n\n \n \n \n {\n e.stopPropagation();\n dispatch(\n push(\n `/r/riskManagement/assessments/response/${assessment.id}`\n )\n );\n }}\n >\n \n View\n \n {\n dispatch(\n showEditPublishedAssessmentModal(assessment.id)\n );\n e.stopPropagation();\n }}\n >\n \n Edit\n \n {canCreateAssessments && (\n {\n dispatch(\n showEditOwnerModal({\n object: Object.assign(assessment),\n type: OwnerObjectType.AssessmentResponse,\n })\n );\n e.stopPropagation();\n }}\n >\n \n Edit owner\n \n )}\n \n \n \n );\n })}\n \n \n
\n
\n );\n};\n","import { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { push } from 'connected-react-router';\nimport React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { CompletedAssessment } from '../../selectors/selectCompletedAssessments';\nimport { Grid } from '../../types/grid';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { SortableTableHeader } from '../SortableTableHeader/SortableTableHeader';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\nimport './CompletedAssessmentsGridOut.scss';\nimport { Dropdown } from 'react-bootstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { canCreate } from '../../functions/access';\nimport { AccessObject } from '../../types/accessObject';\nimport { MeatballMenu } from '../MeatballMenu/MeatballMenu';\nimport classNames from 'classnames';\nimport { showEditOwnerModal } from '../../store/global/globalSlice';\nimport { OwnerObjectType } from '../../types/OwnerObjectType';\nimport { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\n\nexport interface CompletedAssessmentsGridOut {\n assessments: CompletedAssessment[];\n rowClickHandler: (assessment: CompletedAssessment) => () => void;\n}\n\nexport const CompletedAssessmentsGridOut: React.FC<\n CompletedAssessmentsGridOut\n> = props => {\n const canCreateAssessments = canCreate(AccessObject.assessments);\n\n const dispatch = useDispatch();\n const baseClassName = 'completedAssessmentsGridOut';\n const handleRowClick = props.rowClickHandler;\n\n if (props.assessments.length === 0) {\n return null;\n }\n\n return (\n \n
\n \n \n \n \n className={baseClassName + '--nameHeader'}\n columnName=\"name\"\n grid={Grid.CompletedAssessments}\n label=\"Name\"\n />\n \n className={baseClassName + '--ownerHeader'}\n columnName=\"owner\"\n grid={Grid.CompletedAssessments}\n label=\"Owner\"\n />\n \n className={baseClassName + '--dateCompletedHeader'}\n columnName=\"dateCompleted\"\n grid={Grid.CompletedAssessments}\n label=\"Date completed\"\n />\n \n \n \n \n \n \n {props.assessments.map(assessment => {\n return (\n \n \n {assessment.name}\n \n \n canCreateAssessments\n ? dispatch(\n showEditOwnerModal({\n object: assessment,\n type: OwnerObjectType.Assessment,\n })\n )\n : handleRowClick(assessment)()\n }\n >\n \n \n \n {formatShortDate(assessment.dateCompleted)}\n \n \n \n \n \n {\n e.stopPropagation();\n dispatch(push(assessment.path));\n }}\n >\n \n View\n \n {canCreateAssessments && (\n {\n dispatch(\n showEditOwnerModal({\n object: assessment,\n type: OwnerObjectType.Assessment,\n })\n );\n e.stopPropagation();\n }}\n >\n \n Edit owner\n \n )}\n \n \n \n );\n })}\n \n \n
\n
\n );\n};\n","import { push } from 'connected-react-router';\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n CompletedAssessment,\n CompletedAssessmentType,\n} from '../../selectors/selectCompletedAssessments';\nimport { hideEditPublishedAssessmentModal } from '../../store/assessments/assessmentsSlice';\nimport { reopenAssessmentResponse } from '../../store/assessments/assessmentsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport { GenericModal } from '../GenericModal/GenericModal';\nimport { canCreate } from '../../functions/access';\nimport { AccessObject } from '../../types/accessObject';\nimport { CompletedAssessmentsGridIn } from '../CompletedAssessmentsGridIn/CompletedAssessmentsGridIn';\nimport { CompletedAssessmentsGridOut } from '../CompletedAssessmentsGridOut/CompletedAssessmentsGridOut';\nimport { AssessmentTabs } from '../../store/assessments/assessmentsState';\n\nexport interface CompletedAssessmentsGrid {\n assessments: CompletedAssessment[];\n}\n\nexport const CompletedAssessmentsGrid: React.FC<\n CompletedAssessmentsGrid\n> = props => {\n const canCreateAssessments = canCreate(AccessObject.assessments);\n\n const editPublishedAssessmentResponseId = useSelector(\n (state: ApplicationState) =>\n state.assessments.editPublishedAssessmentResponseId\n );\n const isReopeningAssessmentResponse = useSelector(\n (state: ApplicationState) => state.assessments.isReopeningAssessmentResponse\n );\n const isShowingEditPublishedAssessmentModal = useSelector(\n (state: ApplicationState) =>\n state.assessments.isShowingEditPublishedAssessmentModal\n );\n const tabToSelect = useSelector(\n (state: ApplicationState) => state.assessments.assessmentTabToShow\n );\n const dispatch = useDispatch();\n\n if (props.assessments.length === 0) {\n return null;\n }\n\n const handleRowClick = (assessment: CompletedAssessment) => () => {\n if (assessment.type === CompletedAssessmentType.Assessment) {\n dispatch(push(`/r/riskManagement/assessments/summary/${assessment.id}`));\n }\n if (assessment.type === CompletedAssessmentType.AssessmentResponse) {\n dispatch(push(`/r/riskManagement/assessments/response/${assessment.id}`));\n }\n };\n\n return (\n \n {tabToSelect == AssessmentTabs.Incoming ? (\n \n ) : (\n \n )}\n dispatch(hideEditPublishedAssessmentModal())}\n onClose={() => {\n dispatch(reopenAssessmentResponse(editPublishedAssessmentResponseId));\n }}\n show={isShowingEditPublishedAssessmentModal}\n showCancelButton\n title=\"Edit a Published Assessment\"\n >\n Editing this Assessment will change its status back to In Progress and\n you will have to Publish the document again for the Questioner to see\n your response. Click EDIT to open the assessment and make changes or\n Close to go back.\n \n \n );\n};\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { selectCompletedAssessments } from '../../selectors/selectCompletedAssessments';\nimport { selectCompletedAssessmentsResponses } from '../../selectors/selectCompletedAssessmentsResponses';\nimport { AssessmentTabs } from '../../store/assessments/assessmentsState';\nimport { CompletedAssessmentsGrid } from '../CompletedAssessmentsGrid/CompletedAssessmentsGrid';\nimport { Intent, Lozenge } from '../Lozenge/Lozenge';\nimport { NoDataText } from '../NoDataText/NoDataText';\nimport './CompletedAssessments.scss';\n\nexport interface CompletedAssessmentsProps {\n assessmentTab: AssessmentTabs;\n}\n\nexport const CompletedAssessments: React.FC<\n CompletedAssessmentsProps\n> = props => {\n const completedAssessmentsResp = useSelector(\n selectCompletedAssessmentsResponses\n );\n\n const completedAssessments = useSelector(selectCompletedAssessments);\n\n const assessments =\n AssessmentTabs.Incoming === props.assessmentTab\n ? completedAssessmentsResp\n : completedAssessments;\n\n const emptyArrayText =\n AssessmentTabs.Incoming === props.assessmentTab\n ? 'Assessments you have responded to will appear here'\n : 'Once all responders have submitted their responses, your assessment will appear here';\n\n return (\n
\n
\n
\n Complete \n
\n
\n {assessments.length > 0 ? (\n \n ) : (\n \n )}\n
\n );\n};\n","import { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { faUserPlus } from '@fortawesome/pro-light-svg-icons/faUserPlus';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport { push } from 'connected-react-router';\nimport React from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n canCreate,\n hasFeature,\n mapShareFeaturesToAccessLevels,\n} from '../../functions/access';\nimport { capitaliseFirst } from '../../functions/capitaliseFirst';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { selectPendingAssessments } from '../../selectors/selectPendingAssessments';\nimport { showEditOwnerModal } from '../../store/global/globalSlice';\nimport { showShareModal } from '../../store/vendors/vendorsSlice';\nimport { AssessmentResponse, ShareableType } from '../../swagger';\nimport { AccessObject } from '../../types/accessObject';\nimport { Grid } from '../../types/grid';\nimport { OwnerObjectType } from '../../types/OwnerObjectType';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { MeatballMenu } from '../MeatballMenu/MeatballMenu';\nimport { SortableTableHeader } from '../SortableTableHeader/SortableTableHeader';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\nimport './PendingAssessmentsGrid.scss';\n\nexport const PendingAssessmentsGrid: React.FC = () => {\n const assessmentResponses = useSelector(selectPendingAssessments);\n const canCreateAssessments = canCreate(AccessObject.assessments);\n\n const dispatch = useDispatch();\n\n const handleRowClick = (id: string) => () => {\n dispatch(push(`/r/riskManagement/assessments/response/${id}`));\n };\n\n if (!assessmentResponses || assessmentResponses.length === 0) {\n return null;\n }\n\n return (\n
\n \n \n \n \n className=\"pendingAssessmentsGrid--nameHeader\"\n columnName=\"name\"\n grid={Grid.PendingAssessments}\n label=\"Name\"\n />\n \n className=\"pendingAssessmentsGrid--createdByHeader\"\n columnName=\"requestingVendorName\"\n grid={Grid.PendingAssessments}\n label=\"Created by\"\n />\n \n className=\"pendingAssessmentsGrid--dueDateHeader\"\n columnName=\"dueDate\"\n grid={Grid.PendingAssessments}\n label=\"Due date\"\n />\n \n className=\"pendingAssessmentsGrid--ownerHeader\"\n columnName=\"requestingVendorName\"\n grid={Grid.PendingAssessments}\n label=\"Owner\"\n />\n \n className=\"pendingAssessmentsGrid--statusHeader\"\n columnName=\"status\"\n grid={Grid.PendingAssessments}\n label=\"Status\"\n />\n \n \n \n \n {assessmentResponses.map((assessmentResponse: AssessmentResponse) => {\n return (\n \n \n {assessmentResponse.name}\n \n \n {assessmentResponse.requestingVendorName}\n \n \n {formatShortDate(assessmentResponse.dueDate)}\n \n \n canCreateAssessments\n ? dispatch(\n showEditOwnerModal({\n object: assessmentResponse,\n type: OwnerObjectType.AssessmentResponse,\n })\n )\n : dispatch(\n push(\n `/r/riskManagement/assessments/summary/${assessmentResponse.id}`\n )\n )\n }\n >\n \n \n \n {capitaliseFirst(assessmentResponse.status)}\n \n \n \n {\n e.stopPropagation();\n dispatch(\n push(\n `/r/riskManagement/assessments/response/${assessmentResponse.id}`\n )\n );\n }}\n >\n \n Edit\n \n {\n dispatch(\n showShareModal({\n shareableId: assessmentResponse.id,\n shareableType: ShareableType.AssessmentResponse,\n accessLevels: mapShareFeaturesToAccessLevels(\n assessmentResponse.access.feature\n ),\n relativePath: assessmentResponse.relativePath,\n })\n );\n e.stopPropagation();\n }}\n >\n \n Share\n \n\n {canCreateAssessments && (\n {\n dispatch(\n showEditOwnerModal({\n object: assessmentResponse,\n type: OwnerObjectType.AssessmentResponse,\n })\n );\n e.stopPropagation();\n }}\n >\n \n Edit owner\n \n )}\n \n \n \n );\n })}\n \n \n
\n );\n};\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { selectPendingAssessments } from '../../selectors/selectPendingAssessments';\nimport { Intent, Lozenge } from '../Lozenge/Lozenge';\nimport { NoDataText } from '../NoDataText/NoDataText';\nimport { PendingAssessmentsGrid } from '../PendingAssessmentsGrid/PendingAssessmentsGrid';\nimport './PendingAssessments.scss';\n\nexport const PendingAssessments: React.FC = () => {\n const assessmentResponses = useSelector(selectPendingAssessments);\n\n return (\n
\n
\n
\n Awaiting our response\n \n
\n
\n {assessmentResponses.length > 0 ? (\n \n ) : (\n \n )}\n
\n );\n};\n","import React, { Component, ErrorInfo, ReactNode } from 'react';\nimport './AdoptechErrorBoundary.scss';\n\ninterface Props {\n children?: ReactNode;\n errorMessage?: string;\n}\n\ninterface State {\n hasError: boolean;\n}\n\nclass AdoptechErrorBoundary extends Component {\n private defaultMessage = 'Sorry.. there was an error';\n public state: State = {\n hasError: false,\n };\n\n public static getDerivedStateFromError(_: Error): State {\n return { hasError: true };\n }\n\n public componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n console.error('Uncaught error:', error, errorInfo);\n }\n\n public render() {\n if (this.state.hasError) {\n return (\n
\n {this.props.errorMessage || this.defaultMessage}\n
\n );\n }\n\n return this.props.children;\n }\n}\n\nexport default AdoptechErrorBoundary;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { AssessmentPublishedModal } from '../AssessmentPublishedModal/AssessmentPublishedModal';\nimport { CompletedAssessments } from '../CompletedAssessments/CompletedAssessments';\nimport '../AssessmentsSummary/AssessmentsSummary.scss';\nimport { ApplicationState } from '../../types/applicationState';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { PendingAssessments } from '../PendingAssessments/PendingAssessments';\nimport { saveSelectedAssessmentTab } from '../../store/assessments/assessmentsSlice';\nimport { AssessmentTabs } from '../../store/assessments/assessmentsState';\nimport AdoptechErrorBoundary from '../AdoptechErrorBoundary/AdoptechErrorBoundary';\n\nexport const AssessmentsIn: React.FC = () => {\n const dispatch = useDispatch();\n\n const isFetchingAssessments = useSelector(\n (state: ApplicationState) => state.assessments.isFetchingAssessments\n );\n\n useEffect(() => {\n dispatch(saveSelectedAssessmentTab(AssessmentTabs.Incoming));\n }, []);\n\n if (isFetchingAssessments) {\n return ;\n }\n\n return (\n <>\n \n
\n \n \n
\n\n \n
\n \n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { getVendorAssessments } from '../functions/getVendorAssessments';\nimport { selectSortSettings } from './selectSortSettings';\nimport { Grid } from '../types/grid';\nimport { assessmentSort } from '../functions/assessmentSort';\nimport { COMPLETED_TEXT } from '../types/constants';\n\nexport const selectRecentlyCreatedAssessments = createSelector(\n getVendorAssessments,\n selectSortSettings(Grid.RecentlyCreatedAssessments),\n (vendorAssessments, sortSetting) => {\n const clonedVendorAssessments = [...vendorAssessments];\n return clonedVendorAssessments\n .filter(a => a.status !== COMPLETED_TEXT)\n .sort((a, b) => assessmentSort(a, b, sortSetting.columnSort));\n }\n);\n","import { ColumnSort } from '../types/columnSort';\nimport { Assessment } from '../swagger';\nimport { SortDirection } from '../types/sortDirection';\nimport { sort } from './sort';\nimport moment from 'moment';\n\nexport const assessmentSort = (\n a: Assessment,\n b: Assessment,\n columnSort: ColumnSort\n): number => {\n let direction = 1;\n if (columnSort.direction === SortDirection.Ascending) {\n direction = -1;\n }\n\n const typedColumn: keyof Assessment = columnSort.name as keyof Assessment;\n\n switch (typedColumn) {\n case 'updatedAt':\n return sort(moment(a.updatedAt), moment(b.updatedAt), direction);\n default:\n return sort(a[typedColumn], b[typedColumn], direction);\n }\n};\n","import React, { useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n hideDeleteAssessmentModal,\n hideDeleteAssessmentToast,\n} from '../../store/assessments/assessmentsSlice';\nimport { deleteAssessment } from '../../store/assessments/assessmentsThunks';\nimport { AssessmentRecipient } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { AdoptechCheckbox } from '../AdoptechCheckbox/AdoptechCheckbox';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { MessageToast } from '../MessageToast/MessageToast';\nimport './DeleteAssessmentModal.scss';\n\nexport const DeleteAssessmentModal: React.FC = () => {\n const baseCssName = 'deleteAssessmentModal';\n const dispatch = useDispatch();\n\n const assessmentToDelete = useSelector(\n (state: ApplicationState) => state.assessments.assessmentToDelete\n );\n\n const isDeleteAssessmentModalShowing = useSelector(\n (state: ApplicationState) =>\n state.assessments.isDeleteAssessmentModalShowing\n );\n\n const [selectedRecipients, setSelectedRecipients] = useState<\n AssessmentRecipient[]\n >([]);\n\n const showToast = useSelector(\n (state: ApplicationState) => state.assessments.showDeleteAssessmentToast\n );\n\n if (!assessmentToDelete) return null;\n\n const isAllUsersSelected = () =>\n selectedRecipients.length ===\n assessmentToDelete.assessmentRecipients?.length;\n\n const isUserSelected = (user: AssessmentRecipient) =>\n !!selectedRecipients.find(u => u.vendorId === user.vendorId);\n\n const updateAllSelectedUsers = () => {\n if (isAllUsersSelected()) {\n setSelectedRecipients([]);\n } else {\n setSelectedRecipients([...assessmentToDelete.assessmentRecipients]);\n }\n };\n\n const updateSelectedUser = (recipient: AssessmentRecipient) => () => {\n if (selectedRecipients.some(r => r.recipientId === recipient.recipientId)) {\n setSelectedRecipients(\n selectedRecipients.filter(r => r.recipientId !== recipient.recipientId)\n );\n } else {\n setSelectedRecipients([...selectedRecipients, recipient]);\n }\n };\n\n return (\n <>\n dispatch(hideDeleteAssessmentModal())}\n show={isDeleteAssessmentModalShowing}\n >\n Delete Assessment\n \n
\n Deleting{' \"'}\n \n {assessmentToDelete.name}\n {'\" '}\n \n will remove it from the Active table and from all third parties to\n which it has been sent. Select the Third parties you would like to\n notify that this assessment is being deleted.\n
\n
\n \n \n \n \n \n \n \n \n \n {assessmentToDelete.assessmentRecipients?.map(recipient => {\n const { email } = recipient;\n return (\n \n \n \n \n \n );\n })}\n \n \n
\n
\n \n dispatch(hideDeleteAssessmentModal())}>\n Cancel\n \n {\n dispatch(\n deleteAssessment(\n assessmentToDelete.id,\n assessmentToDelete.assessmentRecipients\n )\n );\n dispatch(hideDeleteAssessmentModal());\n }}\n uppercase\n variant={AdoptechButtonVariant.Warning}\n >\n delete\n \n \n \n dispatch(hideDeleteAssessmentToast())}\n show={showToast}\n >\n Assessment has been deleted.\n \n \n );\n};\n","import { push } from 'connected-react-router';\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { selectRecentlyCreatedAssessments } from '../../selectors/selectRecentlyCreatedAssessments';\nimport { Assessment, ShareableType } from '../../swagger';\nimport { Grid } from '../../types/grid';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { SortableTableHeader } from '../SortableTableHeader/SortableTableHeader';\nimport './RecentlyCreatedAssessmentsGrid.scss';\nimport { MeatballMenu } from '../MeatballMenu/MeatballMenu';\nimport { Dropdown } from 'react-bootstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { faUserPlus } from '@fortawesome/pro-light-svg-icons/faUserPlus';\nimport {\n canCreate,\n hasFeature,\n mapShareFeaturesToAccessLevels,\n} from '../../functions/access';\nimport { AccessObject } from '../../types/accessObject';\nimport { showShareModal } from '../../store/vendors/vendorsSlice';\nimport classNames from 'classnames';\nimport { showEditOwnerModal } from '../../store/global/globalSlice';\nimport { OwnerObjectType } from '../../types/OwnerObjectType';\nimport { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\nimport { showDeleteAssessmentModal } from '../../store/assessments/assessmentsSlice';\nimport { faTrash } from '@fortawesome/pro-light-svg-icons/faTrash';\nimport { DeleteAssessmentModal } from '../DeleteAssessmentModal/DeleteAssessmentModal';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\n\nexport const RecentlyCreatedAssessmentsGrid: React.FC = () => {\n const assessments = useSelector(selectRecentlyCreatedAssessments);\n const canCreateAssessments = canCreate(AccessObject.assessments);\n const dispatch = useDispatch();\n\n if (assessments.length === 0) {\n return null;\n }\n\n const handleRowClick = (id: string) => () => {\n dispatch(push(`/r/riskManagement/assessments/summary/${id}`));\n };\n\n return (\n
\n \n \n \n \n \n columnName=\"name\"\n className=\"recentlyCreatedAssessmentsGrid--nameHeader\"\n grid={Grid.RecentlyCreatedAssessments}\n label=\"Name\"\n />\n \n columnName=\"owner\"\n className=\"recentlyCreatedAssessmentsGrid--ownerHeader\"\n grid={Grid.RecentlyCreatedAssessments}\n label=\"Owner\"\n />\n \n columnName=\"updatedAt\"\n className=\"recentlyCreatedAssessmentsGrid--lastModifiedHeader\"\n grid={Grid.RecentlyCreatedAssessments}\n label=\"Last modified\"\n />\n \n Responses\n \n \n\n \n \n \n \n {assessments.map((assessment: Assessment) => {\n return (\n \n \n {assessment.name}\n \n \n canCreateAssessments\n ? dispatch(\n showEditOwnerModal({\n object: assessment,\n type: OwnerObjectType.Assessment,\n })\n )\n : dispatch(\n push(\n `/r/riskManagement/assessments/summary/${assessment.id}`\n )\n )\n }\n >\n \n \n \n {formatShortDate(assessment.updatedAt)}\n \n \n {assessment.responsesReceived}/{assessment.responsesRequested}\n \n \n\n \n \n {\n e.stopPropagation();\n dispatch(\n push(\n `/r/riskManagement/assessments/summary/${assessment.id}`\n )\n );\n }}\n >\n \n View\n \n {\n dispatch(\n showShareModal({\n shareableId: assessment.id,\n shareableType: ShareableType.Assessment,\n accessLevels: mapShareFeaturesToAccessLevels(\n assessment.access.feature\n ),\n relativePath: assessment.relativePath,\n })\n );\n e.stopPropagation();\n }}\n >\n \n Share\n \n {canCreateAssessments && (\n {\n dispatch(\n showEditOwnerModal({\n object: assessment,\n type: OwnerObjectType.Assessment,\n })\n );\n e.stopPropagation();\n }}\n >\n \n Edit owner\n \n )}\n {canCreateAssessments && (\n {\n dispatch(showDeleteAssessmentModal(assessment));\n e.stopPropagation();\n }}\n >\n \n Delete\n \n )}\n \n \n \n );\n })}\n \n \n
\n );\n};\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { selectRecentlyCreatedAssessments } from '../../selectors/selectRecentlyCreatedAssessments';\nimport { Intent, Lozenge } from '../Lozenge/Lozenge';\nimport { NoDataText } from '../NoDataText/NoDataText';\nimport { RecentlyCreatedAssessmentsGrid } from '../RecentlyCreatedAssessmentsGrid/RecentlyCreatedAssessmentsGrid';\nimport './RecentlyCreatedAssessments.scss';\n\nexport const RecentlyCreatedAssessments: React.FC = () => {\n const assessments = useSelector(selectRecentlyCreatedAssessments);\n\n return (\n
\n
\n
\n Active\n \n
\n
\n\n {assessments.length > 0 && (\n \n Assessments that have been generated or are awaiting response.\n \n )}\n\n {assessments.length === 0 && (\n \n )}\n {assessments.length > 0 && }\n
\n );\n};\n","import { faBookAlt } from '@fortawesome/pro-light-svg-icons/faBookAlt';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport { Interweave } from 'interweave';\nimport React from 'react';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { ProgressBar } from '../ProgressBar/ProgressBar';\nimport './EntityCard.scss';\n\nexport interface EntityCardProps {\n enableAnimations?: boolean;\n disableProgress?: boolean;\n hideProgress?: boolean;\n progress?: number;\n title: string;\n icon?: any;\n detailsText: {\n text?: string;\n asHtml?: boolean;\n element?: JSX.Element;\n };\n lastUpdatedAt?: string;\n onCardClick?: (event: React.MouseEvent) => void;\n children?: JSX.Element;\n button?: JSX.Element;\n buttonContainerStyle?: string;\n}\n\nexport const EntityCard: React.FC = ({\n enableAnimations,\n disableProgress,\n hideProgress,\n progress = 0,\n title,\n detailsText,\n lastUpdatedAt,\n onCardClick,\n children,\n icon = faBookAlt,\n button,\n buttonContainerStyle,\n}) => {\n const entityCardClasses = classNames({\n entityCard: true,\n 'entityCard--animated': enableAnimations,\n 'entityCard--pointer': Boolean(onCardClick),\n });\n\n return (\n
\n {!hideProgress &&\n (disableProgress ? (\n
\n ) : (\n
\n \n
\n ))}\n
\n
\n
\n \n
\n
{children}
\n
\n
{title}
\n\n
\n {detailsText.asHtml ? (\n \n ) : (\n detailsText.text || detailsText.element\n )}\n
\n {lastUpdatedAt && (\n
\n
Last update
\n
\n {formatShortDate(lastUpdatedAt)}\n
\n
\n )}\n {button && (\n \n {button}\n
\n )}\n
\n
\n );\n};\n","import React from 'react';\nimport { faFileSearch } from '@fortawesome/pro-light-svg-icons/faFileSearch';\nimport { AssessmentTemplateExtended } from '../../swagger';\nimport { EntityCard } from '../EntityCard/EntityCard';\nimport './AssessmentsTemplateTile.scss';\nimport { AdoptechButton } from '../AdoptechButton/AdoptechButton';\nimport { push } from 'connected-react-router';\nimport { useDispatch } from 'react-redux';\n\ninterface AssessmentTemplateTileProps {\n assessmentTemplate: AssessmentTemplateExtended;\n}\n\nexport const AssessmentTemplateTile: React.FC = ({\n assessmentTemplate,\n}) => {\n const dispatch = useDispatch();\n\n return (\n <>\n {assessmentTemplate && (\n {\n dispatch(\n push(\n `/r/riskManagement/assessments/templates/${assessmentTemplate.id}`\n )\n );\n }}\n >\n Select\n \n }\n buttonContainerStyle=\"assessmentTemplateTile--container\"\n >\n )}\n \n );\n};\n\nexport default AssessmentTemplateTile;\n","import React from 'react';\nimport { AssessmentTemplateExtended } from '../../swagger';\nimport AssessmentTemplateTile from '../AssessmentsTemplateTile/AssessmentsTemplateTile';\n\nimport './AssessmentsTemplateTilesGrid.scss';\n\ninterface AssessmentsTemplateTilesGridProps {\n templates: AssessmentTemplateExtended[];\n}\n\nexport const AssessmentsTemplateTilesGrid: React.FC<\n AssessmentsTemplateTilesGridProps\n> = ({ templates }) => {\n return (\n <>\n {templates && (\n
\n {templates.map(item => {\n return (\n \n );\n })}\n
\n )}\n \n );\n};\nexport default AssessmentsTemplateTilesGrid;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../types/applicationState';\nimport AssessmentsTemplateTilesGrid from '../AssessmentsTemplateTilesGrid/AssessmentsTemplateTilesGrid';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { Intent, Lozenge } from '../Lozenge/Lozenge';\nimport { NoDataText } from '../NoDataText/NoDataText';\nimport './AssessmentsTemplates.scss';\n\nexport const AssessmentsTemplates: React.FC = () => {\n const isFetchingAssessmentTemplates = useSelector(\n (state: ApplicationState) => state.assessments.isFetchingAssessmentTemplates\n );\n const assessmentTemplates = useSelector(\n (state: ApplicationState) => state.assessments.assessmentTemplates\n );\n\n if (isFetchingAssessmentTemplates) {\n return ;\n }\n\n return (\n <>\n
\n
\n
\n Assessment templates\n \n
\n
\n
\n {!assessmentTemplates || assessmentTemplates?.length === 0 ? (\n \n ) : (\n \n )}\n
\n
\n \n );\n};\nexport default AssessmentsTemplates;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { AssessmentPublishedModal } from '../AssessmentPublishedModal/AssessmentPublishedModal';\nimport { CompletedAssessments } from '../CompletedAssessments/CompletedAssessments';\nimport '../AssessmentsSummary/AssessmentsSummary.scss';\nimport { ApplicationState } from '../../types/applicationState';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { RecentlyCreatedAssessments } from '../RecentlyCreatedAssessments/RecentlyCreatedAssessments';\nimport { saveSelectedAssessmentTab } from '../../store/assessments/assessmentsSlice';\nimport { AssessmentTabs } from '../../store/assessments/assessmentsState';\nimport AssessmentsTemplates from '../AssessmentsTemplates/AssessmentsTemplates';\nimport { ErrorBoundary } from '@sentry/react';\nimport { PaymentLandingPageChecker } from '../../features/pricing/PaymentLandingPageChecker/PaymentLandingPageChecker';\n\nexport const AssessmentsOut: React.FC = () => {\n const dispatch = useDispatch();\n\n const isFetchingAssessments = useSelector(\n (state: ApplicationState) => state.assessments.isFetchingAssessments\n );\n\n useEffect(() => {\n dispatch(saveSelectedAssessmentTab(AssessmentTabs.Outgoing));\n }, []);\n\n if (isFetchingAssessments) {\n return ;\n }\n\n return (\n <>\n \n \n An unexpected error has happened while retrieving outgoing\n assessments. Please contact support!\n
\n }\n >\n
\n \n \n \n
\n \n \n \n \n );\n};\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { AssessmentPublishedModal } from '../AssessmentPublishedModal/AssessmentPublishedModal';\nimport './AssessmentsSummary.scss';\nimport { AssessmentTabs } from '../../store/assessments/assessmentsState';\nimport { AssessmentsIn } from '../AssessmentsIn/AssessmentsIn';\nimport { AssessmentsOut } from '../AssessmentsOut/AssessmentsOut';\nimport { selectAssessmentsTab } from '../../selectors/selectAssessmentsTab';\n\nexport const AssessmentsSummary: React.FC = () => {\n const tabToShow = useSelector(selectAssessmentsTab);\n\n return (\n \n {tabToShow == AssessmentTabs.Incoming ? (\n \n ) : (\n \n )}\n \n \n );\n};\n","import React from 'react';\nimport { Accordion } from 'react-bootstrap';\nimport getFilteredQuestionsWithoutTableQuestions from '../../functions/getFilteredQuestionsWithoutTableQuestions';\nimport { AssessmentSection } from '../../swagger';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AssessmentQuestion } from '../AssessmentQuestion/AssessmentQuestion';\nimport './AssessmentSummaryQuestions.scss';\n\ninterface AssessmentQuestionProps {\n sections: AssessmentSection[];\n}\n\nexport const AssessmentSummaryQuestions: React.FC = ({\n sections,\n}) => {\n return (\n
\n \n {sections?.map((section, index) => (\n \n {getFilteredQuestionsWithoutTableQuestions(section)?.map(\n question => (\n \n )\n )}\n
\n \n ))}\n \n
\n );\n};\n","import React, { useState } from 'react';\nimport { Accordion } from 'react-bootstrap';\nimport { useSelector } from 'react-redux';\nimport getFilteredQuestionsWithoutTableQuestions from '../../functions/getFilteredQuestionsWithoutTableQuestions';\nimport { ApplicationState } from '../../types/applicationState';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AssessmentQuestion } from '../AssessmentQuestion/AssessmentQuestion';\nimport { AssessmentQuestionHeader } from '../AssessmentQuestionHeader/AssessmentQuestionHeader';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\n\nexport const AssessmentCompletedResponsesBody: React.FC = () => {\n const [showHistory, setShowHistory] = useState<{ [key: string]: boolean }>(\n {}\n );\n\n const response = useSelector(\n (state: ApplicationState) => state.assessments.currentAssessmentResponse\n );\n\n if (!response) {\n return ;\n }\n\n const handleSectionLoad = (index: string) => () => {\n setShowHistory(s => ({ ...s, [index]: true }));\n };\n\n return (\n \n {response.assessmentSections.map(section => (\n }\n callbackOnOpen={handleSectionLoad(section.title)}\n >\n {getFilteredQuestionsWithoutTableQuestions(section)?.map(question => (\n \n ))}\n
\n \n ))}\n \n );\n};\n","import { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { useState } from 'react';\nimport { Accordion } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { fetchAssessmentResponse } from '../../store/assessments/assessmentsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport { COMPLETED_TEXT } from '../../types/constants';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AssessmentCompletedResponsesBody } from '../AssessmentCompletedResponseBody/AssessmentCompletedResponseBody';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { Panel } from '../Panel/Panel';\nimport './AssessmentCompletedResponses.scss';\n\nexport const AssessmentCompletedResponses: React.FC = () => {\n const [assessmentOpen, setAssessmentOpen] = useState();\n\n const dispatch = useDispatch();\n\n const isFetchingIncomingAssessmentResponses = useSelector(\n (state: ApplicationState) =>\n state.assessments.isFetchingIncomingAssessmentResponses\n );\n const incomingAssessmentResponses = useSelector(\n (state: ApplicationState) => state.assessments.incomingAssessmentResponses\n );\n\n const responses = incomingAssessmentResponses?.filter(\n response => response.status === COMPLETED_TEXT\n );\n\n if (!responses) {\n return null;\n }\n\n const handleAccordionBodyLoad = (i: string) => {\n dispatch(fetchAssessmentResponse(i));\n setAssessmentOpen(i);\n };\n\n return (\n
\n
\n Responses ({responses.length})\n
\n
\n {isFetchingIncomingAssessmentResponses && }\n {!isFetchingIncomingAssessmentResponses && !responses.length && (\n \n
\n No responses\n
\n
\n )}\n \n {responses.map((response, i) => (\n \n
\n {response.vendorName}\n
\n
\n
\n \n
\n
\n {response.assessmentResponseAnswers?.length > 0 &&\n formatShortDate(response.updatedAt)}\n
\n
\n
\n }\n callbackOnOpen={handleAccordionBodyLoad}\n >\n {assessmentOpen === response.id && (\n \n )}\n \n ))}\n \n
\n
\n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AssessmentRecipient, AssessmentResponse } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\nimport { COMPLETED_TEXT } from '../types/constants';\n\nexport const selectAllAssessmentPendingResponses = createSelector(\n (state: ApplicationState) => {\n const currentAssessment = state.assessments.currentAssessment;\n const incomingAssessmentResponses =\n state.assessments.incomingAssessmentResponses;\n return { incomingAssessmentResponses, currentAssessment };\n },\n\n ({\n incomingAssessmentResponses,\n currentAssessment,\n }): (AssessmentRecipient & AssessmentResponse)[] => {\n if (!incomingAssessmentResponses) {\n return null;\n }\n\n return currentAssessment.assessmentRecipients\n .map(response => ({\n ...response,\n ...incomingAssessmentResponses.find(\n i => i.vendorId === response.vendorId\n ),\n }))\n .filter(\n response => !response.status || response.status !== COMPLETED_TEXT\n );\n }\n);\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { hideConfirmDeleteAssessmentResponseModal } from '../../store/assessments/assessmentsSlice';\nimport {\n deleteAssessmentRecipient,\n deleteAssessmentResponse,\n} from '../../store/assessments/assessmentsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './ConfirmDeleteAssessmentResponseModal.scss';\n\nexport const ConfirmDeleteAssessmentResponseModal: React.FC = () => {\n const dispatch = useDispatch();\n\n const {\n assessmentResponseForDeletion,\n currentAssessment,\n isDeletingAssessmentRecipient,\n isDeletingAssessmentResponse,\n isShowingConfirmDeleteAssessmentResponse,\n } = useSelector((state: ApplicationState) => state.assessments);\n\n const handleDelete = () => {\n if (assessmentResponseForDeletion.assessmentResponseId) {\n dispatch(\n deleteAssessmentResponse(\n assessmentResponseForDeletion.assessmentResponseId\n )\n );\n } else {\n dispatch(\n deleteAssessmentRecipient(\n currentAssessment.id,\n assessmentResponseForDeletion.recipientId\n )\n );\n }\n };\n\n return (\n dispatch(hideConfirmDeleteAssessmentResponseModal())}\n show={isShowingConfirmDeleteAssessmentResponse}\n >\n Delete Responder Assessment\n \n
\n Deleting the assessment from this Responder will invalidate the email\n link sent to them or, if already activated, will delete the assessment\n from their portal. This cannot be undone. Select DELETE to remove this\n Responder or Cancel to go back.\n
\n
\n \n dispatch(hideConfirmDeleteAssessmentResponseModal())}\n >\n Cancel\n \n \n DELETE\n \n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { hideResendAssessmentConfirmationModal } from '../../store/assessments/assessmentsSlice';\nimport { resendAssessment } from '../../store/assessments/assessmentsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AdoptechTextArea } from '../AdoptechTextArea/AdoptechTextArea';\nimport './ResendAssessmentConfirmationModal.scss';\n\nexport const ResendAssessmentConfirmationModal: React.FC = () => {\n const dispatch = useDispatch();\n const [optionalMessage, setOptionalMessage] = useState('');\n\n const {\n isResendingAssessment,\n isShowingResendAssessmentConfirmationModal,\n resendRecipient,\n } = useSelector((state: ApplicationState) => state.assessments);\n\n useEffect(() => {\n setOptionalMessage('');\n }, [isShowingResendAssessmentConfirmationModal]);\n\n const handleMessageChange = (e: React.ChangeEvent) => {\n setOptionalMessage(e.currentTarget.value);\n };\n\n return (\n dispatch(hideResendAssessmentConfirmationModal())}\n show={isShowingResendAssessmentConfirmationModal}\n >\n Send a reminder\n \n
\n Click 'Send' below to send an email reminder to:\n
\n {resendRecipient?.vendorName && (\n
\n {resendRecipient.vendorName}\n
\n )}\n
\n {resendRecipient?.email}\n
\n
\n Add optional message\n
\n \n
\n \n dispatch(hideResendAssessmentConfirmationModal())}\n >\n Cancel\n \n \n dispatch(resendAssessment({ message: optionalMessage }))\n }\n variant={AdoptechButtonVariant.Primary}\n >\n Send\n \n \n \n );\n};\n","import { faEnvelope } from '@fortawesome/pro-light-svg-icons/faEnvelope';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectAllAssessmentPendingResponses } from '../../selectors/selectAllAssessmentPendingResponses';\nimport {\n hideAssessmentResentToast,\n showConfirmDeleteAssessmentResponseModal,\n showResendAssessmentConfirmationModal,\n} from '../../store/assessments/assessmentsSlice';\nimport { AssessmentRecipient, AssessmentResponse } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport { AdoptechButton } from '../AdoptechButton/AdoptechButton';\nimport { ConfirmDeleteAssessmentResponseModal } from '../ConfirmDeleteAssessmentResponseModal/ConfirmDeleteAssessmentResponseModal';\nimport { IconButton } from '../IconButton/IconButton';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { MessageToast } from '../MessageToast/MessageToast';\nimport { Panel } from '../Panel/Panel';\nimport { ResendAssessmentConfirmationModal } from '../ResendAssessmentConfirmationModal/ResendAssessmentConfirmationModal';\nimport './AssessmentPendingResponses.scss';\n\nexport const AssessmentPendingResponses: React.FC = () => {\n const dispatch = useDispatch();\n\n const responses = useSelector(selectAllAssessmentPendingResponses);\n const isAssessmentResentToastShowing = useSelector(\n (state: ApplicationState) =>\n state.assessments.isAssessmentResentToastShowing\n );\n if (!responses) {\n return ;\n }\n\n const handleReminderClick =\n (response: AssessmentRecipient & AssessmentResponse) => () => {\n dispatch(showResendAssessmentConfirmationModal(response));\n };\n\n return (\n \n
\n
\n
\n Pending ({responses.length})\n
\n
\n
\n {!responses.length && (\n \n
\n No responses\n
\n
\n )}\n {responses.map(response => {\n const stateIconClasses = classNames({\n 'assessmentPendingResponses--stateIcon': true,\n 'assessmentPendingResponses--stateIcon-orange':\n response.assessmentResponseAnswers?.length > 0,\n });\n\n return (\n \n \n
\n
\n {response.vendorName || response.email}\n
\n
\n
\n \n \n Reminder\n \n {\n dispatch(\n showConfirmDeleteAssessmentResponseModal(response)\n );\n }}\n tooltip=\"Delete\"\n />\n
\n
\n
\n
\n );\n })}\n
\n
\n\n dispatch(hideAssessmentResentToast())}\n show={isAssessmentResentToastShowing}\n showClose\n >\n Your reminder has been sent.\n \n\n \n \n
\n );\n};\n","import React from 'react';\nimport { AssessmentCompletedResponses } from '../AssessmentCompletedResponses/AssessmentCompletedResponses';\nimport { AssessmentPendingResponses } from '../AssessmentPendingResponses/AssessmentPendingResponses';\nimport './AssessmentSummaryResponses.scss';\n\nexport const AssessmentSummaryResponses: React.FC = () => {\n return (\n
\n \n \n
\n );\n};\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { backFromSendAssessmentConfirmationModal } from '../../store/assessments/assessmentsSlice';\nimport { sendAssessment } from '../../store/assessments/assessmentsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './SendAssessmentConfirmationModal.scss';\n\nexport const SendAssessmentConfirmationModal: React.FC = () => {\n const {\n currentAssessment,\n isSendingAssessment,\n isShowingSendAssessmentConfirmationModal,\n sendAssessmentDetails,\n } = useSelector((state: ApplicationState) => state.assessments);\n\n const dispatch = useDispatch();\n\n return (\n \n Confirmation required\n \n
\n Please confirm you wish to send the following assessment out to{' '}\n {sendAssessmentDetails ? sendAssessmentDetails.count : ''} recipients:\n
\n
\n {currentAssessment?.name}\n
\n
\n \n dispatch(backFromSendAssessmentConfirmationModal())}\n >\n Back\n \n dispatch(sendAssessment())}\n variant={AdoptechButtonVariant.Primary}\n >\n CONFIRM\n \n \n \n );\n};\n","import { api } from '../api/api';\nimport { EmailArray } from '../swagger';\n\nexport const checkEmailList = async (\n emailAddressList: string\n): Promise => {\n return await api().parseEmailsPost({\n email: { text: emailAddressList },\n });\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { checkEmailList } from '../../functions/checkEmailList';\nimport {\n confirmSendAssessment,\n generateAndSendAssessment,\n hideSendAssessmentModal,\n} from '../../store/assessments/assessmentsSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AdoptechTextArea } from '../AdoptechTextArea/AdoptechTextArea';\nimport './SendAssessmentModal.scss';\nimport { SendAssessmentMode } from '../../store/assessments/assessmentsState';\nimport { generateAssessmentFromTemplate } from '../../store/assessments/assessmentsThunks';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport { AdoptechDatePicker } from '../AdoptechDatePicker/AdoptechDatePicker';\n\nexport const SendAssessmentModal: React.FC = () => {\n const emailErrorMessage =\n 'Please enter a list of valid email addresses, separated by commas, semi-colons or new lines only.';\n\n const toRef = useRef();\n const dispatch = useDispatch();\n const currentVendor = useSelector(selectCurrentVendor);\n const clearSendAssessmentDetails = useSelector(\n (state: ApplicationState) => state.assessments.clearSendAssessmentDetails\n );\n const currentAssessment = useSelector(\n (state: ApplicationState) => state.assessments.currentAssessment\n );\n const currentAssessmentTemplate = useSelector(\n (state: ApplicationState) => state.assessments.currentAssessmentTemplate\n );\n const generateAssessmentName = useSelector(\n (state: ApplicationState) => state.assessments.generateAssessmentName\n );\n const sendAssessmentMode = useSelector(\n (state: ApplicationState) => state.assessments.sendAssessmentMode\n );\n\n const [errorMessage, setErrorMessage] = useState('');\n const [optionalMessage, setOptionalMessage] = useState('');\n const [to, setTo] = useState('');\n const [toError, setToError] = useState(false);\n const [timeoutHandle, setTimeoutHandle] = useState();\n const [selectedDate, setSelectedDate] = useState(undefined);\n\n useEffect(() => {\n if (!clearSendAssessmentDetails) {\n return;\n }\n\n setErrorMessage('');\n setOptionalMessage('');\n setTo('');\n setToError(false);\n }, [clearSendAssessmentDetails]);\n\n const toValidate = (sendTo: string) => {\n clearTimeout(timeoutHandle);\n setTimeoutHandle(\n setTimeout(async () => {\n const emails = await checkEmailList(sendTo);\n setToError(emails.invalid.length > 0);\n if (emails.invalid.length > 0) {\n setErrorMessage(emailErrorMessage);\n } else {\n setErrorMessage('');\n }\n }, 1000)\n );\n };\n\n const getDateString = (date: Date) => {\n return date ? new Intl.DateTimeFormat().format(date) : undefined;\n };\n\n const handleSend = async () => {\n if (to === '') {\n setErrorMessage(emailErrorMessage);\n return;\n }\n\n const emails = await checkEmailList(to);\n\n if (emails.invalid.length === 0) {\n setErrorMessage('');\n if (sendAssessmentMode === SendAssessmentMode.Generate) {\n dispatch(\n generateAndSendAssessment({\n count: emails.addresses.length,\n id: currentAssessmentTemplate.id,\n optionalMessage,\n responseDeadline: getDateString(selectedDate),\n to,\n })\n );\n dispatch(\n generateAssessmentFromTemplate(\n currentVendor.id,\n currentAssessmentTemplate.id,\n generateAssessmentName\n )\n );\n } else {\n dispatch(\n confirmSendAssessment({\n count: emails.addresses.length,\n id: currentAssessment.id,\n optionalMessage,\n responseDeadline: getDateString(selectedDate),\n to,\n })\n );\n }\n }\n };\n\n useEffect(() => {\n if (toRef.current) {\n toRef.current.focus();\n }\n }, []);\n\n return (\n \n dispatch(hideSendAssessmentModal())}\n show\n >\n \n {sendAssessmentMode === SendAssessmentMode.Generate\n ? 'Generate'\n : 'Send'}{' '}\n assessment\n \n \n
\n Add email addresses below to send out this assessment (one email\n recipient per company). Recipients will be sent an invitation to\n complete the assessment.\n
\n {errorMessage !== '' && (\n
\n {errorMessage}\n
\n )}\n
\n
\n Add recipients (separated by comma)\n
\n {\n setTo(e.currentTarget.value);\n toValidate(e.currentTarget.value);\n }}\n ref={toRef}\n rows={4}\n value={to}\n />\n
\n Add message (optional)\n
\n setOptionalMessage(e.currentTarget.value)}\n rows={4}\n value={optionalMessage}\n />\n setSelectedDate(date)}\n labelStyle=\"sendAssessmentModal--label\"\n />\n
\n
\n \n dispatch(hideSendAssessmentModal())}>\n Cancel\n \n handleSend()}\n variant={AdoptechButtonVariant.Primary}\n >\n SEND\n \n \n \n
\n );\n};\n","import { faAngleLeft } from '@fortawesome/pro-light-svg-icons/faAngleLeft';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport { push } from 'connected-react-router';\nimport React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Route, Switch, useParams } from 'react-router';\nimport { hideAssessmentSentToast } from '../../store/assessments/assessmentsSlice';\nimport {\n fetchAssessment,\n fetchIncomingAssessmentResponses,\n} from '../../store/assessments/assessmentsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport { AssessmentSummaryQuestions } from '../AssessmentSummaryQuestions/AssessmentSummaryQuestions';\nimport { AssessmentSummaryResponses } from '../AssessmentSummaryResponses/AssessmentSummaryResponses';\nimport {\n ActionType,\n AssessmentSummaryTile,\n} from '../AssessmentSummaryTile/AssessmentSummaryTile';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { Intent, Lozenge } from '../Lozenge/Lozenge';\nimport { MessageToast } from '../MessageToast/MessageToast';\nimport { SendAssessmentConfirmationModal } from '../SendAssessmentConfirmationModal/SendAssessmentConfirmationModal';\nimport { SendAssessmentModal } from '../SendAssessmentModal/SendAssessmentModal';\nimport './AssessmentSummary.scss';\nimport { useQueryParams } from '../../hooks/useQueryParams';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport { usePrevious } from 'react-use';\nimport { COMPLETED_TEXT } from '../../types/constants';\n\nexport const AssessmentSummary: React.FC = () => {\n const params = useParams() as { id: string };\n const searchVendorId = useQueryParams().get('vendor_id');\n const assessmentId = params.id;\n\n const currentVendor = useSelector(selectCurrentVendor);\n const assessmentResponses = useSelector(\n (state: ApplicationState) => state.assessments.assessmentResponses\n );\n\n const dispatch = useDispatch();\n\n const previousVendorRef = usePrevious(currentVendor);\n useEffect(() => {\n if (previousVendorRef && previousVendorRef.id !== currentVendor.id) {\n dispatch(push('/r/riskManagement/assessments/summary'));\n }\n }, [currentVendor]);\n\n useEffect(() => {\n // If we have a different vendor ID as a search param on the URL then it's likely we have got here from\n // an invitation to complete an assessment. See if we have a match in assessment responses and redirect there\n // if one is found.\n if (searchVendorId && searchVendorId !== currentVendor.id) {\n const matchingAssessmentResponse = assessmentResponses.find(\n ar => ar.assessmentId === assessmentId\n );\n if (!matchingAssessmentResponse) return;\n dispatch(\n push(\n `/r/riskManagement/assessments/response/${matchingAssessmentResponse.id}`\n )\n );\n return;\n }\n\n if (!assessmentId) {\n dispatch(push('/r/riskManagement/assessments/summary'));\n } else {\n dispatch(fetchAssessment(assessmentId));\n dispatch(fetchIncomingAssessmentResponses(assessmentId));\n }\n }, [assessmentResponses]);\n\n const currentAssessment = useSelector(\n (state: ApplicationState) => state.assessments.currentAssessment\n );\n\n const isAssessmentSentToastShowing = useSelector(\n (state: ApplicationState) => state.assessments.isAssessmentSentToastShowing\n );\n\n const incomingAssessmentResponses = useSelector(\n (state: ApplicationState) => state.assessments.incomingAssessmentResponses\n );\n\n const isShowingSendAssessmentModal = useSelector(\n (state: ApplicationState) => state.assessments.isShowingSendAssessmentModal\n );\n\n const completedResponses = incomingAssessmentResponses?.filter(\n response => response.status === COMPLETED_TEXT\n );\n\n const route = useSelector(\n (state: ApplicationState) => state.router.location.pathname\n );\n\n if (!assessmentId) {\n return;\n }\n\n const questionsTabClasses = classNames({\n 'assessmentSummary--tabs--tab': true,\n selected: route === `/r/riskManagement/assessments/summary/${assessmentId}`,\n });\n\n const responsesTabClasses = classNames({\n 'assessmentSummary--tabs--tab': true,\n selected:\n route ===\n `/r/riskManagement/assessments/summary/${assessmentId}/responses`,\n });\n\n if (!currentAssessment) {\n return ;\n }\n\n return (\n <>\n
\n
\n {\n dispatch(push('/r/riskManagement/assessments/summary'));\n }}\n >\n \n
\n
\n \n
\n
\n
\n {\n dispatch(\n push(`/r/riskManagement/assessments/summary/${assessmentId}`)\n );\n }}\n >\n Questions\n
\n {\n dispatch(\n push(\n `/r/riskManagement/assessments/summary/${assessmentId}/responses`\n )\n );\n }}\n >\n Responses\n \n \n \n
\n \n \n (\n \n )}\n />\n \n \n \n\n dispatch(hideAssessmentSentToast())}\n show={isAssessmentSentToastShowing}\n showClose\n >\n The assessment has been sent successfully.\n \n \n {isShowingSendAssessmentModal && }\n \n );\n};\n","import AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport React, { useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport './GenerateAssessmentModal.scss';\nimport { useDispatch } from 'react-redux';\nimport { generateAssessment } from '../../store/assessments/assessmentsSlice';\n\ninterface GenerateAssessmentModalProps {\n onHide: () => void;\n show: boolean;\n templateName: string;\n}\n\nconst GenerateAssessmentModal: React.FC<\n GenerateAssessmentModalProps\n> = props => {\n const [assessmentName, setAssessmentName] = useState(props.templateName);\n\n const dispatch = useDispatch();\n\n return (\n \n Generate assessment\n \n
\n Please give your assessment a name\n
\n
\n
Assessment name
\n setAssessmentName(e.currentTarget.value)}\n value={assessmentName}\n type=\"text\"\n />\n
\n
\n \n Back\n {\n dispatch(generateAssessment(assessmentName));\n props.onHide();\n }}\n uppercase\n variant={AdoptechButtonVariant.Primary}\n >\n Next\n \n \n
\n );\n};\n\nexport default GenerateAssessmentModal;\n","import React, { useState } from 'react';\nimport './OutgoingAssessmentHeader.scss';\nimport { Panel } from '../Panel/Panel';\nimport { AssessmentTemplateExtended } from '../../swagger';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport GenerateAssessmentModal from '../GenerateAssessmentModal/GenerateAssessmentModal';\n\ninterface OutgoingAssessmentHeaderProps {\n assessment: AssessmentTemplateExtended;\n}\n\nconst OutgoingAssessmentHeader: React.FC<\n OutgoingAssessmentHeaderProps\n> = props => {\n const [generateAssessmentModalShowing, setGenerateAssessmentModalShowing] =\n useState(false);\n\n return (\n <>\n
\n \n
\n
\n
\n Template name\n
\n
\n {props.assessment.name}\n
\n
\n
\n setGenerateAssessmentModalShowing(true)}\n uppercase\n variant={AdoptechButtonVariant.SuccessFilled}\n >\n Generate\n \n
\n
\n
\n
\n {generateAssessmentModalShowing && (\n setGenerateAssessmentModalShowing(false)}\n show={generateAssessmentModalShowing}\n templateName={props.assessment.name}\n />\n )}\n \n );\n};\n\nexport default OutgoingAssessmentHeader;\n","import { faAngleLeft } from '@fortawesome/pro-light-svg-icons/faAngleLeft';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router';\nimport { hideAssessmentSentToast } from '../../store/assessments/assessmentsSlice';\nimport { fetchAssessmentTemplate } from '../../store/assessments/assessmentsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport { AssessmentSummaryQuestions } from '../AssessmentSummaryQuestions/AssessmentSummaryQuestions';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { MessageToast } from '../MessageToast/MessageToast';\nimport { SendAssessmentConfirmationModal } from '../SendAssessmentConfirmationModal/SendAssessmentConfirmationModal';\nimport { SendAssessmentModal } from '../SendAssessmentModal/SendAssessmentModal';\nimport './AssessmentTemplateSummary.scss';\nimport OutgoingAssessmentHeader from '../OutgoingAssessmentHeader/OutgoingAssessmentHeader';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport { usePrevious } from 'react-use';\n\nexport const AssessmentTemplateSummary: React.FC = () => {\n const dispatch = useDispatch();\n const params = useParams() as { id: string };\n const assessmentTemplateId = params.id;\n const baseCss = 'assessmentTemplateSummary';\n const toastMessage =\n 'The assessment has been successfully generated and sent.';\n const toBackRoute = '/r/riskManagement/assessments/outgoing';\n\n useEffect(() => {\n if (!assessmentTemplateId) {\n dispatch(push(toBackRoute));\n } else {\n dispatch(fetchAssessmentTemplate(params.id));\n }\n }, []);\n\n const isAssessmentSentToastShowing = useSelector(\n (state: ApplicationState) => state.assessments.isAssessmentSentToastShowing\n );\n const isShowingSendAssessmentModal = useSelector(\n (state: ApplicationState) => state.assessments.isShowingSendAssessmentModal\n );\n const route = useSelector(\n (state: ApplicationState) => state.router.location.pathname\n );\n const currentAssessmentTemplate = useSelector(\n (state: ApplicationState) => state.assessments.currentAssessmentTemplate\n );\n\n const generationInProgress = useSelector(\n (state: ApplicationState) =>\n state.assessments.assessmentGenerationInProgress\n );\n\n const currentVendor = useSelector(selectCurrentVendor);\n\n const previousVendorRef = usePrevious(currentVendor);\n useEffect(() => {\n if (previousVendorRef && previousVendorRef.id !== currentVendor.id) {\n dispatch(push('/r/riskManagement/assessments'));\n }\n }, [currentVendor]);\n\n if (!assessmentTemplateId) {\n return;\n }\n\n if (!currentAssessmentTemplate || generationInProgress) {\n return ;\n }\n\n return (\n <>\n
\n
\n {\n dispatch(push(toBackRoute));\n }}\n >\n \n
\n \n
\n
\n
\n Questions\n
\n
\n Responses\n \n
\n
\n\n \n \n\n {\n dispatch(hideAssessmentSentToast());\n dispatch(push(toBackRoute));\n }}\n show={isAssessmentSentToastShowing}\n showClose\n >\n {toastMessage}\n \n \n {isShowingSendAssessmentModal && }\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Redirect, Route, Switch } from 'react-router';\nimport { ApplicationState } from '../../types/applicationState';\nimport { Assessment } from '../Assessment/Assessment';\nimport { AssessmentsIn } from '../AssessmentsIn/AssessmentsIn';\nimport { AssessmentsOut } from '../AssessmentsOut/AssessmentsOut';\nimport { AssessmentsSummary } from '../AssessmentsSummary/AssessmentsSummary';\nimport { AssessmentSummary } from '../AssessmentSummary/AssessmentSummary';\nimport { push } from 'connected-react-router';\nimport {\n fetchAssessments,\n fetchAssessmentTemplates,\n} from '../../store/assessments/assessmentsThunks';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport { AssessmentTemplateSummary } from '../AssessmentTemplateSummary/AssessmentTemplateSummary';\nimport { welcomeRoute } from '../Routes/Routes';\n\nexport const AssessmentsPage: React.FC = () => {\n const { isInitialised } = useSelector(\n (state: ApplicationState) => state.global\n );\n\n const { vendors } = useSelector((state: ApplicationState) => state.vendors);\n\n const currentVendor = useSelector(selectCurrentVendor);\n\n const dispatch = useDispatch();\n\n // After a vendor has been set up, if we find an assessment response that matches the search, we should redirect to it.\n useEffect(() => {\n if (!isInitialised) return;\n\n // For \"assessment response invite link\" vendor is required\n if (!currentVendor) {\n dispatch(push(welcomeRoute));\n return;\n }\n\n dispatch(fetchAssessments(currentVendor.id));\n dispatch(fetchAssessmentTemplates(currentVendor?.id));\n }, [isInitialised, currentVendor]);\n\n if (!isInitialised) return null;\n if (!vendors || vendors.length === 0) return null;\n\n return (\n
\n \n \n \n \n \n \n \n \n \n
\n );\n};\n","import assessmentTour1 from 'images/assessmentTour1.png';\nimport assessmentTour2 from 'images/assessmentTour2.png';\nimport React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { clearAssessmentHelp } from '../../store/global/globalSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './AssessmentTour.scss';\n\nexport const AssessmentTour: React.FC = () => {\n const dispatch = useDispatch();\n const [page, setPage] = useState(1);\n\n const showAssessmentHelp = useSelector(\n (state: ApplicationState) => state.global.showAssessmentHelp\n );\n\n useEffect(() => {\n setPage(1);\n }, [showAssessmentHelp]);\n\n const goToAssessment = () => {\n dispatch(clearAssessmentHelp());\n };\n\n const next = () => {\n setPage(2);\n };\n const back = () => {\n setPage(1);\n };\n\n return (\n dispatch(clearAssessmentHelp())}\n >\n \n Completing the assessment\n \n \n
\n {page === 1 ? (\n \n

\n Please complete all the sections and when finished, click{' '}\n PUBLISH to submit your answers.\n

\n
\n ) : (\n \n

\n To speed up the completion of this assessment we pre-populated\n some answers with information from your company profile and\n previously completed forms.\n

\n

\n Click CONFIRM to accept your previous answer, click on{' '}\n LIBRARY to review your full answer history or simply edit\n to enter a new answer.\n

\n
\n )}\n
\n
\n {page === 1 ? (\n \n ) : (\n \n )}\n
\n
\n \n {page === 2 ? (\n Back\n ) : (\n
\n )}\n\n \n {page === 1 ? 'Next' : 'Get started'}\n \n \n \n );\n};\n","import { faCheck } from '@fortawesome/pro-regular-svg-icons/faCheck';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React from 'react';\nimport './AdoptechRoundCheckbox.scss';\n\ninterface AdoptechRoundCheckboxProps {\n checked: boolean;\n className?: string;\n id: string;\n label: string;\n onChange?: (e?: React.SyntheticEvent) => void;\n disabled?: boolean;\n}\n\nexport const AdoptechRoundCheckbox: React.FC<\n AdoptechRoundCheckboxProps\n> = props => {\n const classes = classNames(\n {\n adoptechRoundCheckbox: true,\n 'adoptechRoundCheckbox--checked': props.checked,\n 'adoptechRoundCheckbox--disabled': props.disabled,\n },\n props.className\n );\n\n return (\n
\n \n
\n );\n};\n","import { Interweave } from 'interweave';\nimport React, { useEffect, useState } from 'react';\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\nimport { ChecklistItem } from '../../swagger';\nimport { AdoptechRoundCheckbox } from '../AdoptechRoundCheckbox/AdoptechRoundCheckbox';\nimport { AdoptechTextArea } from '../AdoptechTextArea/AdoptechTextArea';\nimport { LastUpdatedInfo } from '../LastUpdatedInfo/LastUpdatedInfo';\nimport { ToggleSwitch } from '../ToggleSwitch/ToggleSwitch';\nimport './ChecklistGroupItem.scss';\n\ninterface ChecklistGroupItemProps {\n item: ChecklistItem;\n onCheckedChanged: (value: boolean) => void;\n onNotApplicableChanged: (value: boolean) => void;\n onNoteChanged: (note: string) => void;\n readonly?: boolean;\n}\n\nexport const ChecklistGroupItem: React.FC = ({\n item,\n onCheckedChanged,\n onNotApplicableChanged,\n onNoteChanged,\n readonly,\n}) => {\n const [checked, setChecked] = useState(item.answerValue);\n const [notApplicable, setNa] = useState(item.answerNotApplicable);\n const [note, setNote] = useState(item.answerNote);\n const baseCss = 'checklistGroupItem';\n\n useEffect(() => {\n setChecked(item.answerValue);\n }, [item.answerValue]);\n\n useEffect(() => {\n setNa(item.answerNotApplicable);\n }, [item.answerNotApplicable]);\n\n const handleChecked = () => {\n onCheckedChanged(!checked);\n setChecked(c => !c);\n };\n\n const handleNa = () => {\n setNa(!notApplicable);\n onNotApplicableChanged(!notApplicable);\n };\n\n const handleNoteChanged = (event: React.ChangeEvent) => {\n const { value } = event.target;\n setNote(value);\n };\n\n const handleNoteSubmit = (event: React.ChangeEvent) => {\n const { value } = event.target;\n onNoteChanged(value);\n };\n\n const lastUpdatedInfo = {\n updatedAt: item.answerUpdatedAt,\n updatedBy: item.answerUserName,\n };\n\n return (\n
\n
\n
\n \n
\n \n
\n \n
\n \n
\n
\n \n {notApplicable\n ? 'Slide to include clause'\n : 'Slide to exclude clause'}\n \n }\n placement=\"left\"\n >\n
\n \n
\n \n
\n \n
\n
\n
\n );\n};\n","import { faUserPlus } from '@fortawesome/pro-light-svg-icons/faUserPlus';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport {\n ChecklistExtended,\n ChecklistTemplateExtended,\n ShareableType,\n} from '../../swagger/models';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { Panel } from '../Panel/Panel';\nimport './ChecklistSummaryTile.scss';\nimport { showShareModal } from '../../store/vendors/vendorsSlice';\nimport {\n hasFeature,\n mapShareFeaturesToAccessLevels,\n} from '../../functions/access';\nimport { AccessObject } from '../../types/accessObject';\n\ninterface ChecklistSummaryTileProps {\n checklist: ChecklistExtended | ChecklistTemplateExtended;\n isTemplate?: boolean;\n}\n\nexport const ChecklistSummaryTile: React.FC = ({\n checklist,\n isTemplate,\n}) => {\n const dispatch = useDispatch();\n\n if (!checklist) {\n return null;\n }\n\n const handleChecklistShare = () => {\n dispatch(\n showShareModal({\n shareableId: checklist.id,\n shareableType: ShareableType.Checklist,\n accessLevels: mapShareFeaturesToAccessLevels(checklist.access.feature),\n relativePath: (checklist as ChecklistExtended).relativePath,\n })\n );\n };\n\n return (\n \n
\n
\n
\n
\n
\n
\n Checklist\n
\n
\n {checklist.name}\n
\n
\n\n
\n
\n Last updated at\n
\n
\n {formatShortDate(checklist.updatedAt)}\n
\n
\n
\n
\n {!isTemplate && (\n \n \n Share\n \n )}\n \n dispatch(push('/r/companyInformation/checklists'))\n }\n variant={AdoptechButtonVariant.Primary}\n >\n CLOSE\n \n
\n
\n
\n
\n
\n \n );\n};\n","import { faAngleLeft } from '@fortawesome/pro-regular-svg-icons/faAngleLeft';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport { Interweave } from 'interweave';\nimport React, { useEffect } from 'react';\nimport { Accordion } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router';\nimport { getProgressPercentage } from '../../functions/getPercentage';\nimport {\n fetchChecklistDetails,\n updateChecklistItem,\n} from '../../store/checklists/checklistsThunks';\nimport { ChecklistItem, ChecklistItemsGroups } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport { COMPLETED_TEXT } from '../../types/constants';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { ChecklistGroupItem } from '../ChecklistGroupItem/ChecklistGroupItem';\nimport { ChecklistSummaryTile } from '../ChecklistSummaryTile/ChecklistSummaryTile';\nimport { ProgressBar } from '../ProgressBar/ProgressBar';\nimport './Checklist.scss';\n\nexport const Checklist: React.FC = () => {\n const dispatch = useDispatch();\n\n const { checklistId } = useParams() as { checklistId: string };\n\n useEffect(() => {\n dispatch(fetchChecklistDetails({ checklistId }));\n }, [checklistId]);\n\n const checklist = useSelector((state: ApplicationState) =>\n state.checklists.checklists.find(chList => chList.id === checklistId)\n );\n\n const readonly = checklist && checklist.status === COMPLETED_TEXT;\n\n const handleCheckedChanged =\n (item: ChecklistItem, group: ChecklistItemsGroups) => (value: boolean) => {\n dispatch(\n updateChecklistItem({\n checklistSurveyId: checklist.survey.id,\n checklistId: checklist.id,\n questionGroupId: group.questionGroupId,\n item: { ...item, answerValue: value },\n })\n );\n };\n const handleNotApplicableChanged =\n (item: ChecklistItem, group: ChecklistItemsGroups) => (value: boolean) => {\n dispatch(\n updateChecklistItem({\n checklistSurveyId: checklist.survey.id,\n checklistId: checklist.id,\n questionGroupId: group.questionGroupId,\n item: { ...item, answerNotApplicable: value },\n })\n );\n };\n const handleNoteChanged =\n (item: ChecklistItem, group: ChecklistItemsGroups) => (note: string) => {\n dispatch(\n updateChecklistItem({\n checklistSurveyId: checklist.survey.id,\n checklistId: checklist.id,\n questionGroupId: group.questionGroupId,\n item: { ...item, answerNote: note },\n })\n );\n };\n\n if (!checklist) {\n return null;\n }\n\n return (\n
\n
\n {\n dispatch(push('/r/companyInformation/checklists'));\n }}\n >\n \n
\n
\n \n
\n
\n {checklist.descriptionAsHtml && (\n
\n \n
\n )}\n
\n \n {checklist?.itemsGroups?.map(group => (\n \n
{group.questionGroupName}
\n
\n
\n {`${getProgressPercentage(group.progress).toFixed(0)}%`}\n
\n
\n \n
\n
\n
\n }\n nested\n nestedVerticalOffset={-245}\n headerOffset={115}\n >\n {group.items.map(item => (\n \n ))}\n \n ))}\n \n
\n
\n );\n};\n","import { ChecklistItemsGroups } from '../swagger';\n\nexport const calculateChecklistProgress = (\n itemsGroups: ChecklistItemsGroups[]\n): number => {\n if (itemsGroups.length === 0) return 0;\n const progress = itemsGroups.reduce(\n (accumulator: number, item: ChecklistItemsGroups) =>\n item.progress.percents + accumulator,\n 0\n );\n return (progress * 100) / itemsGroups.length;\n};\n","import { ChecklistCheckable, ChecklistCheckableTypeEnum } from '../swagger';\n\nexport const getChecklistAssociatedUsername = (\n checkable: ChecklistCheckable\n): string => {\n if (checkable && checkable.type === ChecklistCheckableTypeEnum.VendorUser) {\n return checkable.displayName;\n }\n return '';\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { Checklist } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\n\nexport const selectActiveChecklists = createSelector(\n (state: ApplicationState) => state.checklists.checklists,\n checklists =>\n checklists.filter(\n (list: Checklist) => list.status === 'in_progress' && list.visibleInLists\n )\n);\n","import { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { faTimesSquare } from '@fortawesome/pro-light-svg-icons/faTimesSquare';\nimport { faUserPlus } from '@fortawesome/pro-light-svg-icons/faUserPlus';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport React, { useState } from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { mapShareFeaturesToAccessLevels } from '../../functions/access';\nimport { getChecklistProgress } from '../../functions/getChecklistProgress';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { getChecklistAssociatedUsername } from '../../functions/getChecklistAssociatedUsername';\nimport { selectActiveChecklists } from '../../selectors/selectActiveChecklists';\nimport { updateChecklistStatus } from '../../store/checklists/checklistsThunks';\nimport { showShareModal } from '../../store/vendors/vendorsSlice';\nimport {\n ChecklistChangedStatusPayloadStatusEnum,\n ChecklistExtended,\n ShareableType,\n VendorDocument,\n} from '../../swagger';\nimport { Grid } from '../../types/grid';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { GenericModal } from '../GenericModal/GenericModal';\nimport { Lozenge } from '../Lozenge/Lozenge';\nimport { MeatballMenu } from '../MeatballMenu/MeatballMenu';\nimport { NoDataText } from '../NoDataText/NoDataText';\nimport { SortableTableHeader } from '../SortableTableHeader/SortableTableHeader';\nimport './ActiveChecklists.scss';\n\nexport const ActiveChecklists: React.FC = () => {\n const dispatch = useDispatch();\n\n const [showCloseAsIncompletePopup, setShowCloseAsIncompletePopup] =\n useState(false);\n const [selectedChecklist, setSelectedChecklist] = useState('');\n\n const activeChecklists = useSelector(selectActiveChecklists);\n\n return (\n
\n
\n
\n Active\n \n
\n
\n {activeChecklists.length > 0 ? (\n
\n \n \n \n \n columnName=\"name\"\n grid={Grid.ActiveChecklists}\n label=\"Name\"\n />\n \n Username\n \n Progress\n Last updated\n \n \n \n \n {activeChecklists.map((checklist: ChecklistExtended) => {\n return (\n \n dispatch(\n push(`/r/companyInformation/checklists/${checklist.id}`)\n )\n }\n >\n {checklist.name}\n \n {getChecklistAssociatedUsername(checklist.checkable)}\n \n {getChecklistProgress(checklist.itemsGroups)}\n {formatShortDate(checklist.updatedAt)}\n \n
\n \n {\n e.stopPropagation();\n dispatch(\n push(\n `/r/companyInformation/checklists/${checklist.id}`\n )\n );\n }}\n >\n \n Fill out\n \n {checklist.access.share && (\n {\n e.stopPropagation();\n dispatch(\n showShareModal({\n shareableId: checklist.id,\n shareableType: ShareableType.Checklist,\n accessLevels:\n mapShareFeaturesToAccessLevels(\n checklist.access.feature\n ),\n relativePath: checklist.relativePath,\n })\n );\n }}\n >\n \n Share\n \n )}\n {checklist.access.update && (\n <>\n \n {\n e.stopPropagation();\n setSelectedChecklist(checklist.id);\n setShowCloseAsIncompletePopup(true);\n }}\n >\n \n Close as incomplete\n \n \n )}\n \n
\n \n \n );\n })}\n \n
\n
\n ) : (\n \n )}\n setShowCloseAsIncompletePopup(false)}\n onClose={() => {\n dispatch(\n updateChecklistStatus({\n id: selectedChecklist,\n status: ChecklistChangedStatusPayloadStatusEnum.Closed,\n })\n );\n setShowCloseAsIncompletePopup(false);\n }}\n show={showCloseAsIncompletePopup}\n showCancelButton\n title=\"Close as incomplete\"\n >\n
Click CONFIRM to close this checklist as incomplete.
\n \n
\n );\n};\n","import { ChecklistItemsGroups } from '../swagger';\nimport { calculateChecklistProgress } from './calculateChecklistProgress';\n\nexport const getChecklistProgress = (\n itemsGroups: ChecklistItemsGroups[]\n): string => {\n if (itemsGroups && itemsGroups.length) {\n return `${calculateChecklistProgress(itemsGroups).toFixed(0)}%`;\n }\n};\n","import { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport React from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport { useDispatch } from 'react-redux';\nimport {\n showGenerateChecklistManagersModal,\n showGenerateChecklistUsersModal,\n} from '../../store/checklists/checklistsSlice';\nimport {\n ChecklistTemplateExtended,\n ChecklistTemplateRelatedToEnum,\n} from '../../swagger';\nimport { MeatballMenu } from '../MeatballMenu/MeatballMenu';\nimport { EntityCard } from '../EntityCard/EntityCard';\nimport { useCanFeature } from '../../functions/access';\nimport { AccessObject } from '../../types/accessObject';\n\ninterface ChecklistTemplateCardProps {\n checklistTemplate: ChecklistTemplateExtended;\n}\n\nexport const ChecklistTemplateCard: React.FC = ({\n checklistTemplate,\n}) => {\n const dispatch = useDispatch();\n\n const generateChecklist = () => {\n if (\n checklistTemplate.relatedTo === ChecklistTemplateRelatedToEnum.VendorUser\n ) {\n dispatch(showGenerateChecklistUsersModal(checklistTemplate));\n } else {\n dispatch(showGenerateChecklistManagersModal(checklistTemplate));\n }\n };\n\n const canManageChecklists = useCanFeature(AccessObject.checklists_manage);\n return (\n \n \n {canManageChecklists && (\n {\n e.stopPropagation();\n generateChecklist();\n }}\n >\n \n Generate\n \n )}\n {\n e.stopPropagation();\n dispatch(\n push(\n `/r/companyInformation/checklistTemplates/${checklistTemplate.id}`\n )\n );\n }}\n >\n \n View\n \n \n \n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectUsers } from '../../selectors/selectUsers';\nimport {\n addManagersToGenerate,\n hideGenerateChecklistManagersModal,\n} from '../../store/checklists/checklistsSlice';\nimport { generateChecklistFromTemplate } from '../../store/checklists/checklistsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport { SelectionOption } from '../../types/selectionOption';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AdoptechReactSelect } from '../AdoptechReactSelect/AdoptechReactSelect';\nimport { AdoptechTextArea } from '../AdoptechTextArea/AdoptechTextArea';\nimport './GenerateChecklistManagersModal.scss';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\n\nexport const GenerateChecklistManagersModal: React.FC = () => {\n const dispatch = useDispatch();\n\n const isGeneratingChecklistFromTemplate = useSelector(\n (state: ApplicationState) =>\n state.checklists.isGeneratingChecklistFromTemplate\n );\n const isShowingGenerateChecklistManagersModal = useSelector(\n (state: ApplicationState) =>\n state.checklists.isShowingGenerateChecklistManagersModal\n );\n const currentVendor = useSelector(selectCurrentVendor);\n\n const [selectedUser, setSelectedUser] = useState('');\n const [message, setMessage] = useState('');\n const users = useSelector((state: ApplicationState) => selectUsers(state));\n const options = useMemo(\n () => users.map(u => ({ value: u.id, label: u.email })),\n [users]\n );\n\n useEffect(() => {\n setMessage('');\n }, [isShowingGenerateChecklistManagersModal]);\n\n const handleSelect = (option: SelectionOption) => {\n setSelectedUser(option.value);\n };\n\n const handleCancel = () => {\n dispatch(hideGenerateChecklistManagersModal());\n };\n\n const handleDone = () => {\n dispatch(addManagersToGenerate({ users: [selectedUser], message }));\n dispatch(generateChecklistFromTemplate(currentVendor?.id));\n };\n\n const handleMessageChange = (\n event: React.ChangeEvent\n ) => {\n const { value } = event.target;\n setMessage(value);\n };\n\n return (\n \n \n \n
\n
Generate checklist
\n
\n Who is the owner of this checklist?\n
\n
\n Guidance: This person will be responsible for ensuring this\n checklist is completed.\n
\n
\n
\n \n
\n \n
\n
\n \n
\n
\n \n Cancel\n\n \n Generate\n \n \n \n
\n );\n};\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { hideGenerateChecklistSuccessToast } from '../../store/checklists/checklistsSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport { MessageToast } from '../MessageToast/MessageToast';\n\nexport const GenerateChecklistSuccessToast: React.FC = () => {\n const dispatch = useDispatch();\n\n const isShowingGenerateChecklistSuccessToast = useSelector(\n (state: ApplicationState) =>\n state.checklists.isShowingGenerateChecklistSuccessToast\n );\n\n return (\n dispatch(hideGenerateChecklistSuccessToast())}\n show={isShowingGenerateChecklistSuccessToast}\n size=\"large\"\n >\n Your checklist has been generated and can be found in the Active checklist\n table. Email notifications have been sent.\n \n );\n};\n","import React, { useMemo, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectUsers } from '../../selectors/selectUsers';\nimport {\n addUserToGenerate,\n hideGenerateChecklistUsersModal,\n showGenerateChecklistManagersModal,\n} from '../../store/checklists/checklistsSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport { SelectionOption } from '../../types/selectionOption';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AdoptechReactSelect } from '../AdoptechReactSelect/AdoptechReactSelect';\nimport './GenerateChecklistUsersModal.scss';\n\nexport const GenerateChecklistUsersModal: React.FC = () => {\n const dispatch = useDispatch();\n\n const { isShowingGenerateChecklistUsersModal, checklistTemplateToGenerate } =\n useSelector((state: ApplicationState) => state.checklists);\n\n const [selectedUser, setSelectedUser] = useState('');\n const users = useSelector(selectUsers);\n\n const handleCancel = () => {\n dispatch(hideGenerateChecklistUsersModal());\n };\n\n const handleDone = () => {\n dispatch(addUserToGenerate(selectedUser));\n dispatch(showGenerateChecklistManagersModal(checklistTemplateToGenerate));\n dispatch(hideGenerateChecklistUsersModal());\n };\n\n const handleSelect = (option: SelectionOption) => {\n setSelectedUser(option.value);\n };\n\n const options = useMemo(\n () => users.map(u => ({ value: u.id, label: u.email })),\n [users]\n );\n\n return (\n \n \n \n
\n
Generate checklist
\n
\n Which member of staff does this checklist relate to?\n
\n
\n Guidance: This is the person for whom you are filling out the\n form.\n
\n
\n
\n \n
\n \n
\n
\n \n Cancel\n\n \n Next\n \n \n \n
\n );\n};\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../types/applicationState';\nimport { ChecklistTemplateCard } from '../ChecklistTemplateCard/ChecklistTemplateCard';\nimport { GenerateChecklistManagersModal } from '../GenerateChecklistManagersModal/GenerateChecklistManagersModal';\nimport { GenerateChecklistSuccessToast } from '../GenerateChecklistSuccessToast/GenerateChecklistSuccessToast';\nimport { GenerateChecklistUsersModal } from '../GenerateChecklistUsersModal/GenerateChecklistUsersModal';\nimport { Lozenge } from '../Lozenge/Lozenge';\nimport './ChecklistTemplates.scss';\n\nexport const ChecklistTemplates: React.FC = () => {\n const checklistTemplates = useSelector(\n (state: ApplicationState) => state.checklists.checklistTemplates\n );\n\n return (\n
\n
\n Templates\n \n
\n\n
\n {checklistTemplates.map(checklistTemplate => (\n \n ))}\n
\n \n \n \n
\n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { Checklist } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\nimport { COMPLETED_TEXT } from '../types/constants';\n\nexport const selectCompletedChecklists = createSelector(\n (state: ApplicationState) => state.checklists.checklists,\n checklists =>\n checklists.filter(\n (list: Checklist) =>\n (list.status === COMPLETED_TEXT || list.status === 'closed') &&\n list.visibleInLists\n )\n);\n","import { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { faUserPlus } from '@fortawesome/pro-light-svg-icons/faUserPlus';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport React from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n hasFeature,\n mapShareFeaturesToAccessLevels,\n} from '../../functions/access';\nimport { capitaliseFirst } from '../../functions/capitaliseFirst';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { getChecklistAssociatedUsername } from '../../functions/getChecklistAssociatedUsername';\nimport { selectCompletedChecklists } from '../../selectors/selectCompletedChecklists';\nimport { showShareModal } from '../../store/vendors/vendorsSlice';\nimport {\n ChecklistStatusEnum,\n ShareableType,\n VendorDocument,\n} from '../../swagger';\nimport { AccessObject } from '../../types/accessObject';\nimport { Grid } from '../../types/grid';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { Lozenge } from '../Lozenge/Lozenge';\nimport { MeatballMenu } from '../MeatballMenu/MeatballMenu';\nimport { NoDataText } from '../NoDataText/NoDataText';\nimport { SortableTableHeader } from '../SortableTableHeader/SortableTableHeader';\nimport './CompleteChecklists.scss';\n\nexport const CompleteChecklists: React.FC = () => {\n const dispatch = useDispatch();\n\n const completeChecklists = useSelector(selectCompletedChecklists);\n\n return (\n
\n
\n
\n Complete\n \n
\n
\n {completeChecklists.length > 0 ? (\n
\n \n \n \n \n columnName=\"name\"\n grid={Grid.CompleteChecklists}\n label=\"Name\"\n />\n \n Username\n \n Status\n \n Date completed\n \n \n \n \n \n {completeChecklists.map(checklist => {\n return (\n \n dispatch(\n push(`/r/companyInformation/checklists/${checklist.id}`)\n )\n }\n >\n {checklist.name}\n \n {getChecklistAssociatedUsername(checklist.checkable)}\n \n {capitaliseFirst(checklist.status)}\n \n {checklist.status === ChecklistStatusEnum.Closed\n ? 'Closed as incomplete'\n : formatShortDate(checklist.updatedAt)}\n \n \n
\n \n {\n e.stopPropagation();\n dispatch(\n push(\n `/r/companyInformation/checklists/${checklist.id}`\n )\n );\n }}\n >\n \n View\n \n {\n e.stopPropagation();\n dispatch(\n showShareModal({\n shareableId: checklist.id,\n shareableType: ShareableType.Checklist,\n accessLevels: mapShareFeaturesToAccessLevels(\n checklist.access.feature\n ),\n relativePath: checklist.relativePath,\n })\n );\n }}\n >\n \n Share\n \n \n
\n \n \n );\n })}\n \n
\n
\n ) : (\n \n )}\n
\n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { canIndex } from '../../functions/access';\nimport {\n fetchVendorChecklists,\n fetchVendorChecklistTemplates,\n} from '../../store/checklists/checklistsThunks';\nimport { AccessObject } from '../../types/accessObject';\nimport { ActiveChecklists } from '../ActiveChecklists/ActiveChecklists';\nimport { ChecklistTemplates } from '../ChecklistTemplates/ChecklistTemplates';\nimport { CompleteChecklists } from '../CompleteChecklists/CompleteChecklists';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { ApplicationState } from '../../types/applicationState';\nimport { PaymentLandingPageChecker } from '../../features/pricing/PaymentLandingPageChecker/PaymentLandingPageChecker';\n\nexport const Checklists: React.FC = () => {\n const dispatch = useDispatch();\n\n const canIndexChecklistTemplates = canIndex(AccessObject.checklist_templates);\n const currentVendor = useSelector(selectCurrentVendor);\n const isFetchingChecklists = useSelector(\n (state: ApplicationState) => state.checklists.isFetchingChecklists\n );\n\n useEffect(() => {\n dispatch(fetchVendorChecklists(currentVendor.id));\n\n if (canIndexChecklistTemplates) {\n dispatch(fetchVendorChecklistTemplates(currentVendor.id));\n }\n }, [currentVendor?.id]);\n\n if (isFetchingChecklists) {\n return ;\n }\n\n return (\n \n
\n {canIndexChecklistTemplates && }\n \n \n
\n
\n );\n};\n","import { Interweave } from 'interweave';\nimport React from 'react';\nimport { ChecklistTemplateItem as ChecklistTemplateItemAPI } from '../../swagger';\nimport './ChecklistTemplateItem.scss';\n\ninterface ChecklistTemplateItemProps {\n item: ChecklistTemplateItemAPI;\n}\n\nexport const ChecklistTemplateItem: React.FC = ({\n item,\n}) => {\n return (\n
\n
\n
\n \n
\n \n
\n
\n );\n};\n","import { faAngleLeft } from '@fortawesome/pro-light-svg-icons/faAngleLeft';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport React, { useEffect } from 'react';\nimport { Accordion } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router';\nimport { fetchChecklistTemplateDetails } from '../../store/checklists/checklistsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { ChecklistSummaryTile } from '../ChecklistSummaryTile/ChecklistSummaryTile';\nimport { ChecklistTemplateItem } from '../ChecklistTemplateItem/ChecklistTemplateItem';\nimport './ChecklistTemplate.scss';\n\nexport const ChecklistTemplate: React.FC = () => {\n const dispatch = useDispatch();\n\n const { checklistTemplateId } = useParams() as {\n checklistTemplateId: string;\n };\n\n useEffect(() => {\n dispatch(fetchChecklistTemplateDetails({ checklistTemplateId }));\n }, [checklistTemplateId]);\n\n const checklistTemplate = useSelector((state: ApplicationState) =>\n state.checklists.checklistTemplates.find(\n checklistTmpl => checklistTmpl.id === checklistTemplateId\n )\n );\n return (\n
\n
\n {\n dispatch(push('/r/companyInformation/checklists'));\n }}\n >\n \n
\n
\n \n
\n
\n
\n \n {checklistTemplate?.itemsGroups?.map(group => (\n \n {group.items.map(item => (\n \n ))}\n \n ))}\n \n
\n \n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport {\n hideConfirmSendInvitationModal,\n showAddUserModal,\n} from '../../store/vendors/vendorsSlice';\nimport { sendInvitation } from '../../store/vendors/vendorsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AdoptechTextArea } from '../AdoptechTextArea/AdoptechTextArea';\nimport './ConfirmSendInvitationModal.scss';\n\nexport const ConfirmSendInvitationModal = () => {\n const messageRef = useRef();\n const currentVendor = useSelector(selectCurrentVendor);\n const vendorId = currentVendor?.id;\n const {\n firstName,\n lastName,\n emailAddress,\n message: initialMessage,\n isConfirmSendInvitationModalShowing,\n isSendingInvitation,\n resend,\n } = useSelector((state: ApplicationState) => state.vendors.inviteState);\n\n const [message, setMessage] = useState(initialMessage);\n\n const handleMessageChange = (\n event: React.ChangeEvent\n ) => {\n const { value } = event.target;\n setMessage(value);\n };\n\n useEffect(() => {\n if (messageRef.current) {\n messageRef.current.focus();\n }\n }, [isConfirmSendInvitationModalShowing]);\n\n const dispatch = useDispatch();\n\n const handleBack = () => {\n !resend && dispatch(showAddUserModal());\n dispatch(hideConfirmSendInvitationModal());\n };\n\n return (\n \n {resend ? 'Resend' : 'Send'} invitation\n \n Please click 'Invite' below to send an invitation to:\n
\n {emailAddress}\n
\n \n
\n \n Back\n {\n dispatch(\n sendInvitation({\n firstName,\n lastName,\n emailAddress,\n message,\n vendorId,\n })\n );\n setMessage('');\n }}\n variant={AdoptechButtonVariant.Primary}\n busy={isSendingInvitation}\n >\n Invite\n \n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n clearProfileDeletedToast,\n closeDeleteProfileModal,\n} from '../../store/user/userSlice';\nimport { deleteUser } from '../../store/user/userThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport {\n MessageToast,\n MessageToastVariant,\n} from '../MessageToast/MessageToast';\nimport './DeleteProfileModal.scss';\n\nexport const DeleteProfileModal: React.FC = () => {\n const [check, setCheck] = useState('');\n const show = useSelector(\n (state: ApplicationState) => state.user.isDeleteUserModalShowing\n );\n\n const showToast = useSelector(\n (state: ApplicationState) => state.user.isProfileDeletedToastShowing\n );\n\n const isDeleting = useSelector(\n (state: ApplicationState) => state.user.isDeletingUser\n );\n\n const deleteDisabled = check.toUpperCase() !== 'DELETE';\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n setCheck('');\n }, [show]);\n\n return (\n \n dispatch(clearProfileDeletedToast())}\n show={showToast}\n showClose={false}\n variant={MessageToastVariant.Warning}\n >\n
\n
\n Your account has successfully been deleted.\n
\n
\n {\n dispatch(clearProfileDeletedToast());\n window.location.href = '/';\n }}\n variant={AdoptechButtonVariant.Inverse}\n >\n CONTINUE\n \n
\n
\n \n dispatch(closeDeleteProfileModal())}\n show={show}\n >\n Delete account\n \n
\n You are about to permanently delete your account. This operation\n cannot be undone. To confirm your request, please type 'delete' into\n the field below.\n
\n
\n setCheck(e.currentTarget.value)}\n placeholder=\"Enter 'delete' in this field to proceed\"\n type=\"text\"\n value={check}\n />\n
\n
\n \n dispatch(closeDeleteProfileModal())}>\n Cancel\n \n dispatch(deleteUser())}\n variant={AdoptechButtonVariant.Primary}\n >\n DELETE\n \n \n \n
\n );\n};\n","import React, { useEffect, useRef } from 'react';\nimport './Download.scss';\n\nexport interface DownloadProps {\n url: string;\n}\n\nexport const Download: React.FC = props => {\n const anchorRef = useRef();\n\n useEffect(() => {\n anchorRef.current.click();\n }, [props.url]);\n\n return (\n
\n \n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n hideEditOwnerModal,\n hideEditOwnerToast,\n showEditOwnerToast,\n showGlobalToast,\n} from '../../store/global/globalSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { MessageToast } from '../MessageToast/MessageToast';\nimport { SelectionOption } from '../../types/selectionOption';\nimport { AdoptechReactSelect } from '../AdoptechReactSelect/AdoptechReactSelect';\nimport { patchVendorDocument } from '../../store/vendors/vendorsThunks';\nimport { OwnerObjectType } from '../../types/OwnerObjectType';\nimport { patchAgreement } from '../../store/agreements/agreementsThunks';\nimport {\n patchAssessment,\n patchAssessmentResponse,\n} from '../../store/assessments/assessmentsThunks';\nimport { Assessment, AssessmentResponse } from '../../swagger';\nimport './EditOwnerModal.scss';\nimport { useOwnerOptions } from '../../hooks/useOwnerOptions';\n\nexport const EditOwnerModal: React.FC = () => {\n const showModal = useSelector(\n (state: ApplicationState) => state.global.isEditOwnerModalShowing\n );\n const showToast = useSelector(\n (state: ApplicationState) => state.global.isEditedOwnerToastShowing\n );\n const ownerObjectToEdit = useSelector(\n (state: ApplicationState) => state.global.ownerObjectToEdit\n );\n const ownerObjectType = useSelector(\n (state: ApplicationState) => state.global.ownerObjectType\n );\n\n const [owner, setOwner] = useState(ownerObjectToEdit?.owner);\n\n const isAgreement = ownerObjectType === OwnerObjectType.Agreement;\n const isVendorDocument = ownerObjectType === OwnerObjectType.VendorDocument; // /documents page OR policy approval\n const isAssessment = window.location.pathname.includes('assessment');\n const { users, ownerOptions: options } = useOwnerOptions({\n includingGuest: isAgreement,\n onlyAdminable: isAssessment || isVendorDocument,\n });\n const selectedUser = options.find(o => {\n return o.value === owner?.id;\n });\n useEffect(() => {\n if (showModal) {\n setOwner(ownerObjectToEdit?.owner);\n }\n }, [showModal]);\n\n const dispatch = useDispatch();\n\n if (!ownerObjectToEdit) {\n return null;\n }\n\n const onSuccess = () => {\n dispatch(showEditOwnerToast());\n dispatch(hideEditOwnerModal());\n };\n\n const save = () => {\n switch (ownerObjectType) {\n case OwnerObjectType.VendorDocument:\n dispatch(\n patchVendorDocument({\n documentId: ownerObjectToEdit.id,\n vendorDocument: {\n ownerId: owner.id,\n },\n onSuccess: () => {\n onSuccess();\n dispatch(\n showGlobalToast(\n 'Policy document has been successfully updated.'\n )\n );\n },\n })\n );\n break;\n case OwnerObjectType.Agreement:\n dispatch(\n patchAgreement({\n agreementId: ownerObjectToEdit.id,\n ownerId: owner.id,\n onSuccess,\n })\n );\n break;\n case OwnerObjectType.Assessment:\n {\n const assessment = ownerObjectToEdit as Assessment;\n\n if (assessment) {\n dispatch(\n patchAssessment({\n assessmentId: assessment.id,\n ownerId: owner.id,\n onSuccess,\n })\n );\n }\n }\n break;\n case OwnerObjectType.AssessmentResponse:\n {\n const ar = ownerObjectToEdit as AssessmentResponse;\n\n if (ar) {\n dispatch(\n patchAssessmentResponse({\n id: ar.id,\n assessmentResponse: { owner: owner, ownerId: owner.id },\n onSuccess,\n })\n );\n }\n }\n break;\n }\n };\n\n const handleSelect = (option: SelectionOption) => {\n setOwner(users.find(user => user.id === option.value));\n };\n\n return (\n \n dispatch(hideEditOwnerModal())}\n show={showModal}\n >\n Manage Ownership\n \n \n \n \n dispatch(hideEditOwnerModal())}>\n Cancel\n \n \n Update\n \n \n \n dispatch(hideEditOwnerToast())}\n show={showToast}\n >\n The owner has been updated.\n \n \n );\n};\n","import classNames from 'classnames';\nimport React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n clearTwoFactorSavedToast,\n closeTwoFactorAuthentication,\n} from '../../store/user/userSlice';\nimport {\n requestQrCode,\n verifyOtpSetup,\n verifyOtpUninstall,\n} from '../../store/user/userThunks';\nimport { UserDetails } from '../../swagger/models';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { AdoptechTextInput2 } from '../AdoptechTextInput2/AdoptechTextInput2';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { MessageToast } from '../MessageToast/MessageToast';\nimport './Manage2FAModal.scss';\n\nexport const Manage2FAModal: React.FC = () => {\n const dispatch = useDispatch();\n const baseCss = 'manage2FAModal';\n\n const userState = useSelector((state: ApplicationState) => state.user);\n const qrCode = userState.mfaQrCode;\n const backupCodes = userState.mfaBackupCodes;\n const isVerifying = userState.mfaIsVerifying;\n const otpEnabled = userState.mfaAlreadyEnabled;\n\n const errorMessage = useSelector(\n (state: ApplicationState) => state.user.addingTwoFactorError\n );\n\n const errorMessageClasses = classNames({\n [`${baseCss}--infoMessage`]: true,\n [`${baseCss}--infoMessage--error`]: Boolean(errorMessage),\n [`${baseCss}--infoMessage--hidden`]: !errorMessage,\n });\n\n const [otpAttempt, setOtpAttempt] = useState('');\n\n useEffect(() => {\n setOtpAttempt('');\n if (userState.is2FAEnabledShowing && !userState.mfaQrCode) {\n dispatch(requestQrCode());\n }\n }, [userState.is2FAEnabledShowing]);\n\n const setup = () => {\n dispatch(verifyOtpSetup(otpAttempt));\n };\n\n const uninstall = () => {\n dispatch(verifyOtpUninstall(otpAttempt));\n };\n\n const stepSetup = () => (\n <>\n Enable Two Factor Authentication\n \n
\n
\n Scan the QR code below using any authenticator application, such as\n Google or Microsoft Authenticator.\n
\n\n
\n \n
\n\n
\n After scanning, enter the 6-digit code generated by your\n authenticator app to complete the authentication process.\n
\n\n
\n setOtpAttempt(e.currentTarget.value)}\n placeholder=\"Enter one-time code\"\n type=\"text\"\n />\n
\n
\n
{errorMessage}
\n
\n \n dispatch(closeTwoFactorAuthentication())}\n >\n Cancel\n \n \n SETUP\n \n \n \n );\n\n const stepBackupCodes = () => (\n <>\n Enable Two Factor Authentication\n \n
\n
\n Save these backup codes in a secure location. You can use them to\n log in if you lose access to your authenticator app.\n
\n
\n
\n
    \n {backupCodes.map((code, index) => (\n
  • {code}
  • \n ))}\n
\n
\n
\n
\n Important: These backup codes will not be available\n again after you close this modal. Make sure to save them securely.\n
\n
\n
{errorMessage}
\n
\n \n dispatch(closeTwoFactorAuthentication())}\n >\n Cancel\n \n dispatch(closeTwoFactorAuthentication())}\n variant={AdoptechButtonVariant.Primary}\n >\n DONE\n \n \n \n );\n\n const stepDisable = () => (\n <>\n Disable Two Factor Authentication\n \n
\n
\n To disable Two-Factor Authentication (2FA), please enter your\n current one-time password (OTP) generated by your authenticator app.\n
\n
\n
\n setOtpAttempt(e.currentTarget.value)}\n placeholder=\"Enter one-time code\"\n type=\"text\"\n />\n
\n
\n
\n Important:\n Please note that disabling Two-Factor Authentication (2FA) reduces\n the security of your account. We strongly recommend re-enabling 2FA\n as soon as possible to ensure the continued protection of your\n account.\n
\n
\n
{errorMessage}
\n
\n \n dispatch(closeTwoFactorAuthentication())}\n >\n Cancel\n \n \n Disable 2FA\n \n \n \n );\n\n let currentStep = () => <>;\n if (isVerifying) {\n currentStep = () => ;\n } else if (!otpEnabled && qrCode) {\n currentStep = stepSetup;\n } else if (otpEnabled && backupCodes) {\n currentStep = stepBackupCodes;\n } else if (otpEnabled) {\n currentStep = stepDisable;\n }\n\n return (\n \n dispatch(clearTwoFactorSavedToast())}\n show={\n userState.isTwoFactorSavedToastShowing !== false &&\n userState.isTwoFactorSavedToastShowing !== undefined\n }\n >\n Two Factor Authentication has been enabled\n \n dispatch(closeTwoFactorAuthentication())}\n show={userState.is2FAEnabledShowing}\n className=\"manage2FAModal\"\n >\n {currentStep()}\n \n \n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport { fetchEscrowAccounts } from '../../store/vendors/vendorsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport { Grid } from '../../types/grid';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { Intent, Lozenge } from '../Lozenge/Lozenge';\nimport { NoDataText } from '../NoDataText/NoDataText';\nimport { SortableTableHeader } from '../SortableTableHeader/SortableTableHeader';\nimport './EscrowAccounts.scss';\nimport { EscrowAccount } from '../../swagger/models/EscrowAccount';\n\nexport const EscrowAccountsPage: React.FC = () => {\n const dispatch = useDispatch();\n const currentVendor = useSelector(selectCurrentVendor);\n const baseCss = 'escrowAccounts';\n const isFetchingEscrowAccounts = useSelector(\n (state: ApplicationState) => state.vendors.isFetchingEscrowAccounts\n );\n const escrowAccounts = useSelector(\n (state: ApplicationState) => state.vendors.escrowAccounts\n );\n\n useEffect(() => {\n dispatch(fetchEscrowAccounts(currentVendor?.id));\n }, [currentVendor?.id]);\n\n if (isFetchingEscrowAccounts) {\n return ;\n }\n\n return (\n
\n
\n
\n Accounts\n \n
\n
\n\n {escrowAccounts.length > 0 ? (\n <>\n
\n Existing escrow accounts.\n
\n \n \n \n \n columnName=\"name\"\n grid={Grid.EscrowAccounts}\n label=\"Name\"\n />\n \n columnName=\"accountNumber\"\n grid={Grid.EscrowAccounts}\n label=\"Account number\"\n />\n \n columnName=\"accessKey\"\n grid={Grid.EscrowAccounts}\n label=\"Access key\"\n />\n \n columnName=\"accountType\"\n grid={Grid.EscrowAccounts}\n label=\"Type\"\n />\n \n columnName=\"status\"\n grid={Grid.EscrowAccounts}\n label=\"Status\"\n />\n \n columnName=\"bucketName\"\n grid={Grid.EscrowAccounts}\n label=\"Bucket name\"\n />\n \n columnName=\"updatedAt\"\n grid={Grid.EscrowAccounts}\n label=\"Last updated\"\n />\n \n \n \n {escrowAccounts.map(ea => {\n return (\n \n {ea.name}\n {ea.accountNumber}\n {ea.accessKey}\n {ea.accountType}\n {ea.status}\n {ea.bucketName}\n {formatShortDate(ea.updatedAt)}\n \n );\n })}\n \n \n \n ) : (\n \n )}\n
\n );\n};\n\nexport default EscrowAccountsPage;\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { hideFileUploadedToast } from '../../store/vendors/vendorsSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport { MessageToast } from '../MessageToast/MessageToast';\n\nconst FileUploadedToast: React.FC = () => {\n const dispatch = useDispatch();\n\n const isFileUploadedToastShowing = useSelector(\n (state: ApplicationState) =>\n state.vendors.documentState.isFileUploadedToastShowing\n );\n\n return (\n dispatch(hideFileUploadedToast())}\n show={isFileUploadedToastShowing}\n >\n Your file has been successfully uploaded.\n \n );\n};\n\nexport default FileUploadedToast;\n","import moment from 'moment';\n\nexport const formatShortDateTime = (date: string) => {\n return date ? moment(date).format('MMM DD, YYYY HH:mm:ss') : null;\n};\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faAngleLeft } from '@fortawesome/pro-solid-svg-icons/faAngleLeft';\nimport { faAngleRight } from '@fortawesome/pro-solid-svg-icons/faAngleRight';\nimport './Pager.scss';\n\nexport interface Props {\n page: number;\n setPage(page: number): void;\n totalPages: number;\n}\n\nconst baseCss = 'adoptechPager';\n\nexport const Pager: React.FC = ({ page, setPage, totalPages }) => {\n const goLeft = () => goTo(page - 1);\n const goTo = (pageNumber: number) => {\n setPage(Math.max(1, Math.min(pageNumber, totalPages)));\n };\n const goRight = () => goTo(page + 1);\n\n const leftEnd = page <= 1;\n const rightEnd = page >= totalPages;\n\n return (\n
\n \n Page\n goTo(+e.currentTarget.value)}\n value={page}\n type=\"number\"\n />\n of {totalPages}\n \n
\n );\n};\n","import React from 'react';\nimport { AssertionRunModelStatusEnum } from '../../../swagger';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCheckCircle } from '@fortawesome/free-solid-svg-icons/faCheckCircle';\nimport { faExclamationCircle } from '@fortawesome/free-solid-svg-icons/faExclamationCircle';\nimport { faCircle } from '@fortawesome/pro-light-svg-icons/faCircle';\n\nconst baseCss = 'testLogPage';\n\nexport const Status: React.FC<{ status: AssertionRunModelStatusEnum }> = ({\n status,\n}) => {\n if (status === AssertionRunModelStatusEnum.Compliant) {\n return (\n \n );\n }\n\n if (status === AssertionRunModelStatusEnum.Failed) {\n return (\n \n );\n }\n\n return (\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { AssertionRunModel } from '../../../swagger';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchAssertionRunExtended } from './store/testsThunks';\nimport { ApplicationState } from '../../../types/applicationState';\nimport AdoptechHS from '../../../components/AdoptechHS/AdoptechHS';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport './EventDetailsDrawer.scss';\nimport { formatShortDateTime } from '../../../functions/formatShortDateTime';\nimport { TestResult } from './TestResult';\nimport { Status } from './Status';\n\nconst baseCss = 'eventDetailsDrawer';\n\ninterface Props {\n show: boolean;\n eventId: AssertionRunModel['id'];\n onClose(): void;\n}\n\nexport const EventDetailsDrawer: React.FC = ({\n show,\n eventId,\n onClose,\n}) => {\n const dispatch = useDispatch();\n\n const eventDetails = useSelector(\n (state: ApplicationState) => state.tests.assertionRunExtended\n );\n\n useEffect(() => {\n if (!eventId) return;\n dispatch(fetchAssertionRunExtended(eventId));\n }, [eventId]);\n\n const Footer = (\n <>\n \n Cancel\n \n \n );\n\n const status = useSelector(\n (state: ApplicationState) => state.tests.assertionRunExtendedStatus\n );\n\n let result = 'Progress';\n\n switch (eventDetails?.status) {\n case 'compliant':\n result = 'Passed';\n break;\n case 'failed':\n result = 'Failed';\n break;\n }\n\n const owner = eventDetails?.owner?.fullName || eventDetails?.owner?.email;\n\n return (\n \n {status === 'succeeded' && (\n <>\n
{eventDetails.description}
\n
\n
\n Source\n {eventDetails.source}\n
\n {owner && (\n
\n User\n {owner}\n
\n )}\n
\n
\n
\n Mode\n {eventDetails.mode}\n
\n
\n Result\n {result}\n
\n
\n
\n
\n Tested\n {formatShortDateTime(eventDetails.startedAt)}\n
\n
\n {eventDetails.assertionResults\n .filter(assertionResult => !assertionResult.excluded)\n .map(testResult => (\n \n ))}\n \n )}\n \n );\n};\n","import './TestLogPage.scss';\nimport React, { ChangeEvent, useEffect, useState } from 'react';\nimport {\n AssertionCategoryModel,\n AssertionRunModel,\n AssertionRunModelStatusEnum,\n} from '../../../swagger';\nimport { Lozenge } from '../../../components/Lozenge/Lozenge';\nimport { AdoptechReactSelect } from '../../../components/AdoptechReactSelect/AdoptechReactSelect';\nimport { AdoptechTextInput } from '../../../components/AdoptechTextInput/AdoptechTextInput';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n fetchAssertionCategories,\n fetchAssertionRuns,\n} from './store/testsThunks';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { formatShortDateTime } from '../../../functions/formatShortDateTime';\nimport { Pager } from './Pager';\nimport { Status } from './Status';\nimport { EventDetailsDrawer } from './EventDetailsDrawer';\nimport {\n useQueryParams,\n useRemoveQueryParam,\n} from '../../../hooks/useQueryParams';\nimport { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport { AdoptechCheckbox } from '../../../components/AdoptechCheckbox/AdoptechCheckbox';\nimport { reactSelectLightStyle } from '../../../functions/reactSelectCustomTheme';\n\nconst baseCss = 'testLogPage';\n\nexport const TestLogPage: React.FC = () => {\n const events = useSelector(\n (state: ApplicationState) => state.tests.assertionRuns.data || []\n );\n const categories = useSelector(\n (state: ApplicationState) => state.tests.assertionCategories\n );\n\n const [selectedCategory, setSelectedCategory] =\n useState();\n const categoryOptions = categories.map(category => ({\n value: category.identifier,\n label: category.name,\n }));\n\n const [page, setPage] = useState(1);\n const totalPages = useSelector(\n (state: ApplicationState) =>\n state.tests.assertionRuns?.meta?.totalPages || 1\n );\n const totalEntries = useSelector(\n (state: ApplicationState) =>\n state.tests.assertionRuns?.meta?.totalEntries || 0\n );\n\n const statusOptions = [\n { label: 'Failed', value: AssertionRunModelStatusEnum.Failed },\n { label: 'Compliant', value: AssertionRunModelStatusEnum.Compliant },\n ];\n\n const [showManual, setShowManual] = useState(false);\n\n const [selectedStatus, setSelectedStatus] =\n useState();\n\n const dispatch = useDispatch();\n\n const queryParams = useQueryParams();\n\n const removeQueryParam = useRemoveQueryParam();\n\n const searchQuery = queryParams.get('search');\n const [search, setSearch] = useState(searchQuery || '');\n\n const handleSearch = (e: ChangeEvent) => {\n removeQueryParam('search');\n setSearch(e.currentTarget.value);\n };\n useEffect(() => {\n dispatch(fetchAssertionCategories());\n }, []);\n\n const fetchResults = () =>\n dispatch(\n fetchAssertionRuns(\n selectedCategory,\n search,\n selectedStatus,\n showManual,\n `${page}`\n )\n );\n\n useEffect(() => {\n setPage(1);\n fetchResults();\n }, [selectedCategory, search, selectedStatus, showManual]);\n\n useEffect(() => {\n fetchResults();\n }, [page]);\n\n const [selectedEventId, setSelectedEventId] =\n useState();\n const [showDetailsDrawer, setShowDetailsDrawer] = useState(false);\n\n const openDetailsDrawer = (event: AssertionRunModel) => () => {\n setSelectedEventId(event.id);\n setShowDetailsDrawer(true);\n };\n\n const closeDetailsDrawer = () => {\n // keep eventId in case of the same event reopen - it will not trigger request\n setShowDetailsDrawer(false);\n };\n\n return (\n
\n
\n
\n
\n Test results\n \n
\n
\n o.value === selectedCategory)\n }\n options={[\n { label: 'No selection', value: null },\n ...categoryOptions,\n ]}\n onChange={e => setSelectedCategory(e.value)}\n />\n o.value === selectedStatus)\n }\n options={[{ label: 'No selection', value: null }, ...statusOptions]}\n onChange={e => setSelectedStatus(e.value)}\n />\n
\n ) =>\n setShowManual(e.target.checked)\n }\n label=\"Show manual tests\"\n className=\"checkbox-show-inactive\"\n />\n \n
\n
\n \n
\n Source\n Category\n Time\n Test name\n Result\n
\n
\n
\n
\n {events.map(event => (\n \n
{event.source}
\n
{event.assertionCategory?.name || '-'}
\n
{formatShortDateTime(event.startedAt)}
\n
{event.name}
\n \n
\n ))}\n
\n \n
\n );\n};\n","import { push } from 'connected-react-router';\nimport React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { initialise } from '../../store/global/globalThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport { LoadingScreen } from '../LoadingScreen/LoadingScreen';\nimport { SharedUserType } from '../../swagger';\nimport { welcomeRoute } from '../Routes/Routes';\nimport { selectCurrentVendorUser } from '../../selectors/selectCurrentVendorUser';\n\nexport const Home: React.FC = () => {\n const dispatch = useDispatch();\n\n const isInitialised = useSelector(\n (state: ApplicationState) => state.global.isInitialised\n );\n\n const vendors = useSelector(\n (state: ApplicationState) => state.vendors.vendors\n );\n\n const currentVendorUser = useSelector(selectCurrentVendorUser);\n\n useEffect(() => {\n // Fetch data to allow decision to be made on initial page to show\n if (!isInitialised) {\n dispatch(initialise());\n return;\n }\n\n // If no vendors present, redirect to welcome pages\n if (vendors.length === 0) {\n dispatch(push(welcomeRoute));\n return;\n }\n\n // If user is Guest then redirect to Company Profile\n if (currentVendorUser?.userType == SharedUserType.Guest) {\n dispatch(push('/r/companyInformation/profile'));\n }\n // Default to dashboard\n dispatch(push('/r/dashboard'));\n }, []);\n\n return ;\n};\n","import { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport moment from 'moment';\nimport React, { ChangeEvent, useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useCookies } from 'react-cookie';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { hideInvitationSentModal } from '../../store/vendors/vendorsSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport { AdoptechCheckbox } from '../AdoptechCheckbox/AdoptechCheckbox';\nimport './InvitationSentModal.scss';\n\nexport const InvitationSentModal = () => {\n const dispatch = useDispatch();\n const { isInvitationSentModalShowing } = useSelector(\n (state: ApplicationState) => state.vendors.inviteState\n );\n\n const [cookies, setCookie] = useCookies(['invitationSentMessageNoShow']);\n const [doNotShow, setDoNotShow] = useState(false);\n const show = () =>\n isInvitationSentModalShowing &&\n cookies.invitationSentMessageNoShow !== 'true';\n\n const handleDoNotShowChange = (e: ChangeEvent) => {\n setDoNotShow(e.target.checked);\n setCookie('invitationSentMessageNoShow', e.target.checked, {\n expires: moment().add(10, 'years').toDate(),\n });\n };\n\n useEffect(() => {\n if (!show()) {\n return;\n }\n\n setTimeout(() => {\n dispatch(hideInvitationSentModal());\n }, +process.env.REACT_APP_LONG_TOAST_DELAY);\n }, [isInvitationSentModalShowing]);\n\n return (\n \n \n {\n dispatch(hideInvitationSentModal());\n }}\n >\n \n
\n \n \n

The invitation has been sent by email.

\n
\n \n \n \n \n );\n};\n","import React from 'react';\nimport adoptechLogo from 'images/adoptech_logo.svg';\nimport './MainMenuLogo.scss';\nimport { useSelector } from 'react-redux';\nimport { selectVendorDetails } from '../../selectors/selectVendorDetails';\n\nconst MainMenuLogo: React.FC = () => {\n const currentVendor = useSelector(selectVendorDetails);\n const logo = currentVendor?.customLogoUrl;\n return (\n
\n );\n};\n\nexport default MainMenuLogo;\n","import React from 'react';\nimport './MainMenuFooter.scss';\nimport moment from 'moment';\n\nconst MainMenuFooter: React.FC = () => {\n return (\n
\n © {moment().year()} Adoptech Limited\n
\n );\n};\n\nexport default MainMenuFooter;\n","import { createSelector } from '@reduxjs/toolkit';\nimport { VendorUser } from '../swagger';\nimport { selectCurrentVendorUser } from './selectCurrentVendorUser';\n\nexport const selectUserRoles = createSelector(\n selectCurrentVendorUser,\n (vendorUser: VendorUser) => {\n return vendorUser ? vendorUser.roles : [];\n }\n);\n","import React, { useState } from 'react';\nimport './MainMenuItem.scss';\nimport { MainMenuItemConfiguration } from '../MainMenuItems/MainMenuItemConfiguration';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { push } from 'connected-react-router';\nimport { faChevronUp } from '@fortawesome/pro-light-svg-icons/faChevronUp';\nimport { selectRouteName } from '../../selectors/selectRouteName';\nimport { selectUserRoles } from '../../selectors/selectUserRoles';\nimport { selectActiveSubscription } from '../../selectors/selectActiveSubscription';\n\nexport interface MainMenuItemProps {\n index: string;\n item: MainMenuItemConfiguration;\n}\n\nconst MainMenuItem: React.FC = props => {\n const [collapsed, setCollapsed] = useState(false);\n\n const routerRouteName = useSelector(selectRouteName);\n\n const userRoles = useSelector(selectUserRoles);\n\n const hasAction =\n props.item.onClick !== undefined || props.item.route !== undefined;\n\n const isDisabled =\n props.item.disabled ||\n (props.item.disabledExpression &&\n props.item.disabledExpression(userRoles)) ||\n !hasAction;\n\n const isSelected = props.item.routes\n ? props.item.routes.includes(routerRouteName)\n : routerRouteName === props.item.route;\n\n const itemClasses = classNames(\n 'mainMenuItem--item',\n !isDisabled && 'mainMenuItem--item-pointer mainMenuItem--item-dark',\n !hasAction &&\n 'mainMenuItem--item-margin mainMenuItem--item-pointer mainMenuItem--item-small mainMenuItem--item-toggle',\n isSelected && 'mainMenuItem--item-highlight',\n isDisabled ? 'mainMenuItem--item-disabled' : ''\n );\n\n const chevronClasses = classNames(\n 'mainMenuItem--chevron',\n collapsed && 'mainMenuItem--chevron-collapsed'\n );\n\n const childrenClasses = classNames(\n 'mainMenuItem--children',\n collapsed && 'mainMenuItem--children-collapsed'\n );\n\n const dispatch = useDispatch();\n\n const handleClick = () => {\n if (isDisabled) return;\n\n if (props.item.onClick) {\n props.item.onClick();\n return;\n }\n\n if (props.item.route) {\n dispatch(push(props.item.route));\n }\n };\n\n return (\n
\n {hasAction ? (\n handleClick()}\n >\n {props.item.icon && (\n
\n \n
\n )}\n
{props.item.label}
\n \n ) : (\n {\n setCollapsed(previousCollapsed => !previousCollapsed);\n }}\n >\n {props.item.label}\n \n
\n )}\n {props.item.childItems && (\n
\n {props.item.childItems.map((child, index) => {\n return (\n \n );\n })}\n
\n )}\n \n );\n};\n\nexport default MainMenuItem;\n","import React from 'react';\nimport './MainMenuItems.scss';\nimport { isProductPaid, mainMenuConfig } from './mainMenuConfig';\nimport MainMenuItem from '../MainMenuItem/MainMenuItem';\nimport { useSelector } from 'react-redux';\nimport { selectActiveSubscription } from '../../selectors/selectActiveSubscription';\nimport { useQueryParams } from '../../hooks/useQueryParams';\nimport { selectVendorProductsFeatures } from '../../selectors/pricing/selectVendorProductsFeatures';\n\nconst MainMenuItems: React.FC = () => {\n const subscription = useSelector(selectActiveSubscription);\n const queryParams = useQueryParams();\n\n const fromSignup = !!queryParams.get('showEnter');\n const features = useSelector(selectVendorProductsFeatures);\n const isPaidAssessments = isProductPaid('assessments', features);\n\n return (\n
\n {mainMenuConfig(subscription, { fromSignup, isPaidAssessments }).map(\n (item, index) => {\n return (\n \n );\n }\n )}\n
\n );\n};\n\nexport default MainMenuItems;\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../types/applicationState';\nimport { SelectionOption } from '../../types/selectionOption';\nimport { Vendor } from '../../swagger';\nimport { setCurrentVendor } from '../../store/vendors/vendorsSlice';\nimport { push } from 'connected-react-router';\nimport { AdoptechReactSelect } from '../AdoptechReactSelect/AdoptechReactSelect';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport './VendorSelector.scss';\nimport { sort } from '../../functions/sort';\nimport { useCanCreate, useCanFeature } from '../../functions/access';\nimport { AccessObject } from '../../types/accessObject';\n\nconst VendorSelector: React.FC = () => {\n const currentVendor = useSelector(selectCurrentVendor);\n const vendors = useSelector(\n (state: ApplicationState) => state.vendors.vendors\n );\n\n const vendorsOptions: SelectionOption[] = vendors\n ?.map((vendor: Vendor) => ({\n label: vendor.name,\n value: vendor.id,\n }))\n .sort((a, b) => sort(a.label, b.label, 1));\n\n const dispatch = useDispatch();\n\n const handleAddCompany = () => {\n dispatch(push('/r/welcome/company'));\n };\n\n const commonSubpathLocation = (): string => {\n // examples:\n // /r/riskManagement/riskRegister/RKWs0v => /r/riskManagement/riskRegister\n // /r/compliance/frameworks/634SE3/requirements => /r/compliance/frameworks\n // /r/governance/policies/OpTnEW => /r/governance/policies\n // /r/riskManagement/assessments/response/wmT88P/tour => /r/riskManagement/assessments\n // i.e. just takes first three segments without overengineering with regexps\n\n const currentPath = window.location.pathname;\n const segments = currentPath.split('/').filter(segment => segment !== '');\n\n // ID always appear as firth or fifth segment\n if (segments.length < 4) {\n return currentPath;\n }\n // firts three segments always common\n return '/' + segments.slice(0, 3).join('/');\n };\n\n const onVendorChange = (newVendorOption: SelectionOption) => {\n const newVendor = vendors.find(\n (vendor: Vendor) => vendor.id === newVendorOption.value\n );\n dispatch(setCurrentVendor(newVendor));\n window.location.href = commonSubpathLocation();\n };\n\n const canAddVendor = useCanFeature(AccessObject.vendors_create);\n\n return (\n
\n \n vendorOption.value === currentVendor?.id\n )}\n allowAdd={canAddVendor}\n onAdd={handleAddCompany}\n addText=\"+ Add new company\"\n />\n
\n );\n};\n\nexport default VendorSelector;\n","import React from 'react';\nimport MainMenuLogo from '../MainMenuLogo/MainMenuLogo';\nimport MainMenuFooter from '../MainMenuFooter/MainMenuFooter';\nimport MainMenuItems from '../MainMenuItems/MainMenuItems';\nimport './MainMenu.scss';\nimport VendorSelector from '../VendorSelector/VendorSelector';\n\nconst MainMenu: React.FC = () => {\n return (\n
\n \n \n \n \n
\n );\n};\n\nexport default MainMenu;\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { hideIsPaymentSuccessfulShowing } from '../../store/policies/policiesSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport { MessageToast } from '../MessageToast/MessageToast';\n\nexport const PaymentSuccessfulToast = () => {\n const dispatch = useDispatch();\n\n const isPaymentSuccessfulShowing = useSelector(\n (state: ApplicationState) => state.policies.isPaymentSuccessfulShowing\n );\n\n return (\n dispatch(hideIsPaymentSuccessfulShowing())}\n show={isPaymentSuccessfulShowing}\n >\n Your subscription has been created successfully.\n \n );\n};\n","import moment from 'moment';\nimport React, { ChangeEvent, useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useCookies } from 'react-cookie';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { AdoptechCheckbox } from '../AdoptechCheckbox/AdoptechCheckbox';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './CustomizeClauseWarningModal.scss';\n\nconst HIDE_WARNING_COOKIE = 'hideCustomizeClauseWarning';\n\nexport interface CustomizeClauseWarningModal {\n toggleClicked: boolean;\n hide: () => void;\n onOk: () => void;\n}\n\nconst CustomizeClauseWarningModal = ({\n toggleClicked,\n hide,\n onOk,\n}: CustomizeClauseWarningModal) => {\n const [cookies, setCookie] = useCookies([HIDE_WARNING_COOKIE]);\n const [doNotShowCheckboxValue, setDoNotShowCheckboxValue] = useState(false);\n const shouldShowModal = toggleClicked && !cookies[HIDE_WARNING_COOKIE];\n\n const handleDoNotShowChange = (e: ChangeEvent) => {\n setDoNotShowCheckboxValue(e.target.checked);\n };\n\n useEffect(() => {\n if (toggleClicked && !shouldShowModal) {\n onOk();\n }\n }, [toggleClicked]);\n\n const handleOkClick = () => {\n if (doNotShowCheckboxValue) {\n setCookie(HIDE_WARNING_COOKIE, true, {\n expires: moment().add(10, 'years').toDate(),\n });\n }\n onOk();\n };\n\n return (\n \n Warning\n \n
\n Your changes will be lost and you will revert to the standard\n generated text.\n
\n \n
\n \n Cancel\n \n Ok\n \n \n \n );\n};\n\nexport default CustomizeClauseWarningModal;\n","import { useEffect, useRef } from 'react';\n\nconst useDidMountEffect = (func: any, deps: any) => {\n const didMount = useRef(false);\n\n useEffect(() => {\n if (didMount.current) func();\n else didMount.current = true;\n }, deps);\n};\n\nexport default useDidMountEffect;\n","import classNames from 'classnames';\nimport { Interweave } from 'interweave';\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getQuestionLastUpdatedInfo } from '../../functions/getQuestionLastUpdatedInfo';\nimport {\n patchVendorPolicy,\n fetchVendorPolicy,\n} from '../../store/policies/policiesThunks';\nimport {\n Question,\n VendorPolicyAnswer,\n VendorPolicyDetails,\n} from '../../swagger/models';\nimport { LastUpdatedInfo } from '../LastUpdatedInfo/LastUpdatedInfo';\nimport { AnswerFormControl } from '../AnswerFormControl/AnswerFormControl';\nimport './PolicyQuestion.scss';\nimport { Answer } from '../../swagger/models/Answer';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport { deleteAgreementTableAnswers } from '../../store/agreements/agreementsThunks';\n\ninterface PolicyQuestionProps {\n answers: VendorPolicyAnswer[];\n disabled: boolean;\n question: Question;\n questions: Question[];\n vendorPolicyId: string;\n}\n\nexport const PolicyQuestion: React.FC = props => {\n const dispatch = useDispatch();\n\n const policyQuestionClasses = classNames({\n policyQuestion: true,\n 'policyQuestion--disabled': props.disabled,\n });\n\n const lastUpdatedInfo = getQuestionLastUpdatedInfo(\n props.question,\n props.answers,\n 'propertyName'\n );\n\n const handleChange = (answers: Answer[] | VendorPolicyAnswer[]) => {\n const patch: VendorPolicyDetails = { vendorPolicyAnswers: answers };\n dispatch(patchVendorPolicy(props.vendorPolicyId, patch, true));\n };\n\n let previousAnswer: VendorPolicyAnswer;\n if (props.answers) {\n previousAnswer = props.answers.find(\n a => a.propertyName === props.question.propertyName\n );\n }\n\n const onSuccess = () => {\n dispatch(fetchVendorPolicy(props.vendorPolicyId));\n };\n const currentVendor = useSelector(selectCurrentVendor);\n const handleDeleteTableAnswers = (answers: Answer[]) => {\n dispatch(\n deleteAgreementTableAnswers({\n vendorId: currentVendor.id,\n answersIds: answers.map(answer => answer.id),\n onSuccess,\n })\n );\n };\n\n return (\n
\n
\n \n
\n {props.question.explanatoryTextAsHtml && (\n
\n \n
\n )}\n
\n \n
\n {lastUpdatedInfo && }\n
\n );\n};\n","import React, { lazy } from 'react';\nimport { useDispatch } from 'react-redux';\nimport useDidMountEffect from '../../hooks/useDidMountEffect';\nimport { scrollCardIntoView } from '../../store/global/globalSlice';\nimport { Question, VendorPolicyAnswer } from '../../swagger';\nimport { PolicyQuestion } from '../PolicyQuestion/PolicyQuestion';\nimport './PolicyQuestions.scss';\n\ninterface PolicyQuestionsProps {\n answers: VendorPolicyAnswer[];\n clauseText: string;\n leaveOut: boolean;\n questions: Question[];\n vendorPolicyClauseId: string;\n vendorPolicyId: string;\n resetEditor: number;\n isEditable: boolean;\n}\n\nconst PolicyOwnClause = lazy(\n () => import('../PolicyOwnClause/PolicyOwnClause')\n);\n\nexport const PolicyQuestions: React.FC = props => {\n const dispatch = useDispatch();\n\n useDidMountEffect(() => {\n setTimeout(\n () => dispatch(scrollCardIntoView(props.vendorPolicyClauseId)),\n 150\n );\n }, [props.isEditable]);\n\n return (\n \n {!props.isEditable &&\n props.questions?.length > 0 &&\n props.questions.map(q => (\n \n ))}\n {(props.isEditable || props.questions?.length === 0) && (\n \n )}\n \n );\n};\n","import { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { faUndo } from '@fortawesome/pro-light-svg-icons/faUndo';\nimport React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getClauseLastUpdatedInfo } from '../../functions/getClauseLastUpdatedInfo';\nimport { patchVendorPolicyClause } from '../../store/policies/policiesThunks';\nimport { Question, VendorPolicyAnswer } from '../../swagger/models';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport CustomizeClauseWarningModal from '../CustomizeClauseWarningModal/CustomizeClauseWarningModal';\nimport { GenericModal } from '../GenericModal/GenericModal';\nimport { LastUpdatedInfo } from '../LastUpdatedInfo/LastUpdatedInfo';\nimport { PolicyQuestions } from '../PolicyQuestions/PolicyQuestions';\nimport './PolicyCategoryRow.scss';\nimport { ApplicationState } from '../../types/applicationState';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\n\ninterface PolicyCategoryRowProps {\n allowCustomText: boolean;\n answers: VendorPolicyAnswer[];\n categoryName: string;\n clauseText: string;\n leaveOut: boolean;\n isEditable: boolean;\n questions: Question[];\n updatedAt: string;\n updatedBy: string;\n vendorPolicyClauseId: string;\n vendorPolicyId: string;\n progress: number;\n}\n\nexport const PolicyCategoryRow: React.FC = props => {\n const dispatch = useDispatch();\n\n const [isEditable, setIsEditable] = useState(props.isEditable);\n const [resetEditor, setResetEditor] = useState(0);\n\n const [showWarning, setShowWarning] = useState(false);\n const [showIncompleteWarning, setShowIncompleteWarning] = useState(false);\n\n const lastUpdated = getClauseLastUpdatedInfo(\n props.updatedAt,\n props.updatedBy\n );\n\n const isPatching = useSelector(\n (state: ApplicationState) => state.policies.isPatchingVendorPolicyClause\n );\n\n const handleCustomizeClick = () => {\n dispatch(\n patchVendorPolicyClause(props.vendorPolicyClauseId, {\n vendorPolicyId: props.vendorPolicyId,\n clauseTextIsCustom: !isEditable,\n })\n );\n setIsEditable(!isEditable);\n setShowWarning(false);\n };\n\n // wait until API revert request finish, ex:\n // 1) change text to custom and save\n // 2) refresh the page - open clause and revert => we need to get original clause text from the backend\n const handleRevertClick = async () => {\n const newValue = !isEditable;\n const clauseId = props.vendorPolicyClauseId;\n setIsEditable(newValue);\n setShowWarning(false);\n await dispatch(\n patchVendorPolicyClause(clauseId, {\n vendorPolicyId: props.vendorPolicyId,\n clauseTextIsCustom: newValue,\n })\n );\n setResetEditor(val => val + 1);\n };\n\n const handleToggleClick = () => {\n if (isEditable) {\n setShowWarning(true);\n return;\n }\n props.progress !== 1\n ? setShowIncompleteWarning(true)\n : handleCustomizeClick();\n };\n\n const someQuestionsAreTable = (props.questions || []).some(\n question => question.layout === 'table_layout'\n );\n return (\n \n \n
\n {props.allowCustomText && (\n <>\n 0 &&\n !isEditable &&\n 'Your answers generate the text for this clause. Click Edit to view and modify this clause')\n }\n />\n
\n {!someQuestionsAreTable && (\n \n {isPatching ? (\n \n ) : isEditable ? (\n 'Revert'\n ) : (\n 'Edit'\n )}\n \n )}\n setShowWarning(false)}\n onOk={handleRevertClick}\n />\n setShowIncompleteWarning(false)}\n title=\"View/Edit clause\"\n closeButtonLabel=\"Got it\"\n className=\"policyCategoryRow--incompleteWarningModal\"\n >\n Please complete all questions to view and edit this clause.\n \n
\n \n )}\n
\n
\n );\n};\n","import { faCircle } from '@fortawesome/pro-light-svg-icons/faCircle';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React, { useEffect, useState } from 'react';\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\nimport { useDispatch } from 'react-redux';\nimport { patchVendorPolicyClause } from '../../store/policies/policiesThunks';\nimport { VendorPolicyClause } from '../../swagger/models';\nimport { ToggleSwitch } from '../ToggleSwitch/ToggleSwitch';\nimport './PolicyClauseHeader.scss';\n\ninterface PolicyClauseHeaderProps {\n policyClause: VendorPolicyClause;\n progress: number;\n}\n\nexport const PolicyClauseHeader: React.FC = ({\n policyClause,\n progress,\n}) => {\n const dispatch = useDispatch();\n const [leaveOut, setLeaveOut] = useState(policyClause.leaveOut);\n\n const policyClauseHeaderTitleClasses = classNames({\n 'policyClauseHeader--title': true,\n 'policyClauseHeader--title-leftOut': leaveOut,\n });\n\n useEffect(() => {\n setLeaveOut(policyClause.leaveOut);\n }, [policyClause]);\n\n const tickClass = progress === 1 ? 'greenTick' : 'greyTick';\n const icon = progress === 1 ? faCheckCircle : faCircle;\n const excluded = leaveOut;\n const included = !excluded;\n\n return (\n
\n \n
{policyClause.name}
\n
\n
\n \n {excluded\n ? 'Slide to include clause'\n : 'Slide to exclude clause'}\n \n }\n placement=\"left\"\n >\n
\n {\n dispatch(\n patchVendorPolicyClause(policyClause.id, {\n vendorPolicyId: policyClause.vendorPolicyId,\n leaveOut: !leaveOut,\n })\n );\n }}\n />\n
\n \n
\n
\n
\n );\n};\n","import { faAngleLeft } from '@fortawesome/pro-light-svg-icons/faAngleLeft';\nimport { faCalendar } from '@fortawesome/pro-light-svg-icons/faCalendar';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport React, { useState } from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { DocumentType } from '../../constants/DocumentType';\nimport {\n mapShareFeaturesToAccessLevels,\n useHasFeature,\n} from '../../functions/access';\nimport { isVendorPolicyFilled } from '../../functions/isVendorPolicyFilled';\nimport { openPdfPreview } from '../../store/global/globalSlice';\nimport {\n showPolicyDrawer,\n updatePolicyToEdit,\n} from '../../store/policies/policiesSlice';\nimport { completePolicy } from '../../store/policies/policiesThunks';\nimport { showShareModal } from '../../store/vendors/vendorsSlice';\nimport { ShareableType } from '../../swagger';\nimport { AccessObject } from '../../types/accessObject';\nimport { ApplicationState } from '../../types/applicationState';\nimport { PdfOpenMode } from '../../types/pdfOpenMode';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { GenericModal } from '../GenericModal/GenericModal';\nimport { MeatballMenu } from '../MeatballMenu/MeatballMenu';\nimport { Panel } from '../Panel/Panel';\nimport { ProgressBar } from '../ProgressBar/ProgressBar';\nimport './PolicySummaryTile.scss';\nimport { faLink } from '@fortawesome/pro-light-svg-icons/faLink';\nimport { PolicyGetLinkInfo } from '../InProgressPoliciesGrid/InProgressPolicyRow';\nimport { draftPoliciesPageRoute } from '../Routes/Routes';\n\ninterface PolicySummaryTileProps {\n vendorPolicyId: string;\n progress: number;\n}\n\nexport const PolicySummaryTile: React.FC = props => {\n const vendorPolicy = useSelector((state: ApplicationState) =>\n state.policies.vendorPolicies.find(vp => vp.id === props.vendorPolicyId)\n );\n\n const isCompletingPolicy = useSelector(\n (state: ApplicationState) => state.policies.isCompletingPolicy\n );\n\n const isFilledIn = isVendorPolicyFilled(vendorPolicy);\n const [showModal, setShowModal] = useState(false);\n\n const dispatch = useDispatch();\n const canShare = useHasFeature(AccessObject.share, vendorPolicy?.access);\n\n if (!vendorPolicy) {\n return null;\n }\n\n const handleComplete = () => {\n setShowModal(true);\n };\n\n const handlePreview = () =>\n dispatch(\n openPdfPreview({\n mode: PdfOpenMode.Preview,\n documentType: DocumentType.Policy,\n title: vendorPolicy.name,\n url: `/api/v1/vendor_policies/${vendorPolicy.id}/pdf`,\n objectId: vendorPolicy.id,\n })\n );\n\n const handleShare = () =>\n dispatch(\n showShareModal({\n shareableId: vendorPolicy.id,\n shareableType: ShareableType.VendorPolicy,\n accessLevels: mapShareFeaturesToAccessLevels(\n vendorPolicy.access.feature\n ),\n showOnlyGetLink: true,\n getLinkInfo: PolicyGetLinkInfo,\n relativePath: vendorPolicy.relativePath,\n })\n );\n\n const handleEditOwnerClick = () => openDrawer();\n const handleSetReviewDate = () => openDrawer();\n\n const openDrawer = () => {\n dispatch(showPolicyDrawer());\n dispatch(updatePolicyToEdit(vendorPolicy));\n };\n\n const handleBackClick = () => {\n dispatch(push(draftPoliciesPageRoute));\n };\n\n return (\n <>\n \n setShowModal(false)}\n onClose={() => {\n dispatch(completePolicy(props.vendorPolicyId));\n setShowModal(false);\n }}\n show={showModal}\n showCancelButton\n title=\"Progress to approval\"\n >\n Click confirm to manage approvals and move this document from In\n Progress to Approvals.\n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
Policy
\n
\n {vendorPolicy.name}\n
\n
\n
\n
Progress
\n
\n {(props.progress * 100).toFixed(0)}%\n
\n
\n
\n
Version
\n
\n {vendorPolicy.version}\n
\n
\n
\n
\n {isFilledIn && (\n <>\n \n \n Preview\n \n \n \n Complete\n \n \n )}\n
\n
\n
\n \n \n \n Set review date\n \n \n \n Edit owner\n \n \n \n Get link\n \n \n
\n
\n
\n
\n
\n \n );\n};\n","import { push } from 'connected-react-router';\nimport moment from 'moment';\nimport React, { useEffect, useState } from 'react';\nimport { Accordion } from 'react-bootstrap';\nimport { useCookies } from 'react-cookie';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router';\nimport {\n getPdfDocumentPath,\n PdfPreviewEntityPaths,\n} from '../../../functions/routePathsHelpers';\nimport {\n fetchVendorPolicy,\n patchVendorPolicyProgress,\n} from '../../../store/policies/policiesThunks';\nimport { vendorPolicyCalculations } from '../../../functions/vendorPolicyCalculations';\nimport {\n VendorPolicyClause,\n VendorPolicyDetails,\n VendorPolicyDetailsStatusEnum,\n Question,\n} from '../../../swagger';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { PdfOpenMode } from '../../../types/pdfOpenMode';\nimport { AdoptechAccordionCard } from '../../../components/AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AutoSaveToast } from '../../../components/AutoSaveToast/AutoSaveToast';\nimport { GenericModal } from '../../../components/GenericModal/GenericModal';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport { PolicyCategoryRow } from '../../../components/PolicyCategoryRow/PolicyCategoryRow';\nimport { PolicyClauseHeader } from '../../../components/PolicyClauseHeader/PolicyClauseHeader';\nimport { PolicyDrawer } from '../../../components/PolicyDrawer/PolicyDrawer';\nimport { PolicySummaryTile } from '../../../components/PolicySummaryTile/PolicySummaryTile';\nimport './PolicyEditor.scss';\nimport { selectCurrentVendor } from '../../../selectors/selectCurrentVendor';\nimport { usePrevious } from 'react-use';\nimport { ToggleRefDiv, useExpandNextClause } from './useExpandNextClause';\n\nexport const PolicyEditor: React.FC = () => {\n const params = useParams() as { vendorPolicyId: string };\n const [cookies] = useCookies(['firstPolicyOpened']);\n // TODO use a separate state for edit page\n const vendorPolicy = useSelector((state: ApplicationState) =>\n state.policies.vendorPolicies.find(vp => vp.id === params.vendorPolicyId)\n );\n\n const currentUsername = useSelector(\n (state: ApplicationState) => state.user.userDetails.fullName\n );\n\n const currentVendor = useSelector(selectCurrentVendor);\n\n const [isPolicyEditingEnabled, setIsPolicyEditingEnabled] = useState(false);\n const [showAnotherUserEditingModal, setShowAnotherUserEditingModal] =\n useState(false);\n\n const dispatch = useDispatch();\n\n const onPolicyFetch = (policy: VendorPolicyDetails) => {\n if (\n policy.updatedBy !== currentUsername &&\n policy &&\n vendorPolicy &&\n !moment(policy.updatedAt).isSame(moment(vendorPolicy.updatedAt))\n ) {\n setShowAnotherUserEditingModal(true);\n } else {\n setIsPolicyEditingEnabled(true);\n }\n };\n\n useEffect(() => {\n dispatch(fetchVendorPolicy(params.vendorPolicyId, onPolicyFetch));\n }, [params.vendorPolicyId]);\n\n useEffect(() => {\n if (\n vendorPolicy?.status === VendorPolicyDetailsStatusEnum.Completed &&\n vendorPolicy?.vendorDocumentId\n ) {\n dispatch(\n push(\n getPdfDocumentPath({\n vendorDocumentId: vendorPolicy.vendorDocumentId,\n mode: PdfOpenMode.Preview,\n basePath: PdfPreviewEntityPaths.policies,\n })\n )\n );\n }\n }, [vendorPolicy?.status]);\n\n const previousVendorRef = usePrevious(currentVendor);\n useEffect(() => {\n if (previousVendorRef && previousVendorRef.id !== currentVendor.id) {\n dispatch(push('/r/governance/policies'));\n }\n }, [currentVendor]);\n\n const getActiveKey = () => {\n if (!cookies.firstPolicyOpened) {\n return '';\n }\n\n return getFirstClauseWithQuestions();\n };\n const clauses = (vendorPolicy?.vendorPolicyClauses || []).filter(clause => {\n return clause.questions?.length === 0 && !clause.allowCustomText // Need condition for Infosec Manual > Corrective actions clause\n ? false\n : true;\n });\n const getFirstClauseWithQuestions = () => {\n return (\n clauses\n ?.find(\n clause => clause.questions?.length > 0 && clauseProgress(clause) !== 1\n )\n ?.id.toString() || ''\n );\n };\n\n const { stats, visibleQuestionIds } = vendorPolicyCalculations(vendorPolicy);\n\n const visibleQuestion = (questions: Question[]) =>\n questions?.filter(q => visibleQuestionIds.includes(q.id));\n\n const clauseProgress = ({ id }: VendorPolicyClause) =>\n stats.find(s => s[0] == id)[1];\n\n const overallProgress =\n stats.reduce((acc, s) => acc + s[1], 0) / stats.length;\n\n const { toggleRefs, handleDone } = useExpandNextClause(\n clauses,\n clauseProgress\n );\n\n useEffect(() => {\n if (!Number.isNaN(overallProgress))\n dispatch(\n patchVendorPolicyProgress(params.vendorPolicyId, overallProgress)\n );\n }, [params.vendorPolicyId, overallProgress]);\n\n return isPolicyEditingEnabled ? (\n
\n \n
\n
\n
\n \n
\n
\n
\n \n {clauses.map((vpc, index) => (\n (toggleRefs.current[vpc.id] = ref)}\n title={\n \n }\n hasDoneButton\n nested\n nestedVerticalOffset={-180}\n headerOffset={101}\n shouldShowCoachmark={index === 0}\n handleDone={() => handleDone(vpc.id)}\n >\n \n \n ))}\n \n
\n
\n \n
\n ) : (\n <>\n {\n dispatch(push('/r/governance/policies'));\n }}\n title=\"Policy currently being edited\"\n >\n

\n This policy that you are trying to update is currently being edited by{' '}\n {vendorPolicy?.updatedBy}.\n

\n

Please try again later.

\n \n {!showAnotherUserEditingModal && (\n
\n \n
\n )}\n \n );\n};\n","// On click \"clause done\" we found the ref of the next \"clause toggle ref body\" and click on it\n\nimport { useRef } from 'react';\nimport { VendorPolicyClause } from '../../../swagger/models/VendorPolicyClause';\n\nexport type ToggleRefDiv = HTMLDivElement;\ninterface ToggleRefs {\n [key: string]: ToggleRefDiv;\n}\n\nexport const useExpandNextClause = (\n clauses: VendorPolicyClause[],\n clauseProgress: (clause: VendorPolicyClause) => number\n) => {\n const toggleRefs = useRef({});\n\n const handleDone = (id: VendorPolicyClause['id']) => {\n const clauseIndex = clauses.findIndex(clause => clause.id === id);\n const nextNotFinishedClause = clauses.find((clause, index) => {\n const nextClause = index > clauseIndex;\n const notFinishedClause =\n clause.questions?.length > 0 && clauseProgress(clause) !== 1;\n\n return nextClause && notFinishedClause;\n });\n\n toggleRefs.current[nextNotFinishedClause?.id]?.click();\n };\n\n return { toggleRefs, handleDone };\n};\n","import React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport policyTour1 from 'images/policyTour1.png';\nimport policyTour2 from 'images/policyTour2.png';\nimport policyTour3 from 'images/policyTour3.png';\nimport { clearPolicyHelp } from '../../store/global/globalSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './PolicyTour.scss';\n\nexport const PolicyTour: React.FC = () => {\n const dispatch = useDispatch();\n const [page, setPage] = useState(1);\n\n const showPolicyHelp = useSelector(\n (state: ApplicationState) => state.global.showPolicyHelp\n );\n\n useEffect(() => {\n setPage(1);\n }, [showPolicyHelp]);\n\n const renderPage = (pageNumber: number) => {\n switch (pageNumber) {\n case 1:\n return (\n <>\n \n Drafting the policy\n \n\n \n
\n \n

\n Simply answer the questions in each category to generate the\n policy text.\n

\n
\n
\n
\n \"Drafting\n
\n
\n \n );\n case 2:\n return (\n <>\n \n Editing the contents\n \n \n
\n \n

\n You can edit the text that has been generated by selecting\n 'Edit'.\n

\n
\n
\n
\n \"Editing\n
\n
\n \n );\n case 3:\n return (\n <>\n \n Completing the policy\n \n \n
\n \n

\n Once all the questions in all categories have been answered\n (or clauses left out), select COMPLETE to send the policy\n for approval.\n

\n
\n
\n
\n \"Completing\n
\n
\n \n );\n }\n };\n\n return (\n dispatch(clearPolicyHelp())}\n className=\"policyTour\"\n >\n {renderPage(page)}\n \n {page > 1 ? (\n {\n setPage(page - 1);\n }}\n >\n Back\n \n ) : (\n
\n )}\n {page < 3 && (\n {\n setPage(page + 1);\n }}\n variant={AdoptechButtonVariant.Primary}\n >\n Next\n \n )}\n {page === 3 && (\n {\n dispatch(clearPolicyHelp());\n }}\n variant={AdoptechButtonVariant.Primary}\n >\n Got it\n \n )}\n \n \n );\n};\n","import React from 'react';\nimport './AdoptechTagAutocomplete.scss';\nimport ReactTags, { ReactTagsProps } from 'react-tag-autocomplete';\n\ntype AdoptechTagAutocompleteProps = ReactTagsProps;\n\nexport const AdoptechTagAutocomplete = (\n props: AdoptechTagAutocompleteProps\n) => {\n return ;\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n SuggestionComponentProps,\n Tag,\n TagComponentProps,\n} from 'react-tag-autocomplete';\nimport { isValidEmailAddress } from '../../functions/isValidEmailAddress';\nimport { fetchShareSuggestions } from '../../store/vendors/vendorsThunks';\nimport { ShareableType } from '../../swagger/models';\nimport { ApplicationState } from '../../types/applicationState';\nimport { AdoptechTagAutocomplete } from '../AdoptechTagAutocomplete/AdoptechTagAutocomplete';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\nimport { selectUsers } from '../../selectors/selectUsers';\n\ninterface ShareAutocompleteProps {\n usersToShare: Tag[];\n onUpdate: (newUsers: Tag[]) => void;\n vendorId: string;\n shareableType: ShareableType;\n shareableId: string;\n minQueryLength?: number;\n}\n\nexport const ShareAutocomplete: React.FC = ({\n usersToShare,\n onUpdate,\n vendorId,\n shareableType,\n shareableId,\n minQueryLength,\n}: ShareAutocompleteProps) => {\n const dispatch = useDispatch();\n const shareSuggestions = useSelector(\n (state: ApplicationState) => state.vendors.shareSuggestions\n );\n const [suggestionOptions, setSuggestionOptions] = useState([]);\n const [inputValue, setInputValue] = useState('');\n\n useEffect(() => {\n const timer = setTimeout(() => {\n if (inputValue) {\n dispatch(\n fetchShareSuggestions({\n textSearch: inputValue,\n id: vendorId,\n shareableType,\n shareableId,\n })\n );\n }\n }, 300);\n return () => clearTimeout(timer);\n }, [inputValue]);\n\n useEffect(() => {\n if (shareSuggestions) {\n const options = shareSuggestions.data?.map(item => {\n if (item?.user) {\n return {\n id: item.user.id,\n name: item.user.email,\n };\n }\n });\n options && setSuggestionOptions(options);\n }\n }, [shareSuggestions]);\n\n const vendorUsers = useSelector((state: ApplicationState) =>\n selectUsers(state)\n );\n\n const getUser = (userId?: Tag['id']) => {\n if (!userId) return;\n return vendorUsers?.find(u => u.userId === userId.toString());\n };\n\n const TagComponent: React.FC = props => {\n const user = getUser(props.tag.id);\n\n return (\n \n );\n };\n\n const SuggestionComponent: React.FC = props => {\n const user = getUser(props.item.id);\n return user ? : null;\n };\n\n return (\n \n !usersToShare.find(\n (userToShare: Tag) => userToShare.name === suggestion.name\n )\n }\n onAddition={(tag: Tag) => onUpdate([...usersToShare, tag])}\n onValidate={(tag: Tag) => {\n if (!isValidEmailAddress(tag.name)) return false;\n return !usersToShare.find(\n (userToShare: Tag) => userToShare.name === tag.name\n );\n }}\n onDelete={(index: number) => {\n const newUsersToShare = [...usersToShare];\n newUsersToShare.splice(index, 1);\n onUpdate(newUsersToShare);\n }}\n onInput={(input: string) => {\n setInputValue(input);\n }}\n placeholderText=\"\"\n allowNew\n tags={usersToShare}\n suggestions={suggestionOptions}\n noSuggestionsText=\"No matching users\"\n removeButtonText=\"Click to remove\"\n tagComponent={TagComponent}\n suggestionComponent={SuggestionComponent}\n />\n );\n};\n","import { SelectionOption } from '../../types/selectionOption';\nimport { ShareableType, ShareAccessLevel } from '../../swagger/models';\n\nexport const allPermissionsOptions: SelectionOption[] = [\n {\n value: ShareAccessLevel.Contributor,\n label: 'Contributor',\n },\n {\n value: ShareAccessLevel.Manager,\n label: 'Manager',\n },\n {\n value: ShareAccessLevel.Viewer,\n label: 'Viewer',\n },\n];\n\nexport const ShareTypesAndTitles = {\n [ShareableType.Agreement]: 'Agreement',\n [ShareableType.Assessment]: 'Assessment',\n [ShareableType.AssessmentResponse]: 'Assessment',\n [ShareableType.Audit]: 'Audit',\n [ShareableType.Checklist]: 'Checklist',\n [ShareableType.ChecklistTemplate]: 'Checklist',\n [ShareableType.VendorDocument]: 'Document',\n [ShareableType.VendorPolicy]: 'Policy',\n [ShareableType.DataRoomEntity]: 'DataRoomEntity',\n};\n","import { faTimes } from '@fortawesome/pro-light-svg-icons/faTimes';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { capitalize } from '../../functions/capitalize';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport { ShareableObject } from '../../store/vendors/vendorsState';\nimport { fetchShares } from '../../store/vendors/vendorsThunks';\nimport {\n MultipleShareShares,\n ShareAccessLevel,\n SharesListData,\n SharesListDataPossibleAccessLevelsEnum,\n} from '../../swagger/models';\nimport { ApplicationState } from '../../types/applicationState';\nimport { SelectionOption } from '../../types/selectionOption';\nimport { AdoptechReactSelect } from '../AdoptechReactSelect/AdoptechReactSelect';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { allPermissionsOptions } from '../ShareModal/constants';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\nimport './SharesTable.scss';\n\ninterface SharesTableProps {\n shareableObject: ShareableObject;\n hidden: boolean;\n onChangePermissions: (toChange: MultipleShareShares) => void;\n onDeletePermissions: (emailToDelete: string) => void;\n permissionsToUpdate: {\n toChangeList: MultipleShareShares[];\n toDeleteList: string[];\n };\n}\n\nexport const SharesTable: React.FC = ({\n shareableObject,\n hidden,\n onChangePermissions,\n onDeletePermissions,\n permissionsToUpdate,\n}: SharesTableProps) => {\n const currentUser = useSelector(\n (state: ApplicationState) => state.user.userDetails\n );\n const currentVendor = useSelector(selectCurrentVendor);\n\n const dispatch = useDispatch();\n const sharesList = useSelector(\n (state: ApplicationState) => state.vendors.sharesList\n );\n const displaySharesList = useMemo(() => {\n if (sharesList?.data?.length) {\n const { toChangeList, toDeleteList } = permissionsToUpdate;\n return sharesList.data\n .filter(\n (share: SharesListData) =>\n toDeleteList.indexOf(share.user.email) === -1\n )\n .map((share: SharesListData) => {\n const changedShare = toChangeList.find(\n item => item.email === share.user.email\n );\n if (!changedShare) return share;\n return { ...share, accessLevel: changedShare.accessLevel };\n });\n }\n return [];\n }, [permissionsToUpdate, sharesList]);\n\n const isFetchingSharesList = useSelector(\n (state: ApplicationState) => state.vendors.isFetchingSharesList\n );\n\n const execFetchShares = () => {\n dispatch(\n fetchShares({\n id: currentVendor.id,\n shareableType: shareableObject.shareableType,\n shareableId: shareableObject.shareableId,\n })\n );\n };\n\n useEffect(() => {\n shareableObject && execFetchShares();\n }, [shareableObject]);\n\n const handleAccessLevelChange = (\n accessLevel: string,\n shareInfo: SharesListData\n ) => {\n onChangePermissions({\n email: shareInfo.user.email,\n accessLevel: accessLevel as ShareAccessLevel,\n });\n };\n\n const renderAccessLevel = (shareInfo: SharesListData) => {\n if (\n shareInfo.possibleAccessLevels &&\n shareInfo.possibleAccessLevels.length > 1\n ) {\n const options = allPermissionsOptions.filter(\n (opt: SelectionOption) =>\n shareInfo.possibleAccessLevels.indexOf(\n opt.value as SharesListDataPossibleAccessLevelsEnum\n ) !== -1\n );\n return (\n opt.value === shareInfo.accessLevel)}\n id=\"sharesTable--selectPermission\"\n onChange={(selection: SelectionOption) =>\n handleAccessLevelChange(selection.value, shareInfo)\n }\n options={options}\n />\n );\n }\n return capitalize(shareInfo.accessLevel);\n };\n\n if (hidden) {\n return null;\n }\n\n return (\n
\n \n \n \n Permissioned users\n Permissions\n \n \n \n \n {isFetchingSharesList ? (\n \n \n \n \n \n ) : (\n displaySharesList.map((shareInfo: SharesListData) => (\n \n \n \n \n {renderAccessLevel(shareInfo)}\n \n {shareInfo.directShare &&\n shareInfo.user.email !== currentUser.email && (\n \n onDeletePermissions(shareInfo.user.email)\n }\n />\n )}\n \n \n ))\n )}\n \n \n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n shareEntity,\n updateSharePermissions,\n} from '../../store/vendors/vendorsThunks';\nimport {\n MultipleShare,\n MultipleShareShares,\n ShareAccessLevel,\n} from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport { SelectionOption } from '../../types/selectionOption';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AdoptechReactSelect } from '../AdoptechReactSelect/AdoptechReactSelect';\nimport { AdoptechTextArea } from '../AdoptechTextArea/AdoptechTextArea';\nimport './ShareModal.scss';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\n\nimport { Tag } from 'react-tag-autocomplete';\nimport { ShareAutocomplete } from '../ShareAutocomplete/ShareAutocomplete';\nimport { hideShareModal } from '../../store/vendors/vendorsSlice';\nimport { allPermissionsOptions, ShareTypesAndTitles } from './constants';\nimport { SharesTable } from '../SharesTable/SharesTable';\nimport { faLink } from '@fortawesome/pro-light-svg-icons/faLink';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { showGlobalToast } from '../../store/global/globalSlice';\nimport classNames from 'classnames';\nimport { Interweave } from 'interweave';\n\nconst permissionsToUpdateInitial: {\n toChangeList: MultipleShareShares[];\n toDeleteList: string[];\n} = {\n toChangeList: [],\n toDeleteList: [],\n};\n\nexport const ShareModal: React.FC = () => {\n const [permissionsToUpdate, setPermissionsToUpdate] = useState(\n permissionsToUpdateInitial\n );\n const [message, setMessage] = useState('');\n const [usersToShare, setUsersToShare] = useState([]);\n const [selectedPermission, setSelectedPermission] = useState();\n const [permissionsOptions, setPermissionsOptions] = useState<\n SelectionOption[]\n >([]);\n const currentVendor = useSelector(selectCurrentVendor);\n\n const shareableObject = useSelector(\n (state: ApplicationState) => state.vendors.shareableObject\n );\n const isSharingModalShowing = useSelector(\n (state: ApplicationState) => state.vendors.isSharingModalShowing\n );\n const isRequestingShare = useSelector(\n (state: ApplicationState) => state.vendors.isRequestingShare\n );\n const isRequestingDeletePermissions = useSelector(\n (state: ApplicationState) => state.vendors.isRequestingDeletePermissions\n );\n const usersAreAdded = Boolean(usersToShare.length);\n const isShareButtonDisabled = !usersAreAdded || !selectedPermission;\n const isDoneButtonDisabled =\n !permissionsToUpdate.toChangeList.length &&\n !permissionsToUpdate.toDeleteList.length;\n const typeTitle =\n shareableObject?.title ||\n ShareTypesAndTitles[shareableObject?.shareableType];\n const dispatch = useDispatch();\n\n const handleChangePermissions = (toChange: MultipleShareShares) => {\n setPermissionsToUpdate({\n ...permissionsToUpdate,\n toChangeList: [\n ...permissionsToUpdate.toChangeList.filter(\n share => share.email !== toChange.email\n ),\n toChange,\n ],\n });\n };\n\n const handleDeletePermissions = (emailToDelete: string) => {\n setPermissionsToUpdate({\n toChangeList: permissionsToUpdate.toChangeList.filter(\n share => share.email !== emailToDelete\n ),\n toDeleteList: [...permissionsToUpdate.toDeleteList, emailToDelete],\n });\n };\n\n const handleUpdatePermissions = (shouldHide = true) => {\n if (isDoneButtonDisabled) return;\n const { toChangeList, toDeleteList } = permissionsToUpdate;\n dispatch(\n updateSharePermissions({\n id: currentVendor.id,\n shareableType: shareableObject.shareableType,\n shareableId: shareableObject.shareableId,\n multipleShare: { shares: toChangeList },\n emailsToDelete: toDeleteList,\n onSuccess: () => {\n dispatch(showGlobalToast('The permissions has been updated'));\n shouldHide && dispatch(hideShareModal());\n },\n })\n );\n setPermissionsToUpdate(permissionsToUpdateInitial);\n };\n\n const handleShare = () => {\n const multipleShare: MultipleShare = {\n message,\n shares: usersToShare.map((userToShare: Tag) => ({\n email: userToShare.name,\n accessLevel: selectedPermission as ShareAccessLevel,\n })),\n };\n dispatch(\n shareEntity({\n id: currentVendor.id,\n shareableType: shareableObject.shareableType,\n shareableId: shareableObject.shareableId,\n multipleShare,\n onSuccess: () => {\n dispatch(hideShareModal());\n dispatch(showGlobalToast('Your document has been shared.'));\n },\n })\n );\n };\n\n useEffect(() => {\n if (shareableObject) {\n const options = allPermissionsOptions.filter(\n opt =>\n shareableObject.accessLevels.indexOf(\n opt.value as ShareAccessLevel\n ) !== -1\n );\n setPermissionsOptions(options);\n }\n }, [shareableObject]);\n\n useEffect(() => {\n if (!isSharingModalShowing) {\n setMessage('');\n setUsersToShare([]);\n setSelectedPermission(null);\n setPermissionsOptions([]);\n }\n }, [isSharingModalShowing]);\n\n if (!shareableObject) {\n return null;\n }\n\n const handleCancel = () => {\n setPermissionsToUpdate(permissionsToUpdateInitial);\n dispatch(hideShareModal());\n };\n\n const showOnlyGetLink = shareableObject.showOnlyGetLink;\n const getLinkInfo: string = shareableObject.getLinkInfo;\n\n const GetLinkFooter = (\n
\n
\n
\n \n
Get link
\n
\n {getLinkInfo && (\n
\n \n
\n )}\n
\n {\n const tempInput = document.body.appendChild(\n document.createElement('input')\n );\n tempInput.value =\n window.location.origin + shareableObject.relativePath;\n tempInput.focus();\n tempInput.select();\n document.execCommand('copy');\n tempInput.parentNode.removeChild(tempInput);\n dispatch(showGlobalToast('Link copied to clipboard.'));\n }}\n >\n Copy link\n
\n
\n );\n\n if (showOnlyGetLink) {\n return (\n \n {GetLinkFooter}\n \n );\n }\n\n return (\n \n Share {typeTitle}\n \n
\n \n
Add people
\n {\n handleUpdatePermissions(false);\n setUsersToShare(newUsers);\n }}\n vendorId={currentVendor.id}\n shareableType={shareableObject.shareableType}\n shareableId={shareableObject.shareableId}\n />\n
\n\n {usersAreAdded && (\n
\n
Permissions
\n \n setSelectedPermission(selection.value)\n }\n options={permissionsOptions}\n />\n
\n )}\n \n\n {usersAreAdded && (\n
\n
Add optional message
\n {\n setMessage(e.currentTarget.value);\n }}\n value={message}\n />\n
\n )}\n
\n \n Cancel\n {usersAreAdded ? (\n \n SHARE\n \n ) : (\n handleUpdatePermissions()}\n variant={AdoptechButtonVariant.Primary}\n >\n Done\n \n )}\n \n {!usersAreAdded && GetLinkFooter}\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { push } from 'connected-react-router';\nimport { useQueryParams } from '../../hooks/useQueryParams';\nimport { showWarningSubscriptionLimitModal } from '../../store/vendors/vendorsSlice';\n\nexport const StripeSignupError: React.FC = () => {\n const queryParams = useQueryParams();\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (queryParams.get('subscription_users_limit_error')) {\n dispatch(showWarningSubscriptionLimitModal());\n dispatch(push('/r/home'));\n return;\n }\n }, []);\n\n return ;\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport './StripeSignupSuccess.scss';\nimport { fetchAgreements } from '../../../store/agreements/agreementsThunks';\nimport { selectCurrentVendor } from '../../../selectors/selectCurrentVendor';\nimport { fetchVendorPoliciesDetails } from '../../../store/policies/policiesThunks';\nimport { showIsPaymentSuccessfulShowing } from '../../../store/policies/policiesSlice';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { push } from 'connected-react-router';\nimport { useQueryParams } from '../../../hooks/useQueryParams';\nimport {\n agreementsPageRoute,\n policiesPageRoute,\n} from '../../../components/Routes/Routes';\n\nexport const StripeSignupSuccess: React.FC = () => {\n const params = useParams() as {\n purchasableId: string;\n };\n const queryParams = useQueryParams();\n const agreements = useSelector(\n (state: ApplicationState) => state.agreements.agreements\n );\n const vendorPolicies = useSelector(\n (state: ApplicationState) => state.policies.vendorPolicies\n );\n const currentVendor = useSelector(selectCurrentVendor);\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (!params.purchasableId) {\n dispatch(push('/r/home'));\n return;\n }\n\n dispatch(fetchAgreements(currentVendor.id));\n dispatch(fetchVendorPoliciesDetails());\n dispatch(showIsPaymentSuccessfulShowing());\n }, []);\n\n useEffect(() => {\n // TODO: remove code below if we will remove one-time payments backend\n if (!agreements.length && !vendorPolicies.length) {\n return;\n }\n\n if (\n agreements.findIndex(\n a => a.agreementTemplateId === params.purchasableId\n ) > -1\n ) {\n dispatch(push(agreementsPageRoute));\n return;\n }\n\n if (\n vendorPolicies.findIndex(p => p.policyId === params.purchasableId) > -1\n ) {\n dispatch(push(policiesPageRoute));\n return;\n }\n\n dispatch(push('/r/home'));\n }, [agreements, vendorPolicies]);\n\n return (\n
\n \n
\n );\n};\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport getTableValue from '../../functions/getTableValue';\nimport { hideDeleteTableAnswersModal } from '../../store/assessments/assessmentsSlice';\nimport { deleteAssessmentResponseAnswers } from '../../store/assessments/assessmentsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\n\nexport const TableAnswerDeleteModal: React.FC = () => {\n const dispatch = useDispatch();\n const {\n isShowingDeleteTableAnswersModal,\n currentTableQuestions,\n currentTableAnswerIndex,\n } = useSelector((state: ApplicationState) => state.assessments);\n\n const handleDelete = () => {\n dispatch(\n deleteAssessmentResponseAnswers(\n currentTableQuestions?.map(\n q => q.answers.find(x => x.index === currentTableAnswerIndex)?.id\n ),\n currentTableQuestions\n )\n );\n };\n\n return (\n dispatch(hideDeleteTableAnswersModal())}\n show={isShowingDeleteTableAnswersModal}\n >\n Delete\n \n Are you sure you wish to delete this row?\n
\n
    \n {currentTableQuestions?.map(question => (\n \n
  • \n {question.questionText}:{' '}\n {getTableValue(question, currentTableAnswerIndex)}\n
  • \n
    \n ))}\n
\n
\n \n dispatch(hideDeleteTableAnswersModal())}>\n Cancel\n \n \n CONFIRM\n \n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport flattenArray from '../../functions/flattenArray';\nimport { hideEditTableAnswersModal } from '../../store/assessments/assessmentsSlice';\nimport { patchAssessmentResponse } from '../../store/assessments/assessmentsThunks';\nimport {\n AssessmentResponseAnswer,\n AssessmentResponseAnswerStatusEnum,\n} from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AnswerFormControl } from '../AnswerFormControl/AnswerFormControl';\nimport './TableAnswerEditModal.scss';\nimport { QuestionType } from '../../types/QuestionType';\nimport { CommonAnswerType } from '../../types/CommonAnswerType';\n\ninterface TableAnswers {\n [key: string]: string;\n}\n\nconst transformAnswerToResponse = ({\n name,\n value,\n index,\n datatype,\n}: {\n name?: string;\n value?: string;\n index?: number;\n datatype?: string;\n}) => {\n return {\n name,\n value,\n index,\n datatype,\n status: AssessmentResponseAnswerStatusEnum.Answered,\n };\n};\n\nexport const TableAnswerEditModal: React.FC = () => {\n const dispatch = useDispatch();\n\n const routeParts = useSelector((state: ApplicationState) =>\n state.router.location.pathname.split('/')\n );\n const assessmentResponseId = routeParts[routeParts.length - 1];\n\n const isShowingEditTableAnswersModal = useSelector(\n (state: ApplicationState) =>\n state.assessments.isShowingEditTableAnswersModal\n );\n const currentTableQuestions = useSelector(\n (state: ApplicationState) => state.assessments.currentTableQuestions\n );\n const currentTableAnswerIndex = useSelector(\n (state: ApplicationState) => state.assessments.currentTableAnswerIndex\n );\n\n const maxIndex = Math.max(\n ...flattenArray(\n currentTableQuestions?.map(q => q.answers.map(a => a.index || 0))\n )\n );\n\n let isAdd = false;\n if (currentTableAnswerIndex > maxIndex) {\n isAdd = true;\n }\n\n const getTableAnswers = () => {\n const answers: TableAnswers = {};\n currentTableQuestions?.forEach(q => {\n answers[q.name] =\n q.answers.find(a => a.index === currentTableAnswerIndex)?.value || '';\n });\n return answers;\n };\n\n const [tableAnswers, setTableAnswers] =\n useState(getTableAnswers());\n\n useEffect(() => {\n setTableAnswers(getTableAnswers());\n }, [currentTableQuestions, currentTableAnswerIndex]);\n\n useEffect(() => {\n if (!isShowingEditTableAnswersModal) {\n setTableAnswers({});\n }\n }, [isShowingEditTableAnswersModal]);\n\n const handleAdd = () => {\n const assessmentResponseAnswers: AssessmentResponseAnswer[] = [];\n currentTableQuestions.forEach((question: QuestionType) => {\n question.answers.forEach(answer => {\n const answerToAdd: CommonAnswerType =\n answer.index === currentTableAnswerIndex\n ? transformAnswerToResponse({\n name: question.name,\n value: tableAnswers[question.name],\n index: currentTableAnswerIndex,\n datatype: currentTableQuestions?.find(\n q => q.name === question.name\n ).datatype,\n })\n : transformAnswerToResponse(answer);\n assessmentResponseAnswers.push(answerToAdd);\n });\n });\n if (isAdd) {\n Object.keys(tableAnswers).forEach(questionName => {\n assessmentResponseAnswers.push(\n transformAnswerToResponse({\n name: questionName,\n value: tableAnswers[questionName],\n index: currentTableAnswerIndex,\n datatype: currentTableQuestions?.find(q => q.name === questionName)\n .datatype,\n })\n );\n });\n }\n\n dispatch(\n patchAssessmentResponse({\n id: assessmentResponseId,\n assessmentResponse: {\n assessmentResponseAnswers,\n },\n mode: 'table',\n })\n );\n };\n\n const handleChange = (answers: AssessmentResponseAnswer[]) => {\n const answer = answers[0];\n setTableAnswers(a => ({ ...a, [answer.name]: answer.value }));\n };\n\n return (\n dispatch(hideEditTableAnswersModal())}\n show={isShowingEditTableAnswersModal}\n >\n {isAdd ? 'Add' : 'Edit'}\n \n {currentTableQuestions?.map(question => (\n \n
{question.questionText}
\n
\n \n
\n
\n ))}\n
\n \n {\n dispatch(hideEditTableAnswersModal());\n }}\n >\n Cancel\n \n \n {isAdd ? 'Add' : 'Edit'}\n \n \n \n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { vendorSupplierSort } from '../functions/vendorSupplierSort';\nimport { VendorSupplierModel } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\nimport { Grid } from '../types/grid';\nimport { selectSortSettings } from './selectSortSettings';\n\nexport const selectVendorSuppliers = createSelector(\n (state: ApplicationState) => state.vendors.vendorSuppliers,\n selectSortSettings(Grid.VendorRegister),\n (vendorSuppliers: VendorSupplierModel[], sortSetting) => {\n if (vendorSuppliers?.length) {\n return [...vendorSuppliers].sort((a, b) =>\n vendorSupplierSort(a, b, sortSetting.columnSort)\n );\n }\n return [];\n }\n);\n","import { VendorSupplierModel } from '../swagger';\nimport { ColumnSort } from '../types/columnSort';\nimport { SortDirection } from '../types/sortDirection';\nimport { sort } from './sort';\n\nexport const vendorSupplierSort = (\n a: VendorSupplierModel,\n b: VendorSupplierModel,\n columnSort: ColumnSort\n): number => {\n let direction = 1;\n if (columnSort.direction === SortDirection.Ascending) {\n direction = -1;\n }\n\n const typedColumn: keyof VendorSupplierModel =\n columnSort.name as keyof VendorSupplierModel;\n\n switch (typedColumn) {\n case 'owner':\n return sort(\n a.owner?.fullName || a.owner?.email || '',\n b.owner?.fullName || b.owner?.email || '',\n direction\n );\n default:\n return sort(a[typedColumn], b[typedColumn], direction);\n }\n};\n","import classNames from 'classnames';\nimport React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\nimport './VendorRegisterRiskProfile.scss';\n\nexport interface RiskInfo {\n riskSeverity: number;\n riskLevel?: keyof RiskLevel;\n}\n\ninterface VendorRegisterRiskProfileProps {\n riskInfo: RiskInfo;\n scale?: number;\n}\n\nexport enum RiskLevel {\n 'Very Low',\n 'Low',\n 'Medium',\n 'High',\n 'Critical',\n}\n\nexport const VendorRegisterRiskProfile: React.FC<\n VendorRegisterRiskProfileProps\n> = ({ riskInfo, scale = 10 }) => {\n const baseCss = 'vendorRegisterRiskProfile';\n return (\n \n
\n
{riskInfo.riskLevel}
\n
\n \n
\n
\n
{riskInfo.riskSeverity}
\n \n );\n};\n","import React from 'react';\nimport './VendorSupplierLogo.scss';\n\nimport adobeLogo from 'images/suppliers/adobe.svg';\nimport adoptechLogo from 'images/suppliers/adoptech.svg';\nimport asanaLogo from 'images/suppliers/asana.svg';\nimport atlassianLogo from 'images/suppliers/atlassian.svg';\nimport awsLogo from 'images/suppliers/aws.png';\nimport breatheLogo from 'images/suppliers/breathe.png';\nimport cartaLogo from 'images/suppliers/carta.png';\nimport cassiniLogo from 'images/suppliers/cassini.png';\nimport cloudflareLogo from 'images/suppliers/cloudflare.svg';\nimport curveLogo from 'images/suppliers/curve.png';\nimport cyberSmartLogo from 'images/suppliers/cyberSmart.png';\nimport datadogLogo from 'images/suppliers/datadog.svg';\nimport deelLogo from 'images/suppliers/deel.svg';\nimport docusignLogo from 'images/suppliers/docusign.png';\nimport dropboxLogo from 'images/suppliers/dropbox.svg';\nimport figmaLogo from 'images/suppliers/figma.svg';\nimport fontawesomeLogo from 'images/suppliers/fontawesome.svg';\nimport freshworksLogo from 'images/suppliers/freshworks.svg';\nimport froalaLogo from 'images/suppliers/froala.png';\nimport gitHubLogo from 'images/suppliers/gitHub.svg';\nimport goDaddyLogo from 'images/suppliers/goDaddy.svg';\nimport googleLogo from 'images/suppliers/googleSuite.png';\nimport hubspotLogo from 'images/suppliers/hubspot.svg';\nimport intercomLogo from 'images/suppliers/intercom.svg';\nimport jiraLogo from 'images/suppliers/jira.svg';\nimport mailchimpLogo from 'images/suppliers/mailchimp.svg';\nimport microsoftLogo from 'images/suppliers/microsoft.svg';\nimport oceanLogo from 'images/suppliers/ocean.png';\nimport onePasswordLogo from 'images/suppliers/1password.svg';\nimport oracleLogo from 'images/suppliers/oracle.svg';\nimport salesforceLogo from 'images/suppliers/salesforce.svg';\nimport seedLegalsLogo from 'images/suppliers/seedLegals.png';\nimport senchaLogo from 'images/suppliers/sencha.svg';\nimport sendGridLogo from 'images/suppliers/sendGrid.svg';\nimport sentryLogo from 'images/suppliers/sentry.svg';\nimport servicenowLogo from 'images/suppliers/servicenow.svg';\nimport shopifyLogo from 'images/suppliers/shopify.svg';\nimport slackLogo from 'images/suppliers/slack.svg';\nimport stripeLogo from 'images/suppliers/stripe.png';\nimport surveymonkeyLogo from 'images/suppliers/surveymonkey.svg';\nimport twilioLogo from 'images/suppliers/twilio.svg';\nimport wordpressLogo from 'images/suppliers/wordpress.svg';\nimport workdayLogo from 'images/suppliers/workday.svg';\nimport xeroLogo from 'images/suppliers/xero.svg';\nimport zendeskLogo from 'images/suppliers/zendesk.svg';\nimport zoomLogo from 'images/suppliers/zoom.svg';\n\ninterface Props {\n name: string;\n}\n\ninterface Supplier {\n name: string;\n logo: any;\n}\n\nexport const supportedSuppliers = [\n { name: '1Password', logo: onePasswordLogo },\n { name: 'Adobe', logo: adobeLogo },\n { name: 'Adoptech', logo: adoptechLogo },\n { name: 'Amazon Web Services', logo: awsLogo },\n { name: 'Asana', logo: asanaLogo },\n { name: 'Atlassian', logo: atlassianLogo },\n { name: 'Breathe', logo: breatheLogo },\n { name: 'Carta', logo: cartaLogo },\n { name: 'Cassini System Ltd', logo: cassiniLogo },\n { name: 'Cloudflare', logo: cloudflareLogo },\n { name: 'Curve', logo: curveLogo },\n { name: 'CyberSmart', logo: cyberSmartLogo },\n { name: 'Datadog', logo: datadogLogo },\n { name: 'Deel', logo: deelLogo },\n { name: 'DocuSign', logo: docusignLogo },\n { name: 'Dropbox', logo: dropboxLogo },\n { name: 'Figma', logo: figmaLogo },\n { name: 'FontAwesome', logo: fontawesomeLogo },\n { name: 'Freshworks', logo: freshworksLogo },\n { name: 'Froala', logo: froalaLogo },\n { name: 'GitHub', logo: gitHubLogo },\n { name: 'GoDaddy', logo: goDaddyLogo },\n { name: 'Google Suite', logo: googleLogo },\n { name: 'HubSpot', logo: hubspotLogo },\n { name: 'Intercom, Inc.', logo: intercomLogo },\n { name: 'Jira', logo: jiraLogo },\n { name: 'Mailchimp', logo: mailchimpLogo },\n { name: 'Microsoft', logo: microsoftLogo },\n { name: 'Ocean.io', logo: oceanLogo },\n { name: 'Oracle', logo: oracleLogo },\n { name: 'SalesForce', logo: salesforceLogo },\n { name: 'SeedLegals', logo: seedLegalsLogo },\n { name: 'Sencha', logo: senchaLogo },\n { name: 'SendGrid', logo: sendGridLogo },\n { name: 'Sentry', logo: sentryLogo },\n { name: 'ServiceNow', logo: servicenowLogo },\n { name: 'Shopify', logo: shopifyLogo },\n { name: 'Slack', logo: slackLogo },\n { name: 'Stripe', logo: stripeLogo },\n { name: 'SurveyMonkey', logo: surveymonkeyLogo },\n { name: 'Twilio', logo: twilioLogo },\n { name: 'WordPress', logo: wordpressLogo },\n { name: 'Workday, Inc.', logo: workdayLogo },\n { name: 'Xero', logo: xeroLogo },\n { name: 'Zendesk', logo: zendeskLogo },\n { name: 'Zoom', logo: zoomLogo },\n];\n\nexport const VendorSupplierLogo: React.FC = ({ name }) => {\n const supplier: Supplier = supportedSuppliers.find(\n (sp: Supplier) => sp.name === name\n );\n const logoImage = supplier?.logo;\n\n if (!logoImage) return
{name}
;\n\n return (\n <>\n
\n {name}\n
\n
{name}
\n \n );\n};\n","import { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { faCircleXmark } from '@fortawesome/pro-solid-svg-icons/faCircleXmark';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useCanFeature } from '../../functions/access';\nimport { capitaliseFirst } from '../../functions/capitaliseFirst';\nimport { capitalize } from '../../functions/capitalize';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { faClock } from '@fortawesome/pro-solid-svg-icons/faClock';\nimport {\n VendorSupplierModel,\n VendorSupplierAccessControl,\n VendorSupplierStatus,\n} from '../../swagger';\nimport { AccessObject } from '../../types/accessObject';\nimport AdoptechOverflowLine from '../AdoptechOverflowLine/AdoptechOverflowLine';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\nimport {\n RiskInfo,\n RiskLevel,\n VendorRegisterRiskProfile,\n} from '../VendorRegisterRiskProfile/VendorRegisterRiskProfile';\nimport './VendorRegisterRow.scss';\nimport { VendorSupplierLogo } from '../../features/risk/vendor/VendorSupplierLogo';\nimport moment from 'moment';\n\ninterface VendorRegisterRowProps {\n vendorSupplier: VendorSupplierModel;\n onClick?(): void;\n}\n\nexport const getVendorRegistryRiskInfo = (severity: number): RiskInfo => {\n const risk: RiskInfo = { riskSeverity: severity };\n switch (severity) {\n case 1:\n case 2:\n risk.riskLevel = 'Very Low' as keyof RiskLevel;\n break;\n case 3:\n case 4:\n risk.riskLevel = 'Low' as keyof RiskLevel;\n break;\n case 5:\n case 6:\n risk.riskLevel = 'Medium' as keyof RiskLevel;\n break;\n case 7:\n case 8:\n risk.riskLevel = 'High' as keyof RiskLevel;\n break;\n case 9:\n case 10:\n risk.riskLevel = 'Critical' as keyof RiskLevel;\n break;\n default:\n return risk;\n }\n return risk;\n};\n\nexport const VendorRegisterRow: React.FC = ({\n vendorSupplier,\n onClick,\n}) => {\n const baseCss = 'vendorRegisterRow';\n const baseTableCss = 'adoptechGridTable';\n const canManageRegister = useCanFeature(AccessObject.vendor_register_manage);\n const isActive = vendorSupplier.status === VendorSupplierStatus.Active;\n const isOverdue =\n vendorSupplier.reviewDate &&\n moment(vendorSupplier.reviewDate).isBefore(new Date());\n\n return (\n \n
\n \n
\n \n
\n {vendorSupplier.accessControl === VendorSupplierAccessControl.Sso ||\n vendorSupplier.accessControl === VendorSupplierAccessControl._2fa\n ? vendorSupplier.accessControl.toUpperCase()\n : capitaliseFirst(vendorSupplier.accessControl)}\n
\n \n \n \n
\n {isOverdue ? (\n \n Overdue\n \n ) : (\n formatShortDate(vendorSupplier.reviewDate.toString())\n )}\n
\n
{capitaliseFirst(vendorSupplier.contractRecurring)}
\n
\n \n
\n {capitalize(vendorSupplier.status)}\n
\n
\n \n );\n};\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { deleteVendorSupplier } from '../../store/vendors/vendorsThunks';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './DeleteVendorModal.scss';\nimport { VendorSupplierModel } from '../../swagger';\n\ninterface DeleteVendorModalProps {\n vendorToDelete: VendorSupplierModel;\n onCancel(): void;\n onConfirm(): void;\n}\n\nexport const DeleteVendorModal: React.FC = ({\n vendorToDelete,\n onCancel,\n onConfirm,\n}: DeleteVendorModalProps) => {\n const dispatch = useDispatch();\n\n const submit = () => {\n dispatch(deleteVendorSupplier({ onSuccess: onConfirm }));\n };\n\n return (\n {}} show>\n Delete Vendor\n \n
Are you sure you wish to delete the following vendor:
\n
\n {vendorToDelete?.name}\n
\n
\n \n Cancel\n \n Confirm\n \n \n
\n );\n};\n","import { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React, { ReactElement, useRef, useState } from 'react';\nimport './AdoptechTextInput.scss';\nimport { useClickAway } from 'react-use';\n\nexport interface AdoptechTextSuggestionProps {\n id: string;\n autoFocus?: boolean;\n label?: string;\n disabled?: boolean;\n onChange: (event: React.ChangeEvent) => void;\n onFocus?: (event: React.FocusEvent) => void;\n onIconClicked?: (event: React.MouseEvent) => void;\n hasError?: boolean;\n placeholder?: string;\n value: string;\n rows?: number;\n maxLength?: number;\n type: 'text' | 'email';\n additionalClass?: string;\n errorClass?: string;\n icon?: IconDefinition;\n onlyInput?: boolean;\n rounded?: boolean;\n bottomElement?: React.ReactElement; // for custom error badges at bottom\n autoCapitalize?: string;\n suggestionsSelector?: (value: string) => string[];\n suggestionElement?: (value: string) => ReactElement;\n suggestionSet?: (value: string) => void;\n}\n\nconst AdoptechTextSuggestion = React.forwardRef<\n HTMLInputElement,\n AdoptechTextSuggestionProps\n>((props, ref) => {\n const mainClasses = classNames({\n adoptechTextInput: true,\n 'adoptechTextInput-error': props.hasError && !props.errorClass,\n [`${props.errorClass}`]: props.hasError,\n });\n\n const [suggestionShow, setSuggestionShow] = useState(false);\n\n const suggestions = props.suggestionsSelector\n ? props.suggestionsSelector(props.value)\n : [];\n\n const onChange = (event: React.ChangeEvent) => {\n if (suggestions.length > 0) setSuggestionShow(true);\n props.onChange(event);\n };\n\n const onFocus = (event: React.FocusEvent) => {\n if (suggestions.length > 0) setSuggestionShow(true);\n if (props.onFocus) props.onFocus(event);\n };\n\n const wrapperRef = useRef(null);\n useClickAway(wrapperRef, () => {\n setSuggestionShow(false);\n });\n\n const input = (\n \n );\n\n if (props.onlyInput) return input;\n\n const suggestionElement =\n props.suggestionElement || (value => {value});\n\n const suggestionClick = (suggestion: string) => {\n setSuggestionShow(false);\n\n if (props.suggestionSet) props.suggestionSet(suggestion);\n };\n return (\n
\n \n {props.label && }\n {props.hasError && props.label && (\n \n {`Please fill in ${props.label.toLowerCase()}`}\n \n )}\n {input}\n {props.icon && (\n props.onIconClicked && props.onIconClicked(e)}\n >\n \n
\n )}\n \n {props.bottomElement}\n {suggestionShow && suggestions.length > 0 && (\n
\n {suggestions.map(suggestion => (\n {\n e.preventDefault();\n\n suggestionClick(suggestion);\n }}\n >\n {suggestionElement(suggestion)}\n
\n ))}\n \n )}\n \n );\n});\n\nAdoptechTextSuggestion.displayName = 'AdoptechTextInput';\nexport { AdoptechTextSuggestion };\n","import { VendorSupplierExtended, VendorSupplierStatus } from '../../swagger';\nimport React, { Dispatch, SetStateAction } from 'react';\nimport { useSelector } from 'react-redux';\nimport { SelectionOption } from '../../types/selectionOption';\nimport { Accordion } from 'react-bootstrap';\nimport { AdoptechReactSelect } from '../AdoptechReactSelect/AdoptechReactSelect';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AdoptechDatePicker } from '../AdoptechDatePicker/AdoptechDatePicker';\nimport { ApplicationState } from '../../types/applicationState';\nimport { useOwnerOptions } from '../../hooks/useOwnerOptions';\nimport {\n supportedSuppliers,\n VendorSupplierLogo,\n} from '../../features/risk/vendor/VendorSupplierLogo';\nimport { AdoptechTextSuggestion } from '../AdoptechTextInput/AdoptechTextSuggestion';\n\ninterface OverviewSectionProps {\n formData: VendorSupplierExtended;\n setFormData: Dispatch>;\n}\n\nexport const validation = (\n data: VendorSupplierExtended\n): Record => ({\n name: (data.name || '').trim().length > 0 ? null : ['Name must be present'],\n owner: data.owner ? null : ['Owner must be set'],\n category: data.vendorSupplierCategoryId ? null : ['Category must be set'],\n reviewDate: data.reviewDate ? null : ['Review date must be set'],\n status: data.status ? null : ['Status must be set'],\n});\n\nexport const OverviewSection: React.FC = ({\n formData,\n setFormData,\n}) => {\n const baseCss = 'manageSupplierDrawer';\n const { users, ownerOptions } = useOwnerOptions({\n onlyAdminable: true,\n });\n const reviewDate = formData.reviewDate ? new Date(formData.reviewDate) : null;\n\n const categories = useSelector(\n (state: ApplicationState) => state.vendors.vendorSupplierCategories\n );\n\n const categoryOptions = categories.map(category => ({\n value: category.id,\n label: category.name,\n }));\n\n const statusOptions = [\n {\n value: VendorSupplierStatus.Active,\n label: 'Active',\n },\n {\n value: VendorSupplierStatus.Inactive,\n label: 'Inactive',\n },\n ];\n\n const hasError = (field: string) => !!validation(formData)[field];\n\n const suggestionsSelector = (value: string) => {\n if (!value) return [];\n const names = supportedSuppliers.map(ss => ss.name);\n return names.filter(n => n.toLowerCase().indexOf(value.toLowerCase()) > -1);\n };\n\n const id = formData?.id || 'new';\n return (\n \n \n
\n
\n
Vendor name
\n \n setFormData({ ...formData, name: e.currentTarget.value })\n }\n placeholder=\"Enter Vendor name\"\n suggestionsSelector={suggestionsSelector}\n suggestionElement={value => }\n suggestionSet={suggestion =>\n setFormData({ ...formData, name: suggestion })\n }\n />\n
\n
\n
\n
\n
Owner
\n {\n setFormData({\n ...formData,\n owner: users.find(user => user.id === e.value),\n });\n }}\n value={ownerOptions.find(\n option => option.value == formData?.owner?.id\n )}\n placeholder=\"Select owner\"\n showUserAvatar\n />\n
\n \n {\n setFormData({\n ...formData,\n reviewDate: d.toJSON().split('T')[0],\n });\n }}\n placeHolderText=\"Select review date\"\n />\n
\n \n
\n
\n
Category
\n {\n setFormData({\n ...formData,\n vendorSupplierCategoryId: e.value,\n });\n }}\n value={categoryOptions.find(\n o => o.value == formData?.vendorSupplierCategoryId\n )}\n placeholder=\"Select category\"\n />\n
\n
\n
Status
\n {\n setFormData({\n ...formData,\n status:\n e.value == 'active'\n ? VendorSupplierStatus.Active\n : VendorSupplierStatus.Inactive,\n });\n }}\n value={statusOptions.find(o => o.value === formData?.status)}\n placeholder=\"Set status\"\n />\n
\n
\n \n
\n );\n};\n","import {\n SharedTaskRecurring,\n AgreementModel,\n VendorSupplierExtended,\n} from '../../swagger';\nimport React, { Dispatch, SetStateAction, useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { Accordion } from 'react-bootstrap';\nimport { AdoptechReactSelect } from '../AdoptechReactSelect/AdoptechReactSelect';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AdoptechDatePicker } from '../AdoptechDatePicker/AdoptechDatePicker';\nimport { AdoptechTextArea } from '../AdoptechTextArea/AdoptechTextArea';\nimport { selectCompletedAgreements } from '../../selectors/selectCompletedAgreements';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport { fetchAgreements } from '../../store/agreements/agreementsThunks';\n\ninterface ContractSectionProps {\n formData: VendorSupplierExtended;\n setFormData: Dispatch>;\n}\n\ninterface FrequencySelectionOption {\n value: SharedTaskRecurring;\n label: string;\n}\n\ninterface ContractSelectionOption {\n value: AgreementModel['id'];\n label: string;\n}\n\nexport const validation = (\n data: VendorSupplierExtended\n): Record => ({});\n\nexport const ContractSection: React.FC = ({\n formData,\n setFormData,\n}) => {\n const baseCss = 'manageSupplierDrawer';\n const id = formData?.id || 'new';\n\n const agreements = useSelector(selectCompletedAgreements);\n const contractOptions: ContractSelectionOption[] = agreements.map(a => ({\n value: a.id,\n label: a.name,\n }));\n\n const currentVendor = useSelector(selectCurrentVendor);\n const dispatch = useDispatch();\n\n const contractRenewalDate = formData.contractRenewalDate\n ? new Date(formData.contractRenewalDate)\n : null;\n\n useEffect(() => {\n dispatch(fetchAgreements(currentVendor.id));\n }, [currentVendor.id]);\n\n const frequencyOptions: FrequencySelectionOption[] = [\n {\n value: SharedTaskRecurring.Monthly,\n label: 'Monthly',\n },\n {\n value: SharedTaskRecurring.Quarterly,\n label: 'Quarterly',\n },\n {\n value: SharedTaskRecurring.BiAnnually,\n label: 'Bi-Annual',\n },\n {\n value: SharedTaskRecurring.Annually,\n label: 'Annual',\n },\n {\n value: SharedTaskRecurring.Other,\n label: 'Other',\n },\n ];\n\n return (\n \n \n
\n
\n
Recurring
\n {\n setFormData({\n ...formData,\n contractRecurring: e.value,\n });\n }}\n value={frequencyOptions.find(\n o => o.value == formData?.contractRecurring\n )}\n placeholder=\"Select frequency\"\n showUserAvatar\n />\n
\n
\n {\n setFormData({\n ...formData,\n contractRenewalDate: d.toJSON().split('T')[0],\n });\n }}\n placeHolderText=\"Select renewal date\"\n />\n
\n
\n
\n
\n
Linked contract
\n {\n setFormData({\n ...formData,\n contractId: e.value,\n });\n }}\n value={contractOptions.find(o => o.value == formData?.contractId)}\n placeholder=\"Select agreement\"\n showUserAvatar\n />\n
\n
\n
\n
\n
Description
\n {\n setFormData({\n ...formData,\n contractDescription: e.currentTarget.value,\n });\n }}\n placeholder=\"Enter details of the contractual review, detail any risks identified or non-conformities with Company policy. It is important to note who signed off any legal risks that were identified.\"\n rows={2}\n />\n
\n
\n \n
\n );\n};\n","import { VendorSupplierExtended } from '../../swagger';\nimport React, { Dispatch, SetStateAction } from 'react';\nimport { Accordion } from 'react-bootstrap';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\n\ninterface ContactSectionProps {\n formData: VendorSupplierExtended;\n setFormData: Dispatch>;\n}\n\nexport const validation = (\n data: VendorSupplierExtended\n): Record => ({});\n\nexport const ContactSection: React.FC = ({\n formData,\n setFormData,\n}) => {\n const baseCss = 'manageSupplierDrawer';\n const id = formData?.id || 'new';\n\n return (\n \n \n
\n
\n
Email address
\n {\n setFormData({\n ...formData,\n contactEmail: e.currentTarget.value,\n });\n }}\n value={formData?.contactEmail}\n placeholder=\"Enter email address\"\n />\n
\n
\n
\n
\n
Primary contact name
\n {\n setFormData({\n ...formData,\n contactName: e.currentTarget.value,\n });\n }}\n placeholder=\"Enter name\"\n />\n
\n
\n
Contact number
\n {\n setFormData({\n ...formData,\n contactPhone: e.currentTarget.value,\n });\n }}\n placeholder=\"Enter number\"\n />\n
\n
\n \n
\n );\n};\n","import { faCircleQuestion } from '@fortawesome/pro-light-svg-icons/faCircleQuestion';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconDefinition } from '@fortawesome/fontawesome-common-types';\nimport classNames from 'classnames';\nimport React from 'react';\nimport {\n chatWidgetArticleId,\n showWidgetChatArticle,\n} from '../../functions/chatWidgetHelper';\nimport './ChatWidgetIcon.scss';\n\ninterface ChatWidgetIconProps {\n extraCss: string;\n articleId: chatWidgetArticleId;\n icon?: IconDefinition;\n}\n\nexport const ChatWidgetIcon: React.FC = ({\n extraCss,\n articleId,\n icon,\n}) => {\n const classes = classNames('intercomIcon--baseStyle', extraCss);\n\n return (\n {\n e.stopPropagation();\n showWidgetChatArticle(articleId);\n }}\n icon={icon ? icon : faCircleQuestion}\n className={classes}\n />\n );\n};\n","import { faCircleXmark } from '@fortawesome/pro-solid-svg-icons/faCircleXmark';\nimport { faCircleQuestion } from '@fortawesome/pro-light-svg-icons/faCircleQuestion';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport {\n VendorSupplierExtended,\n VendorSupplierAccessControl,\n} from '../../swagger';\nimport React, { Dispatch, SetStateAction } from 'react';\nimport { Accordion } from 'react-bootstrap';\nimport { AdoptechReactSelect } from '../AdoptechReactSelect/AdoptechReactSelect';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AdoptechRadioButton } from '../AdoptechRadioButton/AdoptechRadioButton';\nimport { AdoptechTextArea } from '../AdoptechTextArea/AdoptechTextArea';\nimport { ChatWidgetIcon } from '../ChatWidgetIcon/ChatWidgetIcon';\n\nexport interface AccessControlSelectionOption {\n value: VendorSupplierAccessControl;\n label: string;\n}\n\ninterface RiskSectionProps {\n formData: VendorSupplierExtended;\n setFormData: Dispatch>;\n}\n\nexport const validation = (\n data: VendorSupplierExtended\n): Record => ({\n riskProfile: data.riskProfile ? null : ['Risk profile must be set'],\n accessControl: data.accessControl ? null : ['Access control must be set'],\n});\n\nexport const RiskSection: React.FC = ({\n formData,\n setFormData,\n}) => {\n const baseCss = 'manageSupplierDrawer';\n\n const id = formData?.id || 'new';\n\n const riskProfileOptions = [\n {\n value: 2,\n label: 'Very Low',\n },\n {\n value: 4,\n label: 'Low',\n },\n {\n value: 6,\n label: 'Medium',\n },\n {\n value: 8,\n label: 'High',\n },\n {\n value: 10,\n label: 'Critical',\n },\n ];\n\n const controlsOptions = [\n {\n value: VendorSupplierAccessControl.Sso,\n label: 'SSO (single sign on)',\n },\n {\n value: VendorSupplierAccessControl._2fa,\n label: '2FA (two factor authentication)',\n },\n {\n value: VendorSupplierAccessControl.Password,\n label: 'U/P (username and password)',\n },\n {\n value: VendorSupplierAccessControl.NotApplicable,\n label: 'N/A (not applicable)',\n },\n ];\n\n // Normalise ten-points profile for five-options selector\n // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] => [2, 2, 4, 4, 6, 6, 8, 8, 8, 10]\n const tenToFive = (i: number) => Math.floor((i + 1) / 2) * 2;\n\n const certificationsOptions = [\n {\n value: 'iso_27001',\n label: 'ISO 27001',\n },\n {\n value: 'soc_2',\n label: 'SOC 2',\n },\n {\n value: 'cyber_essentials',\n label: 'Cyber Essentials',\n },\n {\n value: 'iso_9001',\n label: 'ISO 9001',\n },\n ];\n\n const certificationsOptionsUnused = certificationsOptions.filter(\n c => !formData.certifications.includes(c.value)\n );\n\n const hasError = (field: string) => !!validation(formData)[field];\n const vendorRegisterIntercomArticleId = 6547626;\n\n return (\n \n \n {hasError('riskProfile') && (\n
Choose risk level
\n )}\n
\n
\n
\n {riskProfileOptions.map(({ value, label }) => (\n
\n {\n setFormData({\n ...formData,\n riskProfile: parseInt(riskProfile),\n });\n }}\n value={tenToFive(value).toString()}\n />\n
{label}
\n
\n ))}\n
\n
\n\n \n
\n\n
\n
\n
Access controls
\n {\n setFormData({\n ...formData,\n accessControl: e.value,\n });\n }}\n value={controlsOptions.find(\n o => o.value == formData?.accessControl\n )}\n placeholder=\"Select access controls\"\n showUserAvatar\n />\n
\n
\n
\n
\n
Certifications
\n \n setFormData({\n ...formData,\n certifications: [\n ...new Set([...(formData?.certifications || []), value]),\n ],\n })\n }\n value={null}\n placeholder={\n certificationsOptionsUnused.length > 0\n ? 'Select a certification to add'\n : 'All certifications added'\n }\n showUserAvatar\n />\n
\n
\n {(formData?.certifications || []).length == 0 ? (\n No certifications have been added\n ) : (\n Array.from(formData?.certifications || []).map((cert: string) => (\n \n {certificationsOptions.find(o => o.value == cert).label}\n \n setFormData({\n ...formData,\n certifications: (formData?.certifications || []).filter(\n c => c != cert\n ),\n })\n }\n />\n \n ))\n )}\n
\n
\n
\n Vendor's critical dependencies\n
\n {\n setFormData({\n ...formData,\n criticalDependencies: e.currentTarget.value,\n });\n }}\n placeholder=\"Enter the critical 4th party details.\"\n rows={2}\n />\n
\n
\n
\n
\n
Service continuity plan
\n {\n setFormData({\n ...formData,\n continuityPlan: e.currentTarget.value,\n });\n }}\n placeholder=\"Outline the steps that would be taken if you needed to stop using the vendor service. This exit could be driven by security, commercial or technical reasons. For detailed plans, we suggest you provide a link to the exit plan.\"\n rows={2}\n />\n
\n
\n \n
\n );\n};\n","import { VendorSupplierExtended } from '../../swagger';\nimport React from 'react';\nimport { Accordion } from 'react-bootstrap';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\n\ninterface DeleteSectionProps {\n formData: VendorSupplierExtended;\n dispatchDelete?(): void;\n}\n\nexport const DeleteSection: React.FC = ({\n formData,\n dispatchDelete,\n}) => {\n const id = formData?.id || 'new';\n const baseCss = 'manageSupplierDrawer';\n\n if (id === 'new') return <>;\n\n return (\n \n \n
\n
\n \n Delete\n \n
\n
\n \n
\n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { AdoptechDrawer } from '../AdoptechDrawer/AdoptechDrawer';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n submitVendorSupplier,\n fetchVendorSupplier,\n} from '../../store/vendors/vendorsThunks';\nimport { VendorSupplierExtended, VendorSupplierModel } from '../../swagger';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport './ManageSupplierDrawer.scss';\nimport { DeleteVendorModal } from '../DeleteVendorModal/DeleteVendorModal';\nimport { ApplicationState } from '../../types/applicationState';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport {\n initVendorSupplierForm,\n setVendorSupplierForm,\n clearVendorSupplierForm,\n} from '../../store/vendors/vendorsSlice';\n\n// Sections\nimport {\n OverviewSection,\n validation as overviewValidation,\n} from './OverviewSection';\nimport {\n ContractSection,\n validation as contractValidation,\n} from './ContractSection';\nimport {\n ContactSection,\n validation as contactValidation,\n} from './ContactsSection';\nimport { RiskSection, validation as riskValidation } from './RiskSection';\nimport { DeleteSection } from './DeleteSection';\nimport AdoptechHS from '../AdoptechHS/AdoptechHS';\n\ninterface ManageSupplierDrawerProps {\n showReason: VendorSupplierModel;\n onClose: (updateNeeded: boolean) => void;\n}\n\nexport const ManageSupplierDrawer: React.FC = ({\n showReason,\n onClose,\n}) => {\n const baseCss = 'manageSupplierDrawer';\n const isNew = !showReason?.id;\n const dispatch = useDispatch();\n\n // prepare form data\n useEffect(() => {\n if (showReason) {\n if (showReason.id) {\n dispatch(fetchVendorSupplier(showReason.id));\n } else {\n dispatch(initVendorSupplierForm(showReason));\n }\n } else {\n dispatch(clearVendorSupplierForm());\n }\n }, [showReason]);\n\n // form state getter and setter\n const formData = useSelector(\n (state: ApplicationState) => state.vendors.vendorSupplierForm\n );\n\n const { isCreatingVendorSupplier, isPatchingVendorSupplier } = useSelector(\n (state: ApplicationState) => state.vendors\n );\n const setFormData = (data: VendorSupplierExtended) => {\n dispatch(setVendorSupplierForm(data));\n };\n\n // track changes presence\n const [originalData, setOriginalData] = useState(formData);\n useEffect(() => setOriginalData(formData), [formData?.id]);\n const formHasChanges = formData != originalData;\n\n const [\n isDeleteConfirmationModalShowing,\n setIsDeleteConfirmationModalShowing,\n ] = useState(false);\n\n const validation = !!formData && {\n ...overviewValidation(formData),\n ...contractValidation(formData),\n ...contactValidation(formData),\n ...riskValidation(formData),\n };\n const formValid =\n !!validation &&\n Object.values(validation).reduce((acc, v) => acc && !v, true);\n\n const title = showReason?.id ? `Edit ${showReason.name}` : 'Add vendor';\n\n const dispatchSubmit = () => {\n if (formValid) {\n dispatch(submitVendorSupplier({ onSuccess: () => onClose(true) }));\n }\n };\n\n const dispatchDelete = () => {\n setIsDeleteConfirmationModalShowing(true);\n };\n\n // ref needed to toggle confirm close dialog logic\n const drawerBackgroundRef = useRef();\n\n const Footer = (\n <>\n drawerBackgroundRef.current.click()}\n variant={AdoptechButtonVariant.White}\n >\n Cancel\n \n \n {isNew ? 'ADD' : 'DONE'}\n \n \n );\n return (\n onClose(formHasChanges)}\n showConfirmationWarning={formHasChanges}\n footer={Footer}\n extraClass=\"manageSupplierDrawer\"\n >\n {formData ? (\n
\n \n \n \n \n \n
\n ) : (\n \n )}\n {isDeleteConfirmationModalShowing && (\n {\n setIsDeleteConfirmationModalShowing(false);\n onClose(true);\n }}\n onCancel={() => {\n setIsDeleteConfirmationModalShowing(false);\n }}\n />\n )}\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectVendorSuppliers } from '../../../selectors/selectVendorSuppliers';\nimport {\n fetchVendorSupplierCategories,\n fetchVendorSuppliers,\n} from '../../../store/vendors/vendorsThunks';\nimport {\n VendorActionExtended,\n VendorEventEventType,\n VendorSupplierModel,\n VendorSupplierStatus,\n} from '../../../swagger';\nimport { Grid } from '../../../types/grid';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport AdoptechGridTable from '../../../components/AdoptechGridTable/AdoptechGridTable';\nimport { Lozenge } from '../../../components/Lozenge/Lozenge';\nimport { NoDataText } from '../../../components/NoDataText/NoDataText';\nimport { SortableTableHeader } from '../../../components/SortableTableHeader/SortableTableHeader';\nimport { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport { VendorRegisterRow } from '../../../components/VendorRegisterRow/VendorRegisterRow';\nimport './VendorRegister.scss';\nimport { ManageSupplierDrawer } from '../../../components/ManageSupplierDrawer/ManageSupplierDrawer';\nimport { AdoptechTextInput } from '../../../components/AdoptechTextInput/AdoptechTextInput';\nimport Fuse from 'fuse.js';\nimport { selectCurrentVendor } from '../../../selectors/selectCurrentVendor';\nimport { AccessObject } from '../../../types/accessObject';\nimport { useCanFeature } from '../../../functions/access';\nimport { useBackground } from '../../../hooks/useBackground';\nimport { AdoptechCheckbox } from '../../../components/AdoptechCheckbox/AdoptechCheckbox';\nimport { Dropdown } from 'react-bootstrap';\nimport { AdoptechDropdownToggle } from '../../../components/AdoptechDropdownToggle/AdoptechDropdownToggle';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { push } from 'connected-react-router';\nimport {\n reportsRouteWithAddType,\n reportsRouteWithType,\n} from '../../../components/Reports/ReportsPage/ReportsPage';\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus';\nimport { EditActionModal } from '../../../components/EditActionModal/EditActionModal';\nimport { showGlobalToast } from '../../../store/global/globalSlice';\nimport { createNewAction } from '../../calendar/store/calendarThunks';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport { mapVendorActonFormToPostPayload } from '../../calendar/CalendarPage/CalendarPageModals';\n\nexport const useRegistryCreateActionModal = () => {\n const [showCreateAction, setShowCreateAction] = useState(false);\n const dispatch = useAppDispatch();\n const afterCreate = (action: VendorActionExtended) => {\n dispatch(\n showGlobalToast(\n 'Action has been successfully created. Please visit the Actions & Events page to see it.'\n )\n );\n };\n\n const createAction = async (params: VendorActionExtended) => {\n const createPayload = mapVendorActonFormToPostPayload(params);\n\n const newAction = await dispatch(\n createNewAction({ payload: createPayload })\n ).unwrap();\n\n afterCreate(newAction);\n\n setShowCreateAction(false);\n };\n return { createAction, setShowCreateAction, showCreateAction };\n};\n\nexport const VendorRegisterPage: React.FC = () => {\n const currentVendor = useSelector(selectCurrentVendor);\n const dispatch = useDispatch();\n\n useBackground('grey');\n\n const [vendorSupplierDrawerShowReason, setVendorSupplierDrawerShowReason] =\n useState(null);\n\n const openAddForm = () => {\n setVendorSupplierDrawerShowReason({} as VendorSupplierModel);\n };\n\n const { createAction, setShowCreateAction, showCreateAction } =\n useRegistryCreateActionModal();\n\n const openAddAction = () => setShowCreateAction(true);\n\n const openEditForm = (supplier: VendorSupplierModel) => {\n setVendorSupplierDrawerShowReason(supplier);\n };\n\n const closeDrawer = (updateNeeded: boolean) => {\n setVendorSupplierDrawerShowReason(null);\n if (updateNeeded) dispatch(fetchVendorSuppliers());\n };\n\n useEffect(() => {\n dispatch(fetchVendorSuppliers());\n dispatch(fetchVendorSupplierCategories());\n }, [currentVendor]);\n\n const fullVendorsList = useSelector(selectVendorSuppliers);\n const [search, setSearch] = useState('');\n const [showInactive, setShowInactive] = useState(false);\n const visibleVendors = showInactive\n ? fullVendorsList\n : fullVendorsList.filter(v => v.status === VendorSupplierStatus.Active);\n const fuse = new Fuse(visibleVendors, {\n ignoreLocation: true,\n includeScore: true,\n keys: [\n 'name',\n 'accessControl',\n 'owner.fullName',\n 'recurring',\n 'owner.email',\n 'reviewDate',\n 'status',\n ],\n threshold: 0,\n });\n\n const canViewReports = useCanFeature(AccessObject.reports);\n const canManageReports = useCanFeature(AccessObject.reports_manage);\n const canManageRegister = useCanFeature(AccessObject.vendor_register_manage);\n\n const vendorsList = search\n ? fuse.search(search).map(x => x.item)\n : visibleVendors;\n\n const baseCss = 'vendorRegister';\n const baseTableCss = 'adoptechGridTable';\n\n return (\n
\n
\n
\n
\n Vendors\n \n
\n
\n ) =>\n setShowInactive(e.target.checked)\n }\n label=\"Show inactive Vendors\"\n className=\"checkbox-show-inactive\"\n />\n
\n
\n {canViewReports && (\n \n \n \n Reports\n \n \n \n {canManageReports && (\n \n dispatch(push(reportsRouteWithAddType('vendor')))\n }\n >\n Add report\n \n )}\n dispatch(push(reportsRouteWithType('all')))}\n >\n View reports\n \n \n \n )}\n {canManageRegister && (\n \n \n \n Add new\n \n \n \n Vendor\n Action\n \n \n )}\n
\n
\n
\n setSearch(e.currentTarget.value)}\n type=\"text\"\n placeholder=\"Search for vendors\"\n icon={faSearch}\n additionalClass=\"adoptechTextInput-search\"\n />\n
\n
\n
\n
\n {vendorsList.length <= 0 ? (\n \n ) : (\n \n \n columnName=\"name\"\n grid={Grid.VendorRegister}\n label=\"Vendor\"\n notInTable\n />\n \n columnName=\"riskProfile\"\n grid={Grid.VendorRegister}\n label=\"Risk Profile\"\n notInTable\n />\n \n columnName=\"accessControl\"\n grid={Grid.VendorRegister}\n label=\"Access control\"\n notInTable\n />\n \n columnName=\"owner\"\n grid={Grid.VendorRegister}\n label=\"Owner\"\n notInTable\n />\n \n columnName=\"reviewDate\"\n grid={Grid.VendorRegister}\n label=\"Review date\"\n notInTable\n />\n \n columnName=\"contractRecurring\"\n grid={Grid.VendorRegister}\n label=\"Contract renewal\"\n notInTable\n />\n \n columnName=\"status\"\n grid={Grid.VendorRegister}\n label=\"Status\"\n notInTable\n />\n
\n }\n >\n {vendorsList.map((vendorSupplier: VendorSupplierModel) => {\n const { id } = vendorSupplier;\n return (\n \n canManageRegister ? openEditForm(vendorSupplier) : null\n }\n key={id}\n />\n );\n })}\n \n )}\n
\n
\n \n\n {showCreateAction && (\n setShowCreateAction(false)}\n />\n )}\n
\n );\n};\n","import { api } from '../../api/api';\nimport {\n JurisdictionModel,\n LegalRegisterModel,\n LegalRegisterUpdatePayload,\n LegislationAddPayload,\n LegislationClassificationModel,\n LegislationCreatePayloadLegislation,\n LegislationUpdatePayload,\n} from '../../swagger';\nimport { VoidThunk } from '../../types/voidThunk';\nimport { setErrorMessage, showGlobalToast } from '../global/globalSlice';\nimport { getErrorMessage, handleThunkError } from '../helpers/thunkHelpers';\nimport { fetchVendorSuppliersRequest } from '../vendors/vendorsSlice';\nimport {\n createLegislationFromTemplatesFailure,\n createLegislationFromTemplatesRequest,\n createLegislationFromTemplatesSuccess,\n deleteLegislationFailure,\n deleteLegislationRequest,\n deleteLegislationSuccess,\n fetchJurisdictionsFailure,\n fetchJurisdictionsRequest,\n fetchJurisdictionsSuccess,\n fetchLegalRegisterFailure,\n fetchLegalRegisterRequest,\n fetchLegalRegisterSuccess,\n fetchLegislationTemplatesFailure,\n fetchLegislationTemplatesRequest,\n fetchLegislationTemplatesSuccess,\n fetchVendorLegislationsFailure,\n fetchVendorLegislationsRequest,\n fetchVendorLegislationsSuccess,\n patchLegalRegisterFailure,\n patchLegalRegisterRequest,\n patchLegalRegisterSuccess,\n updateVendorLegislation,\n} from './legalRegisterSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\n\nexport const fetchLegislation =\n (id: string, onSuccess: (payload: any) => void): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchVendorSuppliersRequest());\n const response = await api().legislationsIdGet({ id });\n onSuccess(response);\n } catch (err) {\n const errorMessageToUser = await getErrorMessage(\n err,\n 'An error occurred while loading a legislation. Please try again or contact support.'\n );\n dispatch(setErrorMessage(errorMessageToUser));\n }\n };\n\nexport const deleteLegislation =\n (id: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deleteLegislationRequest(id));\n await api().legislationsIdDelete({ id });\n dispatch(deleteLegislationSuccess());\n dispatch(fetchLegalRegister());\n } catch (err) {\n const errorMessageToUser = await getErrorMessage(\n err,\n 'An error occurred while deleting a vendor legislation. Please try again or contact support.'\n );\n dispatch(deleteLegislationFailure());\n dispatch(setErrorMessage(errorMessageToUser));\n }\n };\nexport const fetchJurisdictions =\n (onSuccess?: (payload: JurisdictionModel[]) => void): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchJurisdictionsRequest());\n const response = await api().jurisdictionsGet();\n if (onSuccess) {\n onSuccess(response);\n } else {\n dispatch(fetchJurisdictionsSuccess(response));\n }\n } catch (err) {\n const errorMessageToUser = await getErrorMessage(\n err,\n 'An error occurred fetching jurisdictions. Please try again or contact support.'\n );\n dispatch(fetchJurisdictionsFailure());\n dispatch(setErrorMessage(errorMessageToUser));\n }\n };\nexport const fetchLegislationTemplates = (): VoidThunk => async dispatch => {\n try {\n dispatch(fetchLegislationTemplatesRequest());\n const response = await api().legislationTemplatesGet();\n dispatch(fetchLegislationTemplatesSuccess(response));\n } catch (err) {\n const errorMessageToUser = await getErrorMessage(\n err,\n 'An error occurred fetching legislation templates. Please try again or contact support.'\n );\n dispatch(fetchLegislationTemplatesFailure());\n dispatch(setErrorMessage(errorMessageToUser));\n }\n};\n\nexport const createLegislationFromTemplates =\n (body: LegislationAddPayload): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(createLegislationFromTemplatesRequest());\n const payload = { vendorId: getState().vendors.currentVendor.id, body };\n await api().vendorsVendorIdLegislationsAddPost(payload);\n dispatch(createLegislationFromTemplatesSuccess());\n dispatch(fetchVendorLegislations());\n dispatch(showGlobalToast('Legislation(s) has been successfully added'));\n } catch (err) {\n const errorMessageToUser = await getErrorMessage(\n err,\n 'An error occurred adding legislation. Please try again or contact support.'\n );\n dispatch(createLegislationFromTemplatesFailure());\n dispatch(setErrorMessage(errorMessageToUser));\n }\n };\n\nexport const updateLegislation =\n (\n id: string,\n body: LegislationUpdatePayload,\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n const legislation = await api().legislationsIdPatch({ id, body });\n dispatch(updateVendorLegislation(legislation));\n onSuccess();\n dispatch(showGlobalToast('Legislation has been successfully updated'));\n } catch (err) {\n const errorMessageToUser = await getErrorMessage(\n err,\n 'An error occurred during update legislation. Please try again or contact support.'\n );\n dispatch(setErrorMessage(errorMessageToUser));\n }\n };\n\nexport const fetchClassifications =\n (\n onSuccess?: (payload: LegislationClassificationModel[]) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n const response = await api().legislationClassificationsGet();\n if (onSuccess) {\n onSuccess(response);\n } else {\n // TODO: implement generic success handler if needed\n // dispatch(fetchClassificationsSuccess(response));\n }\n } catch (err) {\n const errorMessageToUser = await getErrorMessage(\n err,\n 'An error occurred fetching classifications. Please try again or contact support.'\n );\n dispatch(setErrorMessage(errorMessageToUser));\n }\n };\n\nexport const fetchLegalRegister =\n (onSuccess?: (register: LegalRegisterModel) => void): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n\n dispatch(fetchLegalRegisterRequest());\n const response = await api().vendorsVendorIdLegalRegisterGet({\n vendorId,\n });\n dispatch(fetchLegalRegisterSuccess(response));\n onSuccess && onSuccess(response);\n } catch (err) {\n const errorMessageToUser = await getErrorMessage(\n err,\n 'An error occurred while loading a legal register. Please try again or contact support.'\n );\n dispatch(setErrorMessage(errorMessageToUser));\n dispatch(fetchLegalRegisterFailure(errorMessageToUser));\n }\n };\n\nexport const fetchVendorLegislations =\n (): VoidThunk => async (dispatch, getState) => {\n try {\n dispatch(fetchVendorLegislationsRequest());\n const vendorId = getState().vendors.currentVendor?.id;\n const response = await api().vendorsVendorIdLegislationsGet({\n vendorId,\n });\n dispatch(fetchVendorLegislationsSuccess(response));\n } catch (err) {\n const errorMessageToUser = await getErrorMessage(\n err,\n 'An error occurred fetching vendor legislations. Please try again or contact support.'\n );\n dispatch(fetchVendorLegislationsFailure());\n dispatch(setErrorMessage(errorMessageToUser));\n }\n };\n\nexport const patchLegalRegister =\n (body: LegalRegisterUpdatePayload, onSuccess?: () => void): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(patchLegalRegisterRequest());\n const payload = { vendorId: getState().vendors.currentVendor.id, body };\n const response = await api().vendorsVendorIdLegalRegisterPatch(payload);\n dispatch(patchLegalRegisterSuccess(response));\n onSuccess && onSuccess();\n dispatch(showGlobalToast('Legal register has been successfully updated'));\n } catch (err) {\n const errorMessageToUser = await getErrorMessage(\n err,\n 'An error occurred updating legal register. Please try again or contact support.'\n );\n dispatch(patchLegalRegisterFailure());\n dispatch(setErrorMessage(errorMessageToUser));\n }\n };\n\nexport const postLegislation = createAsyncThunk(\n 'legislations/fetchTrusthubCategories',\n async (\n params: LegislationCreatePayloadLegislation,\n { dispatch, getState }\n ) => {\n const vendorId = (getState() as ApplicationState).vendors.currentVendor?.id;\n\n try {\n return await api().vendorsVendorIdLegislationsPost({\n vendorId,\n body: {\n legislation: params,\n },\n });\n } catch (error) {\n await handleThunkError(\n 'An error occurred while posting vendor legislation. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { legislationSort } from '../functions/legislationSort';\nimport { LegislationModel } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\nimport { Grid } from '../types/grid';\nimport { selectSortSettings } from './selectSortSettings';\nimport Fuse from 'fuse.js';\n\nexport const selectLegislations = createSelector(\n (state: ApplicationState) => state.legalRegister.vendorLegislations,\n (state: ApplicationState) => state.legalRegister.legislationsSearch,\n selectSortSettings(Grid.LegalRegister),\n (legislations: LegislationModel[], search, sortSetting) => {\n if (!legislations?.length) return [];\n\n let filteredLegislations = legislations;\n\n const fuse = new Fuse(filteredLegislations, {\n ignoreLocation: true,\n includeScore: true,\n keys: [\n 'name',\n 'jurisdiction.name',\n 'legislationClassification.name',\n 'summary',\n 'owner.fullName',\n 'owner.email',\n 'reviewDate',\n ],\n threshold: 0,\n });\n\n if (search) {\n filteredLegislations = fuse.search(search).map(x => x.item);\n }\n\n return [...filteredLegislations].sort((a, b) =>\n legislationSort(a, b, sortSetting.columnSort)\n );\n }\n);\n","import { LegislationModel } from '../swagger';\nimport { ColumnSort } from '../types/columnSort';\nimport { SortDirection } from '../types/sortDirection';\nimport { sort } from './sort';\n\nexport const legislationSort = (\n a: LegislationModel,\n b: LegislationModel,\n columnSort: ColumnSort\n): number => {\n const direction = columnSort.direction === SortDirection.Ascending ? -1 : 1;\n\n const typedColumn: keyof LegislationModel =\n columnSort.name as keyof LegislationModel;\n\n switch (typedColumn) {\n case 'jurisdiction':\n return sort(\n a.jurisdiction?.name || '',\n b.jurisdiction?.name || '',\n direction\n );\n default:\n return sort(a[typedColumn], b[typedColumn], direction);\n }\n};\n","import {\n JurisdictionModel,\n LegislationClassificationModel,\n LegislationExtended,\n} from '../../../swagger';\nimport React, { Dispatch, SetStateAction, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Accordion } from 'react-bootstrap';\nimport { AdoptechAccordionCard } from '../../../components/AdoptechAccordionCard/AdoptechAccordionCard';\nimport { isValidUrl } from '../../../functions/isValidUrl';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport {\n fetchClassifications,\n fetchJurisdictions,\n} from '../../../store/legalRegister/legalRegisterThunks';\nimport { AdoptechTextInput } from '../../../components/AdoptechTextInput/AdoptechTextInput';\nimport { AdoptechReactSelect } from '../../../components/AdoptechReactSelect/AdoptechReactSelect';\n\nexport const validation = (\n data: LegislationExtended\n): Record => ({\n name: (data.name || '').trim().length > 0 ? null : ['Name must be present'],\n classification: data.legislationClassification\n ? null\n : ['Classification must be set'],\n summary:\n (data.summary || '').trim().length > 0 ? null : ['Summary must be present'],\n jurisdiction: data.jurisdiction ? null : ['Jurisdiction must be set'],\n link:\n !data.descriptionUrl || isValidUrl(data.descriptionUrl)\n ? null\n : ['Link must be valid URL'],\n});\n\ninterface Props {\n formData: LegislationExtended;\n setFormData: Dispatch>;\n}\n\nexport const OverviewSection: React.FC = ({ formData, setFormData }) => {\n const baseCss = 'editLegislationDrawer';\n\n const dispatch = useDispatch();\n\n const [jurisdictions, setJurisdictions] = useState(null);\n const [classifications, setClassifications] =\n useState(null);\n\n useEffect(() => {\n dispatch(fetchJurisdictions(data => setJurisdictions(data)));\n dispatch(fetchClassifications(data => setClassifications(data)));\n }, []);\n\n const hasError = (field: string) => !!validation(formData)[field];\n\n const classificationOptions = () =>\n (classifications || []).map(c => ({\n label: c.name,\n value: c.id,\n }));\n\n const jurisdictionOptions = () =>\n (jurisdictions || []).map(j => ({\n label: j.name,\n value: j.id,\n }));\n\n const id = formData.id;\n\n return (\n \n \n
\n
\n
Legislation name
\n {\n setFormData({ ...formData, name: e.currentTarget.value });\n }}\n placeholder=\"Enter legislation name\"\n />\n
\n
\n
\n
\n
Classification
\n {classifications ? (\n {\n setFormData({\n ...formData,\n legislationClassification: classifications.find(\n c => c.id === e.value\n ),\n });\n }}\n value={classificationOptions().find(\n o => o.value === formData.legislationClassification.id\n )}\n placeholder=\"Select classification\"\n />\n ) : (\n \n )}\n
\n
\n
\n
\n
Summary
\n {\n setFormData({ ...formData, summary: e.currentTarget.value });\n }}\n placeholder=\"Enter summary\"\n />\n
\n
\n
\n
\n
Jurisdiction
\n {jurisdictions ? (\n {\n setFormData({\n ...formData,\n jurisdiction: jurisdictions.find(j => j.id === e.value),\n });\n }}\n value={jurisdictionOptions().find(\n o => o.value === formData.jurisdiction.id\n )}\n placeholder=\"Select jurisdiction\"\n />\n ) : (\n \n )}\n
\n
\n
URL link
\n {\n setFormData({\n ...formData,\n descriptionUrl: e.currentTarget.value,\n });\n }}\n placeholder=\"Enter URL\"\n />\n
\n
\n \n
\n );\n};\n","import { LegislationExtended } from '../../../swagger';\nimport React, { Dispatch, SetStateAction, useRef } from 'react';\nimport { Accordion } from 'react-bootstrap';\nimport { AdoptechAccordionCard } from '../../../components/AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AdoptechTextArea2 } from '../../../components/AdoptechTextArea2/AdoptechTextArea2';\nimport { useAutoGrowTextArea } from '../../../hooks/useAutoGrowTextArea';\n\nexport const validation = (\n data: LegislationExtended\n): Record => ({\n description:\n (data.description || '').trim().length > 0\n ? null\n : ['Description must be present'],\n});\n\ninterface Props {\n formData: LegislationExtended;\n setFormData: Dispatch>;\n}\n\nexport const DetailsSection: React.FC = ({ formData, setFormData }) => {\n const baseCss = 'editLegislationDrawer';\n\n const hasError = (field: string) => !!validation(formData)[field];\n\n const id = formData.id;\n const textAreaRef = useRef(null);\n useAutoGrowTextArea(textAreaRef.current, formData?.description);\n\n return (\n \n \n
\n
\n {\n setFormData({\n ...formData,\n description: e.currentTarget.value,\n });\n }}\n />\n
\n
\n
\n \n
\n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { LegislationExtended, LegislationModel } from '../../../swagger';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport './EditLegislationDrawer.scss';\n\n// Sections\nimport AdoptechHS from '../../../components/AdoptechHS/AdoptechHS';\nimport {\n fetchLegislation,\n updateLegislation,\n} from '../../../store/legalRegister/legalRegisterThunks';\nimport {\n OverviewSection,\n validation as overviewValidation,\n} from './OverviewSection';\nimport {\n DetailsSection,\n validation as detailsValidation,\n} from './DetailsSection';\n\ninterface Props {\n showReason: LegislationModel;\n onClose: (updateNeeded: boolean) => void;\n}\n\nexport const EditLegislationDrawer: React.FC = ({\n showReason,\n onClose,\n}) => {\n const baseCss = 'editLegislationDrawer';\n\n const dispatch = useDispatch();\n\n const [formData, setFormData] = useState(null);\n\n // track changes presence\n const [originalData, setOriginalData] = useState(formData);\n const formHasChanges = formData != originalData;\n\n const initData = (data: LegislationExtended) => {\n setFormData(data);\n setOriginalData(data);\n };\n\n const cleanData = () => {\n setFormData(null);\n setOriginalData(null);\n };\n\n useEffect(() => {\n if (!showReason?.id) return cleanData();\n\n dispatch(fetchLegislation(showReason.id, initData));\n }, [showReason]);\n\n const validation = !!formData && {\n ...overviewValidation(formData),\n ...detailsValidation(formData),\n };\n const formValid =\n !!validation &&\n Object.values(validation).reduce((acc, v) => acc && !v, true);\n const title = 'Edit Legislation';\n\n const dispatchSubmit = () => {\n dispatch(\n updateLegislation(\n formData.id,\n {\n name: formData.name,\n legislationClassificationId: formData.legislationClassification.id,\n summary: formData.summary,\n jurisdictionId: formData.jurisdiction.id,\n descriptionUrl: formData.descriptionUrl,\n description: formData.description,\n },\n () => onClose(true)\n )\n );\n };\n\n const drawerBackgroundRef = useRef();\n\n const onCloseAndCleanup = () => {\n cleanData();\n onClose(true);\n };\n return (\n \n drawerBackgroundRef.current.click()}\n variant={AdoptechButtonVariant.White}\n >\n Cancel\n \n \n Save\n \n \n }\n extraClass=\"adoptechHS--medium editLegislationHS\"\n >\n {formData ? (\n
\n \n \n
\n ) : (\n \n )}\n \n );\n};\n","import React from 'react';\nimport { RegisterReviewFormProps } from './RegisterReviewDrawer';\nimport { Accordion } from 'react-bootstrap';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AdoptechTextArea2 } from '../AdoptechTextArea2/AdoptechTextArea2';\nimport { AdoptechReactSelect2 } from '../AdoptechReacSelect2/AdoptechReactSelect2';\nimport { SelectionOption } from '../../types/selectionOption';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faInfoCircle } from '@fortawesome/pro-light-svg-icons/faInfoCircle';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { RegistryHeaderProps } from '../RegistryHeader/RegisterHeader';\nimport { ReviewFrequencyEnum } from '../../swagger';\n\ninterface OverviewSectionProps {\n formData: RegisterReviewFormProps;\n setFormData: React.Dispatch>;\n registerType: RegistryHeaderProps['registerType'];\n nextReviewDate: string;\n}\n\nexport const OverviewSection: React.FC = ({\n formData,\n setFormData,\n registerType,\n nextReviewDate,\n}) => {\n const isLegal = registerType === 'LegalRegister';\n const baseCss = 'registerReviewDrawer';\n\n const showNextReviewDate = formData.reviewFrequency;\n\n const placeholder =\n `The Legal register should be reviewed on a regular basis, this is typically carried out as part of your security management reviews.\n\nComment here on who reviewed the register, when, and how it was reviewed. Make sure you take a snapshot (generate a report) as the Auditor will want to see a version controlled Legal register report.`.replace(\n 'Legal',\n isLegal ? 'Legal' : 'PESTEL'\n );\n\n const reviewFrequencyOptions = Object.values(ReviewFrequencyEnum).map(\n value => {\n return { label: `In ${value}`, value: value };\n }\n );\n\n return (\n \n \n
\n
\n {\n const text = e.currentTarget.value;\n const payload = { ...formData, reviewComments: text };\n setFormData(payload);\n }}\n value={formData.reviewComments}\n id=\"reviewComments\"\n rows={6}\n />\n
\n
\n
\n
\n {\n const payload = {\n ...formData,\n reviewFrequency: selectedOption.value as ReviewFrequencyEnum,\n };\n setFormData(payload);\n }}\n value={reviewFrequencyOptions.find(option => {\n return option.value === formData.reviewFrequency;\n })}\n placeholder=\"Set review frequency\"\n label=\"Next review\"\n bottomComponent={\n showNextReviewDate ? (\n
\n \n {`Next review on ${formatShortDate(nextReviewDate)}`}\n
\n ) : null\n }\n />\n
\n
\n \n
\n );\n};\n","import { api } from '../../api/api';\nimport {\n PestelItemModel,\n PestelItemUpdatePayload,\n PestelItemCreatePayload,\n PestelRegisterUpdatePayload,\n PestelRegisterModel,\n} from '../../swagger';\nimport { VoidThunk } from '../../types/voidThunk';\nimport { setErrorMessage, showGlobalToast } from '../global/globalSlice';\nimport { getErrorMessage } from '../helpers/thunkHelpers';\nimport {\n fetchPestelsRequest,\n fetchPestelsSuccess,\n setPestelError,\n deletePestelSuccess,\n deletePestelRequest,\n createPestelItemRequest,\n createPestelItemSuccess,\n createPestelItemFailure,\n fetchPestelItemRequest,\n fetchPestelItemSuccess,\n fetchPestelItemFailure,\n updatePestelItemRequest,\n updatePestelItemSuccess,\n updatePestelItemFailure,\n fetchPestelRegisterRequest,\n fetchPestelRegisterSuccess,\n fetchPestelRegisterFailure,\n patchPestelRegisterRequest,\n patchPestelRegisterSuccess,\n patchPestelRegisterFailure,\n} from './pestelSlice';\n\nexport const fetchPestels =\n (vendorId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchPestelsRequest());\n const response = await api().vendorsVendorIdPestelItemsGet({\n vendorId,\n });\n dispatch(fetchPestelsSuccess(response as PestelItemModel[]));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching pestel items. Please try again or contact support.'\n );\n dispatch(setPestelError(apiErrorMessage));\n }\n };\n\nexport const deletePestelItem =\n (id: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deletePestelRequest());\n await api().pestelItemsIdDelete({\n id,\n });\n dispatch(deletePestelSuccess(id));\n dispatch(fetchPestelRegister());\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while deleting a pestel item. Please try again or contact support.'\n );\n dispatch(setPestelError(apiErrorMessage));\n }\n };\n\nexport const createPestelItem =\n (body: PestelItemCreatePayload, onSuccess: () => void): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(createPestelItemRequest());\n const payload = { vendorId: getState().vendors.currentVendor.id, body };\n const response = await api().vendorsVendorIdPestelItemsPost(payload);\n dispatch(createPestelItemSuccess(response));\n onSuccess();\n dispatch(showGlobalToast('Pestel item has been successfully added'));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while creating pestel item. Please try again or contact support.'\n );\n dispatch(createPestelItemFailure(apiErrorMessage));\n }\n };\n\nexport const fetchPestelItem =\n (id: PestelItemModel['id']): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchPestelItemRequest());\n const response = await api().pestelItemsIdGet({ id });\n dispatch(fetchPestelItemSuccess(response));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching pestel item. Please try again or contact support.'\n );\n dispatch(fetchPestelItemFailure(apiErrorMessage));\n }\n };\n\nexport const updatePestelItem =\n (\n id: PestelItemModel['id'],\n body: PestelItemUpdatePayload,\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(updatePestelItemRequest());\n const payload = { id, body };\n const response = await api().pestelItemsIdPatch(payload);\n dispatch(updatePestelItemSuccess(response));\n onSuccess();\n dispatch(showGlobalToast('Pestel item has been successfully updated'));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while updating pestel item. Please try again or contact support.'\n );\n dispatch(updatePestelItemFailure(apiErrorMessage));\n }\n };\n\nexport const fetchPestelRegister =\n (onSuccess?: (result: PestelRegisterModel) => void): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n\n dispatch(fetchPestelRegisterRequest());\n const response = await api().vendorsVendorIdPestelRegisterGet({\n vendorId,\n });\n dispatch(fetchPestelRegisterSuccess(response));\n onSuccess && onSuccess(response);\n } catch (err) {\n const errorMessageToUser = await getErrorMessage(\n err,\n 'An error occurred while loading a pestel register. Please try again or contact support.'\n );\n dispatch(setErrorMessage(errorMessageToUser));\n dispatch(fetchPestelRegisterFailure(errorMessageToUser));\n }\n };\n\nexport const patchPestelRegister =\n (body: PestelRegisterUpdatePayload, onSuccess?: () => void): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(patchPestelRegisterRequest());\n const payload = { vendorId: getState().vendors.currentVendor.id, body };\n const response = await api().vendorsVendorIdPestelRegisterPatch(payload);\n dispatch(patchPestelRegisterSuccess(response));\n onSuccess && onSuccess();\n dispatch(\n showGlobalToast('Pestel register has been successfully updated')\n );\n } catch (err) {\n const errorMessageToUser = await getErrorMessage(\n err,\n 'An error occurred updating pestel register. Please try again or contact support.'\n );\n dispatch(patchPestelRegisterFailure());\n dispatch(setErrorMessage(errorMessageToUser));\n }\n };\n","import React, { useRef, useState } from 'react';\nimport AdoptechHS from '../AdoptechHS/AdoptechHS';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport {\n ControlReviewFrequencyEnum,\n LegalRegisterModel,\n ReviewFrequencyEnum,\n ReviewHistoryItemCreatePayloadReviewHistoryItem,\n ReviewHistoryItemCreatePayloadReviewHistoryItemRelatedToTypeEnum,\n VendorsVendorIdReviewHistoryItemsGetRelatedToTypeEnum,\n} from '../../swagger';\nimport { OverviewSection } from './OverviewSection';\nimport { Tab, Tabs } from 'react-bootstrap';\nimport { ReviewHistoryItems } from '../compliance/ReviewHistoryItems/ReviewHistoryItems';\nimport './RegisterReviewDrawer.scss';\nimport { RegistryHeaderProps } from '../RegistryHeader/RegisterHeader';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { patchLegalRegister } from '../../store/legalRegister/legalRegisterThunks';\nimport { patchPestelRegister } from '../../store/pestel/pestelThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport { postReviewHistoryItem } from '../../store/compliance/complianceThunks';\nimport { calculateNextReviewDate } from '../PolicyDrawer/PolicyOverviewSection/PolicyOverviewSection';\nimport moment from 'moment';\n\ninterface RegisterReviewDrawerProps {\n onClose: (updateNeeded: boolean) => void;\n register: RegistryHeaderProps['register'];\n registerType: RegistryHeaderProps['registerType'];\n}\n\nexport interface RegisterReviewFormProps {\n reviewComments: string;\n reviewFrequency: ReviewFrequencyEnum;\n}\n\nexport enum TabsEnum {\n Details = 'Details',\n ReviewHistoryItemsTab = 'Review History',\n}\n\nexport const RegisterReviewDrawer: React.FC = ({\n onClose,\n register,\n registerType,\n}) => {\n const drawerBackgroundRef = useRef();\n const [formData, setFormData] = useState({\n reviewFrequency: register.reviewFrequency as ReviewFrequencyEnum,\n reviewComments: null,\n });\n const [selectedTab, setSelectedTab] = useState(TabsEnum.Details);\n\n const frequencyChanged =\n formData?.reviewFrequency &&\n formData?.reviewFrequency !==\n (register as LegalRegisterModel)?.reviewFrequency;\n const formFieldsChanged =\n Boolean(formData?.reviewComments) || frequencyChanged;\n\n const onCloseAndCleanup = () => {\n setFormData({\n reviewFrequency: null,\n reviewComments: null,\n });\n onClose(true);\n };\n\n const baseCss = 'registerReviewDrawer';\n const isLegal = registerType === 'LegalRegister';\n const dispatch = useDispatch();\n\n const isPatchingLegalRegister = useSelector(\n (state: ApplicationState) => state.legalRegister.isPatchingLegalRegister\n );\n const isPatchingPestelRegister = useSelector(\n (state: ApplicationState) => state.pestel.isPatchingPestelRegister\n );\n\n const handleSubmit = async () => {\n if (!formFieldsChanged) return onCloseAndCleanup();\n\n const payload: ReviewHistoryItemCreatePayloadReviewHistoryItem = {\n relatedToType: isLegal\n ? ReviewHistoryItemCreatePayloadReviewHistoryItemRelatedToTypeEnum.LegalRegister\n : ReviewHistoryItemCreatePayloadReviewHistoryItemRelatedToTypeEnum.PestelRegister,\n relatedToId: register.id,\n reviewFrequency:\n formData.reviewFrequency as unknown as ControlReviewFrequencyEnum,\n reviewComment: formData.reviewComments,\n };\n await dispatch(postReviewHistoryItem(payload));\n\n const registerPayload = {\n reviewFrequency: formData.reviewFrequency,\n };\n const patchThunk = isLegal ? patchLegalRegister : patchPestelRegister;\n await dispatch(patchThunk(registerPayload));\n onCloseAndCleanup();\n };\n\n const { isPostingReviewHistoryItem } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n return (\n \n drawerBackgroundRef.current.click()}\n variant={AdoptechButtonVariant.White}\n >\n Cancel\n \n \n Submit Review\n \n \n }\n extraClass=\"adoptechHS--medium editLegislationHS\"\n >\n {register ? (\n
\n
\n {\n setSelectedTab(key as TabsEnum);\n }}\n >\n \n {selectedTab === TabsEnum.Details && (\n \n )}\n \n \n {selectedTab === TabsEnum.ReviewHistoryItemsTab && (\n \n )}\n \n \n
\n
\n ) : (\n \n )}\n \n );\n};\n","import { useDispatch } from 'react-redux';\nimport { useOwnerOptions } from '../../hooks/useOwnerOptions';\nimport { LegalRegisterModel } from '../../swagger/models/LegalRegisterModel';\nimport { LegalRegisterUpdatePayload } from '../../swagger/models/LegalRegisterUpdatePayload';\nimport { PestelRegisterModel } from '../../swagger/models/PestelRegisterModel';\nimport React, { useState } from 'react';\nimport { Lozenge } from '../Lozenge/Lozenge';\nimport { AdoptechReactSelect } from '../AdoptechReactSelect/AdoptechReactSelect';\nimport { AdoptechDatePicker } from '../AdoptechDatePicker/AdoptechDatePicker';\nimport moment from 'moment';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport { Dropdown } from 'react-bootstrap';\nimport { AdoptechDropdownToggle } from '../AdoptechDropdownToggle/AdoptechDropdownToggle';\nimport { push } from 'connected-react-router';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport './RegistryHeader.scss';\nimport { CalendarHS } from '../../features/calendar/CalendarHS/CalendarHS';\nimport { AdoptechPanel } from '../AdoptechPanel/AdoptechPanel';\nimport { PestelItemItemType } from '../../swagger/models/PestelItemItemType';\nimport {\n reportsRouteWithAddType,\n reportsRouteWithType,\n} from '../Reports/ReportsPage/ReportsPage';\nimport { useCanFeature } from '../../functions/access';\nimport { AccessObject } from '../../types/accessObject';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faAngleDown } from '@fortawesome/pro-solid-svg-icons/faAngleDown';\nimport { components } from 'react-select';\nimport classNames from 'classnames';\nimport { ReviewStatusEnum } from '../../swagger/models/ReviewStatusEnum';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { faExclamationCircle } from '@fortawesome/pro-solid-svg-icons/faExclamationCircle';\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus';\nimport { RegisterReviewDrawer } from '../RegisterReviewDrawer/RegisterReviewDrawer';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { registerTitle } from '../../functions/registerTitle';\n\nexport interface RegistryHeaderProps {\n setShowCreateAction: React.Dispatch>;\n setIsShowingAddDrawer: React.Dispatch<\n React.SetStateAction\n >;\n isLoadingList: boolean;\n canManageRegister: boolean;\n register: LegalRegisterModel | PestelRegisterModel;\n onChange: (arg0: LegalRegisterUpdatePayload) => void;\n registerType: 'LegalRegister' | 'PestelRegister';\n // For apply sticky header's we must have one container for all of them with solid white background\n // else we would have background glitches between header and search bar + would need to specify top values\n additionalHeaderRows: any;\n}\n\nexport const RegistryHeader: React.FC = ({\n setShowCreateAction,\n setIsShowingAddDrawer,\n isLoadingList,\n canManageRegister,\n register,\n onChange,\n registerType,\n additionalHeaderRows,\n}) => {\n const baseCss = 'registryHeader';\n const dispatch = useDispatch();\n const [showCalendarHS, setShowCalendarHS] = useState(false);\n const canManageReports = useCanFeature(AccessObject.reports_manage);\n const canViewReports = useCanFeature(AccessObject.reports);\n const [showRegisterReviewDrawer, setShowRegisterReviewDrawer] =\n useState(false);\n const { ownerOptions } = useOwnerOptions({\n onlyAdminable: true,\n });\n\n const DropdownIndicator = (props: any) => {\n return (\n \n \n \n );\n };\n\n const isLegal = registerType === 'LegalRegister';\n const reviewStatus = register.reviewStatus;\n\n return (\n
\n \n <>\n
\n
Status
\n {reviewStatus && (\n {\n canManageRegister && setShowRegisterReviewDrawer(true);\n }}\n className={classNames(\n `${baseCss}--review-status`,\n `${baseCss}--review-status-${reviewStatus\n .toLowerCase()\n .split(' ')\n .join('-')\n .replace('_', '-')}`\n )}\n style={canManageRegister ? { cursor: 'pointer' } : {}}\n >\n \n {reviewStatus === ReviewStatusEnum.Reviewed\n ? 'Reviewed'\n : 'Awaiting Review'}\n
\n )}\n
\n
\n
\n
Last Reviewed
\n
\n {formatShortDate(register.lastReviewedAt) || '-'}\n
\n
\n
\n \n
\n
Next Review
\n
\n {formatShortDate(register?.nextReviewDate) || '-'}\n
\n
\n
\n\n
\n
Register Owner
\n onChange({ ownerId: option.value })}\n value={ownerOptions.find(\n option => option.value === register.owner?.id\n )}\n placeholder=\"Select owner\"\n showUserAvatar\n showUserEmail={false}\n components={{ DropdownIndicator }}\n isDisabled={!canManageRegister}\n />\n
\n
\n
\n
Actions
\n
\n \n setShowCalendarHS(true)}\n >\n View\n \n
\n
\n
\n {!isLoadingList && (\n
\n {canViewReports && (\n \n \n \n Reports\n \n \n \n {canManageReports && (\n \n dispatch(\n push(\n reportsRouteWithAddType(\n registerType === 'PestelRegister'\n ? 'pestel'\n : 'legal'\n )\n )\n )\n }\n >\n Add report\n \n )}\n \n dispatch(\n push(\n reportsRouteWithType(\n registerType === 'PestelRegister'\n ? 'pestel'\n : 'legal'\n )\n )\n )\n }\n >\n View reports\n \n \n \n )}\n {canManageRegister && (\n \n \n \n Add new\n \n \n {registerType === 'PestelRegister' && (\n \n setIsShowingAddDrawer('risk')}\n >\n Risk\n \n setIsShowingAddDrawer('opportunity')}\n >\n Opportunity\n \n {\n setShowCreateAction(true);\n }}\n >\n Action\n \n {\n setShowRegisterReviewDrawer(true);\n }}\n >\n Register Review\n \n \n )}\n {registerType === 'LegalRegister' && (\n <>\n \n setIsShowingAddDrawer(true)}\n >\n Legislation\n \n {\n setShowCreateAction(true);\n }}\n >\n Action\n \n {\n setShowRegisterReviewDrawer(true);\n }}\n >\n Register Review\n \n \n \n )}\n \n )}\n
\n )}\n\n {showCalendarHS && (\n setShowCalendarHS(false)}\n title={`Actions raised for ${registerTitle(registerType)}`}\n registerId={register?.id}\n registerType={registerType}\n />\n )}\n\n {showRegisterReviewDrawer && (\n setShowRegisterReviewDrawer(false)}\n register={register}\n registerType={registerType}\n />\n )}\n \n {additionalHeaderRows}\n
\n );\n};\n","import classNames from 'classnames';\nimport React from 'react';\nimport './AdoptechCircleIcon.scss';\n\ninterface AdoptechCircleIconProps {\n className?: string;\n variant: 'lightBlue' | 'green' | 'red' | 'lightBlue2';\n}\n\nexport const AdoptechCircleIcon: React.FC = props => {\n return (\n \n {props.children}\n
\n );\n};\n","import { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport React, { Dispatch, SetStateAction, useState } from 'react';\nimport { AdoptechTextInput } from '../../../components/AdoptechTextInput/AdoptechTextInput';\nimport { useAddLegislationFormHandler } from './useAddLegislationFormHandler';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport { AdoptechCheckbox } from '../../../components/AdoptechCheckbox/AdoptechCheckbox';\nimport { JurisdictionModel, LegislationTemplateModel } from '../../../swagger';\nimport { AdoptechTooltip } from '../../../components/AdoptechTooltip/AdoptechTooltip';\nimport classNames from 'classnames';\nimport Fuse from 'fuse.js';\n\ninterface AddNewLegislationProps {\n addHandler: ReturnType;\n}\n\nexport const AddNewLegislation: React.FC = props => {\n const baseCss = 'addNewLegislation';\n\n const { isLoading, notEmptyJurisdictions: jurisdictions } = props.addHandler;\n\n if (isLoading) return ;\n\n const hasJurisdictions = jurisdictions.length > 0;\n if (!hasJurisdictions)\n return (\n
\n All jurisdictions are already used. Please remove legislation in the\n table or contact to Administrator\n
\n );\n\n return (\n
\n \n
\n \n \n
\n
\n );\n};\n\ninterface AddNewLegislationHeaderProps {\n search: string;\n setSearch: Dispatch>;\n}\nexport const AddNewLegislationHeader: React.FC<\n AddNewLegislationHeaderProps\n> = props => {\n const baseCss = 'documentLibraryHeader';\n const searchPlaceholder = 'Search legislation library';\n return (\n
\n
Add legislation
\n\n
\n props.setSearch(event.currentTarget.value)}\n type=\"text\"\n placeholder={searchPlaceholder}\n icon={faSearch}\n additionalClass=\"adoptechTextInput-search\"\n />\n
\n
\n );\n};\n\ninterface SelectJurisdictionsProps {\n addHandler: AddNewLegislationProps['addHandler'];\n}\n\nconst SelectJurisdictions: React.FC = props => {\n const {\n form,\n notEmptyJurisdictionOptions: jurisdictionOptions,\n onJurisdictionChange,\n } = props.addHandler;\n\n const baseCss = 'addNewLegislation';\n const elementCss = 'selectJurisdictionsSection';\n return (\n
\n
\n Select jurisdiction\n
\n \n {jurisdictionOptions.map(option => {\n return (\n ) => {\n const ids = form.selectedJurisdictionsIds || [];\n const newIds = e.target.checked\n ? [...ids, option.value]\n : ids.filter(id => id !== option.value);\n onJurisdictionChange(newIds);\n }}\n label={option.label}\n className=\"add-jurisdictions-checkbox\"\n />\n );\n })}\n
\n
\n );\n};\n\ninterface SelectLegislationsProps {\n addHandler: AddNewLegislationProps['addHandler'];\n}\n\nexport const SelectLegislations: React.FC = props => {\n const baseCss = 'addNewLegislation';\n const { form } = props.addHandler;\n const selectedJurisdictionsIds = form.selectedJurisdictionsIds || [];\n\n if (selectedJurisdictionsIds.length === 0) {\n return null;\n }\n return (\n
\n
Select legislation
\n
\n {selectedJurisdictionsIds.map(jurisdictionId => {\n return (\n \n );\n })}\n
\n
\n );\n};\n\ninterface JurisdictionTemplatesProps {\n id: JurisdictionModel['id'];\n addHandler: AddNewLegislationProps['addHandler'];\n}\nexport const JurisdictionTemplates: React.FC<\n JurisdictionTemplatesProps\n> = props => {\n const {\n form,\n notEmptyJurisdictions: jurisdictions,\n onSelectAllTemplatesChange,\n search,\n } = props.addHandler;\n const jurisdiction = jurisdictions.find(entity => entity.id === props.id);\n\n const options = {\n ignoreLocation: true,\n includeScore: true,\n keys: ['name'],\n threshold: 0,\n };\n\n const filteredJurisdictionTemplates =\n form.legislationTemplates?.filter(\n template => template.jurisdiction?.id === jurisdiction.id\n ) || [];\n\n const fuseApp = new Fuse(filteredJurisdictionTemplates, options);\n const jurisdictionTemplates = search\n ? fuseApp.search(search).map(x => x.item)\n : filteredJurisdictionTemplates;\n\n const allSelected = jurisdictionTemplates.every(template =>\n (form.selectedLegislationTemplatesIds || []).includes(template.id)\n );\n\n const baseCss = 'addNewLegislation';\n const elementCss = 'jurisdictionTemplatesSection';\n\n if (jurisdictionTemplates.length === 0) return null;\n return (\n
\n
\n
{jurisdiction?.name}
\n {(form.legislationTemplates || []).length >= 0 && (\n ) =>\n onSelectAllTemplatesChange(e, jurisdictionTemplates)\n }\n disabled={false}\n label=\"Select All\"\n className=\"select-all-jurisdictions\"\n />\n )}\n
\n
\n {jurisdictionTemplates.map(template => {\n return (\n \n );\n })}\n
\n
\n );\n};\n\nconst LegislationTemplate: React.FC<{\n template: LegislationTemplateModel;\n addHandler: AddNewLegislationProps['addHandler'];\n}> = props => {\n const baseCss = 'addNewLegislation';\n const elementCss = 'jurisdictionTemplate';\n const { form } = props.addHandler;\n const { template } = props;\n const isChecked = (form.selectedLegislationTemplatesIds || []).includes(\n props.template.id\n );\n\n const { onSelectTemplateChange } = props.addHandler;\n\n const templateChecked = (form.selectedLegislationTemplatesIds || []).includes(\n template.id\n );\n return (\n
\n \n
{template.name}
\n \n
\n ) =>\n onSelectTemplateChange(e, template)\n }\n label=\"Select\"\n className=\"select-jurisdictions\"\n />\n
\n
\n );\n};\n","import { useSelector } from 'react-redux';\nimport { JurisdictionModel } from '../../../swagger';\nimport { ApplicationState } from '../../../types/applicationState';\n\nexport const useJurisdictionsList = () => {\n const { addLegislationForm: form } = useSelector(\n (state: ApplicationState) => state.legalRegister\n );\n\n const allJurisdictions = [...(form.jurisdictions || [])].sort((a, b) => {\n const aHasTemplates = (form.legislationTemplates || []).some(\n template => template.jurisdiction?.id === a.id\n );\n const bHasTemplates = (form.legislationTemplates || []).some(\n template => template.jurisdiction?.id === b.id\n );\n\n if (aHasTemplates && !bHasTemplates) {\n return -1;\n } else if (!aHasTemplates && bHasTemplates) {\n return 1;\n } else {\n return 0;\n }\n });\n\n const notEmptyJurisdictions =\n allJurisdictions?.filter(jurisdiction => {\n return (form.legislationTemplates || []).some(\n template => template.jurisdiction?.id === jurisdiction.id\n );\n }) || [];\n\n const mapToOptions = (jurisdictions: JurisdictionModel[]) => {\n return jurisdictions.map(jurisdiction => ({\n value: jurisdiction.id,\n label: jurisdiction.name,\n }));\n };\n\n const notEmptyJurisdictionOptions = mapToOptions(notEmptyJurisdictions);\n const allJurisdictionOptions = mapToOptions(allJurisdictions);\n\n return {\n notEmptyJurisdictions,\n notEmptyJurisdictionOptions,\n allJurisdictions,\n allJurisdictionOptions,\n };\n};\n","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { JurisdictionModel, LegislationTemplateModel } from '../../../swagger';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { updateAddLegislationForm } from '../../../store/legalRegister/legalRegisterSlice';\nimport {\n createLegislationFromTemplates,\n fetchJurisdictions,\n fetchLegalRegister,\n fetchLegislationTemplates,\n fetchVendorLegislations,\n} from '../../../store/legalRegister/legalRegisterThunks';\nimport { useJurisdictionsList } from './useJurisdictionsList';\n\nexport interface AddLegislationForm {\n jurisdictions: JurisdictionModel[];\n selectedJurisdictionsIds: Array;\n isTouched: boolean;\n legislationTemplates: LegislationTemplateModel[];\n selectedLegislationTemplatesIds: Array;\n}\n\ntype Field = {\n [key in keyof AddLegislationForm]?: AddLegislationForm[keyof AddLegislationForm];\n};\n\nexport const useAfterLegislationFormSubmit = (onClose: () => void) => {\n const dispatch = useDispatch();\n\n return () => {\n dispatch(updateAddLegislationForm({} as AddLegislationForm));\n dispatch(fetchLegalRegister());\n dispatch(fetchVendorLegislations());\n onClose();\n };\n};\n\nexport const useAddLegislationFormHandler = ({\n onClose,\n}: {\n onClose: () => void;\n}) => {\n useEffect(() => {\n dispatch(fetchJurisdictions());\n dispatch(fetchLegislationTemplates());\n }, []);\n const [search, setSearch] = useState(null);\n const afterSubmit = useAfterLegislationFormSubmit(onClose);\n\n const dispatch = useDispatch();\n\n const {\n addLegislationForm: form,\n isRequestingFetchLegislationTemplates,\n isRequestingFetchJurisdictions,\n isRequestingCreateLegislationFromTemplates: isSubmitting,\n } = useSelector((state: ApplicationState) => state.legalRegister);\n\n const isLoading =\n isRequestingFetchLegislationTemplates || isRequestingFetchJurisdictions;\n const { notEmptyJurisdictions, notEmptyJurisdictionOptions } =\n useJurisdictionsList();\n\n const updateFields = (fields: Field[]) => {\n const payload = {\n ...form,\n isTouched: true,\n ...Object.assign({}, ...fields),\n };\n\n dispatch(updateAddLegislationForm(payload));\n };\n\n const onJurisdictionChange = (\n selectedJurisdictionsIds: JurisdictionModel['id'][]\n ) => {\n // For new jurisdiction select all jurisdiction templates.\n // For existing jurisdiction select existing templates\n const selectedLegislationTemplatesIds = selectedJurisdictionsIds\n .map(jurisdictionId => {\n const alreadySelected = (form.selectedJurisdictionsIds || []).includes(\n jurisdictionId\n );\n\n if (alreadySelected) {\n const selectedIdsForJurisdiction =\n form.selectedLegislationTemplatesIds.filter(templateId => {\n return (\n form.legislationTemplates.find(\n template => template.id === templateId\n ).jurisdiction?.id === jurisdictionId\n );\n });\n\n return selectedIdsForJurisdiction;\n }\n\n const allTemplatesIds = form.legislationTemplates\n .filter(template => template.jurisdiction?.id === jurisdictionId)\n .map(template => template.id);\n\n return allTemplatesIds;\n })\n .flat();\n\n updateFields([\n { selectedJurisdictionsIds },\n { selectedLegislationTemplatesIds },\n ]);\n };\n\n const onSelectAllTemplatesChange = (\n e: React.ChangeEvent,\n jurisdictionTemplates: LegislationTemplateModel[]\n ) => {\n {\n const jurisdictionTemplatesIds = jurisdictionTemplates.map(\n template => template.id\n );\n const ids =\n form.selectedLegislationTemplatesIds?.filter(\n templateId => !jurisdictionTemplatesIds.includes(templateId)\n ) || [];\n const updatedIds = e.target.checked\n ? ids.concat(jurisdictionTemplatesIds)\n : ids;\n\n updateFields([\n {\n selectedLegislationTemplatesIds: updatedIds,\n },\n ]);\n }\n };\n\n const onSelectTemplateChange = (\n e: React.ChangeEvent,\n template: LegislationTemplateModel\n ) => {\n const { checked } = e.target;\n const ids = (form.selectedLegislationTemplatesIds || []).filter(\n templateId => templateId !== template.id\n );\n const updatedIds = checked ? ids.concat(template.id) : ids;\n\n updateFields([{ selectedLegislationTemplatesIds: updatedIds }]);\n };\n\n const jurisdictionsIds = form.selectedJurisdictionsIds || [];\n const legislationsIds = form.selectedLegislationTemplatesIds || [];\n const submitButtonDisabled =\n !form.isTouched ||\n jurisdictionsIds.length === 0 ||\n legislationsIds.length === 0;\n const onTabChange = () => {\n updateFields([\n { selectedLegislationTemplatesIds: [], selectedJurisdictionsIds: [] },\n ]);\n };\n const onSubmit = async () => {\n await dispatch(\n createLegislationFromTemplates({\n legislationTemplateIds: form.selectedLegislationTemplatesIds,\n })\n );\n\n afterSubmit();\n };\n\n return {\n onJurisdictionChange,\n onSelectAllTemplatesChange,\n onSelectTemplateChange,\n submitButtonDisabled,\n onSubmit,\n isLoading,\n isSubmitting,\n form,\n notEmptyJurisdictions,\n notEmptyJurisdictionOptions,\n onTabChange,\n search,\n setSearch,\n };\n};\n","import React, { useEffect } from 'react';\nimport { LegislationCreatePayloadLegislation } from '../../../swagger/models/LegislationCreatePayloadLegislation';\nimport './AddOwnLegislation.scss';\nimport { AdoptechTextInput2 } from '../../../components/AdoptechTextInput2/AdoptechTextInput2';\nimport { fetchClassifications } from '../../../store/legalRegister/legalRegisterThunks';\nimport { isValidUrl } from '../../../functions/isValidUrl';\nimport { AdoptechReactSelect2 } from '../../../components/AdoptechReacSelect2/AdoptechReactSelect2';\nimport { AdoptechTextArea2 } from '../../../components/AdoptechTextArea2/AdoptechTextArea2';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport { useAddOwnLegislationHandler } from './useAddOwnLegislationHandler';\n\ninterface AddOwnLegislationProps {\n addHandler: ReturnType;\n}\nexport const validation = (\n data: OwnLegislationForm\n): Record => ({\n name: (data.name || '').trim().length > 0 ? null : ['Name must be present'],\n legislationClassificationId: data.legislationClassificationId\n ? null\n : ['Classification must be set'],\n summary:\n (data.summary || '').trim().length > 0 ? null : ['Summary must be present'],\n jurisdictionId: data.jurisdictionId ? null : ['Jurisdiction must be set'],\n descriptionUrl:\n !data.descriptionUrl || isValidUrl(data.descriptionUrl)\n ? null\n : ['Link must be valid URL'],\n description:\n (data.description || '').trim().length > 0\n ? null\n : ['Description must be present'],\n});\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface OwnLegislationForm\n extends Partial {}\nexport const AddOwnLegislation: React.FC = props => {\n const baseCss = 'addOwnLegislation';\n const headerCss = 'documentLibraryHeader';\n const {\n formData,\n setFormData,\n classificationOptions,\n allJurisdictionOptions: jurisdictionOptions,\n hasError,\n setClassifications,\n } = props.addHandler;\n const dispatch = useAppDispatch();\n useEffect(() => {\n setFormData({});\n classificationOptions().length === 0 &&\n dispatch(fetchClassifications(data => setClassifications(data)));\n }, []);\n\n return (\n
\n
\n
Add my own legislation
\n
\n
\n
\n
Overview
\n
\n
\n {\n setFormData({ ...formData, name: e.currentTarget.value });\n }}\n label=\"Legislation name\"\n placeholder=\"Example Legislation\"\n />\n
\n
\n {\n setFormData({\n ...formData,\n legislationClassificationId: e.value,\n });\n }}\n value={classificationOptions().find(\n o => o.value === formData.legislationClassificationId\n )}\n label=\"Classification\"\n placeholder=\"Select classification\"\n />\n
\n
\n {\n setFormData({\n ...formData,\n jurisdictionId: e.value,\n });\n }}\n value={jurisdictionOptions.find(\n o => o.value === formData.jurisdictionId\n )}\n label=\"Jurisdiction\"\n placeholder=\"Select jurisdiction\"\n />\n
\n
\n {\n setFormData({\n ...formData,\n descriptionUrl: e.currentTarget.value,\n });\n }}\n label=\"URL link\"\n placeholder=\"Enter URL Address\"\n />\n
\n
\n {\n setFormData({ ...formData, summary: e.currentTarget.value });\n }}\n label=\"Summary\"\n rows={4}\n placeholder=\"This is an example of creating a custom legislation\"\n />\n
\n
\n
\n
\n
Description
\n
\n
\n {\n setFormData({\n ...formData,\n description: e.currentTarget.value,\n });\n }}\n />\n
\n
\n
\n
\n
\n );\n};\n","import { useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { postLegislation } from '../../../store/legalRegister/legalRegisterThunks';\nimport {\n LegislationClassificationModel,\n LegislationCreatePayloadLegislation,\n SharedLegislationRecurring,\n} from '../../../swagger';\nimport { OwnLegislationForm, validation } from './AddOwnLegislation';\nimport { useAfterLegislationFormSubmit } from './useAddLegislationFormHandler';\nimport { useJurisdictionsList } from './useJurisdictionsList';\n\nexport const useAddOwnLegislationHandler = (props: { onClose: () => void }) => {\n const dispatch = useDispatch();\n\n const afterSubmit = useAfterLegislationFormSubmit(props.onClose);\n\n const { allJurisdictions, allJurisdictionOptions } = useJurisdictionsList();\n const [classifications, setClassifications] =\n useState(null);\n\n const [formData, setFormData] = useState({});\n\n const hasError = (field: string) => !!validation(formData)[field];\n\n const classificationOptions = () =>\n (classifications || []).map(c => ({\n label: c.name,\n value: c.id,\n }));\n\n const formValidation = validation(formData);\n const formValid = Object.values(formValidation).some(value => value != null);\n\n const onSubmit = async () => {\n const {\n name,\n legislationClassificationId,\n summary,\n jurisdictionId,\n descriptionUrl,\n description,\n } = formData;\n const payload: Required = {\n name,\n legislationClassificationId,\n summary,\n jurisdictionId,\n descriptionUrl,\n description,\n explanationOfCompliance: null,\n recurring: SharedLegislationRecurring.Annually,\n };\n await dispatch(postLegislation(payload));\n afterSubmit();\n };\n return {\n formData,\n setFormData,\n classificationOptions,\n allJurisdictionOptions,\n hasError,\n allJurisdictions,\n formValid,\n setClassifications,\n onSubmit,\n };\n};\n","import classNames from 'classnames';\nimport React, { useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport './AddLegislationModal.scss';\nimport AdoptechModal from '../../../components/AdoptechModal/AdoptechModal';\nimport { AddNewLegislation } from './AddNewLegislation';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { useAddLegislationFormHandler } from './useAddLegislationFormHandler';\nimport { AddOwnLegislation } from './AddOwnLegislation';\nimport { useAddOwnLegislationHandler } from './useAddOwnLegislationHandler';\n\nconst Tab = {\n register: 'register',\n own: 'own',\n};\n\ninterface AddLegislationModalProps {\n onClose: () => void;\n}\nexport const AddLegislationModal: React.FC<\n AddLegislationModalProps\n> = props => {\n const [selectedTab, setSelectedTab] = useState(Tab.register);\n const baseCss = 'documentLibraryModal';\n const tabClasses = (tab: string) =>\n classNames('documentLibraryModal--tab', { selected: tab === selectedTab });\n\n const addHandler = useAddLegislationFormHandler({ onClose: props.onClose });\n const addOwnHandler = useAddOwnLegislationHandler({ onClose: props.onClose });\n const { isSubmitting, onSubmit, submitButtonDisabled, onTabChange } =\n addHandler;\n\n const handleTabChange = (tab: string) => {\n setSelectedTab(tab);\n onTabChange();\n };\n return (\n \n \n
Legislation library
\n
\n handleTabChange(Tab.register)}\n >\n Legislation\n
\n handleTabChange(Tab.own)}\n >\n Add my own\n
\n
\n \n \n {selectedTab === Tab.register && (\n \n )}\n {selectedTab === Tab.own && (\n \n )}\n \n\n \n \n Cancel\n \n \n Add\n \n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Grid } from '../../../types/grid';\nimport {\n deleteLegislation,\n fetchLegalRegister,\n fetchVendorLegislations,\n patchLegalRegister,\n} from '../../../store/legalRegister/legalRegisterThunks';\nimport { selectLegislations } from '../../../selectors/selectLegislations';\nimport AdoptechGridTable from '../../../components/AdoptechGridTable/AdoptechGridTable';\nimport { SortableTableHeader } from '../../../components/SortableTableHeader/SortableTableHeader';\nimport { NoDataText } from '../../../components/NoDataText/NoDataText';\nimport { AdoptechPanel } from '../../../components/AdoptechPanel/AdoptechPanel';\nimport './LegalRegister.scss';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport {\n LegalRegisterModel,\n LegalRegisterUpdatePayload,\n LegislationModel,\n PestelRegisterModel,\n ReferenceCreatePayloadReferenceReferenceableTypeEnum,\n VendorActionExtended,\n VendorEventEventType,\n} from '../../../swagger';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { EditLegislationDrawer } from '../EditLegislationDrawer/EditLegislationDrawer';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport { faExternalLink } from '@fortawesome/pro-light-svg-icons/faExternalLink';\nimport { GenericModal } from '../../../components/GenericModal/GenericModal';\nimport { AdoptechTextInput } from '../../../components/AdoptechTextInput/AdoptechTextInput';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { selectCurrentVendor } from '../../../selectors/selectCurrentVendor';\nimport { useCanFeature } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport classNames from 'classnames';\nimport { setLegislationsSearch } from '../../../store/legalRegister/legalRegisterSlice';\nimport { EditActionModal } from '../../../components/EditActionModal/EditActionModal';\nimport {\n setPageHeaderLabel,\n showGlobalToast,\n} from '../../../store/global/globalSlice';\nimport {\n RegistryHeader,\n RegistryHeaderProps,\n} from '../../../components/RegistryHeader/RegisterHeader';\nimport {\n createActionReference,\n createNewAction,\n} from '../../calendar/store/calendarThunks';\nimport { AdoptechCircleIcon } from '../../../components/AdoptechCircleIcon/AdoptecCircleIcon';\nimport { fetchPestelRegister } from '../../../store/pestel/pestelThunks';\nimport { useBackground } from '../../../hooks/useBackground';\nimport { Lozenge } from '../../../components/Lozenge/Lozenge';\nimport { mapVendorActonFormToPostPayload } from '../../calendar/CalendarPage/CalendarPageModals';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport { AddLegislationModal } from '../AddLegislationModal/AddLegislationModal';\n\nexport interface DeleteLegislationInfo {\n id: string;\n name: string;\n}\n\nconst LegislationList: React.FC<{\n items?: LegislationModel[];\n onClick(l: LegislationModel): void;\n setDeleteLegislation: (legislation: DeleteLegislationInfo) => void;\n isLoadingList: boolean;\n}> = ({ items, onClick, setDeleteLegislation, isLoadingList }) => {\n const canManageRegister = useCanFeature(AccessObject.legal_register_manage);\n if (isLoadingList) return ;\n if (items.length < 1) return ;\n const baseCss = 'legalRegister';\n\n return (\n }>\n {items.map(l => (\n canManageRegister && onClick(l)}\n >\n \n {l.jurisdiction.identifier}\n \n
{l.name}
\n {\n e.stopPropagation();\n window.open(l.descriptionUrl, '_blank');\n }}\n icon={faExternalLink}\n />\n
{l.legislationClassification.name}
\n\n \n {l.summary}\n
\n\n {canManageRegister && (\n
\n {\n e.stopPropagation();\n setDeleteLegislation({ id: l.id, name: l.name });\n }}\n icon={faTrashAlt}\n />\n
\n )}\n \n ))}\n \n );\n};\n\nexport const useRegistryCreateActionRHS = ({\n register,\n registerType,\n}: {\n register: LegalRegisterModel | PestelRegisterModel;\n registerType: RegistryHeaderProps['registerType'];\n}) => {\n const [showCreateAction, setShowCreateAction] = useState(false);\n const dispatch = useAppDispatch();\n const afterCreate = (action: VendorActionExtended) => {\n dispatch(\n createActionReference(\n action.id,\n register?.id,\n registerType === 'LegalRegister'\n ? ReferenceCreatePayloadReferenceReferenceableTypeEnum.LegalRegister\n : ReferenceCreatePayloadReferenceReferenceableTypeEnum.PestelRegister,\n () => {\n if (registerType === 'LegalRegister') dispatch(fetchLegalRegister());\n if (registerType === 'PestelRegister')\n dispatch(fetchPestelRegister());\n }\n )\n );\n dispatch(\n showGlobalToast(\n 'Action has been successfully created. Please visit the Actions & Events page to see it.'\n )\n );\n };\n\n const createAction = async (params: VendorActionExtended) => {\n const payload = mapVendorActonFormToPostPayload(params);\n const newAction = await dispatch(createNewAction({ payload })).unwrap();\n afterCreate(newAction);\n setShowCreateAction(false);\n };\n return { createAction, setShowCreateAction, showCreateAction };\n};\n\nexport const LegalRegisterPage: React.FC = () => {\n const dispatch = useDispatch();\n const [legislationInfo, setLegislationInfo] =\n useState();\n const baseCss = 'legalRegister';\n useEffect(() => {\n dispatch(setPageHeaderLabel('Legal and Regulatory Register'));\n }, []);\n const [isShowingAddModal, setIsShowingAddDrawer] = useState(false);\n const search = useSelector(\n (state: ApplicationState) => state.legalRegister.legislationsSearch\n );\n\n const currentVendor = useSelector(selectCurrentVendor);\n\n useEffect(() => {\n dispatch(fetchLegalRegister());\n dispatch(fetchVendorLegislations());\n }, [currentVendor]);\n const canManageRegister = useCanFeature(AccessObject.legal_register_manage);\n const legislationsList = useSelector(selectLegislations);\n const isLoadingList = useSelector(\n (state: ApplicationState) =>\n state.legalRegister.isRequestingVendorLegislations ||\n state.legalRegister.isFetchingLegalRegister\n );\n const register = useSelector(\n (state: ApplicationState) => state.legalRegister.legalRegister\n );\n const { createAction, setShowCreateAction, showCreateAction } =\n useRegistryCreateActionRHS({\n registerType: 'LegalRegister',\n register,\n });\n const [editDrawerShowReason, setEditDrawerShowReason] =\n useState(null);\n useBackground('grey');\n\n if (!isLoadingList && !register)\n return (\n
\n No legal register exist for the current user\n
\n );\n\n return (\n
\n {register && (\n \n dispatch(patchLegalRegister(opts))\n }\n additionalHeaderRows={\n \n
\n
\n
Legislation
\n \n
\n \n dispatch(setLegislationsSearch(e.currentTarget.value))\n }\n type=\"text\"\n placeholder=\"Search for legislation\"\n icon={faSearch}\n additionalClass=\"adoptechTextInput-search\"\n />\n
\n
\n \n columnName=\"jurisdiction\"\n grid={Grid.LegalRegister}\n label=\"Jurisd.\"\n notInTable\n />\n \n columnName=\"name\"\n grid={Grid.LegalRegister}\n label=\"Legislation\"\n notInTable\n />\n Link\n Classification\n Summary\n
\n
\n }\n />\n )}\n \n \n \n {isShowingAddModal && (\n setIsShowingAddDrawer(false)} />\n )}\n setLegislationInfo(undefined)}\n onClose={() => {\n dispatch(deleteLegislation(legislationInfo?.id));\n setLegislationInfo(undefined);\n }}\n show={!!legislationInfo}\n showCancelButton\n title=\"Confirm delete?\"\n >\n
\n

{legislationInfo?.name}

\n
\n
Click CONFIRM to permanently delete this legislation.
\n \n setEditDrawerShowReason(null)}\n />\n\n {showCreateAction && (\n setShowCreateAction(false)}\n />\n )}\n
\n );\n};\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { PestelItemItemType, PestelItemModel } from '../../../swagger';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport {\n setPestelIdToBeDeleted,\n setShowEditDrawer,\n updatePestelItemForm,\n} from '../../../store/pestel/pestelSlice';\nimport {\n RiskInfo,\n RiskLevel,\n VendorRegisterRiskProfile,\n} from '../../VendorRegisterRiskProfile/VendorRegisterRiskProfile';\nimport { devLog } from '../../../functions/devLog';\nimport { useCanFeature } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport { AdoptechCircleIcon } from '../../AdoptechCircleIcon/AdoptecCircleIcon';\n\ntype pestelItemFields = Pick;\n\nexport const getPestelRating = (pestelItem: pestelItemFields) => {\n return pestelItem.consequence * pestelItem.likelihood;\n};\n\nexport const getPestelRiskInfo = (pestelItem: pestelItemFields): RiskInfo => {\n const severity = getPestelRating(pestelItem);\n const risk: RiskInfo = {\n riskSeverity: severity,\n riskLevel: getPestelRiskText(severity),\n };\n return risk;\n};\n\nexport const getPestelRiskText = (rating: number): keyof RiskLevel => {\n if (rating >= 0 && rating <= 5) return 'Low' as keyof RiskLevel;\n if (rating >= 6 && rating <= 8) return 'Medium' as keyof RiskLevel;\n if (rating >= 9 && rating <= 15) return 'High' as keyof RiskLevel;\n if (rating >= 16 && rating <= 25) return 'Critical' as keyof RiskLevel;\n\n devLog('Unexpected risk RiskLevel');\n return undefined;\n};\n\ninterface PestelRowProps {\n pestel: PestelItemModel;\n baseCss: string;\n baseTableCss: string;\n}\n\nexport const PestelRow: React.FC = ({\n baseCss,\n baseTableCss,\n pestel,\n}) => {\n const dispatch = useDispatch();\n const canManagePestel = useCanFeature(AccessObject.pestel_manage);\n const isOpportunity = pestel.itemType === PestelItemItemType.Opportunity;\n return (\n {\n e.stopPropagation();\n if (!canManagePestel) return;\n dispatch(\n updatePestelItemForm({ id: pestel.id, itemType: pestel.itemType })\n );\n dispatch(setShowEditDrawer(true));\n }}\n className={classNames(\n baseCss,\n baseTableCss + '--highlighted',\n baseTableCss + '--row',\n { disabled: !canManagePestel }\n )}\n >\n
\n \n {isOpportunity ? 'op' : 'ri'}\n \n
\n
{pestel.description}
\n \n\n
\n {canManagePestel && (\n {\n e.stopPropagation();\n dispatch(setPestelIdToBeDeleted(pestel.id));\n }}\n icon={faTrashAlt}\n />\n )}\n
\n \n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { getPestelRating } from '../components/pestel/PestelSection/PestelRow';\nimport { sort } from '../functions/sort';\nimport { PestelItemArea, PestelItemModel } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\nimport { ColumnSort } from '../types/columnSort';\nimport { Grid } from '../types/grid';\nimport { selectSortSettings } from './selectSortSettings';\n\nconst sortPestels = (\n a: PestelItemModel,\n b: PestelItemModel,\n columnSort: ColumnSort\n) => {\n const typedColumn: keyof PestelItemModel =\n columnSort.name as keyof PestelItemModel;\n\n if (typedColumn === 'consequence') {\n return sort(getPestelRating(a), getPestelRating(b), columnSort.direction); // for rating column in Pestel table\n }\n\n return sort(a[typedColumn], b[typedColumn], columnSort.direction);\n};\n\nexport const selectPestels = (\n area: PestelItemArea,\n currentGrid: Grid,\n filteredPestels: PestelItemModel[]\n) => {\n return createSelector(\n (state: ApplicationState) => filteredPestels.filter(fp => fp.area == area),\n selectSortSettings(currentGrid),\n (pestels: PestelItemModel[], sortSetting) => {\n if (!pestels?.length) {\n return [];\n }\n return [...pestels].sort((a, b) =>\n sortPestels(a, b, sortSetting.columnSort)\n );\n }\n );\n};\n","import React from 'react';\nimport AdoptechGridTable from '../../AdoptechGridTable/AdoptechGridTable';\nimport { SortableTableHeader } from '../../SortableTableHeader/SortableTableHeader';\nimport { PestelRow } from './PestelRow';\nimport './PestelSection.scss';\nimport { capitaliseFirst } from '../../../functions/capitaliseFirst';\nimport { NoDataText } from '../../NoDataText/NoDataText';\nimport { PestelItemArea, PestelItemModel } from '../../../swagger';\nimport { getGridFromPestelArea } from '../getGridFromPestelArea';\nimport { useSelector } from 'react-redux';\nimport { selectPestels } from '../../../selectors/selectPestels';\n\ninterface PestelSectionProps {\n pestelsFilteredBySearch: PestelItemModel[];\n itemArea: PestelItemArea;\n baseTableCss: string;\n}\n\nexport const PestelSection: React.FC = ({\n pestelsFilteredBySearch,\n itemArea,\n baseTableCss,\n}) => {\n const baseCss = 'pestelSection';\n\n const getHeaderText = (area: string) => {\n const subStrings = area.split('_');\n return subStrings.map(s => capitaliseFirst(s)).join(' / ');\n };\n\n const grid = getGridFromPestelArea(itemArea);\n\n const sortedPestels = useSelector(\n selectPestels(itemArea, grid, pestelsFilteredBySearch)\n );\n\n return (\n <>\n
\n
\n
\n {getHeaderText(itemArea)}\n
\n
\n
\n {sortedPestels.length > 0 ? (\n
\n \n \n columnName=\"itemType\"\n grid={grid}\n label=\"Type\"\n className={baseCss + '--itemTypeHeader'}\n notInTable\n />\n
Description
\n \n columnName=\"consequence\" // custom sorting will be applied\n grid={grid}\n label=\"Score\"\n className={baseCss + '--risk'}\n notInTable\n />\n
\n
\n }\n >\n {sortedPestels.map((item: PestelItemModel) => {\n return (\n \n );\n })}\n \n
\n ) : (\n \n )}\n
\n \n \n );\n};\n","import { Grid } from '../../types/grid';\n\nexport const getGridFromPestelArea = (area: string) => {\n let grid;\n\n switch (area) {\n case 'political':\n grid = Grid.PestelPolitical;\n break;\n case 'economic_commercial':\n grid = Grid.PestelEconomicCommercial;\n break;\n case 'social':\n grid = Grid.PestelSocial;\n break;\n case 'environmental':\n grid = Grid.PestelEnvironmental;\n break;\n case 'legal':\n grid = Grid.PestelLegal;\n break;\n case 'technological':\n grid = Grid.PestelTechnological;\n break;\n default:\n grid = Grid.PestelPolitical;\n }\n\n return grid;\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport Fuse from 'fuse.js';\nimport { PestelItemModel } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\n\nconst filterPestels = (items: PestelItemModel[], search: string) => {\n if (!items || items?.length < 1) return [];\n\n const fuseTask = new Fuse(items, {\n ignoreLocation: true,\n includeScore: true,\n keys: [\n 'description',\n 'mitigationFactors',\n 'reviewDetails',\n 'consequence',\n 'likelihood',\n 'itemType',\n ],\n threshold: 0,\n });\n return fuseTask.search(search).map(x => x.item);\n};\n\nexport const selectFilteredPestels = (searchText: string) =>\n createSelector(\n (state: ApplicationState) => state.pestel.pestelItems,\n (items: PestelItemModel[]) => {\n if (!searchText) return items;\n else return filterPestels(items, searchText);\n }\n );\n","import { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport React from 'react';\nimport Accordion from 'react-bootstrap/esm/Accordion';\nimport { useSelector } from 'react-redux';\nimport { PestelItemArea } from '../../swagger/models/PestelItemArea';\nimport { PestelItemLocationType } from '../../swagger/models/PestelItemLocationType';\nimport { PestelItemModel } from '../../swagger/models/PestelItemModel';\nimport { ApplicationState } from '../../types/applicationState';\nimport { SelectionOption } from '../../types/selectionOption';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AdoptechReactSelect2 } from '../AdoptechReacSelect2/AdoptechReactSelect2';\nimport { AdoptechTextArea2 } from '../AdoptechTextArea2/AdoptechTextArea2';\nimport { PestelItemForm } from './ManagePestelItemsDrawer';\n\ntype ValueOf = T[keyof T];\nexport interface SectionProps {\n formData: PestelItemForm;\n updateField: (\n field: keyof PestelItemModel,\n value: ValueOf\n ) => void;\n isTouched: boolean;\n}\n\nconst descriptionValidation = (\n formData: PestelItemForm,\n pestelItems: PestelItemModel[]\n): string[] => {\n const errors = [];\n const isEmpty = (formData.description || '').trim().length <= 0;\n const hasDuplicate = pestelItems.some(\n item => item.id !== formData.id && item.description === formData.description\n );\n if (isEmpty) errors.push('Description must be present');\n if (hasDuplicate) errors.push('Description must be unique');\n\n return errors.length > 0 ? errors : null;\n};\n\nexport const validation = (\n formData: PestelItemForm,\n pestelItems: PestelItemModel[]\n): Record => ({\n description: descriptionValidation(formData, pestelItems),\n area: formData.area ? null : ['Area must be set'],\n locationType: formData.locationType ? null : ['Location type must be set'],\n});\n\nexport const selectOptions = (\n enumObject: Record\n) => {\n return Object.entries(enumObject).map(entry => {\n return { label: entry[0], value: entry[1] };\n });\n};\n\nexport const OverviewSection: React.FC = ({\n formData,\n updateField,\n isTouched,\n}) => {\n const baseCss = 'managePestelItemsDrawer';\n const pestelItems = useSelector(\n (state: ApplicationState) => state.pestel.pestelItems\n );\n const fieldErrors = (field: string) =>\n validation(formData, pestelItems)[field];\n const hasError = (field: string) => !!fieldErrors(field);\n\n const areaOptions = selectOptions(PestelItemArea);\n const locationTypeOptions = selectOptions(PestelItemLocationType);\n const errorExceptPresent = (error: string) => !error.includes('present');\n return (\n
\n \n \n
\n
\n \n updateField('description', e.currentTarget.value)\n }\n icon={faPen}\n />\n
\n
\n
\n
\n updateField('area', e.value)}\n value={areaOptions.find(\n option => option.value == formData.area\n )}\n placeholder=\"Select area\"\n />\n
\n
\n updateField('locationType', e.value)}\n value={locationTypeOptions.find(\n option => option.value == formData?.locationType\n )}\n placeholder=\"Please select\"\n />\n
\n
\n \n
\n
\n );\n};\n","import { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { faQuestionCircle } from '@fortawesome/pro-light-svg-icons/faQuestionCircle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React from 'react';\nimport Accordion from 'react-bootstrap/esm/Accordion';\nimport { useSelector } from 'react-redux';\nimport { showWidgetChatArticle } from '../../functions/chatWidgetHelper';\nimport { PestelItemModel } from '../../swagger/models/PestelItemModel';\nimport { ApplicationState } from '../../types/applicationState';\nimport { SelectionOption } from '../../types/selectionOption';\nimport { AdoptechAccordionCard } from '../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AdoptechReactSelect2 } from '../AdoptechReacSelect2/AdoptechReactSelect2';\nimport { AdoptechTextArea2 } from '../AdoptechTextArea2/AdoptechTextArea2';\nimport { getPestelRiskInfo } from '../pestel/PestelSection/PestelRow';\nimport { VendorRegisterRiskProfile } from '../VendorRegisterRiskProfile/VendorRegisterRiskProfile';\nimport { PestelItemForm } from './ManagePestelItemsDrawer';\nimport { SectionProps } from './OverviewSection';\nimport { capitalize } from '../../functions/capitalize';\nimport { PestelItemItemType } from '../../swagger';\n\nexport const validation = (\n formData: PestelItemForm,\n pestelItems: PestelItemModel[]\n): Record => {\n const isMitigationPresent = formData.mitigationFactors\n ? null\n : ['Mitigation factors must be set'];\n return {\n mitigationFactors:\n formData.itemType === PestelItemItemType.Opportunity\n ? null\n : isMitigationPresent,\n\n consequence: formData.consequence ? null : ['Consequence must be set'],\n\n likelihood: formData.likelihood ? null : ['Likelihood must be set'],\n };\n};\n\nexport const selectOptions = (\n enumObject: Record\n) => {\n return Object.entries(enumObject).map(entry => {\n return { label: entry[0], value: entry[1] };\n });\n};\n\nexport const AssessmentSection: React.FC = ({\n formData,\n updateField,\n isTouched,\n}) => {\n const baseCss = 'managePestelItemsDrawer';\n const pestelItems = useSelector(\n (state: ApplicationState) => state.pestel.pestelItems\n );\n const fieldErrors = (field: string) =>\n validation(formData, pestelItems)[field];\n const hasError = (field: string) => !!fieldErrors(field);\n\n const numberOptions = [1, 2, 3, 4, 5].map(number => {\n return {\n label: number as unknown as SelectionOption['label'],\n value: number as unknown as SelectionOption['value'],\n };\n });\n const { itemType: type } = formData;\n\n return (\n
\n \n \n
\n
\n \n updateField('mitigationFactors', e.currentTarget.value)\n }\n icon={faPen}\n />\n
\n
\n\n
\n
\n updateField('likelihood', e.value)}\n value={numberOptions.find(\n option =>\n (option.value as unknown as PestelItemModel['likelihood']) ==\n formData.likelihood\n )}\n placeholder=\"Please select\"\n />\n
\n
\n updateField('consequence', e.value)}\n value={numberOptions.find(\n option =>\n (option.value as unknown as PestelItemModel['consequence']) ==\n formData.consequence\n )}\n placeholder=\"Please select\"\n />\n
\n \n \n {\n showWidgetChatArticle('pestel');\n }}\n rel=\"noreferrer\"\n >\n \n \n
\n
\n
\n
\n updateField('comment', e.currentTarget.value)}\n icon={faPen}\n />\n
\n
\n \n \n \n );\n};\n","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { updatePestelItemForm } from '../../store/pestel/pestelSlice';\nimport {\n createPestelItem,\n fetchPestelItem,\n fetchPestelRegister,\n updatePestelItem,\n} from '../../store/pestel/pestelThunks';\nimport { PestelItemCreatePayloadPestelItem } from '../../swagger/models/PestelItemCreatePayloadPestelItem';\nimport { PestelItemModel } from '../../swagger/models/PestelItemModel';\nimport { ApplicationState } from '../../types/applicationState';\nimport { PestelItemForm } from './ManagePestelItemsDrawer';\nimport { validation as overviewValidation } from './OverviewSection';\nimport { validation as assessmentValidation } from './AssessmentSection';\n\nexport const useManagePestelItemsController = ({\n onClose,\n}: {\n onClose: () => void;\n}) => {\n const pestelState = useSelector((state: ApplicationState) => state.pestel);\n\n const {\n pestelItemForm: formData,\n isCreatingPestelItem,\n isUpdatingPestelItem,\n isFetchingPestelItem,\n pestelItems,\n pestelRegister: register,\n } = pestelState;\n // For simplicity don't compare with original state and ignore if user revert his changes to original.\n const [isTouched, setIsTouched] = useState(false);\n\n const onCloseAndCleanup = () => {\n dispatch(updatePestelItemForm({}));\n onClose();\n };\n\n useEffect(() => {\n if (formData.id) dispatch(fetchPestelItem(formData.id));\n }, [formData.id]);\n\n const onSubmit = () => {\n const payload = formData;\n const updateStats = () => {\n dispatch(fetchPestelRegister());\n };\n if (formData.id) {\n dispatch(\n updatePestelItem(formData.id, payload, () => {\n onCloseAndCleanup();\n })\n );\n return;\n }\n const createPayload = {\n pestelItem: payload as Required,\n };\n dispatch(\n createPestelItem(createPayload, () => {\n updateStats();\n onCloseAndCleanup();\n })\n );\n };\n const isSubmitting = isCreatingPestelItem || isUpdatingPestelItem;\n const validation = !!formData && {\n ...overviewValidation(formData, pestelItems),\n ...assessmentValidation(formData, pestelItems),\n };\n\n const formValid =\n !!validation && Object.values(validation).every(error => !error);\n\n const submitButtonDisabled = !formValid || !isTouched;\n const isLoading = isFetchingPestelItem;\n const dispatch = useDispatch();\n\n const setFormData = (updatedFormData: PestelItemForm) => {\n setIsTouched(true);\n dispatch(updatePestelItemForm(updatedFormData));\n };\n type ValueOf = T[keyof T];\n const updateField = (\n field: keyof PestelItemModel,\n value: ValueOf\n ) => {\n setFormData({\n ...formData,\n [field]: value,\n });\n };\n\n const sectionProps = {\n formData,\n isTouched,\n updateField,\n };\n\n return {\n isTouched,\n onCloseAndCleanup,\n onSubmit,\n isSubmitting,\n submitButtonDisabled,\n isLoading,\n formData,\n sectionProps,\n };\n};\n","import React, { useRef } from 'react';\nimport { PestelItemItemType, PestelItemModel } from '../../swagger';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechHS from '../AdoptechHS/AdoptechHS';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { useManagePestelItemsController } from './useManagePestelItemsController';\nimport './ManagePestelItemsDrawer.scss';\nimport { OverviewSection } from './OverviewSection';\nimport { capitalize } from '../../functions/capitalize';\nimport { AssessmentSection } from './AssessmentSection';\n\ninterface FooterProps {\n onClose: () => void;\n onSubmit: () => void;\n disabled: boolean;\n isSubmitting: boolean;\n isNew: boolean;\n}\n\nconst Footer: React.FC = ({\n onClose,\n disabled,\n onSubmit,\n isSubmitting,\n isNew,\n}) => {\n return (\n <>\n \n Cancel\n \n \n {isNew ? 'Add' : 'Confirm'}\n \n \n );\n};\nexport interface ManagePestelItemsDrawerProps {\n onClose: () => void;\n}\n\nexport type PestelItemForm = Partial;\n\nexport const ManagePestelItemsDrawer: React.FC<\n ManagePestelItemsDrawerProps\n> = ({ onClose }) => {\n const drawerBackgroundRef = useRef();\n const {\n isTouched,\n onCloseAndCleanup,\n onSubmit,\n isSubmitting,\n submitButtonDisabled,\n isLoading,\n formData,\n sectionProps,\n } = useManagePestelItemsController({ onClose });\n const { itemType: type } = formData;\n const isNew = !formData.id;\n\n return (\n drawerBackgroundRef.current.click()}\n disabled={submitButtonDisabled}\n onSubmit={onSubmit}\n isSubmitting={isSubmitting}\n isNew={isNew}\n />\n }\n extraClass=\"adoptechHS--medium adoptechHS--no-padding\"\n >\n {isLoading && }\n {!isLoading && (\n <>\n \n \n \n )}\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport { MessageToast } from '../../MessageToast/MessageToast';\nimport { selectCurrentVendorUser } from '../../../selectors/selectCurrentVendorUser';\nimport {\n deletePestelItem,\n fetchPestelRegister,\n fetchPestels,\n patchPestelRegister,\n} from '../../../store/pestel/pestelThunks';\nimport {\n clearToastMessage,\n setPestelIdToBeDeleted,\n setShowEditDrawer,\n updatePestelItemForm,\n} from '../../../store/pestel/pestelSlice';\nimport { PestelSection } from '../PestelSection/PestelSection';\nimport {\n PestelItemArea,\n PestelRegisterUpdatePayload,\n VendorEventEventType,\n} from '../../../swagger';\nimport './PestelPage.scss';\nimport { GenericModal } from '../../GenericModal/GenericModal';\nimport { selectFilteredPestels } from '../../../selectors/selectFilteredPestels';\nimport { ManagePestelItemsDrawer } from '../../ManagePestelItemsDrawer/ManagePestelItemsDrawer';\nimport { useCanFeature } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport { RegistryHeader } from '../../RegistryHeader/RegisterHeader';\nimport { AdoptechTextInput } from '../../AdoptechTextInput/AdoptechTextInput';\nimport { faSearch } from '@fortawesome/pro-solid-svg-icons';\nimport { AdoptechPanel } from '../../AdoptechPanel/AdoptechPanel';\nimport { EditActionModal } from '../../EditActionModal/EditActionModal';\nimport { useRegistryCreateActionRHS } from '../../../features/legalRegister/LegalRegisterPage/LegalRegisterPage';\nimport { useBackground } from '../../../hooks/useBackground';\nimport { Lozenge } from '../../Lozenge/Lozenge';\n\nexport const PestelPage: React.FC = () => {\n const baseCss = 'pestelPage';\n const baseTableCss = 'adoptechGridTable';\n const dispatch = useDispatch();\n const [searchText, setSearchText] = useState('');\n\n const vendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n\n const vendorUser = useSelector(selectCurrentVendorUser);\n const {\n toastMessage,\n toastVariant,\n isFetchingPestels,\n isFetchingPestelRegister,\n pestelItemForm,\n pestelRegister: register,\n pestelIdToBeDeleted: pestelIdToDelete,\n pestelItems: pestels,\n showEditDrawer: isShowingManageDrawer,\n } = useSelector((state: ApplicationState) => state.pestel);\n\n const { createAction, setShowCreateAction, showCreateAction } =\n useRegistryCreateActionRHS({\n registerType: 'PestelRegister',\n register,\n });\n\n const pestelsFilteredBySearch = useSelector(\n selectFilteredPestels(searchText)\n );\n const setIsShowingManageDrawer = (value: boolean) =>\n dispatch(setShowEditDrawer(value));\n useBackground('grey');\n useEffect(() => {\n dispatch(fetchPestelRegister());\n dispatch(fetchPestels(vendorId));\n }, [vendorId, vendorUser.roles]);\n\n const canManageRegister = useCanFeature(AccessObject.pestel_manage);\n\n if (isFetchingPestels) {\n return ;\n }\n\n return (\n <>\n
\n {register && (\n {\n dispatch(updatePestelItemForm({ itemType }));\n dispatch(setShowEditDrawer(true));\n }}\n isLoadingList={isFetchingPestels || isFetchingPestelRegister}\n register={register}\n registerType=\"PestelRegister\"\n canManageRegister={canManageRegister}\n onChange={(opts: PestelRegisterUpdatePayload) =>\n dispatch(patchPestelRegister(opts))\n }\n additionalHeaderRows={\n \n
\n
\n
\n Risks and Opportunities\n
\n \n
\n setSearchText(e.target.value)}\n type=\"text\"\n placeholder=\"Search for risks and opportunities\"\n icon={faSearch}\n additionalClass=\"adoptechTextInput-search\"\n />\n
\n \n }\n />\n )}\n \n dispatch(clearToastMessage())}\n show={Boolean(toastMessage)}\n >\n {toastMessage}\n \n {Object.values(PestelItemArea).map(key => {\n return (\n
\n \n
\n );\n })}\n
\n {isShowingManageDrawer && (\n setIsShowingManageDrawer(false)}\n />\n )}\n {showCreateAction && (\n setShowCreateAction(false)}\n disabledFields={['actionType']}\n />\n )}\n
\n dispatch(setPestelIdToBeDeleted(undefined))}\n onClose={() => {\n dispatch(deletePestelItem(pestelIdToDelete));\n }}\n show={!!pestelIdToDelete}\n showCancelButton\n title=\"Confirm delete?\"\n >\n
\n

{pestels.find(p => p.id === pestelIdToDelete)?.description}

\n
\n
\n Click CONFIRM to permanently delete this{' '}\n {`${pestels.find(p => p.id === pestelIdToDelete)?.itemType}`}.\n
\n \n \n );\n};\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { AdoptechTextInput2 } from '../../../components/AdoptechTextInput2/AdoptechTextInput2';\nimport { AdoptechReactSelect2 } from '../../../components/AdoptechReacSelect2/AdoptechReactSelect2';\nimport { AdoptechDatePicker2 } from '../../../components/AdoptechDatePicker2/AdoptechDatePicker2';\nimport './AuditsEditForm.scss';\nimport { AuditModel, VendorUserRoles } from '../../../swagger';\nimport { useOwnerOptions } from '../../../hooks/useOwnerOptions';\n\nexport const validation = (data: AuditModel): Record => ({\n name: data.name ? null : ['Audit name must be set'],\n owner: data.owner?.id ? null : ['Owner must be set'],\n startAt: data.startedAt ? null : ['Start date must be set'],\n});\n\ninterface Props {\n data: AuditModel;\n setData: Dispatch>;\n}\n\nexport const AuditsEditForm: React.FC = ({ data, setData }) => {\n const baseCss = 'auditsEditForm';\n\n const { users, ownerOptions } = useOwnerOptions({\n onlyRoles: [\n VendorUserRoles.Admin,\n VendorUserRoles.SecurityManager,\n VendorUserRoles.Auditor,\n VendorUserRoles.ExternalConsultant,\n ],\n });\n const startDate = data.startedAt ? new Date(data.startedAt) : null;\n\n type Field = 'name' | 'owner' | 'startAt';\n\n const fieldErrors = (field: Field) => validation(data)[field];\n\n const hasError = (field: Field) => !!fieldErrors(field);\n\n const setName = (name: string) => setData({ ...data, name });\n\n return (\n
\n
\n
Name your audit/review
\n setName(e.currentTarget.value)}\n id=\"auditsEditFormName\"\n hasError={hasError('name')}\n value={data.name || ''}\n type=\"text\"\n />\n
\n
\n
\n Who is responsible for completing this audit\n
\n {\n setData({\n ...data,\n owner: users.find(user => user.id === e.value),\n });\n }}\n value={ownerOptions.find(option => option.value == data.owner?.id)}\n />\n
\n
\n
\n On what date will the audit/review start (start date)\n
\n {\n setData({\n ...data,\n startedAt: d.toJSON().split('T')[0],\n });\n }}\n />\n
\n
\n );\n};\n","import React, { Dispatch, SetStateAction, useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { Survey } from '../../../swagger';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport { AdoptechCheckbox } from '../../../components/AdoptechCheckbox/AdoptechCheckbox';\nimport './AuditsAreasForm.scss';\nimport { dynamicClauses } from '../../../functions/dynamicClauses';\n\nconst baseCss = 'auditsAreasForm';\n\ninterface Question {\n type: 'question';\n name: string;\n id: string;\n annexRef: string;\n}\n\ninterface QuestionGroup {\n type: 'group';\n name: string;\n questions: Q[];\n}\n\ntype Q = Question | QuestionGroup;\n\ntype Acc = string[];\nconst getDescendantsIds = (q: Q): Acc => {\n switch (q.type) {\n case 'question': {\n return [q.id];\n }\n case 'group': {\n return q.questions.reduce(\n (acc: Acc, i: Q) => [...acc, ...getDescendantsIds(i)],\n []\n );\n }\n }\n};\n\nconst isChecked = (q: Q, ids: string[]): boolean =>\n getDescendantsIds(q).every(id => ids.includes(id));\n\nconst clausesAndControls = (survey: Survey): [QuestionGroup, QuestionGroup] => {\n const clauses: QuestionGroup = {\n type: 'group',\n name: 'Select All',\n questions: [],\n };\n const controls: QuestionGroup = {\n type: 'group',\n name: 'Select All',\n questions: [],\n };\n dynamicClauses(survey).forEach(clause => {\n const cursorClause = {\n type: 'group',\n name: clause.title,\n questions: [] as Q[],\n };\n const cursorControl = {\n type: 'group',\n name: clause.title,\n questions: [] as Q[],\n };\n\n clause.questions.forEach(question => {\n if (question.propertyName.startsWith('audit.control_')) {\n cursorControl.questions.push({\n type: 'question',\n name: question.questionText || question.name,\n id: question.id,\n annexRef: question.annexRef,\n });\n } else {\n cursorClause.questions.push({\n type: 'question',\n name: question.questionText || question.name,\n id: question.id,\n annexRef: question.annexRef,\n });\n }\n });\n\n if (cursorClause.questions.length)\n clauses.questions.push(cursorClause as QuestionGroup);\n if (cursorControl.questions.length)\n controls.questions.push(cursorControl as QuestionGroup);\n });\n\n return [clauses, controls];\n};\n\ninterface CheckBoxGroupProps {\n questionGroup: Q;\n ids: string[];\n toggleIds(q: Q, b: boolean): void;\n}\n\nconst groupCheckBoxId = (q: Q): string => {\n const ids = getDescendantsIds(q);\n return ids[0] + '-' + ids.length.toString() + '-' + ids.pop();\n};\n\nconst CheckBoxGroup: React.FC = ({\n questionGroup,\n ids,\n toggleIds,\n}) => {\n const renderQ = (q: Q) => {\n switch (q.type) {\n case 'group': {\n return (\n <>\n {\n toggleIds(q, e.currentTarget.checked);\n }}\n />\n
\n {q.questions.map(renderQ)}\n
\n \n );\n }\n case 'question': {\n return (\n {\n toggleIds(q, e.currentTarget.checked);\n }}\n />\n );\n }\n }\n };\n\n return (\n
{renderQ(questionGroup)}
\n );\n};\n\ninterface Props {\n ids: string[];\n setIds: Dispatch>;\n}\n\nexport const AuditsAreasForm: React.FC = ({ ids, setIds }) => {\n const template = useSelector(\n (state: ApplicationState) => state.audits.currentTemplate\n );\n\n const [clausesCheck, setClausesCheck] = useState(true);\n const [controlsCheck, setControlsCheck] = useState(false);\n\n const toggleIds = (q: Q, add: boolean): void => {\n if (add) {\n setIds([...new Set([...ids, ...getDescendantsIds(q)])]);\n } else {\n setIds(ids.filter(id => !getDescendantsIds(q).includes(id)));\n }\n };\n\n if (!template) return ;\n\n const [clauses, controls] = clausesAndControls(template.survey);\n\n const cleanUpClauses = () => toggleIds(clauses, false);\n const cleanUpControls = () => toggleIds(controls, false);\n\n return (\n
\n
Select the areas that you wish to review in this audit
\n
\n {\n setClausesCheck(e.currentTarget.checked);\n cleanUpClauses();\n }}\n />\n {\n setControlsCheck(e.currentTarget.checked);\n cleanUpControls();\n }}\n />\n
\n
\n {clausesCheck && (\n
\n
Clauses
\n \n
\n )}\n {controlsCheck && (\n
\n
Controls
\n \n
\n )}\n {!clausesCheck && !controlsCheck && (\n \n Please chose category above\n \n )}\n
\n
\n );\n};\n","import { Question, Survey } from '../swagger';\n\nexport const dynamicClauses = (survey: Survey) => {\n return survey.surveyClauses.filter(clause => clause.dynamic);\n};\n\nexport const hiddenForTheUserQuestionIds = (\n survey: Survey\n): Question['id'][] => {\n if (!survey) return [];\n return survey.surveyClauses\n .filter(clause => !clause.dynamic)\n .map(clause => clause.questions.map(question => question.id))\n .flat();\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport AdoptechHS from '../../../components/AdoptechHS/AdoptechHS';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { AuditsEditForm, validation } from './AuditsEditForm';\nimport { AuditsAreasForm } from './AuditsAreasForm';\nimport { AuditModel } from '../../../swagger';\nimport './AuditsStartNewDrawer.scss';\nimport { createAudit, fetchCurrentAuditTemplate } from './store/auditsThunks';\nimport { cleanUpCurrentTemplate } from './store/auditsSlice';\nimport { push } from 'connected-react-router';\nimport { auditsPageRoute } from '../../../components/Routes/Routes';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { hiddenForTheUserQuestionIds } from '../../../functions/dynamicClauses';\n\ninterface Props {\n templateId: string;\n onClose(): void;\n}\n\nexport const AuditsStartNewDrawer: React.FC = ({\n templateId,\n onClose,\n}) => {\n const dispatch = useDispatch();\n\n const [audit, setAudit] = useState({} as AuditModel);\n const [questionIds, setQuestionIds] = useState([]);\n\n const formIsValid = Object.values(validation(audit)).every(v => !v);\n\n const [step, setStep] = useState('Edit' as Step);\n\n useEffect(() => {\n setStep('Edit');\n setAudit({ auditTemplateId: templateId } as AuditModel);\n dispatch(fetchCurrentAuditTemplate(templateId));\n return () => {\n dispatch(cleanUpCurrentTemplate());\n };\n }, [templateId]);\n\n type Step = 'Edit' | 'Areas';\n\n const onBack = () => setStep('Edit');\n\n const { currentTemplate, isFetchingCurrentAuditTemplate } = useSelector(\n (state: ApplicationState) => state.audits\n );\n const alwaysRequiredIds = hiddenForTheUserQuestionIds(\n currentTemplate?.survey\n );\n const goNext = () => setStep('Areas');\n const submitChanges = () => {\n setBusy(true);\n const auditPayload = { ...audit, ownerId: audit.owner.id };\n delete auditPayload.owner;\n\n dispatch(\n createAudit(\n auditPayload,\n alwaysRequiredIds.concat(questionIds),\n onSubmitSuccess,\n onSubmitError\n )\n );\n };\n\n const onSubmitSuccess = () => {\n onClose();\n dispatch(push(auditsPageRoute));\n dispatch(cleanUpCurrentTemplate());\n };\n\n const onSubmitError = (err: string) => {\n alert(err);\n setStep('Edit');\n setBusy(false);\n };\n\n const [busy, setBusy] = useState(false);\n\n const EditFooter = (\n <>\n \n Cancel\n \n \n Next\n \n \n );\n\n const AreasFooter = (\n <>\n \n Back\n \n \n Confirm\n \n \n );\n\n const Footer = step === 'Edit' ? EditFooter : AreasFooter;\n\n return (\n \n {step == 'Edit' && }\n {step == 'Areas' && (\n \n )}\n \n );\n};\n","import { faBallotCheck } from '@fortawesome/pro-light-svg-icons/faBallotCheck';\nimport { faAngleRight } from '@fortawesome/pro-regular-svg-icons/faAngleRight';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React from 'react';\nimport './AdoptechTile.scss';\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { faCheckCircle } from '@fortawesome/free-solid-svg-icons/faCheckCircle';\n\ninterface AdoptechTileProps {\n name: string;\n description: string;\n icon?: IconDefinition;\n onClick: () => void;\n size: 'small' | 'medium' | 'large';\n buttonText: string;\n customTitle?: React.ReactNode;\n available?: boolean;\n}\nexport const AdoptechTile: React.FC = ({\n name,\n description,\n icon,\n onClick,\n size,\n buttonText,\n customTitle,\n available,\n}) => {\n const baseCss = 'adoptechTile';\n return (\n \n
\n
\n \n
\n {customTitle ? customTitle : name}\n {available === true && (\n \n )}\n
\n
{description}
\n \n \n );\n};\n\nAdoptechTile.defaultProps = {\n icon: faBallotCheck,\n};\n","import { faAngleLeft } from '@fortawesome/pro-light-svg-icons/faAngleLeft';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React from 'react';\nimport './AdoptechPageNavBar.scss';\n\ninterface AdoptechPageNavBarProps {\n goBack: () => void;\n content: React.ReactNode;\n leftContent?: React.ReactNode;\n}\nexport const AdoptechPageNavBar: React.FC = ({\n goBack,\n content,\n leftContent,\n}) => {\n const baseCss = 'adoptechPageNavBar';\n\n return (\n

\n
\n \n {leftContent}\n
\n {content}\n

\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { push } from 'connected-react-router';\nimport { AuditTemplateModel } from '../../../swagger';\nimport { auditsPageRoute } from '../../../components/Routes/Routes';\nimport { AuditsStartNewDrawer } from './AuditsStartNewDrawer';\nimport './AuditsTemplates.scss';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { fetchAuditTemplates } from './store/auditsThunks';\nimport { AdoptechTile } from '../../../components/AdoptechTile/AdoptechTile';\nimport { AdoptechPageNavBar } from '../../../components/AdoptechPageNavBar/AdoptechPageNavBar';\n\nexport const AuditsTemplates: React.FC = () => {\n const baseCss = 'auditsTemplates';\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(fetchAuditTemplates());\n }, []);\n\n const templates = useSelector(\n (state: ApplicationState) => state.audits.templates\n );\n\n const [currentTemplate, setCurrentTemplate] =\n useState(null);\n const unsetCurrentTemplate = () => setCurrentTemplate(null);\n\n const goBack = () => dispatch(push(auditsPageRoute));\n\n const startNewWith = (template: AuditTemplateModel) => {\n setCurrentTemplate(template);\n };\n\n return (\n <>\n Start new} />\n
\n {templates.map(template => (\n {\n startNewWith(template);\n }}\n />\n ))}\n
\n \n \n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AuditModel, AuditModelStatusEnum } from '../swagger/models/AuditModel';\nimport { ApplicationState } from '../types/applicationState';\nimport { selectAuditsProgress } from './selectAuditsProgress';\n\nexport const selectAuditQuestionsAreFilledIn = createSelector(\n (state: ApplicationState) => state.audits.currentAudit,\n selectAuditsProgress,\n (audit: AuditModel, progress) => {\n return audit\n ? progress.total === 1 && audit.status !== AuditModelStatusEnum.Completed\n : false;\n }\n);\n","import { faAngleLeft } from '@fortawesome/pro-light-svg-icons/faAngleLeft';\nimport { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport React, { Dispatch, SetStateAction } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectAuditQuestionsAreFilledIn } from '../../../selectors/selectAuditQuestionsAreFilledIn';\nimport { selectAuditsProgress } from '../../../selectors/selectAuditsProgress';\nimport { completeAudit } from './store/auditsThunks';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { AdoptechSliderSwitcher } from '../../../components/AdoptechSliderSwitcher/AdoptechSliderSwitcher';\nimport { AdoptechTooltip } from '../../../components/AdoptechTooltip/AdoptechTooltip';\nimport { Panel } from '../../../components/Panel/Panel';\nimport { ProgressBar } from '../../../components/ProgressBar/ProgressBar';\nimport { auditsPageRoute } from '../../../components/Routes/Routes';\nimport { AuditMode } from './AuditsEditor';\nimport { AuditsMeatballMenu } from './AuditsMeatballMenu';\nimport './AuditsSummaryTile.scss';\n\ninterface AuditSummaryTileProps {\n mode: AuditMode;\n setMode: React.Dispatch>;\n onEdit(): void;\n}\n\nexport const AuditsSummaryTile: React.FC = ({\n mode,\n setMode,\n onEdit,\n}) => {\n const dispatch = useDispatch();\n const progress = useSelector(selectAuditsProgress);\n const { currentAudit } = useSelector(\n (state: ApplicationState) => state.audits\n );\n const questionsAreFilledIn = useSelector(selectAuditQuestionsAreFilledIn);\n\n const completeButton = (\n dispatch(completeAudit(currentAudit.id))}\n variant={AdoptechButtonVariant.SuccessTransparent}\n rounded\n >\n \n Complete\n \n );\n const values = Object.values(AuditMode);\n return (\n \n
\n
\n \n
\n
\n {\n dispatch(push(auditsPageRoute));\n }}\n >\n \n
\n
\n
\n
Audit
\n
\n {currentAudit.name}\n
\n
\n
\n
Progress
\n
\n {(progress.total * 100).toFixed(0)}%\n
\n
\n
\n >\n }\n selected={mode as unknown as string}\n onClickHandlers={\n questionsAreFilledIn ? null : [() => {}, () => {}] // disable all with empty handlers if questions are not filled in\n }\n tooltipsOptions={\n questionsAreFilledIn\n ? []\n : [\n { enabled: false },\n {\n enabled: true,\n text: 'You have to answer all questions to preview the document.',\n },\n ]\n }\n />\n
\n
\n {questionsAreFilledIn ? (\n completeButton\n ) : (\n \n {completeButton}\n \n )}\n
\n
\n \n
\n
\n
\n \n
\n );\n};\n","import React, { useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport AdoptechHS from '../../../components/AdoptechHS/AdoptechHS';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { push } from 'connected-react-router';\nimport { AuditsEditForm, validation } from './AuditsEditForm';\nimport { AuditModel } from '../../../swagger';\nimport { updateAudit } from './store/auditsThunks';\nimport { auditsPageRoute } from '../../../components/Routes/Routes';\nimport './AuditsEditDrawer.scss';\n\ninterface Props {\n audit: AuditModel;\n show: boolean;\n onClose(): void;\n}\n\nexport const AuditsEditDrawer: React.FC = ({ audit, show, onClose }) => {\n const dispatch = useDispatch();\n const [changedAudit, setAudit] = useState(audit);\n const [busy, setBusy] = useState(false);\n\n const onSubmitSuccess = () => {\n onClose();\n dispatch(push(auditsPageRoute));\n };\n\n const formIsValid = Object.values(validation(changedAudit)).every(v => !v);\n\n const onSubmitError = (err: string) => {\n alert(err);\n setBusy(false);\n };\n\n const submitChanges = () => {\n setBusy(true);\n dispatch(updateAudit(changedAudit, onSubmitSuccess, onSubmitError));\n };\n\n const Footer = (\n <>\n \n Cancel\n \n \n Confirm\n \n \n );\n\n return (\n \n \n \n );\n};\n","import './AuditsReviewHistoryDropdown.scss';\nimport React, { useEffect } from 'react';\nimport { ApplicationState } from '../../../types/applicationState';\nimport classNames from 'classnames';\nimport { Dropdown } from 'react-bootstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { formatLongDate } from '../../../functions/formatLongDate';\nimport {\n cleanupAuditReviewHistory,\n setAuditQuestionTableAnswer,\n} from './store/auditsSlice';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { fetchAuditReviewHistory } from './store/auditsThunks';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n AuditExtended,\n AuditReviewHistoryItem,\n Question,\n} from '../../../swagger';\nimport { selectCurrentVendorUser } from '../../../selectors/selectCurrentVendorUser';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport { NoDataText } from '../../../components/NoDataText/NoDataText';\n\ninterface ItemProps {\n item: AuditReviewHistoryItem;\n onClick(): void;\n}\n\ninterface Props {\n auditId: AuditExtended['id'];\n questionId: Question['id'];\n onClick(): void;\n}\n\nconst baseCss = 'auditsReviewHistoryDropdown';\n\nconst HistoryItem: React.FC = ({ item, onClick }) => {\n return (\n \n
{formatLongDate(item.updatedAt)}
\n
\n
\n Auditor: \n {item.auditorName}\n
\n
\n Auditor rating: \n {item.rating}\n
\n
\n
\n
Auditor comment
\n {item.comments}\n
\n
\n );\n};\n\nexport const AuditsReviewHistoryDropdown: React.FC = ({\n auditId,\n questionId,\n onClick,\n}) => {\n const dispatch = useDispatch();\n const history = useSelector(\n (state: ApplicationState) =>\n state.audits.auditReviewHistory.find(h => h.questionId === questionId)\n ?.items || []\n );\n\n const { isFetchingAuditReviewHistory } = useSelector(\n (state: ApplicationState) => state.audits\n );\n\n useEffect(() => {\n dispatch(cleanupAuditReviewHistory(questionId));\n }, []);\n\n const currentVendorUser = useSelector(selectCurrentVendorUser);\n\n const setReview = (review: AuditReviewHistoryItem) => () => {\n dispatch(\n setAuditQuestionTableAnswer({\n userId: currentVendorUser.id,\n questionId,\n review: review,\n })\n );\n onClick();\n };\n\n return (\n {\n if (visible) dispatch(fetchAuditReviewHistory(auditId, questionId));\n }}\n >\n \n \n History\n
\n \n {isFetchingAuditReviewHistory && }\n {!isFetchingAuditReviewHistory && history.length === 0 && (\n
\n There is no audit history for this clause/control.{' '}\n
\n )}\n {history.length > 0 && (\n <>\n
Audit history
\n {history.map(item => (\n \n ))}\n \n )}\n
\n \n );\n};\n","import React, { useRef } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport {\n AuditExtended,\n Question,\n QuestionLayoutEnum,\n} from '../../../../../swagger';\nimport './AuditQuestion.scss';\nimport { Interweave } from 'interweave';\nimport { AnswerFormControl } from '../../../../../components/AnswerFormControl/AnswerFormControl';\nimport { LastUpdatedInfo } from '../../../../../components/LastUpdatedInfo/LastUpdatedInfo';\nimport { useHandleAnswerChange } from '../../../../../components/Agreements/AgreementQuestion/useHandleAnswerChange';\nimport { useLastUpdated } from '../../../../../components/Agreements/AgreementQuestion/AgreementQuestion';\nimport { faPlus } from '@fortawesome/pro-light-svg-icons/faPlus';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { AdoptechButton } from '../../../../../components/AdoptechButton/AdoptechButton';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { selectCurrentVendorUser } from '../../../../../selectors/selectCurrentVendorUser';\nimport { AutoSaveToast } from '../../../../../components/AutoSaveToast/AutoSaveToast';\nimport { addToggleClass, isMyAnswer } from '../../AuditReviewTableAnswer';\nimport { fetchAnswerControl } from '../../store/auditsThunks';\nimport classNames from 'classnames';\nimport { AuditsReviewHistoryDropdown } from '../../AuditsReviewHistoryDropdown';\n\ninterface AuditQuestionProps {\n question: Question;\n audit: AuditExtended;\n}\n\nexport const AuditQuestion: React.FC = ({\n question,\n audit,\n}) => {\n const lastUpdated = useLastUpdated(question);\n\n const { handleChange, handleDeleteTableAnswers } = useHandleAnswerChange({\n currentModel: audit,\n mode: 'audits',\n question,\n });\n\n const currentVendorUser = useSelector(selectCurrentVendorUser);\n\n const dispatch = useDispatch();\n const answerRef = useRef();\n const isAuditTable =\n question.layout === QuestionLayoutEnum.AuditReviewTableLayout;\n\n const emitChange = () => {\n // race condition hack gives the DOM element time to fall into place\n setTimeout(() => answerRef.current.querySelector('textarea')?.focus(), 200);\n };\n\n const onlyTitleExist = !question.explanatoryTextAsHtml;\n return (\n
\n
\n \n \n {question.annexRef && (\n \n \n \n )}\n \n
\n {question.explanatoryTextAsHtml && (\n
\n \n
\n )}\n
\n {isAuditTable && (\n
\n {\n dispatch(fetchAnswerControl(question.control?.identifier));\n }}\n >\n \n Evidence\n \n \n isMyAnswer(answer, currentVendorUser))}\n onClick={() => {\n const btn = answerRef.current.parentElement.querySelector(\n `.${addToggleClass}`\n ) as HTMLElement | null;\n\n btn?.click();\n }}\n >\n \n Review\n \n
\n )}\n \n
\n \n
\n {lastUpdated && }\n \n \n );\n};\n","import React from 'react';\nimport { getClauseLastUpdatedInfo } from '../../../../../functions/getClauseLastUpdatedInfo';\n\nimport {\n AuditExtended,\n Question,\n SurveyClause,\n} from '../../../../../swagger/models';\nimport { LastUpdatedInfo } from '../../../../../components/LastUpdatedInfo/LastUpdatedInfo';\nimport '../../../../../components/Agreements/AgreementClauseQuestions/AgreementClauseQuestions.scss';\nimport { AuditQuestion } from '../AuditQuestion/AuditQuestion';\nimport { selectVisibleClauseQuestions } from '../../../../../components/Agreements/AgreementClauseQuestions/AgreementClauseQuestions';\n\ninterface AuditClauseQuestionsProps {\n auditClause: SurveyClause;\n audit: AuditExtended;\n}\n\nexport const AuditClauseQuestions: React.FC = ({\n auditClause,\n audit,\n}) => {\n const lastUpdated = getClauseLastUpdatedInfo(\n auditClause.updatedAt,\n auditClause.updatedBy?.fullName\n );\n\n const questions = selectVisibleClauseQuestions(auditClause);\n\n return (\n \n {questions.length > 0 &&\n questions.map((question: Question) => (\n \n ))}\n\n {lastUpdated && (\n
\n \n
\n )}\n
\n );\n};\n","import React, { useState } from 'react';\nimport { Accordion } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n setShowControlDrawer,\n setShowTaskDrawer,\n} from '../../../../store/compliance/complianceSlice';\nimport { AuditExtended, ControlExtended } from '../../../../swagger';\nimport { SurveyClause } from '../../../../swagger/models/SurveyClause';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { AdoptechAccordionCard } from '../../../../components/AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AgreementClauseHeader } from '../../../../components/Agreements/AgreementClauseHeader/AgreementClauseHeader';\nimport { useClauseProgress } from '../../../../components/Agreements/AgreementEditor/QuestionsMode/useClauseProgress';\nimport { ComplianceEditControlDrawer } from '../../controls/EditControlDrawer/ComplianceEditControlDrawer/ComplianceEditControlDrawer';\nimport { ComplianceEditTaskDrawer } from '../../controls/EditControlCheckDrawer/ComplianceEditTaskDrawer/ComplianceEditTaskDrawer';\nimport { AuditClauseQuestions } from './AuditClauseQuestions/AuditClauseQuestions';\n\nexport const QuestionsMode: React.FC = () => {\n const {\n currentModel,\n getFirstClauseWithQuestions,\n interactiveSurveyClauses,\n clauseProgress,\n } = useClauseProgress('audits');\n\n const { editControlFormModel, showControlDrawer, showTaskDrawer } =\n useSelector((state: ApplicationState) => state.compliance);\n\n const dispatch = useDispatch();\n return (\n <>\n \n {interactiveSurveyClauses.map((clause: SurveyClause, index) => (\n \n }\n nested\n nestedVerticalOffset={-245}\n headerOffset={101}\n >\n \n \n ))}\n \n dispatch(setShowControlDrawer(false))}\n />\n\n dispatch(setShowTaskDrawer(false))}\n />\n \n );\n};\n","import { push } from 'connected-react-router';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router';\nimport { setCurrentAudit } from './store/auditsSlice';\nimport { fetchAudit } from './store/auditsThunks';\nimport { AuditModelStatusEnum } from '../../../swagger/models/AuditModel';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport { auditsPageRoute } from '../../../components/Routes/Routes';\nimport { AuditsSummaryTile } from './AuditsSummaryTile';\nimport './AuditsEditor.scss';\nimport { PreviewMode } from './PreviewMode/PreviewMode';\nimport { AuditsEditDrawer } from './AuditsEditDrawer';\nimport { QuestionsMode } from './QuestionsMode/QuestionsMode';\n\nexport enum AuditMode {\n Edit = 'edit',\n Preview = 'preview',\n}\n\nexport const AuditsEditor: React.FC = () => {\n const baseCss = 'auditsEditor';\n\n const { currentAudit, isFetchingAuditSpinner, isCompletingAudit } =\n useSelector((state: ApplicationState) => state.audits);\n\n const [mode, setMode] = useState(AuditMode.Edit);\n const [drawerVisible, setDrawerVisible] = useState(false);\n const showEditDrawer = () => setDrawerVisible(true);\n const dispatch = useDispatch();\n const params = useParams() as { id: string };\n useEffect(() => {\n dispatch(setCurrentAudit(null));\n\n if (params?.id) {\n dispatch(fetchAudit(params.id));\n }\n return () => {\n dispatch(setCurrentAudit(null));\n };\n }, [params?.id]);\n\n if (\n isFetchingAuditSpinner ||\n isCompletingAudit ||\n !currentAudit ||\n currentAudit?.id !== params.id\n )\n return ;\n\n if (currentAudit?.status === AuditModelStatusEnum.Completed) {\n dispatch(push(auditsPageRoute));\n }\n\n return (\n
\n
\n
\n \n
\n
\n {mode === AuditMode.Edit && }\n {mode === AuditMode.Preview && }\n setDrawerVisible(false)}\n />\n
\n );\n};\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { push } from 'connected-react-router';\n\nconst Welcome: React.FC = () => {\n const dispatch = useDispatch();\n\n dispatch(push('/r/welcome/profile'));\n\n return null;\n};\n\nexport default Welcome;\n","import { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport { push } from 'connected-react-router';\nimport Fuse from 'fuse.js';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n cleanupAgreementsCreateForm,\n toggleAddAgreementDrawer,\n updateAgreementsCreateFormField,\n} from '../../../store/agreements/agreementsSlice';\nimport {\n fetchAgreementTemplateCategories,\n fetchAgreementTemplates,\n} from '../../../store/agreements/agreementsThunks';\nimport {\n AgreementTemplateCategoryModel,\n AgreementTemplateModel,\n} from '../../../swagger';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { AddNewAgreementForm } from '../AddNewAgreementForm/AddNewAgreementForm';\nimport { AdoptechTextInput } from '../../AdoptechTextInput/AdoptechTextInput';\nimport { AdoptechTile } from '../../AdoptechTile/AdoptechTile';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport { NoDataText } from '../../NoDataText/NoDataText';\nimport { agreementsPageRoute } from '../../Routes/Routes';\nimport './AgreementsTemplates.scss';\nimport { AdoptechPageNavBar } from '../../AdoptechPageNavBar/AdoptechPageNavBar';\nimport { faFileInvoice } from '@fortawesome/pro-light-svg-icons/faFileInvoice';\nimport { faFileUser } from '@fortawesome/pro-light-svg-icons/faFileUser';\nimport { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\nimport { faFileChartLine } from '@fortawesome/pro-light-svg-icons/faFileChartLine';\nimport { useCanFeature } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport { selectActiveSubscription } from '../../../selectors/selectActiveSubscription';\nimport { showSubscriptionRequiredModal } from '../../../store/global/globalSlice';\nimport PartOfMyPlanBanner from '../../PartOfMyPlanBanner/PartOfMyPlanBanner';\n\ninterface AgreementsTemplatesListProps {\n categories: AgreementTemplateCategoryModel[];\n baseCss: string;\n templates: AgreementTemplateModel[];\n}\n\nconst AgreementsTemplatesList: React.FC = ({\n categories,\n baseCss,\n templates,\n}) => {\n const agreementIcons = new Map([\n ['consultancy_agreement', faFileInvoice],\n ['data_processing_contract', faFileChartLine],\n ['employee_agreement', faFileUser],\n ['nda', faFileContract],\n ]);\n\n const sortedCategories = [...categories].sort(\n (a, b) => a.rowOrder - b.rowOrder\n );\n const dispatch = useDispatch();\n\n const onFreePlan = !useSelector(selectActiveSubscription);\n const availableForFree = ['nda', 'data_processing_contract'];\n\n const isAgreementPartOfPlan = (template: AgreementTemplateModel) =>\n !onFreePlan || availableForFree.includes(template.agreementType);\n\n const onAdd = (template: AgreementTemplateModel) => {\n if (!isAgreementPartOfPlan(template)) {\n dispatch(showSubscriptionRequiredModal());\n return;\n }\n\n dispatch(\n updateAgreementsCreateFormField({\n standardTemplateId: template.id,\n })\n );\n dispatch(toggleAddAgreementDrawer());\n };\n const isShowingAddAgreementDrawer = useSelector(\n (state: ApplicationState) => state.agreements.isShowingAddAgreementDrawer\n );\n\n interface ExtendedCategory extends AgreementTemplateCategoryModel {\n templates: AgreementTemplateModel[];\n }\n\n const categoriesWithTemplates = (sortedCategories as ExtendedCategory[])\n .map(category => {\n const categoryTemplates = templates.filter(\n template =>\n template.available &&\n template.agreementTemplateCategoryId === category.id\n );\n return categoryTemplates.length > 0\n ? { ...category, templates: categoryTemplates }\n : null;\n })\n .filter(category => category);\n\n return (\n <>\n {isShowingAddAgreementDrawer && (\n {\n dispatch(toggleAddAgreementDrawer());\n dispatch(cleanupAgreementsCreateForm());\n }}\n show={isShowingAddAgreementDrawer}\n />\n )}\n {categoriesWithTemplates.length === 0 && (\n
\n \n
\n )}\n \n {categoriesWithTemplates.map(category => {\n return (\n
\n
\n {category.summary}\n
\n
\n {category.templates.map(template => {\n return (\n onAdd(template)}\n available={isAgreementPartOfPlan(template)}\n />\n );\n })}\n
\n
\n );\n })}\n \n );\n};\n\nconst AgreementsTemplates: React.FC = () => {\n const dispatch = useDispatch();\n\n const {\n agreementTemplateCategories: categories,\n agreementTemplates: templates,\n isRequestingAgreementTemplateCategories,\n isRequestingAgreementTemplates,\n } = useSelector((state: ApplicationState) => state.agreements);\n\n const isRequesting =\n isRequestingAgreementTemplateCategories || isRequestingAgreementTemplates;\n useEffect(() => {\n dispatch(fetchAgreementTemplateCategories());\n dispatch(fetchAgreementTemplates());\n }, []);\n const [search, setSearch] = useState('');\n const baseCss = 'agreementsTemplates';\n\n const fuse = new Fuse(templates, {\n ignoreLocation: true,\n includeScore: true,\n keys: ['name', 'summary'],\n threshold: 0,\n });\n\n const templatesList = search\n ? fuse.search(search).map(x => x.item)\n : templates;\n const canManageAgreements = useCanFeature(AccessObject.agreements_manage);\n if (isRequesting) {\n return ;\n }\n\n const goBack = () => dispatch(push(agreementsPageRoute));\n\n if (!canManageAgreements)\n return (\n
\n \n
\n );\n\n return (\n
\n \n Start new\n
\n setSearch(e.currentTarget.value)}\n type=\"text\"\n placeholder=\"Search for agreements\"\n icon={faSearch}\n additionalClass=\"adoptechTextInput-search\"\n />\n
\n \n }\n />\n \n
\n );\n};\n\nexport default AgreementsTemplates;\n","import { createSelector } from '@reduxjs/toolkit';\nimport Fuse from 'fuse.js';\nimport { sort } from '../../functions/sort';\nimport { sortByOwner } from '../../functions/sortByOwner';\nimport { RiskModel } from '../../swagger/models/RiskModel';\nimport { VendorUser } from '../../swagger/models/VendorUser';\nimport { ApplicationState } from '../../types/applicationState';\nimport { ColumnSort } from '../../types/columnSort';\nimport { Grid } from '../../types/grid';\nimport { selectSortSettings } from '../selectSortSettings';\n\nconst sortRisks = (a: RiskModel, b: RiskModel, columnSort: ColumnSort) => {\n const typedColumn = columnSort.name as keyof RiskModel;\n\n if (typedColumn === 'owner') {\n return sortByOwner(\n a[typedColumn] as VendorUser,\n b[typedColumn] as VendorUser,\n columnSort.direction\n );\n }\n\n const riskColumn =\n typedColumn === 'inherentRisk' || typedColumn === 'residualRisk';\n if (riskColumn) {\n const type = typedColumn === 'inherentRisk' ? 'inherent' : 'residual';\n\n const severity = (model: RiskModel) =>\n (model[`${type}RiskConsequence`] || 1) *\n (model[`${type}RiskLikelihood`] || 1);\n return sort(severity(a), severity(b), columnSort.direction);\n }\n if (typedColumn === 'actionStats') {\n return sort(a.actionStats.total, b.actionStats.total, columnSort.direction);\n }\n\n return sort(a[typedColumn] || '', b[typedColumn] || '', columnSort.direction);\n};\n\nexport const filteredByTextRisks = (\n items: RiskModel[],\n searchText: string,\n searchColumns: string[]\n) => {\n if (!items) return [];\n if (!searchText) return items;\n\n const fuseTask = new Fuse(items, {\n ignoreLocation: true,\n includeScore: true,\n keys: searchColumns,\n threshold: 0,\n });\n return fuseTask.search(searchText).map(x => x.item);\n};\n\nexport const selectRisks = (searchText: string, searchColumns: string[]) =>\n createSelector(\n (state: ApplicationState) => state.riskRegistry.risks,\n selectSortSettings(Grid.Risks),\n (risks: RiskModel[], sortSetting) => {\n return [...filteredByTextRisks(risks, searchText, searchColumns)].sort(\n (a, b) => sortRisks(a, b, sortSetting.columnSort)\n );\n }\n );\n","import './RiskRegistryPage.scss';\nimport exclamationIcon from 'images/icons/exclamationIcon.svg';\nimport checkmarkIcon from 'images/icons/checkmarkIcon.svg';\n\nimport { push } from 'connected-react-router';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\n\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport { Lozenge } from '../../Lozenge/Lozenge';\nimport { NoDataText } from '../../NoDataText/NoDataText';\nimport { selectCurrentVendorUser } from '../../../selectors/selectCurrentVendorUser';\nimport { riskRegistryRoute, riskRegistryStartRoute } from '../../Routes/Routes';\nimport { fetchRisks } from '../../../store/riskRegistry/riskRegistryThunks';\nimport { faCircleInfo } from '@fortawesome/pro-light-svg-icons/faCircleInfo';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport AdoptechGridTable from '../../AdoptechGridTable/AdoptechGridTable';\nimport { SortableTableHeader } from '../../SortableTableHeader/SortableTableHeader';\nimport { Grid } from '../../../types/grid';\nimport { UserAvatar } from '../../UserAvatar/UserAvatar';\nimport { selectRisks } from '../../../selectors/riskRegistry/selectRisks';\nimport {\n RiskInfo,\n VendorRegisterRiskProfile,\n} from '../../VendorRegisterRiskProfile/VendorRegisterRiskProfile';\nimport { getPestelRiskText } from '../../pestel/PestelSection/PestelRow';\nimport { capitalize } from '../../../functions/capitalize';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { useLocalStorage } from 'react-use';\nimport { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport { AdoptechTextInput } from '../../AdoptechTextInput/AdoptechTextInput';\nimport { RiskModel } from '../../../swagger';\nimport { useCanFeature } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport classNames from 'classnames';\nimport {\n reportsRouteWithAddType,\n reportsRouteWithType,\n} from '../../Reports/ReportsPage/ReportsPage';\nimport { Dropdown } from 'react-bootstrap';\nimport { AdoptechDropdownToggle } from '../../AdoptechDropdownToggle/AdoptechDropdownToggle';\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus';\nimport { articles } from '../../../functions/chatWidgetHelper';\n\nconst riskStatus = (status: RiskModel['status']): string => {\n return status\n .split('_')\n .map((word: string) => capitalize(word))\n .join(' ');\n};\n\nconst RisksList: React.FC<{\n items: RiskModel[];\n onClick(risk: RiskModel): void;\n}> = ({ items, onClick }) => {\n const canUpdateRisks = useCanFeature(AccessObject.risk_register_update);\n if (items.length < 1)\n return ;\n const baseCss = 'risksPage';\n const riskInfo = (\n risk: RiskModel,\n type: 'inherent' | 'residual'\n ): RiskInfo => {\n const riskSeverity =\n (risk[`${type}RiskConsequence`] || 1) *\n (risk[`${type}RiskLikelihood`] || 1);\n return {\n riskSeverity,\n riskLevel: getPestelRiskText(riskSeverity),\n };\n };\n return (\n
\n \n \n columnName=\"name\"\n grid={Grid.Risks}\n label=\"Risk name\"\n notInTable\n />\n \n columnName=\"owner\"\n grid={Grid.Risks}\n label=\"Owner\"\n notInTable\n />\n \n columnName=\"inherentRisk\"\n grid={Grid.Risks}\n label=\"Inherent risk\"\n notInTable\n />\n \n columnName=\"treatmentStrategy\"\n grid={Grid.Risks}\n label=\"Treatment\"\n notInTable\n />\n \n columnName=\"actionStats\"\n grid={Grid.Risks}\n label=\"Checks\"\n notInTable\n />\n \n columnName=\"residualRisk\"\n grid={Grid.Risks}\n label=\"Residual Risk\"\n notInTable\n />\n \n columnName=\"status\"\n grid={Grid.Risks}\n label=\"Status\"\n notInTable\n />\n
\n }\n >\n {items.map(risk => {\n const checksCompleted = risk.checkStats.completed || 0;\n const checksCount = risk.checkStats.total || 0;\n const checksIcon =\n checksCount > 0 && checksCompleted === checksCount\n ? checkmarkIcon\n : exclamationIcon;\n return (\n (canUpdateRisks ? onClick(risk) : null)}\n >\n
{risk.name}
\n {risk.owner ? (\n \n ) : (\n
-
\n )}\n
\n \n
\n
{capitalize(risk.treatmentStrategy) || '-'}
\n
\n {checksCount > 0 ? (\n <>\n \n {checksCompleted}/{checksCount}\n \n ) : (\n '-'\n )}\n
\n
\n \n
\n
{riskStatus(risk.status)}
\n \n );\n })}\n \n \n );\n};\n\nconst PageHint = () => {\n const baseCss = 'pageHint';\n const vendorUser = useSelector(selectCurrentVendorUser);\n const localStorageKey = `risk-registry-${vendorUser.id}`;\n const [hidden, setHidden] = useLocalStorage(localStorageKey, false);\n if (hidden) return null;\n\n return (\n
\n \n {/* \n \n */}\n
\n
\n

\n The risk management process aims to continuously identify the\n information security risks your company faces, assess those risks\n and take actions to treat them. The risk management process is\n aligned with the internationally recognised ISO 31000 standard.\n

\n\n

\n For more information on completing the risk register have a read of{' '}\n \n this article\n \n

\n {/* uncomment for video */}\n {/*

\n Watch our short introduction video to see how to use the risk\n register and learn about its comprehensive features.\n

*/}\n
\n
\n {/*
\n This video can also be found by searching for{' '}\n Risk Management Process in the portal help/Intercom.\n
*/}\n setHidden(true)}\n variant={AdoptechButtonVariant.White}\n >\n Got it\n \n
\n
\n
\n );\n};\n\nexport const RiskRegistryPage: React.FC = () => {\n const baseCss = 'risksPage';\n\n const vendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n const vendorUser = useSelector(selectCurrentVendorUser);\n const [searchText, setSearchText] = useState('');\n\n const filteredRisks: RiskModel[] = useSelector(\n selectRisks(searchText, [\n 'name',\n 'treatment',\n 'status',\n 'owner.email',\n 'owner.fullName',\n ])\n );\n const canCreateRisks = useCanFeature(AccessObject.risk_register_create);\n\n const { isFetchingRisks, risks } = useSelector(\n (state: ApplicationState) => state.riskRegistry\n );\n const dispatch = useDispatch();\n useEffect(() => {\n dispatch(fetchRisks(vendorId));\n }, [vendorId, vendorUser.roles]);\n\n const canManageReports = useCanFeature(AccessObject.reports_manage);\n const canViewReports = useCanFeature(AccessObject.reports);\n if (isFetchingRisks) {\n return ;\n }\n\n const handleRowClick = (risk: RiskModel) => {\n dispatch(push(riskRegistryRoute + '/' + risk.id));\n };\n\n return (\n
\n
\n
\n Risks\n \n
\n
\n setSearchText(e.target.value)}\n type=\"text\"\n placeholder=\"Search for risks\"\n icon={faSearch}\n additionalClass=\"adoptechTextInput-search\"\n />\n
\n
\n {canViewReports && (\n \n \n \n Reports\n \n \n\n \n {canManageReports && (\n \n dispatch(push(reportsRouteWithAddType('risk')))\n }\n >\n Add report\n \n )}\n dispatch(push(reportsRouteWithType('risk')))}\n >\n View reports\n \n \n \n )}\n {canCreateRisks && (\n dispatch(push(riskRegistryStartRoute))}\n variant={AdoptechButtonVariant.PrimaryOrange}\n icon={faPlus}\n iconSize=\"large\"\n rounded\n >\n Add risk\n \n )}\n
\n
\n \n \n
\n );\n};\n","import { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { push } from 'connected-react-router';\nimport React, { useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { createCustomRisk } from '../../../store/riskRegistry/riskRegistryThunks';\nimport { RiskModel } from '../../../swagger/models/RiskModel';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport AdoptechHS from '../../AdoptechHS/AdoptechHS';\nimport { AdoptechReactSelect2 } from '../../AdoptechReacSelect2/AdoptechReactSelect2';\nimport { AdoptechTextArea2 } from '../../AdoptechTextArea2/AdoptechTextArea2';\nimport { AdoptechTextInput2 } from '../../AdoptechTextInput2/AdoptechTextInput2';\nimport { riskRegistryCategoryRoute } from '../../Routes/Routes';\nimport { sortedRiskCategories } from '../RiskRegistryLibrary/RiskRegistryLibrary';\nimport './RiskRegistryStartNewDrawer.scss';\n\ninterface Props {\n onClose(): void;\n}\n\nexport const validation = (\n data: RiskModelForm\n): Record => ({\n name: data.name ? null : ['Risk name must be set'],\n riskCategoryId: data.riskCategoryId ? null : ['Risk category must be set'],\n description: data.description ? null : ['Risk description must be set'],\n});\n\nexport type RiskModelForm = Pick<\n RiskModel,\n 'name' | 'riskCategoryId' | 'description'\n>;\n\nexport const RiskRegistryStartNewDrawer: React.FC = ({ onClose }) => {\n const [formData, setFormData] = useState({} as RiskModelForm);\n const formIsValid = Object.values(validation(formData)).every(v => !v);\n const baseCss = 'risksStartNewDrawer';\n type ValueOf = T[keyof T];\n const updateField = (\n field: keyof RiskModelForm,\n value: ValueOf\n ) => {\n setFormData({\n ...formData,\n [field]: value,\n });\n };\n\n const hasError = (field: keyof RiskModelForm) => !formData[field];\n const { categories, isCreatingCustomRisk } = useSelector(\n (state: ApplicationState) => state.riskRegistry\n );\n\n const categoryOptions = useMemo(\n () =>\n sortedRiskCategories(categories).map(category => {\n return { label: category.name, value: category.id };\n }),\n [categories]\n );\n\n const dispatch = useDispatch();\n\n const onSuccess = () => {\n dispatch(\n push(riskRegistryCategoryRoute.replace(':id', formData.riskCategoryId))\n );\n };\n const Footer = (\n <>\n \n Cancel\n \n {\n dispatch(createCustomRisk(formData, onSuccess));\n }}\n variant={AdoptechButtonVariant.Primary}\n busy={isCreatingCustomRisk}\n >\n Add\n \n \n );\n\n return (\n \n
\n
Name your risk.
\n
\n updateField('name', e.currentTarget.value)}\n icon={faPen}\n />\n
\n
\n\n
\n
\n What category is this risk in?\n
\n
\n updateField('riskCategoryId', e.value)}\n value={categoryOptions.find(\n option => option.value == formData.riskCategoryId\n )}\n placeholder=\"Please select\"\n />\n
\n
\n\n
\n
\n Provide a more detailed description of the risk.\n
\n
\n updateField('description', e.currentTarget.value)}\n icon={faPen}\n />\n
\n
\n \n );\n};\n","import { push } from 'connected-react-router';\nimport './RiskRegistryLibrary.scss';\nimport React, { useEffect, useState } from 'react';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { AdoptechTile } from '../../AdoptechTile/AdoptechTile';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport {\n riskRegistryCategoryRoute,\n riskRegistryRoute,\n} from '../../Routes/Routes';\nimport { fetchRisksCategories } from '../../../store/riskRegistry/riskRegistryThunks';\nimport { AdoptechPageNavBar } from '../../AdoptechPageNavBar/AdoptechPageNavBar';\nimport { RiskCategoryModel } from '../../../swagger';\nimport { NoDataText } from '../../NoDataText/NoDataText';\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { faBallotCheck } from '@fortawesome/pro-light-svg-icons/faBallotCheck';\nimport { faCity } from '@fortawesome/pro-light-svg-icons/faCity';\nimport { faHouseDamage } from '@fortawesome/pro-light-svg-icons/faHouseDamage';\nimport { faServer } from '@fortawesome/pro-light-svg-icons/faServer';\nimport { faUsers } from '@fortawesome/pro-light-svg-icons/faUsers';\nimport { selectCurrentVendor } from '../../../selectors/selectCurrentVendor';\nimport { AccessObject } from '../../../types/accessObject';\nimport { useCanFeature } from '../../../functions/access';\nimport { RiskRegistryStartNewDrawer } from '../RiskRegistryStartNewDrawer/RiskRegistryStartNewDrawer';\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus';\n\nexport const sortedRiskCategories = (categories: RiskCategoryModel[]) => {\n return [...categories].sort((a, b) => a.rowOrder - b.rowOrder);\n};\nexport const RiskRegistryLibrary: React.FC = () => {\n const currentVendor = useSelector(selectCurrentVendor);\n const baseCss = 'riskRegistryLibrary';\n const { categories, isFetchingCategories } = useSelector(\n (state: ApplicationState) => state.riskRegistry\n );\n\n const dispatch = useDispatch();\n const goBack = () => {\n dispatch(push(riskRegistryRoute));\n };\n useEffect(() => {\n dispatch(fetchRisksCategories());\n }, [currentVendor]);\n const [showAddCustomRiskDrawer, setShowAddCustomRiskDrawer] = useState(false);\n const startNewWith = (categoryId: RiskCategoryModel['id']) => {\n dispatch(push(riskRegistryCategoryRoute.replace(':id', categoryId)));\n };\n const canManageRegister = useCanFeature(AccessObject.risk_register_update);\n if (isFetchingCategories) return ;\n const noCategories = !isFetchingCategories && categories.length === 0;\n if (!canManageRegister)\n return (\n
\n \n
\n );\n\n return (\n
\n \n Risk library\n {categories.length > 0 && (\n
\n setShowAddCustomRiskDrawer(true)}\n variant={AdoptechButtonVariant.PrimaryOrange}\n icon={faPlus}\n iconSize=\"large\"\n rounded\n >\n Add custom risk\n \n
\n )}\n \n }\n />\n {noCategories && (\n

\n \n

\n )}\n {categories.length > 0 && (\n
\n Select the risks that apply to your business and add them to your risk\n register.\n
\n )}\n
\n {sortedRiskCategories(categories).map(category => {\n const { total, actual } = category.riskStats || {};\n let icon: IconDefinition;\n switch (category.identifier) {\n case 'organisational':\n icon = faCity;\n break;\n case 'people':\n icon = faUsers;\n break;\n case 'technological':\n icon = faServer;\n break;\n case 'physical':\n icon = faHouseDamage;\n break;\n default:\n icon = faBallotCheck;\n }\n return (\n \n {category.name}\n {category.riskStats && total > 0 && (\n \n {`${actual}/${total}`}\n \n )}\n \n }\n description={category.description}\n onClick={() => startNewWith(category.id)}\n buttonText=\"Select\"\n />\n );\n })}\n
\n\n {showAddCustomRiskDrawer && (\n setShowAddCustomRiskDrawer(false)}\n />\n )}\n
\n );\n};\n","import './RiskRegisterTreatment.scss';\nimport React, { Dispatch, SetStateAction, useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n ControlExtended,\n ControlModel,\n RiskExtended,\n RiskModelStatusEnum,\n RiskModelTreatmentStrategyEnum,\n TaskExtended,\n VendorActionExtended,\n VendorActionModel,\n VendorEventEventType,\n} from '../../../swagger';\nimport {\n commitCurrentRisk,\n createRiskActionReference,\n createRiskControlReference,\n deleteRiskActionReference,\n deleteRiskControlReference,\n fetchRisk,\n fetchVendorActions,\n} from '../../../store/riskRegistry/riskRegistryThunks';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { SelectionOption } from '../../../types/selectionOption';\nimport { AdoptechReactSelect } from '../../AdoptechReactSelect/AdoptechReactSelect';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport { AdoptechTextArea } from '../../AdoptechTextArea/AdoptechTextArea';\nimport { UpdateModelFunction } from '../../../types/UpdateModelFunction';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCircle } from '@fortawesome/pro-light-svg-icons/faCircle';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { EditActionModal } from '../../EditActionModal/EditActionModal';\nimport { CommandConfirmation } from '../../../types/CommandConfirmation';\nimport { Interweave } from 'interweave';\nimport { mapVendorActonFormToPostPayload } from '../../../features/calendar/CalendarPage/CalendarPageModals';\nimport { createNewAction } from '../../../features/calendar/store/calendarThunks';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport { controlPageRoute, controlsPageRoute } from '../../Routes/Routes';\nimport { push } from 'connected-react-router';\nimport { useHistory } from 'react-router';\nimport { FrameworksPills } from '../../Frameworks/Pills';\nimport AdoptechOverflowLine from '../../AdoptechOverflowLine/AdoptechOverflowLine';\nimport { FrameworkRelation } from '../../../swagger/models/FrameworkRelation';\n\nconst baseCss = 'riskRegisterTreatment';\n\ntype Command = Dispatch>;\n\nconst treatmentStrategyOptions = [\n {\n value: RiskModelTreatmentStrategyEnum.Modify,\n label:\n 'Modify
Apply security controls to reduce the likelihood or impact.',\n title: 'Add actions',\n description: `\n Add actions required to mitigate this risk that are not covered in controls.\n `,\n },\n {\n value: RiskModelTreatmentStrategyEnum.Share,\n label:\n 'Share
Distribute the risk with a partner, such as an insurance firm.',\n title: 'Share risk',\n description: 'Provide an explanation of how the risk is being shared.',\n },\n {\n value: RiskModelTreatmentStrategyEnum.Avoid,\n label:\n 'Avoid
Cease the activity or changing the circumstances that are causing the risk',\n title: 'Avoid risk',\n description: 'Provide an explanation of how the risk is being avoided.',\n },\n {\n value: RiskModelTreatmentStrategyEnum.Retain,\n label:\n 'Retain
The risk is within your agreed tolerance levels, or the cost to treat the risk would outweigh the benefit.',\n title: 'Retain risk',\n description: 'Provide an explanation of how the risk is being retained.',\n },\n];\n\nconst TreatmentStrategyTask: React.FC<{\n task: TaskExtended;\n}> = ({ task }) => {\n return (\n
\n
\n Check \n {task.name}\n
\n
\n \n
\n
\n );\n};\n\nconst TreatmentStrategyControl: React.FC<{\n risk: RiskExtended;\n control: ControlExtended;\n onChange(): void;\n command: Command;\n}> = ({ risk, control, onChange, command }) => {\n const dispatch = useDispatch();\n const compliant = control.tasks.every(t => t.status === 'compliant');\n\n const handleRemoveControl = (e: { stopPropagation: () => void }) => {\n e.stopPropagation();\n\n command({\n ...(risk.status == RiskModelStatusEnum.Approved\n ? {\n title: 'Continue to editing',\n description: `\n Deleting this control will change this Risk.\n Are you sure you wish to continue to editing? The risk will need to\n be re-approved. To return to viewing click Cancel or continue to\n editing by selecting Edit.\n `,\n action: 'Edit',\n buttonVariant: AdoptechButtonVariant.Primary,\n }\n : {\n subject: { name: control.name, type: 'Control' },\n action: 'Delete',\n buttonVariant: AdoptechButtonVariant.Warning,\n }),\n onConfirm: () => {\n dispatch(deleteRiskControlReference(control.id, risk.id, onChange));\n },\n });\n };\n const handleRowClick = () => {\n dispatch(push(controlPageRoute.replace(':id', control.id)));\n };\n\n return (\n <>\n
\n
\n Control \n {control.name}\n
\n relation.framework\n )}\n />\n \n \n
\n {control.tasks.map(task => (\n \n ))}\n \n );\n};\n\nconst TreatmentControls: React.FC<{\n risk: RiskExtended;\n command: Command;\n update: UpdateModelFunction;\n}> = ({ risk, update, command }) => {\n const dispatch = useDispatch();\n\n const controls = useSelector(\n (state: ApplicationState) => state.riskRegistry.controls\n );\n\n const [chosenControlId, setChosenControlId] =\n useState(null);\n\n if (risk.treatmentStrategy !== RiskModelTreatmentStrategyEnum.Modify)\n return <>;\n\n const reFetchRisk = () => dispatch(fetchRisk(risk.id));\n\n const addedControlIds = risk.controls.map(c => c.id);\n\n const controlsOptions: SelectionOption[] = controls\n .filter(c => !addedControlIds.includes(c.id))\n .map(c => ({\n label: c.name,\n value: c.id,\n frameworksRelations: c.frameworksRelations,\n }));\n\n const addControl = () => {\n update(m => {\n dispatch(\n createRiskControlReference(chosenControlId, risk.id, reFetchRisk)\n );\n setChosenControlId(null);\n return m;\n });\n };\n\n const description = `\n Map the controls that will be used to modify this risk. Select a control\n to view the related plan, checks and evidence.\n `;\n\n return (\n <>\n
\n Add controls\n

{description}

\n
\n {controls.length && (\n setChosenControlId(option.value)}\n value={controlsOptions.find(o => o.value == chosenControlId)}\n placeholder=\"Start typing to add control\"\n formatOptionLabel={(\n option: SelectionOption & {\n frameworksRelations: ControlExtended['frameworksRelations'];\n }\n ) => {\n return (\n
\n
\n {option.label}\n
\n relation.framework\n )}\n />\n
\n );\n }}\n />\n )}\n \n + Add control\n \n
\n {risk.controls.length > 0 && (\n
\n
Description
\n
\n
Status
\n
\n
\n )}\n {risk.controls.map(control => (\n \n ))}\n
\n
\n \n );\n};\n\nconst TreatmentAction: React.FC<{\n action: VendorActionModel;\n onDelete(): void;\n}> = ({ action, onDelete }) => {\n return (\n
\n
\n Action \n {action.name}\n
\n \n \n
\n );\n};\n\nconst TreatmentActions: React.FC<{\n risk: RiskExtended;\n update: UpdateModelFunction;\n command: Command;\n}> = ({ risk, update, command }) => {\n const dispatch = useAppDispatch();\n\n const treatmentStrategy = treatmentStrategyOptions.find(\n ts => ts.value == risk.treatmentStrategy\n );\n\n const vendorActions = useSelector(\n (state: ApplicationState) => state.riskRegistry.vendorActions\n );\n\n const actionIds = risk.vendorActions.map(va => va.id);\n\n const actionOptions = vendorActions\n .filter(t => !actionIds.includes(t.id))\n .map(t => ({ value: t.id, label: t.name }));\n\n const [chosenActionId, setChosenActionId] =\n useState();\n\n const reFetchRisk = () => {\n dispatch(fetchRisk(risk.id));\n };\n\n const [showCreateAction, setShowCreateAction] = useState(false);\n const afterCreate = (action: VendorActionExtended) => {\n dispatch(createRiskActionReference(action.id, risk.id, reFetchRisk));\n dispatch(fetchVendorActions());\n };\n const createAction = async (params: VendorActionExtended) => {\n const payload = mapVendorActonFormToPostPayload(params);\n\n setChosenActionId(null);\n const newAction = await dispatch(createNewAction({ payload })).unwrap();\n\n afterCreate(newAction);\n\n setShowCreateAction(false);\n };\n\n const addAction = () => {\n update(m => {\n dispatch(createRiskActionReference(chosenActionId, risk.id, reFetchRisk));\n setChosenActionId(null);\n return m;\n });\n };\n\n const removeAction = (action: VendorActionModel) => () => {\n command({\n ...(risk.status == RiskModelStatusEnum.Approved\n ? {\n title: 'Continue to editing',\n description: `\n Deleting this action will change this Risk.\n Are you sure you wish to continue to editing? The risk will need to\n be re-approved. To return to viewing click Cancel or continue to\n editing by selecting Edit.\n `,\n action: 'Edit',\n buttonVariant: AdoptechButtonVariant.Primary,\n }\n : {\n subject: { name: action.name, type: 'Action' },\n action: 'Delete',\n buttonVariant: AdoptechButtonVariant.Warning,\n }),\n onConfirm: () => {\n dispatch(deleteRiskActionReference(action.id, risk.id, reFetchRisk));\n },\n });\n };\n\n if (!treatmentStrategy) return <>;\n\n const showExplanation =\n risk.treatmentStrategy !== RiskModelTreatmentStrategyEnum.Modify;\n const Explanation = (\n <>\n
\n {\n const value = `${e.currentTarget.value}`;\n update(m => ({ ...m, treatmentExplanation: value }), true);\n }}\n onBlur={() => dispatch(commitCurrentRisk())}\n />\n
\n

\n Are there additional actions required to fulfil this risk treatment\n plan? Add the required actions.\n

\n \n );\n\n return (\n
\n {treatmentStrategy.title}\n

{treatmentStrategy.description}

\n {showExplanation && Explanation}\n
\n setShowCreateAction(true)}\n id=\"riskAddAction\"\n addText=\"+ Create new Action\"\n key={`riskAddAction-${chosenActionId}`}\n options={actionOptions}\n onChange={t => setChosenActionId(t.value)}\n value={actionOptions.find(a => a.value == chosenActionId)}\n placeholder=\"Start typing to add action\"\n />\n \n + Add action\n \n
\n {risk.vendorActions.length > 0 && (\n
\n
Description
\n
Status
\n
\n )}\n {risk.vendorActions.map(action => (\n \n ))}\n setShowCreateAction(false)}\n disabledFields={['actionType']}\n />\n
\n );\n};\n\nexport interface Props {\n risk: RiskExtended;\n update: UpdateModelFunction;\n command: Command;\n}\n\nexport const RiskRegisterTreatment: React.FC = ({\n risk,\n update,\n command,\n}) => {\n const [dirty, setDirty] = useState(false);\n let selectedOption: RiskModelTreatmentStrategyEnum;\n\n useEffect(() => {\n {\n if (\n risk.treatmentExplanation ||\n risk.vendorActions.length > 0 ||\n (risk.treatmentStrategy === RiskModelTreatmentStrategyEnum.Modify &&\n risk.controls.length > 0)\n ) {\n setDirty(true);\n }\n }\n }, [risk]);\n\n const switchStrategyCommand: CommandConfirmation = {\n title: 'Change risk treatment strategy',\n description:\n 'Are you sure you wish to change the risk management strategy? By continuing the current answers for this section ' +\n 'will be lost. To return select CANCEL or to continue select CONFIRM.',\n buttonVariant: AdoptechButtonVariant.Primary,\n onConfirm: () => {\n update(m => ({\n ...m,\n treatmentStrategy: selectedOption,\n }));\n setDirty(false);\n },\n };\n return (\n <>\n
\n Select the risk treatment strategy\n
\n
\n {treatmentStrategyOptions.map(option => {\n return (\n
\n {\n if (dirty) {\n selectedOption =\n option.value as RiskModelTreatmentStrategyEnum;\n command(switchStrategyCommand);\n } else {\n update(m => ({\n ...m,\n treatmentStrategy:\n option.value as RiskModelTreatmentStrategyEnum,\n }));\n }\n }}\n type=\"radio\"\n value={option.value}\n />\n \n
\n );\n })}\n
\n
\n \n \n \n );\n};\n","import React, { useState, useRef } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useSelector } from 'react-redux';\nimport AdoptechModal from '../../AdoptechModal/AdoptechModal';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport { patchRisk } from '../../../store/riskRegistry/riskRegistryThunks';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport { AdoptechTextArea2 } from '../../AdoptechTextArea2/AdoptechTextArea2';\nimport { useAutoGrowTextArea } from '../../../hooks/useAutoGrowTextArea';\n\ninterface EditRiskModalProps {\n onHide: () => void;\n}\n\nexport const EditRiskModal: React.FC = props => {\n const { currentRisk: model, patchRiskStatus } = useSelector(\n (state: ApplicationState) => state.riskRegistry\n );\n\n const dispatch = useAppDispatch();\n\n const handleSubmit = async () => {\n try {\n await dispatch(\n patchRisk({\n id: model.id,\n body: {\n risk: {\n name: form.name,\n },\n },\n })\n ).unwrap();\n props.onHide();\n } catch (error) {\n setError(error.message);\n }\n };\n\n const [form, setForm] = useState({ name: model.name });\n const [formCopy, setFormCopy] = useState({ name: model.name });\n const [error, setError] = useState(null);\n const formChanged = form.name !== formCopy.name;\n const submitDisabled = form.name === '' || !formChanged;\n const isLoading = patchRiskStatus === 'loading';\n\n const nameRef = useRef(null);\n useAutoGrowTextArea(nameRef.current, form.name);\n\n return (\n \n Edit Risk\n \n setForm({ ...form, name: e.target.value })}\n rows={5}\n ref={nameRef}\n />\n \n \n \n Cancel\n \n \n Update\n \n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { faAngleLeft } from '@fortawesome/pro-light-svg-icons/faAngleLeft';\nimport { faCircle } from '@fortawesome/pro-light-svg-icons/faCircle';\nimport { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport { Accordion, Dropdown, Toast } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router';\nimport { useOwnerOptions } from '../../../hooks/useOwnerOptions';\nimport {\n cleanCurrentRisk,\n hideAutoSaveToast,\n updateCurrentRisk,\n} from '../../../store/riskRegistry/riskRegistrySlice';\nimport {\n approveRisk,\n commitCurrentRisk,\n deleteRisk,\n fetchRisk,\n fetchRiskControls,\n fetchVendorActions,\n} from '../../../store/riskRegistry/riskRegistryThunks';\nimport {\n RiskExtended,\n RiskModel,\n RiskModelInformationSecurityPropertiesEnum,\n RiskModelStatusEnum,\n} from '../../../swagger';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { SelectionOption } from '../../../types/selectionOption';\nimport { AdoptechAccordionCard } from '../../AdoptechAccordionCard/AdoptechAccordionCard';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport { AdoptechReactSelect } from '../../AdoptechReactSelect/AdoptechReactSelect';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport { MeatballMenu } from '../../MeatballMenu/MeatballMenu';\nimport { Panel } from '../../Panel/Panel';\nimport { ProgressBar } from '../../ProgressBar/ProgressBar';\nimport { riskRegistryRoute } from '../../Routes/Routes';\nimport './RiskRegisterEditor.scss';\nimport { AdoptechTextArea } from '../../AdoptechTextArea/AdoptechTextArea';\nimport {\n RiskInfo,\n VendorRegisterRiskProfile,\n} from '../../VendorRegisterRiskProfile/VendorRegisterRiskProfile';\nimport { getPestelRiskText } from '../../pestel/PestelSection/PestelRow';\nimport { RiskRegisterTreatment } from '../RiskRegistryTreatment/RiskRegisterTreatment';\nimport { CommandConfirmation } from '../../../types/CommandConfirmation';\nimport { ConfirmationModal } from '../../ConfirmationModal/ConfirmationModal';\nimport { UpdateModelFunction } from '../../../types/UpdateModelFunction';\nimport { AdoptechTooltip } from '../../AdoptechTooltip/AdoptechTooltip';\nimport { NoDataText } from '../../NoDataText/NoDataText';\nimport { useCanFeature, useHasFeature } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport { AdoptechCheckbox } from '../../AdoptechCheckbox/AdoptechCheckbox';\nimport { SecurityEditorOwnerWarning } from '../../../features/compliance/controls/EditControlDrawer/ComplianceEditControlForm/ComplianceEditControlForm';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { EditRiskModal } from '../EditRiskModal/EditRiskModal';\n\nconst baseCss = 'riskRegisterEditor';\n\ninterface TooltipProps {\n text: string;\n identifier: string;\n}\nconst InformationSecurityTooltip: React.FC = props => {\n return (\n \n
{props.children}
\n \n );\n};\nexport const RiskRegisterEditor: React.FC = () => {\n const { riskRegisterId } = useParams() as { riskRegisterId: string };\n\n const dispatch = useDispatch();\n\n const model = useSelector(\n (state: ApplicationState) => state.riskRegistry.currentRisk\n );\n const canCreateRisks = useCanFeature(AccessObject.risk_register_create);\n const canUpdateRisks = useCanFeature(AccessObject.risk_register_update);\n\n useEffect(() => {\n dispatch(fetchRisk(riskRegisterId));\n return () => {\n dispatch(cleanCurrentRisk());\n };\n }, [riskRegisterId]);\n\n useEffect(() => {\n dispatch(fetchRiskControls());\n dispatch(fetchVendorActions());\n }, []);\n\n const riskOwnerCompletion = [!!model?.owner];\n\n const inherentRiskCompletion = [\n !!model?.inherentRiskLikelihood,\n !!model?.inherentRiskConsequence,\n ];\n\n const treatmentCompletion = [!!model?.treatmentStrategy];\n\n const residualRiskCompletion = [\n !!model?.residualRiskLikelihood,\n !!model?.residualRiskConsequence,\n ];\n\n const compromisedCompletion = [\n !!(model?.informationSecurityProperties || [])[0],\n ];\n\n const overallCompletion: boolean[] = [\n ...riskOwnerCompletion,\n ...inherentRiskCompletion,\n ...treatmentCompletion,\n ...residualRiskCompletion,\n ];\n\n const [currentCommand, command] = useState(null);\n\n const showAutoSaveToast = useSelector(\n (state: ApplicationState) => state.riskRegistry.showAutoSaveToast\n );\n\n const cardTitle = (complete: boolean, title: string) => (\n <>\n \n
{title}
\n \n );\n\n const updateModel: UpdateModelFunction = (\n update,\n dry = false\n ) => {\n const updateCommand = () => {\n const newModel = {\n ...update(model),\n status: RiskModelStatusEnum.ReviewPending,\n } as RiskExtended;\n if (JSON.stringify(model) != JSON.stringify(newModel))\n dispatch(updateCurrentRisk(newModel));\n if (dry) return;\n dispatch(commitCurrentRisk());\n };\n if (model.status == RiskModelStatusEnum.Approved) {\n command({\n title: 'Continue to editing',\n description: `\n Are you sure you wish to continue to editing? The risk will need to\n be re-approved. To return to viewing click Cancel or continue to\n editing by selecting Edit.\n `,\n action: 'Edit',\n buttonVariant: AdoptechButtonVariant.SuccessFilled,\n onConfirm: updateCommand,\n });\n } else {\n updateCommand();\n }\n };\n\n const { users, ownerOptions } = useOwnerOptions({\n onlyAdminable: true,\n });\n\n const rangeOfFiveOptions = [\n { label: '1', value: '1' },\n { label: '2', value: '2' },\n { label: '3', value: '3' },\n { label: '4', value: '4' },\n { label: '5', value: '5' },\n ];\n\n const progress =\n overallCompletion.filter(Boolean).length / overallCompletion.length;\n\n const canManageEdit = useHasFeature(\n AccessObject.manage_ownership,\n model?.access\n );\n\n const [showEditRiskModal, setShowEditRiskModal] = useState(false);\n\n if (!model) {\n return ;\n }\n\n const riskInfo = (\n risk: RiskModel,\n type: 'inherent' | 'residual'\n ): RiskInfo => {\n const riskSeverity =\n (risk[`${type}RiskConsequence`] || 1) *\n (risk[`${type}RiskLikelihood`] || 1);\n return {\n riskSeverity,\n riskLevel: getPestelRiskText(riskSeverity),\n };\n };\n\n const approveCommand: CommandConfirmation = {\n subject: { name: model.name, type: 'Risk' },\n action: 'Approve',\n buttonVariant: AdoptechButtonVariant.SuccessFilled,\n onConfirm: () =>\n dispatch(approveRisk(model.id, () => dispatch(push(riskRegistryRoute)))),\n };\n\n const removeCommand: CommandConfirmation = {\n title: 'Confirm Remove',\n subject: { name: model.name, type: 'Risk' },\n description: 'Click CONFIRM to remove this risk from the register.',\n buttonVariant: AdoptechButtonVariant.Warning,\n onConfirm: () =>\n dispatch(deleteRisk(model.id, () => dispatch(push(riskRegistryRoute)))),\n };\n\n if (!canUpdateRisks)\n return (\n
\n \n
\n );\n\n const onChangeCompromisedProperty = (\n e: React.SyntheticEvent\n ) => {\n const name = (e.target as HTMLInputElement).id.split(\n '-'\n )[1] as RiskModelInformationSecurityPropertiesEnum;\n const informationSecurityPropertiesCopy = (\n model.informationSecurityProperties || []\n ).filter(item => item !== name);\n if (e.currentTarget.checked) informationSecurityPropertiesCopy.push(name);\n\n updateModel(m => ({\n ...m,\n informationSecurityProperties: informationSecurityPropertiesCopy,\n }));\n };\n\n const create = !model?.id;\n const canManageOwner = create ? true : canManageEdit;\n\n const ownerTitle =\n create || canManageOwner ? null : SecurityEditorOwnerWarning;\n\n const handleEditClick = () => {\n setShowEditRiskModal(true);\n };\n\n return (\n
\n
\n \n
\n \n
\n
\n {\n dispatch(push(riskRegistryRoute));\n }}\n >\n \n
\n
\n
\n
{model.name}
\n
\n
\n command(approveCommand)}\n >\n Approve\n \n {canUpdateRisks && (\n \n \n \n Edit\n \n command(removeCommand)}>\n \n Remove\n \n \n )}\n
\n \n
\n
\n \n \n
Set Risk Owner
\n
\n This individual is responsible for approving the risk treatment\n plan(s), and tracking the completion of the respective tasks. They\n are also responsible for accepting\\signing-off the residual risk.\n The risk owner may be different from related control, task or\n asset owners.\n
\n
\n {\n const selectedOwner = users.find(\n user => user.id === option.value\n );\n // HACK: Remove focus from select, to keep it sensitive to click after overlay close\n (document.activeElement as HTMLElement).blur();\n updateModel(m => ({ ...m, owner: selectedOwner }));\n }}\n value={ownerOptions.find(\n option => option.value === model.owner?.id\n )}\n placeholder=\"Select owner\"\n showUserAvatar\n />\n
\n \n \n
\n Confidentiality Integrity and Availability\n
\n
\n Which of the following key information security properties could\n be compromised by this risk?\n
\n
\n
\n \n onChangeCompromisedProperty(e)}\n label=\"Confidentiality\"\n />\n \n
\n
\n \n onChangeCompromisedProperty(e)}\n label=\"Integrity\"\n />\n \n
\n
\n \n onChangeCompromisedProperty(e)}\n label=\"Availability\"\n />\n \n
\n
\n \n \n
Assess Inherent Risk
\n
\n Estimate the likelihood and impact to determine an overall\n inherent risk score.\n
\n
\n {\n updateModel(m => ({\n ...m,\n inherentRiskLikelihood: +option.value,\n }));\n }}\n value={rangeOfFiveOptions.find(\n option =>\n option.value === model.inherentRiskLikelihood?.toString()\n )}\n label=\"Likelihood\"\n labelTooltipText=\"The probability the risk will occur\"\n placeholder=\"Please select\"\n />\n {\n updateModel(m => ({\n ...m,\n inherentRiskConsequence: +option.value,\n }));\n }}\n labelTooltipText=\"The impact of the risk if it occurs\"\n value={rangeOfFiveOptions.find(\n option =>\n option.value === model.inherentRiskConsequence?.toString()\n )}\n label=\"Consequence\"\n placeholder=\"Please select\"\n />\n
\n <>\n \n \n \n \n \n
\n
\n

\n Provide any additional comments (optional). These comments will\n appear in any risk reports that you generate.\n

\n
\n {\n const value = `${e.currentTarget.value}`;\n updateModel(\n m => ({ ...m, inherentRiskComment: value }),\n true\n );\n }}\n onBlur={() => dispatch(commitCurrentRisk())}\n />\n
\n \n \n \n \n \n
Assess Residual Risk
\n
\n Estimate the likelihood and impact to determine an overall\n residual risk score. Take into consideration the controls that\n have been applied.\n
\n
\n {\n updateModel(m => ({\n ...m,\n residualRiskLikelihood: +option.value,\n }));\n }}\n value={rangeOfFiveOptions.find(\n option =>\n option.value === model.residualRiskLikelihood?.toString()\n )}\n label=\"Likelihood\"\n placeholder=\"Please select\"\n />\n {\n updateModel(m => ({\n ...m,\n residualRiskConsequence: +option.value,\n }));\n }}\n value={rangeOfFiveOptions.find(\n option =>\n option.value === model.residualRiskConsequence?.toString()\n )}\n label=\"Consequence\"\n placeholder=\"Please select\"\n labelTooltipText=\"The impact of the risk if it occurs\"\n />\n
\n \n \n \n \n
\n
\n

\n Provide any additional comments (optional). These comments will\n appear in any risk reports that you generate.\n

\n
\n {\n const value = `${e.currentTarget.value}`;\n updateModel(\n m => ({ ...m, residualRiskComment: value }),\n true\n );\n }}\n onBlur={() => dispatch(commitCurrentRisk())}\n />\n
\n \n
\n
\n command(null)}\n />\n {showEditRiskModal && (\n setShowEditRiskModal(false)} />\n )}\n
\n {\n dispatch(hideAutoSaveToast());\n }}\n show={showAutoSaveToast}\n >\n Autosave complete\n \n
\n \n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport Fuse from 'fuse.js';\nimport { sort } from '../../functions/sort';\nimport { RiskCategoryModel } from '../../swagger/models/RiskCategoryModel';\nimport { RiskModel } from '../../swagger/models/RiskModel';\nimport { RiskTemplateModel } from '../../swagger/models/RiskTemplateModel';\nimport { ApplicationState } from '../../types/applicationState';\nimport { ColumnSort } from '../../types/columnSort';\nimport { Grid } from '../../types/grid';\nimport { selectSortSettings } from '../selectSortSettings';\n\nconst sortRisksTemplates = (\n a: RiskTemplateModel,\n b: RiskTemplateModel,\n columnSort: ColumnSort\n) => {\n const typedColumn = columnSort.name as keyof RiskTemplateModel;\n return sort(a[typedColumn] || '', b[typedColumn] || '', columnSort.direction);\n};\n\nexport const filteredByTextRisksTemplates = (\n items: RiskTemplateModel[],\n searchText: string\n) => {\n if (!items) return [];\n if (!searchText) return items;\n\n const fuseTask = new Fuse(items, {\n ignoreLocation: true,\n includeScore: true,\n keys: ['name', 'description'],\n threshold: 0,\n });\n return fuseTask.search(searchText).map(x => x.item);\n};\n\nexport const selectRisksTemplates = (\n searchText: string,\n paramsId: RiskCategoryModel['id']\n) =>\n createSelector(\n (state: ApplicationState) => state.riskRegistry.risks,\n (state: ApplicationState) => state.riskRegistry.templates,\n selectSortSettings(Grid.RisksTemplates),\n (risks: RiskModel[], templates: RiskTemplateModel[], sortSetting) => {\n const categoryTemplates = templates.filter(\n template => !paramsId || template.riskCategoryId === paramsId\n );\n\n const templatesIds = risks.map(risk => risk.riskTemplateId);\n const notUsedTemplates = categoryTemplates.filter(\n template => !templatesIds.includes(template.id)\n );\n\n return [\n ...filteredByTextRisksTemplates(notUsedTemplates, searchText),\n ].sort((a, b) => sortRisksTemplates(a, b, sortSetting.columnSort));\n }\n );\n","import './RiskRegistryCategoryPage.scss';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { ApplicationState } from '../../../types/applicationState';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport { Lozenge } from '../../Lozenge/Lozenge';\nimport { selectCurrentVendorUser } from '../../../selectors/selectCurrentVendorUser';\nimport {\n createRiskFromTemplate,\n deleteRisk,\n fetchRisks,\n fetchRisksCategories,\n fetchRisksTemplates,\n} from '../../../store/riskRegistry/riskRegistryThunks';\nimport { selectRisks } from '../../../selectors/riskRegistry/selectRisks';\nimport { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport { AdoptechTextInput } from '../../AdoptechTextInput/AdoptechTextInput';\nimport { RiskModel } from '../../../swagger/models/RiskModel';\nimport {\n riskRegistryCategoryRoute,\n riskRegistryRoute,\n riskRegistryStartRoute,\n} from '../../Routes/Routes';\nimport { push } from 'connected-react-router';\nimport { AdoptechPageNavBar } from '../../AdoptechPageNavBar/AdoptechPageNavBar';\nimport { useParams } from 'react-router';\nimport { RiskCategoryModel, RiskTemplateModel } from '../../../swagger';\nimport classNames from 'classnames';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport arrowLeftIcon from 'images/icons/arrowLeftIcon.svg';\n\nimport AdoptechGridTable from '../../AdoptechGridTable/AdoptechGridTable';\nimport { Grid } from '../../../types/grid';\nimport { SortableTableHeader } from '../../SortableTableHeader/SortableTableHeader';\nimport { NoDataText } from '../../NoDataText/NoDataText';\nimport { ConfirmationModal } from '../../ConfirmationModal/ConfirmationModal';\nimport { selectRisksTemplates } from '../../../selectors/riskRegistry/selectRisksTemplates';\nimport { CommandConfirmation } from '../../../types/CommandConfirmation';\nimport { useCanFeature } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport { faMinus, faPlus } from '@fortawesome/pro-solid-svg-icons';\n\nconst useRiskIdFromParams = () => {\n const params = useParams() as { id: RiskCategoryModel['id'] };\n return params.id;\n};\n\nconst RiskCategoryFilter: React.FC = () => {\n const baseCss = 'riskCategoryFilter';\n\n const categories = useSelector(\n (state: ApplicationState) => state.riskRegistry.categories\n );\n const paramsId = useRiskIdFromParams();\n const selectedCategory = categories.find(\n category => category.id === paramsId\n );\n const dispatch = useDispatch();\n const handleClick = (id?: string) => {\n const uri = riskRegistryCategoryRoute.replace(':id', id || '');\n dispatch(push(uri));\n };\n\n return (\n
\n
Filter
\n
\n handleClick()}\n >\n All risks\n
\n {categories.map(category => (\n handleClick(category.id)}\n >\n {category.name}\n
\n ))}\n \n \n );\n};\n\ninterface RiskTableProps {\n risks: RiskModel[];\n}\n\nconst RisksTable: React.FC = ({ risks }) => {\n const baseCss = 'riskCategoryPage';\n const dispatch = useDispatch();\n const vendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n\n // using such naming to preserve opportunity refactor it into currentCommand in redux store\n const [currentCommand, command] = useState(null);\n\n const removeCommand = (model: RiskModel): CommandConfirmation => ({\n title: 'Confirm Remove',\n subject: { name: model.name, type: 'Risk' },\n description: 'Click CONFIRM to remove this risk from the register.',\n buttonVariant: AdoptechButtonVariant.Warning,\n onConfirm: () =>\n dispatch(deleteRisk(model.id, () => dispatch(fetchRisks(vendorId)))),\n });\n\n return (\n
\n \n \n columnName=\"name\"\n grid={Grid.Risks}\n label=\"Risk name\"\n notInTable\n />\n \n columnName=\"description\"\n grid={Grid.Risks}\n label=\"Description\"\n notInTable\n />\n
\n }\n >\n {risks.length === 0 && (\n \n )}\n {risks.map(risk => {\n return (\n
\n
{risk.name}
\n
{risk.description}
\n
\n command(removeCommand(risk))}\n variant={AdoptechButtonVariant.White}\n iconSize=\"large\"\n icon={faMinus}\n rounded\n >\n Remove\n \n
\n
\n );\n })}\n \n\n command(null)}\n />\n \n );\n};\n\ninterface RegisterRisksProps {\n risks: RiskModel[];\n}\n\nconst RegisterRisks: React.FC = ({ risks }) => {\n const baseCss = 'riskCategoryPage';\n const dispatch = useDispatch();\n return (\n
\n
\n
\n Added to register\n \n
\n\n dispatch(push(riskRegistryRoute))}\n variant={AdoptechButtonVariant.PrimaryOrange}\n rawIcon={arrowLeftIcon}\n iconSize=\"large\"\n rounded\n >\n Return to risk register\n \n
\n \n
\n );\n};\n\ninterface TemplatesTableProps {\n templates: RiskTemplateModel[];\n}\nconst TemplatesTable: React.FC = ({ templates }) => {\n const baseCss = 'riskCategoryPage';\n const dispatch = useDispatch();\n return (\n
\n \n \n columnName=\"name\"\n grid={Grid.RisksTemplates}\n label=\"Risk name\"\n notInTable\n />\n \n columnName=\"description\"\n grid={Grid.RisksTemplates}\n label=\"Description\"\n notInTable\n />\n
\n }\n >\n {templates.length === 0 && (\n \n )}\n {templates.map(template => {\n return (\n
\n
{template.name}
\n
{template.description}
\n
\n \n dispatch(\n createRiskFromTemplate({ riskTemplateId: template.id })\n )\n }\n variant={AdoptechButtonVariant.OrangeOnWhite}\n icon={faPlus}\n iconSize=\"large\"\n rounded\n >\n Add\n \n
\n
\n );\n })}\n \n \n );\n};\n\nexport const RiskTemplates: React.FC = ({ templates }) => {\n const baseCss = 'riskCategoryPage';\n\n const paramsId = useRiskIdFromParams();\n const { categories } = useSelector(\n (state: ApplicationState) => state.riskRegistry\n );\n\n const categoryTitle = !paramsId\n ? 'All risks'\n : categories.find(category => category.id === paramsId)?.name + ' risks';\n\n return (\n <>\n
\n
\n {categoryTitle}\n \n
\n
\n \n \n );\n};\n\nexport const RiskRegistryCategoryPage: React.FC = () => {\n const baseCss = 'riskCategoryPage';\n\n const vendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n const vendorUser = useSelector(selectCurrentVendorUser);\n const [searchText, setSearchText] = useState('');\n const canManageRegister = useCanFeature(AccessObject.risk_register_update);\n const paramsId = useRiskIdFromParams();\n const filteredRisks: RiskModel[] = useSelector(\n selectRisks(searchText, ['name', 'description'])\n ).filter(risk => !paramsId || risk.riskCategoryId === paramsId);\n const {\n isFetchingRisks,\n categories,\n isFetchingCategories,\n isFetchingTemplates,\n isDeletingRisk,\n isCreatingRiskFromTemplate,\n } = useSelector((state: ApplicationState) => state.riskRegistry);\n const templates = useSelector(selectRisksTemplates(searchText, paramsId));\n const dispatch = useDispatch();\n useEffect(() => {\n dispatch(fetchRisks(vendorId));\n dispatch(fetchRisksCategories());\n dispatch(fetchRisksTemplates());\n }, [vendorId, vendorUser.roles]);\n\n const goBack = () => dispatch(push(riskRegistryStartRoute));\n const categoryTitle = !paramsId\n ? 'All risks'\n : categories.find(category => category.id === paramsId)?.name + ' risks';\n if (\n isFetchingRisks ||\n isFetchingCategories ||\n isFetchingTemplates ||\n isDeletingRisk ||\n isCreatingRiskFromTemplate\n ) {\n return ;\n }\n\n if (!canManageRegister)\n return (\n
\n \n
\n );\n return (\n
\n \n
{categoryTitle}
\n
\n setSearchText(e.target.value)}\n type=\"text\"\n placeholder=\"Search for risks\"\n icon={faSearch}\n additionalClass=\"adoptechTextInput-search\"\n />\n
\n \n \n }\n />\n \n \n
\n );\n};\n","import { faCloudDownloadAlt } from '@fortawesome/pro-light-svg-icons/faCloudDownloadAlt';\nimport { faAngleLeft } from '@fortawesome/pro-light-svg-icons/faAngleLeft';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport { push } from 'connected-react-router';\nimport React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router';\nimport {\n openPdfPreview,\n setPdfPreviewUrl,\n} from '../../../store/global/globalSlice';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { PdfOpenMode } from '../../../types/pdfOpenMode';\nimport { AdoptechButton } from '../../AdoptechButton/AdoptechButton';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport { Panel } from '../../Panel/Panel';\nimport { ProgressBar } from '../../ProgressBar/ProgressBar';\nimport { DocumentType } from '../../../constants/DocumentType';\n\nimport './ReportsPreviewPage.scss';\nimport { PdfPreviewCard } from '../../PdfPreviewCard/PdfPreviewCard';\nimport { reportsRoute } from '../../Routes/Routes';\nimport {\n fetchReport,\n fetchReportDocument,\n} from '../../../store/reports/reportsThunks';\nimport { cleanCurrentReport } from '../../../store/reports/reportsSlice';\nimport { downloadReportFile } from '../ReportsList/ReportsList';\nimport { ReportModel } from '../../../swagger/models/ReportModel';\n\nexport const ReportsPreviewPage: React.FC = () => {\n const baseCss = 'reportsPreviewPage';\n const dispatch = useDispatch();\n const goBack = () => dispatch(push(reportsRoute));\n\n const { id } = useParams() as { id: string };\n const pdfPreviewUrl = useSelector(\n (state: ApplicationState) => state.global.pdfPreviewUrl\n );\n const { currentReport, isFetchingReport, isFetchingReportDocument } =\n useSelector((state: ApplicationState) => state.reports);\n useEffect(() => {\n const afterReportFetched = (report: ReportModel) => {\n dispatch(\n fetchReportDocument({\n id,\n successCallback: (url: string) => {\n openPreview(url, report.name);\n },\n })\n );\n };\n dispatch(fetchReport(id, afterReportFetched));\n return () => {\n dispatch(cleanCurrentReport());\n dispatch(setPdfPreviewUrl());\n };\n }, [id]);\n\n const openPreview = (url: string, name: string) =>\n dispatch(\n openPdfPreview({\n mode: PdfOpenMode.Preview,\n documentType: DocumentType.Report,\n title: name,\n inline: true,\n url,\n })\n );\n\n if (isFetchingReport || isFetchingReportDocument || !currentReport)\n return ;\n\n return (\n
\n \n
\n \n
\n
\n
goBack()}>\n \n
\n
\n
\n
Name
\n
\n {currentReport.name}\n
\n
\n \n {\n downloadReportFile(pdfPreviewUrl, currentReport.name);\n }}\n rounded\n disabled={!pdfPreviewUrl}\n >\n \n Download\n \n
\n
\n
\n \n \n \n );\n};\n","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { FrameworkRequirementModel } from '../../../swagger';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport { fetchFrameworkGuidance } from '../../../store/compliance/complianceThunks';\nimport { ApplicationState } from '../../../types/applicationState';\n\nimport './FrameworkGuidance.scss';\n\nconst baseCss = 'frameworkGuidance';\n\ninterface Props {\n guidanceIdentifier: FrameworkRequirementModel['guidanceIdentifier'];\n}\n\nexport const FrameworkGuidance: React.FC = ({ guidanceIdentifier }) => {\n const dispatch = useDispatch();\n\n const guidance = useSelector(\n (state: ApplicationState) =>\n state.compliance.frameworkGuidances[guidanceIdentifier]\n );\n\n useEffect(() => {\n if (!guidance) dispatch(fetchFrameworkGuidance(guidanceIdentifier));\n }, [guidanceIdentifier]);\n\n if (!guidance) return ;\n\n return (\n \n );\n};\n","import React, { useState } from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport './FrameworkRequirementCategories.scss';\nimport { AdoptechAccordionCard } from '../../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { Accordion } from 'react-bootstrap';\nimport {\n FrameworkRequirementCategoryExtended,\n FrameworkRequirementExtended,\n FrameworkRequirementExtendedStatusEnum,\n FrameworkRequirementModelTypeEnum,\n} from '../../../swagger';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCircle } from '@fortawesome/pro-light-svg-icons/faCircle';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport {\n createVendorRequirement,\n removeVendorRequirement,\n} from '../../../store/compliance/complianceThunks';\nimport { FrameworkGuidance } from './FrameworkGuidence';\n\ninterface Props {\n categories: FrameworkRequirementCategoryExtended[];\n}\n\nconst baseCss = 'frameworkRequirementCategories';\nexport const FrameworkRequirementCategories: React.FC = ({\n categories,\n}) => {\n const categoryTitle = (category: FrameworkRequirementCategoryExtended) => {\n const completed = category.frameworkRequirements.every(\n r => r.status == FrameworkRequirementExtendedStatusEnum.Completed\n );\n const requirementsCount = category.frameworkRequirements.length;\n const requirementsCompleted = category.frameworkRequirements.filter(\n r => r.status == FrameworkRequirementExtendedStatusEnum.Completed\n ).length;\n return (\n
\n \n
{category.name}
\n
\n {requirementsCompleted}/{requirementsCount} Completed\n
\n
\n );\n };\n\n return (\n \n {categories.map(category => (\n \n \n {category.frameworkRequirements.map(requirement => (\n \n ))}\n \n \n ))}\n \n );\n};\ninterface FrameworkRequirementCardProps {\n requirement: FrameworkRequirementExtended;\n}\n\nconst FrameworkRequirementCard: React.FC = ({\n requirement,\n}) => {\n const [openedGuidance, setOpenedGuidance] = useState('');\n const dispatch = useDispatch();\n const [isBusy, setIsBusy] = useState(false);\n\n const completeHandler = async () => {\n setIsBusy(true);\n await dispatch(createVendorRequirement(requirement.id));\n setIsBusy(false);\n };\n const isCompleted =\n requirement.status == FrameworkRequirementExtendedStatusEnum.Completed;\n\n const removeHandler = (e: React.MouseEvent) => {\n e.stopPropagation();\n const answerId = requirement.vendorFrameworkRequirementId;\n\n if (isCompleted && answerId) {\n setIsBusy(true);\n dispatch(removeVendorRequirement(answerId));\n setIsBusy(false);\n }\n };\n\n const requirementTitle = () => {\n return (\n
\n \n {requirement.name}\n
\n );\n };\n\n return (\n \n \n
\n {requirement.type == FrameworkRequirementModelTypeEnum.Manual &&\n (requirement.status ==\n FrameworkRequirementExtendedStatusEnum.Pending ? (\n \n Mark as completed\n \n ) : (\n \n Completed\n \n ))}\n {requirement.type == FrameworkRequirementModelTypeEnum.SendMessage &&\n (requirement.status ==\n FrameworkRequirementExtendedStatusEnum.Pending ? (\n \n Request meeting\n \n ) : (\n \n Meeting requested\n \n ))}\n {requirement.guidanceIdentifier &&\n (requirement.guidanceIdentifier != openedGuidance ? (\n
\n \n setOpenedGuidance(requirement.guidanceIdentifier)\n }\n >\n Show Guidance\n \n
\n ) : (\n
\n setOpenedGuidance('')}\n >\n Hide Guidance\n \n
\n ))}\n
\n {openedGuidance && requirement.guidanceIdentifier == openedGuidance && (\n \n )}\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { push } from 'connected-react-router';\nimport { complianceFrameworksRoute } from '../../Routes/Routes';\nimport { AdoptechPageNavBar } from '../../AdoptechPageNavBar/AdoptechPageNavBar';\nimport { selectSelectedFramework } from '../../../selectors/selectSelectedFramework';\n\nimport './FrameworkRequirementsPage.scss';\nimport {\n fetchComplianceFrameworks,\n fetchRequirementCategories,\n} from '../../../store/compliance/complianceThunks';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport { AdoptechAccordionCard } from '../../AdoptechAccordionCard/AdoptechAccordionCard';\nimport { Accordion } from 'react-bootstrap';\nimport { FrameworkRequirementCategories } from './FrameworkRequirementCategories';\nimport { useParams } from 'react-router';\n\nexport const FrameworkRequirementsPage: React.FC = () => {\n const dispatch = useDispatch();\n const params = useParams() as { id: string };\n const frameworks = useSelector(\n (state: ApplicationState) => state.compliance.frameworks\n );\n const framework =\n useSelector(selectSelectedFramework) ||\n (frameworks || []).find(frameworkModel => frameworkModel.id === params.id);\n const goBack = () => dispatch(push(complianceFrameworksRoute));\n\n const baseCss = 'frameworkRequirementsPage';\n\n const vendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n\n useEffect(() => {\n dispatch(fetchComplianceFrameworks(vendorId));\n }, [vendorId]);\n\n useEffect(() => {\n if (!framework) return;\n dispatch(fetchRequirementCategories(framework.id));\n }, [framework?.id]);\n\n const isFetchingRequirements = useSelector(\n (state: ApplicationState) =>\n state.compliance.isFetchingFrameworkRequirements\n );\n\n const categories = useSelector(\n (state: ApplicationState) => state.compliance.frameworkRequirementCategories\n );\n\n const frameworkName = framework?.name || 'Framework';\n\n return (\n
\n {frameworkName} Requirements}\n />\n {isFetchingRequirements ? (\n \n ) : (\n \n )}\n
\n );\n};\n","import React, { useEffect } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../../../components/AdoptechModal/AdoptechModal';\nimport {\n hideSubscriptionRequiredModal,\n showSubscriptionRequiredModal,\n} from '../../../store/global/globalSlice';\nimport { push } from 'connected-react-router';\nimport { manageSubscriptionRoute } from '../../../components/Routes/Routes';\nimport subscriptionRequiredPlaceholder from 'images/subscriptionRequiredPlaceholder.png';\n\nimport './SubscriptionRequiredModal.scss';\nimport { fetchPaymentPlans } from '../store/pricingThunks';\nimport { selectCurrentVendor } from '../../../selectors/selectCurrentVendor';\nimport {\n coinsToPounds,\n useHandleSubscribe,\n} from '../ManageSubscriptionPage/PaymentPlanCard/PaymentPlanCard';\nimport { SharedPaymentPeriod } from '../../../swagger';\nimport { selectPaymentPlans } from '../../../selectors/selectPaymentPlans';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\n\nexport const SubscriptionRequiredModal: React.FC = () => {\n const dispatch = useDispatch();\n\n const isShowing = useSelector(\n (state: ApplicationState) => state.global.isShowingSubscriptionRequiredModal\n );\n\n const { isCreatingPaymentPlanVendor } = useSelector(\n (state: ApplicationState) => state.pricing\n );\n\n const handleManageSubscriptionClick = () => {\n dispatch(push(manageSubscriptionRoute));\n dispatch(hideSubscriptionRequiredModal());\n };\n const handleSubscribe = useHandleSubscribe();\n\n const paymentPlans = useSelector(selectPaymentPlans) || [];\n const plan = paymentPlans[0];\n\n const monthlyPrice = plan ? coinsToPounds(plan.monthlyPrice) : null;\n\n const handleSubscribeClick = () => {\n handleSubscribe({\n plan,\n paymentPeriod: SharedPaymentPeriod.Monthly,\n });\n };\n\n const baseCss = 'subscriptionRequiredModal';\n const currentVendor = useSelector(selectCurrentVendor);\n const { isFetchingPaymentPlans } = useSelector(\n (state: ApplicationState) => state.pricing\n );\n useEffect(() => {\n isShowing && dispatch(fetchPaymentPlans());\n }, [currentVendor?.id, isShowing]);\n\n if (!isShowing) return null;\n\n return (\n dispatch(hideSubscriptionRequiredModal())}\n show={isShowing}\n >\n Continue your journey to automated compliance\n \n
\n <>\n \n\n {isFetchingPaymentPlans ? (\n \n ) : !plan ? ( // payment plan must always exist on the backend\n
\n \n MANAGE SUBSCRIPTION\n \n
\n ) : (\n <>\n
\n You don’t have access to this feature as yet. Do more with our\n \n {' '}\n {plan.name}\n {' '}\n plan for just{' '}\n \n £{monthlyPrice} a month\n \n , plus 50% off your first month when you use discount code\n SCALE101.\n
\n
\n \n Subscribe now\n \n OR\n \n MANAGE SUBSCRIPTION\n
\n
\n \n )}\n \n \n
\n \n );\n};\n","import { faCloudDownloadAlt } from '@fortawesome/pro-light-svg-icons/faCloudDownloadAlt';\nimport { faAngleLeft } from '@fortawesome/pro-light-svg-icons/faAngleLeft';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport { push } from 'connected-react-router';\nimport React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router';\nimport {\n openPdfPreview,\n setPdfPreviewUrl,\n} from '../../../store/global/globalSlice';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { PdfOpenMode } from '../../../types/pdfOpenMode';\nimport './CompanyCertificatesPreviewPage.scss';\nimport { PdfPreviewCard } from '../../../components/PdfPreviewCard/PdfPreviewCard';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport { AdoptechButton } from '../../../components/AdoptechButton/AdoptechButton';\nimport { Panel } from '../../../components/Panel/Panel';\nimport { companyProfileRoute } from '../../../components/Routes/Routes';\nimport { ProgressBar } from '../../../components/ProgressBar/ProgressBar';\nimport {\n fetchCertificate,\n fetchCertificateDocument,\n} from '../store/companyProfileThunks';\nimport { CertificateModel } from '../../../swagger/models/CertificateModel';\nimport { cleanCurrentCertificate } from '../store/companyProfileSlice';\nimport { DocumentType } from '../../../constants/DocumentType';\nimport { downloadReportFile } from '../../../components/Reports/ReportsList/ReportsList';\n\nexport const CompanyCertificatesPreviewPage: React.FC = () => {\n const baseCss = 'certificatesPreviewPage';\n const dispatch = useDispatch();\n const goBack = () => dispatch(push(companyProfileRoute));\n\n const { id } = useParams() as { id: CertificateModel['id'] };\n const pdfPreviewUrl = useSelector(\n (state: ApplicationState) => state.global.pdfPreviewUrl\n );\n const {\n currentCertificate,\n fetchingCertificatesStatus,\n fetchingCertificateDocumentStatus,\n } = useSelector((state: ApplicationState) => state.companyProfile);\n useEffect(() => {\n const afterCertificateFetched = (certificate: CertificateModel) => {\n dispatch(\n fetchCertificateDocument({\n id,\n successCallback: (url: string) => {\n openPreview(url, certificate.name);\n },\n })\n );\n };\n dispatch(fetchCertificate(id, afterCertificateFetched));\n return () => {\n dispatch(cleanCurrentCertificate());\n dispatch(setPdfPreviewUrl());\n };\n }, [id]);\n\n const openPreview = (url: string, name: string) =>\n dispatch(\n openPdfPreview({\n mode: PdfOpenMode.Preview,\n documentType: DocumentType.Certificate,\n title: name,\n inline: true,\n url,\n })\n );\n\n if (\n fetchingCertificatesStatus === 'loading' ||\n fetchingCertificateDocumentStatus === 'loading' ||\n !currentCertificate\n )\n return ;\n\n return (\n
\n \n
\n \n
\n
\n
goBack()}>\n \n
\n
\n
\n
Name
\n
\n {currentCertificate.name}\n
\n
\n \n {\n downloadReportFile(pdfPreviewUrl, currentCertificate.name);\n }}\n rounded\n disabled={!pdfPreviewUrl}\n >\n \n Download\n \n
\n
\n
\n \n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { trusthubAdminPageCompaniesRoute } from '../../../../../../components/Routes/Routes';\nimport { push } from 'connected-react-router';\nimport { faAngleLeft } from '@fortawesome/pro-solid-svg-icons/faAngleLeft';\n\nimport { AdoptechPanel } from '../../../../../../components/AdoptechPanel/AdoptechPanel';\nimport { faBuilding } from '@fortawesome/pro-light-svg-icons/faBuilding';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../../../components/AdoptechButton/AdoptechButton';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { TrusthubCompanyStatus } from '../../../../../../swagger/trusthub';\nimport { formatShortDate } from '../../../../../../functions/formatShortDate';\nimport { faPencil } from '@fortawesome/pro-light-svg-icons/faPencil';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../../../types/applicationState';\nimport {\n deleteTrusthubCompany,\n fetchTrustHubVendorUsers,\n patchTrusthubCompany,\n} from '../../../../store/trusthubThunks';\nimport { showGlobalToast } from '../../../../../../store/global/globalSlice';\nimport { AdoptechTextInput } from '../../../../../../components/AdoptechTextInput/AdoptechTextInput';\nimport { AdoptechReactSelect } from '../../../../../../components/AdoptechReactSelect/AdoptechReactSelect';\nimport { SelectionOption } from '../../../../../../types/selectionOption';\nimport { selectCurrentVendor } from '../../../../../../selectors/selectCurrentVendor';\nimport { AdoptechReactSelect2 } from '../../../../../../components/AdoptechReacSelect2/AdoptechReactSelect2';\nimport { LoadingSpinner } from '../../../../../../components/LoadingSpinner/LoadingSpinner';\nimport { ConfirmationModal } from '../../../../../../components/ConfirmationModal/ConfirmationModal';\nimport { CommandConfirmation } from '../../../../../../types/CommandConfirmation';\nimport moment from 'moment';\nimport { formatLongDateTime } from '../../../../../../functions/formatLongDateTime';\n\ninterface EditCompanyFormData {\n name: string;\n status: TrusthubCompanyStatus;\n ownerId: string;\n nda: boolean;\n}\nexport const TrustHubUserAdminEditCompanyForm: React.FC = () => {\n const baseCss = 'trusthubUserAdminCompanyPage';\n const baseHeaderCss = baseCss + '--header';\n\n const {\n currentCompany: company,\n patchCurrentCompanyStatus,\n fetchingVendorUsersStatus,\n vendorUsers,\n deletingCurrentCompanyStatus,\n } = useSelector((state: ApplicationState) => state.trustHub);\n\n const dispatch = useDispatch();\n\n const [formData, setFormData] = useState({\n name: company.name,\n ownerId: (company.relationshipOwners || [])[0]?.id,\n status: company.status,\n nda: company.status === TrusthubCompanyStatus.Approved,\n });\n const [isEditMode, setIsEditMode] = useState(false);\n const handleDelete = () =>\n dispatch(\n deleteTrusthubCompany({ companyId: company.id }, () => {\n dispatch(showGlobalToast('Company has been successfully deleted'));\n dispatch(push(trusthubAdminPageCompaniesRoute));\n })\n );\n const [currentCommand, command] = useState(null);\n\n const handleEdit = () => setIsEditMode(true);\n const handleCancel = () => setIsEditMode(false);\n const handleSubmit = () => {\n dispatch(\n patchTrusthubCompany(\n {\n companyId: company.id,\n body: {\n trusthubCompany: {\n status: !formData.nda\n ? TrusthubCompanyStatus.WaitingForNda\n : formData.status,\n name: formData.name,\n relationshipOwnerIds: [formData.ownerId],\n },\n },\n },\n () => {\n setIsEditMode(false);\n dispatch(showGlobalToast('Company has been successfully updated.'));\n }\n )\n );\n };\n\n const statusOptions = [\n {\n label: 'Enabled',\n value: TrusthubCompanyStatus.Approved,\n },\n {\n label: 'Disabled',\n value: TrusthubCompanyStatus.Suspended,\n },\n ];\n const currentVendor = useSelector(selectCurrentVendor);\n useEffect(() => {\n isEditMode &&\n dispatch(\n fetchTrustHubVendorUsers(\n { vendorIdOrDomain: currentVendor?.id },\n () => {}\n )\n );\n }, [isEditMode]);\n\n const ownerOptions = (vendorUsers || []).map(user => {\n return {\n label: user.fullName,\n value: user.id,\n };\n });\n const ndaOptions = [\n {\n label: 'Yes',\n value: 'yes',\n },\n { label: 'No', value: 'no' },\n ];\n\n const deleteCompanyCommand: CommandConfirmation = {\n title: 'Confirm Delete',\n subject: { name: company?.name, type: 'Action' },\n description:\n 'All users associated with this company will also be deleted. Click CONFIRM to delete this company.',\n buttonVariant: AdoptechButtonVariant.Warning,\n onConfirm: handleDelete,\n };\n\n return (\n
\n
\n
\n
\n dispatch(push(trusthubAdminPageCompaniesRoute))}\n className={baseHeaderCss + '--backSectionLink'}\n icon={faAngleLeft}\n />\n
\n {company.name}\n
\n
\n
\n
\n command(deleteCompanyCommand)}\n >\n Delete Company\n \n
\n
\n
\n \n
\n
\n \n Company Profile\n
\n {!isEditMode && (\n
\n \n Edit\n \n
\n )}\n\n {isEditMode && (\n
\n \n Cancel\n \n \n Save\n \n
\n )}\n
\n
\n
Overview
\n\n
\n
\n
Company
\n {isEditMode ? (\n \n setFormData({ ...formData, name: e.currentTarget.value })\n }\n />\n ) : (\n
{company.name}
\n )}\n
\n
\n
Status
\n\n {isEditMode ? (\n {\n setFormData({\n ...formData,\n status: option.value as TrusthubCompanyStatus,\n nda: option.label === 'Enabled' ? true : false,\n });\n }}\n value={statusOptions.find(\n option => option.value === formData.status\n )}\n placeholder=\"Select status\"\n />\n ) : (\n
\n {company.status === TrusthubCompanyStatus.Approved\n ? 'Enabled'\n : 'Disabled'}\n
\n )}\n
\n
\n
\n
\n
Relationship owner
\n {isEditMode ? (\n fetchingVendorUsersStatus === 'loading' ? (\n \n ) : (\n {\n setFormData({\n ...formData,\n ownerId: option.value,\n });\n }}\n value={ownerOptions.find(\n option => option.value === formData.ownerId\n )}\n placeholder=\"Select owner\"\n />\n )\n ) : (\n
\n {company.relationshipOwners\n .map(owner => owner.fullName)\n .join(', ')}{' '}\n
\n )}\n
\n
\n
\n
\n
\n
Metadata
\n\n
\n
\n
Created at
\n
{formatShortDate(company.createdAt)}
\n
\n
\n
Created by
\n
{company.createdBy?.fullName}
\n
\n
\n
\n
\n
\n
\n Confidentiality\n
\n\n
\n
\n
NDA/Confidentiality Agreement
\n\n {isEditMode ? (\n {\n setFormData({\n ...formData,\n nda: option.value === 'yes',\n status:\n option.value === 'yes'\n ? TrusthubCompanyStatus.Approved\n : TrusthubCompanyStatus.Suspended,\n });\n }}\n value={ndaOptions.find(\n option => option.value === (formData.nda ? 'yes' : 'no')\n )}\n placeholder=\"Please select NDA\"\n />\n ) : (\n
\n {company.status === TrusthubCompanyStatus.WaitingForNda\n ? 'No'\n : 'Yes'}{' '}\n
\n )}\n
\n
\n
Approved by
\n
{`${company.approvedBy?.fullName}`}
\n
{formatLongDateTime(company.approvedAt) || ''}
\n
\n
\n
\n command(null)}\n />\n
\n
\n
\n );\n};\n","import { sort } from '../../../../functions/sort';\nimport { ColumnSort } from '../../../../types/columnSort';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { selectSortSettings } from '../../../../selectors/selectSortSettings';\nimport { Grid } from '../../../../types/grid';\nimport { createSelector } from '@reduxjs/toolkit';\nimport { TrusthubVendorUserModel } from '../../../../swagger/trusthub/models/TrusthubVendorUserModel';\n\nconst sortCompanyUsers = (\n a: TrusthubVendorUserModel,\n b: TrusthubVendorUserModel,\n columnSort: ColumnSort\n) => {\n const typedColumn = columnSort.name as keyof TrusthubVendorUserModel;\n\n return sort(a[typedColumn] || '', b[typedColumn] || '', columnSort.direction);\n};\n\nexport const selectCompanyUsers = createSelector(\n (state: ApplicationState) => state.trustHub.companyVendorUsers,\n selectSortSettings(Grid.TrustHubUserAdminCompanyUsers),\n (users: TrusthubVendorUserModel[], sortSetting) => {\n return [...users].sort((a, b) =>\n sortCompanyUsers(a, b, sortSetting.columnSort)\n );\n }\n);\n","import React, { useEffect } from 'react';\nimport { AdoptechPanel } from '../../../../../../components/AdoptechPanel/AdoptechPanel';\nimport { faUserCheck } from '@fortawesome/pro-light-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport './TrustHubUserAdminApprovedUsers.scss';\nimport { NoDataText } from '../../../../../../components/NoDataText/NoDataText';\nimport AdoptechGridTable from '../../../../../../components/AdoptechGridTable/AdoptechGridTable';\nimport { Grid } from '../../../../../../types/grid';\nimport { SortableTableHeader } from '../../../../../../components/SortableTableHeader/SortableTableHeader';\nimport { faTrash } from '@fortawesome/pro-light-svg-icons/faTrash';\nimport { selectCompanyUsers } from '../../selectCompanyUsers';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { TrusthubVendorUserModel } from '../../../../../../swagger/trusthub/models/TrusthubVendorUserModel';\nimport {\n fetchTrustHubCompanyVendorUsers,\n patchTrusthubVendorUser,\n} from '../../../../store/trusthubThunks';\nimport { showGlobalToast } from '../../../../../../store/global/globalSlice';\nimport { selectCurrentVendor } from '../../../../../../selectors/selectCurrentVendor';\nimport { trusthubAdminPageUserRoute } from '../../../../../../components/Routes/Routes';\nimport { push } from 'connected-react-router';\nimport { useParams } from 'react-router';\nimport { TrusthubCompanyModel } from '../../../../../../swagger/trusthub/models/TrusthubCompanyModel';\nimport { ApplicationState } from '../../../../../../types/applicationState';\nimport { LoadingSpinner } from '../../../../../../components/LoadingSpinner/LoadingSpinner';\n\nexport const TrustHubUserAdminApprovedUsers: React.FC = () => {\n const baseCss = 'trustHubUserAdminApprovedUsers';\n const users = useSelector(selectCompanyUsers);\n const dispatch = useDispatch();\n const { fetchingVendorUsersStatus } = useSelector(\n (state: ApplicationState) => state.trustHub\n );\n const currentVendor = useSelector(selectCurrentVendor);\n const params = useParams() as { id: TrusthubCompanyModel['id'] };\n useEffect(() => {\n dispatch(\n fetchTrustHubCompanyVendorUsers(\n {\n vendorIdOrDomain: currentVendor?.id,\n trusthubCompanyId: params.id,\n },\n () => {}\n )\n );\n }, []);\n const handleDelete = (user: TrusthubVendorUserModel) => {\n dispatch(\n patchTrusthubVendorUser(\n {\n vendorUserId: user.id,\n body: {\n trusthubVendorUser: {\n trusthubCompanyId: null,\n },\n },\n },\n () =>\n dispatch(\n showGlobalToast(\n 'Approved user has been successfully removed from the company'\n )\n )\n )\n );\n };\n\n if (fetchingVendorUsersStatus === 'loading') return ;\n\n return (\n
\n
\n \n
\n
\n \n Approved Users\n
\n
\n\n
\n {users.length <= 0 ? (\n \n ) : (\n \n \n columnName=\"fullName\"\n grid={Grid.TrustHubUserAdminCompanyUsers}\n label=\"Name\"\n notInTable\n />\n \n columnName=\"email\"\n grid={Grid.TrustHubUserAdminCompanyUsers}\n label=\"Email\"\n notInTable\n />\n
Action
\n
\n }\n >\n {users.map(user => {\n const { id } = user;\n return (\n \n dispatch(\n push(\n trusthubAdminPageUserRoute.replace(':id', user.id)\n )\n )\n }\n >\n
{user.fullName}
\n
{user.email}
\n {\n e.stopPropagation();\n handleDelete(user);\n }}\n >\n \n
\n
\n );\n })}\n \n )}\n \n \n \n \n );\n};\n","import React, { useEffect } from 'react';\nimport { fetchTrustHubCompany } from '../../../../store/trusthubThunks';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../../../types/applicationState';\nimport { selectCurrentVendor } from '../../../../../../selectors/selectCurrentVendor';\nimport { LoadingSpinner } from '../../../../../../components/LoadingSpinner/LoadingSpinner';\nimport { useParams } from 'react-router';\nimport { TrusthubCompanyModel } from '../../../../../../swagger/trusthub';\nimport './TrustHubUserAdminCompanyPage.scss';\nimport { TrustHubUserAdminEditCompanyForm } from '../TrustHubUserAdminEditCompanyForm/TrustHubUserAdminEditCompanyForm';\nimport { TrustHubUserAdminApprovedUsers } from '../TrustHubUserAdminApprovedUsers/TrustHubUserAdminApprovedUsers';\n\nexport const TrustHubUserAdminCompanyPage: React.FC = () => {\n const baseCss = 'trusthubUserAdminCompanyPage';\n const {\n fetchingSettingsStatus,\n currentCompany: company,\n fetchingCurrentCompanyStatus,\n } = useSelector((state: ApplicationState) => state.trustHub);\n const dispatch = useDispatch();\n const vendor = useSelector(selectCurrentVendor);\n\n const params = useParams() as { id: TrusthubCompanyModel['id'] };\n\n useEffect(() => {\n dispatch(fetchTrustHubCompany({ companyId: params.id }, () => {}));\n }, [vendor.id]);\n if (\n fetchingSettingsStatus === 'loading' ||\n fetchingCurrentCompanyStatus === 'loading' ||\n !company\n ) {\n return ;\n }\n\n return (\n
\n \n \n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { trusthubAdminPageUsersRoute } from '../../../../../../components/Routes/Routes';\nimport { push } from 'connected-react-router';\nimport { faAngleLeft } from '@fortawesome/pro-solid-svg-icons/faAngleLeft';\n\nimport { AdoptechPanel } from '../../../../../../components/AdoptechPanel/AdoptechPanel';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../../../components/AdoptechButton/AdoptechButton';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { faPencil } from '@fortawesome/pro-light-svg-icons/faPencil';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../../../types/applicationState';\nimport {\n fetchTrustHubCompanies,\n patchTrusthubVendorUser,\n} from '../../../../store/trusthubThunks';\nimport { showGlobalToast } from '../../../../../../store/global/globalSlice';\nimport { AdoptechTextInput } from '../../../../../../components/AdoptechTextInput/AdoptechTextInput';\nimport { AdoptechReactSelect } from '../../../../../../components/AdoptechReactSelect/AdoptechReactSelect';\nimport { SelectionOption } from '../../../../../../types/selectionOption';\nimport { selectCurrentVendor } from '../../../../../../selectors/selectCurrentVendor';\nimport { ConfirmationModal } from '../../../../../../components/ConfirmationModal/ConfirmationModal';\nimport { CommandConfirmation } from '../../../../../../types/CommandConfirmation';\nimport {\n TrusthubCompanyModel,\n TrusthubVendorUserModel,\n TrusthubVendorUserStatus,\n TrusthubCompanyStatus,\n TrusthubVendorUserUpdatePayload,\n TrusthubVendorUserUpdatePayloadTrusthubVendorUser,\n} from '../../../../../../swagger/trusthub';\nimport { faUserAlt } from '@fortawesome/pro-light-svg-icons/faUserAlt';\nimport { userStatus } from '../../TrustHubUserAdminUsersPage/TrustHubVendorUserTableRow/TrustHubVendorUserTableRow';\nimport { LoadingSpinner } from '../../../../../../components/LoadingSpinner/LoadingSpinner';\n\ninterface EditUserFormData {\n companyId: TrusthubCompanyModel['id'];\n firstName: TrusthubVendorUserModel['firstName'];\n lastName: TrusthubVendorUserModel['lastName'];\n status: TrusthubVendorUserModel['status'];\n}\nexport const TrustHubUserAdminEditUserForm: React.FC = () => {\n const baseCss = 'trusthubUserAdminUserPage';\n const baseHeaderCss = baseCss + '--header';\n\n const {\n currentVendorUser: user,\n patchVendorUserStatus,\n fetchingCompaniesStatus,\n companies,\n } = useSelector((state: ApplicationState) => state.trustHub);\n\n const dispatch = useDispatch();\n const initialFormState = {\n companyId: user.trusthubCompany?.id,\n status: user.status,\n firstName: user.firstName,\n lastName: user.lastName,\n };\n\n const [formData, setFormData] = useState(initialFormState);\n const [isEditMode, setIsEditMode] = useState(false);\n\n useEffect(() => {\n isEditMode && setFormData(initialFormState);\n }, [isEditMode]);\n const handleDelete = () =>\n dispatch(\n patchTrusthubVendorUser(\n {\n vendorUserId: user.id,\n body: {\n trusthubVendorUser: {\n status: TrusthubVendorUserStatus.Suspended,\n },\n },\n },\n () => {\n dispatch(showGlobalToast('User has been successfully suspended'));\n dispatch(push(trusthubAdminPageUsersRoute));\n }\n )\n );\n const [currentCommand, command] = useState(null);\n\n const handleEdit = () => {\n setIsEditMode(true);\n };\n const handleCancel = () => {\n setFormData(initialFormState);\n setIsEditMode(false);\n };\n const handleSubmit = () => {\n const updatedFields: TrusthubVendorUserUpdatePayloadTrusthubVendorUser = {};\n if (formData.companyId !== user.trusthubCompany?.id) {\n updatedFields.trusthubCompanyId = formData.companyId;\n }\n const fieldsToCheck: (keyof Omit)[] = [\n 'status',\n 'firstName',\n 'lastName',\n ];\n type ValueOf = T[keyof T];\n fieldsToCheck.forEach(field => {\n if (formData[field] !== user[field]) {\n (updatedFields[\n field\n ] as ValueOf) =\n formData[field];\n }\n });\n dispatch(\n patchTrusthubVendorUser(\n {\n vendorUserId: user.id,\n body: {\n trusthubVendorUser: updatedFields,\n },\n },\n () => {\n setIsEditMode(false);\n dispatch(showGlobalToast('User has been successfully updated.'));\n }\n )\n );\n };\n\n const statusOptions = [\n {\n label: 'Pending',\n value: TrusthubVendorUserStatus.Pending,\n },\n {\n label: 'Approved',\n value: TrusthubVendorUserStatus.Approved,\n },\n {\n label: 'Suspended',\n value: TrusthubVendorUserStatus.Suspended,\n },\n {\n label: 'Waiting for NDA',\n value: TrusthubVendorUserStatus.WaitingForNda,\n },\n ];\n const currentVendor = useSelector(selectCurrentVendor);\n useEffect(() => {\n isEditMode &&\n dispatch(\n fetchTrustHubCompanies(\n {\n vendorIdOrDomain: currentVendor?.id,\n statuses: [TrusthubCompanyStatus.Approved],\n },\n () => {}\n )\n );\n }, [isEditMode]);\n\n const companyOptions = (companies || []).map(company => {\n return {\n label: company.name,\n value: company.id,\n };\n });\n const deleteUserCommand: CommandConfirmation = {\n title: 'Confirm Delete',\n subject: { name: user?.fullName, type: 'Action' },\n description: 'Click CONFIRM to delete (suspend) this user.',\n buttonVariant: AdoptechButtonVariant.Warning,\n onConfirm: handleDelete,\n };\n\n return (\n
\n
\n
\n
\n dispatch(push(trusthubAdminPageUsersRoute))}\n className={baseHeaderCss + '--backSectionLink'}\n icon={faAngleLeft}\n />\n
\n {user.fullName}\n
\n
\n
\n
\n command(deleteUserCommand)}\n >\n Delete User\n \n
\n
\n
\n \n
\n
\n \n User Profile\n
\n {!isEditMode && (\n
\n \n Edit\n \n
\n )}\n\n {isEditMode && (\n
\n \n Cancel\n \n \n Save\n \n
\n )}\n
\n
\n
Overview
\n\n
\n
\n
Company
\n {isEditMode && fetchingCompaniesStatus === 'loading' && (\n \n )}\n {isEditMode && fetchingCompaniesStatus !== 'loading' && (\n {\n setFormData({\n ...formData,\n companyId: option.value,\n });\n }}\n value={companyOptions.find(\n option => option.value === formData.companyId\n )}\n placeholder=\"Select a company\"\n />\n )}\n\n {!isEditMode &&
{user.trusthubCompany?.name}
}\n
\n
\n
User status
\n\n {isEditMode ? (\n {\n setFormData({\n ...formData,\n status: option.value as TrusthubVendorUserStatus,\n });\n }}\n value={statusOptions.find(\n option => option.value === formData.status\n )}\n placeholder=\"Select status\"\n />\n ) : (\n
{userStatus(user.status)}
\n )}\n
\n
\n
\n
\n
\n
\n User information\n
\n\n
\n
\n
First name
\n {isEditMode ? (\n
\n \n setFormData({\n ...formData,\n firstName: e.currentTarget.value,\n })\n }\n />\n
\n ) : (\n
{user.firstName}
\n )}\n
\n
\n
Last name
\n {isEditMode ? (\n
\n \n setFormData({\n ...formData,\n lastName: e.currentTarget.value,\n })\n }\n />\n
\n ) : (\n
{user.lastName}
\n )}\n
\n
\n
\n
\n
Email
\n {user.email}\n
\n
\n
\n command(null)}\n />\n
\n
\n
\n );\n};\n","import { sort } from '../../../../functions/sort';\nimport { ColumnSort } from '../../../../types/columnSort';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { selectSortSettings } from '../../../../selectors/selectSortSettings';\nimport { Grid } from '../../../../types/grid';\nimport { createSelector } from '@reduxjs/toolkit';\nimport { TrusthubDocumentPermissionModel } from '../../../../swagger/trusthub';\n\nconst sortVendorUserDocumentPermissions = (\n a: TrusthubDocumentPermissionModel,\n b: TrusthubDocumentPermissionModel,\n columnSort: ColumnSort\n) => {\n const typedColumn = columnSort.name as keyof TrusthubDocumentPermissionModel;\n\n return sort(a[typedColumn] || '', b[typedColumn] || '', columnSort.direction);\n};\n\nexport const selectVendorUserDocumentPermissions = createSelector(\n (state: ApplicationState) => state.trustHub.vendorUserDocumentPermissions,\n selectSortSettings(Grid.TrustHubUserAdminVendorUserDocumentPermissions),\n (permissions: TrusthubDocumentPermissionModel[], sortSetting) => {\n return [...permissions].sort((a, b) =>\n sortVendorUserDocumentPermissions(a, b, sortSetting.columnSort)\n );\n }\n);\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { TrusthubDocumentModel } from '../../../../../swagger/trusthub/models/TrusthubDocumentModel';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { selectCurrentVendor } from '../../../../../selectors/selectCurrentVendor';\nimport {\n fetchTrustHubSections,\n fetchTrustHubVendorUserDocumentPermissions,\n postTrustHubAccessRequest,\n} from '../../../store/trusthubThunks';\nimport { showGlobalToast } from '../../../../../store/global/globalSlice';\nimport AdoptechHS from '../../../../../components/AdoptechHS/AdoptechHS';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../../components/AdoptechButton/AdoptechButton';\nimport { LoadingSpinner } from '../../../../../components/LoadingSpinner/LoadingSpinner';\nimport { DocumentPermissionTableRow } from './DocumentPermissionTableRow/DocumentPermissionTableRow';\nimport './TrusthubUserAdminAddDocumentPermissionDrawer.scss';\n\nexport interface AddDocumentPermissionFormData {\n selectedDocumentsIds?: TrusthubDocumentModel['id'][];\n}\n\ninterface TrusthubUserAdminAddDocumentPermissionDrawerProps {\n onClose: () => void;\n}\n\nexport const TrusthubUserAdminAddDocumentPermissionDrawer: React.FC<\n TrusthubUserAdminAddDocumentPermissionDrawerProps\n> = ({ onClose }) => {\n const baseCss = 'trusthubUserAdminAddDocumentPermissionDrawer';\n const dispatch = useDispatch();\n const [formData, setFormData] = useState({});\n const {\n fetchingSectionsStatus,\n createAccessRequestStatus,\n sections,\n currentVendorUser: user,\n } = useSelector((state: ApplicationState) => state.trustHub);\n const currentVendor = useSelector(selectCurrentVendor);\n const dispatchSubmit = () => {\n dispatch(\n postTrustHubAccessRequest(\n {\n vendorIdOrDomain: currentVendor?.id,\n body: {\n trusthubAccessRequest: {\n trusthubVendorUserId: user.id,\n trusthubDocumentIds: formData.selectedDocumentsIds,\n },\n },\n },\n _company => {\n // reload permissions table\n dispatch(\n fetchTrustHubVendorUserDocumentPermissions({\n vendorUserId: user.id,\n })\n );\n\n dispatch(\n showGlobalToast('Access request has been successfully created')\n );\n onClose();\n }\n )\n );\n };\n\n useEffect(() => {\n dispatch(\n fetchTrustHubSections(\n { vendorIdOrDomain: currentVendor?.id, trusthubVendorUserId: user.id },\n () => {}\n )\n );\n }, []);\n\n const filteredSections = sections\n .filter(section => section.visible)\n .filter(section => section.trusthubDocuments.length > 0);\n const sectionsList = useMemo(() => {\n return filteredSections\n .sort((a, b) => a.rowOrder || 0 - b.rowOrder || 0)\n .map(section => {\n return (\n \n );\n });\n }, [sections, formData]);\n\n return (\n onClose()}\n footer={\n <>\n onClose()}\n variant={AdoptechButtonVariant.White}\n >\n Cancel\n \n \n Approve\n \n \n }\n extraClass=\"adoptechHS--medium addAccessRequestHS\"\n >\n {fetchingSectionsStatus === 'loading' ? (\n \n ) : (\n
\n {filteredSections.length > 0 ? (\n <>\n
\n {user.fullName} ({user.email}) has requested access to the\n following documents. Select the document(s) you would like to\n grant access to. Any documents not selected will have their\n access request declined.\n
\n
{sectionsList}
\n \n ) : (\n
\n There are no available documents for request.\n
\n )}\n
\n )}\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { AdoptechPanel } from '../../../../../../components/AdoptechPanel/AdoptechPanel';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport './TrustHubUserAdminDocumentPermissions.scss';\nimport { NoDataText } from '../../../../../../components/NoDataText/NoDataText';\nimport AdoptechGridTable from '../../../../../../components/AdoptechGridTable/AdoptechGridTable';\nimport { Grid } from '../../../../../../types/grid';\nimport { SortableTableHeader } from '../../../../../../components/SortableTableHeader/SortableTableHeader';\nimport { faTrash } from '@fortawesome/pro-light-svg-icons/faTrash';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n deleteTrustHubVendorUserDocumentPermission,\n fetchTrustHubVendorUserDocumentPermissions,\n} from '../../../../store/trusthubThunks';\nimport { showGlobalToast } from '../../../../../../store/global/globalSlice';\nimport { ApplicationState } from '../../../../../../types/applicationState';\nimport { LoadingSpinner } from '../../../../../../components/LoadingSpinner/LoadingSpinner';\nimport { selectVendorUserDocumentPermissions } from '../../selectVendorUserDocumentPermissions';\nimport {\n TrusthubDocumentPermissionModel,\n TrusthubDocumentPermissionModelStatusEnum,\n TrusthubVendorUserStatus,\n} from '../../../../../../swagger/trusthub';\nimport { faUserUnlock } from '@fortawesome/pro-light-svg-icons/faUserUnlock';\nimport { capitalize } from '../../../../../../functions/capitalize';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../../../components/AdoptechButton/AdoptechButton';\nimport { faPlus } from '@fortawesome/pro-light-svg-icons/faPlus';\nimport { TrusthubUserAdminAddDocumentPermissionDrawer } from '../../TrusthubUserAdminAddDocumentPermissionDrawer/TrusthubUserAdminAddDocumentPermissionDrawer';\n\nexport const TrustHubUserAdminDocumentPermissions: React.FC = () => {\n const baseCss = 'trustHubUserAdminDocumentPermissions';\n const users = useSelector(selectVendorUserDocumentPermissions);\n const dispatch = useDispatch();\n const permissions = useSelector(selectVendorUserDocumentPermissions);\n const {\n fetchingVendorUserDocumentPermissionsStatus,\n currentVendorUser: user,\n } = useSelector((state: ApplicationState) => state.trustHub);\n useEffect(() => {\n dispatch(\n fetchTrustHubVendorUserDocumentPermissions({\n vendorUserId: user.id,\n })\n );\n }, []);\n const handleDelete = (permission: TrusthubDocumentPermissionModel) => {\n dispatch(\n deleteTrustHubVendorUserDocumentPermission(\n {\n documentPermissionId: permission.id,\n },\n () =>\n dispatch(\n showGlobalToast(\n 'Document permission has been successfully removed from the company'\n )\n )\n )\n );\n };\n\n const [showAddAccessDrawer, setShowAddAccessDrawer] = useState(false);\n\n if (fetchingVendorUserDocumentPermissionsStatus === 'loading')\n return ;\n\n return (\n
\n
\n \n
\n
\n \n User Access\n
\n\n
\n {\n (\n document.getElementsByClassName(\n 'cancelUserButton'\n )[0] as HTMLButtonElement\n )?.click();\n setShowAddAccessDrawer(true);\n }}\n >\n Add Access\n \n
\n
\n\n
\n {users.length <= 0 ? (\n \n ) : (\n \n \n columnName=\"name\"\n grid={Grid.TrustHubUserAdminVendorUserDocumentPermissions}\n label=\"Asset\"\n notInTable\n />\n \n columnName=\"documentType\"\n grid={Grid.TrustHubUserAdminVendorUserDocumentPermissions}\n label=\"Type\"\n notInTable\n />\n \n columnName=\"status\"\n grid={Grid.TrustHubUserAdminVendorUserDocumentPermissions}\n label=\"Access\"\n notInTable\n />\n
Action
\n
\n }\n >\n {permissions.map(permission => {\n const { id } = permission;\n return (\n
\n
\n {permission.name}\n
\n
\n {permission.documentType}\n
\n
\n {capitalize(permission.status)}\n
\n {permission.status ===\n TrusthubDocumentPermissionModelStatusEnum.Approved ? (\n {\n e.stopPropagation();\n handleDelete(permission);\n }}\n >\n \n
\n ) : (\n
\n )}\n
\n );\n })}\n \n )}\n
\n \n {showAddAccessDrawer && (\n setShowAddAccessDrawer(false)}\n />\n )}\n \n \n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { sort } from '../../../../functions/sort';\nimport { sortByDate } from '../../../../functions/sortByDate';\nimport { ColumnSort } from '../../../../types/columnSort';\nimport { selectSortSettings } from '../../../../selectors/selectSortSettings';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { Grid } from '../../../../types/grid';\nimport { TrusthubVendorUserActivityModel } from '../../../../swagger/trusthub/models/TrusthubVendorUserActivityModel';\n\nconst sortActivities = (\n a: TrusthubVendorUserActivityModel,\n b: TrusthubVendorUserActivityModel,\n columnSort: ColumnSort\n) => {\n const typedColumn = columnSort.name as keyof TrusthubVendorUserActivityModel;\n\n if (['createdAt'].includes(typedColumn)) {\n const dateColumn = typedColumn as 'createdAt';\n return sortByDate(a[dateColumn], b[dateColumn], columnSort.direction);\n }\n\n return sort(a[typedColumn] || '', b[typedColumn] || '', columnSort.direction);\n};\n\nexport const selectVendorUserActivities = createSelector(\n (state: ApplicationState) => state.trustHub.vendorUserActivities,\n selectSortSettings(Grid.TrustHubUserAdminVendorUserActivities),\n (activities: TrusthubVendorUserActivityModel[], sortSetting) => {\n return [...activities].sort((a, b) =>\n sortActivities(a, b, sortSetting.columnSort)\n );\n }\n);\n","import React, { useEffect } from 'react';\nimport { AdoptechPanel } from '../../../../../../components/AdoptechPanel/AdoptechPanel';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport './TrustHubUserAdminVendorUserActivities.scss';\nimport { NoDataText } from '../../../../../../components/NoDataText/NoDataText';\nimport AdoptechGridTable from '../../../../../../components/AdoptechGridTable/AdoptechGridTable';\nimport { Grid } from '../../../../../../types/grid';\nimport { SortableTableHeader } from '../../../../../../components/SortableTableHeader/SortableTableHeader';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchTrustHubActivities } from '../../../../store/trusthubThunks';\nimport { LoadingSpinner } from '../../../../../../components/LoadingSpinner/LoadingSpinner';\nimport { selectVendorUserActivities } from '../../selectVendorUserActivities';\nimport { faUserClock } from '@fortawesome/pro-light-svg-icons/faUserClock';\nimport { selectCurrentVendor } from '../../../../../../selectors/selectCurrentVendor';\nimport { ApplicationState } from '../../../../../../types/applicationState';\nimport { formatLongDateTime } from '../../../../../../functions/formatLongDateTime';\nimport { TrusthubVendorUserActivityModel } from '../../../../../../swagger/trusthub/models';\n\nexport const TrustHubUserAdminVendorUserActivities: React.FC = () => {\n const baseCss = 'trustHubUserAdminVendorUserActivities';\n const activities = useSelector(selectVendorUserActivities);\n const dispatch = useDispatch();\n const vendor = useSelector(selectCurrentVendor);\n const { fetchingActivitiesStatus, currentVendorUser: user } = useSelector(\n (state: ApplicationState) => state.trustHub\n );\n useEffect(() => {\n dispatch(\n fetchTrustHubActivities(\n {\n vendorIdOrDomain: vendor.id,\n trusthubVendorUserId: user.id,\n },\n () => {}\n )\n );\n }, []);\n\n if (fetchingActivitiesStatus === 'loading') return ;\n\n return (\n
\n
\n \n
\n
\n \n User Activity\n
\n
\n\n
\n {activities.length <= 0 ? (\n \n ) : (\n \n \n columnName=\"name\"\n grid={Grid.TrustHubUserAdminVendorUserActivities}\n label=\"Name\"\n notInTable\n />\n \n columnName=\"createdAt\"\n grid={Grid.TrustHubUserAdminVendorUserActivities}\n label=\"Viewed at\"\n notInTable\n />\n
\n }\n >\n {activities.map(activity => {\n const { id } = activity;\n return (\n
\n
{activity.name}
\n
\n {formatLongDateTime(activity.createdAt) || '-'}\n
\n
\n );\n })}\n \n )}\n
\n \n
\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../../../types/applicationState';\nimport { selectCurrentVendor } from '../../../../../../selectors/selectCurrentVendor';\nimport { LoadingSpinner } from '../../../../../../components/LoadingSpinner/LoadingSpinner';\nimport { useParams } from 'react-router';\nimport { TrusthubVendorUserModel } from '../../../../../../swagger/trusthub';\nimport './TrustHubUserAdminUserPage.scss';\nimport { fetchTrustHubVendorUser } from '../../../../store/trusthubThunks';\nimport { TrustHubUserAdminEditUserForm } from '../TrustHubUserAdminEditUserForm/TrustHubUserAdminEditUserForm';\nimport { TrustHubUserAdminDocumentPermissions } from '../TrustHubUserAdminDocumentPermissions/TrustHubUserAdminDocumentPermissions';\nimport { TrustHubUserAdminVendorUserActivities } from '../TrustHubUserAdminVendorUserActivities/TrustHubUserAdminVendorUserActivities';\n\nexport const TrustHubUserAdminUserPage: React.FC = () => {\n const baseCss = 'trusthubUserAdminUserPage';\n const {\n fetchingSettingsStatus,\n currentVendorUser: user,\n fetchingCurrentVendorUserStatus,\n } = useSelector((state: ApplicationState) => state.trustHub);\n const dispatch = useDispatch();\n const vendor = useSelector(selectCurrentVendor);\n const params = useParams() as { id: TrusthubVendorUserModel['id'] };\n\n useEffect(() => {\n dispatch(fetchTrustHubVendorUser({ vendorUserId: params.id }, () => {}));\n }, [vendor.id]);\n if (\n fetchingSettingsStatus === 'loading' ||\n fetchingCurrentVendorUserStatus === 'loading' ||\n !user\n ) {\n return ;\n }\n\n return (\n
\n \n \n \n
\n );\n};\n","import { useEffect } from 'react';\nimport { useAppDispatch } from './useAppDispatch';\nimport { useSelector } from 'react-redux';\nimport { selectCurrentVendorUser } from '../selectors/selectCurrentVendorUser';\nimport { ApplicationState } from '../types/applicationState';\nimport { postChatWidgetToken } from '../store/vendors/vendorsThunks';\nimport {\n initChatWidget,\n removeChatWidget,\n} from '../functions/chatWidgetHelper';\nimport { VendorUserRoles } from '../swagger/models/VendorUserRoles';\nimport { isTrusthubAdminRoute } from '../components/Routes/Routes';\nimport { selectCurrentVendor } from '../selectors/selectCurrentVendor';\n\nconst useChatWidgetToken = () => {\n const { isInitialised } = useSelector(\n (state: ApplicationState) => state.global\n );\n const dispatch = useAppDispatch();\n const vendorUser = useSelector(selectCurrentVendorUser);\n const vendor = useSelector(selectCurrentVendor);\n const isTrusthub = isTrusthubAdminRoute();\n useEffect(() => {\n if (!isInitialised) return;\n\n if (isTrusthub) {\n removeChatWidget();\n return;\n }\n\n const fetchTokenAndInitChatWidget = async () => {\n const response = await dispatch(postChatWidgetToken()).unwrap();\n const token = response.token;\n window.hsConversationsSettings = {\n identificationEmail: vendorUser.email,\n identificationToken: token,\n };\n initChatWidget();\n };\n if (vendorUser && vendor?.id) {\n fetchTokenAndInitChatWidget();\n } else {\n initChatWidget();\n }\n }, [vendorUser?.email, isInitialised, isTrusthub, vendor?.id]);\n};\n\nexport default useChatWidgetToken;\n","import React, { useEffect } from 'react';\nimport { DataRoomTabs } from '../DataRoomTabs/DataRoomTabs';\nimport { useAppDispatch } from '../../../../hooks/useAppDispatch';\nimport { fetchEvidence } from '../../../../store/compliance/complianceThunks';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { useSelector } from 'react-redux';\nimport { LoadingSpinner } from '../../../../components/LoadingSpinner/LoadingSpinner';\nimport { DataRoomEntityModel } from '../../../../swagger';\nimport AdoptechOverflowLine from '../../../../components/AdoptechOverflowLine/AdoptechOverflowLine';\nimport { UserAvatar } from '../../../../components/UserAvatar/UserAvatar';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCloudDownloadAlt } from '@fortawesome/pro-light-svg-icons/faCloudDownloadAlt';\nimport './DataRoomEvidencePage.scss';\nimport { formatShortDate } from '../../../../functions/formatShortDate';\nimport { filesize } from 'filesize';\nimport { downloadFile } from '../../../../store/dataRoom/dataRoomThunks';\nimport { sortByDate } from '../../../../functions/sortByDate';\n\ninterface EvidenceListProps {\n evidence: DataRoomEntityModel[];\n}\n\nconst EvidenceRow: React.FC<{ evidence: DataRoomEntityModel }> = ({\n evidence,\n}) => {\n const baseCss = 'peopleTable';\n const dispatch = useAppDispatch();\n const handleDownload = (e: { stopPropagation: () => void }) => {\n e.stopPropagation();\n dispatch(downloadFile(evidence.id));\n };\n\n return (\n
\n {`${evidence.name}.${evidence.fileType}`}\n
{formatShortDate(evidence.createdAt)}
\n \n \n \n
{filesize(evidence.fileSize)}
\n
\n \n
\n
\n );\n};\n\nexport const EvidenceList: React.FC = props => {\n const baseCss = 'peopleTable';\n\n return (\n
\n {(props.evidence || []).map(evidenceItem => {\n return ;\n })}\n
\n );\n};\n\nexport const DataRoomEvidencePage: React.FC = () => {\n const dispatch = useAppDispatch();\n const { evidence, fetchEvidenceStatus } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n useEffect(() => {\n dispatch(fetchEvidence());\n }, []);\n return (\n
\n \n\n {fetchEvidenceStatus === 'loading' ? (\n \n ) : (\n \n sortByDate(a.createdAt, b.createdAt, -1)\n )}\n />\n )}\n
\n );\n};\n","import { ApplicationState } from '../types/applicationState';\n\nexport const getVendorDocuments = (state: ApplicationState) => {\n return state.vendors.documentState.vendorDocuments;\n};\n","import {\n VendorDocument,\n VendorDocumentAttestation,\n VendorDocumentExtended,\n} from '../swagger';\nimport { ColumnSort } from '../types/columnSort';\nimport { SortDirection } from '../types/sortDirection';\nimport { dateSort } from './dateSort';\nimport { sort } from './sort';\n\nexport const vendorDocumentSort = (\n a: VendorDocument | VendorDocumentExtended,\n b: VendorDocument | VendorDocumentExtended,\n columnSort: ColumnSort\n): number => {\n let direction = 1;\n if (columnSort.direction === SortDirection.Ascending) {\n direction = -1;\n }\n\n const typedColumn:\n | keyof VendorDocument\n | keyof VendorDocumentExtended\n | keyof VendorDocumentAttestation = columnSort.name as\n | keyof VendorDocument\n | keyof VendorDocumentAttestation;\n\n switch (typedColumn) {\n case 'attestationDueAt':\n return dateSort(a.attestationDueAt, b.attestationDueAt, direction);\n case 'lastAttestedAt':\n return dateSort(\n a.vendorDocumentAttestation.lastAttestedAt,\n b.vendorDocumentAttestation.lastAttestedAt,\n direction\n );\n case 'name':\n return sort(a.name.toLowerCase(), b.name.toLowerCase(), direction);\n case 'version':\n return sort(a.version, b.version, direction);\n case 'documentType':\n return sort(a.documentType, b.documentType, direction);\n case 'updatedAt':\n return dateSort(a.updatedAt, b.updatedAt, direction);\n }\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { getVendorDocuments } from '../functions/getVendorDocuments';\nimport { vendorDocumentSort } from '../functions/vendorDocumentSort';\nimport { VendorDocumentAttestationStatusEnum } from '../swagger';\nimport { Grid } from '../types/grid';\nimport { selectSortSettings } from './selectSortSettings';\n\nexport const selectArchivedDocuments = createSelector(\n getVendorDocuments,\n selectSortSettings(Grid.ArchivedDocuments),\n (vendorDocuments, sortSetting) => {\n const clonedVendorDocuments = [...vendorDocuments];\n return clonedVendorDocuments\n .filter(\n ad =>\n ad.vendorDocumentAttestation.status ===\n VendorDocumentAttestationStatusEnum.WasNotRequested ||\n ad.vendorDocumentAttestation.status ===\n VendorDocumentAttestationStatusEnum.Current\n )\n .filter(ad => ad.archived)\n .sort((a, b) => vendorDocumentSort(a, b, sortSetting.columnSort));\n }\n);\n","import { faArrowSquareUp } from '@fortawesome/pro-light-svg-icons/faArrowSquareUp';\nimport { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { canCreate } from '../../functions/access';\nimport { capitalize } from '../../functions/capitalize';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { selectArchivedDocuments } from '../../selectors/selectArchivedDocuments';\nimport { showEditOwnerModal } from '../../store/global/globalSlice';\nimport {\n deleteVendorDocument,\n unarchiveVendorDocument,\n} from '../../store/vendors/vendorsThunks';\nimport { VendorDocument } from '../../swagger';\nimport { AccessObject } from '../../types/accessObject';\nimport { ApplicationState } from '../../types/applicationState';\nimport { Grid } from '../../types/grid';\nimport { OwnerObjectType } from '../../types/OwnerObjectType';\nimport { IconButton } from '../IconButton/IconButton';\nimport { NoDataText } from '../NoDataText/NoDataText';\nimport { SortableTableHeader } from '../SortableTableHeader/SortableTableHeader';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\nimport './ArchivedDocuments.scss';\nimport { faTrash } from '@fortawesome/pro-light-svg-icons';\nimport AdoptechOverflowLine from '../AdoptechOverflowLine/AdoptechOverflowLine';\nimport AdoptechGridTable from '../AdoptechGridTable/AdoptechGridTable';\n\nconst ArchivedDocumentsRow: React.FC<{\n document: VendorDocument;\n}> = ({ document }) => {\n const canManageDocuments = canCreate(AccessObject.vendor_documents);\n\n const archivingVendorDocumentId = useSelector(\n (state: ApplicationState) =>\n state.vendors.documentState.archivingVendorDocumentId\n );\n\n const isBusy = useSelector(\n (state: ApplicationState) =>\n state.vendors.documentState.isUnarchivingVendorDocument\n );\n\n const dispatch = useDispatch();\n\n const baseTableCss = 'adoptechGridTable';\n\n return (\n
\n {document.name}\n
{document.version}
\n \n {capitalize(document.documentType)}\n \n
{formatShortDate(document.updatedAt)}
\n \n \n canManageDocuments\n ? dispatch(\n showEditOwnerModal({\n object: document,\n type: OwnerObjectType.VendorDocument,\n })\n )\n : {}\n }\n >\n \n
\n \n
\n dispatch(unarchiveVendorDocument(document))}\n tooltip=\"Unarchive\"\n />\n {canManageDocuments && (\n <>\n {\n dispatch(\n showEditOwnerModal({\n object: document,\n type: OwnerObjectType.VendorDocument,\n })\n );\n }}\n tooltip=\"Edit owner\"\n icon={faFileContract}\n />\n {\n dispatch(deleteVendorDocument(document.id));\n }}\n tooltip=\"Remove\"\n icon={faTrash}\n />\n \n )}\n
\n \n );\n};\n\nexport const ArchivedDocuments: React.FC = () => {\n const archivedDocuments = useSelector(selectArchivedDocuments);\n const baseTableCss = 'adoptechGridTable';\n\n return (\n
\n {archivedDocuments.length > 0 ? (\n \n \n columnName=\"name\"\n grid={Grid.ArchivedDocuments}\n label=\"Name\"\n />\n \n columnName=\"version\"\n grid={Grid.ArchivedDocuments}\n label=\"Version\"\n />\n \n columnName=\"documentType\"\n grid={Grid.ArchivedDocuments}\n label=\"Type\"\n />\n \n columnName=\"updatedAt\"\n grid={Grid.ArchivedDocuments}\n label=\"Last updated\"\n />\n \n columnName=\"owner\"\n grid={Grid.ArchivedDocuments}\n label=\"Owner\"\n />\n \n columnName=\"owner\"\n grid={Grid.ArchivedDocuments}\n label=\"Actions\"\n disabledSort\n />\n
\n }\n >\n {archivedDocuments.map(doc => (\n \n ))}\n \n ) : (\n \n )}\n \n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { getVendorDocuments } from '../functions/getVendorDocuments';\nimport { vendorDocumentSort } from '../functions/vendorDocumentSort';\nimport { Grid } from '../types/grid';\nimport { selectSortSettings } from './selectSortSettings';\n\nexport const selectAllDocuments = createSelector(\n getVendorDocuments,\n selectSortSettings(Grid.AllDocuments),\n (vendorDocuments, sortSetting) => {\n return [...vendorDocuments]\n .filter(vendorDoc => !vendorDoc.archived)\n .sort((a, b) => vendorDocumentSort(a, b, sortSetting.columnSort));\n }\n);\n","import { faArchive } from '@fortawesome/pro-light-svg-icons/faArchive';\nimport { faCloudDownload } from '@fortawesome/pro-light-svg-icons/faCloudDownload';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\nimport { faUserPlus } from '@fortawesome/pro-light-svg-icons/faUserPlus';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport React from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n mapShareFeaturesToAccessLevels,\n useCanCreate,\n useHasFeature,\n} from '../../functions/access';\nimport { capitalize } from '../../functions/capitalize';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { selectAllDocuments } from '../../selectors/selectAllDocuments';\nimport { showEditOwnerModal } from '../../store/global/globalSlice';\nimport { showShareModal } from '../../store/vendors/vendorsSlice';\nimport {\n archiveVendorDocument,\n fetchVendorDocumentDownload,\n} from '../../store/vendors/vendorsThunks';\nimport { ShareableType, VendorDocument } from '../../swagger';\nimport { AccessObject } from '../../types/accessObject';\nimport { Grid } from '../../types/grid';\nimport { OwnerObjectType } from '../../types/OwnerObjectType';\nimport { PdfOpenMode } from '../../types/pdfOpenMode';\nimport { MeatballMenu } from '../MeatballMenu/MeatballMenu';\nimport { NoDataText } from '../NoDataText/NoDataText';\nimport { SortableTableHeader } from '../SortableTableHeader/SortableTableHeader';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\nimport './AllDocuments.scss';\nimport { allDocumentsPageItemRoute } from '../Routes/Routes';\nimport AdoptechGridTable from '../AdoptechGridTable/AdoptechGridTable';\nimport AdoptechOverflowLine from '../AdoptechOverflowLine/AdoptechOverflowLine';\n\nexport const AllDocuments: React.FC = () => {\n const allDocuments = useSelector(selectAllDocuments);\n\n const baseTableCss = 'adoptechGridTable';\n\n return (\n
\n {allDocuments.length > 0 ? (\n \n \n columnName=\"name\"\n grid={Grid.AllDocuments}\n label=\"Name\"\n />\n \n columnName=\"version\"\n grid={Grid.AllDocuments}\n label=\"Version\"\n />\n \n columnName=\"documentType\"\n grid={Grid.AllDocuments}\n label=\"Type\"\n />\n \n columnName=\"updatedAt\"\n grid={Grid.AllDocuments}\n label=\"Last updated\"\n />\n \n columnName=\"owner\"\n grid={Grid.AllDocuments}\n label=\"Owner\"\n />\n \n columnName=\"owner\"\n disabledSort\n grid={Grid.AllDocuments}\n label=\"Actions\"\n />\n
\n }\n >\n {allDocuments.map(doc => (\n \n ))}\n \n ) : (\n \n )}\n \n );\n};\n\nconst AllDocumentsRow: React.FC<{\n doc: VendorDocument;\n}> = ({ doc }) => {\n const baseTableCss = 'adoptechGridTable';\n\n const dispatch = useDispatch();\n const canManageDocuments = useCanCreate(AccessObject.vendor_documents);\n\n return (\n
\n {doc.name}\n
{doc.version}
\n \n {capitalize(doc.documentType)}\n \n
\n {formatShortDate(doc.updatedAt)}\n
\n \n \n canManageDocuments\n ? dispatch(\n showEditOwnerModal({\n object: doc,\n type: OwnerObjectType.VendorDocument,\n })\n )\n : {}\n }\n >\n \n
\n \n
\n \n {\n dispatch(\n push(\n `${allDocumentsPageItemRoute.replace(\n ':documentId',\n doc.id\n )}?mode=${PdfOpenMode.Preview}`\n )\n );\n e.stopPropagation();\n }}\n >\n \n Preview\n \n {\n dispatch(\n showShareModal({\n shareableId: doc.id,\n shareableType: ShareableType.VendorDocument,\n accessLevels: mapShareFeaturesToAccessLevels(\n doc.access.feature\n ),\n relativePath: doc.relativePath,\n })\n );\n e.stopPropagation();\n }}\n >\n \n Share\n \n {canManageDocuments && (\n {\n dispatch(\n showEditOwnerModal({\n object: doc,\n type: OwnerObjectType.VendorDocument,\n })\n );\n e.stopPropagation();\n }}\n >\n \n Edit owner\n \n )}\n {\n dispatch(\n fetchVendorDocumentDownload({\n id: doc.id,\n successCallback: vendorDocumentDownload => {\n window.location.href = vendorDocumentDownload.document;\n },\n })\n );\n\n e.stopPropagation();\n }}\n >\n \n Download\n \n {\n dispatch(archiveVendorDocument(doc));\n e.stopPropagation();\n }}\n >\n \n Archive\n \n \n
\n \n );\n};\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n hideDeleteVendorDocumentModal,\n hideVendorDocumentDeletedToast,\n} from '../../store/vendors/vendorsSlice';\nimport { deleteVendorDocument } from '../../store/vendors/vendorsThunks';\nimport { VendorDocument } from '../../swagger/models';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { MessageToast } from '../MessageToast/MessageToast';\nimport './DeleteVendorDocumentModal.scss';\n\nexport const DeleteVendorDocumentModal: React.FC = () => {\n const {\n isDeleteVendorDocumentModalShowing,\n isDeletingVendorDocument,\n isVendorDocumentDeletedToastShowing,\n vendorDocumentIdBeingDeleted,\n vendorDocuments,\n } = useSelector((state: ApplicationState) => state.vendors.documentState);\n\n let vendorDocument: VendorDocument;\n\n if (isDeleteVendorDocumentModalShowing) {\n vendorDocument = vendorDocuments.find(\n vd => vd.id === vendorDocumentIdBeingDeleted\n );\n }\n\n const dispatch = useDispatch();\n\n return (\n \n dispatch(hideVendorDocumentDeletedToast())}\n show={isVendorDocumentDeletedToastShowing}\n >\n Your document has been successfully deleted.\n \n dispatch(hideDeleteVendorDocumentModal())}\n show={isDeleteVendorDocumentModalShowing}\n >\n Delete document\n \n
\n Are you sure you wish to delete the following document?\n
\n
\n {vendorDocument && vendorDocument.name}\n
\n
\n {vendorDocument && vendorDocument.description}\n
\n
\n \n dispatch(hideDeleteVendorDocumentModal())}\n >\n Cancel\n \n \n dispatch(deleteVendorDocument(vendorDocumentIdBeingDeleted))\n }\n variant={AdoptechButtonVariant.Primary}\n >\n DELETE\n \n \n \n
\n );\n};\n","import React, { useEffect } from 'react';\nimport { PoliciesTabs } from '../PoliciesTabs/PoliciesTabs';\nimport { AllDocuments } from '../../../components/AllDocuments/AllDocuments';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { fetchVendorDocuments } from '../../../store/vendors/vendorsThunks';\nimport { selectCurrentVendor } from '../../../selectors/selectCurrentVendor';\nimport { DeleteVendorDocumentModal } from '../../../components/DeleteVendorDocumentModal/DeleteVendorDocumentModal';\nimport { UploadDocumentModal } from '../../documents/UploadDocumentModal/UploadDocumentModal';\nimport { useParams } from 'react-router';\nimport { useQueryParams } from '../../../hooks/useQueryParams';\nimport { PdfOpenMode } from '../../../types/pdfOpenMode';\nimport { openPdfPreview } from '../../../store/global/globalSlice';\nimport { PdfPreviewEntityPaths } from '../../../functions/routePathsHelpers';\nimport { DocumentType } from '../../../constants/DocumentType';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\n\nexport const useFetchVendorDocuments = () => {\n const currentVendor = useSelector(selectCurrentVendor);\n const dispatch = useDispatch();\n const { vendorDocuments, isFetchingVendorDocuments } = useSelector(\n (state: ApplicationState) => state.vendors.documentState\n );\n\n useEffect(() => {\n dispatch(\n fetchVendorDocuments({\n vendorId: currentVendor?.id,\n queryShowHistory: true,\n })\n );\n }, [currentVendor?.id]);\n\n return {\n currentVendor,\n vendorDocuments,\n isFetchingVendorDocuments,\n };\n};\n\nexport const AllDocumentsPage: React.FC = () => {\n const isPreviewingPdf = useSelector(\n (state: ApplicationState) => state.global.isPreviewingPdf\n );\n\n const location = useSelector(\n (state: ApplicationState) => state.router.location\n );\n\n const params = useParams() as { documentId: string };\n const queryParams = useQueryParams();\n const previewMode = queryParams.get('mode') || PdfOpenMode.Preview;\n const dispatch = useDispatch();\n\n const { vendorDocuments, isFetchingVendorDocuments } =\n useFetchVendorDocuments();\n\n useEffect(() => {\n const vendorDocumentId = params.documentId;\n if (!vendorDocuments?.length || isPreviewingPdf || !vendorDocumentId) {\n return;\n }\n\n const vendorDocument = vendorDocuments.find(\n vd => vd.id === vendorDocumentId\n );\n if (!vendorDocument) {\n return;\n }\n\n dispatch(\n openPdfPreview({\n dueDate: vendorDocument.vendorDocumentAttestation.attestationDueAt,\n mode: previewMode as PdfOpenMode,\n documentType: DocumentType.Document,\n title: vendorDocument.name,\n vendorDocument: vendorDocument,\n navigateUrlOnClose: PdfPreviewEntityPaths.documents,\n })\n );\n }, [location, vendorDocuments, previewMode]);\n\n return (\n
\n \n {isFetchingVendorDocuments ? : }\n \n \n
\n );\n};\n\nexport default AllDocumentsPage;\n","import React from 'react';\nimport { PoliciesTabs } from '../PoliciesTabs/PoliciesTabs';\nimport { ArchivedDocuments } from '../../../components/ArchivedDocuments/ArchivedDocuments';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport { useFetchVendorDocuments } from '../AllDocumentsPage/AllDocumentsPage';\nimport { DeleteVendorDocumentModal } from '../../../components/DeleteVendorDocumentModal/DeleteVendorDocumentModal';\n\nexport const ArchivedDocumentsPage: React.FC = () => {\n const { isFetchingVendorDocuments } = useFetchVendorDocuments();\n\n return (\n
\n \n {isFetchingVendorDocuments ? : }\n \n
\n );\n};\n","import React from 'react';\nimport { PoliciesTabs } from '../PoliciesTabs/PoliciesTabs';\nimport PoliciesPageTables from '../PoliciesPageTables/PoliciesPageTables';\n\nexport const DraftPoliciesPage: React.FC = () => {\n return (\n
\n \n \n
\n );\n};\n\nexport default DraftPoliciesPage;\n","import { History } from 'history';\nimport React, { lazy, Suspense, useEffect, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Redirect, Route, Switch } from 'react-router';\nimport { useQueryParams } from '../../hooks/useQueryParams';\nimport { resetScrollToY } from '../../store/global/globalSlice';\nimport { initialise } from '../../store/global/globalThunks';\nimport { setCurrentVendor } from '../../store/vendors/vendorsSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport { AddOfficeAddressModal } from '../AddOfficeAddressModal/AddOfficeAddressModal';\nimport { AddTeamModal } from '../AddTeamModal/AddTeamModal';\nimport { AddUserModal } from '../AddUserModal/AddUserModal';\nimport { AgreementEditor } from '../Agreements/AgreementEditor/AgreementEditor';\nimport { ApprovalManagementModal } from '../ApprovalManagementModal/ApprovalManagementModal';\nimport { AssessmentsPage } from '../Assessments/Assessments';\nimport { AssessmentTour } from '../AssessmentTour/AssessmentTour';\nimport { Checklist } from '../Checklist/Checklist';\nimport { Checklists } from '../Checklists/Checklists';\nimport { ChecklistTemplate } from '../ChecklistTemplate/ChecklistTemplate';\nimport { ConfirmSendInvitationModal } from '../ConfirmSendInvitationModal/ConfirmSendInvitationModal';\nimport { DeleteProfileModal } from '../DeleteProfileModal/DeleteProfileModal';\nimport { Download } from '../Download/Download';\nimport { EditOwnerModal } from '../EditOwnerModal/EditOwnerModal';\nimport { Manage2FAModal } from '../Manage2FAModal/Manage2FAModal';\nimport EscrowAccountsPage from '../EscrowAccounts/EscrowAccounts';\nimport FileUploadedToast from '../FileUploadedToast/FileUploadedToast';\nimport { TestLogPage } from '../../features/compliance/tests/TestLogPage';\nimport { GlobalToast } from '../GlobalToast/GlobalToast';\nimport { Home } from '../Home/Home';\nimport { InvitationSentModal } from '../InvitationSentModal/InvitationSentModal';\nimport { LoadingScreen } from '../LoadingScreen/LoadingScreen';\nimport MainMenu from '../MainMenu/MainMenu';\nimport PageHeader from '../PageHeader/PageHeader';\nimport { PaymentLandingPage } from '../payment/PaymentLandingPage/PaymentLandingPage';\nimport { PaymentSuccessfulToast } from '../PaymentSuccessfulToast/PaymentSuccessfulToast';\nimport { PolicyEditor } from '../../features/policies/PolicyEditor/PolicyEditor';\nimport { PolicyTour } from '../PolicyTour/PolicyTour';\nimport { ShareModal } from '../ShareModal/ShareModal';\nimport { StripeSignupError } from '../StripeSignupError/StripeSignupError';\nimport { StripeSignupSuccess } from '../../features/pricing/StripeSignupSuccess/StripeSignupSuccess';\nimport { TableAnswerDeleteModal } from '../TableAnswerDeleteModal/TableAnswerDeleteModal';\nimport { TableAnswerEditModal } from '../TableAnswerEditModal/TableAnswerEditModal';\nimport { VendorRegisterPage } from '../../features/risk/vendor/VendorRegisterPage';\nimport { LegalRegisterPage } from '../../features/legalRegister/LegalRegisterPage/LegalRegisterPage';\nimport { PestelPage } from '../pestel/PestelPage/PestelPage';\nimport { AuditsPage } from '../../features/compliance/audits/AuditsPage';\nimport { AuditsTemplates } from '../../features/compliance/audits/AuditsTemplates';\nimport { AuditsEditor } from '../../features/compliance/audits/AuditsEditor';\nimport Welcome from '../Welcome/Welcome';\nimport AgreementsTemplates from '../Agreements/AgreementsTemplates/AgreementsTemplates';\nimport { RiskRegistryPage } from '../RiskRegistry/RiskRegistryPage/RiskRegistryPage';\nimport { RiskRegistryLibrary } from '../RiskRegistry/RiskRegistryLibrary/RiskRegistryLibrary';\nimport { RiskRegisterEditor } from '../RiskRegistry/RiskRegistryEditor/RiskRegisterEditor';\nimport { RiskRegistryCategoryPage } from '../RiskRegistry/RiskRegistryCategoryPage/RiskRegistryCategoryPage';\nimport classNames from 'classnames';\nimport { ReportsPage } from '../Reports/ReportsPage/ReportsPage';\nimport { ReportsPreviewPage } from '../Reports/ReportsPreviewPage/ReportsPreviewPage';\nimport { PaymentLandingPageChecker } from '../../features/pricing/PaymentLandingPageChecker/PaymentLandingPageChecker';\nimport { FrameworkRequirementsPage } from '../Frameworks/Requirements/FrameworkRequirementsPage';\nimport { SubscriptionRequiredModal } from '../../features/pricing/SubscriptionRequiredModal/SubscriptionRequiredModal';\nimport { CompanyCertificatesPreviewPage } from '../../features/companyProfile/CompanyCertificatesPreviewPage/CompanyCertificatesPreviewPage';\nimport { TrustHubUserAdminCompanyPage } from '../../features/trusthub/admin/UserAdmin/TrustHubUserAdminPage/TrustHubUserAdminCompanyPage/TrustHubUserAdminCompanyPage';\nimport { TrustHubUserAdminUserPage } from '../../features/trusthub/admin/UserAdmin/TrustHubUserAdminPage/TrustHubUserAdminUserPage/TrustHubUserAdminUserPage';\nimport useChatWidgetToken from '../../hooks/useChatWidgetToken';\n\nimport { DataRoomEvidencePage } from '../../features/compliance/dataRoom/DataRoomEvidencePage/DataRoomEvidencePage';\nimport { ArchivedDocumentsPage } from '../../features/policies/ArchivedDocumentsPage/ArchivedDocumentsPage';\nimport { AllDocumentsPage } from '../../features/policies/AllDocumentsPage/AllDocumentsPage';\nimport { DraftPoliciesPage } from '../../features/policies/DraftPoliciesPage/DraftPoliciesPage';\nimport { useIdleLogout } from '../../hooks/useIdleLogout';\nimport { selectCurrentVendorUser } from '../../selectors/selectCurrentVendorUser';\nimport { logoutUser } from '../../store/user/userThunks';\n\ninterface RoutesProps {\n history: History;\n}\n\nconst DataRoomPage = lazy(\n () => import('../../features/compliance/dataRoom/DataRoomPage/DataRoomPage')\n);\nconst TrustHubAdminPage = lazy(\n () =>\n import('../../features/trusthub/admin/TrustHubAdminPage/TrustHubAdminPage')\n);\n\nconst TrustHubAdminLayout = lazy(\n () =>\n import(\n '../../features/trusthub/admin/TrustHubAdminLayout/TrustHubAdminLayout'\n )\n);\n\nconst TrustHubUserAdminPage = lazy(\n () =>\n import(\n '../../features/trusthub/admin/UserAdmin/TrustHubUserAdminPage/TrustHubUserAdminPage'\n )\n);\n\nconst ChangePasswordModal = lazy(\n () => import('../ChangePasswordModal/ChangePasswordModal')\n);\n\nconst StartProfile = lazy(() => import('../Start/StartProfile/StartProfile'));\n\nconst StartCompany = lazy(() => import('../Start/StartCompany/StartCompany'));\nconst ManageSubscriptionPage = lazy(\n () =>\n import(\n '../../features/pricing/ManageSubscriptionPage/ManageSubscriptionPage'\n )\n);\nconst AgreementsPage = lazy(\n () => import('../Agreements/AgreementsPage/AgreementsPage')\n);\n\nconst CalendarPage = lazy(\n () => import('../../features/calendar/CalendarPage/CalendarPage')\n);\n\nconst CompanyProfilePage = lazy(\n () =>\n import(\n '../../features/companyProfile/CompanyProfilePage/CompanyProfilePage'\n )\n);\n\nconst IntegrationsPage = lazy(() => import('../Integrations/IntegrationsPage'));\n\nconst PeoplePage = lazy(\n () => import('../../features/people/PeoplePage/PeoplePage')\n);\nconst Dashboard = lazy(() => import('../Dashboard/Dashboard'));\n\nconst PoliciesPage = lazy(\n () => import('../../features/policies/PoliciesPage/PoliciesPage')\n);\nconst PdfPreviewModal = lazy(\n () => import('../PdfPreviewModal/PdfPreviewModal')\n);\n\nconst FrameworkControlsPage = lazy(\n () =>\n import(\n '../../features/compliance/controls/FrameworkControlsPage/FrameworkControlsPage'\n )\n);\nconst ControlsPage = lazy(\n () => import('../../features/compliance/controls/Controls/ControlsPage')\n);\nconst ComplianceFrameworks = lazy(\n () => import('../compliance/ComplianceFrameworks/ComplianceFrameworks')\n);\nconst ComplianceTasks = lazy(\n () => import('../compliance/ComplianceTasks/ComplianceTasks')\n);\n\nconst HelpMenu = lazy(() => import('../HelpMenu/HelpMenu'));\n\nexport const auditsPageRoute = '/r/compliance/audits';\nexport const auditStartRoute = auditsPageRoute + '/new';\nexport const agreementsPageRoute = '/r/governance/agreements';\nexport const agreementShowPage = agreementsPageRoute + '/:id';\nexport const agreementsStartRoute = agreementsPageRoute + '/new';\nexport const controlsPageRoute = '/r/compliance/controls';\nexport const controlPageRoute = controlsPageRoute + '/:id';\nexport const complianceFrameworksRoute = '/r/compliance/frameworks';\nexport const complianceControlsRoute = '/r/compliance/frameworks/:id/controls';\nexport const complianceFrameworkTasksRoute =\n '/r/compliance/frameworks/:id/checks';\nexport const complianceTasksRoute = '/r/compliance/checks';\nexport const frameworkRequirementsRoute =\n '/r/compliance/frameworks/:id/requirements';\nexport const complianceTestsRoute = '/r/compliance/tests';\nexport const dataRoomRoute = '/r/compliance/dataRoom';\nexport const dataRoomEvidenceRoute = `${dataRoomRoute}/evidence`;\nexport const reportsRoute = `${dataRoomRoute}/reports`;\nexport const reportsPreviewRoute = reportsRoute + '/:id';\n\nexport const paymentLandingPageRoute = '/r/payment-landing-page';\nexport const riskRegistryRoute = '/r/riskManagement/riskRegister';\nexport const riskRegistryStartRoute = riskRegistryRoute + '/new';\nexport const calendarRoute = '/r/calendar';\nexport const calendarItemShowRoute = '/r/calendar/:type/:id';\nexport const archivedDocumentsPageRoute = '/r/governance/archived';\n\n// TODO: remove after deploy to prod\nexport const oldAllDocumentsPageRoute = '/r/companyInformation/documents';\nexport const oldAllDocumentsPageItemRoute = `${oldAllDocumentsPageRoute}/:documentId?`;\n\nexport const allDocumentsPageRoute = '/r/governance/documents';\nexport const allDocumentsPageItemRoute = `${allDocumentsPageRoute}/:documentId?`;\n\nexport const policiesPageRoute = '/r/governance/policies';\nconst policyPageItemRoute = `${policiesPageRoute}/:vendorPolicyId`;\nexport const policyPageItemRouteURL = (id: string) =>\n policyPageItemRoute.replace(':vendorPolicyId', id);\nexport const draftPoliciesPageRoute = `${policiesPageRoute}/draft`;\nexport const governancePoliciesLibraryRoute = `${draftPoliciesPageRoute}/library`;\nexport const policyRoutes = [\n policiesPageRoute,\n allDocumentsPageRoute,\n allDocumentsPageItemRoute,\n archivedDocumentsPageRoute,\n oldAllDocumentsPageRoute,\n oldAllDocumentsPageItemRoute,\n draftPoliciesPageRoute,\n];\n\nexport const riskRegistryCategoryRoute =\n '/r/riskManagement/riskRegister/categories/:id?';\n\nexport const companyProfileRoute = '/r/companyInformation/profile';\nexport const companyProfileTabsRoute = `${companyProfileRoute}/:tabType`;\nexport const certificatesPreviewRoute =\n companyProfileRoute + '/certificates/:id';\n\nexport const manageSubscriptionRoute = '/r/subscription';\nconst portalUrl = 'https://adoptech.co.uk';\nexport const portalRoutes = {\n home: portalUrl,\n privacy: portalUrl + '/privacy-policy',\n terms: portalUrl + '/terms-of-service',\n prices: portalUrl + '/pricing/#pricingdetail',\n myDocument: portalUrl + '/my-document', // outdated URL\n};\n\nexport const trusthubAdminPageRoute = '/r/trusthub';\nexport const trusthubAdminPageRequestsRoute = '/r/trusthub/requests';\nexport const trusthubAdminPageCompanyRoute = '/r/trusthub/companies/:id';\nexport const trusthubAdminPageCompaniesRoute = '/r/trusthub/companies';\nexport const trusthubAdminPageUserRoute = '/r/trusthub/users/:id';\nexport const trusthubAdminPageUsersRoute = '/r/trusthub/users';\n\nexport const trusthubRoute = '/r/trusthub';\nexport const isTrusthubAdminRoute = () =>\n window.location.href.includes(trusthubRoute);\n\nexport const hideBottomFooterClass = 'app--content-no-explicit-padding-bottom';\nexport const externalProvidersRoutes = {\n google: '/users/auth/google_oauth2',\n microsoft: '/users/auth/azure_activedirectory_v2',\n};\nexport const welcomeRoute = '/r/welcome';\nexport const welcomeProfileRoute = welcomeRoute + '/profile';\nexport const dashboardRoute = '/r/dashboard';\nexport const signupRoute = '/r/createAccount';\nexport const scrollContainer = 'appContentScrollArea';\nexport const peopleRoute = '/r/governance/people';\nexport const peopleComplianceRoute = peopleRoute + '/compliance';\nexport const peopleChartRoute = peopleRoute + '/chart';\nconst pestelPageRoute = '/r/riskManagement/pestel';\nconst vendorRegisterRoute = '/r/riskManagement/vendorRegister';\nconst escrowPageRoute = '/r/continuity/escrow';\nexport const legalRegisterPageRoute = '/r/riskManagement/legalRegister';\nexport const riskRegistryItemRoute = riskRegistryRoute + '/:riskRegisterId';\nexport const Routes: React.FC = () => {\n const contentRef = useRef(null);\n\n const router = useSelector((state: ApplicationState) => state.router);\n const vendors = useSelector(\n (state: ApplicationState) => state.vendors.vendors\n );\n\n const vendorUser = useSelector(selectCurrentVendorUser);\n\n const {\n isInitialised,\n downloadUrl,\n scrollToY,\n backgroundColor,\n customAppContentClasses,\n isHelpMenuShowing,\n } = useSelector((state: ApplicationState) => state.global);\n const isApprovalManagementModalShowing = useSelector(\n (state: ApplicationState) => state.policies.isApprovalManagementModalShowing\n );\n\n const dispatch = useDispatch();\n\n const queryParams = useQueryParams();\n const vendorIdParam = queryParams.get('vendorId');\n\n const isInlinePdf = useSelector((state: ApplicationState) => {\n // When open inline we don't have \"preview modal\" query params, like vendorDocumentId, mode, etc\n const pdfModalAlreadyOpened = queryParams.get('basePath');\n return state.global.pdfPreviewInline && !pdfModalAlreadyOpened;\n });\n\n const isPreviewingPdfModal = useSelector(\n (state: ApplicationState) => state.global.isPreviewingPdf\n );\n\n useEffect(() => {\n if (!isInitialised) {\n dispatch(initialise());\n }\n }, [isInitialised]);\n\n useEffect(() => {\n if (router.action === 'POP') {\n return;\n }\n\n if (!contentRef.current) {\n return;\n }\n\n contentRef.current.scrollTo({ behavior: 'auto', left: 0, top: 0 });\n }, [router]);\n\n useEffect(() => {\n if (scrollToY === undefined) {\n return;\n }\n\n if (!contentRef.current) {\n return;\n }\n\n contentRef.current.scrollTo({ behavior: 'smooth', top: scrollToY });\n dispatch(resetScrollToY());\n }, [scrollToY]);\n\n useEffect(() => {\n if (vendorIdParam && vendors?.length) {\n const vendorToSet = vendors.find(vendor => vendor.id === vendorIdParam);\n dispatch(setCurrentVendor(vendorToSet));\n }\n }, [vendorIdParam, vendors]);\n\n useChatWidgetToken();\n useIdleLogout({\n afterIdle: () => {\n vendorUser?.id && dispatch(logoutUser());\n },\n });\n\n if (!isInitialised) {\n return ;\n }\n\n return (\n }>\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n {downloadUrl && }\n {isPreviewingPdfModal && !isInlinePdf && }\n \n \n \n \n \n \n \n \n {isApprovalManagementModalShowing && }\n {isHelpMenuShowing && }\n
\n
\n
\n );\n};\n","import { VendorDocumentAttestation } from '../swagger';\nimport { ColumnSort } from '../types/columnSort';\nimport { SortDirection } from '../types/sortDirection';\nimport { attestationStatusSort } from './attestationStatusSort';\nimport { sort } from './sort';\n\nexport const attestationSort = (\n a: VendorDocumentAttestation,\n b: VendorDocumentAttestation,\n columnSort: ColumnSort\n): number => {\n let direction = 1;\n if (columnSort.direction === SortDirection.Ascending) {\n direction = -1;\n }\n\n const typedColumn: keyof VendorDocumentAttestation =\n columnSort.name as keyof VendorDocumentAttestation;\n\n switch (typedColumn) {\n case 'status':\n return attestationStatusSort(a.status, b.status, direction);\n default:\n return sort(a[typedColumn], b[typedColumn], direction);\n }\n};\n","import { VendorDocumentAttestationStatusEnum } from '../swagger';\n\nexport const attestationStatusSort = (\n a: VendorDocumentAttestationStatusEnum,\n b: VendorDocumentAttestationStatusEnum,\n direction: number\n): number => {\n if (\n a === VendorDocumentAttestationStatusEnum.Requested ||\n a === VendorDocumentAttestationStatusEnum.Imminent ||\n a === VendorDocumentAttestationStatusEnum.Overdue\n ) {\n return direction;\n } else {\n return direction * -1;\n }\n};\n","import { IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { faExclamationCircle } from '@fortawesome/pro-solid-svg-icons/faExclamationCircle';\nimport { faTimesCircle } from '@fortawesome/pro-solid-svg-icons/faTimesCircle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport {\n VendorDocumentAttestation,\n VendorDocumentAttestationStatusEnum,\n} from '../../swagger';\nimport './AttestedStatus.scss';\n\nconst AttestedStatusEnum = {\n Green: 'green',\n Amber: 'amber',\n Red: 'red',\n};\n\nexport interface AttestedStatusProps {\n attestation: VendorDocumentAttestation;\n}\n\nexport const AttestedStatus: React.FC = props => {\n if (!props.attestation) {\n return null;\n }\n\n let status: string;\n if (\n props.attestation.lastAttestedAt &&\n props.attestation.status === VendorDocumentAttestationStatusEnum.Current\n ) {\n status = AttestedStatusEnum.Green;\n } else if (\n props.attestation.status ===\n VendorDocumentAttestationStatusEnum.Requested ||\n props.attestation.status === VendorDocumentAttestationStatusEnum.Imminent\n ) {\n status = AttestedStatusEnum.Amber;\n } else if (\n props.attestation.status === VendorDocumentAttestationStatusEnum.Overdue ||\n props.attestation.status === VendorDocumentAttestationStatusEnum.Expired\n ) {\n status = AttestedStatusEnum.Red;\n }\n\n const classes = classNames({\n 'attestedStatus--icon': true,\n 'attestedStatus--icon-green': status === AttestedStatusEnum.Green,\n 'attestedStatus--icon-amber': status === AttestedStatusEnum.Amber,\n 'attestedStatus--icon-red': status === AttestedStatusEnum.Red,\n });\n\n let icon: IconProp;\n\n switch (status) {\n case AttestedStatusEnum.Green:\n icon = faCheckCircle;\n break;\n case AttestedStatusEnum.Amber:\n icon = faExclamationCircle;\n break;\n case AttestedStatusEnum.Red:\n icon = faTimesCircle;\n break;\n }\n\n const getStatusText = () => {\n if (status === AttestedStatusEnum.Green) {\n return formatShortDate(props.attestation.lastAttestedAt);\n } else if (status === AttestedStatusEnum.Amber) {\n return 'Pending';\n } else {\n return 'Overdue';\n }\n };\n\n return (\n
\n {icon && (\n <>\n \n {getStatusText()}\n \n )}\n
\n );\n};\n","import React, { useMemo } from 'react';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport { useSelector } from 'react-redux';\nimport { selectAttestations } from '../../selectors/selectAttestations';\nimport {\n VendorDocumentAttestation,\n VendorDocumentExtended,\n} from '../../swagger';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { AttestedStatus } from '../AttestedStatus/AttestedStatus';\nimport './SentAttestationsTable.scss';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { NoDataText } from '../NoDataText/NoDataText';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\nimport { ApplicationState } from '../../types/applicationState';\nimport AdoptechOverflowLine from '../AdoptechOverflowLine/AdoptechOverflowLine';\nimport { selectUsers } from '../../selectors/selectUsers';\n\ninterface SentAttestationsTableProps {\n tableClass: 'smallPadding';\n attestations: VendorDocumentAttestation[];\n mode?: 'vendorDocument' | 'vendorUser';\n}\n\nexport const useSentAttestations = (\n currentDocument: VendorDocumentExtended\n) => {\n const attestations = useSelector(selectAttestations(currentDocument)) || [];\n const sentAttestations = useMemo(\n () =>\n attestations.filter(\n (attestation: VendorDocumentAttestation) =>\n attestation.attestationDueAt || attestation.lastAttestedAt\n ),\n [attestations]\n );\n\n return { sentAttestations };\n};\n\nexport const SentAttestationsTable: React.FC = ({\n tableClass,\n attestations,\n mode = 'vendorDocument',\n}) => {\n const sentAttestations = attestations;\n\n const vendorUsers = useSelector((state: ApplicationState) =>\n selectUsers(state)\n );\n\n const isVendorDocumentMode = mode === 'vendorDocument';\n const columns = isVendorDocumentMode\n ? ['People', 'Deadline', 'Status']\n : ['Policy', 'Read request deadline', 'Status'];\n\n const baseCss = 'sentAttestationsTable';\n return (\n
\n {sentAttestations?.length ? (\n \n \n \n {columns[0]}\n {columns[1]}\n {columns[2]}\n \n \n \n \n {sentAttestations?.map((attestation: VendorDocumentAttestation) => {\n const vendorUser = vendorUsers.find(\n currentVendorUser =>\n currentVendorUser.id === attestation.vendorUserId\n );\n\n return (\n \n \n {isVendorDocumentMode ? (\n \n ) : (\n \n {attestation.documentName}\n \n )}\n \n {formatShortDate(attestation.attestationDueAt)}\n \n \n \n \n \n );\n })}\n \n \n ) : (\n \n )}\n
\n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { attestationSort } from '../functions/attestationSort';\nimport { Grid } from '../types/grid';\nimport { selectSortSettings } from './selectSortSettings';\nimport { VendorDocumentExtended } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\n\nexport const selectAttestations = (vendorDocument: VendorDocumentExtended) =>\n createSelector(\n selectSortSettings(Grid.AttestationManagement),\n (state: ApplicationState) =>\n state.vendors.documentState.vendorDocumentAttestations,\n (sortSetting, attestations) => {\n const clonedAttestations = [\n ...attestations.filter(a => a.vendorDocumentId === vendorDocument?.id),\n ];\n return clonedAttestations.sort((a, b) =>\n attestationSort(a, b, sortSetting.columnSort)\n );\n }\n );\n","import { faArrowDown } from '@fortawesome/pro-light-svg-icons/faArrowDown';\nimport { faArrowUp } from '@fortawesome/pro-light-svg-icons/faArrowUp';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { setTableSort } from '../../store/global/globalSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport { Grid } from '../../types/grid';\nimport { SortDirection } from '../../types/sortDirection';\nimport './SortableTableHeader.scss';\n\ninterface SortableTableHeaderProps {\n className?: string;\n columnName: Extract;\n grid: Grid | string;\n label: string;\n notInTable?: boolean;\n disabledSort?: boolean;\n}\n\nexport const SortableTableHeader = (\n props: SortableTableHeaderProps\n): React.ReactElement | null => {\n const [hovered, setHovered] = useState(false);\n\n const sortableTableHeaderClassNames = classNames(\n 'sortableTableHeader',\n props.className,\n {\n 'sortableTableHeader--noSorting': props.disabledSort,\n }\n );\n\n let columnName: string;\n let direction: SortDirection;\n\n const existingSort = useSelector((state: ApplicationState) =>\n state.global.sortSettings.find(ss => ss.grid === props.grid)\n );\n\n if (existingSort) {\n columnName = existingSort.columnSort.name;\n direction = existingSort.columnSort.direction;\n }\n\n const isAscending =\n columnName === props.columnName && direction === SortDirection.Ascending;\n\n const isDescending =\n (columnName === props.columnName &&\n direction === SortDirection.Descending) ||\n (!isAscending && hovered);\n\n const dispatch = useDispatch();\n\n const Component = props.notInTable ? 'div' : 'th';\n\n return (\n \n dispatch(\n setTableSort({ grid: props.grid, columnName: props.columnName })\n )\n }\n >\n setHovered(true)}\n onMouseOut={() => setHovered(false)}\n >\n
{props.label}
\n {!props.disabledSort && (\n
\n {isDescending && }\n {isAscending && }\n
\n )}\n \n \n );\n};\n","import React from 'react';\nimport './StartFooter.scss';\nimport moment from 'moment/moment';\n\nexport const StartFooter: React.FC = () => {\n return (\n
\n
\n © {moment().year()} Adoptech Limited\n
\n
\n );\n};\n\nexport default StartFooter;\n","import classNames from 'classnames';\nimport React, { ForwardedRef } from 'react';\nimport Switch, { ReactSwitchProps } from 'react-switch';\nimport './ToggleSwitch.scss';\n\ninterface ToggleSwitchProps {\n checked: boolean;\n disabled?: boolean;\n label?: string;\n onChange: () => void;\n handlerStyle?: 'small';\n rightLabel?: string;\n switchStyles?: Partial;\n}\n\nexport const ToggleSwitch: React.FC = props => {\n const labelClasses = classNames({\n 'toggleSwitch--label': true,\n 'toggleSwitch--label-disabled': props.disabled,\n });\n\n const handleClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n };\n\n const switchStyles: Partial =\n props.switchStyles ||\n (props.handlerStyle === 'small'\n ? {\n width: 35,\n height: 18,\n offHandleColor: '#fff',\n onColor: '#666665',\n }\n : {\n width: 30,\n height: 12,\n handleDiameter: 20,\n offHandleColor: '#999995',\n onHandleColor: '#75bc46',\n });\n\n return (\n
\n
\n {props.label}\n
\n
\n \n
\n {props.rightLabel && (\n
\n {props.rightLabel}\n
\n )}\n
\n );\n};\n","export const palette: `#${string}`[] = [\n '#12b76a',\n '#6caa45',\n '#a8d63f',\n '#ffc700',\n '#efa82c',\n '#ea5542',\n '#e25eb9',\n '#7f58d6',\n '#02569f',\n '#4496eb',\n '#00baff',\n '#06abc1',\n];\n\nexport const getPaletteColour = (index: number): `#${string}` => {\n return palette[index];\n};\n","import { getPaletteColour, palette } from './getPaletteColour';\nimport { getHash } from './getHash';\n\nexport const getPaletteColourFromString = (input: string): `#${string}` => {\n return getPaletteColour(getHash(input, palette.length));\n};\n","export const getHash = (input: string, maxValue: number): number => {\n return (\n input\n .split('')\n .map(character => character.charCodeAt(0))\n .reduce((previous, current) => previous + current, 0) % maxValue\n );\n};\n","import { faCircle } from '@fortawesome/free-solid-svg-icons/faCircle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { getInitials } from '../../functions/getInitials';\nimport { VendorUser, VendorUserRoles } from '../../swagger';\nimport { AdoptechTooltip } from '../AdoptechTooltip/AdoptechTooltip';\nimport './UserAvatar.scss';\nimport { getPaletteColourFromString } from '../../functions/getPaletteColourFromString';\n\ninterface UserAvatarProps {\n user: VendorUser;\n size?: 'small' | 'medium' | 'large' | 'tag';\n showTooltip?: boolean;\n hideText?: boolean;\n showUserEmail?: boolean;\n initialsColor?: '#666665';\n customColor?: '#f9f9f9';\n}\n\nexport const UserAvatar: React.FC = ({\n user,\n size = 'large',\n showTooltip = false,\n hideText = false,\n showUserEmail = true,\n initialsColor = '#fff',\n customColor,\n}) => {\n if (!user) {\n return null;\n }\n const initials = getInitials({ user });\n\n const baseClass = 'userAvatar';\n\n const basesClasses = classNames(baseClass, {\n [baseClass + '--tag']: size === 'tag',\n [baseClass + '--hiddenText']: hideText,\n });\n const circleClasses = classNames(baseClass + '--circle', {\n [baseClass + '--circle__small']: size === 'small',\n [baseClass + '--circle__medium']: size === 'medium',\n [baseClass + '--circle__large']: size === 'large',\n [baseClass + '--circle__tag']: size === 'tag',\n });\n\n const nameClasses = classNames(baseClass + '--name', {\n [baseClass + '--name__small']: size === 'small',\n [baseClass + '--name__medium']: size === 'medium',\n [baseClass + '--name__large']: size === 'large',\n [baseClass + '--name__tag']: size === 'tag',\n });\n\n const colorIdentifier = user.id || user.email;\n\n const customRoleColor = (user?.roles || []).includes(\n VendorUserRoles.SecurityEditor\n )\n ? '#ea5542'\n : null;\n const color =\n customColor ||\n customRoleColor ||\n (colorIdentifier ? getPaletteColourFromString(colorIdentifier) : '#ccc'); // fallback color\n const text = (\n
\n {size !== 'tag' && (\n
\n {user.fullName}{' '}\n {size === 'medium' &&\n user.email !== user.fullName &&\n showUserEmail &&\n `(${user.email})`}\n
\n )}\n {size === 'large' && showUserEmail && (\n
{user.email}
\n )}\n {size === 'tag' && showUserEmail &&
{user.email}
}\n
\n );\n\n return (\n \n \n
\n
\n \n \n {initials}\n
\n
\n {!hideText && text}\n \n \n
\n );\n};\n","import React, { ReactElement, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getDefaultSelectionOptions } from '../../functions/getDefaultSelectionOptions';\nimport { fetchTable } from '../../store/vendors/vendorsThunks';\nimport { QuestionTableTypeEnum } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport { SelectionOption } from '../../types/selectionOption';\n\ninterface WithCountries {\n children: (countryOptions: SelectionOption[]) => ReactElement;\n}\n\nexport const WithCountries: React.FC = ({ children }) => {\n const dispatch = useDispatch();\n const isFetchingVendorTable = useSelector(\n (state: ApplicationState) => state.vendors.isFetchingVendorTable\n );\n const countryOptions = useSelector((state: ApplicationState) =>\n getDefaultSelectionOptions(QuestionTableTypeEnum.Country, state)\n );\n\n useEffect(() => {\n if (\n !countryOptions?.length &&\n !isFetchingVendorTable[QuestionTableTypeEnum.Country]\n ) {\n dispatch(fetchTable(QuestionTableTypeEnum.Country));\n }\n }, []);\n\n if (!countryOptions?.length) {\n return null;\n }\n\n return children(countryOptions);\n};\n","import React, { useEffect, useState } from 'react';\nimport './ReviewHistoryItems.scss';\nimport {\n ControlModel,\n LegalRegisterModel,\n PestelRegisterModel,\n ReviewHistoryItemModel,\n VendorsVendorIdReviewHistoryItemsGetRelatedToTypeEnum,\n} from '../../../swagger';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchReviewHistoryItems } from '../../../store/compliance/complianceThunks';\nimport { formatShortDate } from '../../../functions/formatShortDate';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { LoadingSpinner } from '../../LoadingSpinner/LoadingSpinner';\nimport { NoDataText } from '../../NoDataText/NoDataText';\nimport { UserAvatar } from '../../UserAvatar/UserAvatar';\nimport { formatLongDateTime } from '../../../functions/formatLongDateTime';\n\ninterface ReviewHistoryItemsProps {\n type: VendorsVendorIdReviewHistoryItemsGetRelatedToTypeEnum;\n title: string;\n id: ControlModel['id'] | PestelRegisterModel['id'] | LegalRegisterModel['id'];\n noCommentsMode?: boolean; // for control\n}\n\nexport const ReviewHistoryItems: React.FC = props => {\n const baseCss = 'reviewHistoryItems';\n const baseCss2 = 'reviewHistoryItems--noCommentsMode';\n\n const dispatch = useDispatch();\n const [reviewHistoryItems, setReviewHistoryItems] = useState<\n ReviewHistoryItemModel[]\n >([]);\n const isFetchingReviewHistoryItems = useSelector(\n (state: ApplicationState) => state.compliance.isFetchingReviewHistoryItems\n );\n useEffect(() => {\n dispatch(\n fetchReviewHistoryItems({\n relatedToId: props.id,\n relatedToType: props.type,\n onSuccess: items => {\n setReviewHistoryItems(items);\n },\n })\n );\n }, []);\n\n if (props.noCommentsMode)\n return (\n
\n
\n
\n
\n
{props.title}
\n
\n {isFetchingReviewHistoryItems && }\n {!isFetchingReviewHistoryItems &&\n reviewHistoryItems.length == 0 && (\n \n )}\n {!isFetchingReviewHistoryItems &&\n reviewHistoryItems.map(historyItem => {\n return (\n
\n Last reviewed by{' '}\n {' '}\n {formatLongDateTime(historyItem.createdAt)}\n
\n );\n })}\n
\n
\n
\n );\n return (\n
\n
{props.title}
\n {isFetchingReviewHistoryItems && }\n {!isFetchingReviewHistoryItems && reviewHistoryItems.length == 0 && (\n \n )}\n {!isFetchingReviewHistoryItems &&\n reviewHistoryItems.map(historyItem => {\n return (\n
\n
Comment
\n \n {historyItem.comment || 'N/A'}\n
\n\n
\n
Submitted by
\n
{historyItem.owner?.fullName}
\n
{formatShortDate(historyItem.createdAt)}
\n
\n
\n );\n })}\n \n );\n};\n","import {\n ControlCreatePayloadControl,\n ControlExtended,\n FrameworkRelation,\n ControlUpdatePayloadControl,\n FrameworkModel,\n Policy,\n TaskModel,\n VendorUser,\n ReviewStatusEnum,\n ReviewHistoryItemModel,\n VendorPolicy,\n ControlRiskModel,\n} from '../../../swagger';\nimport { AccessObject } from '../../../types/accessObject';\n\nexport const notCompliantText = 'Mark as Not Compliant';\nexport const compliantText = 'Mark as Compliant';\n\nexport enum DrawerType {\n Task,\n Control,\n Test,\n}\n\nexport interface EditControlFormProperties {\n formValid: boolean;\n formTouched: boolean;\n create: boolean;\n reviewSubmitted: boolean; // deprecated field\n}\n\nexport const minimumAssignedFrameworks = 1;\n\nexport interface ComplianceEditControlFormModel\n extends ControlExtended,\n EditControlFormProperties {}\n\nexport class EditControl implements ComplianceEditControlFormModel {\n constructor(controlExtended: ControlExtended) {\n this.formTouched = false;\n\n const control = controlExtended || EditControl.createNew();\n\n this.applicable = control.applicable;\n this.reasonForExclusion = control.reasonForExclusion;\n this.access = control.access;\n this.assignee = control.assignee;\n this.create = false;\n this.description = control.description;\n this.policies = control.policies;\n this.vendorPolicies = control.vendorPolicies;\n this.risks = control.risks;\n this.formValid = true;\n this.frameworksRelations = control.frameworksRelations\n ? [...control.frameworksRelations]\n : [];\n this.name = control.name;\n this.reviewStatus = control.reviewStatus;\n this.reviewSubmitted = false;\n this.nextReviewDate = control.nextReviewDate;\n this.lastReview = control.lastReview;\n this.tasks = control.tasks ? [...control.tasks] : [];\n this.treatmentPlan = control.treatmentPlan;\n this.helpArticleUrl = control.helpArticleUrl;\n this.id = control.id;\n }\n\n // ControlExtended\n frameworksRelations?: FrameworkRelation[];\n tasks?: TaskModel[];\n id: string;\n name: string;\n description: string;\n descriptionAsHtml: string;\n treatmentPlan?: string;\n treatmentPlanAsHtml?: string;\n helpArticleUrl?: string;\n applicable: boolean;\n policies: Policy[];\n vendorPolicies?: VendorPolicy[];\n risks?: ControlRiskModel[];\n assignee?: VendorUser;\n frameworks?: FrameworkModel[];\n reviewStatus?: ReviewStatusEnum;\n nextReviewDate?: string;\n lastReview?: ReviewHistoryItemModel;\n createdAt: string;\n updatedAt: string;\n reasonForExclusion?: string;\n access?: ControlExtended['access'];\n // ControlExtended\n\n // EditControlFormProperties\n formValid: boolean;\n formTouched: boolean;\n create: boolean;\n reviewSubmitted: boolean;\n // EditControlFormProperties\n\n simpleObject = () => {\n return {\n formValid: this.formValid,\n formTouched: this.formTouched,\n create: this.create,\n reviewSubmitted: this.reviewSubmitted,\n\n frameworksRelations: this.frameworksRelations\n ? [...this.frameworksRelations]\n : [],\n tasks: this.tasks ? [...this.tasks] : [],\n id: this.id,\n name: this.name,\n description: this.description,\n descriptionAsHtml: '',\n treatmentPlan: this.treatmentPlan,\n treatmentPlanAsHtml: '',\n helpArticleUrl: this.helpArticleUrl,\n applicable: this.applicable,\n assignee: this.assignee,\n frameworks: this.frameworks ? [...this.frameworks] : [],\n policies: this.policies ? [...this.policies] : [],\n vendorPolicies: this.vendorPolicies ? [...this.vendorPolicies] : [],\n reviewStatus: this.reviewStatus,\n nextReviewDate: this.nextReviewDate,\n lastReview: this.lastReview,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n reasonForExclusion: this.reasonForExclusion,\n access: this.access,\n risks: this.risks ? [...this.risks] : [],\n };\n };\n\n static createNew = () => {\n return {\n formValid: false,\n formTouched: false,\n create: true,\n reviewSubmitted: false,\n frameworksRelations: [] as FrameworkRelation[],\n tasks: [] as TaskModel[],\n id: '',\n name: '',\n description: '',\n descriptionAsHtml: '',\n treatmentPlan: '',\n treatmentPlanAsHtml: '',\n helpArticleUrl: '',\n applicable: true,\n assignee: {},\n frameworks: [] as FrameworkModel[],\n policies: [] as Policy[],\n vendorPolicies: [] as VendorPolicy[],\n risks: [] as ControlRiskModel[],\n nextReviewDate: '',\n lastReview: null as ReviewHistoryItemModel,\n createdAt: '',\n updatedAt: '',\n reasonForExclusion: '',\n access: null as ControlExtended['access'],\n reviewStatus: ReviewStatusEnum.AwaitingReview,\n reviewFrequency: null as any,\n };\n };\n}\n\nexport interface ComplianceFilterPayload {\n assigneeId?: string;\n status?: string;\n applicable?: string;\n}\n\nconst getPayload = (editControl: ComplianceEditControlFormModel) => {\n return {\n name: editControl.name,\n description: editControl.description,\n treatmentPlan: editControl.treatmentPlan,\n helpArticleUrl: editControl.helpArticleUrl,\n assigneeId: editControl.assignee?.id,\n nextReviewDate: editControl.nextReviewDate,\n reviewStatus: editControl.reviewStatus,\n tasksIds: editControl.tasks?.map((t: TaskModel) => t.id),\n policyCodes: (editControl.policies || []).map(policy => policy.code),\n vendorPolicyIds: (editControl.vendorPolicies || []).map(\n vendorPolicy => vendorPolicy.id\n ),\n frameworksRelations: editControl.frameworksRelations?.map(fwr => {\n return {\n controlCategoryId: fwr.controlCategory?.id,\n annexRef: fwr.annexRef,\n };\n }),\n applicable: editControl.applicable,\n reasonForExclusion: editControl.reasonForExclusion,\n risksIds: editControl.risks?.map(risk => risk.id),\n };\n};\n\nexport const createPayload = (\n editControl: ComplianceEditControlFormModel\n): ControlCreatePayloadControl => {\n return getPayload(editControl);\n};\n\nexport const updatePayload = (\n editControl: ComplianceEditControlFormModel\n): ControlUpdatePayloadControl => {\n return getPayload(editControl) as ControlUpdatePayloadControl;\n};\n","export const DataRoomMoveEntitiesTabsInfo: Record = {\n selectFolder: {\n id: 'selectFolder',\n css: 'selectFolder',\n title: 'Select folder',\n headerText: 'Move to folder',\n description: 'Move to existing folder.',\n },\n};\n","import complianceImage from 'images/paymentLandingPage/Compliance.svg';\nimport assessmentsImage from 'images/paymentLandingPage/Assessments.svg';\nimport checklistsImage from 'images/paymentLandingPage/Checklists.svg';\nimport escrowImage from 'images/paymentLandingPage/Escrow.svg';\nimport dataRoomImage from 'images/paymentLandingPage/DataRoom.svg';\nimport vendorRegisterImage from 'images/paymentLandingPage/VendorRegister.svg';\nimport legalRegisterImage from 'images/paymentLandingPage/LegalRegister.svg';\nimport pestelImage from 'images/paymentLandingPage/PESTEL.svg';\nimport auditsImage from 'images/paymentLandingPage/Audits.svg';\nimport riskRegisterImage from 'images/paymentLandingPage/RiskRegister.svg';\nimport reportsImage from 'images/paymentLandingPage/Reports.svg';\n\nimport { VendorProductIndexFeatures } from '../../../swagger/models/VendorProductIndexFeatures';\n\nexport interface PaymentLandingPageConfig {\n title: string;\n description: string;\n planInfo: string;\n ctaText: string;\n image?: any;\n}\n\nexport const subscriptionOptionsText = 'SEE SUBSCRIPTION OPTIONS';\n\ntype landingConfig = Record<\n keyof VendorProductIndexFeatures,\n PaymentLandingPageConfig\n>;\n\nexport const paymentLandingPageConfig: landingConfig = {\n assessments: {\n title: 'Vendor risk management',\n description:\n 'Say hello to streamlined third-party risk assessments and goodbye to endless emails and spreadsheets. Assess and audit the data security and governance posture of your vendors to ensure they meet your standards. Demonstrate to your clients that your vendors, their 4th parties, adequately manage and mitigate cyber and information security risk.',\n planInfo:\n 'Our Assessment services require a Professional or Enterprise subscription.',\n ctaText: subscriptionOptionsText,\n image: assessmentsImage,\n },\n\n vendorRegister: {\n title: 'Vendor register',\n description:\n 'Standardise your third party risk management with all your vendors in one place. Assess their risk profile, track their contracts, understand critical dependencies, assign an owner, and prioritise actions to manage their risk to your company.',\n planInfo:\n 'Our Vendor register requires a Professional or Enterprise subscription.',\n ctaText: subscriptionOptionsText,\n image: vendorRegisterImage,\n },\n\n legalRegister: {\n title: 'Legal register',\n description:\n 'Ensure your company is up to date with all applicable legislation and regulatory requirements for the jurisdictions that it operates in. Track your compliance, assign owners and set review dates.',\n planInfo:\n 'Our Legal register requires a Professional or Enterprise subscription.',\n ctaText: subscriptionOptionsText,\n image: legalRegisterImage,\n },\n\n pestel: {\n title: 'Pestel',\n description:\n 'Scan the Political, Economic, Social, Technological, Legal and Environmental risks and opportunities your business faces to ensure you are focusing time in the right areas.',\n planInfo:\n 'Our PESTEL register requires a Professional or Enterprise subscription.',\n ctaText: subscriptionOptionsText,\n image: pestelImage,\n },\n\n audits: {\n title: 'Audits',\n description:\n 'Conduct internal audits to check that your controls are meeting your company’s requirements, the requirements of relevant certification specifications, and that they are being effectively implemented and maintained.',\n planInfo:\n 'Audits require a Professional or Enterprise subscription.',\n ctaText: subscriptionOptionsText,\n image: auditsImage,\n },\n\n riskRegister: {\n title: 'Risk register',\n description:\n 'Continually assess and manage your company’s information security risks, raise actions and assign an owner, set review dates and prioritise those actions to safeguard your company’s information assets.',\n planInfo:\n 'Our Risk register requires a Professional or Enterprise subscription.',\n ctaText: subscriptionOptionsText,\n image: riskRegisterImage,\n },\n\n complianceFrameworks: {\n title: 'Simplifying information security compliance',\n description:\n 'Build trust, credibility and close deals faster by preparing for and maintaining industry standards such as ISO 27001 & ISO 9001.',\n planInfo:\n 'Our Compliance services requires a Professional or Enterprise subscription.',\n ctaText: 'REQUEST A DEMO',\n image: complianceImage,\n },\n\n controls: {\n title: 'Simplifying information security compliance',\n description:\n 'Build trust, credibility and close deals faster by preparing for and maintaining industry standards such as ISO 27001 & ISO 9001.',\n planInfo:\n 'Our Compliance services requires a Professional or Enterprise subscription.',\n ctaText: subscriptionOptionsText,\n image: complianceImage,\n },\n tasks: {\n title: 'Simplifying information security compliance',\n description:\n 'Build trust, credibility and close deals faster by preparing for and maintaining industry standards such as ISO 27001 & ISO 9001.',\n planInfo:\n 'Our Compliance services requires a Professional or Enterprise subscription.',\n ctaText: subscriptionOptionsText,\n image: complianceImage,\n },\n\n checklists: {\n title: 'Checklists',\n description:\n 'Complete repetitive tasks quickly, efficiently and with fewer mistakes.GDPR, On-boarding, Off-boarding and BCP checklists ready-made for software companies.',\n planInfo: 'Our Checklist services requires subscription',\n ctaText: subscriptionOptionsText,\n image: checklistsImage,\n },\n\n dataRoom: {\n title: 'Data room',\n description:\n 'Accelerate audits, due-diligence and other external assessments by collating all the information needed in one secure platform.',\n planInfo:\n 'Our Data Security Room services requires subscription',\n ctaText: subscriptionOptionsText,\n image: dataRoomImage,\n },\n\n escrow: {\n title: 'Cloud continuity and code escrow service',\n description:\n 'Protect your code, reputation and customers with source code and credential escrow. Offer as part of your service or on demand for your customers.',\n planInfo: '',\n ctaText: subscriptionOptionsText,\n image: escrowImage,\n },\n\n policies: {\n title: 'Policies',\n description: 'Our Policies services requires subscription',\n planInfo: '',\n ctaText: subscriptionOptionsText,\n image: dataRoomImage,\n },\n\n agreements: {\n title: 'Agreements',\n description: 'Our Agreements services requires subscription',\n planInfo: '',\n ctaText: subscriptionOptionsText,\n image: dataRoomImage,\n },\n dashboard: {\n title: 'Dashboard',\n description: 'Our Dashboard services requires subscription',\n planInfo: '',\n ctaText: subscriptionOptionsText,\n image: dataRoomImage,\n },\n calendar: {\n title: 'Calendar',\n description: 'Our Calendar services requires subscription',\n planInfo: '',\n ctaText: subscriptionOptionsText,\n image: dataRoomImage,\n },\n people: {\n title: 'People',\n description: 'Our People services requires subscription',\n planInfo: '',\n ctaText: subscriptionOptionsText,\n image: dataRoomImage,\n },\n profile: {\n title: 'Profile',\n description: 'Profile management requires subscription',\n planInfo: '',\n ctaText: subscriptionOptionsText,\n image: dataRoomImage,\n },\n companyDocuments: {\n title: 'Company Documents',\n description: 'Company Documents requires subscription',\n planInfo: '',\n ctaText: subscriptionOptionsText,\n image: dataRoomImage,\n },\n reports: {\n title: 'Reports',\n description:\n 'Create tailored summary reports to efficiently share information with your team and auditors.',\n planInfo:\n 'Reports are available with a Professional or Enterprise subscription.',\n ctaText: subscriptionOptionsText,\n image: reportsImage,\n },\n\n integrations: {\n title: 'Integrations',\n description: 'Integrations requires subscription',\n planInfo: '',\n ctaText: subscriptionOptionsText,\n image: dataRoomImage,\n },\n};\n","import classNames from 'classnames';\nimport { Interweave } from 'interweave';\nimport React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { openChatWidget } from '../../../functions/chatWidgetHelper';\nimport {\n setCustomAppContentClasses,\n setPageHeaderLabel,\n} from '../../../store/global/globalSlice';\nimport { VendorProductIndexFeatures } from '../../../swagger';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../AdoptechButton/AdoptechButton';\nimport './PaymentLandingPage.scss';\nimport {\n paymentLandingPageConfig,\n subscriptionOptionsText,\n} from './paymentLandingPageConfig';\nimport { hideBottomFooterClass } from '../../Routes/Routes';\n\nexport const productTitles: Record = {\n agreements: 'Agreements',\n checklists: 'Checklists',\n policies: 'Policies',\n assessments: 'Assessments',\n vendorRegister: 'Vendor Register',\n legalRegister: 'Legal Register',\n complianceFrameworks: 'Compliance',\n dataRoom: 'Data Room',\n pestel: 'Pestel',\n audits: 'Audits',\n riskRegister: 'Risk Register',\n integrations: 'Integrations',\n reports: 'Reports',\n people: 'People',\n profile: 'Profile',\n calendar: 'Calendar',\n companyDocuments: 'Company Documents',\n escrow: 'Escrow',\n controls: 'Controls',\n tasks: 'Checks',\n dashboard: 'Dashboard',\n};\n\ninterface ProductLandingPageProps {\n fromProduct?: keyof VendorProductIndexFeatures;\n onClick?(): void;\n}\n\nexport const PaymentLandingPage: React.FC = ({\n fromProduct,\n onClick,\n}) => {\n const from = fromProduct; // Deprecated, not used now: || (queryParams.get('from') as ProductLandingPageProps['fromProduct']);\n const config = paymentLandingPageConfig[from];\n const baseCss = 'paymentLandingPage';\n\n const dispatch = useDispatch();\n useEffect(() => {\n dispatch(setPageHeaderLabel(productTitles[from]));\n dispatch(setCustomAppContentClasses([hideBottomFooterClass]));\n return () => {\n dispatch(setCustomAppContentClasses());\n };\n }, [from]);\n\n return (\n
\n
{config.title}
\n
{config.description}
\n\n \n {\n if (config.ctaText === subscriptionOptionsText)\n onClick ? onClick() : alert('TODO: investigate this code');\n else {\n openChatWidget();\n }\n }}\n >\n {config.ctaText}\n \n {config.planInfo && (\n
\n \n
\n )}\n
\n\n
\n \n
\n \n );\n};\n","export enum DocumentType {\n Policy = 'policy',\n Agreement = 'agreement',\n Assessment = 'assessment',\n Checklist = 'checklist',\n Document = 'document',\n ComplianceReport = 'compliance',\n AgreementSignatory = 'agreement-signatory',\n Audit = 'audit',\n RiskReport = 'risk_report',\n Report = 'report',\n Certificate = 'certificate',\n}\n","import { useDispatch, useSelector } from 'react-redux';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport React, { useEffect, useRef, useState } from 'react';\nimport AdoptechHS from '../../../components/AdoptechHS/AdoptechHS';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { fetchVendorActions } from '../store/calendarThunks';\nimport {\n CalendarItemModel,\n CalendarItemModelStatusEnum,\n LegalRegisterModel,\n PestelRegisterModel,\n VendorActionModel,\n VendorActionModelStatusEnum,\n} from '../../../swagger';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { Lozenge } from '../../../components/Lozenge/Lozenge';\nimport '../CalendarPage/CalendarPageTable.scss';\nimport './CalendarHS.scss';\nimport { calendarRoute } from '../../../components/Routes/Routes';\nimport { push } from 'connected-react-router';\nimport { Grid } from '../../../types/grid';\nimport { selectSortSettings } from '../../../selectors/selectSortSettings';\nimport { sortCalendarItems } from '../selectors/selectCalendarHSItems';\nimport { showGlobalToast } from '../../../store/global/globalSlice';\nimport {\n calendarItemRoute,\n CalendarItemsList,\n} from '../CalendarItemsList/CalendarItemsList';\n\ninterface CalendarHSProps {\n onClose: () => void;\n title: string;\n registerId: LegalRegisterModel['id'] | PestelRegisterModel['id'];\n registerType: 'LegalRegister' | 'PestelRegister';\n}\n\nexport const mapVendorActionToItem = (\n vendorAction: VendorActionModel\n): CalendarItemModel => {\n const mapStatus = (\n status: VendorActionModelStatusEnum\n ): CalendarItemModelStatusEnum => {\n if (status === VendorActionModelStatusEnum.Completed)\n return CalendarItemModelStatusEnum.Completed;\n if (status === VendorActionModelStatusEnum.Overdue)\n return CalendarItemModelStatusEnum.Overdue;\n return CalendarItemModelStatusEnum.Pending;\n };\n return {\n id: vendorAction.id,\n description: vendorAction.description,\n type: 'VendorAction',\n name: vendorAction.name,\n date: vendorAction.dueDate,\n status: mapStatus(vendorAction.status),\n owner: vendorAction.owner,\n eventType: vendorAction.actionType,\n };\n};\n\nexport const CalendarHS: React.FC = ({\n title,\n registerId,\n registerType,\n onClose,\n}) => {\n const baseCss = 'calendarHS';\n const drawerBackgroundRef = useRef();\n const dispatch = useDispatch();\n const isLoading = useSelector(\n (state: ApplicationState) => state.calendar.isFetchingVendorActions\n );\n const [items, setItems] = useState(null);\n\n const sortSetting = useSelector(selectSortSettings(Grid.Calendar));\n const sortedItems = (items || []).sort((a, b) =>\n sortCalendarItems(a, b, sortSetting.columnSort)\n );\n useEffect(() => {\n const onSuccess = (result: VendorActionModel[]) => {\n const calendarItems = result.map(vendorAction =>\n mapVendorActionToItem(vendorAction)\n );\n setItems(calendarItems);\n };\n dispatch(fetchVendorActions(registerId, registerType, onSuccess));\n }, []);\n return (\n \n drawerBackgroundRef.current.click()}\n variant={AdoptechButtonVariant.White}\n >\n Cancel\n \n \n Done\n \n \n }\n extraClass=\"adoptechHS--medium\"\n >\n {isLoading ? (\n \n ) : (\n
\n
\n
\n Actions \n
\n
\n dispatch(push(calendarRoute))}\n >\n Go to Actions & Events Calendar\n \n
\n
\n \n
\n )}\n \n );\n};\n\ninterface CalendarHSListProps {\n items: CalendarItemModel[];\n showAllItems?: boolean;\n extraClass?: 'wide-table';\n}\n\nexport const CalendarHSList: React.FC = props => {\n const dispatch = useDispatch();\n const currentVendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n\n if (props.items.length === 0) {\n return (\n
There are no actions created.
\n );\n }\n\n return (\n {\n const showCalendarRoute = calendarItemRoute(item, currentVendorId);\n dispatch(push(showCalendarRoute));\n }}\n showAllItems={props.showAllItems}\n extraClass={props.extraClass}\n showTooltip={false}\n />\n );\n};\n","import { CalendarItemModel } from '../../../swagger/models/CalendarItemModel';\nimport React from 'react';\nimport { Grid } from '../../../types/grid';\nimport { NoDataText } from '../../../components/NoDataText/NoDataText';\nimport AdoptechGridTable from '../../../components/AdoptechGridTable/AdoptechGridTable';\nimport { SortableTableHeader } from '../../../components/SortableTableHeader/SortableTableHeader';\nimport classNames from 'classnames';\nimport {\n isAction,\n isCorrectiveAction,\n isEvent,\n isIncident,\n} from '../selectors/selectCalendarHSItems';\nimport { completedStatus, overdueStatus } from '../CalendarPage/CalendarPage';\nimport { AdoptechTooltip } from '../../../components/AdoptechTooltip/AdoptechTooltip';\nimport { formatShortDate } from '../../../functions/formatShortDate';\nimport moment from 'moment';\nimport AdoptechOverflowLine from '../../../components/AdoptechOverflowLine/AdoptechOverflowLine';\nimport { UserAvatar } from '../../../components/UserAvatar/UserAvatar';\nimport { capitalize } from '../../../functions/capitalize';\nimport { ShareableType, VendorEventEventType } from '../../../swagger';\nimport { eventTypes } from '../EditEventModal/EditEventModal';\nimport { MeatballMenu } from '../../../components/MeatballMenu/MeatballMenu';\nimport { Dropdown } from 'react-bootstrap';\nimport { showShareModal } from '../../../store/vendors/vendorsSlice';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { calendarRoute } from '../../../components/Routes/Routes';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faLink } from '@fortawesome/pro-light-svg-icons/faLink';\nimport { ApplicationState } from '../../../types/applicationState';\n\nconst tooltipText = (item: CalendarItemModel) => {\n if (isAction(item)) return 'Action';\n if (isEvent(item)) return `Event: ${eventTypeValueToLabel(item.eventType)}`;\n if (isCorrectiveAction(item)) return 'Corrective Action';\n if (isIncident(item)) return 'Incident';\n return 'Unknown';\n};\n\nconst eventTypeValueToLabel = (itemEventType: VendorEventEventType) =>\n eventTypes.find(eventType => eventType[1] === itemEventType)?.[0] ||\n itemEventType\n .split('_')\n .map(word => capitalize(word))\n .join(' ');\n\nexport const calendarItemClass = (item: CalendarItemModel) => {\n if (isEvent(item)) return 'event';\n if (isAction(item)) return 'action';\n if (isCorrectiveAction(item)) return 'corrective-action';\n if (isIncident(item)) return 'incident';\n return 'unknown';\n};\n\nexport const calendarItemRoute = (\n item: CalendarItemModel,\n currentVendorId?: string\n) => {\n const itemType = calendarItemClass(item);\n const pluralizedType = itemType === 'unknown' ? itemType : `${itemType}s`;\n\n let uri = `${calendarRoute}/${pluralizedType}/${item.id}`;\n if (currentVendorId) uri += `?vendorId=${currentVendorId}`;\n return uri;\n};\n\nexport const CalendarItemsList: React.FC<{\n items: CalendarItemModel[];\n onClick(item: CalendarItemModel): void;\n showAllItems: boolean;\n showTooltip: boolean;\n noDataText?: string;\n gridName?: string;\n extraClass?: 'wide-table';\n}> = ({\n items,\n onClick,\n showTooltip,\n showAllItems,\n noDataText,\n gridName,\n extraClass,\n}) => {\n const dispatch = useDispatch();\n const currentVendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n if (items.length < 1)\n return (\n \n );\n const baseCss = 'calendarPageTable';\n\n const handleShare = (\n e: { stopPropagation: () => void },\n item: CalendarItemModel\n ) => {\n e.stopPropagation();\n dispatch(\n showShareModal({\n shareableId: item.id,\n shareableType: ShareableType.VendorDocument,\n showOnlyGetLink: true,\n accessLevels: [],\n relativePath: calendarItemRoute(item, currentVendorId),\n })\n );\n };\n return (\n
\n
\n \n \n columnName=\"date\"\n grid={gridName || Grid.Calendar}\n label=\"Deadline\"\n notInTable\n />\n\n {showAllItems &&
Owner
}\n \n columnName=\"name\"\n grid={gridName || Grid.Calendar}\n label=\"Item\"\n notInTable\n />\n
\n
\n }\n >\n {items.map(item => {\n return (\n onClick(item)}\n >\n \n
\n \n
\n
{formatShortDate(item.date)}
\n
\n {item.date ? moment(item.date).format('dddd') : null}\n
\n
\n {showAllItems && (\n \n {item.owner && (\n \n )}\n \n )}\n
\n
{item.name}
\n
\n {item.description}\n
\n
\n \n handleShare(e, item)}\n >\n \n Get link\n \n \n \n );\n })}\n \n \n \n );\n};\n","import React from 'react';\nimport { useCanFeature } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { AdoptechPanel } from '../../../components/AdoptechPanel/AdoptechPanel';\nimport { useBackground } from '../../../hooks/useBackground';\nimport { setCalendarFilters } from '../store/calendarSlice';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n AdoptechDatePicker,\n getFutureDate,\n} from '../../../components/AdoptechDatePicker/AdoptechDatePicker';\nimport moment from 'moment';\nimport { AdoptechCheckbox } from '../../../components/AdoptechCheckbox/AdoptechCheckbox';\nimport { Dropdown } from 'react-bootstrap';\nimport { AdoptechDropdownToggle } from '../../../components/AdoptechDropdownToggle/AdoptechDropdownToggle';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport './CalendarHeader.scss';\nimport { useAdoptechDebounce } from '../../../hooks/useAdoptechDebounce';\nimport { fetchCalendarItems } from '../store/calendarThunks';\nimport { calendarState } from '../store/calendarState';\nimport { selectCurrentVendorUser } from '../../../selectors/selectCurrentVendorUser';\nimport classNames from 'classnames';\nimport { AdoptechTooltip } from '../../../components/AdoptechTooltip/AdoptechTooltip';\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus';\nimport { SelectionOption } from '../../../types/selectionOption';\nimport { AdoptechReactSelect } from '../../../components/AdoptechReactSelect/AdoptechReactSelect';\nimport { reactSelectLightStyle } from '../../../functions/reactSelectCustomTheme';\nimport { CurrentCalendarItem } from '../CalendarPage/CalendarPage';\n\ninterface CalendarHeaderProps {\n setShowEditActionModal: React.Dispatch>;\n setShowEditEventModal: React.Dispatch>;\n setShowCorrectiveActionModal: React.Dispatch>;\n setShowIncidentModal: React.Dispatch>;\n setCurrentCalendarItem: (value: CurrentCalendarItem) => void;\n}\n\ninterface AuditScheduleTooltipProps {\n identifier: string;\n isButton?: boolean;\n showTooltip: boolean;\n}\nconst AuditScheduleTooltip: React.FC<\n React.PropsWithChildren\n> = props => {\n const text = `Return to the Actions & Events View Mode to ${\n props.isButton ? 'use this menu' : 'change this field'\n }`;\n return (\n \n
{props.children}
\n \n );\n};\nexport const CalendarHeader: React.FC = ({\n setShowEditEventModal,\n setShowEditActionModal,\n setShowCorrectiveActionModal,\n setShowIncidentModal,\n setCurrentCalendarItem,\n}) => {\n const baseCss = 'calendarHeader';\n const dispatch = useDispatch();\n const canManageCalendar = useCanFeature(AccessObject.calendar_manage);\n\n const {\n filters,\n filters: { viewMode, startPeriod, showMyItems, showCompleted, endPeriod },\n } = useSelector((state: ApplicationState) => state.calendar);\n useBackground('grey');\n const checkWithDebounce = useAdoptechDebounce();\n const currentVendorUser = useSelector(selectCurrentVendorUser);\n const updateFilters = (filter: any) => {\n const filtersPayload: calendarState['filters'] = {\n ...filters,\n ...filter,\n page: 1,\n };\n dispatch(setCalendarFilters(filtersPayload));\n checkWithDebounce(() => {\n dispatch(\n fetchCalendarItems({\n filters: filtersPayload,\n currentVendorUserId: currentVendorUser.id,\n })\n );\n });\n };\n const isAuditScheduleMode = viewMode === 'audit_schedule';\n const showCompletedFilter =\n viewMode === 'actions_and_events' ||\n viewMode === 'corrective_actions' ||\n viewMode === 'incident_log';\n const startDeadlines = [\n { label: '3 months from today', value: getFutureDate(3) },\n { label: '6 months from today', value: getFutureDate(6) },\n { label: '1 year from today', value: getFutureDate(12) },\n { label: '2 years from today', value: getFutureDate(24) },\n ];\n\n const endMinDate = (startPeriod ? moment(startPeriod) : moment())\n .endOf('day')\n .toDate();\n const endMaxDate = moment().endOf('day').add(5, 'years').toDate();\n\n type ViewModeOption = {\n label: string;\n value: calendarState['filters']['viewMode'];\n };\n\n const viewModeOptions: ViewModeOption[] = [\n { label: 'Actions & Events', value: 'actions_and_events' },\n { label: 'Audit Schedule', value: 'audit_schedule' },\n { label: 'Incident log', value: 'incident_log' },\n { label: 'Corrective Actions', value: 'corrective_actions' },\n ];\n\n const handleViewModeChange = (option: SelectionOption) =>\n updateFilters({ viewMode: option.value });\n\n const currentViewMode = viewModeOptions.find(\n option => option.value === viewMode\n );\n return (\n
\n \n
\n
View Mode
\n
\n \n
\n
\n
\n
\n
Start Period
\n\n {\n updateFilters({\n startPeriod: moment().toJSON(),\n endPeriod: moment(date).toJSON(),\n });\n }}\n onDateSelect={d => {\n // Edge case - if select start date greater than end date\n if (moment(d) > moment(endPeriod)) {\n updateFilters({\n startPeriod: moment(d).toJSON(),\n endPeriod: moment(d).toJSON(),\n });\n return;\n }\n updateFilters({ startPeriod: moment(d).toJSON() });\n }}\n >\n
\n
\n
End Period
\n {\n updateFilters({ endPeriod: moment(d).toJSON() });\n }}\n deadLines={[]}\n popperPlacement=\"bottom-start\"\n minDate={endMinDate}\n maxDate={endMaxDate}\n >\n
\n
\n
\n
Owner
\n
\n {\n updateFilters({ showMyItems: true });\n }}\n className={showMyItems ? 'active' : ''}\n >\n My Items\n
\n {\n updateFilters({ showMyItems: false });\n }}\n >\n All Items\n
\n
\n
\n {showCompletedFilter && (\n
\n
\n {\n updateFilters({ showCompleted: value.currentTarget.checked });\n }}\n />\n
\n )}\n
\n
\n {canManageCalendar && (\n \n \n \n Add new\n \n \n \n {\n setCurrentCalendarItem(null);\n setShowEditActionModal(true);\n }}\n >\n Action\n \n {\n setCurrentCalendarItem(null);\n setShowEditEventModal(true);\n }}\n >\n Event\n \n {\n setCurrentCalendarItem(null);\n setShowCorrectiveActionModal(true);\n }}\n >\n Corrective Action\n \n {\n setCurrentCalendarItem(null);\n setShowIncidentModal(true);\n }}\n >\n Incident\n \n \n \n )}\n
\n \n
\n );\n};\n","import { useDispatch, useSelector } from 'react-redux';\nimport { AdoptechTextInput } from '../../../components/AdoptechTextInput/AdoptechTextInput';\nimport React from 'react';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { calendarState } from '../store/calendarState';\nimport { setCalendarFilters } from '../store/calendarSlice';\nimport { useAdoptechDebounce } from '../../../hooks/useAdoptechDebounce';\nimport { fetchCalendarItems } from '../store/calendarThunks';\nimport { selectCurrentVendorUser } from '../../../selectors/selectCurrentVendorUser';\nimport { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\n\nexport const CalendarSearch: React.FC = () => {\n const {\n filters,\n filters: { search, viewMode },\n } = useSelector((state: ApplicationState) => state.calendar);\n const dispatch = useDispatch();\n const checkWithDebounce = useAdoptechDebounce();\n const currentVendorUser = useSelector(selectCurrentVendorUser);\n const updateFilters = (filter: any) => {\n const filtersPayload: calendarState['filters'] = {\n ...filters,\n ...filter,\n page: 1,\n };\n dispatch(setCalendarFilters(filtersPayload));\n checkWithDebounce(() => {\n const value = (filter.search as string) || '';\n if (value.length >= 3 || value.length === 0) {\n dispatch(\n fetchCalendarItems({\n filters: filtersPayload,\n currentVendorUserId: currentVendorUser.id,\n })\n );\n }\n });\n };\n\n const placeholders = {\n actions_and_events: 'Search for actions and events',\n incident_log: 'Search for incidents',\n audit_schedule:\n 'Search for security meetings, internal and external audits',\n corrective_actions: 'Search for corrective actions',\n };\n\n return (\n {\n updateFilters({ search: e.target.value });\n }}\n type=\"text\"\n placeholder={placeholders[viewMode]}\n icon={faSearch}\n additionalClass=\"adoptechTextInput-search\"\n />\n );\n};\n","import { ColumnSort } from '../types/columnSort';\nimport { SortDirection } from '../types/sortDirection';\nimport { dateSort } from './dateSort';\nimport { sort } from './sort';\nimport { CalendarItemModel } from '../swagger';\n\nexport const calendarItemsSort = (\n a: CalendarItemModel,\n b: CalendarItemModel,\n columnSort: ColumnSort\n): number => {\n let direction = 1;\n if (columnSort.direction === SortDirection.Ascending) {\n direction = -1;\n }\n\n const typedColumn = columnSort.name as keyof CalendarItemModel;\n\n switch (typedColumn) {\n case 'date':\n return dateSort(a.date, b.date, direction);\n case 'name':\n return sort(a.name.toLowerCase(), b.name.toLowerCase(), direction);\n }\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { ColumnSort } from '../../../types/columnSort';\nimport { CalendarItemModel } from '../../../swagger/models/CalendarItemModel';\nimport moment from 'moment';\nimport { calendarItemsSort } from '../../../functions/calendarItemsSort';\n\ntype GroupedByMonth = {\n [month: string]: CalendarItemModel[];\n};\n\nexport const selectCalendarPageItems = createSelector(\n (state: ApplicationState) => state.calendar.items,\n (state: ApplicationState) => state.global.sortSettings,\n (items: CalendarItemModel[], sortSettings): GroupedByMonth => {\n return Object.fromEntries(\n Object.entries(groupedByMonthItems(items)).map(([month, monthItems]) => {\n const monthName = moment(month).format('MMMM YYYY');\n return [monthName, sortedItems(sortSettings, monthItems, monthName)];\n })\n );\n }\n);\n\nconst groupedByMonthItems = (items: CalendarItemModel[]): GroupedByMonth => {\n return items.reduce((result, filteredItem) => {\n const month = moment(filteredItem.date).format('YYYY-MM');\n\n if (!result[month]) result[month] = [];\n\n result[month].push(filteredItem);\n return result;\n }, {} as GroupedByMonth);\n};\n\nconst sortedItems = (\n sortSettings: any[],\n monthItems: CalendarItemModel[],\n monthName: string\n) => {\n const grid = monthName;\n const columnSort: ColumnSort = {\n direction: undefined,\n name: undefined,\n };\n const sortSetting = sortSettings.find(ss => ss.grid === grid) || {\n columnSort,\n grid,\n };\n\n return monthItems.sort((a, b) =>\n calendarItemsSort(a, b, sortSetting.columnSort)\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport './CalendarPage.scss';\nimport { useSelector } from 'react-redux';\nimport { fetchCalendarItems } from '../store/calendarThunks';\nimport { cleanupItems, setCalendarFilters } from '../store/calendarSlice';\nimport { ApplicationState } from '../../../types/applicationState';\nimport moment from 'moment';\nimport {\n CalendarItemItemType,\n CalendarItemModel,\n CalendarItemModelStatusEnum,\n} from '../../../swagger';\nimport { selectVendorDetails } from '../../../selectors/selectVendorDetails';\nimport { CalendarHeader } from '../CalendarHeader/CalendarHeader';\nimport {\n CalendarItemsList,\n calendarItemClass,\n calendarItemRoute,\n} from '../CalendarItemsList/CalendarItemsList';\nimport { selectCurrentVendorUser } from '../../../selectors/selectCurrentVendorUser';\nimport { AdoptechPanel } from '../../../components/AdoptechPanel/AdoptechPanel';\nimport { CalendarSearch } from '../CalendarSearch/CalendarSearch';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport {\n calendarRoute,\n scrollContainer,\n} from '../../../components/Routes/Routes';\nimport { selectCalendarPageItems } from '../selectors/selectCalendarPageItems';\nimport { NoDataText } from '../../../components/NoDataText/NoDataText';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport { push } from 'connected-react-router';\nimport { CalendarPageModals } from './CalendarPageModals';\nimport { useParams } from 'react-router';\nimport { url } from 'inspector';\n\nexport const completedStatus = CalendarItemModelStatusEnum.Completed;\nexport const overdueStatus = CalendarItemModelStatusEnum.Overdue;\n\nexport const endOfCurrentDateMonth = (currentDate: string | Date) => {\n return moment(currentDate).endOf('month').toDate();\n};\n\nexport type CurrentCalendarItem = {\n id?: CalendarItemModel['id'];\n type?: 'event' | 'corrective-action' | 'incident' | 'action';\n};\n\nconst CalendarPage: React.FC = () => {\n const baseCss = 'calendarPage';\n const currentVendor = useSelector(selectVendorDetails);\n const dispatch = useAppDispatch();\n const currentVendorUser = useSelector(selectCurrentVendorUser);\n const [showEditActionModal, setShowEditActionModal] = useState(false);\n const [showEditEventModal, setShowEditEventModal] = useState(false);\n const [showCorrectiveActionModal, setShowCorrectiveActionModal] =\n useState(false);\n const [showIncidentModal, setShowIncidentModal] = useState(false);\n\n const [currentCalendarItem, setCurrentCalendarItem] =\n useState();\n\n const urlParams = useParams() as {\n id?: string;\n type?: 'events' | 'corrective-actions' | 'incidents' | 'actions';\n };\n\n const urlParamsType = urlParams.type?.slice(\n 0,\n urlParams.type.length - 1\n ) as CurrentCalendarItem['type'];\n\n const {\n filters,\n filters: { showMyItems },\n } = useSelector((state: ApplicationState) => state.calendar);\n const showAllItems = !showMyItems;\n\n const refetchCurrentDateCalendarItems = async () => {\n const filtersPayload = {\n ...filters,\n ...{\n page: 1,\n },\n };\n\n await dispatch(\n fetchCalendarItems({\n filters: filtersPayload,\n currentVendorUserId: currentVendorUser.id,\n })\n );\n };\n\n const cleanup = () => {\n dispatch(cleanupItems());\n };\n\n useEffect(() => {\n cleanup();\n refetchCurrentDateCalendarItems();\n return () => {\n cleanup();\n };\n }, [currentVendor]);\n\n useEffect(() => {\n if (!urlParams?.id) return;\n\n setCurrentCalendarItem({\n type: urlParamsType,\n id: urlParams?.id,\n });\n\n // For simplicity use /r/calendar everywhere:\n // => redirect from /r/calendar/events/:id silently to /r/calendar\n window.history.pushState(null, '', calendarRoute);\n }, [urlParams?.id]);\n\n const { fetchCalendarItemsStatus } = useSelector(\n (state: ApplicationState) => state.calendar\n );\n\n const isFetchingItems = fetchCalendarItemsStatus === 'loading';\n const filteredGroupedByMonthItems = useSelector(selectCalendarPageItems);\n\n const handleRowClick = (item: CalendarItemModel) => {\n const calendarType = calendarItemClass(item);\n setCurrentCalendarItem({\n id: item.id,\n type: calendarType === 'unknown' ? null : calendarType,\n });\n };\n\n const noMorePages = () => {\n const noPages = filters.totalPages === 0;\n const pageLimitReached = filters.page + 1 > filters.totalPages;\n return filters.totalPages !== null && (noPages || pageLimitReached);\n };\n\n const onScroll = () => {\n const container = document.getElementById(scrollContainer);\n const reachedToBottom =\n container.offsetHeight + container.scrollTop >= container.scrollHeight;\n\n if (reachedToBottom && !noMorePages()) {\n const nextPage = filters.page + 1;\n const filtersPayload = {\n ...filters,\n ...{\n page: nextPage,\n },\n };\n\n dispatch(setCalendarFilters(filtersPayload));\n dispatch(\n fetchCalendarItems({\n filters: filtersPayload,\n currentVendorUserId: currentVendorUser.id,\n })\n );\n }\n };\n useEffect(() => {\n const container = document.getElementById(scrollContainer);\n container.addEventListener('scroll', onScroll);\n return () => {\n container.removeEventListener('scroll', onScroll);\n };\n }, [filters, currentVendorUser.id]);\n\n const noDataPlaceholders = {\n actions_and_events:\n 'No Actions or Events have been created, to begin select Add new.',\n incident_log: 'No Incidents have been created, to begin select Add new.',\n audit_schedule: 'No Events have been scheduled, to begin select Add new.',\n corrective_actions:\n 'No Corrective Actions have been created, to begin select Add new.',\n };\n const isLoading = isFetchingItems;\n\n const CalendarHeaderProps = {\n setShowEditActionModal,\n setShowEditEventModal,\n setShowCorrectiveActionModal,\n setShowIncidentModal,\n setCurrentCalendarItem,\n };\n\n return (\n
\n \n\n \n \n {isLoading && filters.page === 1 ? (\n \n ) : (\n <>\n <>\n {Object.entries(filteredGroupedByMonthItems).length === 0 && (\n \n )}\n \n <>\n {Object.entries(filteredGroupedByMonthItems).map(\n ([monthName, sortedMonthItems]) => {\n return (\n
\n
\n {monthName}\n
\n \n
\n );\n }\n )}\n \n \n )}\n\n {isLoading && filters.page > 1 && }\n
\n \n
\n );\n};\n\nexport default CalendarPage;\n","import React, { useEffect, useState } from 'react';\nimport {\n CorrectiveActionModel,\n CorrectiveActionModelActionTypeEnum,\n} from '../../../swagger';\nimport { CorrectiveActionFormType } from '../CalendarPage/CalendarPageModals';\nimport { useOwnerOptions } from '../../../hooks/useOwnerOptions';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { useSelector } from 'react-redux';\nimport AdoptechModal from '../../../components/AdoptechModal/AdoptechModal';\nimport { Modal } from 'react-bootstrap';\nimport './EditCorrectiveActionModal.scss';\nimport { fetchCorrectiveAction } from '../store/calendarThunks';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { useCanFeature } from '../../../functions/access';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { AccessObject } from '../../../types/accessObject';\nimport { AdoptechTextInput2 } from '../../../components/AdoptechTextInput2/AdoptechTextInput2';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { AdoptechTextArea2 } from '../../../components/AdoptechTextArea2/AdoptechTextArea2';\nimport { AdoptechReactSelect2 } from '../../../components/AdoptechReacSelect2/AdoptechReactSelect2';\nimport { AdoptechDatePicker2 } from '../../../components/AdoptechDatePicker2/AdoptechDatePicker2';\nimport moment from 'moment';\nimport CalendarAttachments from '../EditEventModal/CalendarAttachments/CalendarAttachments';\n\ntype Model = CorrectiveActionModel;\ntype FormType = CorrectiveActionFormType;\n\ninterface Props {\n init?: Model['id'];\n close: () => void;\n confirm: (params: FormType) => void;\n show: boolean;\n onDelete?: (id: Model['id']) => void;\n}\n\nconst baseCss = 'editCorrectActionModal';\n\nexport const EditCorrectiveActionModal: React.FC = ({\n init = undefined,\n confirm = () => {},\n onDelete = () => {},\n close,\n show,\n}) => {\n const [model, setModel] = useState({ id: init } as CorrectiveActionFormType);\n\n const modalTitle = model.id\n ? 'Edit Corrective Action'\n : 'Create Corrective Action';\n const { users, ownerOptions: userOptions } = useOwnerOptions({\n includingGuest: true,\n });\n const actionName = model.id ? 'Save' : 'Create';\n const {\n createCorrectiveActionStatus,\n fetchCorrectiveActionStatus,\n updateCorrectiveActionStatus,\n deleteCorrectiveActionStatus,\n } = useSelector((state: ApplicationState) => state.calendar);\n const isDeletingCalendarItem = deleteCorrectiveActionStatus === 'loading';\n const isFetchingCalendarItem = fetchCorrectiveActionStatus === 'loading';\n const isUpdatingCalendarItem = updateCorrectiveActionStatus === 'loading';\n const isCreatingCalendarItem = createCorrectiveActionStatus === 'loading';\n const dispatch = useAppDispatch();\n const isLoading = isFetchingCalendarItem || isDeletingCalendarItem;\n const fetchCorrectiveActionAsync = async (id: string) => {\n const action = await dispatch(fetchCorrectiveAction(id)).unwrap();\n\n setModel(action);\n };\n\n const { errorMessage } = useSelector(\n (state: ApplicationState) => state.global\n );\n\n useEffect(() => {\n errorMessage &&\n errorMessage.includes('ID entered') &&\n setModel({\n // highlight field on BE unique error\n ...model,\n identifier: null,\n });\n }, [errorMessage]);\n\n useEffect(() => {\n model.id && fetchCorrectiveActionAsync(model.id);\n }, [model.id]);\n const canManageCalendar = useCanFeature(AccessObject.calendar_manage);\n const readonlyMode = !canManageCalendar;\n const hasNameError = !model.name;\n const hasDescriptionError = !model.description;\n const hasTypeError = !model.actionType;\n const hasIdentifierError = !model.identifier;\n const hasDateError = !model.dateIdentified;\n const hasOwnerError = !model.owner;\n const hasRaisedByError = !model.raisedBy;\n const hasRootCauseError = !model.rootCause;\n const hasCorrectiveActionsError = !model.correctiveActions;\n\n const isNonConformance =\n model.actionType === CorrectiveActionModelActionTypeEnum.NonConformance;\n const dataMissing =\n hasNameError ||\n hasDescriptionError ||\n hasTypeError ||\n hasIdentifierError ||\n hasDateError ||\n hasOwnerError ||\n hasRaisedByError ||\n (isNonConformance && hasRootCauseError) ||\n hasCorrectiveActionsError;\n\n const typeOptions = [\n {\n label: 'Non-conformance (NC) ',\n value: CorrectiveActionModelActionTypeEnum.NonConformance,\n },\n {\n label: 'Opportunity for improvement (OFI)',\n value: CorrectiveActionModelActionTypeEnum.OpportunityForImprovement,\n },\n ];\n const deadline = model.dateIdentified ? new Date(model.dateIdentified) : null;\n\n return (\n \n \n
{modalTitle}
\n {model.id && (\n \n {model.completed ? 'Completed' : 'Pending'}\n \n )}\n
\n \n {isLoading && }\n {!isLoading && (\n
\n
\n
\n \n setModel({ ...model, name: e.currentTarget.value })\n }\n hasError={hasNameError}\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n
\n
\n \n setModel({ ...model, description: e.currentTarget.value })\n }\n icon={faPen}\n hasError={hasDescriptionError}\n disabled={readonlyMode}\n />\n
\n
\n
\n
\n \n setModel({\n ...model,\n actionType: option.value as FormType['actionType'],\n })\n }\n value={typeOptions.filter(\n option => option.value === model.actionType\n )}\n placeholder=\"Please select\"\n isDisabled={readonlyMode}\n />\n
\n
\n \n setModel({ ...model, identifier: e.currentTarget.value })\n }\n hasError={hasIdentifierError}\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n
\n
\n {\n const endOfDay = moment(d).endOf('day');\n const endOfDayToDateTime = endOfDay.toJSON();\n\n setModel({\n ...model,\n dateIdentified: endOfDayToDateTime,\n });\n }}\n disabled={readonlyMode}\n />\n
\n
\n {\n setModel({\n ...model,\n owner: users.find(user => user.id === e.value),\n });\n }}\n value={userOptions.find(\n option => option.value == model.owner?.id\n )}\n isDisabled={readonlyMode}\n />\n
\n
\n
\n
\n \n setModel({ ...model, raisedBy: e.currentTarget.value })\n }\n hasError={hasRaisedByError}\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n {!hasTypeError && isNonConformance && (\n
\n
\n \n setModel({ ...model, rootCause: e.currentTarget.value })\n }\n hasError={hasRootCauseError}\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n )}\n\n
\n
\n \n setModel({\n ...model,\n correctiveActions: e.currentTarget.value,\n })\n }\n hasError={hasCorrectiveActionsError}\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n\n \n
\n )}\n
\n \n {model.id ? (\n
\n {\n const data = { ...model, completed: !model.completed };\n confirm(data);\n }}\n >\n {model.completed ? 'Mark as pending' : 'Mark as completed'}\n \n\n onDelete(model.id)}\n >\n Delete\n \n
\n ) : (\n {\n close();\n }}\n >\n Cancel\n \n )}\n confirm(model)}\n variant={AdoptechButtonVariant.Primary}\n >\n {actionName}\n \n
\n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { IncidentEventModel } from '../../../swagger';\nimport { IncidentFormType } from '../CalendarPage/CalendarPageModals';\nimport { useOwnerOptions } from '../../../hooks/useOwnerOptions';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { useSelector } from 'react-redux';\nimport AdoptechModal from '../../../components/AdoptechModal/AdoptechModal';\nimport { Modal } from 'react-bootstrap';\nimport './EditIncidentModal.scss';\nimport { fetchIntegrations } from '../../../store/integrations/integrationsSlice';\nimport { fetchIncident } from '../store/calendarThunks';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { useCanFeature } from '../../../functions/access';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { AccessObject } from '../../../types/accessObject';\nimport { AdoptechTextInput2 } from '../../../components/AdoptechTextInput2/AdoptechTextInput2';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { AdoptechTextArea2 } from '../../../components/AdoptechTextArea2/AdoptechTextArea2';\nimport { AdoptechReactSelect2 } from '../../../components/AdoptechReacSelect2/AdoptechReactSelect2';\nimport { AdoptechDatePicker2 } from '../../../components/AdoptechDatePicker2/AdoptechDatePicker2';\nimport moment from 'moment';\nimport { SelectionOption } from '../../../types/selectionOption';\nimport CalendarAttachments from '../EditEventModal/CalendarAttachments/CalendarAttachments';\n\ntype Model = IncidentEventModel;\ntype FormType = IncidentFormType;\n\ninterface Props {\n init?: Model['id'];\n close: () => void;\n confirm: (params: FormType) => void;\n show: boolean;\n onDelete?: (id: Model['id']) => void;\n}\n\nconst baseCss = 'editIncidentModal';\n\nexport const EditIncidentModal: React.FC = ({\n init = undefined,\n confirm = () => {},\n onDelete = () => {},\n close,\n show,\n}) => {\n const [model, setModel] = useState({ id: init } as IncidentFormType);\n\n const modalTitle = model.id ? 'Edit Incident' : 'Create Incident';\n const { users, ownerOptions: userOptions } = useOwnerOptions({\n includingGuest: true,\n });\n const actionName = model.id ? 'Save' : 'Create';\n const {\n createIncidentStatus,\n fetchIncidentStatus,\n updateIncidentStatus,\n deleteIncidentStatus,\n } = useSelector((state: ApplicationState) => state.calendar);\n const isDeletingCalendarItem = deleteIncidentStatus === 'loading';\n const isFetchingCalendarItem = fetchIncidentStatus === 'loading';\n const isUpdatingCalendarItem = updateIncidentStatus === 'loading';\n const isCreatingCalendarItem = createIncidentStatus === 'loading';\n const dispatch = useAppDispatch();\n const isLoading = isFetchingCalendarItem || isDeletingCalendarItem;\n const fetchIncidentAsync = async (id: string) => {\n const action = await dispatch(fetchIncident(id)).unwrap();\n\n setModel(action);\n };\n\n const { errorMessage } = useSelector(\n (state: ApplicationState) => state.global\n );\n\n useEffect(() => {\n errorMessage &&\n errorMessage.includes('ID entered') &&\n setModel({\n // highlight field on BE unique error\n ...model,\n identifier: null,\n });\n }, [errorMessage]);\n\n useEffect(() => {\n model.id && fetchIncidentAsync(model.id);\n }, [model.id]);\n const canManageCalendar = useCanFeature(AccessObject.calendar_manage);\n const readonlyMode = !canManageCalendar;\n const hasNameError = !model.name;\n const hasDescriptionError = !model.description;\n const hasIdentifierError = !model.identifier;\n const hasDateError = !model.dateIdentified;\n const hasOwnerError = !model.owner;\n const hasRaisedByError = !model.raisedBy;\n const hasRootCauseError = !model.rootCause;\n const hasActionsTakenError = !model.actionsTaken;\n const hasPreventativeActionsError = !model.preventativeActions;\n const noDataBreachChosen = model.dataBreach === undefined;\n const hasDataBreachError = noDataBreachChosen;\n // require details only if data breach chosen yes\n const hasDataBreachDetailsError = noDataBreachChosen\n ? false\n : model.dataBreach\n ? !model.dataBreachDetails\n : false;\n\n const dataMissing =\n hasNameError ||\n hasDescriptionError ||\n hasIdentifierError ||\n hasDateError ||\n hasOwnerError ||\n hasRaisedByError ||\n hasRootCauseError ||\n hasActionsTakenError ||\n hasPreventativeActionsError ||\n hasDataBreachError ||\n hasDataBreachDetailsError;\n\n const deadline = model.dateIdentified ? new Date(model.dateIdentified) : null;\n\n const dataBreachOptions: SelectionOption[] = [\n { label: 'yes', value: 'yes' },\n { label: 'no', value: 'no' },\n ];\n return (\n \n \n
{modalTitle}
\n {model.id && (\n \n {model.completed ? 'Completed' : 'Pending'}\n \n )}\n
\n \n {isLoading && }\n {!isLoading && (\n
\n
\n
\n \n setModel({ ...model, name: e.currentTarget.value })\n }\n hasError={hasNameError}\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n
\n
\n \n setModel({ ...model, description: e.currentTarget.value })\n }\n icon={faPen}\n hasError={hasDescriptionError}\n disabled={readonlyMode}\n />\n
\n
\n
\n
\n {\n setModel({\n ...model,\n owner: users.find(user => user.id === e.value),\n });\n }}\n value={userOptions.find(\n option => option.value == model.owner?.id\n )}\n isDisabled={readonlyMode}\n />\n
\n
\n \n setModel({ ...model, identifier: e.currentTarget.value })\n }\n hasError={hasIdentifierError}\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n
\n
\n {\n const endOfDay = moment(d).endOf('day');\n const endOfDayToDateTime = endOfDay.toJSON();\n\n setModel({\n ...model,\n dateIdentified: endOfDayToDateTime,\n });\n }}\n disabled={readonlyMode}\n />\n
\n
\n\n
\n
\n \n setModel({ ...model, raisedBy: e.currentTarget.value })\n }\n hasError={hasRaisedByError}\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n
\n
\n \n setModel({ ...model, rootCause: e.currentTarget.value })\n }\n hasError={hasRootCauseError}\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n
\n
\n \n setModel({ ...model, actionsTaken: e.currentTarget.value })\n }\n hasError={hasActionsTakenError}\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n
\n
\n \n setModel({\n ...model,\n preventativeActions: e.currentTarget.value,\n })\n }\n hasError={hasPreventativeActionsError}\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n
\n
\n \n setModel({\n ...model,\n dataBreach: option.value === 'yes',\n })\n }\n value={\n hasDataBreachError\n ? undefined\n : dataBreachOptions.filter(\n option =>\n option.value === (model.dataBreach ? 'yes' : 'no')\n )\n }\n placeholder=\"Please choose\"\n />\n
\n
\n\n {model.dataBreach && (\n
\n
\n \n setModel({\n ...model,\n dataBreachDetails: e.currentTarget.value,\n })\n }\n hasError={hasDataBreachDetailsError}\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n )}\n \n
\n )}\n
\n \n {model.id ? (\n
\n {\n const data = { ...model, completed: !model.completed };\n confirm(data);\n }}\n >\n {model.completed ? 'Mark as pending' : 'Mark as completed'}\n \n\n onDelete(model.id)}\n >\n Delete\n \n
\n ) : (\n {\n close();\n }}\n >\n Cancel\n \n )}\n confirm(model)}\n variant={AdoptechButtonVariant.Primary}\n >\n {actionName}\n \n
\n
\n );\n};\n","import { useSelector } from 'react-redux';\nimport React, { useEffect, useState } from 'react';\nimport './CalendarPage.scss';\nimport { AdoptechButtonVariant } from '../../../components/AdoptechButton/AdoptechButton';\nimport {\n createActionReference,\n createCorrectiveAction,\n createCorrectiveActionParams,\n createEvent,\n createEventParams,\n createIncident,\n createIncidentParams,\n createNewAction,\n createNewActionParams,\n deleteAction,\n deleteActionReference,\n deleteCorrectiveAction,\n deleteEvent,\n deleteIncident,\n updateAction,\n updateActionParams,\n updateCorrectiveAction,\n updateCorrectiveActionParams,\n updateEvent,\n updateIncident,\n updateIncidentParams,\n} from '../store/calendarThunks';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n CorrectiveActionExtended,\n CorrectiveActionModel,\n CorrectiveActionsCorrectiveActionIdPatchCorrectiveActionActionTypeEnum,\n IncidentEventExtended,\n IncidentEventModel,\n ReferenceCreatePayloadReferenceReferenceableTypeEnum,\n SharedAttachmentModel,\n VendorActionExtended,\n VendorActionModel,\n VendorEventEventType,\n VendorEventExtended,\n VendorEventModel,\n VendorsVendorIdCorrectiveActionsPostCorrectiveActionActionTypeEnum,\n} from '../../../swagger';\nimport { EditActionModal } from '../../../components/EditActionModal/EditActionModal';\nimport { showGlobalToast } from '../../../store/global/globalSlice';\nimport { CommandConfirmation } from '../../../types/CommandConfirmation';\nimport { ConfirmationModal } from '../../../components/ConfirmationModal/ConfirmationModal';\nimport { EditEventModal } from '../EditEventModal/EditEventModal';\nimport { selectVendorDetails } from '../../../selectors/selectVendorDetails';\nimport { calendarRoute } from '../../../components/Routes/Routes';\nimport { EditCorrectiveActionModal } from '../EditCorrectiveActionModal/EditCorrectiveActionModal';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport { EditIncidentModal } from '../EditIncidentModal/EditIncidentModal';\nimport { useHistory, useParams } from 'react-router';\nimport { push } from 'connected-react-router';\nimport { CurrentCalendarItem } from './CalendarPage';\n\ninterface CalendarFormAttachment extends SharedAttachmentModel {\n rawFile?: File;\n}\ntype CalendarForm = {\n deletedAttachmentIds?: SharedAttachmentModel['id'][];\n attachments?: CalendarFormAttachment[];\n};\n\nexport type EventFormType = VendorEventExtended & CalendarForm;\nexport type ActionFormType = VendorActionExtended & CalendarForm;\nexport type CorrectiveActionFormType = CorrectiveActionExtended & CalendarForm;\nexport type IncidentFormType = IncidentEventExtended & CalendarForm;\n\nconst mapFormAttachmentsToPayload = (attachments: CalendarFormAttachment[]) => {\n return (attachments || [])\n .filter((attachment: CalendarFormAttachment) => attachment.rawFile)\n .map((attachment: CalendarFormAttachment) => attachment.rawFile);\n};\n// we use \"map payload\" to use multiple attachments\nexport const mapVendorActonFormToPostPayload = (params: ActionFormType) => {\n const { name, owner, description, dueDate, actionType, attachments, url } =\n params;\n const payload: createNewActionParams['payload'] = {\n vendorActionName: name,\n vendorActionOwnerId: owner.id,\n vendorActionDescription: description,\n vendorActionDueDate: dueDate,\n vendorActionActionType: actionType,\n vendorActionUrl: url,\n vendorActionAttachments: mapFormAttachmentsToPayload(attachments),\n };\n return payload;\n};\n\nconst mapIncidentFormTypeToPostOrPatchPayload = (\n params: IncidentFormType\n): createIncidentParams => {\n const {\n name,\n description,\n dateIdentified,\n raisedBy,\n rootCause,\n preventativeActions,\n actionsTaken,\n dataBreach,\n dataBreachDetails,\n url,\n attachments,\n identifier,\n owner,\n } = params;\n return {\n incidentEventName: name,\n incidentEventDescription: description,\n incidentEventDateIdentified: dateIdentified,\n incidentEventRaisedBy: raisedBy,\n incidentEventRootCause: rootCause,\n incidentEventPreventativeActions: preventativeActions,\n incidentEventActionsTaken: actionsTaken,\n incidentEventIdentifier: identifier,\n incidentEventOwnerId: owner?.id,\n incidentEventDataBreach: dataBreach,\n incidentEventDataBreachDetails: dataBreachDetails,\n incidentEventUrl: url,\n incidentEventAttachments: mapFormAttachmentsToPayload(attachments),\n };\n};\n\nconst mapCorrectiveActionFormTypeToPostOrPatchPayload = (\n payload: CorrectiveActionFormType\n): createCorrectiveActionParams => {\n const postOrPatchPayload: createCorrectiveActionParams = {\n correctiveActionName: payload.name,\n correctiveActionDescription: payload.description,\n correctiveActionDateIdentified: payload.dateIdentified,\n correctiveActionRaisedBy: payload.raisedBy,\n correctiveActionRootCause: payload.rootCause,\n correctiveActionActionType:\n payload.actionType as unknown as VendorsVendorIdCorrectiveActionsPostCorrectiveActionActionTypeEnum,\n correctiveActionCorrectiveActions: payload.correctiveActions,\n correctiveActionIdentifier: payload.identifier,\n correctiveActionOwnerId: payload.owner?.id,\n correctiveActionUrl: payload.url,\n correctiveActionAttachments: mapFormAttachmentsToPayload(\n payload.attachments\n ),\n };\n return postOrPatchPayload;\n};\ninterface CalendarPageModalProps {\n refetchCurrentDateCalendarItems: () => void;\n cleanup: () => void;\n setShowEditEventModal: (value: boolean) => void;\n setShowCorrectiveActionModal: (value: boolean) => void;\n setShowIncidentModal: (value: boolean) => void;\n setShowEditActionModal: (value: boolean) => void;\n showEditEventModal: boolean;\n showEditActionModal: boolean;\n showCorrectiveActionModal: boolean;\n showIncidentModal: boolean;\n currentCalendarItem: CurrentCalendarItem;\n setCurrentCalendarItem: (value: CurrentCalendarItem) => void;\n}\n\nexport const CalendarPageModals: React.FC = ({\n refetchCurrentDateCalendarItems,\n cleanup,\n setShowEditEventModal,\n setShowCorrectiveActionModal,\n setShowIncidentModal,\n setShowEditActionModal,\n showEditActionModal,\n showIncidentModal,\n showEditEventModal,\n showCorrectiveActionModal,\n currentCalendarItem,\n setCurrentCalendarItem,\n}) => {\n const dispatch = useAppDispatch();\n const currentCalendarItemId = currentCalendarItem?.id;\n const currentCalendarItemType = currentCalendarItem?.type;\n\n const currentVendor = useSelector(selectVendorDetails);\n const [currentCommand, command] = useState(null);\n const { fetchCalendarItemsStatus } = useSelector(\n (state: ApplicationState) => state.calendar\n );\n const isFetchingItems = fetchCalendarItemsStatus === 'loading';\n\n useEffect(() => {\n if (!currentCalendarItemType) return;\n switch (currentCalendarItemType) {\n case 'event':\n setShowEditEventModal(true);\n break;\n case 'corrective-action':\n setShowCorrectiveActionModal(true);\n break;\n case 'incident':\n setShowIncidentModal(true);\n break;\n case 'action':\n setShowEditActionModal(true);\n break;\n default:\n alert('Unknown calendar item type');\n }\n }, [currentCalendarItemId]);\n\n const deleteReference = (\n action: VendorActionExtended,\n oldAction?: VendorActionExtended\n ) => {\n const typeChanged = oldAction.actionType !== action.actionType;\n\n const oldActionHasRegistry = isPestel(oldAction) || isLegal(oldAction);\n\n if (typeChanged && oldActionHasRegistry) {\n const referenceableId = isPestel(oldAction)\n ? currentVendor.registers.pestelRegisterId\n : currentVendor.registers.legalRegisterId;\n const referenceableType =\n oldAction.actionType === VendorEventEventType.PestelReview\n ? ReferenceCreatePayloadReferenceReferenceableTypeEnum.PestelRegister\n : ReferenceCreatePayloadReferenceReferenceableTypeEnum.LegalRegister;\n\n action?.id &&\n referenceableId &&\n dispatch(\n deleteActionReference(action?.id, referenceableId, referenceableType)\n );\n }\n };\n\n const afterCreateOrUpdate = async (\n action: VendorActionExtended,\n oldAction?: VendorActionExtended\n ) => {\n if (oldAction?.id) deleteReference(action, oldAction);\n\n if (isLegal(action)) {\n await dispatch(\n createActionReference(\n action.id,\n currentVendor.registers.legalRegisterId,\n ReferenceCreatePayloadReferenceReferenceableTypeEnum.LegalRegister,\n () => {}\n )\n );\n }\n\n if (isPestel(action)) {\n await dispatch(\n createActionReference(\n action.id,\n currentVendor.registers.pestelRegisterId,\n ReferenceCreatePayloadReferenceReferenceableTypeEnum.PestelRegister,\n () => {}\n )\n );\n }\n\n const message = 'Action was successfully saved';\n await refetchPageItems();\n dispatch(showGlobalToast(message));\n return;\n };\n\n const createOrUpdateAction = async (params: ActionFormType) => {\n const { completed, deletedAttachmentIds } = params;\n\n const createPayload = mapVendorActonFormToPostPayload(params);\n\n if (!currentActionId) {\n const newAction = await dispatch(\n createNewAction({ payload: createPayload })\n ).unwrap();\n\n afterCreateOrUpdate(newAction);\n\n return;\n }\n\n const updatePayload: updateActionParams = {\n ...createPayload,\n ...{ vendorActionDeletedAttachmentIds: deletedAttachmentIds },\n ...{ vendorActionCompleted: completed },\n };\n\n dispatch(updateAction(params, updatePayload, afterCreateOrUpdate));\n };\n\n const createOrUpdateIncident = async (params: IncidentFormType) => {\n const createPayload = mapIncidentFormTypeToPostOrPatchPayload(params);\n\n const message = 'Incident was successfully saved';\n if (!currentIncidentId) {\n try {\n await dispatch(createIncident(createPayload)).unwrap();\n } catch (error) {\n return;\n }\n } else {\n const updatePayload: updateIncidentParams = {\n ...createPayload,\n incidentEventCompleted: params.completed,\n incidentEventId: currentIncidentId,\n incidentEventDeletedAttachmentIds: params.deletedAttachmentIds,\n };\n try {\n await dispatch(updateIncident(updatePayload)).unwrap();\n } catch (error) {\n return;\n }\n }\n\n await refetchPageItems();\n dispatch(showGlobalToast(message));\n return;\n };\n\n const createOrUpdateEvent = async ({\n name,\n owner,\n description,\n date,\n eventType,\n url,\n attachments,\n deletedAttachmentIds,\n }: EventFormType) => {\n const payload: createEventParams = {\n vendorEventName: name,\n vendorEventOwnerId: owner.id,\n vendorEventDescription: description,\n vendorEventDate: date,\n vendorEventEventType: eventType,\n vendorEventUrl: url,\n vendorEventAttachments: mapFormAttachmentsToPayload(attachments),\n };\n\n const message = 'Event was saved successfully.';\n\n if (currentEventId) {\n const updatePayload = {\n ...payload,\n ...{ vendorEventDeletedAttachmentIds: deletedAttachmentIds },\n ...{ vendorEventId: currentEventId },\n };\n await dispatch(updateEvent(currentEventId, updatePayload, () => {}));\n } else {\n await dispatch(createEvent(payload));\n }\n\n await refetchPageItems();\n dispatch(showGlobalToast(message));\n };\n\n const createOrUpdateCorrectiveAction = async (\n params: CorrectiveActionFormType\n ) => {\n const createPayload: createCorrectiveActionParams =\n mapCorrectiveActionFormTypeToPostOrPatchPayload(params);\n\n const message = 'Corrective Action was successfully saved';\n\n if (!currentCorrectiveActionId) {\n try {\n const newAction = await dispatch(\n createCorrectiveAction(createPayload)\n ).unwrap();\n } catch (error) {\n return;\n }\n } else {\n const { completed, deletedAttachmentIds } = params;\n const updatePayload: updateCorrectiveActionParams = {\n correctiveActionId: currentCorrectiveActionId,\n ...createPayload,\n ...{\n correctiveActionCompleted: completed,\n correctiveActionDeletedAttachmentIds: deletedAttachmentIds,\n correctiveActionActionType:\n createPayload.correctiveActionActionType as unknown as CorrectiveActionsCorrectiveActionIdPatchCorrectiveActionActionTypeEnum,\n },\n };\n try {\n const updatedAction = await dispatch(\n updateCorrectiveAction(updatePayload)\n ).unwrap();\n } catch (error) {\n return;\n }\n }\n\n await refetchPageItems();\n dispatch(showGlobalToast(message));\n return;\n };\n\n // calculate currentActionId not from \"items\" because calendar item can be opened by direct link\n // and not visible in the items ( for example calendar item in the past)\n\n const currentActionId: VendorActionModel['id'] =\n currentCalendarItemType === 'action' ? currentCalendarItemId : undefined;\n\n const currentEventId: VendorEventModel['id'] =\n currentCalendarItemType === 'event' ? currentCalendarItemId : undefined;\n\n const currentCorrectiveActionId: CorrectiveActionModel['id'] =\n currentCalendarItemType === 'corrective-action'\n ? currentCalendarItemId\n : undefined;\n\n const currentIncidentId: IncidentEventModel['id'] =\n currentCalendarItemType === 'incident' ? currentCalendarItemId : undefined;\n\n const deleteActionCommand: CommandConfirmation = {\n title: 'Confirm Delete',\n subject: { name: 'TODO: item?.name', type: 'Action' },\n description: 'Click CONFIRM to delete this Action',\n buttonVariant: AdoptechButtonVariant.Warning,\n onConfirm: async () => {\n setShowEditActionModal(false);\n await dispatch(deleteAction(currentCalendarItemId));\n await refetchPageItems();\n dispatch(showGlobalToast('Action was deleted successfully.'));\n },\n };\n\n const deleteEventCommand: CommandConfirmation = {\n ...deleteActionCommand,\n description: 'Click CONFIRM to delete this Event',\n onConfirm: async () => {\n const id = currentCalendarItemId;\n setShowEditEventModal(false);\n\n await dispatch(deleteEvent(id));\n await refetchPageItems();\n dispatch(showGlobalToast('Event was deleted successfully.'));\n },\n };\n\n const deleteCorrectiveActionCommand: CommandConfirmation = {\n ...deleteActionCommand,\n description: 'Click CONFIRM to delete this Corrective Action',\n onConfirm: async () => {\n setShowCorrectiveActionModal(false);\n await dispatch(deleteCorrectiveAction(currentCalendarItemId));\n await refetchPageItems();\n dispatch(showGlobalToast('Corrective Action was deleted successfully.'));\n },\n };\n\n const deleteIncidentCommand: CommandConfirmation = {\n ...deleteActionCommand,\n description: 'Click CONFIRM to delete this Incident',\n onConfirm: async () => {\n setShowIncidentModal(false);\n await dispatch(deleteIncident(currentCalendarItemId));\n await refetchPageItems();\n dispatch(showGlobalToast('Incident was deleted successfully.'));\n },\n };\n\n // If we post/patch action type => post/delete action reference.\n\n // 3 cases: (Ignore risk/control related logic until risk register future ticket)\n // Create new action -> create new reference\n // Change action type legal-pestel or pestel-legal -> remove old reference async && create new reference\n // Change action type from legal/pestel -> remove old reference\n const isPestel = (calendarItem: VendorActionModel | VendorActionExtended) =>\n calendarItem.actionType === VendorEventEventType.PestelReview;\n const isLegal = (calendarItem: VendorActionModel | VendorActionExtended) =>\n calendarItem.actionType === VendorEventEventType.LegalRegisterReview;\n\n const refetchPageItems = async () => {\n setShowEditActionModal(false);\n setShowEditEventModal(false);\n setShowCorrectiveActionModal(false);\n setShowIncidentModal(false);\n cleanup();\n await refetchCurrentDateCalendarItems();\n };\n return (\n <>\n {showEditActionModal && (\n {\n setShowEditActionModal(false);\n }}\n onDelete={(id: VendorActionModel['id']) => {\n setShowEditActionModal(false);\n command(deleteActionCommand);\n }}\n />\n )}\n {showEditEventModal && (\n {\n setShowEditEventModal(false);\n command(deleteEventCommand);\n }}\n close={() => {\n setShowEditEventModal(false);\n }}\n />\n )}\n\n {showCorrectiveActionModal && (\n {\n setShowCorrectiveActionModal(false);\n command(deleteCorrectiveActionCommand);\n }}\n close={() => {\n setShowCorrectiveActionModal(false);\n }}\n />\n )}\n\n {showIncidentModal && (\n {\n setShowIncidentModal(false);\n command(deleteIncidentCommand);\n }}\n close={() => {\n setShowIncidentModal(false);\n }}\n />\n )}\n\n {\n // if we click cancel or outside delete modal, show edit modal\n if (!confirmed) {\n if (currentActionId) return setShowEditActionModal(true);\n if (currentEventId) return setShowEditEventModal(true);\n if (currentCorrectiveActionId)\n return setShowCorrectiveActionModal(true);\n if (currentIncidentId) return setShowIncidentModal(true);\n }\n command(null);\n }}\n />\n \n );\n};\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n faCloudDownload,\n faSpinner,\n faTrashAlt,\n} from '@fortawesome/pro-solid-svg-icons';\nimport classNames from 'classnames';\nimport { useSelector } from 'react-redux';\nimport { useAppDispatch } from '../../../../hooks/useAppDispatch';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { AdoptechFileInput } from '../../../../components/AdoptechFileInput/AdoptechFileInput';\nimport { AdoptechTextInput2 } from '../../../../components/AdoptechTextInput2/AdoptechTextInput2';\nimport { isValidUrl } from '../../../../functions/isValidUrl';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport {\n downloadActionAttachment,\n downloadCorrectiveActionAttachment,\n downloadEventAttachment,\n downloadIncidentAttachment,\n} from '../../store/calendarThunks';\nimport {\n ActionFormType,\n CorrectiveActionFormType,\n EventFormType,\n IncidentFormType,\n} from '../../CalendarPage/CalendarPageModals';\n\nexport type CalendarModelExtended =\n | EventFormType\n | ActionFormType\n | CorrectiveActionFormType\n | IncidentFormType;\ninterface CalendarAttachmentsProps {\n model: CalendarModelExtended;\n type: 'event' | 'action' | 'incident' | 'corrective-action';\n setModel: React.Dispatch>;\n baseCss: string;\n readonlyMode: boolean;\n}\n\nconst CalendarAttachments: React.FC = ({\n model,\n setModel,\n baseCss,\n readonlyMode,\n type,\n}) => {\n const dispatch = useAppDispatch();\n const {\n downloadEventAttachmentStatus,\n downloadActionAttachmentStatus,\n downloadIncidentAttachmentStatus,\n downloadCorrectiveActionAttachmentStatus,\n } = useSelector((state: ApplicationState) => state.calendar);\n const handleDownloadAttachment = async (\n e: React.MouseEvent,\n attachment: CalendarAttachmentsProps['model']['attachments'][0]\n ) => {\n const notSavedYet = !attachment.id;\n if (notSavedYet) {\n const tempLink = document.createElement('a');\n tempLink.href = attachment.url;\n tempLink.download = attachment.filename;\n tempLink.target = '_blank';\n tempLink.click();\n return;\n }\n const thunks = {\n event: downloadEventAttachment,\n action: downloadActionAttachment,\n incident: downloadIncidentAttachment,\n 'corrective-action': downloadCorrectiveActionAttachment,\n };\n\n const thunk = thunks[type];\n const attachmentDetails = await dispatch(\n thunk({\n id: model.id,\n attachmentId: attachment.id,\n })\n ).unwrap();\n const tempLink = document.createElement('a');\n tempLink.href = attachmentDetails.url;\n tempLink.download = attachmentDetails.filename;\n tempLink.target = '_blank';\n tempLink.click();\n };\n\n const handleRemoveAttachment = (\n e: React.MouseEvent,\n attachment: CalendarAttachmentsProps['model']['attachments'][0]\n ) => {\n setModel(prevModel => {\n const newAttachments = prevModel.attachments.filter(\n attachmentDetails => attachmentDetails !== attachment\n );\n const deletedAttachmentIds = [\n ...(prevModel.deletedAttachmentIds || []),\n attachment.id,\n ].filter(id => id);\n\n return {\n ...prevModel,\n attachments: newAttachments,\n deletedAttachmentIds,\n };\n });\n };\n\n const isDownloading =\n downloadEventAttachmentStatus === 'loading' ||\n downloadActionAttachmentStatus === 'loading' ||\n downloadIncidentAttachmentStatus === 'loading' ||\n downloadCorrectiveActionAttachmentStatus === 'loading';\n\n return (\n <>\n
\n
\n setModel({ ...model, url: e.currentTarget.value })}\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n {!readonlyMode && (\n
\n
\n 0 ? '' : 'No files uploaded'\n }\n accept=\".pdf, .doc, .docx\"\n onChange={files => {\n const newFiles = files.map(file => {\n return {\n id: null,\n filename: file.name,\n url: URL.createObjectURL(file),\n rawFile: file,\n contentType: file.type,\n };\n });\n const newAttachments = [\n ...(model.attachments || []),\n ...newFiles,\n ];\n setModel({\n ...model,\n attachments: newAttachments,\n });\n }}\n extraClass=\"no-gap\"\n />\n
\n
\n )}\n {(model.attachments || []).length > 0 && (\n
\n
\n {model.attachments\n .sort((a, b) => a.filename.localeCompare(b.filename))\n .map(attachment => {\n return (\n \n handleDownloadAttachment(e, attachment)}\n className={classNames([baseCss + '--link'], {\n disabled: isDownloading,\n })}\n >\n {attachment.filename}\n \n \n handleRemoveAttachment(e, attachment)}\n />\n
\n );\n })}\n
\n
\n )}\n \n );\n};\n\nexport default CalendarAttachments;\n","import React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport './EditEventModal.scss';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport moment from 'moment';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport AdoptechModal from '../../../components/AdoptechModal/AdoptechModal';\nimport { AdoptechTextInput2 } from '../../../components/AdoptechTextInput2/AdoptechTextInput2';\nimport { AdoptechTextArea2 } from '../../../components/AdoptechTextArea2/AdoptechTextArea2';\nimport { AdoptechDatePicker2 } from '../../../components/AdoptechDatePicker2/AdoptechDatePicker2';\nimport { AdoptechReactSelect2 } from '../../../components/AdoptechReacSelect2/AdoptechReactSelect2';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { VendorEventEventType, VendorEventModel } from '../../../swagger';\nimport { fetchEvent } from '../store/calendarThunks';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport { useOwnerOptions } from '../../../hooks/useOwnerOptions';\nimport { AccessObject } from '../../../types/accessObject';\nimport { useCanFeature } from '../../../functions/access';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport CalendarAttachments from './CalendarAttachments/CalendarAttachments';\nimport { EventFormType } from '../CalendarPage/CalendarPageModals';\n\ninterface Props {\n init?: VendorEventModel['id'];\n close: () => void;\n confirm: ({\n name,\n description,\n owner,\n date,\n eventType,\n }: EventFormType) => void;\n show: boolean;\n onDelete?: (id: VendorEventModel['id']) => void;\n}\n\nconst baseCss = 'editEventModal';\n\nexport const eventTypes = [\n ['Document Review', VendorEventEventType.DocumentReview],\n ['External Audit', VendorEventEventType.ExternalAudit],\n ['Internal Audit', VendorEventEventType.InternalAudit],\n ['Legal Register Review', VendorEventEventType.LegalRegisterReview],\n ['Pestel Review', VendorEventEventType.PestelReview],\n ['Risk Register Review', VendorEventEventType.RiskRegisterReview],\n ['Management meeting', VendorEventEventType.SecurityMeeting],\n ['Security Training', VendorEventEventType.SecurityTraining],\n ['Control Review', VendorEventEventType.ControlReview],\n ['Control Check Review', VendorEventEventType.ControlCheckReview],\n ['Agreement Review', VendorEventEventType.AgreementReview],\n ['Policy Review', VendorEventEventType.PolicyReview],\n ['Incident BCP/DR Simulation', VendorEventEventType.IncidentBcpDrSimulation],\n ['Manual Test Due', VendorEventEventType.AssertionDueDate],\n ['Other', VendorEventEventType.Other],\n];\n\nexport const EditEventModal: React.FC = ({\n init = undefined,\n confirm = () => {},\n onDelete = () => {},\n close,\n show,\n}) => {\n const { users, ownerOptions: userOptions } = useOwnerOptions({\n includingGuest: true,\n });\n const [model, setModel] = useState({ id: init } as EventFormType);\n const deadline = model.date ? new Date(model.date) : null;\n\n const dataMissing =\n !model.name || !model.owner || !model.date || !model.eventType;\n\n const modalTitle = model.id ? 'Edit Event' : 'Create Event';\n\n const actionName = model.id ? 'Save' : 'Create';\n const hiddenTypes: string[] = [\n VendorEventEventType.ControlReview,\n VendorEventEventType.ControlCheckReview,\n VendorEventEventType.PolicyReview,\n VendorEventEventType.AgreementReview,\n VendorEventEventType.AssertionDueDate,\n ];\n const canManageCalendar = useCanFeature(AccessObject.calendar_manage);\n const readonlyMode = (model.id && !model.editable) || !canManageCalendar;\n\n const typeOptions = eventTypes\n .map(([label, value]) => ({ label, value }))\n .filter(option =>\n readonlyMode ? true : !hiddenTypes.includes(option.value)\n );\n\n const dispatch = useAppDispatch();\n const {\n createEventStatus,\n fetchActionStatus,\n fetchVendorEventStatus,\n isUpdatingCalendarItem,\n deleteActionStatus,\n deleteEventStatus,\n } = useSelector((state: ApplicationState) => state.calendar);\n const isDeletingCalendarItem =\n deleteActionStatus === 'loading' || deleteEventStatus === 'loading';\n const isFetchingCalendarItem =\n fetchActionStatus === 'loading' || fetchVendorEventStatus === 'loading';\n const isLoading = isFetchingCalendarItem || isDeletingCalendarItem;\n\n const fetchEventAsync = async (id: string) => {\n const action = await dispatch(fetchEvent(id)).unwrap();\n\n setModel(action);\n };\n\n useEffect(() => {\n model.id && fetchEventAsync(model.id);\n }, [model.id]);\n\n return (\n \n \n
{modalTitle}
\n
\n \n {isLoading && }\n {!isLoading && (\n
\n
\n
\n \n setModel({ ...model, name: e.currentTarget.value })\n }\n hasError={!model.name}\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n
\n
\n \n setModel({ ...model, description: e.currentTarget.value })\n }\n icon={faPen}\n disabled={readonlyMode}\n />\n
\n
\n
\n
\n \n setModel({\n ...model,\n eventType: option.value as VendorEventEventType,\n })\n }\n value={typeOptions.filter(\n option => option.value === model.eventType\n )}\n placeholder=\"Please select\"\n isDisabled={readonlyMode}\n />\n
\n
\n {\n setModel({\n ...model,\n owner: users.find(user => user.id === e.value),\n });\n }}\n value={userOptions.find(\n option => option.value == model.owner?.id\n )}\n isDisabled={readonlyMode}\n />\n
\n
\n
\n
\n {\n const endOfDay = moment(d).endOf('day');\n const endOfDayToDateTime = endOfDay.toJSON();\n\n setModel({\n ...model,\n date: endOfDayToDateTime,\n });\n }}\n disabled={readonlyMode}\n />\n
\n
\n
\n \n
\n )}\n
\n \n {model.id ? (\n
\n onDelete(model.id)}\n >\n Delete\n \n
\n ) : (\n {\n close();\n }}\n >\n Cancel\n \n )}\n confirm(model)}\n variant={AdoptechButtonVariant.Primary}\n >\n {actionName}\n \n
\n
\n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { sort } from '../../../functions/sort';\nimport { sortByDate } from '../../../functions/sortByDate';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { ColumnSort } from '../../../types/columnSort';\nimport { Grid } from '../../../types/grid';\nimport { selectSortSettings } from '../../../selectors/selectSortSettings';\nimport { CalendarItemModel } from '../../../swagger/models/CalendarItemModel';\n\nexport const sortCalendarItems = (\n a: CalendarItemModel,\n b: CalendarItemModel,\n columnSort: ColumnSort\n) => {\n const typedColumn = columnSort.name as keyof CalendarItemModel;\n\n if (['date'].includes(typedColumn)) {\n const dateColumn = typedColumn as 'date';\n return sortByDate(a[dateColumn], b[dateColumn], columnSort.direction);\n }\n\n return sort(a[typedColumn] || '', b[typedColumn] || '', columnSort.direction);\n};\nexport const isAction = (item: CalendarItemModel) =>\n item.type === 'VendorAction';\nexport const isEvent = (item: CalendarItemModel) => item.type === 'VendorEvent';\nexport const isCorrectiveAction = (item: CalendarItemModel) =>\n item.type === 'CorrectiveAction';\nexport const isIncident = (item: CalendarItemModel) =>\n item.type === 'IncidentEvent';\nexport const selectCalendarHSItems = createSelector(\n (state: ApplicationState) => state.calendar.items,\n selectSortSettings(Grid.Calendar),\n (items: CalendarItemModel[], sortSetting) => {\n return [...items].sort((a, b) =>\n sortCalendarItems(a, b, sortSetting.columnSort)\n );\n }\n);\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { calendarState } from './calendarState';\nimport moment from 'moment';\nimport { CalendarItemList } from '../../../swagger/models/CalendarItemList';\nimport {\n createCorrectiveAction,\n createEvent,\n createIncident,\n createNewAction,\n deleteAction,\n deleteCorrectiveAction,\n deleteEvent,\n deleteIncident,\n downloadActionAttachment,\n downloadCorrectiveActionAttachment,\n downloadEventAttachment,\n downloadIncidentAttachment,\n fetchAction,\n fetchCalendarItems,\n fetchCorrectiveAction,\n fetchEvent,\n fetchIncident,\n updateCorrectiveAction,\n updateIncident,\n} from './calendarThunks';\n\nconst initialState = {\n items: [],\n filters: {\n viewMode: 'actions_and_events',\n // store dates as strings to fix serializable redux issue\n startPeriod: moment().startOf('day').toJSON(),\n endPeriod: moment().add(3, 'months').endOf('day').toJSON(),\n showMyItems: false,\n showCompleted: true,\n page: 1,\n totalPages: null,\n },\n isFetchingVendorActions: false,\n isUpdatingCalendarItem: false,\n downloadEventAttachmentStatus: 'idle',\n downloadActionAttachmentStatus: 'idle',\n downloadCorrectiveActionAttachmentStatus: 'idle',\n downloadIncidentAttachmentStatus: 'idle',\n fetchActionStatus: 'idle',\n fetchVendorEventStatus: 'idle',\n deleteActionStatus: 'idle',\n deleteEventStatus: 'idle',\n createEventStatus: 'idle',\n createCorrectiveActionStatus: 'idle',\n deleteCorrectiveActionStatus: 'idle',\n updateCorrectiveActionStatus: 'idle',\n fetchCorrectiveActionStatus: 'idle',\n createIncidentStatus: 'idle',\n deleteIncidentStatus: 'idle',\n updateIncidentStatus: 'idle',\n fetchIncidentStatus: 'idle',\n} as calendarState;\n\nconst calendarSlice = createSlice({\n initialState,\n name: 'calendarSlice',\n reducers: {\n updateCalendarItemSuccess: state => {\n state.isUpdatingCalendarItem = false;\n },\n updateCalendarItemFailure: (state, _) => {\n state.isUpdatingCalendarItem = false;\n },\n updateCalendarItemRequest: state => {\n state.isUpdatingCalendarItem = true;\n },\n cleanupItems: state => {\n state.items = [];\n },\n\n fetchVendorActionsFailure: (state, _) => {\n state.isFetchingVendorActions = false;\n },\n fetchVendorActionsRequest: state => {\n state.isFetchingVendorActions = true;\n },\n fetchVendorActionsSuccess: state => {\n state.isFetchingVendorActions = false;\n },\n\n setCalendarFilters: (\n state,\n action: PayloadAction\n ) => {\n state.filters = action.payload;\n },\n },\n extraReducers: builder => {\n builder\n .addCase(downloadEventAttachment.pending, state => {\n state.downloadEventAttachmentStatus = 'loading';\n })\n .addCase(downloadEventAttachment.fulfilled, state => {\n state.downloadEventAttachmentStatus = 'succeeded';\n })\n .addCase(downloadEventAttachment.rejected, state => {\n state.downloadEventAttachmentStatus = 'failed';\n })\n .addCase(downloadActionAttachment.pending, state => {\n state.downloadActionAttachmentStatus = 'loading';\n })\n .addCase(downloadActionAttachment.fulfilled, state => {\n state.downloadActionAttachmentStatus = 'succeeded';\n })\n .addCase(downloadActionAttachment.rejected, state => {\n state.downloadActionAttachmentStatus = 'failed';\n })\n .addCase(fetchAction.pending, state => {\n state.fetchActionStatus = 'loading';\n })\n .addCase(fetchAction.fulfilled, state => {\n state.fetchActionStatus = 'succeeded';\n })\n .addCase(fetchAction.rejected, state => {\n state.fetchActionStatus = 'failed';\n })\n .addCase(fetchEvent.pending, state => {\n state.fetchVendorEventStatus = 'loading';\n })\n .addCase(fetchEvent.fulfilled, state => {\n state.fetchVendorEventStatus = 'succeeded';\n })\n .addCase(fetchEvent.rejected, state => {\n state.fetchVendorEventStatus = 'failed';\n })\n .addCase(deleteEvent.pending, state => {\n state.deleteEventStatus = 'loading';\n })\n .addCase(deleteEvent.fulfilled, state => {\n state.deleteEventStatus = 'succeeded';\n })\n .addCase(deleteEvent.rejected, state => {\n state.deleteEventStatus = 'failed';\n })\n .addCase(deleteAction.pending, state => {\n state.deleteActionStatus = 'loading';\n })\n .addCase(deleteAction.fulfilled, state => {\n state.deleteActionStatus = 'succeeded';\n })\n .addCase(deleteAction.rejected, state => {\n state.deleteActionStatus = 'failed';\n })\n .addCase(createEvent.pending, state => {\n state.createEventStatus = 'loading';\n })\n .addCase(createEvent.fulfilled, state => {\n state.createEventStatus = 'succeeded';\n })\n .addCase(createEvent.rejected, state => {\n state.createEventStatus = 'failed';\n })\n .addCase(createNewAction.pending, state => {\n state.createActionStatus = 'loading';\n })\n .addCase(createNewAction.fulfilled, state => {\n state.createActionStatus = 'succeeded';\n })\n .addCase(createNewAction.rejected, state => {\n state.createActionStatus = 'failed';\n })\n .addCase(fetchCalendarItems.pending, state => {\n state.fetchCalendarItemsStatus = 'loading';\n })\n .addCase(fetchCalendarItems.fulfilled, (state, action) => {\n state.fetchCalendarItemsStatus = 'succeeded';\n\n if (action.payload.meta.page === 1) {\n state.items = action.payload.data;\n state.filters = {\n ...state.filters,\n ...{ totalPages: action.payload.meta.totalPages },\n };\n } else {\n const newItems = action.payload.data.filter(\n newItem => !state.items.some(item => item.id === newItem.id)\n );\n state.items = state.items.concat(newItems);\n }\n })\n .addCase(createCorrectiveAction.rejected, state => {\n state.createCorrectiveActionStatus = 'failed';\n })\n .addCase(createCorrectiveAction.pending, state => {\n state.createCorrectiveActionStatus = 'loading';\n })\n .addCase(createCorrectiveAction.fulfilled, state => {\n state.createCorrectiveActionStatus = 'succeeded';\n })\n .addCase(deleteCorrectiveAction.rejected, state => {\n state.deleteCorrectiveActionStatus = 'failed';\n })\n .addCase(deleteCorrectiveAction.pending, state => {\n state.deleteCorrectiveActionStatus = 'loading';\n })\n .addCase(deleteCorrectiveAction.fulfilled, state => {\n state.deleteCorrectiveActionStatus = 'succeeded';\n })\n .addCase(fetchCorrectiveAction.pending, state => {\n state.fetchCorrectiveActionStatus = 'loading';\n })\n .addCase(fetchCorrectiveAction.fulfilled, state => {\n state.fetchCorrectiveActionStatus = 'succeeded';\n })\n .addCase(fetchCorrectiveAction.rejected, state => {\n state.fetchCorrectiveActionStatus = 'failed';\n })\n .addCase(updateCorrectiveAction.rejected, state => {\n state.updateCorrectiveActionStatus = 'failed';\n })\n .addCase(updateCorrectiveAction.pending, state => {\n state.updateCorrectiveActionStatus = 'loading';\n })\n .addCase(updateCorrectiveAction.fulfilled, state => {\n state.updateCorrectiveActionStatus = 'succeeded';\n })\n .addCase(createIncident.pending, state => {\n state.createIncidentStatus = 'loading';\n })\n .addCase(createIncident.fulfilled, state => {\n state.createIncidentStatus = 'succeeded';\n })\n .addCase(createIncident.rejected, state => {\n state.createIncidentStatus = 'failed';\n })\n .addCase(deleteIncident.pending, state => {\n state.deleteIncidentStatus = 'loading';\n })\n .addCase(deleteIncident.fulfilled, state => {\n state.deleteIncidentStatus = 'succeeded';\n })\n .addCase(deleteIncident.rejected, state => {\n state.deleteIncidentStatus = 'failed';\n })\n .addCase(updateIncident.pending, state => {\n state.updateIncidentStatus = 'loading';\n })\n .addCase(updateIncident.fulfilled, state => {\n state.updateIncidentStatus = 'succeeded';\n })\n .addCase(updateIncident.rejected, state => {\n state.updateIncidentStatus = 'failed';\n })\n .addCase(fetchIncident.pending, state => {\n state.fetchIncidentStatus = 'loading';\n })\n .addCase(fetchIncident.fulfilled, state => {\n state.fetchIncidentStatus = 'succeeded';\n })\n .addCase(fetchIncident.rejected, state => {\n state.fetchIncidentStatus = 'failed';\n })\n .addCase(downloadCorrectiveActionAttachment.pending, state => {\n state.downloadCorrectiveActionAttachmentStatus = 'loading';\n })\n .addCase(downloadCorrectiveActionAttachment.fulfilled, state => {\n state.downloadCorrectiveActionAttachmentStatus = 'succeeded';\n })\n .addCase(downloadCorrectiveActionAttachment.rejected, state => {\n state.downloadCorrectiveActionAttachmentStatus = 'failed';\n })\n .addCase(downloadIncidentAttachment.pending, state => {\n state.downloadIncidentAttachmentStatus = 'loading';\n })\n .addCase(downloadIncidentAttachment.fulfilled, state => {\n state.downloadIncidentAttachmentStatus = 'succeeded';\n })\n .addCase(downloadIncidentAttachment.rejected, state => {\n state.downloadIncidentAttachmentStatus = 'failed';\n });\n },\n});\n\nexport const {\n cleanupItems,\n updateCalendarItemSuccess,\n updateCalendarItemFailure,\n updateCalendarItemRequest,\n fetchVendorActionsRequest,\n fetchVendorActionsFailure,\n fetchVendorActionsSuccess,\n setCalendarFilters,\n} = calendarSlice.actions;\nexport default calendarSlice.reducer;\n","import { api } from '../../../api/api';\n\nimport {\n CorrectiveActionExtendedFromJSON,\n CorrectiveActionModel,\n CorrectiveActionsCorrectiveActionIdPatchRequest,\n IncidentEventExtendedFromJSON,\n IncidentEventModel,\n LegalRegisterModel,\n ReferenceCreatePayloadReferenceReferenceableTypeEnum,\n SharedAttachmentModel,\n VendorActionExtended,\n VendorActionExtendedFromJSON,\n VendorActionModel,\n VendorActionsVendorActionIdPatchRequest,\n VendorEventExtended,\n VendorEventExtendedFromJSON,\n VendorEventModel,\n VendorEventsVendorEventIdPatchRequest,\n VendorsVendorIdCalendarGetRequest,\n VendorsVendorIdCalendarGetViewModeEnum,\n VendorsVendorIdVendorActionsGetRequest,\n VendorsVendorIdVendorActionsPostRequest,\n VendorsVendorIdVendorEventsPostRequest,\n} from '../../../swagger';\nimport { VoidThunk } from '../../../types/voidThunk';\nimport {\n getErrorMessage,\n handleThunkError,\n} from '../../../store/helpers/thunkHelpers';\nimport {\n fetchVendorActionsFailure,\n fetchVendorActionsRequest,\n fetchVendorActionsSuccess,\n updateCalendarItemFailure,\n updateCalendarItemRequest,\n updateCalendarItemSuccess,\n} from './calendarSlice';\nimport { calendarState } from './calendarState';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n IncidentEventsIncidentEventIdPatchRequest,\n VendorsVendorIdCorrectiveActionsPostRequest,\n VendorsVendorIdIncidentEventsPostRequest,\n} from '../../../swagger/apis/DefaultApi';\nimport {\n WithoutVendorId,\n buildActionFormData,\n buildCorrectiveActionFormData,\n buildEventFormData,\n buildIncidentFormData,\n rawRequest,\n} from './calendarThunksApiHelpers';\n\nconst removeEmptyValues = (obj: T): Partial => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => !!value)\n ) as Partial;\n};\n\nexport const fetchCalendarItems = createAsyncThunk(\n 'calendar/fetchItems',\n async (\n {\n filters,\n currentVendorUserId,\n }: {\n filters: calendarState['filters'];\n currentVendorUserId: string;\n },\n { dispatch, getState }\n ) => {\n try {\n const vendorId = (getState() as ApplicationState).vendors.currentVendor\n .id;\n const ownerIds = filters.showMyItems ? [currentVendorUserId] : null;\n const statuses = filters.showCompleted ? null : ['overdue', 'pending'];\n const payload = {\n vendorId,\n startDate: filters.startPeriod,\n endDate: filters.endPeriod,\n ownerIds,\n statuses,\n textSearch: filters.search,\n perPage: '25',\n page: filters.page.toString(),\n viewMode: filters.viewMode as VendorsVendorIdCalendarGetViewModeEnum,\n };\n const response = await api().vendorsVendorIdCalendarGet(\n removeEmptyValues(payload) as VendorsVendorIdCalendarGetRequest\n );\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred while GET /calendar. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport type updateActionParams = Parameters[1];\n\nexport const updateAction =\n (\n currentVendorAction: VendorActionExtended,\n payload: Omit,\n onSuccess: (\n item: VendorActionExtended,\n itemBeforeUpdate: VendorActionExtended\n ) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(updateCalendarItemRequest());\n\n const formData = buildActionFormData(payload);\n formData.append(\n `vendor_action[completed]`,\n payload.vendorActionCompleted as any\n );\n\n const rawResponse = await rawRequest(\n `/api/v1/vendor_actions/${currentVendorAction?.id}`,\n {\n method: 'PATCH',\n body: formData,\n }\n );\n\n if (rawResponse.status >= 200 && rawResponse.status < 300) {\n const response = VendorActionExtendedFromJSON(await rawResponse.json());\n dispatch(updateCalendarItemSuccess());\n onSuccess(response, currentVendorAction);\n } else {\n throw rawResponse;\n }\n } catch (err) {\n const errorMessage = await getErrorMessage(\n err,\n 'An error occurred while updating action. Please try again or contact support.'\n );\n dispatch(updateCalendarItemFailure(errorMessage));\n }\n };\n\nexport const deleteAction = createAsyncThunk(\n 'calendar/deleteAction',\n async (vendorActionId: VendorActionModel['id'], { dispatch }) => {\n try {\n await api().vendorActionsVendorActionIdDelete({\n vendorActionId,\n });\n } catch (error) {\n await handleThunkError(\n 'An error occurred while deleting vendor action. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchEvent = createAsyncThunk(\n 'calendar/fetchEvent',\n async (id: VendorEventModel['id'], { dispatch }) => {\n try {\n const event = await api().vendorEventsVendorEventIdGet({\n vendorEventId: id,\n });\n return event;\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching vendor event. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport type createEventParams = Parameters[0];\n\nexport const createEvent = createAsyncThunk(\n 'calendar/createEvent',\n async (\n payload: WithoutVendorId,\n { dispatch, getState }\n ) => {\n try {\n const vendorId = (getState() as ApplicationState).vendors.currentVendor\n .id;\n\n const formData = buildEventFormData(payload);\n const rawResponse = await rawRequest(\n `/api/v1/vendors/${vendorId}/vendor_events`,\n {\n method: 'POST',\n body: formData,\n }\n );\n\n if (rawResponse.status >= 200 && rawResponse.status < 300) {\n const response = VendorEventExtendedFromJSON(await rawResponse.json());\n return response;\n } else {\n throw rawResponse;\n }\n } catch (error) {\n await handleThunkError(\n 'An error occurred while creating event. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport type updateEventParams = Parameters[1];\n\nexport const updateEvent =\n (\n eventId: VendorEventModel['id'],\n payload: WithoutVendorId,\n onSuccess: (item: VendorEventExtended) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(updateCalendarItemRequest());\n\n const formData = buildEventFormData(payload);\n const rawResponse = await rawRequest(`/api/v1/vendor_events/${eventId}`, {\n method: 'PATCH',\n body: formData,\n });\n\n if (rawResponse.status >= 200 && rawResponse.status < 300) {\n const response = VendorEventExtendedFromJSON(await rawResponse.json());\n dispatch(updateCalendarItemSuccess());\n onSuccess(response);\n } else {\n throw rawResponse;\n }\n } catch (err) {\n const errorMessage = await getErrorMessage(\n err,\n 'An error occurred while updating event. Please try again or contact support.'\n );\n dispatch(updateCalendarItemFailure(errorMessage));\n }\n };\n\nexport const deleteEvent = createAsyncThunk(\n 'calendar/deleteEvent',\n async (vendorEventId: VendorEventModel['id'], { dispatch }) => {\n try {\n await api().vendorEventsVendorEventIdDelete({\n vendorEventId,\n });\n } catch (error) {\n await handleThunkError(\n 'An error occurred while deleting event. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\n// For calendar HS in legal/pestel registry:\nexport const fetchVendorActions =\n (\n registerId: VendorsVendorIdVendorActionsGetRequest['referenceableId'],\n registerType: VendorsVendorIdVendorActionsGetRequest['referenceableType'],\n onSuccess: (actions: VendorActionModel[]) => void\n ): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor.id;\n dispatch(fetchVendorActionsRequest());\n const response = await api().vendorsVendorIdVendorActionsGet({\n vendorId,\n referenceableId: registerId,\n referenceableType: registerType,\n });\n dispatch(fetchVendorActionsSuccess());\n onSuccess(response);\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching Actions. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchVendorActionsFailure(apiErrorMessage));\n }\n }\n };\n\n// if pestel or legal\nexport const createActionReference =\n (\n vendorActionId: VendorActionModel['id'],\n referenceableId: LegalRegisterModel['id'],\n referenceableType: ReferenceCreatePayloadReferenceReferenceableTypeEnum,\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n await api().vendorActionsVendorActionIdReferencesPost({\n vendorActionId,\n body: {\n reference: {\n referenceableId,\n referenceableType,\n },\n },\n });\n onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while adding action. Please try again or contact support.'\n );\n // TODO add separate state for failure\n dispatch(fetchVendorActionsFailure(apiErrorMessage));\n }\n };\n\nexport const deleteActionReference =\n (\n vendorActionId: VendorActionModel['id'],\n referenceableId: LegalRegisterModel['id'],\n referenceableType: ReferenceCreatePayloadReferenceReferenceableTypeEnum\n ): VoidThunk =>\n async dispatch => {\n try {\n await api().vendorActionsVendorActionIdReferencesDelete({\n vendorActionId,\n referenceableId,\n referenceableType,\n });\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while deleting action reference. Please try again or contact support.'\n );\n // TODO add separate state for failure\n dispatch(fetchVendorActionsFailure(apiErrorMessage));\n }\n };\nexport const downloadEventAttachment = createAsyncThunk(\n 'calendar/downloadEventAttachment',\n async (\n {\n id,\n attachmentId,\n }: {\n id: VendorEventModel['id'];\n attachmentId: SharedAttachmentModel['id'];\n },\n { dispatch }\n ) => {\n try {\n const event = await api().vendorEventsVendorEventIdGet({\n vendorEventId: id,\n });\n return event.attachments.find(\n attachment => attachment.id === attachmentId\n );\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching event attachment. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const downloadActionAttachment = createAsyncThunk(\n 'calendar/downloadActionAttachment',\n async (\n {\n id,\n attachmentId,\n }: {\n id: VendorActionModel['id'];\n attachmentId: SharedAttachmentModel['id'];\n },\n { dispatch }\n ) => {\n try {\n const action = await api().vendorActionsVendorActionIdGet({\n vendorActionId: id,\n });\n return action.attachments.find(\n attachment => attachment.id === attachmentId\n );\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching action attachment. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const downloadCorrectiveActionAttachment = createAsyncThunk(\n 'calendar/downloadCorrectiveActionAttachment',\n async (\n {\n id,\n attachmentId,\n }: {\n id: CorrectiveActionModel['id'];\n attachmentId: SharedAttachmentModel['id'];\n },\n { dispatch }\n ) => {\n try {\n const model = await api().correctiveActionsCorrectiveActionIdGet({\n correctiveActionId: id,\n });\n return model.attachments.find(\n attachment => attachment.id === attachmentId\n );\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching corrective action attachment. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const downloadIncidentAttachment = createAsyncThunk(\n 'calendar/downloadIncidentAttachment',\n async (\n {\n id,\n attachmentId,\n }: {\n id: IncidentEventModel['id'];\n attachmentId: SharedAttachmentModel['id'];\n },\n { dispatch }\n ) => {\n try {\n const model = await api().incidentEventsIncidentEventIdGet({\n incidentEventId: id,\n });\n return model.attachments.find(\n attachment => attachment.id === attachmentId\n );\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching incident attachment. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchAction = createAsyncThunk(\n 'calendar/fetchAction',\n async (id: VendorActionModel['id'], { dispatch }) => {\n try {\n const action = await api().vendorActionsVendorActionIdGet({\n vendorActionId: id,\n });\n return action;\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching action. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport type createNewActionParams = Parameters[0];\n\nexport const createNewAction = createAsyncThunk(\n 'calendar/createAction',\n async (\n {\n payload,\n }: {\n payload: WithoutVendorId;\n },\n { dispatch, getState }\n ) => {\n try {\n const vendorId = (getState() as ApplicationState).vendors.currentVendor\n ?.id;\n const formData = buildActionFormData(payload);\n const rawResponse = await rawRequest(\n `/api/v1/vendors/${vendorId}/vendor_actions`,\n {\n method: 'POST',\n body: formData,\n }\n );\n\n if (rawResponse.status >= 200 && rawResponse.status < 300) {\n const response = VendorActionExtendedFromJSON(await rawResponse.json());\n return response;\n } else {\n throw rawResponse;\n }\n } catch (error) {\n await handleThunkError(\n 'An error occurred while creating vendor action. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport type createCorrectiveActionParams = Parameters<\n typeof createCorrectiveAction\n>[0];\n\nexport const createCorrectiveAction = createAsyncThunk(\n 'calendar/createCorrectiveAction',\n async (\n body: WithoutVendorId,\n { dispatch, getState }\n ) => {\n try {\n const vendorId = (getState() as ApplicationState).vendors.currentVendor\n ?.id;\n\n const payload: VendorsVendorIdCorrectiveActionsPostRequest = {\n vendorId,\n ...body,\n };\n const formData = buildCorrectiveActionFormData(payload);\n const rawResponse = await rawRequest(\n `/api/v1/vendors/${vendorId}/corrective_actions`,\n {\n method: 'POST',\n body: formData,\n }\n );\n if (isResponse200(rawResponse)) {\n return CorrectiveActionExtendedFromJSON(await rawResponse.json());\n } else {\n throw rawResponse;\n }\n } catch (error) {\n await handleThunkError(\n 'An error occurred while creating corrective action. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const deleteCorrectiveAction = createAsyncThunk(\n 'calendar/deleteCorrectiveAction',\n async (id: CorrectiveActionModel['id'], { dispatch }) => {\n try {\n await api().correctiveActionsCorrectiveActionIdDelete({\n correctiveActionId: id,\n });\n } catch (error) {\n await handleThunkError(\n 'An error occurred while deleting corrective action. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchCorrectiveAction = createAsyncThunk(\n 'calendar/fetchCorrectiveAction',\n async (id: CorrectiveActionModel['id'], { dispatch }) => {\n try {\n return await api().correctiveActionsCorrectiveActionIdGet({\n correctiveActionId: id,\n });\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching corrective action. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport type updateCorrectiveActionParams = Parameters<\n typeof updateCorrectiveAction\n>[0];\n\nexport const updateCorrectiveAction = createAsyncThunk(\n 'calendar/updateCorrectiveAction',\n async (\n body: CorrectiveActionsCorrectiveActionIdPatchRequest,\n { dispatch, getState }\n ) => {\n try {\n const formData = buildCorrectiveActionFormData(body);\n const rawResponse = await rawRequest(\n `/api/v1/corrective_actions/${body.correctiveActionId}`,\n {\n method: 'PATCH',\n body: formData,\n }\n );\n\n if (isResponse200(rawResponse)) {\n return CorrectiveActionExtendedFromJSON(await rawResponse.json());\n } else {\n throw rawResponse;\n }\n } catch (error) {\n await handleThunkError(\n 'An error occurred while updating corrective action. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport type createIncidentParams = Parameters[0];\n\nconst isResponse200 = (response: Response) =>\n response.status >= 200 && response.status < 300;\nexport const createIncident = createAsyncThunk(\n 'calendar/createIncident',\n async (\n body: WithoutVendorId,\n { dispatch, getState }\n ) => {\n try {\n const vendorId = (getState() as ApplicationState).vendors.currentVendor\n .id;\n const payload = {\n vendorId,\n ...body,\n };\n\n const formData = buildIncidentFormData(payload);\n const rawResponse = await rawRequest(\n `/api/v1/vendors/${vendorId}/incident_events`,\n {\n method: 'POST',\n body: formData,\n }\n );\n if (isResponse200(rawResponse)) {\n return IncidentEventExtendedFromJSON(await rawResponse.json());\n } else {\n throw rawResponse;\n }\n // return await api().vendorsVendorIdIncidentEventsPost(payload);\n } catch (error) {\n await handleThunkError(\n 'An error occurred while creating incident. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const deleteIncident = createAsyncThunk(\n 'calendar/deleteIncident',\n async (id: IncidentEventModel['id'], { dispatch }) => {\n try {\n await api().incidentEventsIncidentEventIdDelete({\n incidentEventId: id,\n });\n } catch (error) {\n await handleThunkError(\n 'An error occurred while deleting incident. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchIncident = createAsyncThunk(\n 'calendar/fetchIncident',\n async (id: IncidentEventModel['id'], { dispatch }) => {\n try {\n return await api().incidentEventsIncidentEventIdGet({\n incidentEventId: id,\n });\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching incident. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport type updateIncidentParams = Parameters[0];\n\nexport const updateIncident = createAsyncThunk(\n 'calendar/updateIncident',\n async (body: IncidentEventsIncidentEventIdPatchRequest, { dispatch }) => {\n try {\n const formData = buildIncidentFormData(body);\n const rawResponse = await rawRequest(\n `/api/v1/incident_events/${body.incidentEventId}`,\n {\n method: 'PATCH',\n body: formData,\n }\n );\n\n if (isResponse200(rawResponse)) {\n return IncidentEventExtendedFromJSON(await rawResponse.json());\n } else {\n throw rawResponse;\n }\n } catch (error) {\n await handleThunkError(\n 'An error occurred while updating incident. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n","import { getMetaContent } from '../../../functions/getMetaContent';\nimport {\n VendorActionsVendorActionIdPatchRequest,\n VendorEventsVendorEventIdPatchRequest,\n} from '../../../swagger';\nimport {\n createCorrectiveActionParams,\n createEventParams,\n createIncidentParams,\n createNewActionParams,\n updateActionParams,\n updateCorrectiveActionParams,\n updateEventParams,\n updateIncidentParams,\n} from './calendarThunks';\n\nexport type WithoutVendorId = Omit;\n\n// All helpers needed to support multiple attachments upload\n// In both cases:\n// - type: file, or type: string, format: binary\n// Swagger Code Generator makes two mistakes in the generated code:\n// 1. `useFormData` not used which results in an invalid `Content-Type` header\n// 2. Incorrect handling of arrays of files, resulting in an invalid array of files format\n// - Swagger documentation: https://swagger.io/docs/specification/2-0/file-upload/\n// - Related issue: https://github.com/OAI/OpenAPI-Specification/issues/254\n// TODO: Consider updating to the latest version of https://github.com/OpenAPITools/openapi-generator-cli,\n// particularly version 2.0, to potentially resolve these issues.\n// TODO: Plan for an update to OpenAPI 3.0, as it supports multiple file uploads natively.\n\nexport const buildActionFormData = (\n payload: WithoutVendorId<\n createNewActionParams['payload'] | updateActionParams\n >\n): FormData => {\n const formData = new FormData();\n const root = 'vendor_action';\n formData.append(`${root}[name]`, payload.vendorActionName);\n if (payload.vendorActionDescription) {\n formData.append(`${root}[description]`, payload.vendorActionDescription);\n }\n formData.append(`${root}[due_date]`, payload.vendorActionDueDate);\n formData.append(`${root}[action_type]`, payload.vendorActionActionType);\n formData.append(`${root}[owner_id]`, payload.vendorActionOwnerId);\n\n if (payload.vendorActionUrl) {\n formData.append(`${root}[url]`, payload.vendorActionUrl);\n }\n\n if (payload.vendorActionAttachments) {\n payload.vendorActionAttachments.forEach(file => {\n formData.append(`${root}[attachments][]`, file);\n });\n }\n\n type UpdatePayload = VendorActionsVendorActionIdPatchRequest;\n const updatePayload = payload as UpdatePayload;\n if (updatePayload.vendorActionDeletedAttachmentIds) {\n updatePayload.vendorActionDeletedAttachmentIds.forEach(id => {\n formData.append(`${root}[deleted_attachment_ids][]`, id as any);\n });\n }\n\n if (updatePayload.vendorActionCompleted !== undefined) {\n formData.append(\n `${root}[completed]`,\n updatePayload.vendorActionCompleted as any\n );\n }\n\n return formData;\n};\n\nexport const rawRequest = async (path: string, options: RequestInit) => {\n const rawResponse = await fetch(path, {\n ...{\n headers: {\n 'X-CSRF-Token': getMetaContent('csrf-token'),\n },\n },\n ...options,\n });\n return rawResponse;\n};\n\nexport const buildCorrectiveActionFormData = (\n payload: WithoutVendorId<\n createCorrectiveActionParams | updateCorrectiveActionParams\n >\n): FormData => {\n const formData = new FormData();\n const root = 'corrective_action';\n formData.append(`${root}[name]`, payload.correctiveActionName);\n formData.append(`${root}[description]`, payload.correctiveActionDescription);\n formData.append(\n `${root}[date_identified]`,\n payload.correctiveActionDateIdentified\n );\n formData.append(`${root}[raised_by]`, payload.correctiveActionRaisedBy);\n formData.append(`${root}[root_cause]`, payload.correctiveActionRootCause);\n formData.append(`${root}[action_type]`, payload.correctiveActionActionType);\n formData.append(\n `${root}[corrective_actions]`,\n payload.correctiveActionCorrectiveActions\n );\n\n if (payload.correctiveActionIdentifier) {\n formData.append(`${root}[identifier]`, payload.correctiveActionIdentifier);\n }\n\n if (payload.correctiveActionOwnerId) {\n formData.append(`${root}[owner_id]`, payload.correctiveActionOwnerId);\n }\n\n if (payload.correctiveActionUrl) {\n formData.append(`${root}[url]`, payload.correctiveActionUrl);\n }\n\n if (payload.correctiveActionAttachments) {\n payload.correctiveActionAttachments.forEach(file => {\n formData.append(`${root}[attachments][]`, file);\n });\n }\n\n type UpdatePayload = updateCorrectiveActionParams;\n const updatePayload = payload as UpdatePayload;\n if (updatePayload.correctiveActionDeletedAttachmentIds) {\n updatePayload.correctiveActionDeletedAttachmentIds.forEach(id => {\n formData.append(`${root}[deleted_attachment_ids][]`, id as any);\n });\n }\n\n if (updatePayload.correctiveActionCompleted !== undefined) {\n formData.append(\n `${root}[completed]`,\n updatePayload.correctiveActionCompleted as any\n );\n }\n\n return formData;\n};\n\nexport const buildIncidentFormData = (\n payload: WithoutVendorId\n): FormData => {\n const formData = new FormData();\n const root = 'incident_event';\n\n formData.append(`${root}[name]`, payload.incidentEventName);\n formData.append(`${root}[description]`, payload.incidentEventDescription);\n formData.append(\n `${root}[date_identified]`,\n payload.incidentEventDateIdentified\n );\n formData.append(`${root}[raised_by]`, payload.incidentEventRaisedBy);\n formData.append(`${root}[root_cause]`, payload.incidentEventRootCause);\n formData.append(\n `${root}[preventative_actions]`,\n payload.incidentEventPreventativeActions\n );\n formData.append(`${root}[actions_taken]`, payload.incidentEventActionsTaken);\n formData.append(\n `${root}[data_breach]`,\n payload.incidentEventDataBreach.toString()\n );\n\n if (payload.incidentEventIdentifier) {\n formData.append(`${root}[identifier]`, payload.incidentEventIdentifier);\n }\n\n if (payload.incidentEventOwnerId) {\n formData.append(`${root}[owner_id]`, payload.incidentEventOwnerId);\n }\n\n if (payload.incidentEventUrl) {\n formData.append(`${root}[url]`, payload.incidentEventUrl);\n }\n\n if (payload.incidentEventAttachments) {\n payload.incidentEventAttachments.forEach(file => {\n formData.append(`${root}[attachments][]`, file);\n });\n }\n\n if (payload.incidentEventDataBreachDetails) {\n formData.append(\n `${root}[data_breach_details]`,\n payload.incidentEventDataBreachDetails\n );\n }\n\n type UpdatePayload = updateIncidentParams;\n const updatePayload = payload as UpdatePayload;\n\n if (updatePayload.incidentEventDeletedAttachmentIds) {\n updatePayload.incidentEventDeletedAttachmentIds.forEach(id => {\n formData.append(`${root}[deleted_attachment_ids][]`, id as any);\n });\n }\n\n if (updatePayload.incidentEventCompleted !== undefined) {\n formData.append(\n `${root}[completed]`,\n updatePayload.incidentEventCompleted.toString()\n );\n }\n\n return formData;\n};\n\nexport const buildEventFormData = (\n payload: WithoutVendorId\n): FormData => {\n const formData = new FormData();\n const root = 'vendor_event';\n formData.append(`${root}[name]`, payload.vendorEventName);\n formData.append(`${root}[description]`, payload.vendorEventDescription ?? '');\n formData.append(`${root}[date]`, payload.vendorEventDate);\n formData.append(`${root}[event_type]`, payload.vendorEventEventType);\n formData.append(`${root}[owner_id]`, payload.vendorEventOwnerId);\n\n if (payload.vendorEventUrl) {\n formData.append(`${root}[url]`, payload.vendorEventUrl);\n }\n\n if (payload.vendorEventAttachments) {\n payload.vendorEventAttachments.forEach(file => {\n formData.append(`${root}[attachments][]`, file);\n });\n }\n\n type UpdatePayload = VendorEventsVendorEventIdPatchRequest;\n const updatePayload = payload as UpdatePayload;\n if (updatePayload.vendorEventDeletedAttachmentIds) {\n updatePayload.vendorEventDeletedAttachmentIds.forEach(id => {\n formData.append(`${root}[deleted_attachment_ids][]`, id as any);\n });\n }\n\n return formData;\n};\n","import React, { useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { hideUploadLogoModal } from '../../store/vendors/vendorsSlice';\nimport { uploadCompanyLogo } from '../../store/vendors/vendorsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { DropZone } from '../DropZone/DropZone';\nimport './UploadLogoModal.scss';\n\ninterface UploadLogoModalProps {\n vendorId: string;\n}\n\nexport const UploadLogoModal: React.FC = ({\n vendorId,\n}) => {\n const [file, setFile] = useState();\n\n const isUploadLogoModalShowing = useSelector(\n (state: ApplicationState) =>\n state.vendors.companyDetailsState.isUploadLogoModalShowing\n );\n const isLogoUploading = useSelector(\n (state: ApplicationState) =>\n state.vendors.companyDetailsState.isLogoUploading\n );\n\n const dispatch = useDispatch();\n\n const handleUpload = () => {\n dispatch(uploadCompanyLogo({ vendorId, file }));\n };\n\n return (\n dispatch(hideUploadLogoModal())}\n show={isUploadLogoModalShowing}\n className=\"uploadLogoModal\"\n >\n Upload company logo\n \n
\n This will be applied to documents that you create.\n
\n
\n \n
\n
\n \n dispatch(hideUploadLogoModal())}>\n Cancel\n \n \n Upload\n \n \n \n );\n};\n","import './CompanyBrandingTable.scss';\n\nimport { faCloudUpload } from '@fortawesome/pro-light-svg-icons/faCloudUpload';\nimport { HexColorPicker } from 'react-colorful';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n hideLogoUploadSuccessToast,\n showUploadLogoModal,\n} from '../../../store/vendors/vendorsSlice';\nimport {\n fetchCompanyLogo,\n patchCompanyProfile,\n} from '../../../store/vendors/vendorsThunks';\nimport { AccessObject } from '../../../types/accessObject';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { MessageToast } from '../../../components/MessageToast/MessageToast';\nimport { UploadLogoModal } from '../../../components/UploadLogoModal/UploadLogoModal';\nimport { useCanFeature } from '../../../functions/access';\nimport { IconButton } from '../../../components/IconButton/IconButton';\nimport { AdoptechTextInput } from '../../../components/AdoptechTextInput/AdoptechTextInput';\nimport {\n ColourPalette,\n defaultColoursList,\n} from '../../../components/ColourPalette/ColourPalette';\nimport { CompanyExtended } from '../../../swagger';\nimport { showGlobalToast } from '../../../store/global/globalSlice';\nimport { selectCurrentVendor } from '../../../selectors/selectCurrentVendor';\nimport { Panel } from '../../../components/Panel/Panel';\nimport { useAdoptechDebounce } from '../../../hooks/useAdoptechDebounce';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\n\nexport interface CompanyBrandingTableProps {\n vendorId: string;\n company: CompanyExtended;\n}\n\nexport const isDisplayableColour = (newColour: string) => {\n if (defaultColoursList.find(c => c === newColour)) return true;\n const regx = /^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6})$/i;\n const result = regx.test(newColour);\n return result;\n};\n\nexport const CompanyBrandingTable: React.FC = ({\n vendorId,\n company,\n}) => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(fetchCompanyLogo({ vendorId }));\n }, [vendorId]);\n\n const logo = useSelector(\n (state: ApplicationState) => state.vendors.companyDetailsState.logo\n );\n const isLogoUploadSuccessToastShowing = useSelector(\n (state: ApplicationState) =>\n state.vendors.companyDetailsState.isLogoUploadSuccessToastShowing\n );\n\n const currentVendor = useSelector(selectCurrentVendor);\n const canEdit = useCanFeature(AccessObject.company_manage);\n const baseCss = 'companyBrandingTable';\n const [colour, setColour] = useState(company.brandingColor || '');\n // TODO use separate thunk for color change instead of patchCompanyProfile\n const [colorChanging, setColorChanging] = useState(false);\n const debounce = useAdoptechDebounce();\n useEffect(() => {\n setColour(company.brandingColor || '');\n }, [currentVendor]);\n\n const checkValidColour = (newColour: string) => {\n if (!newColour) return true;\n\n return isDisplayableColour(newColour);\n };\n\n const saveCompanyDetails = (updatedCompany: CompanyExtended) => {\n const text =\n updatedCompany.brandingColor !== company.brandingColor\n ? 'Your company colours have been ' +\n `${updatedCompany.brandingColor ? 'applied' : 'cleared'}` +\n '.'\n : 'Your company settings has been updated';\n setColorChanging(true);\n dispatch(\n patchCompanyProfile({\n company: updatedCompany,\n onSuccess: () => {\n setColorChanging(false);\n dispatch(showGlobalToast(text));\n },\n })\n );\n };\n const handleColourChange = (selectedColour: string) => {\n setColour(selectedColour);\n if (checkValidColour(selectedColour)) {\n debounce(() => {\n saveCompanyDetails({\n ...company,\n brandingColor: selectedColour,\n });\n }, 1500);\n }\n };\n const contentsCss = `${baseCss}--contents`;\n\n return (\n
\n \n
\n
Company branding
\n
\n
\n
\n
\n
\n Company logo\n
\n {canEdit && (\n dispatch(showUploadLogoModal())}\n tooltip=\"Upload\"\n />\n )}\n
\n
\n \n {logo?.filename ? (\n \n ) : (\n 'no logo uploaded'\n )}\n
\n
\n
\n
\n
\n
Company colour
\n \n {canEdit ? (\n
\n \n
\n {\n handleColourChange(selectedColour);\n }}\n gap=\"10px\"\n />\n
\n {\n handleColourChange(e.target.value);\n }}\n value={colour}\n type=\"text\"\n placeholder=\"#FFaa33\"\n additionalClass={baseCss + '--colourInput'}\n />\n {colorChanging && }\n
\n
\n
\n ) : (\n <>\n {colour ? (\n
\n ) : (\n 'No color selected '\n )}\n \n )}\n
\n
\n \n \n \n dispatch(hideLogoUploadSuccessToast())}\n show={isLogoUploadSuccessToastShowing}\n >\n Your logo has been successfully uploaded.\n \n \n \n );\n};\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { CompanyProfileState } from './companyProfileState';\nimport { CertificateModel } from '../../../swagger/models/CertificateModel';\nimport {\n deleteBusinessFunction,\n fetchBusinessFunction,\n fetchBusinessFunctions,\n fetchCompanyConfig,\n fetchVendorTree,\n patchBusinessFunction,\n postBusinessFunction,\n} from './companyProfileThunks';\n\nconst companyProfileSlice = createSlice({\n initialState: {\n // company profile page\n certificates: [],\n fetchingCertificatesStatus: 'idle',\n deletingCertificateStatus: 'idle',\n creatingCertificateStatus: 'idle',\n // preview page\n currentCertificate: null,\n fetchingCertificateStatus: 'idle',\n fetchingCertificateDocumentStatus: 'idle',\n fetchingCompanyConfigStatus: 'idle',\n fetchVendorTreeStatus: 'idle',\n // business functions tab\n fetchBusinessFunctionsStatus: 'idle',\n businessFunctions: [],\n postBusinessFunctionStatus: 'idle',\n patchBusinessFunctionStatus: 'idle',\n deleteBusinessFunctionStatus: 'idle',\n businessFunction: null,\n } as unknown as CompanyProfileState,\n name: 'companyProfileSlice',\n reducers: {\n fetchCertificatesRequest: state => {\n state.fetchingCertificatesStatus = 'idle';\n },\n fetchCertificatesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.certificates = action.payload;\n state.fetchingCertificatesStatus = 'succeeded';\n },\n fetchCertificatesFailure: (state, action: PayloadAction) => {\n state.fetchingCertificatesStatus = 'failed';\n },\n deleteCertificateRequest: state => {\n state.deletingCertificateStatus = 'loading';\n },\n deleteCertificateSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.certificates = state.certificates.filter(\n certificate => certificate.id !== action.payload\n );\n state.deletingCertificateStatus = 'succeeded';\n },\n deleteCertificateFailure: (state, action: PayloadAction) => {\n state.deletingCertificateStatus = 'failed';\n },\n createCertificateRequest: state => {\n state.creatingCertificateStatus = 'loading';\n },\n createCertificateSuccess: (\n state,\n action: PayloadAction\n ) => {\n let existing = false;\n state.certificates = state.certificates.map(certificate => {\n if (certificate.id === action.payload.id) {\n existing = true;\n return action.payload;\n }\n return certificate;\n });\n\n if (!existing) {\n state.certificates.push(action.payload);\n }\n\n state.creatingCertificateStatus = 'succeeded';\n },\n\n createCertificateFailure: (state, action: PayloadAction) => {\n state.deletingCertificateStatus = 'failed';\n },\n\n fetchCertificateRequest: state => {\n state.fetchingCertificateStatus = 'loading';\n },\n fetchCertificateSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.currentCertificate = action.payload;\n state.fetchingCertificateStatus = 'succeeded';\n },\n fetchCertificateFailure: (state, action: PayloadAction) => {\n state.fetchingCertificateStatus = 'failed';\n },\n cleanCurrentCertificate: state => {\n state.currentCertificate = null;\n },\n\n fetchCertificateDocumentRequest: state => {\n state.fetchingCertificateDocumentStatus = 'loading';\n },\n fetchCertificateDocumentSuccess: state => {\n state.fetchingCertificateDocumentStatus = 'succeeded';\n },\n fetchCertificateDocumentFailure: (state, action: PayloadAction) => {\n state.fetchingCertificateDocumentStatus = 'failed';\n },\n },\n extraReducers: builder => {\n builder\n .addCase(fetchCompanyConfig.pending, state => {\n state.fetchingCompanyConfigStatus = 'loading';\n })\n .addCase(fetchCompanyConfig.fulfilled, state => {\n state.fetchingCompanyConfigStatus = 'succeeded';\n })\n .addCase(fetchCompanyConfig.rejected, state => {\n state.fetchingCompanyConfigStatus = 'failed';\n })\n .addCase(fetchVendorTree.pending, state => {\n state.fetchVendorTreeStatus = 'loading';\n })\n .addCase(fetchVendorTree.fulfilled, state => {\n state.fetchVendorTreeStatus = 'succeeded';\n })\n .addCase(fetchVendorTree.rejected, state => {\n state.fetchVendorTreeStatus = 'failed';\n })\n .addCase(fetchBusinessFunctions.pending, state => {\n state.fetchBusinessFunctionsStatus = 'loading';\n })\n .addCase(fetchBusinessFunctions.fulfilled, (state, action) => {\n state.fetchBusinessFunctionsStatus = 'succeeded';\n state.businessFunctions = action.payload;\n })\n .addCase(fetchBusinessFunctions.rejected, state => {\n state.fetchBusinessFunctionsStatus = 'failed';\n })\n .addCase(fetchBusinessFunction.pending, state => {\n state.fetchBusinessFunctionStatus = 'loading';\n })\n .addCase(fetchBusinessFunction.fulfilled, (state, action) => {\n state.fetchBusinessFunctionStatus = 'succeeded';\n state.businessFunction = action.payload;\n })\n .addCase(fetchBusinessFunction.rejected, state => {\n state.fetchBusinessFunctionStatus = 'failed';\n })\n .addCase(postBusinessFunction.pending, state => {\n state.postBusinessFunctionStatus = 'loading';\n })\n .addCase(postBusinessFunction.fulfilled, (state, action) => {\n state.postBusinessFunctionStatus = 'succeeded';\n state.businessFunctions.push(action.payload);\n })\n .addCase(postBusinessFunction.rejected, state => {\n state.postBusinessFunctionStatus = 'failed';\n })\n .addCase(patchBusinessFunction.pending, state => {\n state.patchBusinessFunctionStatus = 'loading';\n })\n .addCase(patchBusinessFunction.fulfilled, (state, action) => {\n state.patchBusinessFunctionStatus = 'succeeded';\n state.businessFunctions = state.businessFunctions.map(\n businessFunction =>\n businessFunction.id === action.payload.id\n ? action.payload\n : businessFunction\n );\n })\n .addCase(patchBusinessFunction.rejected, state => {\n state.patchBusinessFunctionStatus = 'failed';\n })\n .addCase(deleteBusinessFunction.pending, state => {\n state.deleteBusinessFunctionStatus = 'loading';\n })\n .addCase(deleteBusinessFunction.fulfilled, (state, action) => {\n state.deleteBusinessFunctionStatus = 'succeeded';\n state.businessFunctions = state.businessFunctions.filter(\n businessFunction => businessFunction.id !== action.payload\n );\n })\n .addCase(deleteBusinessFunction.rejected, state => {\n state.deleteBusinessFunctionStatus = 'failed';\n });\n },\n});\n\nexport const {\n fetchCertificatesRequest,\n fetchCertificatesSuccess,\n fetchCertificatesFailure,\n deleteCertificateRequest,\n deleteCertificateSuccess,\n deleteCertificateFailure,\n createCertificateRequest,\n createCertificateSuccess,\n createCertificateFailure,\n fetchCertificateRequest,\n fetchCertificateSuccess,\n fetchCertificateFailure,\n cleanCurrentCertificate,\n fetchCertificateDocumentRequest,\n fetchCertificateDocumentSuccess,\n fetchCertificateDocumentFailure,\n} = companyProfileSlice.actions;\n\nexport default companyProfileSlice.reducer;\n","import { VoidThunk } from '../../../types/voidThunk';\nimport { showGlobalToast } from '../../../store/global/globalSlice';\nimport {\n getErrorMessage,\n handleThunkError,\n} from '../../../store/helpers/thunkHelpers';\nimport {\n createCertificateFailure,\n createCertificateRequest,\n createCertificateSuccess,\n deleteCertificateFailure,\n deleteCertificateRequest,\n deleteCertificateSuccess,\n fetchCertificateDocumentFailure,\n fetchCertificateDocumentRequest,\n fetchCertificateDocumentSuccess,\n fetchCertificateFailure,\n fetchCertificateRequest,\n fetchCertificateSuccess,\n fetchCertificatesFailure,\n fetchCertificatesRequest,\n fetchCertificatesSuccess,\n} from './companyProfileSlice';\nimport { api } from '../../../api/api';\nimport {\n ConfigsConfigIdGetRequest,\n VendorsVendorIdCertificatesPostRequest,\n} from '../../../swagger/apis/DefaultApi';\nimport {\n BusinessFunctionCreatePayload,\n BusinessFunctionUpdatePayload,\n CertificateModel,\n} from '../../../swagger';\nimport { getRequest } from '../../../functions/getRequest';\nimport { hideDeleteCertificateModal } from '../../../store/vendors/vendorsSlice';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { ApplicationState } from '../../../types/applicationState';\n\nexport const fetchCertificates =\n (): VoidThunk => async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor.id;\n dispatch(fetchCertificatesRequest());\n const response = await api().vendorsVendorIdCertificatesGet({\n vendorId,\n });\n dispatch(fetchCertificatesSuccess(response));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching Certificates. Please try again or contact support.'\n );\n dispatch(fetchCertificatesFailure(apiErrorMessage));\n }\n };\n\nexport const deleteCertificate =\n (id: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deleteCertificateRequest());\n await api().certificatesIdDelete({\n id,\n });\n dispatch(deleteCertificateSuccess(id));\n dispatch(hideDeleteCertificateModal());\n dispatch(showGlobalToast('Certificate has been successfully deleted'));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while deleting a Certificate. Please try again or contact support.'\n );\n dispatch(deleteCertificateFailure(apiErrorMessage));\n }\n };\n\nexport const createCertificate =\n (\n body: VendorsVendorIdCertificatesPostRequest,\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(createCertificateRequest());\n const response = await api().vendorsVendorIdCertificatesPost(body);\n dispatch(createCertificateSuccess(response));\n onSuccess();\n dispatch(showGlobalToast('Certificate has been successfully added'));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while creating Certificate. Please try again or contact support.'\n );\n dispatch(createCertificateFailure(apiErrorMessage));\n }\n };\n\nexport const fetchCertificate =\n (\n id: CertificateModel['id'],\n onSuccess: (certificate: CertificateModel) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchCertificateRequest());\n const response = await api().certificatesIdGet({ id });\n dispatch(fetchCertificateSuccess(response));\n onSuccess(response);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching Certificate. Please try again or contact support.'\n );\n dispatch(fetchCertificateFailure(apiErrorMessage));\n }\n };\n\nexport const fetchCertificateDocument =\n ({\n id,\n successCallback,\n }: {\n id: CertificateModel['id'];\n successCallback?: (response: string) => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchCertificateDocumentRequest());\n // TODO: fix BE swag void type issue\n const response = await getRequest(`/api/v1/certificates/${id}/document`);\n const convertedData = await response.blob();\n const url = URL.createObjectURL(convertedData);\n\n dispatch(fetchCertificateDocumentSuccess());\n successCallback && successCallback(url);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching certificate document. Please try again or contact support.'\n );\n dispatch(fetchCertificateDocumentFailure(apiErrorMessage));\n }\n };\n\nexport const fetchCompanyConfig = createAsyncThunk(\n 'companyProfile/fetchCompanyConfig',\n async (params: ConfigsConfigIdGetRequest, { dispatch }) => {\n try {\n return await api().configsConfigIdGet(params);\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching company config. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchVendorTree = createAsyncThunk(\n 'companyProfile/fetchVendorTree',\n async (_, { dispatch, getState }) => {\n try {\n const currentVendorId = (getState() as ApplicationState).vendors\n .currentVendor.id;\n return await api().vendorsIdTreeGet({ id: currentVendorId });\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching vendor tree . Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\nexport const fetchBusinessFunctions = createAsyncThunk(\n 'companyProfile/fetchBusinessFunctions',\n async (_, { dispatch, getState }) => {\n try {\n const currentVendorId = (getState() as ApplicationState).vendors\n .currentVendor.id;\n const response = await api().vendorsVendorIdBusinessFunctionsGet({\n vendorId: currentVendorId,\n });\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching business functions. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const postBusinessFunction = createAsyncThunk(\n 'companyProfile/postBusinessFunction',\n async (payload: BusinessFunctionCreatePayload, { dispatch, getState }) => {\n try {\n const currentVendorId = (getState() as ApplicationState).vendors\n .currentVendor.id;\n const response = await api().vendorsVendorIdBusinessFunctionsPost({\n vendorId: currentVendorId,\n body: payload,\n });\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred while posting business function. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchBusinessFunction = createAsyncThunk(\n 'companyProfile/fetchBusinessFunction',\n async (id: string, { dispatch }) => {\n try {\n const response = await api().businessFunctionsIdGet({ id });\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching business function. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const patchBusinessFunction = createAsyncThunk(\n 'companyProfile/patchBusinessFunction',\n async (\n { id, payload }: { id: string; payload: BusinessFunctionUpdatePayload },\n { dispatch }\n ) => {\n try {\n const response = await api().businessFunctionsIdPatch({\n id,\n body: payload,\n });\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred while patching business function. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const deleteBusinessFunction = createAsyncThunk(\n 'companyProfile/deleteBusinessFunction',\n async (id: string, { dispatch }) => {\n try {\n await api().businessFunctionsIdDelete({ id });\n return id;\n } catch (error) {\n await handleThunkError(\n 'An error occurred while deleting business function. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport {\n AuditExtended,\n Answer,\n AuditModel,\n AuditReviewHistoryItem,\n AuditTemplateExtended,\n AuditTemplateModel,\n Question,\n QuestionTable,\n VendorUser,\n} from '../../../../swagger';\nimport { updateAnswerSlice } from '../../../../store/agreements/agreementsSlice';\nimport { AuditsState, AuditReviewHistory } from './auditsState';\nimport { globalUserId } from '../../../../hooks/useOwnerOptions';\nimport { postMeeting } from './auditsThunks';\n\ntype AnswersPayload = {\n id: Question['id'];\n answers: QuestionTable['answers'];\n};\n\nconst initialState = {\n isFetchingAudits: false,\n isFetchingAuditTemplates: false,\n isFetchingCurrentAuditTemplate: false,\n audits: [],\n templates: [],\n completedFilter: true,\n currentTemplate: null,\n currentAudit: null,\n auditQuestionIdToShowHistory: null,\n auditReviewHistory: [],\n postMeetingStatus: 'idle',\n} as AuditsState;\n\nconst auditsSlice = createSlice({\n initialState,\n name: 'auditsSlice',\n reducers: {\n fetchAuditsRequest: state => {\n state.isFetchingAudits = true;\n },\n fetchAuditTemplatesRequest: state => {\n state.isFetchingAuditTemplates = true;\n },\n fetchCurrentAuditTemplateRequest: state => {\n state.isFetchingCurrentAuditTemplate = true;\n },\n fetchAuditsSuccess: (state, action: PayloadAction) => {\n state.isFetchingAudits = false;\n state.audits = action.payload;\n },\n fetchAuditReviewHistoryRequest: state => {\n state.isFetchingAuditReviewHistory = true;\n },\n fetchAuditReviewHistorySuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingAuditReviewHistory = false;\n state.auditReviewHistory.push(action.payload);\n },\n fetchAuditReviewHistoryError: state => {\n state.isFetchingAuditReviewHistory = false;\n },\n cleanupAuditReviewHistory: (\n state,\n action: PayloadAction\n ) => {\n state.auditQuestionIdToShowHistory = null;\n state.auditReviewHistory = state.auditReviewHistory.filter(\n h => h.questionId != action.payload\n );\n },\n showHistoryForQuestionId: (state, action: PayloadAction) => {\n state.auditQuestionIdToShowHistory = action.payload;\n },\n setAuditsError: (state, _) => {\n state.isFetchingAudits = false;\n },\n fetchAuditTemplatesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingAuditTemplates = false;\n state.templates = action.payload;\n },\n fetchCurrentAuditTemplateSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingCurrentAuditTemplate = false;\n state.currentTemplate = action.payload;\n },\n cleanUpCurrentTemplate: state => {\n state.currentTemplate = null;\n },\n createAuditRequest: state => {\n state.isCreatingAudit = true;\n },\n createAuditSuccess: state => {\n state.isCreatingAudit = false;\n },\n updateAuditRequest: state => {\n state.isUpdatingAudit = true;\n },\n updateAuditSuccess: state => {\n state.isUpdatingAudit = false;\n },\n toggleCompletedFilter: state => {\n state.completedFilter = !state.completedFilter;\n },\n cleanupAudits: state => {\n state.completedFilter = initialState.completedFilter;\n state.audits = initialState.audits;\n },\n deleteAuditRequest: state => {\n state.isDeletingAudit = true;\n },\n deleteAuditSuccess: (state, action: PayloadAction) => {\n state.isDeletingAudit = false;\n state.audits = state.audits.filter(audit => audit.id !== action.payload);\n state.auditIdToDelete = null;\n },\n deleteAuditError: state => {\n state.isDeletingAudit = false;\n state.auditIdToDelete = null;\n },\n setAuditIdToBeDeleted: (state, action: PayloadAction) => {\n state.auditIdToDelete = action.payload;\n },\n\n fetchAuditPDFRequest: state => {\n state.isFetchingAuditPDF = true;\n },\n fetchAuditPDFSuccess: state => {\n state.isFetchingAuditPDF = false;\n },\n fetchAuditPDFError: state => {\n state.isFetchingAuditPDF = false;\n },\n setCurrentAudit: (state, action: PayloadAction) => {\n state.currentAudit = action.payload;\n },\n fetchAuditRequest: (state, action: PayloadAction) => {\n state.isFetchingAudit = true;\n state.isFetchingAuditSpinner = action.payload;\n },\n fetchAuditSuccess: (state, action: PayloadAction) => {\n state.currentAudit = action.payload;\n state.isFetchingAudit = false;\n state.isFetchingAuditSpinner = false;\n },\n fetchAuditError: state => {\n state.isFetchingAudit = false;\n state.isFetchingAuditSpinner = false;\n },\n completeAuditRequest: state => {\n state.isCompletingAudit = true;\n },\n completeAuditSuccess: state => {\n state.isCompletingAudit = false;\n state.completedFilter = true;\n },\n completeAuditError: state => {\n state.isCompletingAudit = false;\n },\n updateAnswer: (state, action: PayloadAction) => {\n updateAnswerSlice(state.currentAudit, action);\n },\n postAuditAnswerRequest: state => {\n state.isPostingAuditAnswer = true;\n },\n postAuditAnswerSuccess: state => {\n state.isPostingAuditAnswer = false;\n },\n postAuditAnswerError: state => {\n state.isPostingAuditAnswer = false;\n },\n deleteAuditAnswerRequest: state => {\n state.isDeletingAuditAnswer = true;\n },\n deleteAuditAnswerSuccess: state => {\n state.isDeletingAuditAnswer = false;\n },\n deleteAuditAnswerError: state => {\n state.isDeletingAuditAnswer = false;\n },\n setAuditQuestionTableAnswers: (\n state,\n action: PayloadAction\n ) => {\n const clauses = state.currentAudit.survey.surveyClauses;\n const answersPayload = action.payload;\n const currentClause = clauses.find(clause =>\n clause.questions.map(q => q.id).includes(answersPayload.id)\n );\n const currentQuestion = currentClause.questions.find(\n question => question.id === answersPayload.id\n );\n currentQuestion.answer = answersPayload.answers[0][0];\n currentQuestion.table.answers = answersPayload.answers;\n },\n setAuditQuestionTableAnswer: (\n state,\n action: PayloadAction<{\n userId: VendorUser['id'];\n questionId: Question['id'];\n review: AuditReviewHistoryItem;\n }>\n ) => {\n const currentQuestion = state.currentAudit.survey.surveyClauses\n .map(c => c.questions)\n .reduce((acc, qs) => acc.concat(qs), [])\n .find(q => q.id === action.payload.questionId);\n const questions = currentQuestion.table.questions;\n const review = action.payload.review;\n\n const userId = globalUserId({ id: action.payload.userId });\n\n const auditorQuestion = questions.find(q =>\n q.propertyName.endsWith('.auditor_name')\n );\n const ratingQuestion = questions.find(q =>\n q.propertyName.endsWith('.rating')\n );\n const commentsQuestion = questions.find(q =>\n q.propertyName.endsWith('.comments')\n );\n\n const answers: Answer[] = [\n {\n questionId: auditorQuestion.id,\n propertyName: auditorQuestion.propertyName,\n value: userId,\n },\n {\n questionId: ratingQuestion.id,\n propertyName: ratingQuestion.propertyName,\n value: review.rating,\n },\n {\n questionId: commentsQuestion.id,\n propertyName: commentsQuestion.propertyName,\n value: review.comments,\n },\n ];\n\n // Remove existing answer of current user\n currentQuestion.table.answers = currentQuestion.table.answers.filter(\n answerColumns => !answerColumns.some(column => column.value === userId)\n );\n\n currentQuestion.table.answers.push(answers);\n },\n fetchAnswerControlRequest: (state, action: PayloadAction) => {\n state.isFetchingAnswerControl = true;\n },\n fetchAnswerControlSuccess: state => {\n state.isFetchingAnswerControl = false;\n },\n fetchAnswerControlError: state => {\n state.isFetchingAnswerControl = false;\n },\n },\n extraReducers: builder => {\n builder\n .addCase(postMeeting.pending, state => {\n state.postMeetingStatus = 'loading';\n })\n .addCase(postMeeting.fulfilled, (state, action) => {\n state.postMeetingStatus = 'succeeded';\n })\n .addCase(postMeeting.rejected, state => {\n state.postMeetingStatus = 'failed';\n });\n },\n});\nexport const {\n fetchAuditsRequest,\n fetchAuditsSuccess,\n setAuditsError,\n fetchAuditTemplatesSuccess,\n fetchAuditTemplatesRequest,\n fetchAuditReviewHistoryRequest,\n fetchAuditReviewHistorySuccess,\n fetchAuditReviewHistoryError,\n cleanupAuditReviewHistory,\n showHistoryForQuestionId,\n fetchCurrentAuditTemplateRequest,\n fetchCurrentAuditTemplateSuccess,\n createAuditRequest,\n createAuditSuccess,\n updateAuditRequest,\n updateAuditSuccess,\n cleanUpCurrentTemplate,\n toggleCompletedFilter,\n deleteAuditRequest,\n deleteAuditSuccess,\n deleteAuditError,\n setAuditIdToBeDeleted,\n fetchAuditPDFRequest,\n fetchAuditPDFSuccess,\n fetchAuditPDFError,\n setCurrentAudit,\n fetchAuditRequest,\n fetchAuditSuccess,\n fetchAuditError,\n completeAuditRequest,\n completeAuditSuccess,\n completeAuditError,\n updateAnswer,\n postAuditAnswerRequest,\n postAuditAnswerSuccess,\n postAuditAnswerError,\n deleteAuditAnswerRequest,\n deleteAuditAnswerSuccess,\n deleteAuditAnswerError,\n setAuditQuestionTableAnswers,\n setAuditQuestionTableAnswer,\n cleanupAudits,\n fetchAnswerControlRequest,\n fetchAnswerControlSuccess,\n fetchAnswerControlError,\n} = auditsSlice.actions;\n\nexport default auditsSlice.reducer;\n","import { api } from '../../../../api/api';\nimport { PdfOpenMode } from '../../../../types/pdfOpenMode';\nimport { VoidThunk } from '../../../../types/voidThunk';\nimport {\n getErrorMessage,\n handleThunkError,\n} from '../../../../store/helpers/thunkHelpers';\nimport {\n fetchAuditsRequest,\n fetchAuditsSuccess,\n setAuditsError,\n fetchAuditTemplatesRequest,\n fetchAuditTemplatesSuccess,\n fetchAuditReviewHistoryRequest,\n fetchAuditReviewHistorySuccess,\n fetchCurrentAuditTemplateRequest,\n fetchCurrentAuditTemplateSuccess,\n deleteAuditSuccess,\n deleteAuditRequest,\n deleteAuditError,\n fetchAuditPDFRequest,\n fetchAuditPDFSuccess,\n fetchAuditPDFError,\n fetchAuditRequest,\n fetchAuditSuccess,\n fetchAuditError,\n completeAuditRequest,\n completeAuditSuccess,\n completeAuditError,\n updateAnswer,\n postAuditAnswerRequest,\n postAuditAnswerSuccess,\n postAuditAnswerError,\n deleteAuditAnswerRequest,\n deleteAuditAnswerSuccess,\n deleteAuditAnswerError,\n cleanupAudits,\n createAuditRequest,\n createAuditSuccess,\n updateAuditRequest,\n updateAuditSuccess,\n fetchAnswerControlRequest,\n fetchAnswerControlSuccess,\n fetchAnswerControlError,\n fetchAuditReviewHistoryError,\n} from './auditsSlice';\nimport {\n getPdfDocumentPath,\n PdfPreviewEntityPaths,\n} from '../../../../functions/routePathsHelpers';\nimport { push } from 'connected-react-router';\nimport { auditsPageRoute } from '../../../../components/Routes/Routes';\nimport { mapTableAnswers } from '../../../../functions/mapTableAnswers';\nimport {\n Answer,\n AuditModel,\n AuditCreatePayloadAudit,\n ControlExtended,\n FrameworkModel,\n VendorsVendorIdAuditsUploadPostAuditOriginEnum,\n VendorsVendorIdAuditsUploadPostAuditRatingEnum,\n VendorsVendorIdAuditsUploadMeetingPostRequest,\n} from '../../../../swagger';\nimport { showGlobalToast } from '../../../../store/global/globalSlice';\nimport {\n setControlFormModel,\n setEditControlMode,\n setEditTaskMode,\n setShowControlDrawer,\n} from '../../../../store/compliance/complianceSlice';\nimport { EditControl } from '../../../../components/compliance/Types/complianceTypes';\nimport { fetchPolicies } from '../../../../store/policies/policiesThunks';\nimport {\n fetchComplianceCategories,\n fetchComplianceFrameworks,\n} from '../../../../store/compliance/complianceThunks';\nimport {\n EditControlMode,\n EditTaskMode,\n} from '../../../../store/compliance/complianceState';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { WithoutVendorId } from '../../../calendar/store/calendarThunksApiHelpers';\nimport { ApplicationState } from '../../../../types/applicationState';\n\nexport const fetchAudits =\n (vendorId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchAuditsRequest());\n const response = await api().vendorsVendorIdAuditsGet({ vendorId });\n dispatch(fetchAuditsSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching audits. Please try again or contact support.'\n );\n console.log(err);\n dispatch(setAuditsError(apiErrorMessage));\n }\n }\n };\n\nexport const deleteAudit =\n (id: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deleteAuditRequest());\n await api().auditsIdDelete({ id });\n dispatch(deleteAuditSuccess(id));\n } catch (err) {\n dispatch(deleteAuditError());\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while deleting an audit. Please try again or contact support.'\n );\n console.log(err);\n dispatch(setAuditsError(apiErrorMessage));\n }\n }\n };\n\nexport const fetchAuditTemplates = (): VoidThunk => async dispatch => {\n try {\n dispatch(fetchAuditTemplatesRequest);\n const response = await api().auditTemplatesGet();\n dispatch(fetchAuditTemplatesSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching audit templates. Please try again or contact support.'\n );\n console.log(apiErrorMessage);\n }\n }\n};\n\nexport const fetchAuditReviewHistory =\n (auditId: string, questionId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchAuditReviewHistoryRequest());\n const response = await api().auditsAuditIdReviewHistoryGet({\n auditId,\n questionId,\n });\n dispatch(fetchAuditReviewHistorySuccess({ questionId, items: response }));\n } catch (err) {\n dispatch(fetchAuditReviewHistoryError());\n if (err instanceof Response) {\n const description =\n 'An error occurred while fetching audit review history. Please try again or contact support.';\n await getErrorMessage(err, description);\n }\n }\n };\n\nexport const fetchCurrentAuditTemplate =\n (id: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchCurrentAuditTemplateRequest());\n const response = await api().auditTemplatesIdGet({ id });\n dispatch(fetchCurrentAuditTemplateSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching audit questions. Please try again or contact support.'\n );\n console.log(apiErrorMessage);\n }\n }\n };\n\nexport const fetchAuditPDF =\n (audit: AuditModel): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchAuditPDFRequest());\n dispatch(fetchAuditPDFSuccess());\n\n dispatch(\n push(\n getPdfDocumentPath({\n mode: PdfOpenMode.PreviewDocument,\n basePath: PdfPreviewEntityPaths.audits,\n documentableId: audit.id,\n vendorDocumentId: audit.vendorDocumentId,\n })\n )\n );\n } catch (err) {\n dispatch(fetchAuditPDFError());\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching an Audit PDF. Please try again or contact support.'\n );\n console.log(err);\n dispatch(setAuditsError(apiErrorMessage));\n }\n }\n };\n\nexport const createAudit =\n (\n audit: AuditModel,\n questionIds: string[],\n onSuccess: () => void,\n onError: (err: string) => void\n ): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(createAuditRequest());\n const vendorId = getState().vendors.currentVendor?.id;\n const body = {\n audit: {\n ...audit,\n questionIds,\n } as AuditCreatePayloadAudit,\n };\n await api().vendorsVendorIdAuditsPost({\n vendorId,\n body,\n });\n dispatch(createAuditSuccess());\n onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n onError(err.statusText);\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while creating an Audit. Please try again or contact support.'\n );\n console.log(apiErrorMessage);\n }\n }\n };\n\nexport interface UploadAuditPayload extends AuditModel {\n origin: string;\n file: File;\n}\n\nexport const uploadAudit =\n (payload: UploadAuditPayload, onSuccess?: () => void): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(createAuditRequest());\n dispatch(showGlobalToast('Uploading audit. Please wait...'));\n\n const response = await api().vendorsVendorIdAuditsUploadPost({\n vendorId,\n auditName: payload.name,\n auditOwnerId: payload.owner.id,\n auditOrigin:\n payload.origin as VendorsVendorIdAuditsUploadPostAuditOriginEnum,\n auditStartedAt: payload.startedAt,\n auditCompletedAt: payload.completedAt,\n auditRating:\n payload.rating as string as VendorsVendorIdAuditsUploadPostAuditRatingEnum,\n auditFile: payload.file,\n });\n\n dispatch(createAuditSuccess());\n dispatch(showGlobalToast('A audit has been successfully uploaded.'));\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while uploading audit. Please try again or contact support.'\n );\n }\n };\n\nexport const updateAudit =\n (\n audit: AuditModel,\n onSuccess: () => void,\n onError: (err: string) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(updateAuditRequest());\n const body = {\n audit: {\n name: audit.name,\n startedAt: audit.startedAt,\n ownerId: audit.owner.id,\n },\n };\n await api().auditsIdPatch({ id: audit.id, body });\n dispatch(updateAuditSuccess());\n onSuccess();\n } catch (err) {\n onError(err.statusText);\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while updating an Audit. Please try again or contact support.'\n );\n console.log(apiErrorMessage);\n }\n };\n\nexport const fetchAudit =\n (id: AuditModel['id'], withLoader = true): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchAuditRequest(withLoader));\n const response = await api().auditsIdGet({ id });\n const responseWithTables = mapTableAnswers(response);\n dispatch(fetchAuditSuccess(responseWithTables));\n } catch (err) {\n dispatch(fetchAuditError());\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching an Audit. Please try again or contact support.'\n );\n console.log(err);\n dispatch(setAuditsError(apiErrorMessage));\n }\n }\n };\n\nexport const completeAudit =\n (id: AuditModel['id']): VoidThunk =>\n async dispatch => {\n try {\n dispatch(cleanupAudits());\n dispatch(completeAuditRequest());\n await api().auditsIdCompletePost({ id });\n dispatch(completeAuditSuccess());\n dispatch(push(auditsPageRoute));\n dispatch(showGlobalToast('Audit has been successfully completed'));\n } catch (err) {\n dispatch(completeAuditError());\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while completing an Audit. Please try again or contact support.'\n );\n console.log(err);\n dispatch(setAuditsError(apiErrorMessage));\n }\n }\n };\n\nexport const addAuditAnswers =\n ({\n vendorId,\n answers,\n onSuccess,\n }: {\n vendorId: string;\n answers: Answer[];\n onSuccess?(): void;\n }): VoidThunk =>\n async dispatch => {\n try {\n answers.forEach(a => dispatch(updateAnswer(a)));\n dispatch(postAuditAnswerRequest());\n await api().vendorsIdAnswersPost({\n id: vendorId,\n answers: {\n answers,\n },\n });\n dispatch(postAuditAnswerSuccess());\n onSuccess && onSuccess();\n } catch (err) {\n console.log('err', err);\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while adding audit answer. Please try again or contact support.'\n );\n console.log(apiErrorMessage);\n dispatch(postAuditAnswerError());\n }\n };\n\nexport const deleteAuditTableAnswers =\n ({\n answersIds,\n vendorId,\n onSuccess,\n }: {\n answersIds: string[];\n vendorId: string;\n onSuccess: () => void;\n }): VoidThunk =>\n async (dispatch, getState) => {\n try {\n if (answersIds.filter(id => id).length > 0) {\n dispatch(deleteAuditAnswerRequest());\n await api().vendorsIdAnswersDelete({\n id: vendorId,\n body: { answersIds },\n });\n dispatch(deleteAuditAnswerSuccess());\n }\n const id = getState().audits.currentAudit.id;\n onSuccess && onSuccess();\n } catch (err) {\n console.log('err', err);\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while deleting audit answer. Please try again or contact support.'\n );\n console.log(apiErrorMessage);\n dispatch(deleteAuditAnswerError());\n }\n };\n\nexport const fetchAnswerControl =\n (controlId: ControlExtended['identifier']): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(fetchAnswerControlRequest());\n const response = await api().controlsControlIdGet({\n controlId,\n vendorId,\n });\n dispatch(fetchPolicies());\n const onSuccess = (frameworkId: FrameworkModel['id']) => {\n // TODO: investigate is it possible to remove it and use framework relations\n dispatch(fetchComplianceCategories(vendorId, frameworkId)); // needed for linked controls\n };\n dispatch(fetchComplianceFrameworks(vendorId, onSuccess));\n dispatch(setControlFormModel(new EditControl(response).simpleObject()));\n dispatch(fetchAnswerControlSuccess());\n dispatch(setEditControlMode(EditControlMode.View));\n dispatch(setEditTaskMode(EditTaskMode.View));\n dispatch(setShowControlDrawer(true));\n } catch (err) {\n alert(\n \"Control doesn't exist for the audit question.Please contact to administrator.\"\n );\n dispatch(fetchAnswerControlError());\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching an Answer Control. Please try again or contact support.'\n );\n console.log(err);\n dispatch(setAuditsError(apiErrorMessage));\n }\n }\n };\n\nexport type UploadMeetingsPayload =\n WithoutVendorId;\nexport const postMeeting = createAsyncThunk(\n 'compliance/patchAssertionResultExclude',\n async (params: UploadMeetingsPayload, { dispatch, getState }) => {\n const vendorId = (getState() as ApplicationState).vendors.currentVendor.id;\n const body = {\n ...params,\n ...{ vendorId },\n };\n try {\n await api().vendorsVendorIdAuditsUploadMeetingPost(body);\n } catch (error) {\n await handleThunkError(\n 'An error occurred on uploading Meeting Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n","import React, { ReactNode } from 'react';\nimport './AdoptechIcon.scss';\n\ninterface AdoptechIconProps {\n onClick: () => void;\n children: ReactNode;\n shape: 'square';\n}\nconst AdoptechIcon: React.FC = ({\n onClick,\n children,\n shape,\n}) => {\n return (\n
\n {children}\n
\n );\n};\n\nexport default AdoptechIcon;\n","import { EditTaskMode } from '../../store/compliance/complianceState';\nimport { ApplicationState } from '../../types/applicationState';\n\nexport const selectIsViewModeTaskDrawer = (state: ApplicationState) =>\n state.compliance.editTaskMode === EditTaskMode.View;\n","export const useChildClass = (baseCss: string) => {\n const childClass = (name: string) => `${baseCss}--${name}`;\n return childClass;\n};\n","import React, { ChangeEvent, useEffect, useRef } from 'react';\nimport { EditTestFormSection, isTestAutomatic } from '../EditTestForm';\nimport { useChildClass } from '../../../../../../../hooks/useChildClass';\nimport { Interweave } from 'interweave';\nimport { useSelector } from 'react-redux';\nimport { fetchAssertionCategories } from '../../../../../tests/store/testsThunks';\nimport { ApplicationState } from '../../../../../../../types/applicationState';\nimport { reactSelectLightStyleSmall } from '../../../../../../../functions/reactSelectCustomTheme';\nimport { AdoptechReactSelect } from '../../../../../../../components/AdoptechReactSelect/AdoptechReactSelect';\nimport { SelectionOption } from '../../../../../../../types/selectionOption';\nimport { AssertionFrequency } from '../../../../../../../swagger';\nimport { LoadingSpinner } from '../../../../../../../components/LoadingSpinner/LoadingSpinner';\nimport { useAppDispatch } from '../../../../../../../hooks/useAppDispatch';\nimport { AdoptechTextArea2 } from '../../../../../../../components/AdoptechTextArea2/AdoptechTextArea2';\nimport { TestForm } from '../../EditTestDrawer';\nimport { useAutoGrowTextArea } from '../../../../../../../hooks/useAutoGrowTextArea';\n\nexport const EditTestFormMainSection: React.FC = props => {\n const baseCss = 'editTestForm';\n const childClass = useChildClass(baseCss);\n const isAuto = isTestAutomatic(props.formData);\n const dispatch = useAppDispatch();\n const { patchAssertionDetailsStatus } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n useEffect(() => {\n !isAuto && dispatch(fetchAssertionCategories());\n }, [isAuto]);\n\n const { assertionCategories: categories } = useSelector(\n (state: ApplicationState) => state.tests\n );\n\n const categoryOptions = categories.map(category => ({\n value: category.id,\n label: category.name,\n }));\n\n const enumToSelectOptions = >(\n enumObject: T\n ) =>\n Object.keys(enumObject).map(key => ({\n label: key,\n value: enumObject[key as keyof T],\n }));\n const frequencyOptions = enumToSelectOptions(AssertionFrequency);\n const descriptionRef = useRef(null);\n useAutoGrowTextArea(descriptionRef.current, props.formData.description);\n\n if (isAuto)\n return (\n
\n
Test description
\n \n\n
\n
\n
Category
\n
\n {categories.find(\n category => category.id === props.formData.categoryId\n )?.name || '-'}\n
\n
\n
\n
\n );\n\n const handleChange = (\n field: keyof TestForm,\n value: string | AssertionFrequency\n ) => {\n const patchPayload: Partial = {\n [field]: value,\n };\n\n props.onChange({\n ...props.formData,\n ...patchPayload,\n });\n };\n\n const handleCategoryChange = (option: SelectionOption) =>\n handleChange('categoryId', option.value);\n\n const handleFrequencyChange = async (option: SelectionOption) =>\n handleChange('frequency', option.value as AssertionFrequency);\n\n const handleDescriptionChange = async (\n event: ChangeEvent\n ) => handleChange('description', event.target.value);\n\n return (\n
\n
Test description
\n
\n \n
\n
\n
\n
Test type
\n
\n Manual\n {patchAssertionDetailsStatus === 'loading' && (\n \n )}\n
\n
\n
\n
\n
\n
Category
\n
\n option.value === props.formData.categoryId\n )}\n placeholder=\"Select category\"\n />\n
\n
\n
\n
Frequency
\n
\n option.value === props.formData.frequency\n )}\n placeholder=\"Select frequency\"\n />\n
\n
\n
\n
\n );\n};\n","import React from 'react';\nimport { EditTestFormSection, isTestAutomatic } from '../EditTestForm';\nimport { useChildClass } from '../../../../../../../hooks/useChildClass';\nimport {\n patchAssertionDetails,\n postAssertionRun,\n} from '../../../../../../../store/compliance/complianceThunks';\nimport { ToggleSwitch } from '../../../../../../../components/ToggleSwitch/ToggleSwitch';\nimport classNames from 'classnames';\nimport { AdoptechButton } from '../../../../../../../components/AdoptechButton/AdoptechButton';\nimport { faArrowRightFromLine } from '@fortawesome/pro-solid-svg-icons/faArrowRightFromLine';\nimport { faSyncAlt } from '@fortawesome/pro-solid-svg-icons/faSyncAlt';\nimport { AssertionModelStatusEnum } from '../../../../../../../swagger';\nimport { useAppDispatch } from '../../../../../../../hooks/useAppDispatch';\nimport { useUpdateAssertionEverywhere } from '../EditTestFormLastResultsSection/EditTestFormLastResultsList/EditTestFormLastResultsList';\n\nexport const EditTestFormAutoSection: React.FC = props => {\n const baseCss = 'editTestForm';\n const childClass = useChildClass(baseCss);\n const isAuto = isTestAutomatic(props.formData);\n const dispatch = useAppDispatch();\n const updateAssertionEveryWhere = useUpdateAssertionEverywhere();\n const handleSwitchAutoRun = async () => {\n const autorun = !props.formData.autorun;\n const patchPayload = {\n autorun,\n };\n\n await dispatch(\n patchAssertionDetails({\n assertionId: props.formData.id,\n body: {\n assertion: patchPayload,\n },\n })\n );\n props.onChange({\n ...props.formData,\n ...{ autorun },\n });\n };\n if (!isAuto) return null;\n\n const isInProgress =\n props.formData.status === AssertionModelStatusEnum.InProgress;\n\n const handleRunClick = async () => {\n props.onChange({\n ...props.formData,\n ...{\n status: AssertionModelStatusEnum.InProgress,\n },\n });\n\n const newAssertion = await dispatch(\n postAssertionRun({ assertionId: props.formData.id })\n ).unwrap();\n\n const { status, lastRunAt, latestRunResults, overdue, nextRunAfter } =\n newAssertion;\n\n const assertionPayload = {\n status,\n lastRunAt,\n latestRunResults,\n overdue,\n nextRunAfter,\n };\n updateAssertionEveryWhere(assertionPayload, props);\n };\n return (\n
\n
\n \n
\n {`Automated testing: ${props.formData.autorun ? 'On' : 'Off'}`}\n
\n \n
\n\n {isInProgress ? (\n \n Test in progress...\n \n ) : (\n \n Run single test\n \n )}\n
\n
\n
Frequency
\n
Daily
\n
\n \n );\n};\n","import React, { useState } from 'react';\nimport AdoptechModal from '../../../../../../../components/AdoptechModal/AdoptechModal';\nimport { Modal } from 'react-bootstrap';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../../../../components/AdoptechButton/AdoptechButton';\nimport {\n AssertionModelStatusEnum,\n AssertionsAssertionIdCreateReviewPostRequest,\n} from '../../../../../../../swagger';\nimport './EditTestFormReviewTestModal.scss';\nimport { faCheck } from '@fortawesome/pro-solid-svg-icons/faCheck';\nimport { AdoptechTextArea2 } from '../../../../../../../components/AdoptechTextArea2/AdoptechTextArea2';\nimport { faXmark } from '@fortawesome/pro-solid-svg-icons/faXmark';\nimport classNames from 'classnames';\nimport { DropZone } from '../../../../../../../components/DropZone/DropZone';\nimport { useSelector } from 'react-redux';\nimport { postAssertionReview } from '../../../../../../../store/compliance/complianceThunks';\nimport { ApplicationState } from '../../../../../../../types/applicationState';\nimport { useAppDispatch } from '../../../../../../../hooks/useAppDispatch';\nimport { useUpdateAssertionEverywhere } from '../EditTestFormLastResultsSection/EditTestFormLastResultsList/EditTestFormLastResultsList';\nimport { EditTestFormSection } from '../EditTestForm';\nimport { selectCurrentVendorUser } from '../../../../../../../selectors/selectCurrentVendorUser';\n\ninterface EditTestFormReviewTestModalProps extends EditTestFormSection {\n show: boolean;\n onHide: () => void;\n onConfirm: () => void;\n}\n\nexport const EditTestFormReviewTestModal: React.FC<\n EditTestFormReviewTestModalProps\n> = props => {\n const baseCss = 'reviewTestModal';\n const childClass = (name: string) => `${baseCss}--${name}`;\n const title = 'Review test';\n const [reviewStatus, setReviewStatus] =\n useState(null);\n\n const [reviewComment, setReviewComment] = useState(null);\n const [reviewEvidences, setReviewEvidences] = useState([]);\n const dispatch = useAppDispatch();\n const updateAssertionEveryWhere = useUpdateAssertionEverywhere();\n\n const handleConfirm = async () => {\n const params: AssertionsAssertionIdCreateReviewPostRequest = {\n assertionId: props.formData.id,\n assertionReviewStatus: reviewStatus,\n assertionReviewComment: reviewComment,\n };\n\n if (reviewEvidences) {\n params.assertionReviewEvidences = reviewEvidences;\n }\n\n const assertion = await dispatch(postAssertionReview(params)).unwrap();\n const { status, latestRunResults, overdue, nextRunAfter } = assertion;\n\n const assertionPayload = {\n status,\n latestRunResults,\n overdue,\n nextRunAfter,\n };\n updateAssertionEveryWhere(assertionPayload, props);\n\n props.onConfirm();\n props.onHide();\n };\n const handleStatusClick = (status: AssertionModelStatusEnum) =>\n setReviewStatus(status);\n const isSubmitting =\n useSelector(\n (state: ApplicationState) => state.compliance.postAssertionReviewStatus\n ) === 'loading';\n const handleFileChange = (files: File[]) => setReviewEvidences(files);\n\n const submitButtonDisabled = !reviewStatus || !reviewComment;\n const currentVendorUser = useSelector(selectCurrentVendorUser);\n return (\n \n {title}\n \n
\n \n handleStatusClick(AssertionModelStatusEnum.Compliant)\n }\n >\n Mark as passed\n \n handleStatusClick(AssertionModelStatusEnum.Failed)}\n >\n Mark as failed\n \n
\n
\n setReviewComment(event.currentTarget.value)}\n />\n
\n
\n
\n Upload evidence\n
\n
\n \n
\n
\n
\n \n \n Cancel\n \n \n Confirm\n \n \n \n );\n};\n","import React, { useState } from 'react';\nimport { EditTestFormSection, isTestAutomatic } from '../EditTestForm';\nimport { useChildClass } from '../../../../../../../hooks/useChildClass';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { AssertionModelStatusEnum } from '../../../../../../../swagger';\nimport { capitaliseFirst } from '../../../../../../../functions/capitaliseFirst';\nimport { faCheckCircle } from '@fortawesome/free-solid-svg-icons/faCheckCircle';\nimport { EditTestFormLastResultsList } from './EditTestFormLastResultsList/EditTestFormLastResultsList';\nimport { AdoptechButton } from '../../../../../../../components/AdoptechButton/AdoptechButton';\nimport { faCheck } from '@fortawesome/pro-solid-svg-icons/faCheck';\nimport { EditTestFormReviewTestModal } from '../EditTestFormReviewTestModal/EditTestFormReviewTestModal';\nimport { faExclamationCircle } from '@fortawesome/pro-solid-svg-icons/faExclamationCircle';\nimport { formatShortDate } from '../../../../../../../functions/formatShortDate';\nimport { faClock } from '@fortawesome/pro-light-svg-icons/faClock';\n\nexport const EditTestFormLastResultsSection: React.FC<\n EditTestFormSection\n> = props => {\n const baseCss = 'editTestForm';\n const childClass = useChildClass(baseCss);\n const isAuto = isTestAutomatic(props.formData);\n const isCompliant =\n props.formData.status === AssertionModelStatusEnum.Compliant;\n const isFailed = props.formData.status === AssertionModelStatusEnum.Failed;\n const [showReviewTestModal, setReviewTestModal] = useState(false);\n const handleReviewClick = () => setReviewTestModal(true);\n const [reviewConfirmed, setReviewConfirmed] = useState(false);\n\n return (\n
\n
\n
\n
Test status
\n \n \n
{capitaliseFirst(props.formData.status)}
\n
\n {!isAuto && (\n <>\n
\n \n {reviewConfirmed ? 'Review confirmed' : 'Run Test'}\n \n
\n {showReviewTestModal && (\n setReviewTestModal(false)}\n onConfirm={() => setReviewConfirmed(true)}\n />\n )}\n \n )}\n
\n
\n
Next Test due
\n
{formatShortDate(props.formData.nextRunAfter)}
\n {props.formData.overdue && (\n
\n \n Overdue\n
\n )}\n
\n \n
\n \n );\n};\n","import React from 'react';\nimport { AssertionModelTypeEnum } from '../../../../../../swagger';\nimport { ApplicationState } from '../../../../../../types/applicationState';\nimport { useSelector } from 'react-redux';\nimport { LoadingSpinner } from '../../../../../../components/LoadingSpinner/LoadingSpinner';\nimport { EditTestFormMainSection } from './EditTestFormMainSection/EditTestFormMainSection';\nimport { useChildClass } from '../../../../../../hooks/useChildClass';\nimport { TestForm } from '../EditTestDrawer';\nimport { EditTestFormAutoSection } from './EditTestFormAutoSection/EditTestFormAutoSection';\nimport { EditTestFormLastResultsSection } from './EditTestFormLastResultsSection/EditTestFormLastResultsSection';\n\ninterface EditTestFormProps {\n formData: T;\n onChange: (formData: T) => void;\n}\n\nexport type EditTestFormSection = EditTestFormProps;\n\nexport const isTestAutomatic = (formData: EditTestFormSection['formData']) =>\n formData.type === AssertionModelTypeEnum.Automatic;\nexport const EditTestForm: React.FC = props => {\n const { fetchAssertionDetailsStatus } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n\n const baseCss = 'editTestForm';\n const childClass = useChildClass(baseCss);\n\n if (fetchAssertionDetailsStatus === 'loading') return ;\n\n return (\n <>\n
\n
\n \n \n \n
\n
\n \n );\n};\n","import moment from 'moment';\n\nexport const formatDate = (date: string, format: keyof typeof formats) => {\n const formats = {\n longDateTime1: 'MMM D, YYYY HH:mm:ss', // Nov 30, 2023 10:42:26\n longDateTime2: 'DD/MM/YYYY HH:mm', // \"03/10/2023 14:29\"\n };\n return date ? moment(date).format(formats[format]) : null;\n};\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport './ExcludeResultModal.scss';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../../../../../components/AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../../../../../../../../components/AdoptechModal/AdoptechModal';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../../../../../types/applicationState';\n\nconst baseCss = 'excludeResultModal';\n\nexport const ExcludeResultModal: React.FC<{\n show: boolean;\n onCancel: (isConfirmed: boolean, reasonForExclusion?: string) => void;\n}> = props => {\n const description = 'Why are you excluding this test result?';\n const title = 'Reason for Exclusion';\n const [reasonForExclusion, setReasonForExclusion] = React.useState('');\n const {\n patchAssertionResultExcludeStatus,\n fetchAssertionDetailsSilentStatus,\n } = useSelector((state: ApplicationState) => state.compliance);\n const isExcluding =\n patchAssertionResultExcludeStatus === 'loading' ||\n fetchAssertionDetailsSilentStatus === 'loading';\n return (\n props.onCancel(false)}\n show={props.show}\n >\n {title}\n \n
\n
{description}
\n setReasonForExclusion(e.target.value)}\n placeholder=\"For Example, this is a test server and should not be included in the results\"\n />\n
\n
\n \n props.onCancel(false)}\n >\n Cancel\n \n {\n props.onCancel(true, reasonForExclusion);\n }}\n busy={isExcluding}\n variant={AdoptechButtonVariant.Warning}\n disabled={reasonForExclusion.length === 0}\n >\n Exclude\n \n \n \n );\n};\n","import React, { useState } from 'react';\nimport { EditTestFormSection, isTestAutomatic } from '../../EditTestForm';\nimport { useChildClass } from '../../../../../../../../hooks/useChildClass';\nimport './EditTestFormLastResultsList.scss';\nimport { formatDate } from '../../../../../../../../functions/formatDate';\nimport {\n AssertionModelStatusEnum,\n AssertionResultModel,\n AssertionResultModelStatusEnum,\n TaskExtended,\n TaskModelStatusEnum,\n} from '../../../../../../../../swagger';\nimport {\n fetchAssertionDetailsSilent,\n patchAssertionResultExclude,\n patchAssertionResultInclude,\n} from '../../../../../../../../store/compliance/complianceThunks';\nimport { useAppDispatch } from '../../../../../../../../hooks/useAppDispatch';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../../../../../types/applicationState';\nimport { LoadingSpinner } from '../../../../../../../../components/LoadingSpinner/LoadingSpinner';\nimport {\n setControlFormModel,\n setTempTask,\n updateHiddenEditTaskDrawerControls,\n updateTaskInTheTree,\n} from '../../../../../../../../store/compliance/complianceSlice';\nimport { TestForm } from '../../../EditTestDrawer';\nimport { AnyAction, ThunkDispatch } from '@reduxjs/toolkit';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../../../../../components/AdoptechButton/AdoptechButton';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { complianceTestsRoute } from '../../../../../../../../components/Routes/Routes';\nimport { push } from 'connected-react-router';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCircleMinus } from '@fortawesome/pro-light-svg-icons/faCircleMinus';\nimport { faCirclePlus } from '@fortawesome/pro-light-svg-icons';\nimport { ExcludeResultModal } from '../ExcludeResultModal/ExcludeResultModal';\nimport { setCurrentAgreement } from '../../../../../../../../store/agreements/agreementsSlice';\nimport { ConfirmationModal } from '../../../../../../../../components/ConfirmationModal/ConfirmationModal';\nimport { CommandConfirmation } from '../../../../../../../../types/CommandConfirmation';\nimport classNames from 'classnames';\nimport { faCloudDownload } from '@fortawesome/pro-light-svg-icons/faCloudDownload';\nimport { testResultEvidences } from '../../../../../../tests/TestResult';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { faExclamationCircle } from '@fortawesome/pro-solid-svg-icons/faExclamationCircle';\n\nexport const useUpdateHiddenControlDrawer = () => {\n const dispatch = useDispatch>();\n const { tempTask, editControlFormModel } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n\n const updateHiddenControlDrawer = (taskStatus: TaskModelStatusEnum) => {\n const updatedTasks = (editControlFormModel.tasks || []).map(task =>\n task.id === tempTask.id ? { ...task, status: taskStatus } : task\n );\n\n dispatch(\n setControlFormModel({\n ...editControlFormModel,\n tasks: updatedTasks,\n })\n );\n };\n\n return updateHiddenControlDrawer;\n};\n\nexport const calculateTaskStatus = (\n taskAssertions: TaskExtended['assertions']\n) => {\n const visibleAssertions = (taskAssertions || []).filter(\n assertion => assertion.available\n );\n const isEmpty = visibleAssertions.length === 0;\n const allCompliant = visibleAssertions.every(\n taskAssertion => taskAssertion.status === AssertionModelStatusEnum.Compliant\n );\n const hasFailed = visibleAssertions.some(\n taskAssertion => taskAssertion.status === AssertionModelStatusEnum.Failed\n );\n\n if (isEmpty) return TaskModelStatusEnum.Pending;\n\n if (allCompliant) return TaskModelStatusEnum.Compliant;\n if (hasFailed) return TaskModelStatusEnum.Failed;\n\n return TaskModelStatusEnum.Pending;\n};\n\n// if we run test OR exclude test ids OR change frequency => tests status changed =>\n// we need to update this test in control check drawer + control check status + test drawer\n\nexport const useUpdateAssertionEverywhere = () => {\n const dispatch = useAppDispatch();\n const { tempTask } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n\n const updateHiddenEditControlDrawerTasks = useUpdateHiddenControlDrawer();\n\n const updateAssertionEverywhere = (\n assertionPayload: TestForm,\n props: React.PropsWithChildren\n ) => {\n props.onChange({\n ...props.formData,\n ...assertionPayload,\n });\n\n const newAssertions = tempTask?.assertions.map(taskAssertion =>\n taskAssertion.id !== props.formData.id\n ? taskAssertion\n : { ...taskAssertion, ...assertionPayload }\n );\n\n const taskStatus = calculateTaskStatus(newAssertions);\n const newTempTaskPayload = {\n assertions: newAssertions,\n status: taskStatus,\n };\n dispatch(setTempTask({ ...tempTask, ...newTempTaskPayload }));\n\n dispatch(\n updateTaskInTheTree({\n status: taskStatus,\n id: tempTask.id,\n partialUpdate: true,\n })\n );\n\n updateHiddenEditControlDrawerTasks(taskStatus);\n dispatch(updateHiddenEditTaskDrawerControls());\n };\n\n return updateAssertionEverywhere;\n};\n\nconst parseJSONPayload = (result: AssertionResultModel) => {\n try {\n const message = JSON.parse(result.payload).message;\n\n if (typeof message === 'string' && message.trim() !== '') {\n return message.replace(/\\n/g, '
');\n }\n\n return null;\n } catch (error) {\n console.error('Error parsing JSON:', error.message);\n return null;\n }\n};\n\nconst testResultTitle = (result: AssertionResultModel) =>\n result.comment || parseJSONPayload(result);\n\nexport const EditTestFormLastResultsList: React.FC<\n EditTestFormSection\n> = props => {\n const baseCss = 'editTestResultsList';\n const childClass = useChildClass(baseCss);\n const dispatch = useAppDispatch();\n const isAuto = isTestAutomatic(props.formData);\n const {\n patchAssertionResultIncludeStatus,\n patchAssertionResultExcludeStatus,\n fetchAssertionDetailsSilentStatus,\n } = useSelector((state: ApplicationState) => state.compliance);\n const excludeResults = (props.formData.latestRunResults || []).filter(\n result => result.excluded\n );\n const includeResults = (props.formData.latestRunResults || []).filter(\n result => !result.excluded\n );\n const updateAssertionEveryWhere = useUpdateAssertionEverywhere();\n\n const handleExclude = async (\n event: React.SyntheticEvent,\n result: AssertionResultModel\n ) => {\n setShowExcludeModal(true);\n setCurrentResultId(result.id);\n };\n\n const handleInclude = async (\n event: React.SyntheticEvent,\n result: AssertionResultModel\n ) => {\n const handleIncludeConfirm = async () => {\n await dispatch(\n patchAssertionResultInclude({\n assertionResultId: result.id,\n })\n );\n await fetchAssertionAfterExcludeOrInclude();\n };\n command({\n title: 'Confirm inclusion',\n subject: { name: testResultTitle(result), type: 'Action' },\n description: 'Click CONFIRM to include this test.',\n buttonVariant: AdoptechButtonVariant.Warning,\n onConfirm: handleIncludeConfirm,\n });\n };\n\n const isExcluding =\n patchAssertionResultExcludeStatus == 'loading' ||\n fetchAssertionDetailsSilentStatus === 'loading';\n\n const handleViewLog = () =>\n dispatch(push(`${complianceTestsRoute}?search=${props.formData?.name}`));\n const isIncluding = patchAssertionResultIncludeStatus == 'loading';\n\n const hasIncludeResults = includeResults.length > 0;\n const hasExcludeResults = excludeResults.length > 0;\n const canExclude = includeResults.length > 1;\n const [showExcludeModal, setShowExcludeModal] = useState(false);\n const [currentResultId, setCurrentResultId] =\n useState(null);\n const [currentCommand, command] = useState(null);\n const fetchAssertionAfterExcludeOrInclude = async () => {\n const { status, latestRunResults } = await dispatch(\n fetchAssertionDetailsSilent({ assertionId: props.formData.id })\n ).unwrap();\n const assertionPayload = { status, latestRunResults };\n updateAssertionEveryWhere(assertionPayload, props);\n };\n const handleCancelExcludeModal = async (\n isConfirmed: boolean,\n reasonForExclusion?: string\n ) => {\n if (!isConfirmed) {\n setShowExcludeModal(false);\n setCurrentResultId(null);\n return;\n }\n setShowExcludeModal(false);\n await dispatch(\n patchAssertionResultExclude({\n assertionResultId: currentResultId,\n body: {\n assertionResult: {\n reasonForExclusion,\n },\n },\n })\n );\n await fetchAssertionAfterExcludeOrInclude();\n setCurrentResultId(null);\n };\n\n return (\n <>\n
\n
\n
Latest test results
{' '}\n {(isExcluding || isIncluding) && }\n
\n {hasIncludeResults && (\n
\n \n View Test Log\n \n
\n )}\n
\n {hasIncludeResults && (\n
\n \n
\n
Test
\n
Time
\n {!isAuto &&
Evidence
}\n
\n
\n {includeResults.map(result => {\n const isCompliant =\n result.status === AssertionResultModelStatusEnum.Compliant;\n return (\n \n \n \n \n \n
\n {formatDate(result.createdAt, 'longDateTime1')}\n
\n {!isAuto && (\n
\n {testResultEvidences(result)}\n
\n )}\n {canExclude && !(isExcluding || isIncluding) && (\n \n handleExclude(e, result)\n }\n className={childClass('excludeIcon')}\n >\n \n \n )}\n \n );\n })}\n \n )}\n {hasExcludeResults && (\n <>\n
\n
\n
Excluded test results
{' '}\n
\n
\n\n
\n
\n
Test
\n
Time
\n
\n
\n {excludeResults.map(result => (\n \n
\n
\n {formatDate(result.createdAt, 'longDateTime1')}\n
\n {!(isExcluding || isIncluding) && (\n \n handleInclude(e, result)\n }\n className={childClass('includeIcon')}\n >\n \n \n )}\n \n ))}\n \n \n )}\n {showExcludeModal && (\n \n )}\n command(null)}\n />\n \n );\n};\n","import React, { useMemo, useState } from 'react';\nimport './../../EditControlDrawer/EditDocumentModal/EditDocumentModal.scss';\nimport AdoptechModal from '../../../../../components/AdoptechModal/AdoptechModal';\nimport { AdoptechTextInput } from '../../../../../components/AdoptechTextInput/AdoptechTextInput';\nimport { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../../components/AdoptechButton/AdoptechButton';\nimport { Modal } from 'react-bootstrap';\nimport Fuse from 'fuse.js';\nimport {\n TaskExtended,\n TasksTaskIdAvailableAssertionsPatchRequest,\n} from '../../../../../swagger';\nimport { useDocumentsSelectTree } from '../../EditControlDrawer/EditDocumentModal/EditDocumentModal';\nimport { reactSelectLightStyleSmall } from '../../../../../functions/reactSelectCustomTheme';\nimport { SelectionOption } from '../../../../../types/selectionOption';\nimport { AdoptechReactSelect } from '../../../../../components/AdoptechReactSelect/AdoptechReactSelect';\nimport { uniqArrayObjects } from '../../../../../functions/uniqueArrayObjects';\nimport { patchControlCheckAssertions } from '../../../../../store/compliance/complianceThunks';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { calculateTaskStatus } from '../EditTestDrawer/EditTestForm/EditTestFormLastResultsSection/EditTestFormLastResultsList/EditTestFormLastResultsList';\nimport { updateTaskInTheTree } from '../../../../../store/compliance/complianceSlice';\n\ninterface EditDocumentModalProps {\n show: boolean;\n onChange: (task: TaskExtended) => void;\n onHide: () => void;\n}\n\nexport const EditAssertionModal: React.FC = props => {\n const baseCss = 'editDocumentModal';\n const [search, setSearch] = useState('');\n const { tempTask, patchControlCheckAssertionsStatus } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n const dispatch = useDispatch();\n const modalAssertions = (tempTask.assertions || []).filter(\n assertion => !assertion.available\n );\n\n const options = {\n ignoreLocation: true,\n includeScore: true,\n keys: ['name'],\n threshold: 0,\n };\n const fuseDocuments = new Fuse(modalAssertions, options);\n const [categoryId, setCategoryId] = useState(null);\n\n const documents = search\n ? fuseDocuments.search(search).map(x => x.item)\n : modalAssertions;\n const hasTests = modalAssertions.length > 0;\n\n const filteredDocuments = categoryId\n ? documents.filter(\n document => categoryId === document.assertionCategory?.id\n )\n : documents;\n\n const placeholder = 'Search for tests';\n const title = 'Add test';\n const { selectedIds, handleSelectAllButton, childClass, treeDiv } =\n useDocumentsSelectTree(filteredDocuments, baseCss);\n const handleConfirm = async () => {\n const availableAssertionIds = tempTask.assertions\n .filter(assertion => assertion.available)\n .map(assertion => assertion.id)\n .concat(selectedIds);\n\n const assertionsPayload: TasksTaskIdAvailableAssertionsPatchRequest = {\n taskId: tempTask.id,\n body: {\n availableAssertionIds,\n },\n };\n await dispatch(patchControlCheckAssertions(assertionsPayload));\n const newAssertions = tempTask.assertions.map(assertion => {\n return {\n ...assertion,\n ...{\n available: availableAssertionIds.includes(assertion.id),\n },\n };\n });\n\n const formPayload = {\n ...tempTask,\n ...{\n assertions: newAssertions,\n status: calculateTaskStatus(newAssertions),\n },\n };\n const taskPayload = {\n id: formPayload.id,\n assertions: formPayload.assertions,\n status: formPayload.status,\n partialUpdate: true,\n };\n\n dispatch(updateTaskInTheTree(taskPayload));\n props.onChange(formPayload);\n props.onHide();\n };\n\n const categoriesOptions = useMemo(() => {\n const categories = (\n (tempTask.assertions || []).filter(assertion => !assertion.available) ||\n []\n )\n .map(assertion => assertion.assertionCategory)\n .filter(category => category);\n\n return [{ label: 'Filter category', value: null }].concat(\n [...uniqArrayObjects(categories)].map(category => {\n return {\n label: category.name,\n value: category.id,\n };\n })\n );\n }, [tempTask.assertions]);\n\n const handleClose = props.onHide;\n\n return (\n \n {title}\n \n {hasTests && (\n <>\n
\n setSearch(e.target.value)}\n type=\"text\"\n placeholder={placeholder}\n icon={faSearch}\n additionalClass=\"adoptechTextInput-search\"\n />\n
\n
\n {\n setCategoryId(option.value);\n }}\n value={categoriesOptions.find(\n option => option.value === categoryId\n )}\n placeholder=\"Filter category\"\n />\n
\n\n {treeDiv}\n \n )}\n {!hasTests &&
There are no available tests
}\n
\n \n \n Select All\n \n {!hasTests && (\n \n OK\n \n )}\n {hasTests && (\n \n Confirm\n \n )}\n \n \n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport {\n AssertionExtended,\n AssertionUpdatePayloadAssertion,\n} from '../../../../../swagger';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../../components/AdoptechButton/AdoptechButton';\nimport './EditTestDrawer.scss';\nimport AdoptechHS from '../../../../../components/AdoptechHS/AdoptechHS';\nimport classNames from 'classnames';\nimport { DrawerType } from '../../../../../components/compliance/Types/complianceTypes';\nimport { EditTestForm, isTestAutomatic } from './EditTestForm/EditTestForm';\nimport {\n fetchAssertionDetails,\n patchAssertionDetails,\n} from '../../../../../store/compliance/complianceThunks';\nimport { useAppDispatch } from '../../../../../hooks/useAppDispatch';\nimport { useUpdateAssertionEverywhere } from './EditTestForm/EditTestFormLastResultsSection/EditTestFormLastResultsList/EditTestFormLastResultsList';\n\ninterface EditTestDrawerProps {\n onClose(): void;\n showBackButton: boolean;\n id: AssertionExtended['id'];\n name?: AssertionExtended['name']; // show name on initial details fetch\n}\nexport type TestForm = {\n id?: AssertionExtended['id'];\n name?: AssertionExtended['name'];\n frequency?: AssertionExtended['frequency'];\n description?: AssertionExtended['description'];\n ownerId?: AssertionExtended['owner']['id'];\n categoryId?: AssertionExtended['assertionCategory']['id'];\n type?: AssertionExtended['type'];\n autorun?: AssertionExtended['autorun'];\n status?: AssertionExtended['status'];\n lastRunAt?: AssertionExtended['lastRunAt'];\n latestRunResults?: AssertionExtended['latestRunResults'];\n overdue?: AssertionExtended['overdue'];\n nextRunAfter?: AssertionExtended['nextRunAfter'];\n};\n\nexport const EditTestDrawer: React.FC = ({\n onClose,\n showBackButton,\n name,\n id,\n}) => {\n const [formTouched, setFormTouched] = useState(false);\n\n const { drawerOnTop: activeDrawer, patchAssertionDetailsStatus } =\n useSelector((state: ApplicationState) => state.compliance);\n\n const isSubmitting = patchAssertionDetailsStatus === 'loading';\n const [formData, setFormData] = useState({});\n const [originalFormData, setOriginalFormData] = useState({});\n const isAuto = isTestAutomatic(formData);\n const dispatch = useAppDispatch();\n const baseCss = 'editTestDrawer';\n\n const handleClose = () => {\n onClose();\n };\n\n const drawerBackgroundRef = useRef();\n\n useEffect(() => {\n const fetchDetails = async () => {\n const assertion = await dispatch(\n fetchAssertionDetails({ assertionId: id })\n ).unwrap();\n const {\n frequency,\n description,\n type,\n owner,\n assertionCategory,\n autorun,\n lastRunAt,\n latestRunResults,\n status,\n overdue,\n nextRunAfter,\n } = assertion;\n\n const formPayload = {\n id: assertion.id,\n name: assertion.name,\n frequency,\n description,\n ownerId: owner?.id,\n categoryId: assertionCategory?.id,\n type,\n autorun,\n lastRunAt,\n latestRunResults,\n status,\n overdue,\n nextRunAfter,\n };\n setFormData(formPayload);\n setOriginalFormData(formPayload);\n };\n fetchDetails();\n }, []);\n const updateAssertionEveryWhere = useUpdateAssertionEverywhere();\n\n const editTestFormProps = {\n formData,\n onChange: (newFormData: TestForm) => {\n setFormData(newFormData);\n setFormTouched(true);\n },\n };\n\n const handleDoneClick = async () => {\n const fields = {\n categoryId: formData.categoryId,\n frequency: formData.frequency,\n description: formData.description,\n };\n\n const changedFields = Object.keys(fields).filter((key: keyof TestForm) => {\n return formData[key] !== originalFormData[key];\n });\n\n if (formData.id && changedFields.length > 0) {\n const patchPayload: AssertionUpdatePayloadAssertion = {};\n if (changedFields.includes('categoryId')) {\n patchPayload['assertionCategoryId'] = formData.categoryId;\n }\n if (changedFields.includes('frequency')) {\n patchPayload['frequency'] = formData.frequency;\n }\n if (changedFields.includes('description')) {\n patchPayload['description'] = formData.description;\n }\n await dispatch(\n patchAssertionDetails({\n assertionId: formData.id,\n body: { assertion: patchPayload },\n })\n ).unwrap();\n\n updateAssertionEveryWhere(formData, editTestFormProps);\n }\n\n handleClose();\n };\n\n return (\n \n \n Cancel\n \n \n Done\n \n \n }\n >\n \n \n );\n};\n","import React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectIsViewModeTaskDrawer } from '../../../../../selectors/compliance/selectIsViewModeEditTaskDrawer';\nimport AdoptechIcon from '../../AdoptechIcon/AdoptechIcon';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus';\nimport './ControlCheckTests.scss';\nimport { EditAssertionModal } from '../EditAssertionModal/EditAssertionModal';\nimport { ComplianceEditTaskFormProps } from '../ComplianceEditTaskForm/ComplianceEditTaskForm';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport {\n AssertionModel,\n AssertionModelStatusEnum,\n AssertionModelTypeEnum,\n} from '../../../../../swagger/models/AssertionModel';\nimport { faCheckCircle } from '@fortawesome/free-solid-svg-icons/faCheckCircle';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\nimport { faSyncAlt } from '@fortawesome/pro-light-svg-icons';\nimport { faPencil } from '@fortawesome/pro-light-svg-icons/faPencil';\nimport { AdoptechButtonVariant } from '../../../../../components/AdoptechButton/AdoptechButton';\nimport { CommandConfirmation } from '../../../../../types/CommandConfirmation';\nimport { ConfirmationModal } from '../../../../../components/ConfirmationModal/ConfirmationModal';\nimport {\n AssertionExtended,\n TasksTaskIdAvailableAssertionsPatchRequest,\n} from '../../../../../swagger';\nimport { EditTestDrawer } from '../EditTestDrawer/EditTestDrawer';\nimport { formatDate } from '../../../../../functions/formatDate';\nimport { faExclamationCircle } from '@fortawesome/pro-solid-svg-icons/faExclamationCircle';\nimport { patchControlCheckAssertions } from '../../../../../store/compliance/complianceThunks';\nimport { calculateTaskStatus } from '../EditTestDrawer/EditTestForm/EditTestFormLastResultsSection/EditTestFormLastResultsList/EditTestFormLastResultsList';\nimport {\n setDrawerOnTop,\n updateTaskInTheTree,\n} from '../../../../../store/compliance/complianceSlice';\nimport { LoadingSpinner } from '../../../../../components/LoadingSpinner/LoadingSpinner';\nimport { DrawerType } from '../../../../../components/compliance/Types/complianceTypes';\n\nexport const ControlCheckTests: React.FC<\n ComplianceEditTaskFormProps\n> = props => {\n const baseCss = 'controlCheckTests';\n const isViewMode = useSelector(selectIsViewModeTaskDrawer);\n const [showAddModal, setShowAddModal] = useState(false);\n const { tempTask } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n\n const allAssertions = tempTask?.assertions || [];\n // for table\n const assertions = allAssertions.filter(assertion => assertion.available);\n const childClass = (name: string) => `${baseCss}--${name}`;\n const assertionStatusClass = (assertion: AssertionModel) => {\n switch (assertion.status) {\n case AssertionModelStatusEnum.Compliant:\n return 'greenTick';\n case AssertionModelStatusEnum.Pending:\n return 'greyTick';\n case AssertionModelStatusEnum.Failed:\n return 'redTick';\n case AssertionModelStatusEnum.InProgress:\n return 'yellowTick';\n }\n };\n const [currentCommand, command] = useState(null);\n const dispatch = useDispatch();\n const handleRemoveClick = (assertion: AssertionModel) => {\n const handleRemoveConfirm = async () => {\n setDeletingAssertionId(assertion.id);\n const newAssertions = allAssertions.map(taskAssertion => {\n if (taskAssertion.id !== assertion.id) return taskAssertion;\n\n return {\n ...taskAssertion,\n ...{ available: false },\n };\n });\n\n const assertionsPayload: TasksTaskIdAvailableAssertionsPatchRequest = {\n taskId: tempTask.id,\n body: {\n availableAssertionIds: newAssertions\n .filter(newAssertion => newAssertion.available)\n .map(model => model.id),\n },\n };\n await dispatch(patchControlCheckAssertions(assertionsPayload));\n const taskPayload = {\n id: tempTask.id,\n assertions: newAssertions,\n status: calculateTaskStatus(newAssertions),\n partialUpdate: true,\n };\n\n dispatch(updateTaskInTheTree(taskPayload));\n\n props.onChange({\n ...tempTask,\n ...{\n assertions: taskPayload.assertions,\n status: taskPayload.status,\n },\n });\n setDeletingAssertionId(null);\n };\n command({\n title: 'Confirm Delete',\n subject: { name: assertion.name, type: 'Action' },\n description: 'Click CONFIRM to delete the test.',\n buttonVariant: AdoptechButtonVariant.Warning,\n onConfirm: handleRemoveConfirm,\n });\n };\n\n const [showTestDrawer, setShowTestDrawer] = useState<\n AssertionExtended['id'] | false\n >(false);\n\n const [deletingAssertionId, setDeletingAssertionId] = useState(null);\n\n return (\n <>\n
\n
Associated tests
\n {!isViewMode && (\n setShowAddModal(true)}>\n \n \n )}\n {showAddModal && tempTask && (\n setShowAddModal(false)}\n />\n )}\n
\n {assertions.length > 0 && (\n
\n
\n
Status
\n
Type
\n
Name
\n
Last run
\n
Action
\n
\n {assertions.map(assertion => {\n if (assertion.id === deletingAssertionId)\n return ;\n\n const isAuto = assertion.type === AssertionModelTypeEnum.Automatic;\n return (\n {\n e.stopPropagation();\n dispatch(setDrawerOnTop(DrawerType.Test));\n setShowTestDrawer(assertion.id);\n }}\n >\n
\n \n
\n
\n \n
\n
{assertion.name}
\n
\n {formatDate(assertion.lastRunAt, 'longDateTime2')}\n
\n
\n {\n handleRemoveClick(assertion);\n e.stopPropagation();\n }}\n />\n
\n
\n );\n })}\n command(null)}\n />\n {showTestDrawer && (\n setShowTestDrawer(false)}\n name={\n assertions.find(assertion => assertion.id === showTestDrawer)\n .name\n }\n showBackButton\n />\n )}\n \n )}\n \n );\n};\n","import React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectIsViewModeTaskDrawer } from '../../../../../selectors/compliance/selectIsViewModeEditTaskDrawer';\nimport AdoptechIcon from '../../AdoptechIcon/AdoptechIcon';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus';\nimport { EditActionModal } from '../../../../../components/EditActionModal/EditActionModal';\nimport { VendorActionModel } from '../../../../../swagger/models/VendorActionModel';\nimport {\n createActionReference,\n createNewAction,\n} from '../../../../calendar/store/calendarThunks';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { showGlobalToast } from '../../../../../store/global/globalSlice';\nimport { ReferenceCreatePayloadReferenceReferenceableTypeEnum } from '../../../../../swagger/models/ReferenceCreatePayloadReference';\nimport { VendorEventEventType } from '../../../../../swagger/models/VendorEventEventType';\nimport { ComplianceEditTaskFormProps } from '../ComplianceEditTaskForm/ComplianceEditTaskForm';\nimport {\n CalendarHSList,\n mapVendorActionToItem,\n} from '../../../../calendar/CalendarHS/CalendarHS';\nimport {\n CalendarItemModel,\n VendorActionExtended,\n} from '../../../../../swagger';\nimport './ControlCheckCalendarActions.scss';\nimport { useAppDispatch } from '../../../../../hooks/useAppDispatch';\nimport { mapVendorActonFormToPostPayload } from '../../../../calendar/CalendarPage/CalendarPageModals';\n\nexport const ControlCheckCalendarActions: React.FC<\n ComplianceEditTaskFormProps\n> = props => {\n const baseCss = 'controlCheckCalendarActions';\n const isViewMode = useSelector(selectIsViewModeTaskDrawer);\n const childClass = (name: string) => `${baseCss}--${name}`;\n const dispatch = useAppDispatch();\n const [showEditActionModal, setShowEditActionModal] = useState(false);\n const { tempTask } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n const createAction = async (params: VendorActionExtended) => {\n const createPayload = mapVendorActonFormToPostPayload(params);\n\n const afterCreate = (\n action: VendorActionExtended,\n _oldAction?: VendorActionExtended\n ) => {\n dispatch(\n createActionReference(\n action.id,\n tempTask.id,\n ReferenceCreatePayloadReferenceReferenceableTypeEnum.Task,\n () => {\n setShowEditActionModal(false);\n const vendorActions = [\n ...tempTask.vendorActions,\n action,\n ] as VendorActionModel[];\n const newTask = {\n ...tempTask,\n ...{ vendorActions },\n };\n props.onChange(newTask);\n dispatch(showGlobalToast('Action was successfully saved'));\n }\n )\n );\n };\n\n const newAction = await dispatch(\n createNewAction({ payload: createPayload })\n ).unwrap();\n\n afterCreate(newAction);\n };\n\n const calendarItems: CalendarItemModel[] = (\n tempTask?.vendorActions || []\n ).map(vendorAction => {\n return mapVendorActionToItem(vendorAction);\n });\n return (\n <>\n
\n
Actions
\n {!isViewMode && (\n setShowEditActionModal(true)}\n >\n \n \n )}\n {showEditActionModal && (\n setShowEditActionModal(false)}\n />\n )}\n
\n \n \n );\n};\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectIsViewModeTaskDrawer } from '../../../../../selectors/compliance/selectIsViewModeEditTaskDrawer';\nimport {\n TaskExtended,\n TaskModel,\n TaskModelStatusEnum,\n} from '../../../../../swagger';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { LoadingSpinner } from '../../../../../components/LoadingSpinner/LoadingSpinner';\nimport './ComplianceEditTaskForm.scss';\nimport classNames from 'classnames';\nimport { AdoptechTextInput2 } from '../../../../../components/AdoptechTextInput2/AdoptechTextInput2';\nimport { AdoptechTextArea2 } from '../../../../../components/AdoptechTextArea2/AdoptechTextArea2';\nimport { Interweave } from 'interweave';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { capitaliseFirst } from '../../../../../functions/capitaliseFirst';\nimport { ControlCheckTests } from '../ControlCheckTests/ControlCheckTests';\nimport { ControlCheckCalendarActions } from '../ControlCheckCalendarActions/ControlCheckCalendarActions';\nimport { ControlCheckControls } from '../ControlCheckControls/ControlCheckControls';\nimport { faExclamationCircle } from '@fortawesome/pro-solid-svg-icons/faExclamationCircle';\nimport { AdoptechReactSelect2 } from '../../../../../components/AdoptechReacSelect2/AdoptechReactSelect2';\nimport { useOwnerOptions } from '../../../../../hooks/useOwnerOptions';\nimport { SelectionOption } from '../../../../../types/selectionOption';\nimport { hasFeature } from '../../../../../functions/access';\nimport { AccessObject } from '../../../../../types/accessObject';\nimport { SecurityEditorOwnerWarning } from '../../EditControlDrawer/ComplianceEditControlForm/ComplianceEditControlForm';\n\nexport interface ComplianceEditTaskFormProps {\n onChange: (task: TaskExtended) => void;\n disabledFields?: ComplianceEditTaskFormFields[];\n}\n\nexport enum ComplianceEditTaskFormFields {\n Name,\n Description,\n Assignee,\n ReviewDate,\n Recurring,\n Status,\n}\n\nexport const ComplianceEditTaskForm: React.FC = ({\n onChange,\n disabledFields,\n}) => {\n const baseCss = 'complianceEditTaskForm';\n const rowNumber = 5;\n\n const { tempTask, selectedTaskId, tasks } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n const create = !selectedTaskId;\n const selectedTask = tasks.find(c => c.id === selectedTaskId);\n\n const isViewMode = useSelector(selectIsViewModeTaskDrawer);\n const disabledField = (prop: ComplianceEditTaskFormFields) =>\n isViewMode || disabledFields?.includes(prop);\n\n const dispatch = useDispatch();\n const { users, ownerOptions } = useOwnerOptions({\n onlyAdminable: true,\n });\n const isFetchingTaskDetails = useSelector(\n (state: ApplicationState) => state.compliance.isFetchingTaskDetails\n );\n const canManageOwner = create\n ? true\n : hasFeature(AccessObject.manage_ownership, tempTask?.access);\n const ownerTitle =\n create || canManageOwner ? null : SecurityEditorOwnerWarning;\n\n if (isFetchingTaskDetails) {\n return ;\n }\n\n const fieldBlock = (condition: boolean) =>\n classNames(baseCss + '--fieldBlock', {\n [`${baseCss}--fieldBlock-error`]: condition,\n });\n\n const nameError = !tempTask?.name?.trim() || tempTask?.name?.length > 100;\n const showDescriptionTextArea = create || tempTask?.custom;\n const showName = create || tempTask?.custom;\n\n const status = tempTask?.status;\n\n const isCompliant = status === TaskModelStatusEnum.Compliant;\n const isFailed = status === TaskModelStatusEnum.Failed;\n\n return (\n
\n
\n <>\n {showName && (\n
\n
\n <>\n {\n const updatedTask: TaskModel = {\n ...tempTask,\n name: e.currentTarget.value,\n };\n onChange(updatedTask);\n }}\n placeholder=\"Enter check name here\"\n type=\"text\"\n disabled={disabledField(ComplianceEditTaskFormFields.Name)}\n value={tempTask?.name}\n />\n \n
\n
\n )}\n
\n
\n {\n const ownerId = e.value;\n const updatedTask: TaskModel = {\n ...tempTask,\n assignee: users.find(user => user.id === ownerId),\n };\n onChange(updatedTask);\n }}\n value={ownerOptions.find(\n option => option.value == tempTask?.assignee?.id\n )}\n placeholder=\"Select assignee\"\n label=\"Owner\"\n showUserAvatar\n />\n
\n
\n
\n
\n
Check description
\n
\n
\n {showDescriptionTextArea ? (\n {\n const updatedTask: TaskModel = {\n ...tempTask,\n description: e.currentTarget.value,\n };\n onChange(updatedTask);\n }}\n value={tempTask?.description}\n placeholder=\"Add description here\"\n id=\"description\"\n rows={rowNumber}\n />\n ) : (\n \n )}\n
\n
\n\n {!create && (\n
\n
\n
\n
Check status
\n \n \n
{capitaliseFirst(status)}
\n
\n
\n \n
\n
\n )}\n\n {!create && (\n
\n
\n \n
\n
\n )}\n\n {!create && (\n
\n
\n \n
\n
\n )}\n \n
\n \n );\n};\n\nexport default ComplianceEditTaskForm;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n fetchTaskDetails,\n patchComplianceTask,\n postComplianceTask,\n} from '../../../../../store/compliance/complianceThunks';\nimport { TaskExtended, TaskModelStatusEnum } from '../../../../../swagger';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../../components/AdoptechButton/AdoptechButton';\nimport { ComplianceEditTaskForm } from '../ComplianceEditTaskForm/ComplianceEditTaskForm';\nimport './ComplianceEditTaskDrawer.scss';\nimport classNames from 'classnames';\nimport { DrawerType } from '../../../../../components/compliance/Types/complianceTypes';\nimport {\n cleanupTaskDetails,\n setEditTaskMode,\n setSelectedTaskId,\n setTempTask,\n updateTaskInTheTree,\n} from '../../../../../store/compliance/complianceSlice';\nimport { EditTaskMode } from '../../../../../store/compliance/complianceState';\nimport AdoptechHS from '../../../../../components/AdoptechHS/AdoptechHS';\nimport { useUpdateHiddenControlDrawer } from '../EditTestDrawer/EditTestForm/EditTestFormLastResultsSection/EditTestFormLastResultsList/EditTestFormLastResultsList';\nimport { ControlStatusText } from '../../EditControlDrawer/ComplianceEditControlForm/complianceStatus';\n\ninterface ComplianceEditTaskDrawerProps {\n show: boolean;\n onClose(): void;\n}\n\nexport const ComplianceEditTaskDrawer: React.FC<\n ComplianceEditTaskDrawerProps\n> = ({ show, onClose = () => {} }) => {\n const [formTouched, setFormTouched] = useState(false);\n\n const {\n selectedTaskId,\n selectedControlId,\n tempTask,\n showControlDrawer,\n isPatchingTask,\n isPostingTask,\n patchControlCheckAssertionsStatus,\n editControlFormModel,\n isFetchingTaskDetails,\n drawerOnTop: activeDrawer,\n } = useSelector((state: ApplicationState) => state.compliance);\n\n const isSubmitting =\n isPostingTask ||\n isPatchingTask ||\n isFetchingTaskDetails ||\n patchControlCheckAssertionsStatus === 'loading';\n\n const formValid = !!tempTask?.name;\n const dispatch = useDispatch();\n const baseCss = 'complianceEditTaskDrawer';\n const updateHiddenControlDrawer = useUpdateHiddenControlDrawer();\n const vendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n\n useEffect(() => {\n return () => {\n dispatch(setEditTaskMode(EditTaskMode.Normal));\n };\n }, []);\n\n const [originalTask, setOriginalTask] = useState(null);\n useEffect(() => {\n if (selectedTaskId) {\n dispatch(\n fetchTaskDetails(selectedTaskId, response => setOriginalTask(response))\n );\n } else {\n dispatch(setTempTask(undefined));\n }\n setFormTouched(false);\n }, [selectedTaskId]);\n\n const submit = async () => {\n if (tempTask?.id) {\n type PatchField = 'name' | 'description' | 'assigneeId';\n type PatchTaskPayload = {\n [key in PatchField]?: string;\n };\n const patchTaskPayload: PatchTaskPayload = {};\n\n // patch only changed fields\n ['name', 'description', 'assigneeId'].forEach((field: PatchField) => {\n if (field === 'assigneeId') {\n if (originalTask.assignee?.id !== tempTask.assignee?.id) {\n patchTaskPayload.assigneeId = tempTask.assignee?.id;\n }\n return;\n }\n\n if (originalTask[field] !== tempTask[field]) {\n patchTaskPayload[field] = tempTask[field];\n }\n });\n\n const onSuccess = (response: TaskExtended) => {\n dispatch(updateTaskInTheTree(response));\n updateHiddenControlDrawer(response.status);\n };\n await dispatch(\n patchComplianceTask({\n taskId: tempTask.id,\n task: patchTaskPayload,\n onSuccess: response => {\n onSuccess(response);\n },\n })\n );\n } else {\n const newTaskPayload = {\n name: tempTask.name,\n description: tempTask.description,\n assigneeId: tempTask?.assignee?.id,\n };\n dispatch(\n postComplianceTask({\n vendorId,\n task: newTaskPayload,\n })\n );\n }\n dispatch(cleanupTaskDetails());\n onClose();\n };\n\n const handleClose = () => {\n const handleNoSave = () => dispatch(setSelectedTaskId(undefined));\n\n dispatch(cleanupTaskDetails());\n onClose();\n if (!formTouched) handleNoSave();\n };\n\n const drawerBackgroundRef = useRef();\n\n enum TaskStatusText {\n Compliant = 'Compliant',\n NotCompliant = 'Not compliant',\n }\n const statusText =\n tempTask?.status === TaskModelStatusEnum.Compliant\n ? TaskStatusText.Compliant\n : TaskStatusText.NotCompliant;\n\n return (\n \n \n Cancel\n \n \n {tempTask ? 'DONE' : 'ADD'}\n \n \n }\n >\n {\n dispatch(setTempTask(editedTask));\n setFormTouched(true);\n }}\n />\n \n );\n};\n","import React, { useState } from 'react';\nimport './ControlCheckControls.scss';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectSelectedFramework } from '../../../../../selectors/selectSelectedFramework';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { LoadingSpinner } from '../../../../../components/LoadingSpinner/LoadingSpinner';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport {\n setControlFormModel,\n setSelectedControlId,\n setShowControlDrawer,\n} from '../../../../../store/compliance/complianceSlice';\nimport { EditControl } from '../../../../../components/compliance/Types/complianceTypes';\nimport { FrameworksPills } from '../../../../../components/Frameworks/Pills';\nimport {\n fetchComplianceCategories,\n fetchComplianceControls,\n fetchControlExtended,\n} from '../../../../../store/compliance/complianceThunks';\nimport { ControlModel, ControlModelStatusEnum } from '../../../../../swagger';\nimport { faExclamationCircle } from '@fortawesome/pro-solid-svg-icons/faExclamationCircle';\n\nexport const controlIcon = (control: ControlModel) => {\n return control.status === ControlModelStatusEnum.Failed\n ? faExclamationCircle\n : faCheckCircle;\n};\nexport const controlIconClass = (control: ControlModel, baseClass: string) => {\n return control.status === ControlModelStatusEnum.Compliant\n ? baseClass + '--greenTick'\n : control.status === ControlModelStatusEnum.Failed\n ? baseClass + '--redTick'\n : baseClass + '--greyTick';\n};\n\nexport const ControlCheckControls: React.FC = () => {\n const dispatch = useDispatch();\n const baseCss = 'controlCheckControls';\n const selectedFramework = useSelector(selectSelectedFramework);\n const { isFetchingTaskDetails, tempTask, frameworks } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n\n const isFetchingControls = useSelector(\n (state: ApplicationState) =>\n state.compliance.fetchControlsStatus === 'loading'\n );\n\n const vendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n const [controlDataFetched, setControlDataFetched] = useState(false);\n const fetchControlDrawerData = () => {\n if (controlDataFetched) return;\n const firstFrameworkId = (frameworks || [])[0].id; // TODO: BE support for multiple frameworks\n dispatch(fetchComplianceCategories(vendorId, firstFrameworkId));\n // used when click parent control RHS => add framework relation.\n\n dispatch(fetchComplianceControls({ vendorId, frameworkId: null }));\n // used in Control RHS: when click parent control RHS => control.policies, control.tasks\n setControlDataFetched(true);\n };\n\n const assignedControls = tempTask?.controls || [];\n // deprecated:\n // const controls = useSelector(selectLinkedControlsExtended(assignedControls));\n const controls = assignedControls;\n const childClass = (name: string) => `${baseCss}--${name}`;\n\n if (isFetchingTaskDetails) {\n return ;\n }\n\n return (\n <>\n
\n
Parent controls
\n
\n {isFetchingControls ? (\n \n ) : (\n <>\n {controls.length === 0 && (\n
There are no parent controls
\n )}\n {controls.length > 0 && (\n
\n
\n
\n
Name
\n
Framework
\n
\n {controls.map(control => {\n const controlFrameworks =\n (control.frameworksRelations || []).length > 0\n ? [control.frameworksRelations[0].framework]\n : [];\n return (\n {\n e.stopPropagation();\n fetchControlDrawerData();\n dispatch(fetchControlExtended(control.id));\n dispatch(setSelectedControlId(control.id));\n const editControl = new EditControl(control);\n dispatch(setControlFormModel(editControl.simpleObject()));\n dispatch(setShowControlDrawer(true));\n }}\n >\n
\n \n
\n
{control.name}
\n
\n \n
\n
\n );\n })}\n \n )}\n \n )}\n \n );\n};\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { Tab, Tabs } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n ControlExtended,\n VendorsVendorIdReviewHistoryItemsGetRelatedToTypeEnum,\n} from '../../../../../swagger';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../../components/AdoptechButton/AdoptechButton';\nimport { ComplianceEditControlForm } from '../ComplianceEditControlForm/ComplianceEditControlForm';\nimport './ComplianceEditControlDrawer.scss';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport {\n createPayload,\n DrawerType,\n updatePayload,\n} from '../../../../../components/compliance/Types/complianceTypes';\nimport {\n createComplianceControl,\n fetchControlExtended,\n patchComplianceControl,\n patchReasonForExclusion,\n} from '../../../../../store/compliance/complianceThunks';\nimport classNames from 'classnames';\nimport { EditControlMode } from '../../../../../store/compliance/complianceState';\nimport {\n addApplicableControl,\n removeNotApplicableControl,\n} from '../../../../../store/compliance/complianceSlice';\nimport { getControlStatusText } from '../ComplianceEditControlForm/complianceStatus';\nimport { ReviewHistoryItems } from '../../../../../components/compliance/ReviewHistoryItems/ReviewHistoryItems';\nimport AdoptechHS from '../../../../../components/AdoptechHS/AdoptechHS';\n\ninterface EditControlDrawerProps {\n show: boolean;\n control?: ControlExtended;\n onClose(): void;\n}\n\nexport enum TabsEnum {\n Details = 'Details',\n ReviewHistoryItemsTab = 'Review History',\n}\n\nexport const ComplianceEditControlDrawer: React.FC = ({\n show,\n control,\n onClose = () => {},\n}) => {\n const dispatch = useDispatch();\n const baseCss = 'complianceEditControlDrawer';\n const [selectedTab, setSelectedTab] = useState(TabsEnum.Details);\n const { editControlMode, isFetchingControlDetails } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n\n useEffect(() => {\n setSelectedTab(TabsEnum.Details);\n if (show && control?.id && !control?.tasks) {\n dispatch(fetchControlExtended(control.id));\n }\n return () => {\n setSelectedTab(null);\n };\n }, [show]);\n\n const editControlFormModel = useSelector(\n (state: ApplicationState) => state.compliance.editControlFormModel\n );\n\n const currentVendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n\n const activeDrawer = useSelector(\n (state: ApplicationState) => state.compliance.drawerOnTop\n );\n\n const submit = () => {\n if (editControlFormModel.create) {\n dispatch(\n createComplianceControl(\n currentVendorId,\n createPayload(editControlFormModel)\n )\n );\n } else {\n const setNotApplicable =\n editControlMode === EditControlMode.MarkNotApplicable;\n if (setNotApplicable) {\n dispatch(\n patchReasonForExclusion(\n editControlFormModel?.id,\n editControlFormModel.reasonForExclusion\n )\n );\n onClose();\n return;\n }\n dispatch(\n patchComplianceControl(\n editControlFormModel?.id,\n updatePayload(editControlFormModel)\n )\n );\n }\n onClose();\n };\n\n const handleClose = () => {\n const handleNoSave = () => {\n if (editControlMode === EditControlMode.MarkNotApplicable) {\n // 1) Click meatball to mark control as not applicable\n // 2) Click Cancel without saving reason for exclusion\n // 3) => Restore control to the same place inside category\n\n dispatch(removeNotApplicableControl({ controlId: control.id }));\n dispatch(addApplicableControl(control));\n }\n };\n\n onClose();\n if (!editControlFormModel?.formTouched) handleNoSave();\n };\n\n const isDoneDisabled = useMemo(() => {\n const isMarkNotApplicable =\n editControlMode === EditControlMode.MarkNotApplicable &&\n (!editControlFormModel.reasonForExclusion ||\n editControlFormModel.reasonForExclusion.length === 0);\n\n const isNormal =\n editControlMode === EditControlMode.Normal &&\n (!editControlFormModel?.formTouched || !editControlFormModel?.formValid);\n\n return isMarkNotApplicable || isNormal;\n }, [editControlFormModel, editControlMode]);\n\n const statusText = useMemo(\n () =>\n getControlStatusText(\n editControlFormModel?.tasks,\n editControlFormModel?.applicable\n ),\n [editControlFormModel]\n );\n const drawerBackgroundRef = useRef();\n return (\n \n \n Cancel\n \n \n {editControlFormModel.create ? 'ADD' : 'DONE'}\n \n \n }\n >\n
\n {\n setSelectedTab(key as TabsEnum);\n }}\n >\n \n {selectedTab === TabsEnum.Details && (\n \n )}\n \n \n {selectedTab === TabsEnum.ReviewHistoryItemsTab && (\n \n )}\n \n \n
\n \n );\n};\n","import { EditControlMode } from '../../store/compliance/complianceState';\nimport { ApplicationState } from '../../types/applicationState';\n\nexport const selectIsViewModeControlDrawer = (state: ApplicationState) =>\n state.compliance.editControlMode === EditControlMode.View;\n","import React, { useEffect, useState } from 'react';\nimport { ComplianceEditControlFormModel } from '../../Types/complianceTypes';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { useAppDispatch } from '../../../../hooks/useAppDispatch';\nimport { Modal } from 'react-bootstrap';\nimport AdoptechModal from '../../../AdoptechModal/AdoptechModal';\nimport './../../../../features/compliance/controls/EditControlDrawer/EditDocumentModal/EditDocumentModal.scss';\nimport {\n fetchPoliciesForVendor,\n fetchVendorPolicies,\n} from '../../../../store/policies/policiesThunks';\nimport {\n Policy,\n VendorPolicy,\n VendorPolicyDetails,\n VendorPolicyType,\n VendorsVendorIdVendorPoliciesGetQueryStatusEnum,\n} from '../../../../swagger';\nimport Fuse from 'fuse.js';\nimport { useDocumentsSelectTree } from '../../../../features/compliance/controls/EditControlDrawer/EditDocumentModal/EditDocumentModal';\nimport { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport { AdoptechTextInput } from '../../../AdoptechTextInput/AdoptechTextInput';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../AdoptechButton/AdoptechButton';\nimport { LoadingSpinner } from '../../../LoadingSpinner/LoadingSpinner';\nimport { uniqArrayObjects } from '../../../../functions/uniqueArrayObjects';\n\ninterface ControlEditPolicyModalProps {\n show: boolean;\n onChange: (control: ComplianceEditControlFormModel) => void;\n onHide: () => void;\n}\nexport const isVendorPolicy = (policy: PolicyOrVendorPolicy) => {\n return !!((policy as VendorPolicyDetails).type || '').includes(\n 'VendorPolicy'\n );\n};\n\nexport type PolicyOrVendorPolicy = Policy | VendorPolicy;\nexport const ControlEditPolicyModal: React.FC<\n ControlEditPolicyModalProps\n> = props => {\n const [search, setSearch] = useState('');\n const { editControlFormModel } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n\n const { fetchPoliciesStatus, fetchVendorPoliciesStatus } = useSelector(\n (state: ApplicationState) => state.policies\n );\n\n const isLoading =\n fetchPoliciesStatus === 'loading' ||\n fetchVendorPoliciesStatus === 'loading';\n const dispatch = useAppDispatch();\n\n const [modalPolicies, setModalPolicies] = useState(\n []\n );\n\n const hasPolicies = modalPolicies.length > 0;\n useEffect(() => {\n const fetchAsyncPolicies = async () => {\n const vendorPolicies = await dispatch(\n fetchVendorPolicies({\n queryStatus: [\n VendorsVendorIdVendorPoliciesGetQueryStatusEnum.Completed,\n ],\n queryType: [VendorPolicyType.Uploaded],\n })\n ).unwrap();\n const policies = await dispatch(fetchPoliciesForVendor()).unwrap();\n\n const formVendorPoliciesIds = (\n editControlFormModel.vendorPolicies || []\n ).map(vendorPolicy => vendorPolicy.id);\n const formPolicyCodes = (editControlFormModel.policies || []).map(\n policy => policy.code\n );\n\n const modalVendorPoliciesPayload = vendorPolicies.filter(policy => {\n return !formVendorPoliciesIds.includes(policy.id);\n });\n\n const modalPoliciesPayload = policies.filter(policy => {\n return !formPolicyCodes.includes((policy as Policy).code);\n });\n\n const modalRecords = [\n ...modalVendorPoliciesPayload,\n ...modalPoliciesPayload,\n ];\n type ObjectsWithIds = { id: string }[];\n setModalPolicies(uniqArrayObjects(modalRecords as ObjectsWithIds));\n };\n\n props.show && fetchAsyncPolicies();\n }, [props.show]);\n\n const options = {\n ignoreLocation: true,\n includeScore: true,\n keys: ['name'],\n threshold: 0,\n };\n\n const fuseDocuments = new Fuse(modalPolicies, options);\n const filteredDocuments = search\n ? fuseDocuments.search(search).map(x => x.item)\n : modalPolicies;\n\n const placeholder = 'Search for policies';\n const title = 'Add control policy';\n const baseCss = 'editDocumentModal';\n\n const { selectedIds, handleSelectAllButton, childClass, treeDiv } =\n useDocumentsSelectTree(filteredDocuments, baseCss);\n\n const handleConfirm = async () => {\n const newPolicies = modalPolicies.filter(\n policy => selectedIds.includes(policy.id) && !isVendorPolicy(policy)\n );\n\n const newVendorPolicies = modalPolicies.filter(policy => {\n return selectedIds.includes(policy.id) && isVendorPolicy(policy);\n });\n\n props.onChange({\n ...editControlFormModel,\n formTouched: true,\n policies: [...(editControlFormModel.policies || []), ...newPolicies],\n vendorPolicies: [\n ...(editControlFormModel.vendorPolicies || []),\n ...newVendorPolicies,\n ],\n });\n props.onHide();\n };\n\n const handleClose = props.onHide;\n\n return (\n \n {title}\n \n {isLoading && }\n {!isLoading && hasPolicies && (\n <>\n
\n setSearch(e.target.value)}\n type=\"text\"\n placeholder={placeholder}\n icon={faSearch}\n additionalClass=\"adoptechTextInput-search\"\n />\n
\n {treeDiv}\n \n )}\n {!isLoading && !hasPolicies && (\n
There are no available policies
\n )}\n
\n \n \n Select All\n \n {!hasPolicies && (\n \n OK\n \n )}\n {hasPolicies && (\n \n Confirm\n \n )}\n \n \n );\n};\n","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\n\nimport React, { useState } from 'react';\nimport './ComplianceControlPoliciesSimpleList.scss';\nimport { Policy, VendorPolicy } from '../../../swagger';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { useSelector } from 'react-redux';\nimport { selectIsViewModeControlDrawer } from '../../../selectors/compliance/selectIsViewModeEditControlDrawer';\nimport AdoptechIcon from '../../../features/compliance/controls/AdoptechIcon/AdoptechIcon';\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport { setControlFormModel } from '../../../store/compliance/complianceSlice';\nimport { ComplianceEditControlFormModel } from '../Types/complianceTypes';\nimport {\n ControlEditPolicyModal,\n isVendorPolicy,\n} from './ControlEditPolicyModal/ControlEditPolicyModal';\nimport { ConfirmModal } from '../../ConfirmModal/ConfirmModal';\n\nexport const ComplianceControlPoliciesSimpleList: React.FC = () => {\n const {\n editControlFormModel: { policies, vendorPolicies },\n editControlFormModel,\n } = useSelector((state: ApplicationState) => state.compliance);\n const formPolicies = [...(policies || []), ...(vendorPolicies || [])].sort(\n (a, b) => (a.name > b.name ? 1 : -1)\n );\n const dispatch = useAppDispatch();\n\n const baseCss = 'complianceControlPoliciesSimpleList';\n\n const handleRemove = (policy: (typeof formPolicies)[0]) => {\n if (isVendorPolicy(policy)) {\n const vendorPoliciesExceptCurrent = (vendorPolicies || []).filter(\n formPolicy => formPolicy.id !== policy.id\n );\n dispatch(\n setControlFormModel({\n ...editControlFormModel,\n ...{ vendorPolicies: vendorPoliciesExceptCurrent, formTouched: true },\n })\n );\n return;\n }\n const policiesExceptCurrent = (policies || []).filter(\n formPolicy => (formPolicy as Policy).code !== (policy as Policy).code\n );\n\n dispatch(\n setControlFormModel({\n ...editControlFormModel,\n ...{ policies: policiesExceptCurrent, formTouched: true },\n })\n );\n };\n\n const isViewMode = useSelector(selectIsViewModeControlDrawer);\n const [showPolicyEditModal, setShowPolicyEditModal] = useState(false);\n\n const [policyToRemove, setPolicyToRemove] = useState(\n undefined\n );\n\n return (\n <>\n
\n
Linked policies
\n setShowPolicyEditModal(true)}\n >\n \n \n
\n\n {(formPolicies || []).length > 0 && (\n
\n
\n
Name
\n
Action
\n
\n\n {formPolicies?.map(policy => (\n
\n
{policy.name}
\n
\n {!isViewMode && (\n {\n e.stopPropagation();\n setPolicyToRemove(policy);\n }}\n />\n )}\n
\n
\n ))}\n
\n )}\n\n {\n setPolicyToRemove(undefined);\n }}\n headerText=\"Remove Control Policy\"\n description=\"Are you sure you would like to remove policy:\"\n show={Boolean(policyToRemove)}\n confirm={() => {\n handleRemove(policyToRemove);\n setPolicyToRemove(undefined);\n }}\n >\n
{policyToRemove?.name}
\n \n\n {!isViewMode && showPolicyEditModal && (\n setShowPolicyEditModal(false)}\n onChange={(controlForm: ComplianceEditControlFormModel) => {\n dispatch(\n setControlFormModel({\n ...controlForm,\n })\n );\n }}\n />\n )}\n \n );\n};\n","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\n\nimport React, { useState } from 'react';\nimport './ComplianceControlTasksSimpleList.scss';\nimport { TaskModel, TaskModelStatusEnum } from '../../../../../swagger';\nimport { faCheckCircle as solidFaCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n removeControlRelation,\n setControlFormModel,\n} from '../../../../../store/compliance/complianceSlice';\nimport { ConfirmModal } from '../../../../../components/ConfirmModal/ConfirmModal';\nimport { selectIsViewModeControlDrawer } from '../../../../../selectors/compliance/selectIsViewModeEditControlDrawer';\nimport { useOnTaskViewClick } from '../../../../../hooks/compliance/useOnTaskViewClick';\nimport AdoptechIcon from '../../AdoptechIcon/AdoptechIcon';\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus';\nimport { EditDocumentModal } from '../EditDocumentModal/EditDocumentModal';\nimport { LoadingSpinner } from '../../../../../components/LoadingSpinner/LoadingSpinner';\nimport AdoptechOverflowLine from '../../../../../components/AdoptechOverflowLine/AdoptechOverflowLine';\nimport { faExclamationCircle } from '@fortawesome/pro-solid-svg-icons/faExclamationCircle';\n\nexport const ComplianceControlTasksSimpleList: React.FC = () => {\n const baseCss = 'complianceControlTasksSimpleList';\n const [taskToRemove, setTaskToRemove] = useState(undefined);\n const dispatch = useDispatch();\n\n const {\n editControlFormModel,\n isFetchingCategories,\n isFetchingControlDetails,\n } = useSelector((state: ApplicationState) => state.compliance);\n const updateTaskListOnModel = (tasks: TaskModel[]) => {\n dispatch(\n setControlFormModel({\n ...editControlFormModel,\n tasks,\n formTouched: true,\n })\n );\n };\n\n const handleRemoveTask = (task: TaskModel) => {\n if (!task) return;\n let tasks: TaskModel[] = [];\n\n tasks = editControlFormModel.tasks?.filter(t => t.id !== task.id);\n dispatch(removeControlRelation(editControlFormModel.id));\n\n updateTaskListOnModel(tasks);\n };\n\n const isViewMode = useSelector(selectIsViewModeControlDrawer);\n const { onTaskViewClick } = useOnTaskViewClick();\n const [showCheckModal, setShowCheckModal] = useState(false);\n if (isFetchingControlDetails) return ;\n return (\n <>\n
\n
Associated checks
\n {!isViewMode && (\n setShowCheckModal(true)}>\n \n \n )}\n\n setShowCheckModal(false)}\n />\n
\n\n {(editControlFormModel?.tasks || []).length > 0 && (\n
\n
\n
Status
\n
Name
\n
Action
\n
\n {editControlFormModel?.tasks?.map(task => (\n {\n e.stopPropagation();\n onTaskViewClick(task.id);\n }}\n >\n
\n \n
\n \n {task.name}\n \n
\n {editControlFormModel?.create ? (\n {\n handleRemoveTask(task);\n e.stopPropagation();\n }}\n />\n ) : !isViewMode ? (\n {\n setTaskToRemove(task);\n e.stopPropagation();\n }}\n />\n ) : null}\n
\n
\n ))}\n\n {\n setTaskToRemove(undefined);\n }}\n headerText=\"Remove Check\"\n description=\"Are you sure you would like to remove check:\"\n show={Boolean(taskToRemove)}\n confirm={() => {\n handleRemoveTask(taskToRemove);\n setTaskToRemove(undefined);\n }}\n >\n
{taskToRemove?.name}
\n \n \n )}\n \n );\n};\n","import { EditControlMode } from '../../store/compliance/complianceState';\nimport { ApplicationState } from '../../types/applicationState';\n\nexport const selectIsNormalModeControlDrawer = (state: ApplicationState) =>\n state.compliance.editControlMode === null ||\n state.compliance.editControlMode === EditControlMode.Normal;\n","import React, { useState } from 'react';\nimport { AdoptechButton } from '../../../../../components/AdoptechButton/AdoptechButton';\nimport { calculateNextReviewDate } from '../../../../../components/PolicyDrawer/PolicyOverviewSection/PolicyOverviewSection';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n ControlReviewFrequencyEnum,\n ReviewHistoryItemCreatePayloadReviewHistoryItem,\n ReviewHistoryItemCreatePayloadReviewHistoryItemRelatedToTypeEnum,\n ReviewStatusEnum,\n} from '../../../../../swagger';\nimport { postReviewHistoryItem } from '../../../../../store/compliance/complianceThunks';\nimport {\n setControlFormModel,\n updateControlReviewStatusSuccess,\n} from '../../../../../store/compliance/complianceSlice';\nimport { ComplianceEditControlFormModel } from '../../../../../components/compliance/Types/complianceTypes';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { UserAvatar } from '../../../../../components/UserAvatar/UserAvatar';\nimport { faCheck } from '@fortawesome/pro-solid-svg-icons/faCheck';\nimport { formatShortDate } from '../../../../../functions/formatShortDate';\nimport { AdoptechDatePicker } from '../../../../../components/AdoptechDatePicker/AdoptechDatePicker';\nimport moment from 'moment';\nimport { useOwnerOptions } from '../../../../../hooks/useOwnerOptions';\nimport { selectCurrentVendorUser } from '../../../../../selectors/selectCurrentVendorUser';\n\ninterface EditControlReviewProps {\n control: ComplianceEditControlFormModel;\n}\n\nexport const EditControlReview: React.FC = props => {\n const baseCss = 'complianceEditControlForm';\n const dispatch = useDispatch();\n const { editControlFormModel, isPostingReviewHistoryItem } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n const { users } = useOwnerOptions({\n onlyAdminable: true,\n });\n\n const [reviewConfirmed, setReviewConfirmed] = useState(false);\n\n const handleReviewClick = (e: { preventDefault: () => void }) => {\n e.preventDefault();\n const reviewFrequency = ControlReviewFrequencyEnum._12Months;\n const payload: ReviewHistoryItemCreatePayloadReviewHistoryItem = {\n relatedToType:\n ReviewHistoryItemCreatePayloadReviewHistoryItemRelatedToTypeEnum.Control,\n relatedToId: props.control.id,\n reviewFrequency,\n };\n\n dispatch(\n postReviewHistoryItem(payload, historyItem => {\n const nextReviewDate = calculateNextReviewDate(\n historyItem.createdAt,\n ControlReviewFrequencyEnum._12Months\n );\n dispatch(\n updateControlReviewStatusSuccess({\n id: props.control.id,\n nextReviewDate,\n reviewStatus: ReviewStatusEnum.Reviewed,\n reviewOverdue: false,\n })\n );\n\n dispatch(\n setControlFormModel({\n ...editControlFormModel,\n nextReviewDate: nextReviewDate,\n formTouched: true,\n })\n );\n setReviewConfirmed(true);\n })\n );\n };\n\n const currentVendorUser = useSelector(selectCurrentVendorUser);\n\n return (\n <>\n
\n
Control review
\n \n \n {reviewConfirmed ? 'Review confirmed' : 'Review'}\n \n
\n
\n
Last reviewed by
\n \n user.id ===\n (reviewConfirmed\n ? currentVendorUser.id\n : props.control.lastReview?.owner?.id)\n )}\n size=\"small\"\n showTooltip\n />\n
\n {formatShortDate(\n reviewConfirmed\n ? new Date().toISOString()\n : props.control.lastReview?.createdAt\n )}\n
\n
\n
\n
Next review due
\n {editControlFormModel.nextReviewDate && (\n {\n const endOfDay = moment(d).endOf('day');\n const endOfDayToDateTime = endOfDay.toJSON();\n\n dispatch(\n setControlFormModel({\n ...editControlFormModel,\n nextReviewDate: endOfDayToDateTime,\n formTouched: true,\n })\n );\n }}\n >\n )}\n
\n \n );\n};\n","import React, { useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { setControlFormModel } from '../../../../../store/compliance/complianceSlice';\nimport { ComplianceEditControlFormModel } from '../../../../../components/compliance/Types/complianceTypes';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { faCheck } from '@fortawesome/pro-solid-svg-icons/faCheck';\nimport { AdoptechTextArea2 } from '../../../../../components/AdoptechTextArea2/AdoptechTextArea2';\nimport AdoptechIcon from '../../AdoptechIcon/AdoptechIcon';\nimport { faXmark } from '@fortawesome/pro-solid-svg-icons/faXmark';\nimport { selectIsViewModeControlDrawer } from '../../../../../selectors/compliance/selectIsViewModeEditControlDrawer';\nimport { faPen } from '@fortawesome/pro-light-svg-icons/faPen';\nimport { useAutoGrowTextArea } from '../../../../../hooks/useAutoGrowTextArea';\nimport { faInfoCircle } from '@fortawesome/pro-light-svg-icons/faInfoCircle';\n\ninterface EditControlTreatmentPlanProps {\n control: ComplianceEditControlFormModel;\n}\n\nexport const EditControlTreatmentPlan: React.FC<\n EditControlTreatmentPlanProps\n> = props => {\n const baseCss = 'complianceEditControlForm';\n const dispatch = useDispatch();\n const { editControlFormModel, isPostingReviewHistoryItem } = useSelector(\n (state: ApplicationState) => state.compliance\n );\n const treatmentPlanRowNumber = 8;\n const handleTreatmentPlanChange = (e: {\n currentTarget: { value: string };\n }) => {\n dispatch(\n setControlFormModel({\n ...editControlFormModel,\n ...{\n formTouched: true,\n treatmentPlan: e.currentTarget.value,\n },\n })\n );\n };\n\n const isViewMode = useSelector(selectIsViewModeControlDrawer);\n\n const treatmentPlanRef = useRef(null);\n useAutoGrowTextArea(treatmentPlanRef.current, props.control.treatmentPlan);\n const { helpArticleUrl } = props.control;\n return (\n \n \n {helpArticleUrl?.length > 0 && (\n window.open(helpArticleUrl, '_blank')}\n />\n )}\n \n }\n rounded\n ref={treatmentPlanRef}\n onChange={handleTreatmentPlanChange}\n value={props.control.treatmentPlan}\n placeholder=\"Add compliance procedure description here\"\n id=\"treatmentPlan\"\n disabled={isViewMode}\n rows={treatmentPlanRowNumber}\n />\n );\n};\n","import React, { useState } from 'react';\nimport './EditControlFrameworksModal.scss';\nimport { Modal } from 'react-bootstrap';\nimport AdoptechModal from '../../../../../components/AdoptechModal/AdoptechModal';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../../components/AdoptechButton/AdoptechButton';\nimport { SelectionOption } from '../../../../../types/selectionOption';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { ControlModel } from '../../../../../swagger/models/ControlModel';\nimport { AdoptechReactSelect } from '../../../../../components/AdoptechReactSelect/AdoptechReactSelect';\nimport { minimumAssignedFrameworks } from '../../../../../components/compliance/Types/complianceTypes';\nimport { FrameworkModel } from '../../../../../swagger/models/FrameworkModel';\nimport { AdoptechTextInput } from '../../../../../components/AdoptechTextInput/AdoptechTextInput';\nimport { reactSelectLightStyle } from '../../../../../functions/reactSelectCustomTheme';\n\nexport type HandleAddFrameworkPayload = {\n framework: {\n id: string;\n name: string;\n };\n controlCategory: {\n id: string;\n name: string;\n };\n annexRef: string;\n};\n\ninterface EditControlFrameworkModalProps {\n show: boolean;\n onHide: () => void;\n onConfirm: (payload: HandleAddFrameworkPayload) => void;\n relations: ControlModel['frameworksRelations'];\n}\nexport const EditControlFrameworksModal: React.FC<\n EditControlFrameworkModalProps\n> = props => {\n const baseCss = 'editControlFrameworksModal';\n const childClass = (name: string) => `${baseCss}--${name}`;\n const title = 'Add parent framework';\n const handleCancel = () => {\n setSelectedFramework(null);\n setSelectedCategory(null);\n setReferenceText(null);\n props.onHide();\n };\n const handleConfirm = () => {\n const payload = {\n framework: { id: selectedFramework.value, name: selectedFramework.label },\n controlCategory: {\n id: selectedCategory.value,\n name: selectedCategory.label,\n },\n annexRef: referenceText,\n };\n\n props.onConfirm(payload);\n handleCancel();\n };\n\n const [selectedFramework, setSelectedFramework] =\n useState(undefined);\n const [selectedCategory, setSelectedCategory] =\n useState(undefined);\n const [referenceText, setReferenceText] = useState(undefined);\n\n const frameworkOptions = useSelector((state: ApplicationState) =>\n state.compliance.frameworks.filter(\n framework => !props.relations?.some(r => r.framework.id === framework.id)\n )\n );\n\n const categoryOptions = useSelector((state: ApplicationState) =>\n state.compliance.categories.filter(\n category =>\n !props.relations?.some(r => r.controlCategory.id === category.id)\n )\n );\n\n return (\n \n {title}\n \n
\n {\n return { value: f.id, label: f.name };\n })}\n onChange={(e: SelectionOption) => {\n setSelectedFramework(e);\n }}\n value={selectedFramework}\n placeholder=\"Select Framework\"\n />\n\n {\n return { value: c.id, label: c.name };\n })}\n onChange={(e: SelectionOption) => {\n setSelectedCategory(e);\n }}\n value={selectedCategory}\n placeholder=\"Select Category\"\n />\n\n {\n const ref = e.target.value;\n setReferenceText(ref);\n }}\n placeholder=\"Add Reference (Optional)\"\n type=\"text\"\n value={referenceText}\n />\n
\n
\n \n \n Cancel\n \n \n Confirm\n \n \n \n );\n};\n","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faTrashAlt } from '@fortawesome/pro-light-svg-icons/faTrashAlt';\n\nimport React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport './ComplianceControlFrameworksSimpleList.scss';\nimport { faPlus } from '@fortawesome/pro-solid-svg-icons/faPlus';\nimport {\n ComplianceEditControlFormModel,\n minimumAssignedFrameworks,\n} from '../../../../../components/compliance/Types/complianceTypes';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { setControlFormModel } from '../../../../../store/compliance/complianceSlice';\nimport { LoadingSpinner } from '../../../../../components/LoadingSpinner/LoadingSpinner';\nimport AdoptechIcon from '../../AdoptechIcon/AdoptechIcon';\nimport { FrameworksPills } from '../../../../../components/Frameworks/Pills';\nimport {\n EditControlFrameworksModal,\n HandleAddFrameworkPayload,\n} from '../EditControlFrameworksModal/EditControlFrameworksModal';\nimport { selectIsViewModeControlDrawer } from '../../../../../selectors/compliance/selectIsViewModeEditControlDrawer';\nimport { FrameworkRelation } from '../../../../../swagger/models/FrameworkRelation';\n\nexport interface ComplianceFrameworksListProps {\n control: ComplianceEditControlFormModel;\n}\n\nexport const ComplianceControlFrameworksSimpleList: React.FC<\n ComplianceFrameworksListProps\n> = ({ control }) => {\n const baseCss = 'complianceControlFrameworksSimpleList';\n const dispatch = useDispatch();\n\n const [relations, setRelations] = useState([...control.frameworksRelations]);\n\n const {\n editControlFormModel,\n isFetchingCategories,\n frameworks: allFrameworks,\n } = useSelector((state: ApplicationState) => state.compliance);\n // for min limit of frameworks\n const frameworksAssigned = relations.map(relation =>\n allFrameworks.find(framework => framework.id === relation.framework.id)\n );\n\n const [showFrameworkModal, setShowFrameworkModal] = useState(false);\n const isViewMode = useSelector(selectIsViewModeControlDrawer);\n\n const dispatchRelations = (newRelations: FrameworkRelation[]) => {\n dispatch(\n setControlFormModel({\n ...editControlFormModel,\n frameworksRelations: [...newRelations],\n formTouched: true,\n })\n );\n };\n\n const handleRemove = (frameworkId: string) => {\n const tempRelations = relations.filter(\n relation => relation.framework?.id !== frameworkId\n );\n setRelations(tempRelations);\n dispatchRelations(tempRelations);\n };\n\n const handleAdd = (payload: HandleAddFrameworkPayload) => {\n const newRelations = [...relations, payload];\n\n setRelations(newRelations);\n dispatchRelations(newRelations);\n };\n\n if (isFetchingCategories && !editControlFormModel.create)\n return ;\n return (\n <>\n
\n
Parent frameworks
\n\n {!isViewMode && (\n setShowFrameworkModal(true)}\n >\n \n \n )}\n
\n {(relations || []).length > 0 && (\n
\n
\n
Name
\n
Category
\n
Reference
\n
Action
\n
\n {relations.map(relation => (\n \n
\n \n
\n
\n {relation.controlCategory.name}\n
\n
{relation.annexRef}
\n {!isViewMode && (\n minimumAssignedFrameworks\n ? '--icon'\n : '--icon-disabled')\n }\n >\n handleRemove(relation.framework?.id)}\n />\n
\n )}\n \n ))}\n \n )}\n\n setShowFrameworkModal(false)}\n onConfirm={handleAdd}\n relations={relations}\n />\n \n );\n};\n","import React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { useAppDispatch } from '../../../../../hooks/useAppDispatch';\nimport './ComplianceControlRisksList.scss';\nimport {\n riskRegistryItemRoute,\n riskRegistryRoute,\n} from '../../../../../components/Routes/Routes';\nimport { push } from 'connected-react-router';\nimport { ControlRiskModel } from '../../../../../swagger';\nimport AdoptechOverflowLine from '../../../../../components/AdoptechOverflowLine/AdoptechOverflowLine';\nimport { faLink } from '@fortawesome/pro-light-svg-icons/faLink';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faArrowUpRightFromSquare } from '@fortawesome/pro-light-svg-icons';\nimport { LoadingSpinner } from '../../../../../components/LoadingSpinner/LoadingSpinner';\n\nexport const ComplianceControlRisksList: React.FC = () => {\n const {\n editControlFormModel: { risks },\n isFetchingControlDetails,\n } = useSelector((state: ApplicationState) => state.compliance);\n const formRisks = [...(risks || [])].sort((a, b) =>\n a.name > b.name ? 1 : -1\n );\n const dispatch = useAppDispatch();\n\n const baseCss = 'complianceControlRisksList';\n\n const handleRiskClick = (\n e: { stopPropagation: () => void },\n risk: ControlRiskModel\n ) => {\n dispatch(push(riskRegistryItemRoute.replace(':riskRegisterId', risk.id)));\n };\n return (\n <>\n
\n
Linked risks
\n
\n\n {isFetchingControlDetails ? (\n \n ) : (formRisks || []).length === 0 ? (\n
\n No linked risks found{' '}\n \n at the risk register{' '}\n \n \n
\n ) : (\n
\n
\n
Name
\n
\n\n {formRisks?.map(risk => (\n handleRiskClick(e, risk)}\n >\n {risk.name}\n
\n ))}\n \n )}\n \n );\n};\n","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ComplianceControlPoliciesSimpleList } from '../../../../../components/compliance/ComplianceControlPoliciesSimpleList/ComplianceControlPoliciesSimpleList';\nimport { ComplianceControlTasksSimpleList } from '../ComplianceControlTasksSimpleList/ComplianceControlTasksSimpleList';\nimport {\n ComplianceEditControlFormModel,\n minimumAssignedFrameworks,\n} from '../../../../../components/compliance/Types/complianceTypes';\nimport './ComplianceEditControlForm.scss';\nimport { SelectionOption } from '../../../../../types/selectionOption';\nimport {\n setControlFormModel,\n setControlFormModelValid,\n} from '../../../../../store/compliance/complianceSlice';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { EditControlMode } from '../../../../../store/compliance/complianceState';\nimport { selectIsNormalModeControlDrawer } from '../../../../../selectors/compliance/selectIsNormalModeEditControlDrawer';\nimport { useOwnerOptions } from '../../../../../hooks/useOwnerOptions';\nimport classNames from 'classnames';\nimport { AdoptechReactSelect2 } from '../../../../../components/AdoptechReacSelect2/AdoptechReactSelect2';\nimport { AdoptechTextArea2 } from '../../../../../components/AdoptechTextArea2/AdoptechTextArea2';\nimport { AdoptechTextInput2 } from '../../../../../components/AdoptechTextInput2/AdoptechTextInput2';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { ControlStatusText, getControlStatusText } from './complianceStatus';\nimport { EditControlReview } from '../EditControlReview/EditControlReview';\nimport { EditControlTreatmentPlan } from '../EditControlTreatmentPlan/EditControlTreatmentPlan';\nimport { ComplianceControlFrameworksSimpleList } from '../ComplianceControlFrameworksSimpleList/ComplianceControlFrameworksSimpleList';\nimport { AccessObject } from '../../../../../types/accessObject';\nimport { hasFeature } from '../../../../../functions/access';\nimport { LoadingSpinner } from '../../../../../components/LoadingSpinner/LoadingSpinner';\nimport { ComplianceControlRisksList } from '../ComplianceControlRisksList/ComplianceControlRisksList';\n\nexport const SecurityEditorOwnerWarning =\n \"Security editor can't change the owner.\";\ninterface EditControlFormProps {\n control: ComplianceEditControlFormModel;\n}\nexport const ComplianceEditControlForm: React.FC = ({\n control,\n}) => {\n const baseCss = 'complianceEditControlForm';\n const descriptionRowNumber = 2;\n const dispatch = useDispatch();\n const { users, ownerOptions } = useOwnerOptions({\n onlyAdminable: true,\n });\n\n const {\n editControlFormModel,\n isFetchingControlDetails,\n isPostingReviewHistoryItem,\n editControlMode,\n } = useSelector((state: ApplicationState) => state.compliance);\n\n const [description, setDescription] = useState(control?.description);\n const [reasonForExclusion, setReasonForExclusion] = useState(\n control?.reasonForExclusion\n );\n\n const isValid = () => {\n if (!editControlFormModel) return false;\n\n if (nameError || frameworksRelationsError) return false;\n\n return true;\n };\n\n const inputFieldClass = control.create\n ? `${baseCss}--nameInput`\n : `${baseCss}--status`;\n\n const reasonForExclusionRef = useRef();\n\n useEffect(() => {\n dispatch(setControlFormModelValid(isValid()));\n }, [control, editControlFormModel]);\n\n useEffect(() => {\n isSettingNotApplicable &&\n reasonForExclusionRef.current &&\n reasonForExclusionRef.current.focus();\n }, [editControlMode]);\n\n const isNormalMode = useSelector(selectIsNormalModeControlDrawer);\n\n // We have 3 applicable related states: Applicable, Setting not applicable ( temporary, not saved to the BE yet ), Not applicable\n const isSettingNotApplicable =\n editControlMode === EditControlMode.MarkNotApplicable;\n // If controls is not applicable ( already saved to the BE )\n const isNotApplicable = !control.applicable && !isSettingNotApplicable;\n\n const isDescriptionDisabled = !isNormalMode;\n\n const statusText = useMemo(\n () => getControlStatusText(control?.tasks, control?.applicable),\n [control]\n );\n\n const frameworksRelationsError =\n editControlFormModel?.frameworksRelations?.length <\n minimumAssignedFrameworks;\n\n const nameError =\n editControlFormModel.create && !editControlFormModel.name.trim();\n\n const showControlDescriptionTextArea =\n !control.create && editControlFormModel.custom;\n\n const create = !control?.id;\n const canManageOwner = create\n ? true\n : hasFeature(AccessObject.manage_ownership, control?.access);\n const ownerTitle =\n !isNormalMode || create || canManageOwner\n ? null\n : SecurityEditorOwnerWarning;\n return (\n
\n
\n {control.create && (\n \n
\n <>\n {\n dispatch(\n setControlFormModel({\n ...editControlFormModel,\n name: e.currentTarget.value,\n formTouched: true,\n })\n );\n }}\n placeholder=\"Enter control name here\"\n type=\"text\"\n value={editControlFormModel.name}\n />\n \n
\n
\n )}\n {isFetchingControlDetails ? (\n
\n \n
\n ) : (\n
\n
\n {\n dispatch(\n setControlFormModel({\n ...editControlFormModel,\n assignee: users.find(user => user.id === e.value),\n formTouched: true,\n })\n );\n }}\n value={ownerOptions.find(\n option => option.value == editControlFormModel?.assignee?.id\n )}\n placeholder=\"Select assignee\"\n label=\"Owner\"\n showUserAvatar\n />\n
\n
\n )}\n {(showControlDescriptionTextArea || control.description) && (\n
\n
\n
Control description
\n
\n
\n {showControlDescriptionTextArea ? (\n {\n const tempDesc = e.currentTarget.value;\n dispatch(\n setControlFormModel({\n ...editControlFormModel,\n description: tempDesc,\n formTouched: true,\n })\n );\n setDescription(tempDesc);\n }}\n value={description}\n placeholder=\"Add description here\"\n id=\"description\"\n rows={descriptionRowNumber}\n />\n ) : (\n control.description\n )}\n
\n
\n )}\n\n {isSettingNotApplicable || !editControlFormModel.applicable ? (\n <>\n \n
\n
\n {\n dispatch(\n setControlFormModel({\n ...editControlFormModel,\n applicable: false,\n reasonForExclusion: e.currentTarget.value,\n formTouched: true,\n })\n );\n setReasonForExclusion(e.currentTarget.value);\n }}\n value={reasonForExclusion}\n placeholder=\"Provide a reason for why the control was marked as N/A.\"\n id=\"reasonForExclusion\"\n ref={reasonForExclusionRef}\n disabled={\n !isSettingNotApplicable &&\n !editControlFormModel.applicable\n }\n />\n
\n
\n
\n \n ) : (\n <>\n
\n
\n \n
\n
\n {!control.create && (\n
\n
\n \n
\n
\n )}\n\n
\n
\n
\n
Control status
\n {!isFetchingControlDetails && (\n \n \n
{statusText}
\n
\n )}\n
\n \n
\n \n\n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n\n \n
\n \n
\n \n \n )}\n \n \n );\n};\n\nexport default ComplianceEditControlForm;\n","import { controlIsCompliant } from '../../../../../store/compliance/complianceSlice';\nimport {\n ControlExtended,\n ControlModel,\n TaskModel,\n TaskModelStatusEnum,\n} from '../../../../../swagger';\n\nexport const completedValue = 100;\n\nexport const setTaskStatus = (\n status: TaskModelStatusEnum,\n list: TaskModel[],\n taskId: string\n) => {\n const tk = [...list];\n const index = tk.findIndex(t => t.id === taskId);\n tk.splice(index, 1, {\n ...tk[index],\n status,\n });\n return tk;\n};\n\n// used in control edit drawer: header and form: not applicable/compliant/not compliant\n// for ticks icons: use instead controlIconClass logic: greenTick, redTick, greyTick\n\nexport const getControlStatusText = (\n tasks: TaskModel[],\n applicable: boolean\n) => {\n if (!applicable) return ControlStatusText.NotApplicable;\n return controlIsCompliant(tasks)\n ? ControlStatusText.Compliant\n : ControlStatusText.NotCompliant;\n};\n\nexport enum ControlStatusText {\n NotApplicable = 'Not applicable',\n Compliant = 'Compliant',\n NotCompliant = 'Not compliant',\n}\n","import React, { useEffect, useState } from 'react';\nimport AdoptechModal from '../../../../../components/AdoptechModal/AdoptechModal';\nimport './EditDocumentModal.scss';\nimport { AdoptechTextInput } from '../../../../../components/AdoptechTextInput/AdoptechTextInput';\nimport { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchAssignableComplianceTasks } from '../../../../../store/compliance/complianceThunks';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { AdoptechCheckbox } from '../../../../../components/AdoptechCheckbox/AdoptechCheckbox';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../../components/AdoptechButton/AdoptechButton';\nimport { setControlFormModel } from '../../../../../store/compliance/complianceSlice';\nimport { Modal } from 'react-bootstrap';\nimport Fuse from 'fuse.js';\nimport { TaskModel } from '../../../../../swagger/models/TaskModel';\nimport { AssertionModel } from '../../../../../swagger';\nimport { PolicyOrVendorPolicy } from '../../../../../components/compliance/ComplianceControlPoliciesSimpleList/ControlEditPolicyModal/ControlEditPolicyModal';\n\ninterface EditDocumentModalProps {\n show: boolean;\n onHide: () => void;\n}\n\nexport const useDocumentsSelectTree = (\n documents: TaskModel[] | AssertionModel[] | PolicyOrVendorPolicy[],\n baseCss: string\n) => {\n const [selectedIds, setSelectedIds] = useState([]);\n const isSelectAllChecked =\n selectedIds.length > 0 && selectedIds.length === documents.length;\n type document = (typeof documents)[0];\n const isChecked = (doc: document) => selectedIds.includes(doc.id);\n const childClass = (name: string) => `${baseCss}--${name}`;\n\n const handleSelectAll = (e: { currentTarget: { checked: any } }) => {\n const checked = e.currentTarget.checked;\n\n if (checked) {\n setSelectedIds(documents.map(doc => doc.id));\n } else {\n setSelectedIds([]);\n }\n };\n\n const handleSelectAllButton = () => {\n handleSelectAll({ currentTarget: { checked: true } });\n };\n\n const handleSelect = (e: { currentTarget: { checked: any; id: string } }) => {\n const id = e.currentTarget.id;\n const checked = e.currentTarget.checked;\n if (checked) {\n setSelectedIds(prevState => {\n return [...prevState, id];\n });\n } else {\n setSelectedIds(prevState => {\n return prevState.filter(docId => docId !== id);\n });\n }\n };\n const treeDiv = (\n
\n \n {documents.map(document => {\n return (\n \n );\n })}\n
\n );\n\n return {\n selectedIds,\n handleSelectAllButton,\n childClass,\n treeDiv,\n };\n};\n\nexport const EditDocumentModal: React.FC = props => {\n const baseCss = 'editDocumentModal';\n const [search, setSearch] = useState('');\n const vendorId = useSelector(\n (state: ApplicationState) => state.vendors.currentVendor.id\n );\n const editControlFormModel = useSelector(\n (state: ApplicationState) => state.compliance.editControlFormModel\n );\n\n const assignableTasks = useSelector(\n (state: ApplicationState) => state.compliance.assignableTasks\n ).filter(\n task =>\n !editControlFormModel.tasks.map(formTask => formTask.id).includes(task.id)\n );\n\n const options = {\n ignoreLocation: true,\n includeScore: true,\n keys: ['name'],\n threshold: 0,\n };\n const fuseDocuments = new Fuse(assignableTasks, options);\n const documents = search\n ? fuseDocuments.search(search).map(x => x.item)\n : assignableTasks;\n\n const placeholder = 'Search for control checks';\n const title = 'Add control check';\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(fetchAssignableComplianceTasks(vendorId));\n }, []);\n\n const { selectedIds, handleSelectAllButton, childClass, treeDiv } =\n useDocumentsSelectTree(documents, baseCss);\n const handleConfirm = () => {\n dispatch(\n setControlFormModel({\n ...editControlFormModel,\n tasks: [\n ...editControlFormModel.tasks,\n ...assignableTasks.filter(task => selectedIds.includes(task.id)),\n ],\n formTouched: true,\n })\n );\n props.onHide();\n };\n\n return (\n \n {title}\n \n <>\n
\n setSearch(e.target.value)}\n type=\"text\"\n placeholder={placeholder}\n icon={faSearch}\n additionalClass=\"adoptechTextInput-search\"\n />\n
\n {treeDiv}\n \n
\n \n \n Select All\n \n \n Confirm\n \n \n \n );\n};\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { push } from 'connected-react-router';\nimport './PageTabs.scss';\nimport classNames from 'classnames';\nimport {\n dataRoomEvidenceRoute,\n dataRoomRoute,\n reportsRoute,\n} from '../../../../components/Routes/Routes';\nimport { capitalize } from '../../../../functions/capitalize';\nimport { useCanFeature } from '../../../../functions/access';\nimport { AccessObject } from '../../../../types/accessObject';\n\ninterface Props {\n currentTab: 'repository' | 'evidence' | 'reports';\n}\n\nexport const DataRoomTabs: React.FC = ({ currentTab }) => {\n const dispatch = useDispatch();\n\n const goToRepository = () => dispatch(push(dataRoomRoute));\n const goToEvidence = () => dispatch(push(dataRoomEvidenceRoute));\n const goToReports = () => dispatch(push(reportsRoute));\n const canExportEvidences = useCanFeature(\n AccessObject.dataroom_control_evidence_manage\n );\n return (\n <>\n
\n \n Repository\n
\n {canExportEvidences && (\n \n Evidence\n \n )}\n \n Reports\n \n \n
\n \n );\n};\n","import React from 'react';\nimport { AssertionResultExtended } from '../../../swagger';\nimport './TestResult.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCloudDownload } from '@fortawesome/pro-light-svg-icons/faCloudDownload';\nimport { Interweave } from 'interweave';\n\ninterface Props {\n result: AssertionResultExtended;\n}\n\nconst baseCss = 'testResult';\n\nexport const testResultEvidences = (result: AssertionResultExtended) => {\n return result.evidences.map(evidence => (\n
\n {evidence.filename}\n  \n \n \n \n
\n ));\n};\n\nexport const TestResult: React.FC = ({ result }) => {\n if (result.evidences.length > 0) {\n return (\n <>\n Comment\n
\n \n
\n\n
\n Evidence\n {testResultEvidences(result)}\n
\n \n );\n }\n return (\n
\n JSON Response\n
{result.payload}
\n
\n );\n};\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport {\n AssertionCategoryModel,\n AssertionRunExtended,\n AssertionRunList,\n} from '../../../../swagger';\nimport { TestsState } from './testsState';\n\nconst initialState: TestsState = {\n assertionRunsStatus: 'idle',\n assertionRuns: {} as AssertionRunList,\n assertionCategoriesStatus: 'idle',\n assertionCategories: [] as AssertionCategoryModel[],\n} as TestsState;\n\nconst testsSlice = createSlice({\n initialState,\n name: 'testsSlice',\n reducers: {\n fetchAssertionRunsRequest: state => {\n state.assertionRunsStatus = 'loading';\n },\n fetchAssertionRunsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.assertionRunsStatus = 'succeeded';\n state.assertionRuns = action.payload;\n },\n fetchAssertionRunsFail: state => {\n state.assertionRunsStatus = 'failed';\n },\n fetchAssertionCategoriesRequest: state => {\n state.assertionCategoriesStatus = 'loading';\n },\n fetchAssertionCategoriesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.assertionCategoriesStatus = 'succeeded';\n state.assertionCategories = action.payload;\n },\n fetchAssertionCategoriesFail: state => {\n state.assertionCategoriesStatus = 'failed';\n },\n fetchAssertionRunExtendedRequest: state => {\n state.assertionRunExtendedStatus = 'loading';\n },\n fetchAssertionRunExtendedSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.assertionRunExtendedStatus = 'succeeded';\n state.assertionRunExtended = action.payload;\n },\n fetchAssertionRunExtendedFail: state => {\n state.assertionRunExtendedStatus = 'failed';\n },\n },\n});\n\nexport const {\n fetchAssertionRunsRequest,\n fetchAssertionRunsSuccess,\n fetchAssertionRunsFail,\n fetchAssertionCategoriesRequest,\n fetchAssertionCategoriesSuccess,\n fetchAssertionCategoriesFail,\n fetchAssertionRunExtendedRequest,\n fetchAssertionRunExtendedSuccess,\n fetchAssertionRunExtendedFail,\n} = testsSlice.actions;\n\nexport default testsSlice.reducer;\n","import { handleThunkError } from '../../../../store/helpers/thunkHelpers';\n\nimport { VoidThunk } from '../../../../types/voidThunk';\nimport { api } from '../../../../api/api';\nimport {\n AssertionRunList,\n AssertionRunModel,\n VendorsVendorIdAssertionRunsGetRequest,\n} from '../../../../swagger';\nimport {\n fetchAssertionRunsFail,\n fetchAssertionRunsRequest,\n fetchAssertionRunsSuccess,\n fetchAssertionCategoriesFail,\n fetchAssertionCategoriesRequest,\n fetchAssertionCategoriesSuccess,\n fetchAssertionRunExtendedRequest,\n fetchAssertionRunExtendedSuccess,\n} from './testsSlice';\n\nexport const fetchAssertionRuns =\n (\n assertionCategoryIdentifier: string,\n assertionName: string,\n assertionStatus: string,\n showManual: boolean,\n page: string\n ): VoidThunk =>\n async (dispatch, getState) => {\n const vendorId = getState().vendors.currentVendor?.id;\n try {\n dispatch(fetchAssertionRunsRequest);\n const params: VendorsVendorIdAssertionRunsGetRequest = {\n assertionName,\n page,\n showManual,\n vendorId,\n };\n if (assertionCategoryIdentifier)\n params['assertionCategoryIdentifier'] = assertionCategoryIdentifier;\n if (assertionStatus) params['assertionStatus'] = assertionStatus;\n const response = await api().vendorsVendorIdAssertionRunsGet(params);\n dispatch(fetchAssertionRunsSuccess(response as AssertionRunList));\n } catch (error) {\n dispatch(fetchAssertionRunsFail);\n await handleThunkError(\n 'An error occurred while fetching events log. Please try again or contact support.',\n { dispatch, error }\n );\n }\n };\n\nexport const fetchAssertionCategories =\n (): VoidThunk => async (dispatch, getState) => {\n try {\n dispatch(fetchAssertionCategoriesRequest);\n const response = await api().assertionCategoriesGet();\n dispatch(fetchAssertionCategoriesSuccess(response));\n } catch (error) {\n dispatch(fetchAssertionCategoriesFail);\n await handleThunkError(\n 'An error occurred while fetching event categories. Please try again or contact support.',\n { dispatch, error }\n );\n }\n };\n\nexport const fetchAssertionRunExtended =\n (assertionRunId: AssertionRunModel['id']): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchAssertionRunExtendedRequest);\n const response = await api().assertionRunsAssertionRunIdGet({\n assertionRunId,\n });\n dispatch(fetchAssertionRunExtendedSuccess(response));\n } catch (error) {\n dispatch(fetchAssertionCategoriesFail);\n await handleThunkError(\n 'An error occurred while fetching event details. Please try again or contact support.',\n { dispatch, error }\n );\n }\n };\n","import { faFileArrowUp } from '@fortawesome/pro-light-svg-icons/faFileArrowUp';\nimport { push } from 'connected-react-router';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectCurrentVendor } from '../../../selectors/selectCurrentVendor';\nimport { uploadCompletedAgreement } from '../../../store/agreements/agreementsThunks';\nimport { hideDocumentUploadModal } from '../../../store/vendors/vendorsSlice';\nimport {\n fetchVendorDocuments,\n uploadVendorDocument,\n} from '../../../store/vendors/vendorsThunks';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../../../components/AdoptechModal/AdoptechModal';\nimport { AdoptechReactSelect } from '../../../components/AdoptechReactSelect/AdoptechReactSelect';\nimport { AdoptechTextArea } from '../../../components/AdoptechTextArea/AdoptechTextArea';\nimport { AdoptechTextInput } from '../../../components/AdoptechTextInput/AdoptechTextInput';\nimport { DropZone } from '../../../components/DropZone/DropZone';\nimport './UploadDocumentModal.scss';\nimport { SelectionOption } from '../../../types/selectionOption';\nimport { fetchPolicyTemplateCategories } from '../../../store/policies/policiesThunks';\nimport { allDocumentsPageRoute } from '../../../components/Routes/Routes';\n\nexport const UploadDocumentModal: React.FC = () => {\n const isAgreementMode = location.pathname.includes('agreements');\n const isDocumentMode = !isAgreementMode;\n\n const DocumentTypeEnum = {\n Policy: 'policy',\n Other: 'other',\n };\n\n const [description, setDescription] = useState(null);\n const [documentName, setDocumentName] = useState(null);\n const [documentType, setDocumentType] = useState(null);\n const [documentCategoryId, setDocumentCategoryId] = useState(null);\n const [file, setFile] = useState();\n const [nameError, setNameError] = useState(false);\n const documentNameRef = useRef();\n\n const currentVendor = useSelector(selectCurrentVendor);\n const {\n isDocumentUploadModalShowing,\n isUploadingVendorDocument: isUploadingDocument,\n } = useSelector((state: ApplicationState) => state.vendors.documentState);\n const policyCategories = useSelector(\n (state: ApplicationState) => state.policies.policyCategories\n );\n\n const policyCategoriesOptions: SelectionOption[] = policyCategories.map(\n category => {\n return {\n value: category.id,\n label: category.name,\n };\n }\n );\n const isUploadingAgreement = useSelector(\n (state: ApplicationState) => state.agreements.isUploadingAgreement\n );\n\n useEffect(() => {\n setDescription(null);\n setDocumentName(null);\n setDocumentCategoryId(null);\n setDocumentType(null);\n setFile(null);\n\n if (documentNameRef.current) {\n documentNameRef.current.focus();\n }\n\n isDocumentUploadModalShowing && dispatch(fetchPolicyTemplateCategories());\n }, [isDocumentUploadModalShowing]);\n\n const dispatch = useDispatch();\n\n const handleAgreementUpload = async () => {\n const payload = {\n id: currentVendor?.id,\n agreementName: documentName,\n agreementDescription: description,\n agreementDocument: file,\n };\n dispatch(uploadCompletedAgreement(payload));\n };\n\n const handleUpload = async () => {\n if (isAgreementMode) {\n handleAgreementUpload();\n return;\n }\n\n const payload = {\n vendorDocumentDocument: file,\n vendorDocumentName: documentName,\n vendorDocumentDocumentType: documentType,\n vendorDocumentDescription: description,\n vendorDocumentFileSizeInBytes: file.size,\n vendorDocumentPolicyCategoryId: documentCategoryId,\n };\n try {\n await dispatch(uploadVendorDocument(payload));\n dispatch(\n fetchVendorDocuments({\n vendorId: currentVendor?.id,\n queryShowHistory: true,\n })\n );\n dispatch(hideDocumentUploadModal());\n dispatch(push(allDocumentsPageRoute));\n } catch (error) {\n if (error?.includes('name')) {\n setNameError(true);\n }\n }\n };\n\n const title = isAgreementMode\n ? 'Upload your own agreement'\n : 'Add a new document';\n\n return (\n dispatch(hideDocumentUploadModal())}\n show={isDocumentUploadModalShowing}\n className=\"uploadDocumentModal\"\n >\n {title}\n \n {isDocumentMode && (\n <>\n
\n Upload your own document here.\n
\n
\n Please note that we currently only accept PDF documents.\n
\n \n )}\n {isAgreementMode && (\n
Agreement name*
\n )}\n
\n
\n {isDocumentMode && (\n
Document name*
\n )}\n setDocumentName(e.currentTarget.value)}\n ref={documentNameRef}\n type=\"text\"\n value={documentName}\n hasError={nameError}\n />\n
\n {isDocumentMode && (\n setDocumentType(value.value)}\n options={Object.entries(DocumentTypeEnum).map(\n ([label, value]) => ({ label, value })\n )}\n label=\"Document type*\"\n />\n )}\n\n {isAgreementMode && (\n {}}\n value={{ label: 'Agreement', value: 'agreement' }}\n options={[{ label: 'Agreement', value: 'agreement' }]}\n isDisabled\n label=\"Document type*\"\n />\n )}\n
\n\n {documentType === 'policy' && (\n
\n setDocumentCategoryId(option.value)}\n options={policyCategoriesOptions}\n label=\"Policy Category*\"\n value={policyCategoriesOptions.find(\n option => option.value === documentCategoryId\n )}\n />\n
\n )}\n\n
Description
\n setDescription(e.currentTarget.value)}\n value={description}\n />\n
\n
\n click to select.'\n }\n onChange={setFile}\n accept=\".pdf\"\n icon={faFileArrowUp}\n />\n
\n
\n
*Required fields
\n
\n\n \n dispatch(hideDocumentUploadModal())}>\n Cancel\n \n {isAgreementMode && (\n \n Upload\n \n )}\n {isDocumentMode && (\n \n Upload\n \n )}\n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n closeExistingPolicyWarningModal,\n closeManageRejectionModal,\n} from '../../store/policies/policiesSlice';\nimport { createPolicy } from '../../store/policies/policiesThunks';\nimport {\n AgreementExtended,\n VendorPolicy,\n VendorPolicyVersionBumpEnum,\n} from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { AdoptechRadioButton } from '../AdoptechRadioButton/AdoptechRadioButton';\nimport { AdoptechTextArea } from '../AdoptechTextArea/AdoptechTextArea';\nimport './ExistingPolicyWarningModal.scss';\nimport { createNewVersionOfAgreement } from '../../store/agreements/agreementsThunks';\n\nexport interface ExistingPolicyWarningModal {\n onSuccess?: (response: VendorPolicy | AgreementExtended) => void;\n}\n\nexport enum ExistingPolicyWarningModalMode {\n Add,\n Update,\n Agreement,\n}\n// TODO: Looks we don't use change version agreement logic and agreement logic can be removed in the future\nconst ExistingPolicyWarningModal = ({\n onSuccess = () => {},\n}: ExistingPolicyWarningModal) => {\n const dispatch = useDispatch();\n const isExistingPolicyWarningModalShowing = useSelector(\n (state: ApplicationState) =>\n state.policies.isExistingPolicyWarningModalShowing\n );\n const mode = useSelector(\n (state: ApplicationState) => state.policies.existingPolicyWarningModalMode\n );\n const getModalTexts = () => {\n switch (mode) {\n case ExistingPolicyWarningModalMode.Add:\n return {\n title: 'Existing policy',\n subtitle:\n 'A Live version of the this policy exists. To create a new version, please select whether this will be a minor or major version, enter a reason for creating a new version and click ‘continue’.',\n };\n case ExistingPolicyWarningModalMode.Agreement:\n return {\n title: 'Update agreement',\n subtitle:\n 'By clicking continue you will be creating a new version of this agreement. Please select if this is a minor or major version.',\n };\n case ExistingPolicyWarningModalMode.Update:\n return {\n title: 'Update policy',\n subtitle:\n 'By clicking continue you will be creating a new version of this policy. Please select if this is a minor or major version.',\n };\n }\n };\n const selectedPolicyId = useSelector(\n (state: ApplicationState) => state.policies.selectedPolicyId\n );\n const isCreatingPolicy = useSelector(\n (state: ApplicationState) => state.policies.isCreatingPolicy\n );\n const isCreatingNewVersionOfAgreement = useSelector(\n (state: ApplicationState) =>\n state.agreements.isCreatingNewVersionOfAgreement\n );\n\n const [selectedVersion, setSelectedVersion] = useState(\n VendorPolicyVersionBumpEnum.Minor\n );\n const [message, setMessage] = useState('');\n\n useEffect(() => {\n setSelectedVersion(VendorPolicyVersionBumpEnum.Minor);\n }, [isExistingPolicyWarningModalShowing]);\n\n const handleCreate = () => {\n dispatch(closeManageRejectionModal());\n if (mode === ExistingPolicyWarningModalMode.Agreement) {\n dispatch(\n createNewVersionOfAgreement({\n id: selectedPolicyId,\n versionBump: selectedVersion,\n changeReason: message,\n onSuccess,\n })\n );\n } else {\n dispatch(\n createPolicy({\n policyId: selectedPolicyId,\n versionBump: selectedVersion,\n changeReason: message,\n onSuccess,\n })\n );\n }\n };\n\n const handleMessageChange = (\n event: React.ChangeEvent\n ) => {\n const { value } = event.target;\n setMessage(value);\n };\n\n return (\n dispatch(closeExistingPolicyWarningModal())}\n className=\"existingPolicyWarningModal\"\n >\n {getModalTexts().title}\n \n
\n {getModalTexts().subtitle}\n
\n
\n \n
\n (e.g. 1.1, 1.2, 1.3)\n
\n\n \n
\n (e.g. 1.0, 2.0, 3.0)\n
\n
\n\n \n
\n \n dispatch(closeExistingPolicyWarningModal())}\n >\n Cancel\n \n \n Continue\n \n \n \n );\n};\n\nexport default ExistingPolicyWarningModal;\n","import { createSelector } from '@reduxjs/toolkit';\nimport { getVendorPolicies } from '../functions/getVendorPolicies';\nimport { vendorPolicySort } from '../functions/vendorPolicySort';\nimport { VendorPolicyDetailsStatusEnum } from '../swagger/models';\nimport { Grid } from '../types/grid';\nimport { selectSortSettings } from './selectSortSettings';\n\nexport const selectInProgressPolicies = createSelector(\n getVendorPolicies,\n selectSortSettings(Grid.InProgressPolicies),\n (vendorPolicies, sortSetting) => {\n const clonedVendorPolicies = [...vendorPolicies];\n return clonedVendorPolicies\n .filter(p => p.status === VendorPolicyDetailsStatusEnum.InProgress)\n .sort((a, b) => vendorPolicySort(a, b, sortSetting.columnSort));\n }\n);\n","import moment from 'moment';\nimport { VendorPolicyDetails } from '../swagger';\nimport { ColumnSort } from '../types/columnSort';\nimport { SortDirection } from '../types/sortDirection';\nimport { sort } from './sort';\n\nexport const vendorPolicySort = (\n a: VendorPolicyDetails,\n b: VendorPolicyDetails,\n columnSort: ColumnSort\n): number => {\n let direction = 1;\n if (columnSort.direction === SortDirection.Ascending) {\n direction = -1;\n }\n\n const typedColumn: keyof VendorPolicyDetails =\n columnSort.name as keyof VendorPolicyDetails;\n\n switch (typedColumn) {\n case 'updatedAt':\n return sort(moment(a.updatedAt), moment(b.updatedAt), direction);\n case 'vendorPolicyAnswers':\n case 'vendorPolicyClauses':\n return 0;\n default:\n return sort(a[typedColumn], b[typedColumn], direction);\n }\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { ApplicationState } from '../types/applicationState';\n\nconst getAllPolicies = (state: ApplicationState) => [\n ...state.policies.policies,\n ...state.policies.vendorPolicies,\n];\n\nexport const selectAllAvailableCategories = createSelector(\n getAllPolicies,\n allPolicies =>\n [...new Set(allPolicies.map(policy => policy.categoryName))].sort()\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { genericSort } from '../functions/genericSort';\nimport { getPolicies } from '../functions/getPolicies';\nimport { Grid } from '../types/grid';\nimport { selectSortSettings } from './selectSortSettings';\n\nexport const selectAvailablePolicies = createSelector(\n getPolicies,\n selectSortSettings(Grid.AvailablePolicies),\n (policies, sortSettings) => {\n const clonedPolicies = [...policies];\n return clonedPolicies.sort((a, b) =>\n genericSort(a, b, sortSettings.columnSort)\n );\n }\n);\n","import { ApplicationState } from '../types/applicationState';\n\nexport const getPolicies = (state: ApplicationState) => {\n return state.policies.policies;\n};\n","import { ColumnSort } from '../types/columnSort';\nimport { SortDirection } from '../types/sortDirection';\nimport { sort } from './sort';\n\nexport const genericSort = (a: T, b: T, columnSort: ColumnSort): number => {\n let direction = 1;\n if (columnSort.direction === SortDirection.Ascending) {\n direction = -1;\n }\n\n const typedColumn: keyof T = columnSort.name as keyof T;\n\n switch (typedColumn) {\n default:\n return sort(a[typedColumn], b[typedColumn], direction);\n }\n};\n","import { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport classNames from 'classnames';\nimport React, { Dispatch, SetStateAction } from 'react';\nimport { AgreementTemplateCategoryModel } from '../../swagger';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport './DocumentLibraryHeader.scss';\n\ntype PolicyTemplateCategoryModel = { id: string; name: string };\ntype CategoryName =\n | AgreementTemplateCategoryModel['name']\n | PolicyTemplateCategoryModel['name'];\n\ninterface HeaderProps {\n search: string;\n setSearch: Dispatch>;\n categories: AgreementTemplateCategoryModel[] | PolicyTemplateCategoryModel[];\n categoryFilter: CategoryName;\n handleCategoryClick: (name?: CategoryName) => any;\n title: string;\n searchPlaceholder: string;\n}\n\nexport const DocumentLibraryHeader: React.FC = ({\n search,\n setSearch,\n categories,\n categoryFilter,\n handleCategoryClick,\n title,\n searchPlaceholder,\n}) => {\n const baseCss = 'documentLibraryHeader';\n\n return (\n
\n
{title}
\n
\n \n All\n
\n {categories.map((category: HeaderProps['categories'][0]) => (\n \n {category.name}\n
\n ))}\n \n
\n setSearch(event.currentTarget.value)}\n type=\"text\"\n placeholder={searchPlaceholder}\n icon={faSearch}\n additionalClass=\"adoptechTextInput-search\"\n />\n
\n \n );\n};\n","import { Interweave } from 'interweave';\nimport React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useSelector } from 'react-redux';\nimport { useQueryParams } from '../../hooks/useQueryParams';\nimport { AgreementTemplateModel } from '../../swagger/models/AgreementTemplateModel';\nimport { Policy } from '../../swagger/models/Policy';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport PartOfMyPlanBanner from '../PartOfMyPlanBanner/PartOfMyPlanBanner';\nimport './DocumentLibraryDescriptionModal.scss';\n\nconst DocumentLibraryDescriptionModal = ({\n selectedDocument,\n onCancel,\n onCreate,\n}: {\n selectedDocument: Policy | AgreementTemplateModel;\n onCancel: () => void;\n onCreate: () => void;\n}) => {\n const vendorProducts = useSelector(\n (state: ApplicationState) => state.vendors.vendorProducts\n );\n const queryParams = useQueryParams();\n\n if (!selectedDocument) {\n return null;\n }\n\n const currentVendorProducts = queryParams.get('agreementTemplateId')\n ? vendorProducts?.agreementTemplates\n : vendorProducts?.policies;\n\n const isPartOfPlan = currentVendorProducts?.some(\n template => template.name === selectedDocument.name\n );\n\n const baseCss = 'documentLibraryDescriptionModal';\n\n return (\n \n \n
\n {selectedDocument.name}\n {isPartOfPlan && }\n
\n
\n \n
Summary
\n
\n \n
\n
Description
\n
\n \n
\n
\n \n Cancel\n \n Create\n \n \n
\n );\n};\n\nexport default DocumentLibraryDescriptionModal;\n","import { push } from 'connected-react-router';\nimport { faCheckCircle } from '@fortawesome/free-solid-svg-icons/faCheckCircle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { AdoptechButton } from '../../../components/AdoptechButton/AdoptechButton';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { showExistingPolicyWarningModal } from '../../../store/policies/policiesSlice';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { ExistingPolicyWarningModalMode } from '../../../components/ExistingPolicyWarningModal/ExistingPolicyWarningModal';\nimport { selectInProgressPolicies } from '../../../selectors/selectInProgressPolicies';\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\nimport { Policy } from '../../../swagger';\nimport { showSubscriptionRequiredModal } from '../../../store/global/globalSlice';\n\nconst PolicyItem = ({\n policy,\n subscriptionRequired,\n}: {\n policy: Policy;\n subscriptionRequired: boolean;\n}) => {\n const dispatch = useDispatch();\n\n const vendorProducts = useSelector(\n (state: ApplicationState) => state.vendors.vendorProducts\n );\n\n const handlePolicyClick = (p: Policy) => {\n if (subscriptionRequired) {\n dispatch(showSubscriptionRequiredModal());\n return;\n }\n if (p.vendorPolicyExists) {\n dispatch(\n showExistingPolicyWarningModal({\n policyId: p.id,\n existingPolicyWarningModalMode: ExistingPolicyWarningModalMode.Add,\n })\n );\n return;\n }\n dispatch(push(`${location.pathname}?policyCode=${p.code}`));\n };\n\n const isPolicyPartOfPlan = (subject: Policy) =>\n vendorProducts?.policies.some(\n p => p.policyId === subject.id && p.available\n );\n\n const isCreatingPolicy = useSelector(\n (state: ApplicationState) => state.policies.isCreatingPolicy\n );\n\n const inProgressVendorPolicies = useSelector(selectInProgressPolicies);\n const isPolicyInProgress = (subject: Policy) =>\n inProgressVendorPolicies.some(p => p.policyId === subject.id);\n\n const card = (draft = false) => (\n !draft && handlePolicyClick(policy)}\n >\n {isPolicyPartOfPlan(policy) && !subscriptionRequired && (\n \n )}\n
\n {policy.categoryName}\n
\n
{policy.name}
\n {!draft && (\n
\n \n {policy.vendorPolicyExists ? 'Update' : 'Select'}\n \n
\n )}\n \n );\n\n if (!isPolicyInProgress(policy)) return card();\n\n return (\n \n This policy is currently in draft status\n \n }\n >\n
{card(true)}
\n \n );\n};\n\nexport default PolicyItem;\n","import { push } from 'connected-react-router';\nimport Fuse from 'fuse.js';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useQueryParams } from '../../../hooks/useQueryParams';\nimport { selectAllAvailableCategories } from '../../../selectors/selectAllAvailableCategories';\nimport { selectAvailablePolicies } from '../../../selectors/selectAvailablePolicies';\nimport {\n hideDocumentLibraryModal,\n showExistingPolicyWarningModal,\n} from '../../../store/policies/policiesSlice';\nimport {\n createPolicy,\n fetchPoliciesForVendor,\n fetchVendorPolicies,\n fetchVendorPoliciesDetails,\n} from '../../../store/policies/policiesThunks';\nimport { Policy, VendorPolicy } from '../../../swagger';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { AdoptechButton } from '../../../components/AdoptechButton/AdoptechButton';\nimport { ExistingPolicyWarningModalMode } from '../../../components/ExistingPolicyWarningModal/ExistingPolicyWarningModal';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport PartOfMyPlanBanner from '../../../components/PartOfMyPlanBanner/PartOfMyPlanBanner';\nimport './AddNewPolicy.scss';\nimport { canIndex } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport { DocumentLibraryHeader } from '../../../components/DocumentLibraryHeader/DocumentLibraryHeader';\nimport DocumentLibraryDescriptionModal from '../../../components/DocumentLibraryDescriptionModal/DocumentLibraryDescriptionModal';\nimport PolicyItem from '../PolicyTiles/PolicyItem';\nimport { selectActiveSubscription } from '../../../selectors/selectActiveSubscription';\nimport { getVendorPolicies } from '../../../functions/getVendorPolicies';\nimport { policyPageItemRouteURL } from '../../../components/Routes/Routes';\n\nconst options = {\n ignoreLocation: true,\n includeScore: true,\n keys: ['description', 'name', 'summary'],\n threshold: 0,\n};\n\nconst AddNewPolicy = () => {\n const dispatch = useDispatch();\n const [search, setSearch] = useState('');\n const [selectedPolicy, setSelectedPolicy] = useState();\n const [categoryFilter, setCategoryFilter] = useState();\n const canIndexVendorPolicies = canIndex(AccessObject.vendor_policies);\n const availablePolicies = useSelector(selectAvailablePolicies);\n const allCategories = useSelector(selectAllAvailableCategories);\n const isCreatingPolicy = useSelector(\n (state: ApplicationState) => state.policies.isCreatingPolicy\n );\n const vendorProducts = useSelector(\n (state: ApplicationState) => state.vendors.vendorProducts\n );\n\n const isFetchingVendorPolicies = useSelector(\n (state: ApplicationState) => state.policies.isFetchingVendorPolicies\n );\n const queryParams = useQueryParams();\n const policyCode = queryParams.get('policyCode');\n const policyCategory = queryParams.get('policyTemplateCategoryName');\n\n const location = useSelector(\n (state: ApplicationState) => state.router.location\n );\n\n useEffect(() => {\n dispatch(fetchVendorPoliciesDetails());\n canIndexVendorPolicies && dispatch(fetchPoliciesForVendor());\n }, []);\n\n useEffect(() => {\n if (\n policyCode &&\n availablePolicies?.length > 0 &&\n !isFetchingVendorPolicies\n ) {\n const policy = availablePolicies.find(p => p.code === policyCode);\n if (policy) {\n setSelectedPolicy(policy);\n } else {\n dispatch(push(location.pathname));\n }\n }\n }, [policyCode, isFetchingVendorPolicies]);\n\n const handleOnPolicyCreated = (response: VendorPolicy) => {\n dispatch(fetchPoliciesForVendor());\n dispatch(push(policyPageItemRouteURL(response.id)));\n };\n\n const handleCreate = () => {\n if (!selectedPolicy) {\n return;\n }\n if (selectedPolicy.vendorPolicyExists) {\n dispatch(\n showExistingPolicyWarningModal({\n policyId: selectedPolicy.id,\n existingPolicyWarningModalMode: ExistingPolicyWarningModalMode.Add,\n })\n );\n } else {\n dispatch(\n createPolicy({\n policyId: selectedPolicy.id,\n onSuccess: handleOnPolicyCreated,\n })\n );\n setSelectedPolicy(null);\n dispatch(push(location.pathname));\n }\n };\n\n let policies = [...availablePolicies];\n\n if (search) {\n const fusePolicies = new Fuse(policies, options);\n policies = fusePolicies.search(search).map(x => x.item);\n }\n\n const amongAllPolicies = [...policies];\n\n if (categoryFilter) {\n policies = policies.filter(\n policy => policy.categoryName === categoryFilter\n );\n }\n\n const resultIds = policies.map(p => p.id);\n\n const extraResults = amongAllPolicies.filter(p => !resultIds.includes(p.id));\n\n policies.sort((a, b) => {\n if (a.name > b.name) return 1;\n if (a.name < b.name) return -1;\n return 0;\n });\n\n const handleCategoryClick = (categoryName?: string) => () => {\n setCategoryFilter(categoryName);\n };\n\n const onFreePlan = !useSelector(selectActiveSubscription);\n const policiesCount = useSelector(getVendorPolicies).filter(\n p => p.owner\n ).length;\n const freePoliciesLimit = 1;\n\n const subscriptionRequired = onFreePlan && policiesCount >= freePoliciesLimit;\n\n useEffect(() => {\n setCategoryFilter(policyCategory);\n }, [policyCategory]);\n\n return (\n
\n {\n return { id: name, name: name };\n })}\n categoryFilter={categoryFilter}\n handleCategoryClick={handleCategoryClick}\n title=\"Policies\"\n searchPlaceholder=\"Keywords, e.g. ISO 27001, Infosec, diversity\"\n />\n\n
\n
\n
\n {categoryFilter || 'All'}\n {isCreatingPolicy && }\n
\n {vendorProducts && }\n
\n
\n {policies.map(p => (\n \n ))}\n
\n {!!categoryFilter && !policies.length && (\n
Nothing found in {categoryFilter}
\n )}\n {!!search && !!extraResults.length && (\n <>\n
\n
All
\n
\n
\n {extraResults.map(p => (\n \n ))}\n
\n \n )}\n
\n\n
\n {\n dispatch(hideDocumentLibraryModal());\n }}\n >\n Cancel\n \n
\n {\n setSelectedPolicy(null);\n dispatch(push(location.pathname));\n }}\n onCreate={handleCreate}\n />\n
\n );\n};\n\nexport default AddNewPolicy;\n","import { faFileArrowUp } from '@fortawesome/pro-light-svg-icons/faFileArrowUp';\nimport { push } from 'connected-react-router';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { hideDocumentLibraryModal } from '../../../store/policies/policiesSlice';\nimport {\n fetchVendorPolicyDocuments,\n uploadVendorDocument,\n} from '../../../store/vendors/vendorsThunks';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { AdoptechReactSelect } from '../../../components/AdoptechReactSelect/AdoptechReactSelect';\nimport { AdoptechTextArea } from '../../../components/AdoptechTextArea/AdoptechTextArea';\nimport { AdoptechTextInput } from '../../../components/AdoptechTextInput/AdoptechTextInput';\nimport { DropZone } from '../../../components/DropZone/DropZone';\nimport './UploadOwnPolicy.scss';\nimport { fetchPolicyTemplateCategories } from '../../../store/policies/policiesThunks';\nimport { SelectionOption } from '../../../types/selectionOption';\nimport {\n draftPoliciesPageRoute,\n policiesPageRoute,\n} from '../../../components/Routes/Routes';\n\nconst DocumentTypeEnum: { [key: string]: string } = {\n Policy: 'policy',\n Other: 'other',\n};\n\nexport const UploadOwnPolicy: React.FC = () => {\n const [description, setDescription] = useState(null);\n const [documentName, setDocumentName] = useState(null);\n const [file, setFile] = useState();\n const [documentType, setDocumentType] = useState(null);\n const [documentCategoryId, setDocumentCategoryId] = useState(null);\n const documentNameRef = useRef();\n\n const { isDocumentLibraryModalShowing } = useSelector(\n (state: ApplicationState) => state.policies\n );\n\n const { isUploadingVendorDocument } = useSelector(\n (state: ApplicationState) => state.vendors.documentState\n );\n\n useEffect(() => {\n setDescription(null);\n setDocumentName(null);\n setDocumentCategoryId(null);\n setDocumentType(null);\n setFile(null);\n\n if (documentNameRef.current) {\n documentNameRef.current.focus();\n }\n }, [isDocumentLibraryModalShowing]);\n\n useEffect(() => {\n isDocumentLibraryModalShowing && dispatch(fetchPolicyTemplateCategories());\n }, [isDocumentLibraryModalShowing]);\n\n const dispatch = useDispatch();\n const policyCategories = useSelector(\n (state: ApplicationState) => state.policies.policyCategories\n );\n\n const policyCategoriesOptions: SelectionOption[] = policyCategories.map(\n category => {\n return {\n value: category.id,\n label: category.name,\n };\n }\n );\n\n const handleUpload = async () => {\n const payload = {\n vendorDocumentDocument: file,\n vendorDocumentName: documentName,\n vendorDocumentDocumentType: documentType,\n vendorDocumentDescription: description,\n vendorDocumentFileSizeInBytes: file.size,\n vendorDocumentPolicyCategoryId: documentCategoryId,\n };\n await dispatch(uploadVendorDocument(payload));\n dispatch(fetchVendorPolicyDocuments());\n dispatch(hideDocumentLibraryModal());\n documentType === 'policy' && dispatch(push(policiesPageRoute));\n };\n\n const documentTypeOptions = Object.keys(DocumentTypeEnum).map(key => ({\n label: key,\n value: DocumentTypeEnum[key],\n }));\n return (\n
\n
\n Upload your own policy here.\n
\n
\n Please note that we currently only accept PDF documents.\n
\n\n
\n
\n
Document name*
\n {\n setDocumentName(e.currentTarget.value);\n }}\n ref={documentNameRef}\n type=\"text\"\n value={documentName}\n />\n
\n {\n setDocumentCategoryId(null);\n setDocumentType(option.value);\n }}\n options={documentTypeOptions}\n label=\"Document type*\"\n value={documentTypeOptions.find(\n option => option.value === documentType\n )}\n />\n
\n {documentType === 'policy' && (\n
\n setDocumentCategoryId(option.value)}\n options={policyCategoriesOptions}\n label=\"Policy Category*\"\n value={policyCategoriesOptions.find(\n option => option.value === documentCategoryId\n )}\n />\n
\n )}\n
Description
\n {\n setDescription(e.currentTarget.value);\n }}\n value={description}\n />\n
\n
\n \n
\n
\n
*Required fields
\n
\n {\n dispatch(hideDocumentLibraryModal());\n dispatch(push(draftPoliciesPageRoute));\n }}\n >\n Cancel\n \n \n Upload\n \n
\n
\n );\n};\n","import classNames from 'classnames';\nimport React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getVendorProducts } from '../../store/vendors/vendorsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport AddNewPolicy from '../../features/policies/AddNewPolicy/AddNewPolicy';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { UploadOwnPolicy } from '../../features/policies/UploadOwnPolicy/UploadOwnPolicy';\nimport './DocumentLibraryModal.scss';\nimport { push } from 'connected-react-router';\nimport { hideDocumentLibraryModal } from '../../store/policies/policiesSlice';\nimport { draftPoliciesPageRoute } from '../Routes/Routes';\n\nconst Tab = {\n policy: 'policy',\n own: 'own',\n};\n\nconst DocumentLibraryModal = () => {\n const dispatch = useDispatch();\n const location = useSelector(\n (state: ApplicationState) => state.router.location\n );\n\n const [selectedTab, setSelectedTab] = useState(Tab.policy);\n const tabClasses = (tab: string) =>\n classNames('documentLibraryModal--tab', { selected: tab === selectedTab });\n\n useEffect(() => {\n if (location.pathname.includes('/policies')) {\n setSelectedTab(Tab.policy);\n }\n }, []);\n\n return (\n {\n if (location.pathname.includes('/policies')) {\n dispatch(push(draftPoliciesPageRoute));\n }\n dispatch(hideDocumentLibraryModal());\n }}\n show\n className=\"documentLibraryModal\"\n >\n \n
Document library
\n
\n setSelectedTab(Tab.policy)}\n >\n Policies\n
\n setSelectedTab(Tab.own)}\n >\n Upload my own\n \n \n
\n \n {selectedTab === Tab.policy && }\n {selectedTab === Tab.own && }\n \n \n );\n};\n\nexport default DocumentLibraryModal;\n","import React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { usePrevious } from 'react-use';\nimport { canCreate } from '../../functions/access';\nimport { selectInProgressPolicies } from '../../selectors/selectInProgressPolicies';\nimport { deletePolicy } from '../../store/policies/policiesThunks';\nimport { VendorPolicyDetails } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\nimport { AccessObject } from '../../types/accessObject';\nimport DocumentLibraryModal from '../DocumentLibraryModal/DocumentLibraryModal';\nimport { GenericModal } from '../GenericModal/GenericModal';\n\nimport AdoptechGridTable from '../AdoptechGridTable/AdoptechGridTable';\nimport { NoDataText } from '../NoDataText/NoDataText';\nimport { SortableTableHeader } from '../SortableTableHeader/SortableTableHeader';\nimport { Grid } from '../../types/grid';\nimport { InProgressPolicyRow } from './InProgressPolicyRow';\n\nimport './InProgressPoliciesGrid.scss';\nimport '../AdoptechGridTable/AdoptechGridTable.scss';\n\nexport const InProgressPoliciesGrid: React.FC = () => {\n const policies = useSelector(selectInProgressPolicies);\n const canManageDocuments = canCreate(AccessObject.vendor_documents);\n const { isDocumentLibraryModalShowing } = useSelector(\n (state: ApplicationState) => state.policies\n );\n\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n const [selectedPolicyId, setSelectedPolicyId] = useState();\n const dispatch = useDispatch();\n const previousPolicies = usePrevious(policies);\n const baseCss = 'policyGrid';\n const baseTableCss = 'adoptechGridTable';\n\n const allPolicies: VendorPolicyDetails[] = [...policies];\n if (previousPolicies) {\n previousPolicies.forEach(previousPolicy => {\n if (\n policies.findIndex(policy => policy.id === previousPolicy.id) === -1\n ) {\n allPolicies.push(previousPolicy);\n }\n });\n }\n\n return (\n <>\n
\n setShowDeleteModal(false)}\n onClose={() => {\n dispatch(deletePolicy(selectedPolicyId));\n setShowDeleteModal(false);\n }}\n show={showDeleteModal}\n showCancelButton\n title=\"Confirm delete?\"\n >\n
\n Click CONFIRM to permanently delete this version of the policy.\n
\n \n\n {allPolicies.length <= 0 ? (\n \n ) : (\n \n \n columnName=\"name\"\n grid={Grid.InProgressPolicies}\n label=\"Name\"\n className={baseCss + '--name'}\n notInTable\n />\n
Category
\n
Owner
\n
Progress
\n
\n
\n }\n >\n {allPolicies.map((policy: VendorPolicyDetails) => {\n return (\n <>\n \n \n );\n })}\n \n )}\n \n\n {canManageDocuments && isDocumentLibraryModalShowing && (\n \n )}\n \n );\n};\n","import React, { useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport { canIndex } from '../../functions/access';\nimport { selectInProgressPolicies } from '../../selectors/selectInProgressPolicies';\nimport { AccessObject } from '../../types/accessObject';\nimport { InProgressPoliciesGrid } from '../InProgressPoliciesGrid/InProgressPoliciesGrid';\nimport { Lozenge } from '../Lozenge/Lozenge';\nimport { NoDataText } from '../NoDataText/NoDataText';\nimport './InProgressPolicies.scss';\n\nexport const InProgressPolicies: React.FC = () => {\n const count = useSelector(selectInProgressPolicies).length;\n const titleRef = useRef();\n const canSeePolicyCategories = canIndex(AccessObject.policy_categories);\n if (!canSeePolicyCategories) return null;\n\n return (\n
\n
\n
\n Drafts\n \n
\n
\n {count === 0 && }\n \n
\n );\n};\n","import React, { useEffect } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { closeAttestationManagement } from '../../store/policies/policiesSlice';\nimport {\n fetchVendorDocumentAttestations,\n fetchVendorTeams,\n} from '../../store/vendors/vendorsThunks';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport {\n SentAttestationsTable,\n useSentAttestations,\n} from '../SentAttestationsTable/SentAttestationsTable';\nimport './AttestationManagementModal.scss';\nimport { VendorDocumentExtended } from '../../swagger';\n\nconst useFetchAttestations = (currentDocument: VendorDocumentExtended) => {\n const dispatch = useDispatch();\n const { isFetchingVendorDocumentAttestations } = useSelector(\n (state: ApplicationState) => state.vendors.documentState\n );\n const { isAttestationManagementModalShowing } = useSelector(\n (state: ApplicationState) => state.policies\n );\n\n useEffect(() => {\n if (!currentDocument || !isAttestationManagementModalShowing) return;\n dispatch(fetchVendorDocumentAttestations(currentDocument.id));\n }, [currentDocument?.id]);\n\n return {\n isFetchingVendorDocumentAttestations,\n isAttestationManagementModalShowing,\n };\n};\n\nexport const AttestationManagementModal: React.FC = () => {\n const { attestationManagementVendorDocument: currentDocument } = useSelector(\n (state: ApplicationState) => state.policies\n );\n\n const {\n isFetchingVendorDocumentAttestations,\n isAttestationManagementModalShowing,\n } = useFetchAttestations(currentDocument);\n const dispatch = useDispatch();\n const handleCancel = () => dispatch(closeAttestationManagement());\n\n const baseCss = 'attestationManagementModal';\n const childClass = (name: string) => `${baseCss}--${name}`;\n const { sentAttestations } = useSentAttestations(currentDocument);\n\n return (\n \n \n \n
\n Read requests\n
\n
{currentDocument.name}
\n
\n V{currentDocument.version}\n
\n
\n {currentDocument.attestationStats.attested}/\n {currentDocument.attestationStats.total}\n
\n
\n
\n
\n \n {isFetchingVendorDocumentAttestations ? (\n \n ) : (\n
\n \n
\n )}\n
\n \n Cancel\n\n \n Done\n \n \n \n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { hideCompleteDocumentAuditModal } from '../../store/vendors/vendorsSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport { AdoptechButton } from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport { DownloadDocumentModal } from '../DownloadDocumentModal/DownloadDocumentModal';\nimport './CompleteDocumentAuditModal.scss';\nimport {\n SentAttestationsTable,\n useSentAttestations,\n} from '../SentAttestationsTable/SentAttestationsTable';\nimport { fetchVendorDocumentAttestations } from '../../store/vendors/vendorsThunks';\nimport { VendorDocumentApprovalStatusEnum } from '../../swagger';\n\nexport const CompleteDocumentAuditModal: React.FC = () => {\n const dispatch = useDispatch();\n const [isShowingDownloadModal, setIsShowingDownloadModal] = useState(false);\n const completeDocument = useSelector(\n (state: ApplicationState) => state.vendors.documentState.completeDocument\n );\n const isCompleteDocumentAuditModalOpen = useSelector(\n (state: ApplicationState) =>\n state.vendors.documentState.isCompleteDocumentAuditModalOpen\n );\n\n const getApprovalStatus = (): string => {\n if (\n completeDocument.vendorDocumentApproval.status ===\n VendorDocumentApprovalStatusEnum.WasNotRequested\n ) {\n return 'Skipped';\n }\n if (\n completeDocument.vendorDocumentApproval.status ===\n VendorDocumentApprovalStatusEnum.Current\n ) {\n return 'Approved';\n }\n };\n\n useEffect(() => {\n if (!completeDocument) return;\n dispatch(fetchVendorDocumentAttestations(completeDocument.id));\n }, [completeDocument?.id]);\n const { sentAttestations } = useSentAttestations(completeDocument);\n if (!completeDocument) {\n return null;\n }\n\n const handleCancel = () => {\n dispatch(hideCompleteDocumentAuditModal());\n };\n\n return (\n \n \n \n
\n
Document Audit
\n
\n
\n
Document name:
\n
{completeDocument.name}
\n
\n
\n
Live date:
\n
{formatShortDate(completeDocument.createdAt)}
\n
\n
\n
Approval:
\n
{getApprovalStatus()}
\n
\n
\n
\n
\n \n
\n \n
\n
\n \n setIsShowingDownloadModal(true)}>\n Download\n \n Close\n \n \n setIsShowingDownloadModal(false)}\n show={isShowingDownloadModal}\n vendorDocumentId={completeDocument.id}\n />\n
\n );\n};\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch } from 'react-redux';\nimport {\n showPolicyDrawerForReadRequest,\n updatePolicyToEdit,\n} from '../../store/policies/policiesSlice';\nimport { skipAttestation } from '../../store/policies/policiesThunks';\nimport { VendorDocumentExtended } from '../../swagger';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport './ReadRequestModal.scss';\n\ninterface ReadRequestModalProps {\n vendorDocument: VendorDocumentExtended;\n onClose: () => void;\n}\n\nconst ReadRequestModal: React.FC = ({\n vendorDocument,\n onClose,\n}) => {\n const dispatch = useDispatch();\n if (!vendorDocument) {\n return null;\n }\n\n const handleCancel = () => {\n onClose();\n };\n\n const handleIgnore = () => {\n dispatch(\n skipAttestation({\n policyId: vendorDocument.id,\n onSuccess: onClose,\n })\n );\n };\n\n const openDrawer = () => {\n onClose();\n dispatch(showPolicyDrawerForReadRequest());\n dispatch(updatePolicyToEdit(vendorDocument));\n };\n\n return (\n \n Read request\n \n

\n This policy has not been shared with staff. You can choose to ‘Ignore’\n this or ‘Setup Read Request’.\n

\n

You can always access ‘Read requests’ in Policy Settings.

\n
\n \n \n Cancel\n \n \n Ignore\n \n \n SETUP READ REQUEST\n \n \n
\n );\n};\n\nexport default ReadRequestModal;\n","import { push } from 'connected-react-router';\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n useCanFeature,\n mapShareFeaturesToAccessLevels,\n useHasFeature,\n useCanCreate,\n} from '../../../functions/access';\nimport {\n getPdfDocumentPath,\n PdfPreviewEntityPaths,\n} from '../../../functions/routePathsHelpers';\nimport {\n ShareableType,\n VendorDocumentAttestationStatusEnum,\n VendorDocumentExtended,\n VendorDocumentStatusEnum,\n} from '../../../swagger';\nimport { AccessObject } from '../../../types/accessObject';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { PdfOpenMode } from '../../../types/pdfOpenMode';\nimport { UserAvatar } from '../../../components/UserAvatar/UserAvatar';\nimport {\n openAttestationManagement,\n showExistingPolicyWarningModal,\n showPolicyDrawer,\n updatePolicyToEdit,\n} from '../../../store/policies/policiesSlice';\nimport classNames from 'classnames';\nimport { faGear } from '@fortawesome/pro-light-svg-icons/faGear';\nimport { faExclamationCircle } from '@fortawesome/pro-solid-svg-icons/faExclamationCircle';\nimport { faCloudDownload } from '@fortawesome/pro-light-svg-icons/faCloudDownload';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\nimport { faSync } from '@fortawesome/pro-light-svg-icons/faSync';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport Dropdown from 'react-bootstrap/esm/Dropdown';\nimport { ExistingPolicyWarningModalMode } from '../../../components/ExistingPolicyWarningModal/ExistingPolicyWarningModal';\nimport { selectInProgressPolicies } from '../../../selectors/selectInProgressPolicies';\nimport { MeatballMenu } from '../../../components/MeatballMenu/MeatballMenu';\nimport { formatShortDate } from '../../../functions/formatShortDate';\nimport { showShareModal } from '../../../store/vendors/vendorsSlice';\nimport { faClock } from '@fortawesome/pro-light-svg-icons/faClock';\nimport { faLink } from '@fortawesome/pro-light-svg-icons/faLink';\nimport { PolicyGetLinkInfo } from '../../../components/InProgressPoliciesGrid/InProgressPolicyRow';\n\ninterface LivePolicyRowProps {\n vendorDocument: VendorDocumentExtended;\n baseCss: string;\n baseTableCss: string;\n onDownLoadClick: (vd: VendorDocumentExtended) => void;\n onReadRequestClick: (vd: VendorDocumentExtended) => void;\n}\nexport const isRejected = (vd: VendorDocumentExtended): boolean =>\n vd.status === VendorDocumentStatusEnum.Rejected;\n\nexport const LivePolicyRow: React.FC = ({\n vendorDocument,\n baseCss,\n baseTableCss,\n onDownLoadClick,\n onReadRequestClick,\n}) => {\n const dispatch = useDispatch();\n const policies = useSelector(selectInProgressPolicies);\n const canManageDocuments = useCanCreate(AccessObject.vendor_documents);\n const canManageAttestations = useCanFeature(\n AccessObject.manage_read_requests\n );\n const canUpdateVersion = useCanFeature(AccessObject.manage_versions);\n const allVendorPolicies = useSelector(\n (state: ApplicationState) => state.policies.vendorPolicies\n );\n\n const openDrawer = (document: VendorDocumentExtended) => {\n dispatch(showPolicyDrawer());\n dispatch(updatePolicyToEdit(document));\n };\n\n const getReadByValue = (vendorDoc: VendorDocumentExtended): string => {\n if (vendorDoc.attestationStats.total > 0) {\n return `${vendorDoc.attestationStats.attested} / ${vendorDoc.attestationStats.total}`;\n }\n if (!vendorDoc.needToAttest) {\n return '0 / 0';\n }\n return '';\n };\n\n const openPdf = (document: VendorDocumentExtended) => {\n dispatch(\n push(\n getPdfDocumentPath({\n vendorDocumentId: document.id,\n mode: PdfOpenMode.Preview,\n basePath: PdfPreviewEntityPaths.policies,\n })\n )\n );\n };\n\n const policyCategories = useSelector(\n (state: ApplicationState) => state.policies.policyCategories || []\n );\n\n const customCategory = policyCategories.find(\n category => category.id === vendorDocument.policyCategoryId\n )?.name; // for manual uploaded policy\n\n const policyCategoryName =\n allVendorPolicies.find(vp => vp.vendorDocumentId === vendorDocument.id)\n ?.categoryName || customCategory;\n\n return (\n {\n e.stopPropagation();\n openPdf(vendorDocument);\n }}\n className={classNames(\n baseCss,\n baseTableCss + '--highlighted',\n baseTableCss + '--row ',\n baseTableCss + '--slim',\n {\n [`${baseTableCss}--alert`]:\n isRejected(vendorDocument) || vendorDocument.reviewOverdue,\n }\n )}\n >\n {\n e.stopPropagation();\n openPdf(vendorDocument);\n }}\n >\n {`${vendorDocument.name} ${vendorDocument.version}`}\n \n
{policyCategoryName}
\n {\n if (!canManageDocuments) return;\n e.stopPropagation();\n openDrawer(vendorDocument);\n }}\n >\n \n \n {\n e.stopPropagation();\n openDrawer(vendorDocument);\n }}\n >\n {formatShortDate(vendorDocument.createdAt)}\n \n
\n {vendorDocument.reviewOverdue ? (\n
\n \n Overdue\n
\n ) : (\n formatShortDate(vendorDocument.nextReviewDate)\n )}\n
\n {canManageDocuments && (\n {\n e.stopPropagation();\n dispatch(openAttestationManagement(vendorDocument));\n }}\n >\n
{getReadByValue(vendorDocument)}
\n \n )}\n
\n {[\n VendorDocumentAttestationStatusEnum.Requested,\n VendorDocumentAttestationStatusEnum.Overdue,\n VendorDocumentAttestationStatusEnum.Imminent,\n ].includes(vendorDocument.vendorDocumentAttestation.status) && (\n {\n dispatch(\n push(\n getPdfDocumentPath({\n vendorDocumentId: vendorDocument.id,\n mode: PdfOpenMode.Attest,\n basePath: PdfPreviewEntityPaths.policies,\n })\n )\n );\n e.stopPropagation();\n }}\n variant={AdoptechButtonVariant.PrimaryTransparent}\n >\n Read\n \n )}\n {vendorDocument.needToAttest && (\n {\n e.stopPropagation();\n onReadRequestClick(vendorDocument);\n }}\n >\n \n
\n )}\n \n\n
\n \n {\n e.stopPropagation();\n dispatch(\n push(\n getPdfDocumentPath({\n vendorDocumentId: vendorDocument.id,\n mode: PdfOpenMode.Preview,\n basePath: PdfPreviewEntityPaths.policies,\n })\n )\n );\n }}\n >\n \n Preview\n \n {\n e.stopPropagation();\n dispatch(\n showShareModal({\n shareableId: vendorDocument.id,\n shareableType: ShareableType.VendorDocument,\n showOnlyGetLink: true,\n getLinkInfo: PolicyGetLinkInfo,\n accessLevels: mapShareFeaturesToAccessLevels(\n vendorDocument.access.feature\n ),\n relativePath: vendorDocument.relativePath,\n })\n );\n }}\n >\n \n Get link\n \n {\n onDownLoadClick(vendorDocument);\n e.stopPropagation();\n }}\n >\n \n Download\n \n \n {\n e.stopPropagation();\n openDrawer(vendorDocument);\n }}\n >\n \n Policy settings\n \n\n {canUpdateVersion &&\n vendorDocument.policyId &&\n !policies.some(p => p.policyId === vendorDocument.policyId) && (\n {\n dispatch(\n showExistingPolicyWarningModal({\n policyId: vendorDocument.policyId,\n existingPolicyWarningModalMode:\n ExistingPolicyWarningModalMode.Update,\n })\n );\n e.stopPropagation();\n }}\n >\n \n Update current version\n \n )}\n \n
\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useCanCreate } from '../../../functions/access';\nimport {\n selectLivePolicies,\n VendorDocumentWithCategoryName,\n} from '../../../selectors/selectLivePolicies';\nimport {\n hideSuccessfulVendorDocumentAttestationToast,\n setMyDocumentsFilter,\n toggleMyDocumentsFilter,\n} from '../../../store/vendors/vendorsSlice';\nimport { VendorDocumentExtended, VendorUserRoles } from '../../../swagger';\nimport { AccessObject } from '../../../types/accessObject';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { Grid } from '../../../types/grid';\nimport { AttestationManagementModal } from '../../../components/AttestationManagementModal/AttestationManagementModal';\nimport { CompleteDocumentAuditModal } from '../../../components/CompleteDocumentAuditModal/CompleteDocumentAuditModal';\nimport { DownloadDocumentModal } from '../../../components/DownloadDocumentModal/DownloadDocumentModal';\nimport { Lozenge } from '../../../components/Lozenge/Lozenge';\nimport { MessageToast } from '../../../components/MessageToast/MessageToast';\nimport { NoDataText } from '../../../components/NoDataText/NoDataText';\nimport ReadRequestModal from '../../../components/ReadRequestModal/ReadRequestModal';\nimport { SortableTableHeader } from '../../../components/SortableTableHeader/SortableTableHeader';\nimport './LivePolicies.scss';\nimport { LivePolicyRow } from './LivePolicyRow';\nimport AdoptechGridTable from '../../../components/AdoptechGridTable/AdoptechGridTable';\nimport { ToggleSwitch } from '../../../components/ToggleSwitch/ToggleSwitch';\nimport { selectCurrentVendorUser } from '../../../selectors/selectCurrentVendorUser';\n\nexport const LivePolicies: React.FC = () => {\n const baseTableCss = 'adoptechGridTable';\n const baseCss = 'policyGrid';\n\n const canManageDocuments = useCanCreate(AccessObject.vendor_documents);\n const [isShowingDownloadDocumentModal, setIsShowingDownloadDocumentModal] =\n useState(false);\n const [vendorDocument, setVendorDocument] =\n useState();\n const [showReadRequestModal, setShowReadRequestModal] =\n useState(false);\n const [vendorDocumentToMakeReadRequest, setVendorDocumentToMakeReadRequest] =\n useState();\n\n const livePolicyDocuments: VendorDocumentWithCategoryName[] =\n useSelector(selectLivePolicies);\n\n const isAttestationManagementModalShowing = useSelector(\n (state: ApplicationState) =>\n state.policies.isAttestationManagementModalShowing\n );\n\n const isShowingSuccessfulVendorDocumentAttestationToast = useSelector(\n (state: ApplicationState) =>\n state.vendors.documentState\n .isShowingSuccessfulVendorDocumentAttestationToast\n );\n\n const dispatch = useDispatch();\n\n const onDownload = (vd: VendorDocumentExtended) => {\n setVendorDocument(vd);\n setIsShowingDownloadDocumentModal(true);\n };\n\n const onReadRequest = (vd: VendorDocumentExtended) => {\n setVendorDocumentToMakeReadRequest(vd);\n setShowReadRequestModal(true);\n };\n\n const myPoliciesFilter = useSelector(\n (state: ApplicationState) =>\n state.vendors.documentState.myPoliciesFilterEnabled\n );\n const currentVendorUser = useSelector(selectCurrentVendorUser);\n useEffect(() => {\n if (\n currentVendorUser &&\n currentVendorUser.roles.some(userRole =>\n [VendorUserRoles.Employee].includes(userRole)\n )\n ) {\n dispatch(setMyDocumentsFilter(true));\n }\n }, []);\n return (\n <>\n
\n
\n
\n Live policies\n \n
\n
\n dispatch(toggleMyDocumentsFilter())}\n handlerStyle=\"small\"\n />\n My Policies\n
\n
\n
\n {livePolicyDocuments.length > 0 ? (\n \n \n \n columnName=\"name\"\n grid={Grid.LivePolicies}\n label=\"Name\"\n className={baseCss + '--name'}\n notInTable\n />\n \n columnName=\"categoryName\"\n grid={Grid.LivePolicies}\n label=\"Category\"\n className={baseCss + '--name'}\n notInTable\n />\n \n columnName=\"owner\"\n grid={Grid.LivePolicies}\n label=\"Owner\"\n className={baseCss + '--owner'}\n notInTable\n />\n \n columnName=\"createdAt\"\n grid={Grid.LivePolicies}\n label=\"Live\"\n className={baseCss + '--name'}\n notInTable\n />\n \n columnName=\"nextReviewDate\"\n grid={Grid.LivePolicies}\n label=\"Next Review\"\n className={baseCss + '--nextReview'}\n notInTable\n />\n
{canManageDocuments && Read by #}
\n
\n
Actions
\n
\n }\n >\n {livePolicyDocuments.map((policy: VendorDocumentExtended) => {\n return (\n onDownload(vd)}\n onReadRequestClick={vd => onReadRequest(vd)}\n />\n );\n })}\n \n
\n ) : (\n \n )}\n \n \n\n {isAttestationManagementModalShowing && }\n \n\n setIsShowingDownloadDocumentModal(false)}\n show={isShowingDownloadDocumentModal}\n vendorDocumentId={vendorDocument?.id}\n />\n dispatch(hideSuccessfulVendorDocumentAttestationToast())}\n >\n Policy has been read.\n \n {showReadRequestModal && (\n {\n setVendorDocumentToMakeReadRequest(null);\n setShowReadRequestModal(false);\n }}\n />\n )}\n \n );\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { VendorDocumentApproval } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\n\nexport const selectPolicyRejections = createSelector(\n (state: ApplicationState) => state.policies.approvals,\n approvals =>\n approvals.filter(\n (approval: VendorDocumentApproval) => approval.status === 'rejected'\n )\n);\n","import React, { useEffect } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { formatShortDate } from '../../functions/formatShortDate';\nimport { selectPolicyRejections } from '../../selectors/selectPolicyRejections';\nimport {\n closeManageRejectionModal,\n showExistingPolicyWarningModal,\n} from '../../store/policies/policiesSlice';\nimport { fetchDocumentApprovals } from '../../store/policies/policiesThunks';\nimport {\n AgreementModel,\n AgreementSignatoryModel,\n VendorDocument,\n VendorDocumentApproval,\n} from '../../swagger/models';\nimport { ApplicationState } from '../../types/applicationState';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../AdoptechButton/AdoptechButton';\nimport AdoptechModal from '../AdoptechModal/AdoptechModal';\nimport AdoptechTable from '../AdoptechTable/AdoptechTable';\nimport { ExistingPolicyWarningModalMode } from '../ExistingPolicyWarningModal/ExistingPolicyWarningModal';\nimport { LoadingSpinner } from '../LoadingSpinner/LoadingSpinner';\nimport { UserAvatar } from '../UserAvatar/UserAvatar';\nimport './ManagePolicyRejectionModal.scss';\nimport { capitalize } from '../../functions/capitalize';\nimport { selectUsers } from '../../selectors/selectUsers';\n\nexport const ManagePolicyRejectionModal = () => {\n const dispatch = useDispatch();\n const rejectedItemToManage: VendorDocument | AgreementModel = useSelector(\n (state: ApplicationState) => state.policies.rejectedItemToManage\n );\n const approvals = useSelector(selectPolicyRejections);\n const isPolicy = 'policyId' in rejectedItemToManage;\n const itemName = isPolicy ? 'policy' : 'agreement';\n const isFetchingDocumentApprovals = useSelector(\n (state: ApplicationState) => state.policies.isFetchingDocumentApprovals\n );\n\n useEffect(() => {\n if (isPolicy && rejectedItemToManage) {\n dispatch(fetchDocumentApprovals(rejectedItemToManage.id));\n }\n }, [rejectedItemToManage]);\n\n const handleCancel = () => {\n dispatch(closeManageRejectionModal());\n };\n\n const handleUpdate = () => {\n const data = isPolicy\n ? {\n policyId: (rejectedItemToManage as VendorDocument).policyId,\n existingPolicyWarningModalMode: ExistingPolicyWarningModalMode.Update,\n }\n : {\n policyId: (rejectedItemToManage as AgreementModel).id,\n existingPolicyWarningModalMode:\n ExistingPolicyWarningModalMode.Agreement,\n };\n dispatch(showExistingPolicyWarningModal(data));\n };\n\n const vendorUsers = useSelector((state: ApplicationState) =>\n selectUsers(state)\n );\n\n return (\n \n {capitalize(itemName)} rejection management\n \n
\n View and manage {itemName} rejections. Click update below to edit{' '}\n {itemName}.\n
\n\n {isFetchingDocumentApprovals ? (\n \n ) : (\n \n
\n {rejectedItemToManage.name}\n
\n\n \n \n \n Rejected by\n Date\n Reason for rejection\n \n \n \n {isPolicy\n ? approvals.map((rejection: VendorDocumentApproval) => {\n const vendorUser = vendorUsers.find(\n currentVendorUser =>\n currentVendorUser.id === rejection.vendorUserId\n );\n return (\n \n \n
\n \n
\n \n \n
{formatShortDate(rejection.rejectedAt)}
\n \n \n
{rejection.rejectionReason}
\n \n \n );\n })\n : (\n rejectedItemToManage as AgreementModel\n )?.agreementSignatories\n .filter(\n (signatory: AgreementSignatoryModel) =>\n signatory.status === 'rejected'\n )\n .map((signatory: AgreementSignatoryModel) => (\n \n \n \n \n \n
{formatShortDate(signatory.updatedAt)}
\n \n \n
{signatory.rejectionReason}
\n \n \n ))}\n \n
\n
\n )}\n
\n \n Cancel\n \n UPDATE {itemName.toUpperCase()}\n \n \n \n );\n};\n","import { ApplicationState } from '../types/applicationState';\nimport { createSelector } from '@reduxjs/toolkit';\nimport {\n VendorDocumentApprovalStatusEnum,\n VendorDocumentExtended,\n VendorDocumentStatusEnum,\n} from '../swagger';\nimport { AccessObject } from '../types/accessObject';\nimport { selectSortSettings } from './selectSortSettings';\nimport { Grid } from '../types/grid';\nimport { VendorDocumentWithCategoryName } from './selectLivePolicies';\nimport { vendorDocumentWithCategoryNameSort } from '../functions/vendorDocumentWithCategoryNameSort';\nimport { selectCurrentVendor } from './selectCurrentVendor';\n\nexport const selectPendingApprovalPolicies = createSelector(\n (state: ApplicationState) => state.user.userDetails.email,\n (state: ApplicationState) => state.vendors.documentState.policyDocuments,\n (state: ApplicationState) => state.policies.vendorPolicies,\n (state: ApplicationState) => state.policies.policyCategories,\n selectSortSettings(Grid.PendingApprovalPolicies),\n selectCurrentVendor,\n (state: ApplicationState) =>\n state.vendors.documentState.vendorDocumentApprovals,\n (\n email,\n policyDocuments,\n vendorPolicies,\n policyCategories,\n sortSetting,\n currentVendor,\n approvals\n ) => {\n let pendingApprovalPolicies: VendorDocumentExtended[];\n\n const allDocumentsPendingApproval = policyDocuments.filter(\n pd => pd.status === VendorDocumentStatusEnum.Approval\n );\n const allDocumentsRejected = policyDocuments.filter(\n pd => pd.status === VendorDocumentStatusEnum.Rejected\n );\n\n const canSeeAllPolicies = currentVendor?.access?.create?.includes(\n AccessObject.vendor_policies\n );\n // if policy editor\n if (canSeeAllPolicies) {\n pendingApprovalPolicies = [\n ...allDocumentsPendingApproval,\n ...allDocumentsRejected,\n ];\n } else {\n // else find approvals requested from me or was shared with me when was drafted\n pendingApprovalPolicies = allDocumentsPendingApproval.filter(vd => {\n approvals.some(\n vda =>\n vda.vendorDocumentId === vd.id &&\n vda.email === email &&\n vda.required &&\n vda.status === VendorDocumentApprovalStatusEnum.Requested\n ) || vd.access.feature.includes(AccessObject.manage_approvals);\n });\n }\n\n const pendingApprovalPoliciesWithCategoryName: VendorDocumentWithCategoryName[] =\n pendingApprovalPolicies.map(pap => {\n const isManualUploadedPolicy = pap.policyCategoryId;\n\n const categoryName = isManualUploadedPolicy\n ? policyCategories.find(\n policyCategory => policyCategory.id === pap.policyCategoryId\n )?.name\n : vendorPolicies.find(vp => vp.vendorDocumentId === pap.id)\n ?.categoryName;\n return {\n ...pap,\n categoryName: categoryName || '',\n };\n });\n\n return pendingApprovalPoliciesWithCategoryName.sort((a, b) =>\n vendorDocumentWithCategoryNameSort(a, b, sortSetting.columnSort)\n );\n }\n);\n","import { push } from 'connected-react-router';\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useCanCreate, useCanFeature } from '../../../functions/access';\nimport {\n getPdfDocumentPath,\n PdfPreviewEntityPaths,\n} from '../../../functions/routePathsHelpers';\nimport { VendorDocumentWithCategoryName } from '../../../selectors/selectLivePolicies';\nimport { showEditOwnerModal } from '../../../store/global/globalSlice';\nimport {\n VendorDocumentApprovalStatusEnum,\n VendorDocumentExtended,\n VendorDocumentStatusEnum,\n} from '../../../swagger';\nimport { AccessObject } from '../../../types/accessObject';\nimport { OwnerObjectType } from '../../../types/OwnerObjectType';\nimport { PdfOpenMode } from '../../../types/pdfOpenMode';\nimport { UserAvatar } from '../../../components/UserAvatar/UserAvatar';\nimport {\n openApprovalManagement,\n openManageRejectionModal,\n showExistingPolicyWarningModal,\n} from '../../../store/policies/policiesSlice';\nimport classNames from 'classnames';\nimport { faCloudDownload } from '@fortawesome/pro-light-svg-icons/faCloudDownload';\nimport { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { faFileCheck } from '@fortawesome/pro-light-svg-icons/faFileCheck';\nimport { faFileContract } from '@fortawesome/pro-light-svg-icons/faFileContract';\nimport { faSync } from '@fortawesome/pro-light-svg-icons/faSync';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport Dropdown from 'react-bootstrap/esm/Dropdown';\nimport { ExistingPolicyWarningModalMode } from '../../../components/ExistingPolicyWarningModal/ExistingPolicyWarningModal';\nimport { selectInProgressPolicies } from '../../../selectors/selectInProgressPolicies';\nimport { MeatballMenu } from '../../../components/MeatballMenu/MeatballMenu';\nimport { fetchVendorDocumentDownload } from '../../../store/vendors/vendorsThunks';\n\ninterface PendingApprovalPolicyRowProps {\n vendorDocument: VendorDocumentWithCategoryName;\n baseCss: string;\n baseTableCss: string;\n}\nexport const isRejected = (vd: VendorDocumentExtended): boolean =>\n vd.status === VendorDocumentStatusEnum.Rejected;\n\nexport const PendingApprovalPolicyRow: React.FC<\n PendingApprovalPolicyRowProps\n> = ({ vendorDocument, baseCss, baseTableCss }) => {\n const dispatch = useDispatch();\n const canManageApprovals = useCanFeature(AccessObject.manage_approvals);\n const canManageDocuments = useCanCreate(AccessObject.vendor_documents);\n\n const handleManageClick = (\n e: React.MouseEvent,\n vendorDoc: VendorDocumentExtended\n ): void => {\n e.stopPropagation();\n if (isRejected(vendorDoc)) {\n dispatch(openManageRejectionModal(vendorDoc));\n return;\n }\n dispatch(\n openApprovalManagement({\n id: vendorDoc.id,\n name: vendorDoc.name,\n isCancelable: true,\n })\n );\n };\n const inProgressPolicies = useSelector(selectInProgressPolicies);\n const hasPolicyInProgress = (vendorDoc: VendorDocumentExtended): boolean => {\n return inProgressPolicies.some(p => p.policyId === vendorDoc.policyId);\n };\n\n const openPdf = (vendorDoc: VendorDocumentExtended) => {\n dispatch(\n push(\n getPdfDocumentPath({\n vendorDocumentId: vendorDoc.id,\n mode:\n vendorDoc.vendorDocumentApproval.status ===\n VendorDocumentApprovalStatusEnum.Requested\n ? PdfOpenMode.Approve\n : PdfOpenMode.Preview,\n basePath: PdfPreviewEntityPaths.policies,\n })\n )\n );\n };\n const canUpdateVersion = useCanFeature(AccessObject.manage_versions);\n return (\n {\n e.stopPropagation();\n openPdf(vendorDocument);\n }}\n className={classNames(\n baseCss,\n baseTableCss + '--row ',\n baseTableCss + '--slim',\n {\n [`${baseTableCss}--alert`]: isRejected(vendorDocument),\n }\n )}\n >\n {\n e.stopPropagation();\n openPdf(vendorDocument);\n }}\n >\n {`${vendorDocument.name} ${vendorDocument.version}`}\n \n
{vendorDocument.categoryName}
\n {\n if (!canManageDocuments) return;\n e.stopPropagation();\n dispatch(\n showEditOwnerModal({\n object: vendorDocument,\n type: OwnerObjectType.VendorDocument,\n })\n );\n }}\n >\n \n \n
\n
\n {isRejected(vendorDocument) ? 'Rejected' : 'Pending approval'}\n
\n
\n
handleManageClick(e, vendorDocument)}>\n {`${vendorDocument.approvalStats.approved} / ${vendorDocument.approvalStats.total}`}\n
\n
\n {vendorDocument.vendorDocumentApproval.status ===\n VendorDocumentApprovalStatusEnum.Requested && (\n {\n dispatch(\n push(\n getPdfDocumentPath({\n vendorDocumentId: vendorDocument.id,\n mode: PdfOpenMode.Approve,\n basePath: PdfPreviewEntityPaths.policies,\n })\n )\n );\n e.stopPropagation();\n }}\n variant={AdoptechButtonVariant.PrimaryTransparent}\n >\n Approve\n \n )}\n
\n
\n \n {\n dispatch(\n push(\n getPdfDocumentPath({\n vendorDocumentId: vendorDocument.id,\n mode: PdfOpenMode.Preview,\n basePath: PdfPreviewEntityPaths.policies,\n })\n )\n );\n e.stopPropagation();\n }}\n >\n \n Preview\n \n {\n dispatch(\n fetchVendorDocumentDownload({\n id: vendorDocument.id,\n successCallback: vendorDocumentDownload => {\n window.location.href = vendorDocumentDownload.document;\n },\n })\n );\n\n e.stopPropagation();\n }}\n >\n \n Download\n \n {canManageApprovals && (\n <>\n \n handleManageClick(e, vendorDocument)}\n >\n \n {isRejected(vendorDocument)\n ? 'Manage rejection'\n : 'Manage approvals'}\n \n \n )}\n {canUpdateVersion &&\n vendorDocument.policyId &&\n !isRejected(vendorDocument) && (\n {\n dispatch(\n showExistingPolicyWarningModal({\n policyId: vendorDocument.policyId,\n existingPolicyWarningModalMode:\n ExistingPolicyWarningModalMode.Update,\n })\n );\n e.stopPropagation();\n }}\n >\n \n Update current version\n \n )}\n {canManageDocuments && !isRejected(vendorDocument) && (\n {\n dispatch(\n showEditOwnerModal({\n object: vendorDocument,\n type: OwnerObjectType.VendorDocument,\n })\n );\n e.stopPropagation();\n }}\n >\n \n Edit owner\n \n )}\n \n
\n \n );\n};\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { VendorDocumentWithCategoryName } from '../../../selectors/selectLivePolicies';\nimport { selectPendingApprovalPolicies } from '../../../selectors/selectPendingApprovalPolicies';\nimport { Grid } from '../../../types/grid';\nimport AdoptechGridTable from '../../../components/AdoptechGridTable/AdoptechGridTable';\nimport { Lozenge } from '../../../components/Lozenge/Lozenge';\nimport { NoDataText } from '../../../components/NoDataText/NoDataText';\nimport { SortableTableHeader } from '../../../components/SortableTableHeader/SortableTableHeader';\nimport { PendingApprovalPolicyRow } from './PendingApprovalPolicyRow';\nimport './PendingApprovalPolicies.scss';\nimport { canIndex } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\n\n// only for pending approvals, not for draft ( we cannot share draft via \"sharing modal\")\nconst useHideNotLivePolicies = (count: number) => {\n const canSeePolicyCategories = canIndex(AccessObject.policy_categories);\n // if we cannot see categories ( we are not policy editor ) and we don't have\n // shared policies, hide this section\n return count === 0 && !canSeePolicyCategories;\n};\n\nexport const PendingApprovalPolicies: React.FC = () => {\n const baseTableCss = 'adoptechGridTable';\n const baseCss = 'policyGrid';\n\n const vendorDocumentsPendingApproval = useSelector(\n selectPendingApprovalPolicies\n );\n\n const count = vendorDocumentsPendingApproval.length;\n if (useHideNotLivePolicies(count)) return null;\n\n return (\n
\n
\n
\n Approvals\n \n
\n
\n {count > 0 ? (\n \n
\n \n \n columnName=\"name\"\n grid={Grid.PendingApprovalPolicies}\n label=\"Name\"\n className={baseCss + '--name'}\n notInTable\n />\n
Category
\n
Owner
\n
Status
\n
Approvers
\n
\n
\n
\n }\n >\n {vendorDocumentsPendingApproval.map(\n (policy: VendorDocumentWithCategoryName) => {\n return (\n \n );\n }\n )}\n \n
\n \n ) : (\n \n )}\n \n );\n};\n","import { push } from 'connected-react-router';\nimport React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport './PolicyTiles.scss';\nimport { DashboardTile } from '../../../components/DashboardTile/DashboardTile';\nimport { faLaptopMobile } from '@fortawesome/pro-light-svg-icons/faLaptopMobile';\nimport { faUsers } from '@fortawesome/pro-light-svg-icons/faUsers';\nimport { faCircleCheck } from '@fortawesome/pro-light-svg-icons/faCircleCheck';\nimport { faFileLock } from '@fortawesome/pro-light-svg-icons/faFileLock';\nimport { faSeedling } from '@fortawesome/pro-light-svg-icons/faSeedling';\nimport { faBookAlt } from '@fortawesome/pro-light-svg-icons/faBookAlt';\n\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { fetchPolicyTemplateCategories } from '../../../store/policies/policiesThunks';\nimport { governancePoliciesLibraryRoute } from '../../../components/Routes/Routes';\n\nconst PolicyTiles: React.FC = () => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(fetchPolicyTemplateCategories());\n }, []);\n\n const isRequestingCategories = useSelector(\n (state: ApplicationState) => state.policies.isFetchingPolicyCategories\n );\n\n const policyCategories = useSelector(\n (state: ApplicationState) => state.policies.policyCategories\n );\n\n const baseCss = 'policyTiles';\n\n const getIcon = (name: string): IconDefinition => {\n switch (name) {\n case 'All':\n return faBookAlt;\n case 'ESG':\n return faSeedling;\n case 'Team':\n return faUsers;\n case 'Data Protection':\n return faFileLock;\n case 'Compliance':\n return faCircleCheck;\n case 'IT & InfoSec':\n return faLaptopMobile;\n default:\n return faUsers;\n }\n };\n\n if (isRequestingCategories) {\n return ;\n }\n\n return (\n
\n
Templates
\n
\n {policyCategories.map(cat => {\n return (\n \n dispatch(\n push(\n `${governancePoliciesLibraryRoute}?policyTemplateCategoryName=${encodeURIComponent(\n cat.name\n )}`\n )\n )\n }\n text={cat.summary}\n footerText=\"Select\"\n className=\"dashboardTile--light-orange dashboardTile--medium\"\n />\n );\n })}\n
\n
\n );\n};\n\nexport default PolicyTiles;\n","import { push } from 'connected-react-router';\nimport React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { DocumentType } from '../../../constants/DocumentType';\nimport { canIndex } from '../../../functions/access';\nimport { getPolicyDocuments } from '../../../functions/getPolicyDocuments';\nimport { PdfPreviewEntityPaths } from '../../../functions/routePathsHelpers';\nimport { useQueryParams } from '../../../hooks/useQueryParams';\nimport { selectCurrentVendor } from '../../../selectors/selectCurrentVendor';\nimport { openPdfPreview } from '../../../store/global/globalSlice';\nimport {\n closeManageRejectionModal,\n showDocumentLibraryModal,\n} from '../../../store/policies/policiesSlice';\nimport {\n fetchPoliciesForVendor,\n fetchVendorPoliciesDetails,\n} from '../../../store/policies/policiesThunks';\nimport {\n hideSuccessfulVendorDocumentApprovalToast,\n hideSuccessfulVendorDocumentRejectionToast,\n hideSuccessfulVendorDocumentUpdatedToast,\n showSuccessfulVendorDocumentUpdatedToast,\n} from '../../../store/vendors/vendorsSlice';\nimport { fetchVendorPolicyDocuments } from '../../../store/vendors/vendorsThunks';\nimport { VendorDocument, VendorPolicy } from '../../../swagger';\nimport { AccessObject } from '../../../types/accessObject';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { PdfOpenMode } from '../../../types/pdfOpenMode';\nimport ExistingPolicyWarningModal, {\n ExistingPolicyWarningModalMode,\n} from '../../../components/ExistingPolicyWarningModal/ExistingPolicyWarningModal';\nimport { InProgressPolicies } from '../../../components/InProgressPolicies/InProgressPolicies';\nimport { LivePolicies } from '../LivePolicies/LivePolicies';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport { ManagePolicyRejectionModal } from '../../../components/ManagePolicyRejectionModal/ManagePolicyRejectionModal';\nimport {\n MessageToast,\n MessageToastVariant,\n} from '../../../components/MessageToast/MessageToast';\nimport { PendingApprovalPolicies } from '../PendingApprovalPolicies/PendingApprovalPolicies';\nimport { PolicyDrawer } from '../../../components/PolicyDrawer/PolicyDrawer';\nimport PolicyTiles from '../PolicyTiles/PolicyTiles';\nimport { policyPageItemRouteURL } from '../../../components/Routes/Routes';\n\nconst PoliciesPageTables: React.FC = () => {\n const dispatch = useDispatch();\n\n const isExistingPolicyWarningModalShowing = useSelector(\n (state: ApplicationState) =>\n state.policies.isExistingPolicyWarningModalShowing\n );\n\n const isShowingSuccessfulVendorDocumentApprovalToast = useSelector(\n (state: ApplicationState) =>\n state.vendors.documentState.isShowingSuccessfulVendorDocumentApprovalToast\n );\n\n const isShowingSuccessfulVendorDocumentUpdatedToast = useSelector(\n (state: ApplicationState) =>\n state.vendors.documentState.isShowingSuccessfulVendorDocumentUpdatedToast\n );\n\n const isShowingSuccessfulVendorDocumentRejectionToast = useSelector(\n (state: ApplicationState) =>\n state.vendors.documentState\n .isShowingSuccessfulVendorDocumentRejectionToast\n );\n const { isDocumentLibraryModalShowing } = useSelector(\n (state: ApplicationState) => state.policies\n );\n const isManageRejectionModalShowing = useSelector(\n (state: ApplicationState) => state.policies.isManageRejectionModalShowing\n );\n const isFetchingVendorPolicies = useSelector(\n (state: ApplicationState) => state.policies.isFetchingVendorPolicies\n );\n const isFetchingPolicies = useSelector(\n (state: ApplicationState) => state.policies.isFetchingPolicies\n );\n const isFetchingVendorPolicyDocuments = useSelector(\n (state: ApplicationState) =>\n state.vendors.documentState.isFetchingVendorPolicyDocuments\n );\n const isPreviewingPdf = useSelector(\n (state: ApplicationState) => state.global.isPreviewingPdf\n );\n\n const addOrUpdatePolicyMode = useSelector(\n (state: ApplicationState) => state.policies.existingPolicyWarningModalMode\n );\n\n const policyDocuments = useSelector(getPolicyDocuments);\n const location = useSelector(\n (state: ApplicationState) => state.router.location\n );\n const currentVendor = useSelector(selectCurrentVendor);\n const queryParams = useQueryParams();\n const vendorDocumentId = queryParams.get('vendorDocumentId');\n const previewMode = queryParams.get('mode') || PdfOpenMode.Preview;\n\n const canIndexVendorPolicies = canIndex(AccessObject.vendor_policies);\n const canViewDraftPolicies = canIndex(AccessObject.policy_categories);\n const showDraft = window.location.href.includes('draft');\n\n const refreshPolicies = () => {\n dispatch(fetchVendorPoliciesDetails());\n canIndexVendorPolicies && dispatch(fetchPoliciesForVendor());\n dispatch(fetchVendorPolicyDocuments());\n };\n\n const handleAddOrUpdatePolicy = (vendorPolicy: VendorPolicy) => {\n const editModes = [\n ExistingPolicyWarningModalMode.Add,\n ExistingPolicyWarningModalMode.Update,\n ];\n\n if (editModes.includes(addOrUpdatePolicyMode)) {\n dispatch(fetchPoliciesForVendor());\n dispatch(push(policyPageItemRouteURL(vendorPolicy.id)));\n return;\n }\n\n refreshPolicies();\n dispatch(closeManageRejectionModal());\n dispatch(showSuccessfulVendorDocumentUpdatedToast());\n };\n\n useEffect(() => {\n refreshPolicies();\n }, [currentVendor?.id]);\n\n useEffect(() => {\n if (location.pathname.includes('/library')) {\n dispatch(showDocumentLibraryModal());\n }\n }, [location]);\n\n useEffect(() => {\n if (!policyDocuments?.length || !vendorDocumentId || isPreviewingPdf) {\n return;\n }\n const livePolicyToPreview = policyDocuments.find(\n (vendorDocument: VendorDocument) => vendorDocument.id === vendorDocumentId\n );\n if (!livePolicyToPreview) {\n return;\n }\n\n dispatch(\n openPdfPreview({\n dueDate: livePolicyToPreview.vendorDocumentAttestation.attestationDueAt,\n mode: previewMode as PdfOpenMode,\n documentType: DocumentType.Policy,\n title: livePolicyToPreview.name,\n vendorDocument: livePolicyToPreview,\n navigateUrlOnClose: PdfPreviewEntityPaths.policies,\n })\n );\n }, [vendorDocumentId, location, policyDocuments, previewMode]);\n\n const isLoading =\n !isDocumentLibraryModalShowing &&\n (isFetchingVendorPolicies ||\n isFetchingPolicies ||\n isFetchingVendorPolicyDocuments);\n return (\n <>\n {isLoading ? (\n \n ) : (\n <>\n
\n {showDraft && canViewDraftPolicies && (\n <>\n \n \n \n )}\n\n {!showDraft && (\n <>\n \n\n \n \n )}\n \n \n dispatch(hideSuccessfulVendorDocumentRejectionToast())\n }\n variant={MessageToastVariant.Warning}\n >\n Policy has been successfully rejected.\n \n \n dispatch(hideSuccessfulVendorDocumentUpdatedToast())\n }\n variant={MessageToastVariant.Primary}\n >\n Your document has been successfully created.\n \n {isManageRejectionModalShowing && }\n
\n\n \n dispatch(hideSuccessfulVendorDocumentApprovalToast())\n }\n >\n Policy has been successfully approved.\n \n\n {isExistingPolicyWarningModalShowing && (\n \n )}\n \n )}\n \n );\n};\n\nexport default PoliciesPageTables;\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { push } from 'connected-react-router';\nimport classNames from 'classnames';\nimport './../../compliance/dataRoom/DataRoomTabs/PageTabs.scss';\nimport {\n allDocumentsPageRoute,\n archivedDocumentsPageRoute,\n draftPoliciesPageRoute,\n policiesPageRoute,\n} from '../../../components/Routes/Routes';\nimport {\n useCanFeature,\n useCanCreate,\n useCanIndex,\n} from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport { setPageHeaderLabel } from '../../../store/global/globalSlice';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { faCloudUploadAlt } from '@fortawesome/pro-light-svg-icons/faCloudUploadAlt';\nimport { showDocumentUploadModal } from '../../../store/vendors/vendorsSlice';\n\ninterface Props {\n currentTab: 'live' | 'draft' | 'archived' | 'all';\n}\n\nexport const PoliciesTabs: React.FC = ({ currentTab }) => {\n const dispatch = useDispatch();\n useEffect(() => {\n dispatch(setPageHeaderLabel('Policies and Docs'));\n }, []);\n const goToLive = () => dispatch(push(policiesPageRoute));\n const goToArchived = () => dispatch(push(archivedDocumentsPageRoute));\n const goToAll = () => dispatch(push(allDocumentsPageRoute));\n const goToDraft = () => dispatch(push(draftPoliciesPageRoute));\n const canViewCompanyDocuments = useCanFeature(AccessObject.company_documents);\n const canManageDocuments = useCanCreate(AccessObject.vendor_documents);\n const canViewDraftPolicies = useCanIndex(AccessObject.policy_categories);\n return (\n <>\n
\n \n Live\n
\n {canViewDraftPolicies && (\n \n Draft\n \n )}\n {canViewCompanyDocuments && (\n \n All Docs\n \n )}\n {canViewCompanyDocuments && (\n \n Archived\n \n )}\n \n
\n {currentTab === 'all' && canManageDocuments && (\n dispatch(showDocumentUploadModal())}\n variant={AdoptechButtonVariant.PrimaryOrange}\n icon={faCloudUploadAlt}\n iconSize=\"large\"\n rounded\n >\n Upload\n \n )}\n
\n \n );\n};\n","import React, { useState } from 'react';\nimport './PaymentPlanCard.scss';\nimport { Interweave } from 'interweave';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../components/AdoptechButton/AdoptechButton';\nimport { PaymentPlan } from '../../../../swagger/models/PaymentPlan';\nimport { createPlanCheckoutSubscription } from '../../store/pricingThunks';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { sendAnalytics } from '../../../../functions/sendAnalytics';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport classNames from 'classnames';\nimport { CommandConfirmation } from '../../../../types/CommandConfirmation';\nimport { ConfirmationModal } from '../../../../components/ConfirmationModal/ConfirmationModal';\nimport { SharedPaymentPeriod } from '../../../../swagger';\nimport { selectPaymentPlans } from '../../../../selectors/selectPaymentPlans';\nimport { selectActiveSubscription } from '../../../../selectors/selectActiveSubscription';\nimport { PricingState } from '../../store/pricingState';\nimport { selectCurrentVendor } from '../../../../selectors/selectCurrentVendor';\nimport { openChatWidget } from '../../../../functions/chatWidgetHelper';\n\ninterface PaymentPlanCardProps {\n isActive?: boolean;\n plan: PaymentPlan;\n}\n// 3000 => 3,000\nconst numbersWithComma = (pounds: string) =>\n Intl.NumberFormat('en-US').format(+pounds);\n\nexport const coinsToPounds = (coins: number) => {\n if (coins === undefined) return;\n return numbersWithComma(Math.round(coins / 100).toFixed(0));\n};\nexport const priceLabel = (\n price: string,\n opts: { showAnnualPrice: boolean }\n) => {\n return price\n ? `£${price} + ${opts.showAnnualPrice ? 'VAT' : 'VAT/month'}`\n : '£POA';\n};\n\nexport const isStarter = (plan: PaymentPlan) => plan.rank === 2;\nconst isProfessional = (plan: PaymentPlan) => plan.rank === 3;\n\nexport const useHandleSubscribe = () => {\n const dispatch = useDispatch();\n\n const handleSubscribe = ({\n plan,\n paymentPeriod,\n }: {\n plan: PaymentPlan;\n paymentPeriod: PricingState['subscriptionDetails']['paymentPeriod'];\n }) => {\n sendAnalytics('add_payment_info');\n dispatch(\n createPlanCheckoutSubscription({\n planId: plan.id,\n productId: plan.productId,\n purchasableId: null,\n purchasableType: null,\n paymentPeriod,\n })\n );\n };\n return handleSubscribe;\n};\nexport const PaymentPlanCard: React.FC = ({\n plan,\n isActive,\n}) => {\n const baseCss = 'paymentPlanCard';\n const monthlyPrice = coinsToPounds(plan.monthlyPrice);\n const annuallyPrice = coinsToPounds(plan.annuallyPrice);\n\n const {\n subscriptionDetails,\n isCreatingPaymentPlanVendor,\n isUpdatingSubscription,\n } = useSelector((state: ApplicationState) => state.pricing);\n\n const { paymentPeriod } = subscriptionDetails;\n const [currentCommand, command] = useState(null);\n\n const showAnnualPrice =\n subscriptionDetails.paymentPeriod === SharedPaymentPeriod.Annually;\n const price = showAnnualPrice ? annuallyPrice : monthlyPrice;\n const { isDeletingSubscription, subscriptions } = useSelector(\n (state: ApplicationState) => state.user\n );\n\n const isStarterPlan = isStarter(plan);\n const isProfessionalPlan = isProfessional(plan);\n const paymentPlans = useSelector(selectPaymentPlans);\n const activeSubscription = useSelector(selectActiveSubscription);\n const activePlan =\n activeSubscription &&\n (paymentPlans || []).find(\n paymentPlan => paymentPlan.id === activeSubscription?.paymentPlanId\n );\n\n const buttonLabel = (): 'Talk to Sales' | 'Subscribe' =>\n // deprecated\n // | 'Unsubscribe'\n // | 'Upgrade'\n // | 'Downgrade'\n {\n if (plan.rank > 2) return 'Talk to Sales';\n\n const noSubscription = !activePlan;\n if (noSubscription) return 'Subscribe';\n\n return 'Talk to Sales';\n // deprecated\n // if (isActive) return 'Talk to Sales';\n // return plan.rank > activePlan.rank ? 'Upgrade' : 'Downgrade';\n };\n\n const dispatch = useDispatch();\n const currentVendor = useSelector(selectCurrentVendor);\n\n // deprecated\n // const handleUnsubscribe = () => {\n // const subscription = subscriptions.find(\n // (currentSubscription: Subscription) =>\n // currentSubscription.paymentPlanId === plan.id &&\n // currentSubscription.isActive &&\n // currentSubscription.vendorId === currentVendor.id\n // );\n // const unsubscribeCommand: CommandConfirmation = {\n // title: 'Cancel subscription',\n // subject: { name: plan.name, type: 'Subscription' },\n // description: 'Are you sure you wish to cancel your subscription?',\n // buttonVariant: AdoptechButtonVariant.Warning,\n // onConfirm: () => {\n // dispatch(deleteSubscription(subscription.id));\n // },\n // };\n // command(unsubscribeCommand);\n // };\n\n const handleSubscribe = useHandleSubscribe();\n\n // deprecated\n // const upgradeOrDowngradeCommand: CommandConfirmation = {\n // title: 'Confirm the action',\n // subject: { name: [plan.name, priceLabel(price)].join(' '), type: 'Plan' },\n // description:\n // 'Please confirm you wish to change your plan. Charges will be applied immediately on a pro-rata basis',\n // buttonVariant: AdoptechButtonVariant.Warning,\n // onConfirm: () => {\n // handleUpgradeOrDowngrade();\n // },\n // };\n // const handleUpgradeOrDowngrade = () => {\n // dispatch(\n // updateSubscription({\n // subscriptionId: activeSubscription?.id,\n // paymentPlanId: plan.id,\n // paymentPeriod,\n // onSuccess: () => {\n // dispatch(\n // showGlobalToast(\n // `Your subscription was successfully ${buttonLabel().toLowerCase()}d.`\n // )\n // );\n // },\n // })\n // );\n // };\n const handleButtonClick = () => {\n const label = buttonLabel();\n\n switch (label) {\n case 'Subscribe':\n handleSubscribe({ plan, paymentPeriod });\n break;\n case 'Talk to Sales':\n sendAnalytics('add_payment_info');\n openChatWidget();\n break;\n // deprecated\n // case 'Upgrade':\n // command(upgradeOrDowngradeCommand);\n // break;\n // case 'Downgrade':\n // command(upgradeOrDowngradeCommand);\n // break;\n // case 'Unsubscribe':\n // handleUnsubscribe();\n // break;\n }\n };\n\n return (\n \n {isActive &&
Subscribed
}\n
\n
{plan.name}
\n
{plan.summary}
\n
\n {priceLabel(price, { showAnnualPrice })}\n
\n
{plan.subheader}
\n
\n
\n \n
\n
\n Start-up & Charity discounts available\n
\n \n {buttonLabel()}\n \n
\n {\n command(null);\n }}\n />\n
\n \n );\n};\n","import React from 'react';\nimport { NoDataText } from '../../../components/NoDataText/NoDataText';\nimport './NoValidRoleText.scss';\nimport { openChatWidget } from '../../../functions/chatWidgetHelper';\nimport { faExternalLink } from '@fortawesome/pro-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\ninterface NoValidRoleText {\n role?: string;\n}\nexport const NoValidRoleText: React.FC = props => {\n const baseCss = 'NoValidRoleText';\n const roleDetails = props.role ? `(${props.role})` : '';\n const message = `You need to have a valid role ${roleDetails} to view this page.`;\n return (\n <>\n \n {\n e.preventDefault();\n openChatWidget();\n }}\n >\n Chat with the team\n \n \n \n );\n};\nexport default NoValidRoleText;\n","import React from 'react';\nimport { VendorProductIndexFeatures } from '../../../swagger/models/VendorProductIndexFeatures';\nimport { PaymentLandingPage } from '../../../components/payment/PaymentLandingPage/PaymentLandingPage';\nimport { push } from 'connected-react-router';\nimport { manageSubscriptionRoute } from '../../../components/Routes/Routes';\nimport { useCanFeature } from '../../../functions/access';\nimport { AccessObject } from '../../../types/accessObject';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { isProductPaid } from '../../../components/MainMenuItems/mainMenuConfig';\nimport { selectVendorProductsFeatures } from '../../../selectors/pricing/selectVendorProductsFeatures';\nimport NoValidRoleText from '../NoValidRoleText/NoValidRoleText';\n\ninterface PaymentLandingPageDisplayerProps {\n type: keyof VendorProductIndexFeatures;\n}\n\nconst mapFeatureToAccessObject = (\n type: keyof VendorProductIndexFeatures\n): keyof typeof AccessObject => {\n const map: Partial<\n Record\n > = {\n pestel: 'pestel',\n legalRegister: 'legal_register',\n vendorRegister: 'vendor_register',\n riskRegister: 'risk_register',\n assessments: 'assessments',\n audits: 'audits',\n complianceFrameworks: 'frameworks',\n escrow: 'escrow',\n profile: 'company_manage',\n agreements: 'agreements',\n dataRoom: 'data_room_entities',\n checklists: 'checklists',\n policies: 'vendor_policies',\n people: 'people',\n calendar: 'calendar',\n reports: 'reports',\n integrations: 'integrations',\n companyDocuments: 'company_documents',\n controls: 'controls',\n tasks: 'tasks',\n dashboard: 'dashboard',\n };\n\n return map[type];\n};\n// TODO: use this component only in Routes except complicated cases like assessments\n// to avoid \"page logic/api requests\" on landing page\nexport const PaymentLandingPageChecker: React.FC<\n PaymentLandingPageDisplayerProps\n> = props => {\n const dispatch = useDispatch();\n const features = useSelector(selectVendorProductsFeatures);\n const accessObjectKey = mapFeatureToAccessObject(props.type);\n const skipAccessChecks = [\n 'assessments',\n 'vendor_policies',\n 'integrations',\n 'data_room_entities',\n 'company_manage',\n 'companyDocuments',\n 'calendar',\n 'controls',\n 'tasks',\n 'dashboard',\n ];\n\n const hasAccess = useCanFeature(AccessObject[accessObjectKey]);\n if (!skipAccessChecks.includes(accessObjectKey) && !hasAccess) {\n return (\n <>\n \n \n );\n }\n\n return isProductPaid(props.type, features) ? (\n <>{props.children}\n ) : (\n dispatch(push(manageSubscriptionRoute))}\n />\n );\n};\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport {\n SharedPaymentPeriod,\n PaymentPlanVendor,\n PaymentPlan,\n} from '../../../swagger';\nimport { PricingState } from './pricingState';\n\nexport interface UpdateDynamicPriceSuccessProps {\n planId: string;\n priceValue: number;\n paymentPeriod: SharedPaymentPeriod;\n}\n\nconst pricingSlice = createSlice({\n initialState: {\n isUpdatingSubscription: false,\n paymentPlanVendors: [],\n showAutoSaveToast: false,\n subscriptionDetails: {\n paymentPeriod: SharedPaymentPeriod.Monthly,\n },\n } as unknown as PricingState,\n name: 'pricingSlice',\n reducers: {\n createPaymentPlanVendorRequest: state => {\n state.createPaymentPlanVendorError = undefined;\n state.isCreatingPaymentPlanVendor = true;\n },\n // not used\n createPaymentPlanVendorSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.creatingPaymentPlanVendorId = action.payload.id;\n state.isCreatingPaymentPlanVendor = false;\n },\n createPaymentPlanVendorFailure: (state, action: PayloadAction) => {\n state.createPaymentPlanVendorError = action.payload;\n state.isCreatingPaymentPlanVendor = false;\n },\n createStripeCheckoutFailure: (state, action: PayloadAction) => {\n state.createPaymentPlanVendorError = action.payload;\n },\n updateSubscriptionRequest: state => {\n state.isUpdatingSubscription = true;\n state.updateSubscriptionError = undefined;\n },\n updateSubscriptionSuccess: state => {\n state.isUpdatingSubscription = false;\n },\n updateSubscriptionFailure: (state, action: PayloadAction) => {\n state.isUpdatingSubscription = false;\n state.updateSubscriptionError = action.payload;\n },\n setShowSubscriptionWarningModal: (\n // TODO: implement modal after subscription restrictions\n state,\n action: PayloadAction\n ) => {\n state.showSubscriptionWarningModal = action.payload;\n },\n setSubscriptionDetails: (\n state,\n action: PayloadAction\n ) => {\n state.subscriptionDetails = action.payload;\n },\n\n getDynamicPriceRequestStatus: (\n state,\n action: PayloadAction\n ) => {\n state.getDynamicPriceRequestStatus = action.payload;\n },\n\n outdatedActiveSubscriptionFailure: (\n state,\n action: PayloadAction\n ) => {},\n fetchPaymentPlansRequest: state => {\n state.isFetchingPaymentPlans = true;\n },\n fetchPaymentPlansSuccess: (state, action: PayloadAction) => {\n state.paymentPlans = action.payload;\n state.isFetchingPaymentPlans = false;\n },\n fetchPaymentPlansFailure: (state, action: PayloadAction) => {\n state.isFetchingPaymentPlans = false;\n state.fetchingPaymentPlansError = action.payload;\n },\n updateDynamicPlanPriceSuccess: (\n state,\n action: PayloadAction\n ) => {\n const { planId, priceValue, paymentPeriod } = action.payload;\n\n const plan = state.paymentPlans.find(\n paymentPlan => paymentPlan.id === planId\n );\n const isAnnualy = paymentPeriod === SharedPaymentPeriod.Annually;\n\n if (isAnnualy) {\n plan.annuallyPrice = priceValue;\n plan.monthlyPrice = null;\n } else {\n plan.annuallyPrice = null;\n plan.monthlyPrice = priceValue;\n }\n },\n },\n});\n\nexport const {\n createPaymentPlanVendorRequest,\n createPaymentPlanVendorSuccess,\n createPaymentPlanVendorFailure,\n createStripeCheckoutFailure,\n updateSubscriptionFailure,\n updateSubscriptionRequest,\n updateSubscriptionSuccess,\n setShowSubscriptionWarningModal,\n setSubscriptionDetails,\n getDynamicPriceRequestStatus,\n outdatedActiveSubscriptionFailure,\n fetchPaymentPlansRequest,\n fetchPaymentPlansSuccess,\n fetchPaymentPlansFailure,\n updateDynamicPlanPriceSuccess,\n} = pricingSlice.actions;\n\nexport default pricingSlice.reducer;\n","import { loadStripe } from '@stripe/stripe-js';\nimport { getMetaContent } from '../../../functions/getMetaContent';\nimport { UNKNOWN_ERROR } from '../../../types/constants';\nimport { VoidThunk } from '../../../types/voidThunk';\nimport {\n createPaymentPlanVendorFailure,\n createPaymentPlanVendorRequest,\n createStripeCheckoutFailure,\n fetchPaymentPlansFailure,\n fetchPaymentPlansRequest,\n fetchPaymentPlansSuccess,\n updateSubscriptionFailure,\n updateSubscriptionRequest,\n updateSubscriptionSuccess,\n} from './pricingSlice';\nimport { api } from '../../../api/api';\nimport { fetchSubscriptions } from '../../../store/user/userThunks';\nimport { RecurringPaymentCheckoutCreatePayload } from '../../../swagger/models/RecurringPaymentCheckoutCreatePayload';\nimport { getErrorMessage } from '../../../store/helpers/thunkHelpers';\nimport { PaymentPlanVendorCheckoutCreatePayload } from '../../../swagger/models/PaymentPlanVendorCheckoutCreatePayload';\nimport { showWarningSubscriptionLimitModal } from '../../../store/vendors/vendorsSlice';\nimport { SharedPaymentPeriod } from '../../../swagger';\nimport { getApiErrorMessage } from '../../../functions/getApiErrorMessage';\nimport {\n fetchVendors,\n getVendorProducts,\n} from '../../../store/vendors/vendorsThunks';\n\nexport const createCheckoutSession =\n ({\n priceId,\n purchasableId,\n purchasableType,\n }: {\n priceId: string;\n planId: string;\n is_monthly: boolean;\n is_annually: boolean;\n purchasableId: string;\n purchasableType: string;\n single?: boolean;\n }): VoidThunk =>\n async (dispatch, getState) => {\n // TODO: remove this if one-time payment backend will be removed\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n\n dispatch(createPaymentPlanVendorRequest());\n\n const payload = JSON.stringify({\n vendor_id: vendorId,\n price_id: priceId,\n purchasable_id: purchasableId,\n purchasable_type: purchasableType,\n });\n const response = await fetch(`/api/v1/create_stripe_product`, {\n body: payload,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': getMetaContent('csrf-token'),\n },\n method: 'POST',\n });\n\n if (response.status === 201) {\n const respJson = await response.json();\n\n const stripePromise = loadStripe(respJson['stripe_key']);\n const stripe = await stripePromise;\n\n stripe.redirectToCheckout({\n sessionId: respJson['sessionId'],\n });\n } else {\n dispatch(\n createStripeCheckoutFailure(\n 'An unexpected error occured, please try again later'\n )\n );\n }\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while checkout product or plan. Please try again or contact support.'\n );\n console.log(err);\n dispatch(createPaymentPlanVendorFailure(apiErrorMessage));\n }\n }\n };\n\nexport const createPlanCheckoutSubscription =\n (\n params: Omit\n ): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n\n dispatch(createPaymentPlanVendorRequest());\n\n const requestParams = { ...params, vendorId: vendorId };\n\n const response = await api().createStripeSessionPost({\n body: requestParams,\n });\n\n const { stripeKey, sessionId } = response;\n const stripePromise = loadStripe(stripeKey);\n const stripe = await stripePromise;\n stripe.redirectToCheckout({ sessionId });\n } catch (err) {\n if (err instanceof Response && err.status == 402) {\n dispatch(showWarningSubscriptionLimitModal());\n dispatch(createPaymentPlanVendorFailure(null));\n return;\n }\n\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while checkout product. Please try again or contact support.'\n );\n dispatch(createPaymentPlanVendorFailure(apiErrorMessage));\n }\n };\n\nexport const createProductsCheckoutSession =\n (\n params: Omit\n ): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n\n dispatch(createPaymentPlanVendorRequest());\n\n const requestParams = { ...params, vendorId: vendorId };\n\n const response = await api().createStripeRecurringPaymentPost({\n body: requestParams,\n });\n\n const { stripeKey, sessionId } = response;\n const stripePromise = loadStripe(stripeKey);\n const stripe = await stripePromise;\n stripe.redirectToCheckout({ sessionId });\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while checkout product. Please try again or contact support.'\n );\n console.log(err);\n dispatch(createPaymentPlanVendorFailure(apiErrorMessage));\n }\n }\n };\n\ninterface UpdateSubscriptionPriceProps {\n subscriptionId: string;\n paymentPlanId: string;\n paymentPeriod: SharedPaymentPeriod;\n onSuccess?: () => void;\n onFinish?: () => void;\n}\nexport const updateSubscription =\n ({\n subscriptionId,\n paymentPlanId,\n paymentPeriod,\n onSuccess,\n onFinish,\n }: UpdateSubscriptionPriceProps): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(updateSubscriptionRequest());\n await api().subscriptionsIdPatch({\n id: subscriptionId,\n body: {\n paymentPlanId,\n paymentPeriod,\n },\n });\n await Promise.all([\n dispatch(fetchVendors()),\n dispatch(fetchSubscriptions()),\n dispatch(getVendorProducts(true)),\n ]);\n\n dispatch(updateSubscriptionSuccess());\n\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n if (err.status == 402) {\n dispatch(showWarningSubscriptionLimitModal());\n dispatch(updateSubscriptionFailure(null));\n return;\n }\n\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred updating your subscription. Please try again or contact support.'\n );\n dispatch(updateSubscriptionFailure(apiErrorMessage));\n } else {\n dispatch(updateSubscriptionFailure(UNKNOWN_ERROR));\n }\n console.log(err);\n } finally {\n onFinish && onFinish();\n }\n };\n\nexport const fetchPaymentPlans = (): VoidThunk => async dispatch => {\n try {\n dispatch(fetchPaymentPlansRequest());\n const result = await api().paymentPlansGet();\n dispatch(fetchPaymentPlansSuccess(result));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchPaymentPlansFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchPaymentPlansFailure(\n 'An error occurred fetching payment plans. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchPaymentPlansFailure(UNKNOWN_ERROR));\n }\n }\n};\n","import React from 'react';\nimport './CertificationsSection.scss';\nimport { TrustHubSectionProps } from '../CompanyDetailsSection/CompanyDetailsSection';\nimport { DocumentsSection } from '../DocumentsSection/DocumentsSection';\n\nexport const CertificationsSection: React.FC = ({\n isEditable,\n sections,\n onDocumentClick,\n showDocumentDownloadIcon,\n}) => {\n return (\n \n );\n};\n","import React from 'react';\nimport './ColorHeader.scss';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { TrusthubSettingsModel } from '../../../swagger/trusthub/models/TrusthubSettingsModel';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { push } from 'connected-react-router';\nimport { dashboardRoute } from '../../../components/Routes/Routes';\nimport { faAngleLeft } from '@fortawesome/pro-solid-svg-icons/faAngleLeft';\nimport { TrusthubColorsList } from '../admin/TrustHubSettingsDrawer/TrustHubSettingsDrawer';\n\nconst backgroundColor = (settings: TrusthubSettingsModel) => {\n if (!settings.brandingColor) return null;\n if (!settings.useColourGradient) return settings.brandingColor;\n const gradientProps = [\n '90deg',\n '#EBF5FF 0%',\n `${settings.brandingColor} 100%`,\n ].join(', ');\n const gradient = `linear-gradient(${gradientProps})`;\n return gradient;\n};\n\ninterface ColorHeaderProps {\n showBackButton: boolean;\n buttons?: JSX.Element;\n}\n\nexport const ColorHeader: React.FC = props => {\n const baseCss = 'trusthub-top-bar';\n const { settings } = useSelector((state: ApplicationState) => state.trustHub);\n const dispatch = useDispatch();\n const blackColor = [...TrusthubColorsList].pop();\n const defaultGreyColor = '#999995';\n const isLogoUploaded = settings.logo && settings.logo.urls.full;\n const placeholderColor = isLogoUploaded\n ? settings.brandingColor === blackColor\n ? '#fff'\n : blackColor\n : defaultGreyColor;\n return (\n
\n
\n
\n {props.showBackButton && (\n dispatch(push(dashboardRoute))}\n className={baseCss + '--backSectionLink'}\n icon={faAngleLeft}\n />\n )}\n\n {settings.logo && settings.logo.urls.full ? (\n
\n \n
\n ) : (\n
\n
Company Logo
\n
\n )}\n
\n\n
{props.buttons}
\n
\n
\n );\n};\n","import React, { useState } from 'react';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { AdoptechTextInput } from '../../../../components/AdoptechTextInput/AdoptechTextInput';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faEnvelope } from '@fortawesome/pro-light-svg-icons/faEnvelope';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../components/AdoptechButton/AdoptechButton';\nimport { updateTrustHubSettings } from '../../store/trusthubThunks';\nimport { AdoptechTextArea } from '../../../../components/AdoptechTextArea/AdoptechTextArea';\nimport classNames from 'classnames';\nimport { TrustHubSectionProps } from '../../CompanyDetailsSection/CompanyDetailsSection';\nimport { selectCurrentVendor } from '../../../../selectors/selectCurrentVendor';\n\ninterface CompanyDetailsEditSectionProps {\n onClose: () => void;\n settings: TrustHubSectionProps['settings'];\n}\n\nexport const CompanyDetailsEditSection: React.FC<\n CompanyDetailsEditSectionProps\n> = ({ settings, onClose }) => {\n const baseCss = 'companyDetailsSection';\n const [companyEmail, setCompanyEmail] = useState(settings.email);\n const [companyDescription, setCompanyDescription] = useState(\n settings.description\n );\n\n const vendor = useSelector(selectCurrentVendor);\n\n const { updateSettingsStatus } = useSelector(\n (state: ApplicationState) => state.trustHub\n );\n const dispatch = useDispatch();\n\n return (\n
\n
\n
\n
\n
\n
\n \n
\n setCompanyEmail(e.currentTarget.value)}\n />\n
\n
\n
\n
\n
\n onClose()}\n variant={AdoptechButtonVariant.White}\n >\n Cancel\n \n {\n const payload = {\n email: companyEmail,\n description: companyDescription,\n vendorIdOrDomain: vendor.id,\n };\n\n dispatch(updateTrustHubSettings(payload, () => onClose()));\n }}\n variant={AdoptechButtonVariant.White}\n >\n Save\n \n
\n
\n
\n setCompanyDescription(e.currentTarget.value)}\n hasError={!companyDescription}\n />\n
\n
\n
\n );\n};\n","import React, { useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport './CompanyDetailsSection.scss';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { faPencil } from '@fortawesome/pro-light-svg-icons/faPencil';\nimport { faEnvelope } from '@fortawesome/pro-light-svg-icons/faEnvelope';\nimport classNames from 'classnames';\nimport { TrusthubSettingsModel } from '../../../swagger/trusthub/models/TrusthubSettingsModel';\nimport { Interweave } from 'interweave';\nimport { CompanyDetailsEditSection } from '../admin/CompanyDetailsEditSection/CompanyDetailsEditSection';\nimport { TrusthubSectionModel } from '../../../swagger/trusthub/models/TrusthubSectionModel';\nimport { TrusthubDocumentModel } from '../../../swagger/trusthub/models/TrusthubDocumentModel';\nimport { faList } from '@fortawesome/pro-light-svg-icons/faList';\n\nexport interface TrustHubSectionProps {\n sections: TrusthubSectionModel[];\n isEditable: boolean; // show/hide Edit button\n settings: TrusthubSettingsModel;\n onDocumentClick?: (document: TrusthubDocumentModel) => void;\n showDocumentDownloadIcon: boolean;\n identifier?: string;\n}\n\ntype CompanyDetailsSectionProps = Omit<\n Omit,\n 'showDocumentDownloadIcon'\n>;\n\nexport const CompanyDetailsSection: React.FC = ({\n isEditable,\n settings,\n}) => {\n const baseCss = 'companyDetailsSection';\n // Modes: noData, edit, show\n const isNoDataMode = !settings.description;\n const [isEditMode, setIsEditMode] = useState(false);\n\n if (isEditMode)\n return (\n setIsEditMode(false)}\n />\n );\n\n return (\n \n
\n
\n
{[settings.name, 'TrustHub'].join(' ')}
\n
\n
\n
\n
\n
\n
\n
\n \n
\n {settings.email || 'Company Email'}\n
\n
\n
\n
\n {isEditable && (\n
\n setIsEditMode(true)}\n >\n Edit\n \n
\n )}\n
\n
\n \n
\n
\n \n );\n};\n","import React, { useState } from 'react';\nimport { TrusthubDocumentModel } from '../../../swagger/trusthub';\nimport { AdoptechCheckbox } from '../../../components/AdoptechCheckbox/AdoptechCheckbox';\nimport {\n AdoptechTooltip,\n AdoptechTooltipVariant,\n} from '../../../components/AdoptechTooltip/AdoptechTooltip';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n faPlayCircle,\n faPencil,\n faTrash,\n} from '@fortawesome/pro-light-svg-icons';\nimport { useDrag, useDrop } from 'react-dnd';\nimport classNames from 'classnames';\nimport {\n EditSectionHandlerType,\n TrusthubFormDocument,\n} from '../admin/useEditTrustHubSection';\nimport AdoptechOverflowLine from '../../../components/AdoptechOverflowLine/AdoptechOverflowLine';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { AdoptechTextArea } from '../../../components/AdoptechTextArea/AdoptechTextArea';\n\ninterface ControlRowProps {\n control: TrusthubDocumentModel;\n baseCss: string;\n\n // props for edit\n isEditableChecked?: boolean;\n formDocument?: TrusthubFormDocument;\n isDragging?: boolean;\n showTooltip: boolean;\n dropAllowed: boolean;\n dragAllowed: boolean;\n editSectionHandler: EditSectionHandlerType;\n}\n\nexport const ControlRow: React.FC = ({\n control,\n baseCss,\n isEditableChecked, // used for edit checked\n isDragging, // used for edit\n showTooltip,\n dragAllowed,\n dropAllowed,\n editSectionHandler,\n}) => {\n const [editDescriptionMode, setEditDescriptionMode] = useState(false);\n\n const editDescriptionAllowed = dragAllowed;\n const {\n handleDeleteControl,\n handleCheckboxChange,\n handleAddControlsToRow,\n updateDocumentField,\n formDocuments,\n } = editSectionHandler;\n\n const formDocument = (formDocuments || []).find(\n formDoc => formDoc.documentId === control?.documentId\n );\n const [formDescription, setFormDescription] = useState(\n formDocument?.description\n );\n // drop needed for right panel only\n const [{ isOver }, dropRef] = useDrop(\n () => ({\n accept: 'TrusthubControls',\n drop: (controlIds: string[]) => {\n const rowTargetRowOrder = control.rowOrder;\n const categoryId = control.trusthubCategoryId;\n handleAddControlsToRow({\n categoryId,\n controlIds,\n rowTargetRowOrder,\n });\n },\n collect: monitor => ({\n isOver: monitor.isOver(),\n }),\n canDrop: () => {\n return dropAllowed;\n },\n }),\n [control?.rowOrder, control?.trusthubCategoryId]\n );\n\n // for dragging between categories / inside category\n const [{ isDragging: isDraggingCurrent }, dragRef, _dragPreview] = useDrag(\n () => ({\n type: 'TrusthubControls',\n item: () => {\n return [control.documentId];\n },\n collect: monitor => ({\n isDragging: monitor.isDragging(),\n }),\n canDrag: () => {\n return dragAllowed && !editDescriptionMode;\n },\n }),\n [control?.documentId, dragAllowed, editDescriptionMode]\n );\n\n const handleEdit = () => {\n setEditDescriptionMode(true);\n };\n\n if (!control) return null;\n\n const handleRemove = () => {\n handleDeleteControl(control.documentId);\n };\n\n const isDraggable = isDragging && formDocument.checked;\n\n const descriptionIsEmpty = (formDescription || '').length === 0;\n const handleFormDescriptionSave = () => {\n updateDocumentField(control.documentId, 'description', formDescription);\n setEditDescriptionMode(false);\n };\n const handleCancel = () => {\n setFormDescription(formDocument?.description);\n setEditDescriptionMode(false);\n };\n return (\n
\n
\n {\n e.preventDefault();\n isEditableChecked &&\n handleCheckboxChange(\n !formDocument.checked,\n control as TrusthubDocumentModel\n );\n }}\n >\n
\n {isEditableChecked && (\n {\n e.stopPropagation();\n handleCheckboxChange(\n e.currentTarget.checked,\n control as TrusthubDocumentModel\n );\n }}\n label={
-
}\n />\n )}\n\n \n \n \n\n \n {control.name}\n \n
\n \n {editDescriptionMode ? (\n
\n \n Cancel\n \n \n Save\n \n
\n ) : (\n editDescriptionAllowed && (\n <>\n \n \n \n )\n )}\n
\n {editDescriptionMode && (\n
\n
\n This text appears when viewers hover over the Control, by\n default this is the original Control description text.{' '}\n Please note changing this text does affect the original\n Control description.\n
\n\n {\n setFormDescription(e.currentTarget.value);\n }}\n hasError={descriptionIsEmpty}\n />\n
\n )}\n
\n \n \n );\n};\n","import React, { CSSProperties } from 'react';\nimport './ControlsEditSection.scss';\nimport { useDragLayer, XYCoord } from 'react-dnd';\n\nconst layerStyles: CSSProperties = {\n position: 'fixed',\n pointerEvents: 'none',\n zIndex: 100,\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n opacity: 0.5,\n};\n\nconst getItemStyles = (\n initialCursorOffset: XYCoord,\n initialOffset: XYCoord,\n currentOffset: XYCoord\n) => {\n if (!initialOffset || !currentOffset || !initialCursorOffset) {\n return {\n display: 'none',\n };\n }\n\n const x = initialCursorOffset.x + (currentOffset.x - initialOffset.x);\n const y = initialCursorOffset.y + (currentOffset.y - initialOffset.y);\n const transform = `translate(${x}px, ${y}px)`;\n\n return {\n transform,\n WebkitTransform: transform,\n };\n};\ninterface ControlDragPreviewProps {\n baseCss: string;\n list: React.ReactNode[];\n}\n\n// Custom drag preview to display only selected controls\nexport const ControlDragPreview: React.FC = ({\n baseCss,\n list,\n}) => {\n const {\n isDragging,\n initialCursorOffset,\n initialFileOffset,\n currentFileOffset,\n } = useDragLayer(monitor => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialCursorOffset: monitor.getInitialClientOffset(),\n initialFileOffset: monitor.getInitialSourceClientOffset(),\n currentFileOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n }));\n\n if (!isDragging) {\n return null;\n }\n\n return (\n
\n \n
{list}
\n
\n \n );\n};\n","import React, { useEffect, useMemo } from 'react';\nimport './ControlsEditSection.scss';\nimport { AdoptechCheckbox } from '../../../../components/AdoptechCheckbox/AdoptechCheckbox';\nimport { AdoptechReactSelect } from '../../../../components/AdoptechReactSelect/AdoptechReactSelect';\nimport { reactSelectLightStyleSmall } from '../../../../functions/reactSelectCustomTheme';\nimport {\n EditSectionHandlerType,\n TrusthubFormDocument,\n} from '../useEditTrustHubSection';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useDrag } from 'react-dnd';\nimport { SelectionOption } from '../../../../types/selectionOption';\nimport { ControlRow } from '../../ControlsSection/ControlRow';\nimport { ControlDragPreview } from './ControlDragPreview';\n\nexport const ControlEditLeftPanel: React.FC<{\n baseCss: string;\n frameworksFilterOptions: SelectionOption[];\n handleFrameworksFilterChange: (e: { value: any }) => void;\n selectedFrameworkName: string | null;\n editSectionHandler: EditSectionHandlerType;\n}> = ({\n baseCss,\n frameworksFilterOptions,\n handleFrameworksFilterChange,\n selectedFrameworkName,\n editSectionHandler,\n}) => {\n const {\n handleCheckboxAllChange,\n sortedDocsToEdit,\n handleCheckboxChange,\n formDocuments: allFormDocuments,\n } = editSectionHandler;\n\n const formDocuments = allFormDocuments.filter(doc => !doc.trusthubCategoryId);\n\n const sectionDoc = (doc: { documentId: any }) =>\n sortedDocsToEdit.find(sortedDoc => sortedDoc.documentId === doc.documentId);\n\n const leftPanelControls = formDocuments\n .filter(control => !control.trusthubCategoryId)\n .filter(control =>\n selectedFrameworkName\n ? sectionDoc(control)?.extra?.frameworkName === selectedFrameworkName\n : true\n );\n\n const controlsIdsToDrag = formDocuments\n .filter(control => control.checked)\n .map(control => control.documentId);\n\n const [{ isDragging }, drag, preview] = useDrag(\n () => ({\n type: 'TrusthubControls', // uniq name for controls drag and drop\n item: () => {\n return controlsIdsToDrag;\n },\n collect: monitor => ({\n isDragging: monitor.isDragging(),\n }),\n canDrag: () => {\n return controlsIdsToDrag.length > 0;\n },\n }),\n [formDocuments]\n );\n\n useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n }, []);\n\n const leftPanelControlsList = (\n items: TrusthubFormDocument[]\n ): React.ReactNode[] => {\n return items.map(doc => {\n return (\n sortedDoc.documentId === doc.documentId\n )}\n baseCss={baseCss}\n isEditableChecked\n isDragging={isDragging}\n editSectionHandler={editSectionHandler}\n dropAllowed={false}\n dragAllowed={false}\n />\n );\n });\n };\n // limit preview height to fix chrome performance issues\n const DRAG_PREVIEW_LIMIT = 15;\n const leftPanelList = leftPanelControlsList(leftPanelControls);\n const leftPanelPreviewList = leftPanelControlsList(\n leftPanelControls.filter(doc => doc.checked).slice(0, DRAG_PREVIEW_LIMIT)\n );\n return (\n
\n
\n Drag and drop controls to the category sections on the right hand side\n to make them visible on TrustHub.\n
\n\n
\n
\n control.checked)}\n onChange={() => {\n const filterIds = leftPanelControls.map(\n control => control.documentId\n );\n handleCheckboxAllChange({ filterIds });\n }}\n label=\"Select all\"\n disabled={leftPanelControls.length === 0}\n />\n\n option.value === selectedFrameworkName\n )}\n additionalStyling={reactSelectLightStyleSmall}\n />\n
\n
\n {leftPanelList}\n
\n \n
\n
\n );\n};\n","import React from 'react';\nimport './ControlsSection.scss';\nimport { Accordion } from 'react-bootstrap';\nimport { AdoptechAccordionCard } from '../../../components/AdoptechAccordionCard/AdoptechAccordionCard';\nimport { TrusthubDocumentModel } from '../../../swagger/trusthub';\nimport {\n EditSectionHandlerType,\n TrusthubFormDocument,\n} from '../admin/useEditTrustHubSection';\nimport { useDrop } from 'react-dnd';\nimport { ControlRow } from './ControlRow';\n\ninterface ControlCategoryRowProps {\n title: string;\n controls: TrusthubDocumentModel[];\n categoryId: string;\n baseCss: string;\n color: 'dark' | 'white';\n isEditable?: boolean;\n editSectionHandler: EditSectionHandlerType;\n dragAllowed: boolean;\n dropAllowed: boolean;\n showTooltip: boolean;\n}\n\nexport const ControlCategoryRow: React.FC = ({\n title,\n controls,\n categoryId,\n baseCss,\n color,\n isEditable,\n editSectionHandler,\n dragAllowed,\n dropAllowed,\n showTooltip,\n}) => {\n const { handleAddControlsToCategory } = editSectionHandler;\n const [{ isOver }, dropRef] = useDrop(\n () => ({\n accept: 'TrusthubControls',\n drop: (controlIds: string[], monitor) => {\n if (!monitor.isOver({ shallow: false })) {\n return;\n }\n handleAddControlsToCategory({\n categoryId,\n controlIds,\n });\n },\n collect: monitor => ({\n isOver: monitor.isOver(),\n }),\n }),\n [categoryId, isEditable]\n );\n\n return (\n \n \n {controls.length === 0 &&
No controls added
}\n {controls.map((control, i) => (\n \n ))}\n \n
\n );\n};\n","import React from 'react';\nimport './ControlsEditSection.scss';\nimport { EditSectionHandlerType } from '../useEditTrustHubSection';\nimport { ControlCategoryRow } from '../../ControlsSection/ControlCategoryRow';\n\nexport const ControlEditRightPanel: React.FC<{\n baseCss: string;\n editSectionHandler: EditSectionHandlerType;\n}> = ({ baseCss, editSectionHandler }) => {\n const { formCategories, sortedDocsToEdit, formDocuments } =\n editSectionHandler;\n return (\n
\n
\n Drag controls between categories, and edit the hover text if required.\n
\n
\n
\n {formCategories\n .sort((a, b) => a.rowOrder - b.rowOrder)\n .map(category => {\n return (\n {\n const formDoc = formDocuments.find(\n formDocument =>\n formDocument.documentId === sortedDoc.documentId &&\n formDocument.trusthubCategoryId === category.id\n );\n\n if (!formDoc) return null;\n return {\n ...sortedDoc,\n ...{\n rowOrder: formDoc.rowOrder,\n trusthubCategoryId: formDoc.trusthubCategoryId,\n },\n };\n })\n .filter(doc => doc)\n .sort((a, b) => a.rowOrder - b.rowOrder)}\n categoryId={category.id.toString()}\n baseCss={baseCss}\n />\n );\n })}\n
\n
\n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { LoadingSpinner } from '../../../../components/LoadingSpinner/LoadingSpinner';\n\nimport { CertificatesEditSectionProps } from '../EditSectionRow/EditSectionRow';\nimport './ControlsEditSection.scss';\nimport { uniqArrayObjects } from '../../../../functions/uniqueArrayObjects';\nimport { useSelector } from 'react-redux';\nimport { selectCurrentVendor } from '../../../../selectors/selectCurrentVendor';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { DndProvider } from 'react-dnd';\nimport { ControlEditLeftPanel } from './ControlEditLeftPanel';\nimport { ControlEditRightPanel } from './ControlEditRightPanel';\n\nexport const ControlsEditSection: React.FC = ({\n titleBar,\n editSectionHandler,\n baseCss,\n}) => {\n const {\n fetchingCurrentSection,\n fetchCurrentSection,\n formDocuments,\n handleDeselectAll,\n fetchCategories,\n sortedDocsToEdit,\n } = editSectionHandler;\n const vendor = useSelector(selectCurrentVendor);\n useEffect(() => {\n fetchCurrentSection();\n fetchCategories(vendor.id);\n }, []);\n\n const sectionDoc = (doc: { documentId: any }) =>\n sortedDocsToEdit.find(sortedDoc => sortedDoc.documentId === doc.documentId);\n const frameworksFilterOptions = [\n { value: null, label: 'Filter frameworks' },\n ...uniqArrayObjects(\n formDocuments.map(doc => {\n return {\n value: sectionDoc(doc)?.extra?.frameworkName,\n label: sectionDoc(doc)?.extra?.frameworkName,\n };\n }),\n 'value'\n ).sort((a, b) => (a.value < b.value ? -1 : 1)),\n ];\n const [selectedFrameworkName, setSelectedFrameworkName] = useState(null);\n const handleFrameworksFilterChange = (e: { value: any }) => {\n setSelectedFrameworkName(e.value);\n handleDeselectAll();\n };\n\n return (\n
\n
\n {titleBar}\n {fetchingCurrentSection && }\n {!fetchingCurrentSection && (\n \n
\n \n \n
\n
\n )}\n
\n
\n );\n};\n","import React, { useEffect } from 'react';\nimport './ControlsSection.scss';\nimport { TrustHubSectionProps } from '../CompanyDetailsSection/CompanyDetailsSection';\nimport { useTrustHubSection } from '../useTrustHubSection';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport { ControlsEditSection } from '../admin/ControlsEditSection/ControlsEditSection';\nimport { currentTrustHubDomain } from '../user/TrustHubUserPage/TrustHubUserPage';\nimport { selectCurrentVendor } from '../../../selectors/selectCurrentVendor';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { ControlCategoryRow } from './ControlCategoryRow';\n\nexport const ControlsSection: React.FC = ({\n isEditable,\n sections,\n identifier,\n onDocumentClick,\n showDocumentDownloadIcon,\n}) => {\n const {\n isEditMode,\n setIsEditMode,\n section,\n publicDocs,\n baseCss,\n editSectionHandler,\n bulkActionsRow,\n titleBar,\n } = useTrustHubSection({\n identifier,\n sections,\n isEditable,\n confirmOnDelete: true,\n });\n const dispatch = useAppDispatch();\n const { fetchVendorDocumentFileStatus, fetchingVendorDocumentIdFile } =\n useSelector((state: ApplicationState) => state.trustHub);\n\n const { formCategories, fetchCategories } = editSectionHandler;\n const domain = currentTrustHubDomain();\n const vendor = useSelector(selectCurrentVendor);\n useEffect(() => {\n fetchCategories(isEditable ? vendor.id : domain);\n }, []);\n\n if (!section) return null;\n\n if (isEditMode) {\n return (\n setIsEditMode(false)}\n editSectionHandler={editSectionHandler}\n identifier={identifier}\n baseCss={baseCss}\n titleBar={titleBar}\n />\n );\n }\n\n return (\n // dnd provider not used, needed to fix https://github.com/react-dnd/react-dnd/issues/3149\n \n
\n
\n {titleBar}\n
\n {formCategories\n .sort((a, b) => a.rowOrder - b.rowOrder)\n .map(category => {\n return (\n publicDoc.trusthubCategoryId === category.id\n )}\n categoryId={category.id.toString()}\n baseCss={baseCss}\n dragAllowed={false}\n dropAllowed={false}\n editSectionHandler={editSectionHandler}\n showTooltip\n />\n );\n })}\n
\n
\n
\n
\n );\n};\n","import React from 'react';\n\nimport './CertificationsEditSection.scss';\nimport { DocumentsEditSection } from '../DocumentsEditSection/DocumentsEditSection';\nimport { CertificatesEditSectionProps } from '../EditSectionRow/EditSectionRow';\n\nexport const CertificationsEditSection: React.FC<\n CertificatesEditSectionProps\n> = props => {\n return ;\n};\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faLockAlt } from '@fortawesome/pro-light-svg-icons';\nimport { TrustHubSectionProps } from '../CompanyDetailsSection/CompanyDetailsSection';\nimport classNames from 'classnames';\nimport { faCloudDownloadAlt } from '@fortawesome/pro-light-svg-icons/faCloudDownloadAlt';\nimport { LoadingSpinner } from '../../../components/LoadingSpinner/LoadingSpinner';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../types/applicationState';\nimport { TrusthubDocumentModel } from '../../../swagger/trusthub/models/TrusthubDocumentModel';\nimport { DocumentsSection } from '../DocumentsSection/DocumentsSection';\nimport { certificatesLogos } from '../admin/EditSectionRow/EditSectionRow';\nimport { faShieldCheck } from '@fortawesome/pro-light-svg-icons/faShieldCheck';\nimport { faLeaf } from '@fortawesome/pro-light-svg-icons/faLeaf';\n\ninterface SectionRowProps {\n identifier: string;\n baseCss: string;\n doc: TrusthubDocumentModel;\n onDocumentClick: (doc: TrusthubDocumentModel) => void;\n showDocumentDownloadIcon: boolean;\n}\n\nexport const SectionRow: React.FC = ({\n identifier,\n baseCss,\n doc,\n onDocumentClick,\n showDocumentDownloadIcon,\n}) => {\n const { fetchVendorDocumentFileStatus, fetchingVendorDocumentIdFile } =\n useSelector((state: ApplicationState) => state.trustHub);\n\n const isCertificates = baseCss.includes('certificate');\n return (\n onDocumentClick && onDocumentClick(doc)}\n >\n {isCertificates ? (\n \n ) : (\n \n )}\n
{doc.name}
\n {fetchVendorDocumentFileStatus === 'loading' &&\n fetchingVendorDocumentIdFile === doc.id ? (\n \n ) : (\n \n )}\n \n );\n};\n","import React from 'react';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../components/AdoptechButton/AdoptechButton';\nimport { faPencil } from '@fortawesome/pro-light-svg-icons';\nimport classNames from 'classnames';\nimport { useTrustHubSection } from '../useTrustHubSection';\nimport { CertificationsEditSection } from '../admin/CertificationsEditSection/CertificationsEditSection';\nimport { TrusthubDocumentModel } from '../../../swagger/trusthub/models/TrusthubDocumentModel';\nimport { PoliciesEditSection } from '../admin/EditSectionRow/EditSectionRow';\nimport { SectionRow } from '../SectionRow/SectionRow';\n\ninterface DocumentsSectionProps {\n identifier: string;\n isEditable: boolean;\n sections: any[];\n onDocumentClick: (doc: TrusthubDocumentModel) => void;\n showDocumentDownloadIcon: boolean;\n}\n\nexport const DocumentsSection: React.FC = ({\n identifier,\n isEditable,\n sections,\n onDocumentClick,\n showDocumentDownloadIcon,\n}) => {\n const {\n isEditMode,\n setIsEditMode,\n section,\n publicDocs,\n titleBar,\n baseCss,\n editSectionHandler,\n bulkActionsRow,\n } = useTrustHubSection({\n identifier,\n sections,\n isEditable,\n });\n\n if (!section) return null;\n\n return (\n
\n {isEditMode ? (\n identifier === 'certificates' ? (\n setIsEditMode(false)}\n />\n ) : (\n setIsEditMode(false)}\n />\n )\n ) : (\n
\n {titleBar}\n
\n
\n {section.description}\n
\n {isEditable && (\n
\n setIsEditMode(true)}\n variant={AdoptechButtonVariant.White}\n >\n Edit\n \n
\n )}\n
\n {publicDocs.length == 0 && (\n
\n No documents selected to display.\n
\n )}\n {publicDocs.length > 0 && (\n
\n {publicDocs.map(doc => (\n \n ))}\n
\n )}\n
\n )}\n
\n );\n};\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport './DocumentsSection.scss';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../components/AdoptechButton/AdoptechButton';\nimport { faPencil } from '@fortawesome/pro-light-svg-icons/faPencil';\nimport { faLockAlt } from '@fortawesome/pro-light-svg-icons/faLockAlt';\nimport { TrustHubSectionProps } from '../../CompanyDetailsSection/CompanyDetailsSection';\nimport { useTrustHubSection } from '../../useTrustHubSection';\nimport { capitalize } from '../../../../functions/capitalize';\nimport { faCloudDownloadAlt } from '@fortawesome/pro-light-svg-icons/faCloudDownloadAlt';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { LoadingSpinner } from '../../../../components/LoadingSpinner/LoadingSpinner';\nimport classNames from 'classnames';\nimport { faBookAlt } from '@fortawesome/pro-light-svg-icons/faBookAlt';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { TrusthubDocumentModel } from '../../../../swagger/trusthub/models/TrusthubDocumentModel';\nimport {\n draftPoliciesPageRoute,\n reportsRoute,\n} from '../../../../components/Routes/Routes';\nimport { useAppDispatch } from '../../../../hooks/useAppDispatch';\nimport { push } from 'connected-react-router';\nimport { DocumentsEditSection } from '../../admin/DocumentsEditSection/DocumentsEditSection';\nimport { faServer } from '@fortawesome/pro-light-svg-icons/faServer';\n\nexport interface DocumentSectionProps extends TrustHubSectionProps {\n identifier: string;\n}\nexport const InformationSecurityDocumentsSection: React.FC<\n DocumentSectionProps\n> = ({\n isEditable,\n sections,\n identifier,\n onDocumentClick,\n showDocumentDownloadIcon,\n}) => {\n const {\n isEditMode,\n setIsEditMode,\n section,\n publicDocs,\n baseCss,\n editSectionHandler,\n bulkActionsRow,\n } = useTrustHubSection({\n identifier,\n sections,\n isEditable,\n });\n const dispatch = useAppDispatch();\n const { fetchVendorDocumentFileStatus, fetchingVendorDocumentIdFile } =\n useSelector((state: ApplicationState) => state.trustHub);\n if (!section) return null;\n\n if (isEditMode) {\n return (\n setIsEditMode(false)}\n editSectionHandler={editSectionHandler}\n identifier={identifier}\n baseCss={baseCss}\n />\n );\n }\n\n const isReports = identifier === 'reports';\n\n return (\n
\n
\n
\n
\n \n
{capitalize(identifier)}
\n
\n {isEditable && (\n
\n setIsEditMode(true)}\n variant={AdoptechButtonVariant.White}\n >\n Edit\n \n
\n )}\n
\n
\n {publicDocs.map(doc => (\n \n ))}\n
\n
\n
\n );\n};\n\nconst InformationSecurityDocumentsRow: React.FC<{\n doc: TrusthubDocumentModel;\n onDocumentClick: (doc: TrusthubDocumentModel) => void;\n isReports: boolean;\n fetchVendorDocumentFileStatus: string;\n fetchingVendorDocumentIdFile: string;\n showDocumentDownloadIcon: boolean;\n baseCss: string;\n}> = ({\n doc,\n onDocumentClick,\n isReports,\n fetchVendorDocumentFileStatus,\n fetchingVendorDocumentIdFile,\n showDocumentDownloadIcon,\n baseCss,\n}) => {\n return (\n onDocumentClick(doc)}\n >\n
\n {!isReports && }\n {doc.name}\n
\n {fetchVendorDocumentFileStatus === 'loading' &&\n fetchingVendorDocumentIdFile === doc.id ? (\n \n ) : (\n \n )}\n \n );\n};\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport './InformationSecuritySection.scss';\nimport { faLockAlt } from '@fortawesome/pro-light-svg-icons';\nimport { TrustHubSectionProps } from '../CompanyDetailsSection/CompanyDetailsSection';\nimport { InformationSecurityDocumentsSection } from './InformationSecurityDocumentsSection/InformationSecurityDocumentsSection';\n\nexport const InformationSecuritySection: React.FC<\n TrustHubSectionProps\n> = props => {\n const baseCss = 'informationSecuritySection';\n\n const policiesProps = { ...props, ...{ identifier: 'policies' } };\n const reportsProps = { ...props, ...{ identifier: 'reports' } };\n\n return (\n
\n
\n
\n
\n
Information Security
\n
\n
\n
\n \n \n
\n
\n
\n );\n};\n","import React from 'react';\nimport './PoliciesSection.scss';\nimport { TrustHubSectionProps } from '../CompanyDetailsSection/CompanyDetailsSection';\nimport { DocumentsSection } from '../DocumentsSection/DocumentsSection';\n\nexport const PoliciesSection: React.FC = ({\n isEditable,\n showDocumentDownloadIcon,\n sections,\n onDocumentClick,\n identifier,\n}) => {\n return (\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { LoadingSpinner } from '../../../../components/LoadingSpinner/LoadingSpinner';\n\nimport { AdoptechTextArea } from '../../../../components/AdoptechTextArea/AdoptechTextArea';\nimport {\n CertificatesEditSectionProps,\n EditSectionRow,\n} from '../EditSectionRow/EditSectionRow';\nimport {\n companyProfileRoute,\n draftPoliciesPageRoute,\n policiesPageRoute,\n reportsRoute,\n} from '../../../../components/Routes/Routes';\nimport { faBookAlt } from '@fortawesome/pro-light-svg-icons/faBookAlt';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../components/AdoptechButton/AdoptechButton';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { capitalize } from '../../../../functions/capitalize';\nimport { faServer } from '@fortawesome/pro-light-svg-icons/faServer';\n\nexport const DocumentsEditSection: React.FC = ({\n section,\n titleBar,\n editSectionHandler,\n baseCss,\n onClose,\n bulkActionsRow,\n identifier,\n}) => {\n const {\n fetchingCurrentSection,\n sectionDescription,\n setSectionDescription,\n handleCheckboxChange,\n sortedDocsToEdit,\n fetchCurrentSection,\n formDocuments,\n } = editSectionHandler;\n useEffect(() => {\n fetchCurrentSection();\n }, []);\n const isCertificates = baseCss.includes('certificate');\n const placeholderText = isCertificates\n ? `No certificates templates to display. Please create at least one certificate template. here.`\n : `No policy templates to display. Please create at least one live\n policy here.`;\n\n if (section.identifier === 'policies' || section.identifier === 'reports') {\n return (\n \n );\n }\n return (\n
\n {titleBar}\n
\n {\n setSectionDescription(e.currentTarget.value);\n }}\n />\n
\n {bulkActionsRow}\n {fetchingCurrentSection && }\n {!fetchingCurrentSection && (\n <>\n {section.trusthubDocuments.length === 0 && (\n
\n )}\n
\n {sortedDocsToEdit.map(doc => {\n return (\n formDoc.documentId === doc.documentId\n )}\n handleCheckboxChange={handleCheckboxChange}\n baseCss={baseCss}\n section={section}\n />\n );\n })}\n
\n \n )}\n \n );\n};\n\nexport const InformationSecurityEditSection: React.FC<\n CertificatesEditSectionProps\n> = ({\n section,\n titleBar,\n identifier,\n editSectionHandler,\n onClose,\n bulkActionsRow,\n}) => {\n const {\n fetchCurrentSection,\n handleCheckboxChange,\n sortedDocsToEdit,\n fetchingCurrentSection,\n handleSave,\n sectionDescription,\n updateSectionStatus,\n formDocuments,\n } = editSectionHandler;\n\n const baseCss = `${identifier}Section`;\n return (\n
\n
\n
\n \n
{capitalize(identifier)}
\n
\n\n
\n onClose()}\n variant={AdoptechButtonVariant.White}\n >\n Cancel\n \n \n Save\n \n
\n
\n {bulkActionsRow}\n {fetchingCurrentSection && }\n {!fetchingCurrentSection && (\n <>\n {section.trusthubDocuments.length === 0 && (\n
\n {`No templates to display. Please create at least one live ${\n identifier === 'policies' ? 'policy' : 'report'\n }`}{' '}\n \n {' '}\n here.\n \n
\n )}\n\n
\n {sortedDocsToEdit.map(doc => {\n return (\n formDoc.documentId === doc.documentId\n )}\n handleCheckboxChange={handleCheckboxChange}\n baseCss={baseCss}\n section={section}\n />\n );\n })}\n
\n \n )}\n
\n );\n};\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faLeaf } from '@fortawesome/pro-light-svg-icons/faLeaf';\nimport { AdoptechCheckbox } from '../../../../components/AdoptechCheckbox/AdoptechCheckbox';\nimport {\n EditSectionProps,\n FormDocumentVisibility,\n TrusthubFormDocument,\n} from '../useEditTrustHubSection';\nimport './PoliciesEditSection.scss';\nimport { faShieldCheck } from '@fortawesome/pro-light-svg-icons/faShieldCheck';\nimport { TrusthubDocumentExtended } from '../../../../swagger/trusthub/models/TrusthubDocumentExtended';\nimport { TrusthubSectionModel } from '../../../../swagger/trusthub';\nimport { DocumentsEditSection } from '../DocumentsEditSection/DocumentsEditSection';\nimport { faEyeSlash } from '@fortawesome/pro-light-svg-icons/faEyeSlash';\nimport {\n faLock,\n faLockKeyholeOpen,\n faUserGroup,\n} from '@fortawesome/pro-light-svg-icons';\nimport AdoptechOverflowLine from '../../../../components/AdoptechOverflowLine/AdoptechOverflowLine';\nimport classNames from 'classnames';\n\nimport logoIso27001 from 'images/certificates/iso27001.png';\nimport soc2 from 'images/certificates/soc2.png';\nimport cyber from 'images/certificates/cyberessentials_certification_mark_colour_small.png';\nimport cyberEssentialsPlusLogo from 'images/certificates/cyberessentials_certification_mark_plus_colour_small.png';\nimport icoRegistrationCertificate from 'images/certificates/ico_registration_certificate.png';\nimport iso9001 from 'images/certificates/iso_9001.png';\nimport iso20252 from 'images/certificates/iso_20252.png';\nimport { bulkActionOptions } from '../../useTrustHubSection';\n\nexport const getDocVisibilityIcon = (visibility: FormDocumentVisibility) =>\n bulkActionOptions.find(option => option.value === visibility)?.icon ||\n faEyeSlash;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface CertificatesEditSectionProps extends EditSectionProps {}\n\nexport const certificatesLogos = {\n ['ISO 27001 Certificate']: logoIso27001,\n ['SOC 2 Type II Report']: soc2,\n ['Cyber Essentials Certificate']: cyber,\n ['Cyber Essentials Plus Certificate']: cyberEssentialsPlusLogo,\n ['ICO Registration Certificate']: icoRegistrationCertificate,\n ['ISO 9001']: iso9001,\n ['ISO 20252']: iso20252,\n};\n\ntype certificatesTypes = keyof typeof certificatesLogos;\n\nexport const EditSectionRow: React.FC<{\n doc: TrusthubDocumentExtended;\n formDocument: TrusthubFormDocument;\n handleCheckboxChange: (\n checked: boolean,\n doc: TrusthubDocumentExtended\n ) => void;\n baseCss: string;\n section: TrusthubSectionModel;\n}> = ({ doc, formDocument, handleCheckboxChange, baseCss, section }) => {\n if (!formDocument) return null;\n const docVisibilityIcon = getDocVisibilityIcon(formDocument.visibility);\n\n const isEsg = section.identifier === 'environmental_social_and_governance';\n const isCompliance = section.identifier === 'compliance';\n const isCertificates = section.identifier === 'certificates';\n\n // if bottom small sections\n if (section.identifier === 'policies' || section.identifier === 'reports') {\n return (\n {\n e.preventDefault();\n handleCheckboxChange(!formDocument.checked, doc);\n }}\n >\n
\n {\n e.stopPropagation();\n handleCheckboxChange(e.currentTarget.checked, doc);\n }}\n label={
-
}\n />\n
\n {doc.name}\n
\n \n
\n \n );\n }\n\n return (\n {\n e.preventDefault();\n handleCheckboxChange(!formDocument.checked, doc);\n }}\n >\n {\n e.stopPropagation();\n handleCheckboxChange(e.currentTarget.checked, doc);\n }}\n label={
-
}\n />\n
\n {(isEsg || isCompliance) && (\n \n )}\n {isCertificates && (\n \n )}\n\n \n {doc.name}\n
\n \n \n \n );\n};\n\nexport const PoliciesEditSection: React.FC = ({\n baseCss,\n ...props\n}) => {\n return ;\n};\n","import React, { useRef, useState } from 'react';\nimport { AdoptechTextInput } from '../AdoptechTextInput/AdoptechTextInput';\nimport './AdoptechColourInput.scss';\nimport { ColourPalette } from '../ColourPalette/ColourPalette';\nimport { isDisplayableColour } from '../../features/companyProfile/CompanyBrandingTable/CompanyBrandingTable';\nimport classNames from 'classnames';\nimport { faPencil } from '@fortawesome/pro-light-svg-icons/faPencil';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\ninterface AdoptechColourInputProps {\n value: T;\n onChange: (value: T) => void;\n label: string;\n colourList?: string[];\n}\n\nexport const AdoptechColourInput: React.FC<\n AdoptechColourInputProps\n> = props => {\n const baseCss = 'adoptechColourInput';\n const [colour, setColour] = useState(props.value || '');\n const handleChange = (value: string) => {\n setColour(value);\n (isDisplayableColour(value) || value === '') && props.onChange(value);\n };\n const hasError = !colour || !isDisplayableColour(colour);\n const inputRef = useRef();\n return (\n \n
{props.label}
\n
\n handleChange(e.target.value)}\n />\n\n
\n {\n handleChange(selectedColour);\n }}\n gap=\"4px\"\n />\n inputRef.current.focus()}\n />\n
\n
\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { TrusthubSettingsModel } from '../../../../swagger/trusthub';\nimport AdoptechHS from '../../../../components/AdoptechHS/AdoptechHS';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../components/AdoptechButton/AdoptechButton';\nimport { LoadingSpinner } from '../../../../components/LoadingSpinner/LoadingSpinner';\nimport { AdoptechTextInput2 } from '../../../../components/AdoptechTextInput2/AdoptechTextInput2';\nimport './TrustHubSettingsDrawer.scss';\nimport { faPencil } from '@fortawesome/pro-light-svg-icons/faPencil';\nimport { AdoptechColourInput } from '../../../../components/AdoptechColourInput/AdoptechColourInput';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport {\n fetchTrustHubSettings,\n fetchTrusthubAdminCurrentVendorUser,\n updateTrustHubSettings,\n} from '../../store/trusthubThunks';\nimport { selectCurrentVendor } from '../../../../selectors/selectCurrentVendor';\nimport { AdoptechCheckbox } from '../../../../components/AdoptechCheckbox/AdoptechCheckbox';\nimport { AdoptechFileInput } from '../../../../components/AdoptechFileInput/AdoptechFileInput';\n\ninterface TrustHubSettingsDrawer {\n onClose: () => void;\n settings: TrusthubSettingsModel;\n}\n\ninterface TrustHubSettingsFormData {\n brandingColor?: TrusthubSettingsModel['brandingColor'];\n domain?: TrusthubSettingsModel['domain'];\n useColourGradient?: TrusthubSettingsModel['useColourGradient'];\n logo?: File;\n favicon?: File;\n name?: string;\n}\n// on change order please check ColorHeader.tsx blackColor\nexport const TrusthubColorsList = [\n '#12B76A',\n '#A8D63F',\n '#FFC700',\n '#EFA82C',\n '#EA5542',\n '#E25EB9',\n '#7F58D6',\n '#02569F',\n '#4496EB',\n '#00BAFF',\n '#06ABC1',\n '#01436f',\n '#222222',\n];\nexport const TrustHubSettingsDrawer: React.FC<\n TrustHubSettingsDrawer\n> = props => {\n const staticText = 'https://trusthub.info/';\n\n const { favicon, logo, ...settingsFields } = props.settings;\n const [formData, setFormData] =\n useState(settingsFields);\n\n const [formDataCopy, _] = useState(settingsFields);\n const baseCss = 'trusthubSettingsDrawer';\n const dispatch = useDispatch();\n const vendor = useSelector(selectCurrentVendor);\n const { updateSettingsStatus } = useSelector(\n (state: ApplicationState) => state.trustHub\n );\n\n const handleClose = () => {\n props.onClose();\n };\n\n const handleDomainChange = (e: { currentTarget: { value: string } }) => {\n const { value: newValue } = e.currentTarget;\n const maxLength = 60;\n\n setFormData(prevFormData => ({\n ...prevFormData,\n domain: newValue\n .replace(/[^a-zA-Z0-9-_]/g, '') // remove special chars\n .substring(0, maxLength), // cut the length\n }));\n };\n\n const handleNameChange = (e: { currentTarget: { value: string } }) => {\n const { value } = e.currentTarget;\n\n setFormData(prevFormData => {\n return {\n ...prevFormData,\n ...{ name: value },\n };\n });\n };\n\n return (\n \n \n Cancel\n \n {\n const payload = {\n brandingColor: formData.brandingColor,\n domain: formData.domain.replaceAll(staticText, ''),\n vendorIdOrDomain: vendor.id,\n useColourGradient: formData.useColourGradient,\n name: formData.name,\n logo: formData.logo,\n favicon: formData.favicon,\n };\n dispatch(updateTrustHubSettings(payload, handleClose));\n }}\n variant={AdoptechButtonVariant.Primary}\n disabled={\n !formData.brandingColor || !formData.domain || !formData.name\n }\n busy={updateSettingsStatus === 'loading'}\n >\n Update\n \n \n }\n >\n {props.settings ? (\n
\n
\n
\n
\n
\n Type the name of your TrustHub page as you want it to appear\n in the URL.\n
\n \n
\n
\n
\n
\n
\n Add a company colour to the top of your TrustHub page.\n
\n {\n setFormData(prevFormData => {\n return { ...prevFormData, ...{ brandingColor: value } };\n });\n }}\n value={formData.brandingColor}\n label=\"Company colour\"\n />\n
\n
\n
\n
\n {\n const useColourGradient = e.currentTarget?.checked;\n setFormData(prevFormData => {\n return {\n ...prevFormData,\n ...{ useColourGradient },\n };\n });\n }}\n />\n
\n
\n
\n
\n
\n Upload a company logo to display at the top of your TrustHub\n page.\n
\n {\n setFormData(prevFormData => {\n return {\n ...prevFormData,\n ...{ logo: files[0] },\n };\n });\n }}\n />\n
\n
\n
\n
\n
\n Add a company favicon to display in your browser tab.\n
\n {\n setFormData(prevFormData => {\n return {\n ...prevFormData,\n ...{ favicon: files[0] },\n };\n });\n }}\n />\n
\n
\n\n
\n
\n
\n Type the name of your TrustHub company name as you want it to\n appear under the logo\n
\n \n
\n
\n
\n
\n ) : (\n \n )}\n \n );\n};\n","import React, { SyntheticEvent, useState } from 'react';\nimport './TrustHubVendorUserTableRow.scss';\nimport { push } from 'connected-react-router';\nimport { TrusthubVendorUserModel } from '../../../../../../swagger/trusthub/models/TrusthubVendorUserModel';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { trusthubAdminPageUserRoute } from '../../../../../../components/Routes/Routes';\nimport { capitalize } from '../../../../../../functions/capitalize';\nimport { formatShortDate } from '../../../../../../functions/formatShortDate';\nimport AdoptechOverflowLine from '../../../../../../components/AdoptechOverflowLine/AdoptechOverflowLine';\nimport { TrusthubVendorUserStatus } from '../../../../../../swagger/trusthub';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../../../components/AdoptechButton/AdoptechButton';\nimport { faEnvelope } from '@fortawesome/pro-light-svg-icons/faEnvelope';\nimport { postTrustHubInvitation } from '../../../../store/trusthubThunks';\nimport { ApplicationState } from '../../../../../../types/applicationState';\n\ninterface CompanyTableRowProps {\n user: TrusthubVendorUserModel;\n}\n\nexport const userStatus = (status: string) => {\n return capitalize(status.replaceAll('_', ' '));\n};\n\nexport const TrustHubVendorUserTableRow: React.FC = ({\n user,\n}) => {\n const baseCss = 'trusthubVendorUserTableRow panelTableRow';\n const dispatch = useDispatch();\n const { postTrusthubInvitationStatus, settings } = useSelector(\n (state: ApplicationState) => state.trustHub\n );\n\n const [reminderClicked, setReminderClicked] = useState(false);\n\n const handleReminder = (e: SyntheticEvent) => {\n e.stopPropagation();\n setReminderClicked(true);\n dispatch(\n postTrustHubInvitation({\n trusthubUser: {\n email: user.email,\n domain: settings.domain,\n },\n })\n );\n };\n const ReminderButton =\n reminderClicked && postTrusthubInvitationStatus === 'succeeded' ? (\n 'Reminder sent ✅'\n ) : (\n \n Reminder\n \n );\n return (\n \n dispatch(push(trusthubAdminPageUserRoute.replace(':id', user.id)))\n }\n >\n \n {user.fullName}\n \n {user.trusthubCompany?.name ? (\n
\n {user.trusthubCompany?.name}\n
\n ) : (\n
-
\n )}\n\n \n {user.email}\n \n
\n {user.status === TrusthubVendorUserStatus.Unconfirmed\n ? ReminderButton\n : userStatus(user.status)}\n
\n
\n {/* TODO when BE will be done */}\n {/* @ts-ignore */}\n {formatShortDate(user.lastLoginAt) || '-'}\n
\n \n );\n};\n","import React from 'react';\nimport {\n TrusthubDocumentModel,\n TrusthubSectionModel,\n} from '../../../../../../swagger/trusthub';\nimport { Accordion } from 'react-bootstrap';\nimport { AdoptechAccordionCard } from '../../../../../../components/AdoptechAccordionCard/AdoptechAccordionCard';\nimport { AdoptechCheckbox } from '../../../../../../components/AdoptechCheckbox/AdoptechCheckbox';\nimport { AddDocumentPermissionFormData } from '../TrusthubUserAdminAddDocumentPermissionDrawer';\n\nexport interface DocumentPermissionTableRowProps {\n section: TrusthubSectionModel;\n formData: AddDocumentPermissionFormData;\n setFormData: React.Dispatch<\n React.SetStateAction\n >;\n}\n\n// for user flow doc permission modal\nexport const trusthubSectionName = (name: string) => {\n return name\n .replace('Reports', 'Information Security - Reports')\n .replace('Policies', 'Information Security - Policies');\n};\n\nexport const DocumentPermissionTableRow: React.FC<\n DocumentPermissionTableRowProps\n> = ({ section, formData, setFormData }) => {\n // if doc is not restricted => show it always preselected ( ignore any checkbox and select all handle logic on it )\n // => we have 2 lists:\n // sectionDocsToSelect - docs to work on selection ( all docs except preselected )\n // sectionDocsToView - docs to display ( all docs always )\n\n const sectionDocsToSelect = section.trusthubDocuments.filter(\n doc => doc.restricted\n );\n\n const sectionDocsToView = section.trusthubDocuments;\n\n const sectionIsChecked = (\n formDataObject: DocumentPermissionTableRowProps['formData']\n ) => {\n return sectionDocsToSelect.every(doc =>\n (formDataObject.selectedDocumentsIds || []).includes(doc.id)\n );\n };\n const sectionIsCheckedAll = sectionIsChecked(formData);\n\n const handleSectionSelectAll = () => {\n setFormData(prevFormData => {\n const prevSectionIsCheckedAll = sectionIsChecked(prevFormData);\n\n const ids = prevFormData.selectedDocumentsIds || [];\n\n const excludeIds = ids.filter(\n id => !sectionDocsToSelect.map(doc => doc.id).includes(id)\n );\n\n const allIds = ids.concat(sectionDocsToSelect.map(doc => doc.id));\n\n const payload = {\n selectedDocumentsIds: prevSectionIsCheckedAll ? excludeIds : allIds,\n };\n\n return {\n ...prevFormData,\n ...payload,\n };\n });\n };\n\n const isDocumentChecked = (document: TrusthubDocumentModel): boolean => {\n return (formData.selectedDocumentsIds || []).includes(document.id);\n };\n\n const handleDocumentSelect = (document: TrusthubDocumentModel) => {\n setFormData(prevFormData => {\n const docChecked = (prevFormData.selectedDocumentsIds || []).includes(\n document.id\n );\n const allIds = (prevFormData.selectedDocumentsIds || []).concat(\n document.id\n );\n const excludeIds = (prevFormData.selectedDocumentsIds || []).filter(\n id => id !== document.id\n );\n\n const payload = {\n selectedDocumentsIds: docChecked ? excludeIds : allIds,\n };\n\n return {\n ...prevFormData,\n ...payload,\n };\n });\n };\n\n return (\n \n \n !doc.restricted)}\n label=\"Select All\"\n className=\"select-all-docs\"\n />\n\n {sectionDocsToView.map(doc => {\n const isDisabled = !doc.restricted;\n return (\n handleDocumentSelect(doc)}\n label={doc.name}\n className=\"select-doc\"\n disabled={isDisabled}\n />\n );\n })}\n \n \n );\n};\n","import { ApplicationState } from '../../../types/applicationState';\n\nexport const selectCurrentUser = (state: ApplicationState) =>\n state.trustHub.auth.user;\n\nexport const selectCurrentTrusthub = (state: ApplicationState) =>\n state.trustHub.settings;\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { TrustHubState } from './trusthubState';\nimport {\n TrusthubVendorUserActivityModel,\n TrusthubSectionModel,\n TrusthubCompanyModel,\n TrusthubVendorUserModel,\n TrusthubDocumentPermissionModel,\n TrusthubAccessRequestModel,\n TrusthubSettingsModel,\n TrusthubUserModel,\n TrusthubDocumentModel,\n TrusthubInvitationModel,\n} from '../../../swagger/trusthub';\nimport {\n fetchTrusthubCategories,\n postTrustHubInvitation,\n} from './trusthubThunks';\n\nconst initialState = {\n settings: {},\n fetchingSettingsStatus: 'idle',\n updateSettingsStatus: 'idle',\n fetchingSectionsStatus: 'idle',\n sections: [],\n companies: [],\n fetchingAccessRequestsStatus: 'idle',\n fetchingSectionStatus: 'idle',\n approvingAccessRequestStatus: 'idle',\n denyingAccessRequestStatus: 'idle',\n showCompletedRequests: false,\n accessRequestsSearch: '',\n accessRequests: [],\n currentCompany: null,\n fetchingCurrentCompanyStatus: 'idle',\n patchCurrentCompanyStatus: 'idle',\n deletingCurrentCompanyStatus: 'idle',\n fetchingActivitiesStatus: 'idle',\n activities: [],\n activitiesSearch: '',\n vendorUsers: [],\n vendorUsersSearch: '',\n fetchingCompanyVendorUsers: 'idle',\n companyVendorUsers: [],\n auth: {\n modal: undefined,\n status: 'idle',\n user: undefined,\n },\n currentVendorUser: null,\n fetchingCurrentVendorUserStatus: 'idle',\n createAccessRequestStatus: 'idle',\n vendorUserDocumentPermissions: [],\n vendorUserActivities: [],\n fetchingVendorUserDocumentPermissionsStatus: 'idle',\n deletingVendorUserDocumentPermissionStatus: 'idle',\n fetchVendorDocumentFileStatus: 'idle',\n adminAuth: {\n status: 'idle',\n user: undefined,\n },\n fetchingTrusthubAdminVendorUserDetails: 'idle',\n fetchTrustHubUserDetailsRequestStatus: 'idle',\n postTrusthubInvitationStatus: 'idle',\n showRequestDocumentModal: false,\n showSettingsDrawer: false,\n fetchTrusthubCategoriesStatus: 'idle',\n} as TrustHubState;\n\nconst trusthubSlice = createSlice({\n initialState,\n name: 'trusthubSlice',\n reducers: {\n fetchTrustHubSettingsRequest: state => {\n state.fetchingSettingsStatus = 'loading';\n },\n fetchTrustHubSettingsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingSettingsStatus = 'idle';\n state.settings = action.payload;\n },\n fetchTrustHubSettingsFailure: (state, _) => {\n state.fetchingSettingsStatus = 'failed';\n },\n fetchTrustHubSettingsFailureCode: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingSettingsStatusCode = action.payload;\n },\n updateTrustHubSettingsRequest: state => {\n state.updateSettingsStatus = 'loading';\n },\n updateTrustHubSettingsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.settings = { ...action.payload };\n state.updateSettingsStatus = 'idle';\n },\n updateTrustHubSettingsFailure: (state, _) => {\n state.updateSettingsStatus = 'failed';\n },\n\n updateSettingsColor: (state, action: PayloadAction) => {\n state.settings = {\n ...state.settings,\n ...{ brandingColor: action.payload },\n };\n },\n\n fetchTrustHubSectionsRequest: state => {\n state.fetchingSectionsStatus = 'loading';\n },\n fetchTrustHubSectionsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingSectionsStatus = 'idle';\n state.sections = action.payload;\n },\n fetchTrustHubSectionsFailure: (state, _) => {\n state.fetchingSectionsStatus = 'failed';\n },\n fetchTrustHubSectionRequest: state => {\n state.fetchingSectionStatus = 'loading';\n },\n fetchTrustHubSectionSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingSectionStatus = 'idle';\n state.sections = state.sections.map(section => {\n if (section.id === action.payload.id) {\n return { ...section, ...action.payload };\n }\n return section;\n });\n },\n fetchTrustHubSectionFailure: (state, _) => {\n state.fetchingSectionStatus = 'failed';\n },\n updateTrustHubSectionRequest: state => {\n state.updateSectionStatus = 'loading';\n },\n updateTrustHubSectionSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.updateSectionStatus = 'idle';\n state.sections = state.sections.map(section => {\n if (section.id === action.payload.id) {\n return { ...section, ...action.payload };\n }\n return section;\n });\n },\n updateTrustHubSectionFailure: (state, _) => {\n state.updateSectionStatus = 'failed';\n },\n\n updateTrusthubSectionVisibilityRequest: state => {\n state.updateSectionVisibilityStatus = 'loading';\n },\n updateTrusthubSectionVisibilitySuccess: (\n state,\n action: PayloadAction\n ) => {\n state.updateSectionVisibilityStatus = 'idle';\n state.sections = state.sections.map(section => {\n if (section.id === action.payload.id) {\n return { ...section, ...{ visible: action.payload.visible } };\n }\n return section;\n });\n },\n updateTrusthubSectionVisibilityFailure: (state, _) => {\n state.updateSectionVisibilityStatus = 'failed';\n },\n updateShowCompletedAccessRequests: (\n state,\n action: PayloadAction\n ) => {\n state.showCompletedRequests = action.payload;\n },\n fetchAccessRequestsRequest: state => {\n state.fetchingAccessRequestsStatus = 'loading';\n },\n fetchAccessRequestsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingAccessRequestsStatus = 'idle';\n state.accessRequests = action.payload;\n },\n fetchAccessRequestsFailure: (state, _) => {\n state.fetchingAccessRequestsStatus = 'failed';\n },\n setTrustHubAccessRequestsSearch: (state, action: PayloadAction) => {\n state.accessRequestsSearch = action.payload;\n },\n setTrustHubShowCompletedAccessRequests: (\n state,\n action: PayloadAction\n ) => {\n state.showCompletedRequests = action.payload;\n },\n denyAccessRequestRequest: state => {\n state.denyingAccessRequestStatus = 'loading';\n },\n denyAccessRequestSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.accessRequests = state.accessRequests.map(accessRequest => {\n if (accessRequest.id === action.payload.id) {\n return { ...accessRequest, ...action.payload };\n }\n return accessRequest;\n });\n state.denyingAccessRequestStatus = 'idle';\n },\n denyAccessRequestFailure: (state, _) => {\n state.denyingAccessRequestStatus = 'failed';\n },\n approveAccessRequestRequest: state => {\n state.approvingAccessRequestStatus = 'loading';\n },\n approveAccessRequestSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.accessRequests = state.accessRequests.map(accessRequest => {\n if (accessRequest.id === action.payload.id) {\n return { ...accessRequest, ...action.payload };\n }\n return accessRequest;\n });\n state.approvingAccessRequestStatus = 'idle';\n },\n approveAccessRequestFailure: (state, _) => {\n state.approvingAccessRequestStatus = 'failed';\n },\n fetchTrustHubCompaniesRequest: state => {\n state.fetchingCompaniesStatus = 'loading';\n },\n fetchTrustHubCompaniesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingCompaniesStatus = 'idle';\n state.companies = action.payload;\n },\n fetchTrustHubCompaniesFailure: (state, _) => {\n state.fetchingCompaniesStatus = 'failed';\n },\n\n patchTrustHubVendorUserRequest: state => {\n state.patchVendorUserStatus = 'loading';\n },\n patchTrustHubVendorUserSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.patchVendorUserStatus = 'idle';\n\n // if on /users/:id page\n if (state.currentVendorUser)\n state.currentVendorUser = {\n ...state.currentVendorUser,\n ...action.payload,\n };\n },\n patchTrustHubVendorUserFailure: (state, _) => {\n state.patchVendorUserStatus = 'failed';\n },\n fetchTrustHubVendorUsersRequest: state => {\n state.fetchingVendorUsersStatus = 'loading';\n },\n fetchTrustHubVendorUsersSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingVendorUsersStatus = 'idle';\n state.vendorUsers = action.payload;\n },\n fetchTrustHubVendorUsersFailure: (state, _) => {\n state.fetchingVendorUsersStatus = 'failed';\n },\n postTrustHubCompanyRequest: state => {\n state.createCompanyStatus = 'loading';\n },\n postTrustHubCompanySuccess: (\n state,\n action: PayloadAction\n ) => {\n state.createCompanyStatus = 'idle';\n state.companies.push(action.payload);\n },\n postTrustHubCompanyFailure: (state, _) => {\n state.createCompanyStatus = 'failed';\n },\n setTrustHubCompaniesSearch: (state, action: PayloadAction) => {\n state.companiesSearch = action.payload;\n },\n fetchTrustHubCurrentCompanyRequest: state => {\n state.fetchingCurrentCompanyStatus = 'loading';\n },\n fetchTrustHubCurrentCompanySuccess: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingCurrentCompanyStatus = 'idle';\n state.currentCompany = action.payload;\n },\n fetchTrustHubCurrentCompanyFailure: (state, _) => {\n state.fetchingCurrentCompanyStatus = 'failed';\n },\n\n patchTrustHubCompanyRequest: state => {\n state.patchCurrentCompanyStatus = 'loading';\n },\n patchTrustHubCompanySuccess: (\n state,\n action: PayloadAction\n ) => {\n state.currentCompany = { ...state.currentCompany, ...action.payload };\n state.patchCurrentCompanyStatus = 'idle';\n },\n patchTrustHubCompanyFailure: (state, _) => {\n state.patchCurrentCompanyStatus = 'failed';\n },\n\n deleteTrustHubCompanyRequest: state => {\n state.deletingCurrentCompanyStatus = 'loading';\n },\n deleteTrustHubCompanySuccess: state => {\n state.currentCompany = null;\n state.deletingCurrentCompanyStatus = 'idle';\n },\n deleteTrustHubCompanyFailure: (state, _) => {\n state.deletingCurrentCompanyStatus = 'failed';\n },\n fetchTrustHubActivitiesRequest: state => {\n state.fetchingActivitiesStatus = 'loading';\n },\n fetchTrustHubActivitiesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingActivitiesStatus = 'idle';\n state.activities = action.payload;\n },\n fetchTrustHubActivitiesFailure: (state, _) => {\n state.fetchingActivitiesStatus = 'failed';\n },\n setTrustHubActivitiesSearch: (state, action: PayloadAction) => {\n state.activitiesSearch = action.payload;\n },\n showTrustHubAuthModal: (\n state,\n action: PayloadAction\n ) => {\n state.auth.modal = action.payload;\n },\n hideTrustHubAuthModal: state => {\n state.auth.modal = undefined;\n },\n authTrustHubRequest: state => {\n state.auth.status = 'loading';\n state.auth.error = '';\n },\n authTrustHubSuccess: state => {\n state.auth.status = 'succeeded';\n state.auth.error = '';\n },\n authTrustHubIdle: state => {\n state.auth.status = 'idle';\n state.auth.error = '';\n state.auth.user = undefined;\n },\n authTrustHubFailure: (state, action: PayloadAction) => {\n state.auth.status = 'failed';\n state.auth.error = action.payload;\n },\n\n setShowRequestDocumentModal: (state, action: PayloadAction) => {\n state.showRequestDocumentModal = action.payload;\n },\n\n fetchTrustHubUserDetailsRequest: state => {\n state.fetchTrustHubUserDetailsRequestStatus = 'loading';\n },\n // use Finished instead of Failure to avoid show toast message on error\n fetchTrustHubUserDetailsFinished: state => {\n state.fetchTrustHubUserDetailsRequestStatus = 'failed';\n },\n fetchTrustHubUserDetailsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.fetchTrustHubUserDetailsRequestStatus = 'succeeded';\n state.auth.status = 'succeeded';\n state.auth.error = '';\n state.auth.user = action.payload;\n },\n setTrustHubVendorUsersSearch: (state, action: PayloadAction) => {\n state.vendorUsersSearch = action.payload;\n },\n postTrustHubVendorUserRequest: state => {\n state.createVendorUserStatus = 'loading';\n },\n postTrustHubVendorUserSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.createVendorUserStatus = 'idle';\n state.vendorUsers.push(action.payload);\n },\n postTrustHubVendorUserFailure: (state, _) => {\n state.createVendorUserStatus = 'failed';\n },\n fetchTrustHubCompanyVendorUsersRequest: state => {\n state.fetchingCompanyVendorUsers = 'loading';\n },\n fetchTrustHubCompanyVendorUsersSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingCompanyVendorUsers = 'idle';\n state.companyVendorUsers = action.payload;\n },\n fetchTrustHubCompanyVendorUsersFailure: (state, _) => {\n state.fetchingCompanyVendorUsers = 'failed';\n },\n\n fetchTrustHubVendorUserRequest: state => {\n state.fetchingCurrentVendorUserStatus = 'loading';\n },\n fetchTrustHubVendorUserSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingCurrentVendorUserStatus = 'idle';\n state.currentVendorUser = action.payload;\n },\n fetchTrustHubVendorUserFailure: (state, _) => {\n state.fetchingCurrentVendorUserStatus = 'failed';\n },\n postTrustHubAccessRequestRequest: state => {\n state.createAccessRequestStatus = 'loading';\n },\n postTrustHubAccessRequestSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.createAccessRequestStatus = 'idle';\n state.accessRequests.push(action.payload);\n // Set \"requested\" for updated documents\n const docIds = action.payload.trusthubDocuments.map(doc => doc.id);\n state.sections = state.sections.map(section => ({\n ...section,\n trusthubDocuments: section.trusthubDocuments.map(doc => ({\n ...doc,\n requested: docIds.includes(doc.id) || doc.requested,\n })),\n }));\n },\n postTrustHubAccessRequestFailure: (state, _) => {\n state.createAccessRequestStatus = 'failed';\n },\n fetchTrustHubVendorUserDocumentPermissionsRequest: state => {\n state.fetchingVendorUserDocumentPermissionsStatus = 'loading';\n },\n fetchTrustHubVendorUserDocumentPermissionsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingVendorUserDocumentPermissionsStatus = 'idle';\n state.vendorUserDocumentPermissions = action.payload;\n },\n fetchTrustHubVendorUserDocumentPermissionsFailure: (state, _) => {\n state.fetchingVendorUserDocumentPermissionsStatus = 'failed';\n },\n\n deleteTrustHubVendorUserDocumentPermissionRequest: state => {\n state.deletingVendorUserDocumentPermissionStatus = 'loading';\n },\n deleteTrustHubVendorUserDocumentPermissionSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.deletingVendorUserDocumentPermissionStatus = 'idle';\n state.vendorUserDocumentPermissions =\n state.vendorUserDocumentPermissions.filter(\n permission => permission.id !== action.payload\n );\n },\n deleteTrustHubVendorUserDocumentPermissionFailure: (state, _) => {\n state.deletingVendorUserDocumentPermissionStatus = 'failed';\n },\n fetchVendorDocumentFileRequest: state => {\n state.fetchVendorDocumentFileStatus = 'loading';\n },\n fetchVendorDocumentFileSuccess: state => {\n state.fetchVendorDocumentFileStatus = 'idle';\n },\n fetchVendorDocumentFileFailure: (state, _) => {\n state.fetchVendorDocumentFileStatus = 'failed';\n },\n\n setFetchingVendorDocumentIdFile: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingVendorDocumentIdFile = action.payload;\n },\n\n fetchTrustHubVendorUserActivitiesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingActivitiesStatus = 'idle';\n state.vendorUserActivities = action.payload;\n },\n fetchTrusthubAdminCurrentVendorUserRequest: state => {\n state.adminAuth.status = 'loading';\n },\n\n fetchTrusthubAdminCurrentVendorUserSuccess: state => {\n state.adminAuth = {\n status: 'succeeded',\n error: null,\n user: null,\n };\n },\n fetchTrusthubAdminCurrentVendorUserFailure: (state, _) => {\n state.adminAuth.status = 'failed';\n },\n\n fetchTrustHubInvitationStatusRequest: state => {\n state.fetchingInvitationStatus = 'loading';\n },\n\n fetchTrustHubInvitationStatusSuccess: (\n state,\n _action: PayloadAction\n ) => {\n state.fetchingInvitationStatus = 'succeeded';\n },\n fetchTrustHubInvitationStatusFailure: (state, _) => {\n state.fetchingInvitationStatus = 'failed';\n },\n\n patchTrustHubInvitationStatusRequest: state => {\n state.patchingInvitationStatus = 'loading';\n },\n\n patchTrustHubInvitationStatusSuccess: state => {\n state.patchingInvitationStatus = 'succeeded';\n },\n patchTrustHubInvitationStatusFailure: (state, _) => {\n state.patchingInvitationStatus = 'failed';\n },\n\n fetchTrustHubAdminVendorUserDetailsRequest: state => {\n state.fetchingTrusthubAdminVendorUserDetails = 'loading';\n },\n\n setShowSettingsDrawer: (state, action: PayloadAction) => {\n state.showSettingsDrawer = action.payload;\n },\n\n fetchTrustHubAdminVendorUserDetailsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingTrusthubAdminVendorUserDetails = 'succeeded';\n state.adminAuth = {\n ...state.adminAuth,\n user: action.payload,\n };\n },\n fetchTrustHubAdminVendorUserDetailsFailure: (state, _) => {\n state.fetchingTrusthubAdminVendorUserDetails = 'failed';\n },\n },\n extraReducers: builder => {\n builder\n .addCase(postTrustHubInvitation.pending, state => {\n state.postTrusthubInvitationStatus = 'loading';\n })\n .addCase(postTrustHubInvitation.fulfilled, state => {\n state.postTrusthubInvitationStatus = 'succeeded';\n })\n .addCase(postTrustHubInvitation.rejected, state => {\n state.postTrusthubInvitationStatus = 'failed';\n })\n .addCase(fetchTrusthubCategories.pending, state => {\n state.fetchTrusthubCategoriesStatus = 'loading';\n })\n .addCase(fetchTrusthubCategories.fulfilled, state => {\n state.fetchTrusthubCategoriesStatus = 'succeeded';\n })\n .addCase(fetchTrusthubCategories.rejected, state => {\n state.fetchTrusthubCategoriesStatus = 'failed';\n });\n },\n});\nexport const {\n authTrustHubRequest,\n authTrustHubFailure,\n authTrustHubSuccess,\n authTrustHubIdle,\n fetchTrustHubUserDetailsRequest,\n fetchTrustHubUserDetailsSuccess,\n fetchTrustHubUserDetailsFinished,\n fetchTrustHubSettingsRequest,\n fetchTrustHubSettingsSuccess,\n fetchTrustHubSettingsFailure,\n updateTrustHubSettingsRequest,\n updateTrustHubSettingsSuccess,\n updateTrustHubSettingsFailure,\n updateSettingsColor,\n fetchTrustHubSectionsRequest,\n fetchTrustHubSectionsSuccess,\n fetchTrustHubSectionsFailure,\n fetchTrustHubSectionRequest,\n fetchTrustHubSectionSuccess,\n fetchTrustHubSectionFailure,\n updateTrustHubSectionRequest,\n updateTrustHubSectionSuccess,\n updateTrustHubSectionFailure,\n updateShowCompletedAccessRequests,\n fetchAccessRequestsRequest,\n fetchAccessRequestsSuccess,\n fetchAccessRequestsFailure,\n setTrustHubAccessRequestsSearch,\n setTrustHubShowCompletedAccessRequests,\n denyAccessRequestRequest,\n denyAccessRequestSuccess,\n denyAccessRequestFailure,\n approveAccessRequestRequest,\n approveAccessRequestSuccess,\n approveAccessRequestFailure,\n fetchTrustHubCompaniesRequest,\n fetchTrustHubCompaniesSuccess,\n fetchTrustHubCompaniesFailure,\n patchTrustHubVendorUserRequest,\n patchTrustHubVendorUserSuccess,\n patchTrustHubVendorUserFailure,\n fetchTrustHubVendorUsersRequest,\n fetchTrustHubVendorUsersSuccess,\n fetchTrustHubVendorUsersFailure,\n postTrustHubCompanyRequest,\n postTrustHubCompanySuccess,\n postTrustHubCompanyFailure,\n setTrustHubCompaniesSearch,\n fetchTrustHubCurrentCompanyFailure,\n fetchTrustHubCurrentCompanyRequest,\n fetchTrustHubCurrentCompanySuccess,\n patchTrustHubCompanyRequest,\n patchTrustHubCompanySuccess,\n patchTrustHubCompanyFailure,\n deleteTrustHubCompanyRequest,\n deleteTrustHubCompanySuccess,\n deleteTrustHubCompanyFailure,\n fetchTrustHubActivitiesRequest,\n fetchTrustHubActivitiesSuccess,\n fetchTrustHubActivitiesFailure,\n setTrustHubActivitiesSearch,\n showTrustHubAuthModal,\n hideTrustHubAuthModal,\n setTrustHubVendorUsersSearch,\n postTrustHubVendorUserRequest,\n postTrustHubVendorUserSuccess,\n postTrustHubVendorUserFailure,\n fetchTrustHubCompanyVendorUsersRequest,\n fetchTrustHubCompanyVendorUsersSuccess,\n fetchTrustHubCompanyVendorUsersFailure,\n fetchTrustHubVendorUserRequest,\n fetchTrustHubVendorUserSuccess,\n fetchTrustHubVendorUserFailure,\n postTrustHubAccessRequestRequest,\n postTrustHubAccessRequestSuccess,\n postTrustHubAccessRequestFailure,\n fetchTrustHubVendorUserDocumentPermissionsRequest,\n fetchTrustHubVendorUserDocumentPermissionsSuccess,\n fetchTrustHubVendorUserDocumentPermissionsFailure,\n deleteTrustHubVendorUserDocumentPermissionRequest,\n deleteTrustHubVendorUserDocumentPermissionSuccess,\n deleteTrustHubVendorUserDocumentPermissionFailure,\n fetchVendorDocumentFileRequest,\n fetchVendorDocumentFileSuccess,\n fetchVendorDocumentFileFailure,\n setFetchingVendorDocumentIdFile,\n fetchTrustHubSettingsFailureCode,\n fetchTrustHubVendorUserActivitiesSuccess,\n fetchTrusthubAdminCurrentVendorUserRequest,\n fetchTrusthubAdminCurrentVendorUserSuccess,\n fetchTrusthubAdminCurrentVendorUserFailure,\n fetchTrustHubInvitationStatusRequest,\n fetchTrustHubInvitationStatusSuccess,\n fetchTrustHubInvitationStatusFailure,\n patchTrustHubInvitationStatusRequest,\n patchTrustHubInvitationStatusSuccess,\n patchTrustHubInvitationStatusFailure,\n fetchTrustHubAdminVendorUserDetailsRequest,\n fetchTrustHubAdminVendorUserDetailsSuccess,\n fetchTrustHubAdminVendorUserDetailsFailure,\n setShowRequestDocumentModal,\n setShowSettingsDrawer,\n updateTrusthubSectionVisibilityRequest,\n updateTrusthubSectionVisibilitySuccess,\n updateTrusthubSectionVisibilityFailure,\n} = trusthubSlice.actions;\n\nexport default trusthubSlice.reducer;\n","import { TRUSTHUB_BASE_PATH, trusthubApi } from '../../../api/api';\nimport { api as mainProjectApi } from '../../../../src/api/api';\nimport {\n getErrorMessage,\n handleThunkError,\n} from '../../../store/helpers/thunkHelpers';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport {\n AccessRequestsAccessRequestIdApprovePatchRequest,\n AccessRequestsAccessRequestIdDenyPatchRequest,\n CompaniesCompanyIdDeleteRequest,\n CompaniesCompanyIdGetRequest,\n CompaniesCompanyIdPatchRequest,\n DocumentPermissionsDocumentPermissionIdDeleteRequest,\n DocumentsDocumentIdDownloadGetRequest,\n SectionsSectionIdGetRequest,\n SectionsSectionIdPatchRequest,\n TrusthubAccessRequestModel,\n TrusthubCompanyModel,\n TrusthubSectionModel,\n VendorTrusthubsVendorIdOrDomainAccessRequestsGetRequest,\n VendorTrusthubsVendorIdOrDomainAccessRequestsPostRequest,\n VendorTrusthubsVendorIdOrDomainCompaniesGetRequest,\n VendorTrusthubsVendorIdOrDomainCompaniesPostRequest,\n VendorTrusthubsVendorIdOrDomainSectionsGetRequest,\n VendorTrusthubsVendorIdOrDomainSettingsGetRequest,\n VendorTrusthubsVendorIdOrDomainSettingsPatchRequest,\n VendorTrusthubsVendorIdOrDomainVendorUsersActivityGetRequest,\n VendorTrusthubsVendorIdOrDomainVendorUsersGetRequest,\n VendorTrusthubsVendorIdOrDomainVendorUsersPostRequest,\n VendorUsersVendorUserIdDocumentPermissionsGetRequest,\n VendorUsersVendorUserIdGetRequest,\n VendorUsersVendorUserIdPatchRequest,\n TrusthubSettingsModel,\n TrusthubVendorUserModel,\n TrusthubInvitationModel,\n UsersInvitationPatchRequest,\n UsersInvitationsIdGetRequest,\n TrusthubInvitationCreatePayload,\n} from '../../../swagger/trusthub';\nimport { VoidThunk } from '../../../types/voidThunk';\nimport {\n authTrustHubFailure,\n authTrustHubRequest,\n authTrustHubSuccess,\n authTrustHubIdle,\n fetchTrustHubUserDetailsSuccess,\n denyAccessRequestFailure,\n denyAccessRequestRequest,\n denyAccessRequestSuccess,\n fetchAccessRequestsFailure,\n fetchAccessRequestsRequest,\n fetchAccessRequestsSuccess,\n fetchTrustHubCompaniesFailure,\n fetchTrustHubCompaniesRequest,\n fetchTrustHubCompaniesSuccess,\n fetchTrustHubSectionFailure,\n fetchTrustHubSectionRequest,\n fetchTrustHubSectionSuccess,\n fetchTrustHubSectionsFailure,\n fetchTrustHubSectionsRequest,\n fetchTrustHubSectionsSuccess,\n fetchTrustHubSettingsFailure,\n fetchTrustHubSettingsRequest,\n fetchTrustHubSettingsSuccess,\n fetchTrustHubVendorUsersFailure,\n fetchTrustHubVendorUsersRequest,\n fetchTrustHubVendorUsersSuccess,\n patchTrustHubVendorUserFailure,\n patchTrustHubVendorUserRequest,\n patchTrustHubVendorUserSuccess,\n postTrustHubCompanyFailure,\n postTrustHubCompanyRequest,\n postTrustHubCompanySuccess,\n updateTrustHubSectionFailure,\n updateTrustHubSectionRequest,\n updateTrustHubSectionSuccess,\n updateTrustHubSettingsFailure,\n updateTrustHubSettingsRequest,\n updateTrustHubSettingsSuccess,\n approveAccessRequestRequest,\n approveAccessRequestSuccess,\n approveAccessRequestFailure,\n fetchTrustHubCurrentCompanyRequest,\n fetchTrustHubCurrentCompanySuccess,\n fetchTrustHubCurrentCompanyFailure,\n patchTrustHubCompanySuccess,\n patchTrustHubCompanyRequest,\n patchTrustHubCompanyFailure,\n deleteTrustHubCompanySuccess,\n deleteTrustHubCompanyFailure,\n deleteTrustHubCompanyRequest,\n fetchTrustHubActivitiesFailure,\n fetchTrustHubActivitiesRequest,\n fetchTrustHubActivitiesSuccess,\n postTrustHubVendorUserRequest,\n postTrustHubVendorUserSuccess,\n postTrustHubVendorUserFailure,\n fetchTrustHubCompanyVendorUsersRequest,\n fetchTrustHubCompanyVendorUsersSuccess,\n fetchTrustHubCompanyVendorUsersFailure,\n fetchTrustHubVendorUserRequest,\n fetchTrustHubVendorUserSuccess,\n fetchTrustHubVendorUserFailure,\n postTrustHubAccessRequestRequest,\n postTrustHubAccessRequestSuccess,\n postTrustHubAccessRequestFailure,\n fetchTrustHubVendorUserDocumentPermissionsRequest,\n fetchTrustHubVendorUserDocumentPermissionsSuccess,\n fetchTrustHubVendorUserDocumentPermissionsFailure,\n deleteTrustHubVendorUserDocumentPermissionRequest,\n deleteTrustHubVendorUserDocumentPermissionSuccess,\n deleteTrustHubVendorUserDocumentPermissionFailure,\n hideTrustHubAuthModal,\n fetchVendorDocumentFileFailure,\n fetchVendorDocumentFileSuccess,\n fetchVendorDocumentFileRequest,\n setFetchingVendorDocumentIdFile,\n fetchTrustHubSettingsFailureCode,\n fetchTrustHubVendorUserActivitiesSuccess,\n fetchTrusthubAdminCurrentVendorUserRequest,\n fetchTrusthubAdminCurrentVendorUserSuccess,\n fetchTrusthubAdminCurrentVendorUserFailure,\n fetchTrustHubInvitationStatusRequest,\n fetchTrustHubInvitationStatusSuccess,\n fetchTrustHubInvitationStatusFailure,\n patchTrustHubInvitationStatusRequest,\n patchTrustHubInvitationStatusSuccess,\n patchTrustHubInvitationStatusFailure,\n fetchTrustHubAdminVendorUserDetailsRequest,\n fetchTrustHubAdminVendorUserDetailsSuccess,\n fetchTrustHubAdminVendorUserDetailsFailure,\n fetchTrustHubUserDetailsRequest,\n fetchTrustHubUserDetailsFinished,\n showTrustHubAuthModal,\n updateTrusthubSectionVisibilitySuccess,\n updateTrusthubSectionVisibilityRequest,\n updateTrusthubSectionVisibilityFailure,\n} from './trusthubSlice';\nimport { getMetaContent } from '../../../functions/getMetaContent';\nimport { getApiErrorMessage } from '../../../functions/getApiErrorMessage';\nimport { getRequest } from '../../../functions/getRequest';\nimport { VendorsIdVendorUsersTrusthubLoginPostRequest } from '../../../swagger';\nimport { trustHubRoutes } from '../user/TrustHubUserRoutes';\nimport { VendorsVendorIdControlsGetRequest } from '../../../swagger/apis/DefaultApi';\n\nexport const loginTrustHub =\n (email: string, password: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(authTrustHubRequest());\n const payload = JSON.stringify({\n trusthub_user: {\n email,\n password,\n },\n });\n const response = await fetch('/trusthub/api/v1/users/sign_in', {\n body: payload,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': getMetaContent('csrf-token'),\n },\n method: 'POST',\n });\n\n if (response.status === 201) {\n dispatch(fetchTrustHubUserDetails());\n dispatch(hideTrustHubAuthModal());\n } else {\n const message = await getApiErrorMessage(response);\n dispatch(authTrustHubFailure(message));\n }\n // TODO: update CSRF-token\n window.location.reload();\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred logging in. Please try again or contact support.'\n );\n console.log(err);\n dispatch(authTrustHubFailure(apiErrorMessage));\n }\n }\n };\n\nexport const logoutTrustHub = (): VoidThunk => async dispatch => {\n try {\n dispatch(authTrustHubRequest());\n await fetch('/trusthub/api/v1/users/sign_out', {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': getMetaContent('csrf-token'),\n },\n method: 'DELETE',\n });\n dispatch(authTrustHubIdle());\n // TODO: update CSRF-token\n window.location.reload();\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred logging out. Please try again or contact support.'\n );\n console.log(err);\n dispatch(authTrustHubFailure(apiErrorMessage));\n }\n }\n};\n\nexport const registerTrustHub =\n (\n {\n firstName,\n lastName,\n email,\n password,\n }: { firstName: string; lastName: string; email: string; password: string },\n onSuccess: () => void\n ): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(authTrustHubRequest());\n const domain = getState().trustHub.settings.domain;\n const payload = JSON.stringify({\n trusthub_user: {\n first_name: firstName,\n last_name: lastName,\n email,\n password,\n password_confirmation: password,\n domain,\n },\n });\n const response = await fetch('/trusthub/api/v1/users', {\n body: payload,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': getMetaContent('csrf-token'),\n },\n method: 'POST',\n });\n if (response.status === 201) {\n dispatch(showTrustHubAuthModal(null));\n dispatch(authTrustHubIdle());\n onSuccess();\n } else {\n const message = await getApiErrorMessage(response);\n dispatch(authTrustHubFailure(message));\n }\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred requesting account. Please try again or contact support.'\n );\n console.log(err);\n dispatch(authTrustHubFailure(apiErrorMessage));\n }\n }\n };\n\nexport const fetchTrustHubUserDetails = (): VoidThunk => async dispatch => {\n try {\n dispatch(authTrustHubRequest());\n dispatch(fetchTrustHubUserDetailsRequest());\n const response = await trusthubApi().userDetailsGet();\n dispatch(fetchTrustHubUserDetailsSuccess(response));\n dispatch(authTrustHubSuccess());\n } catch (err) {\n dispatch(fetchTrustHubUserDetailsFinished());\n if (err instanceof Response && err.status === 401) {\n dispatch(authTrustHubIdle());\n return;\n }\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching trusthub user details. Please try again or contact support.'\n );\n console.log(err);\n dispatch(authTrustHubFailure);\n }\n};\n// user flow\nexport const fetchTrustHubVendorUserDetails =\n (vendorTrusthubId: TrusthubSettingsModel['domain']): VoidThunk =>\n async dispatch => {\n try {\n dispatch(authTrustHubRequest());\n const response =\n await trusthubApi().vendorTrusthubsVendorTrusthubIdCurrentVendorUserDetailsGet(\n { vendorTrusthubId }\n );\n dispatch(fetchTrustHubUserDetailsSuccess(response));\n dispatch(authTrustHubSuccess());\n } catch (err) {\n if (err instanceof Response) {\n if (err.status === 401) {\n dispatch(authTrustHubIdle());\n return;\n }\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching trusthub settings. Please try again or contact support.'\n );\n }\n dispatch(authTrustHubFailure);\n }\n };\n\n// admin flow\nexport const fetchTrustHubAdminVendorUserDetails =\n (\n vendorTrusthubId: TrusthubSettingsModel['domain'],\n onSuccess?: (response: TrusthubVendorUserModel) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchTrustHubAdminVendorUserDetailsRequest());\n const response =\n await trusthubApi().vendorTrusthubsVendorTrusthubIdCurrentVendorUserDetailsGet(\n { vendorTrusthubId }\n );\n dispatch(fetchTrustHubAdminVendorUserDetailsSuccess(response));\n onSuccess && onSuccess(response);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching trusthub user details. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchTrustHubAdminVendorUserDetailsFailure);\n }\n };\n\nexport const recoveryTrustHubUserPassword =\n (email: string): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const domain = getState().trustHub.settings.domain;\n dispatch(authTrustHubRequest());\n const response = await trusthubApi().usersPasswordPost({\n body: { trusthubUser: { email, domain } },\n });\n dispatch(authTrustHubIdle());\n dispatch(hideTrustHubAuthModal());\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while recovery trusthub password. Please try again or contact support.'\n );\n console.log(err);\n }\n dispatch(hideTrustHubAuthModal());\n dispatch(authTrustHubFailure());\n }\n };\n\nexport const resetTrustHubUserPassword =\n (password: string, token: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(authTrustHubRequest());\n const payload = JSON.stringify({\n trusthub_user: {\n password,\n password_confirmation: password,\n reset_password_token: token,\n },\n });\n const response = await fetch('/trusthub/api/v1/users/password', {\n body: payload,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': getMetaContent('csrf-token'),\n },\n method: 'PATCH',\n });\n\n if (response.status === 204) {\n // TODO: update CSRF-token\n // redirect to user root page. ex: /trusthub/july_22\n window.location.href = window.location.href.split(\n trustHubRoutes.resetPassword\n )[0];\n } else {\n const message = await getApiErrorMessage(response);\n dispatch(authTrustHubFailure(message));\n }\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while resetting trusthub password. Please try again or contact support.'\n );\n console.log(err);\n }\n dispatch(authTrustHubFailure());\n }\n };\n\nexport const fetchTrustHubSettings =\n (\n params: VendorTrusthubsVendorIdOrDomainSettingsGetRequest,\n onSuccess?: (settings: TrusthubSettingsModel) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchTrustHubSettingsRequest());\n const response =\n await trusthubApi().vendorTrusthubsVendorIdOrDomainSettingsGet(params);\n dispatch(fetchTrustHubSettingsSuccess(response));\n onSuccess && onSuccess(response);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching trusthub settings. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchTrustHubSettingsFailure(apiErrorMessage));\n dispatch(fetchTrustHubSettingsFailureCode(err.status));\n }\n };\n\nexport const updateTrustHubSettings =\n (\n payload: VendorTrusthubsVendorIdOrDomainSettingsPatchRequest,\n onSuccess: (settings: TrusthubSettingsModel) => void,\n setLoadingStatus = true // don't show spinner on changing toggle switcher \"Publish\"\n ): VoidThunk =>\n async dispatch => {\n try {\n if (setLoadingStatus) dispatch(updateTrustHubSettingsRequest());\n const response =\n await trusthubApi().vendorTrusthubsVendorIdOrDomainSettingsPatch(\n payload\n );\n dispatch(updateTrustHubSettingsSuccess(response));\n onSuccess(response);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while updating trusthub settings. Please try again or contact support.'\n );\n console.log(err);\n dispatch(updateTrustHubSettingsFailure(apiErrorMessage));\n }\n };\n\nexport const fetchTrustHubSections =\n (\n params: VendorTrusthubsVendorIdOrDomainSectionsGetRequest,\n onSuccess: (sections: TrusthubSectionModel[]) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchTrustHubSectionsRequest());\n const response =\n await trusthubApi().vendorTrusthubsVendorIdOrDomainSectionsGet(params);\n dispatch(fetchTrustHubSectionsSuccess(response));\n onSuccess(response);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching trusthub sections. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchTrustHubSectionsFailure(apiErrorMessage));\n }\n };\n\nexport const fetchTrustHubSection =\n (\n params: SectionsSectionIdGetRequest,\n onSuccess: (section: TrusthubSectionModel) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchTrustHubSectionRequest());\n const response = await trusthubApi().sectionsSectionIdGet(params);\n dispatch(fetchTrustHubSectionSuccess(response));\n onSuccess(response);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching trusthub section. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchTrustHubSectionFailure(apiErrorMessage));\n }\n };\n\nexport const updateTrustHubSection =\n (\n params: SectionsSectionIdPatchRequest,\n onSuccess: (section: TrusthubSectionModel) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(updateTrustHubSectionRequest());\n const response = await trusthubApi().sectionsSectionIdPatch(params);\n dispatch(updateTrustHubSectionSuccess(response));\n onSuccess(response);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while updating trusthub section. Please try again or contact support.'\n );\n console.log(err);\n dispatch(updateTrustHubSectionFailure(apiErrorMessage));\n }\n };\n\nexport const updateTrustHubSectionVisibility =\n (params: SectionsSectionIdPatchRequest): VoidThunk =>\n async dispatch => {\n try {\n dispatch(updateTrusthubSectionVisibilityRequest());\n const response = await trusthubApi().sectionsSectionIdPatch(params);\n dispatch(updateTrusthubSectionVisibilitySuccess(response));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while updating trusthub section visibility. Please try again or contact support.'\n );\n console.log(err);\n dispatch(updateTrusthubSectionVisibilityFailure(apiErrorMessage));\n }\n };\n\nexport const fetchAccessRequests =\n (\n params: VendorTrusthubsVendorIdOrDomainAccessRequestsGetRequest\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchAccessRequestsRequest());\n const response =\n await trusthubApi().vendorTrusthubsVendorIdOrDomainAccessRequestsGet(\n params\n );\n dispatch(fetchAccessRequestsSuccess(response));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching access request. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchAccessRequestsFailure(apiErrorMessage));\n }\n };\n\nexport const denyAccessRequest =\n (\n params: AccessRequestsAccessRequestIdDenyPatchRequest,\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(denyAccessRequestRequest());\n const response =\n await trusthubApi().accessRequestsAccessRequestIdDenyPatch(params);\n dispatch(denyAccessRequestSuccess(response));\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while denying access request. Please try again or contact support.'\n );\n console.log(err);\n dispatch(denyAccessRequestFailure(apiErrorMessage));\n }\n };\nexport const approveAccessRequest =\n (\n params: AccessRequestsAccessRequestIdApprovePatchRequest,\n onSuccess?: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(approveAccessRequestRequest());\n const response =\n await trusthubApi().accessRequestsAccessRequestIdApprovePatch(params);\n dispatch(approveAccessRequestSuccess(response));\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while approving access request. Please try again or contact support.'\n );\n console.log(err);\n dispatch(approveAccessRequestFailure(apiErrorMessage));\n }\n };\n\nexport const fetchTrustHubCompanies =\n (\n params: VendorTrusthubsVendorIdOrDomainCompaniesGetRequest,\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchTrustHubCompaniesRequest());\n const response =\n await trusthubApi().vendorTrusthubsVendorIdOrDomainCompaniesGet(params);\n dispatch(fetchTrustHubCompaniesSuccess(response));\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching companies. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchTrustHubCompaniesFailure(apiErrorMessage));\n }\n };\n\n// Use cases:\n// 1) During approving request on /requests page\n// 2) During removing company user on /companies/:id page\n// 3) During patching on /users/:id\n\nexport const patchTrusthubVendorUser =\n (\n params: VendorUsersVendorUserIdPatchRequest,\n onSuccess?: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(patchTrustHubVendorUserRequest());\n const response = await trusthubApi().vendorUsersVendorUserIdPatch(params);\n dispatch(patchTrustHubVendorUserSuccess(response));\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while patching trusthub vendor user. Please try again or contact support.'\n );\n console.log(err);\n dispatch(patchTrustHubVendorUserFailure(apiErrorMessage));\n }\n };\n\nexport const fetchTrustHubVendorUsers =\n (\n params: VendorTrusthubsVendorIdOrDomainVendorUsersGetRequest,\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchTrustHubVendorUsersRequest());\n const response =\n await trusthubApi().vendorTrusthubsVendorIdOrDomainVendorUsersGet({\n ...params,\n perPage: '100',\n });\n dispatch(fetchTrustHubVendorUsersSuccess(response));\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching trusthub vendor users. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchTrustHubVendorUsersFailure(apiErrorMessage));\n }\n };\n\nexport const postTrusthubCompany =\n (\n params: VendorTrusthubsVendorIdOrDomainCompaniesPostRequest,\n onSuccess?: (company: TrusthubCompanyModel) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(postTrustHubCompanyRequest());\n const response =\n await trusthubApi().vendorTrusthubsVendorIdOrDomainCompaniesPost(\n params\n );\n dispatch(postTrustHubCompanySuccess(response));\n onSuccess && onSuccess(response);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while posting trusthub company. Please try again or contact support.'\n );\n console.log(err);\n dispatch(postTrustHubCompanyFailure(apiErrorMessage));\n }\n };\n\nexport const fetchTrustHubCompany =\n (\n params: CompaniesCompanyIdGetRequest,\n onSuccess: (company: TrusthubCompanyModel) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchTrustHubCurrentCompanyRequest());\n const response = await trusthubApi().companiesCompanyIdGet(params);\n dispatch(fetchTrustHubCurrentCompanySuccess(response));\n onSuccess(response);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching trusthub company. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchTrustHubCurrentCompanyFailure(apiErrorMessage));\n }\n };\n\nexport const patchTrusthubCompany =\n (params: CompaniesCompanyIdPatchRequest, onSuccess: () => void): VoidThunk =>\n async dispatch => {\n try {\n dispatch(patchTrustHubCompanyRequest());\n const response = await trusthubApi().companiesCompanyIdPatch(params);\n dispatch(patchTrustHubCompanySuccess(response));\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while patching trusthub company. Please try again or contact support.'\n );\n console.log(err);\n dispatch(patchTrustHubCompanyFailure(apiErrorMessage));\n }\n };\n\nexport const deleteTrusthubCompany =\n (params: CompaniesCompanyIdDeleteRequest, onSuccess: () => void): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deleteTrustHubCompanyRequest());\n await trusthubApi().companiesCompanyIdDelete(params);\n dispatch(deleteTrustHubCompanySuccess());\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while deleting trusthub company. Please try again or contact support.'\n );\n console.log(err);\n dispatch(deleteTrustHubCompanyFailure(apiErrorMessage));\n }\n };\n\n// 2 cases\n// on /requests page - all activites\n// on users/:id page for user activity\n\nexport const fetchTrustHubActivities =\n (\n params: VendorTrusthubsVendorIdOrDomainVendorUsersActivityGetRequest,\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchTrustHubActivitiesRequest());\n const response =\n await trusthubApi().vendorTrusthubsVendorIdOrDomainVendorUsersActivityGet(\n params\n );\n\n if (params.trusthubVendorUserId) {\n dispatch(fetchTrustHubVendorUserActivitiesSuccess(response.data));\n } else {\n dispatch(fetchTrustHubActivitiesSuccess(response.data));\n }\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching trusthub activities. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchTrustHubActivitiesFailure(apiErrorMessage));\n }\n };\n\nexport const postTrusthubVendorUser =\n (\n params: VendorTrusthubsVendorIdOrDomainVendorUsersPostRequest,\n onSuccess: (user: TrusthubVendorUserModel) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(postTrustHubVendorUserRequest());\n const response =\n await trusthubApi().vendorTrusthubsVendorIdOrDomainVendorUsersPost(\n params\n );\n dispatch(postTrustHubVendorUserSuccess(response));\n onSuccess && onSuccess(response);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while posting trusthub user. Please try again or contact support.'\n );\n console.log(err);\n dispatch(postTrustHubVendorUserFailure(apiErrorMessage));\n }\n };\n\nexport const fetchTrustHubCompanyVendorUsers =\n (\n params: VendorTrusthubsVendorIdOrDomainVendorUsersGetRequest,\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchTrustHubCompanyVendorUsersRequest());\n const response =\n await trusthubApi().vendorTrusthubsVendorIdOrDomainVendorUsersGet(\n params\n );\n dispatch(fetchTrustHubCompanyVendorUsersSuccess(response));\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching trusthub company vendor users. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchTrustHubCompanyVendorUsersFailure(apiErrorMessage));\n }\n };\n\nexport const fetchTrustHubVendorUser =\n (\n params: VendorUsersVendorUserIdGetRequest,\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchTrustHubVendorUserRequest());\n const response = await trusthubApi().vendorUsersVendorUserIdGet(params);\n dispatch(fetchTrustHubVendorUserSuccess(response));\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching trusthub vendor user. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchTrustHubVendorUserFailure(apiErrorMessage));\n }\n };\n\nexport const postTrustHubAccessRequest =\n (\n params: VendorTrusthubsVendorIdOrDomainAccessRequestsPostRequest,\n onSuccess: (user: TrusthubAccessRequestModel) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(postTrustHubAccessRequestRequest());\n const response =\n await trusthubApi().vendorTrusthubsVendorIdOrDomainAccessRequestsPost(\n params\n );\n\n dispatch(postTrustHubAccessRequestSuccess(response));\n onSuccess && onSuccess(response);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while posting trusthub access request. Please try again or contact support.'\n );\n console.log(err);\n dispatch(postTrustHubAccessRequestFailure(apiErrorMessage));\n }\n };\n\nexport const fetchTrustHubVendorUserDocumentPermissions =\n (params: VendorUsersVendorUserIdDocumentPermissionsGetRequest): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchTrustHubVendorUserDocumentPermissionsRequest());\n const response =\n await trusthubApi().vendorUsersVendorUserIdDocumentPermissionsGet(\n params\n );\n dispatch(fetchTrustHubVendorUserDocumentPermissionsSuccess(response));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching vendor user document permissions. Please try again or contact support.'\n );\n console.log(err);\n dispatch(\n fetchTrustHubVendorUserDocumentPermissionsFailure(apiErrorMessage)\n );\n }\n };\n\nexport const deleteTrustHubVendorUserDocumentPermission =\n (\n params: DocumentPermissionsDocumentPermissionIdDeleteRequest,\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deleteTrustHubVendorUserDocumentPermissionRequest());\n await trusthubApi().documentPermissionsDocumentPermissionIdDelete(params);\n dispatch(\n deleteTrustHubVendorUserDocumentPermissionSuccess(\n params.documentPermissionId\n )\n );\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while removing user document permission. Please try again or contact support.'\n );\n console.log(err);\n dispatch(\n deleteTrustHubVendorUserDocumentPermissionFailure(apiErrorMessage)\n );\n }\n };\n\nexport const fetchTrustHubVendorDocumentFile =\n (\n params: DocumentsDocumentIdDownloadGetRequest,\n onSuccess: (url: string) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(setFetchingVendorDocumentIdFile(params.documentId));\n dispatch(fetchVendorDocumentFileRequest());\n // TODO: fix BE swag void type issue\n const response = await getRequest(\n `${TRUSTHUB_BASE_PATH}/documents/${params.documentId}/download`\n );\n const convertedData = await response.blob();\n const url = URL.createObjectURL(convertedData);\n dispatch(fetchVendorDocumentFileSuccess());\n onSuccess(url);\n dispatch(setFetchingVendorDocumentIdFile(null));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while downloading vendor document file Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchVendorDocumentFileFailure(apiErrorMessage));\n dispatch(setFetchingVendorDocumentIdFile(null));\n }\n };\n\nexport const fetchTrusthubAdminCurrentVendorUser =\n (\n params: VendorsIdVendorUsersTrusthubLoginPostRequest,\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchTrusthubAdminCurrentVendorUserRequest());\n\n await mainProjectApi().vendorsIdVendorUsersTrusthubLoginPost(params);\n\n dispatch(fetchTrusthubAdminCurrentVendorUserSuccess());\n onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred during trusthub admin vendor user login. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchTrusthubAdminCurrentVendorUserFailure(apiErrorMessage));\n }\n };\n\nexport const fetchTrustHubInvitation =\n (\n params: UsersInvitationsIdGetRequest,\n onSuccess: (model: TrusthubInvitationModel) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchTrustHubInvitationStatusRequest());\n const response = await trusthubApi().usersInvitationsIdGet(params);\n\n dispatch(fetchTrustHubInvitationStatusSuccess(response));\n onSuccess(response);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred during fetching trusthub invitation details. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchTrustHubInvitationStatusFailure(apiErrorMessage));\n // redirect to root page\n await new Promise(resolve => setTimeout(resolve, 1000));\n window.location.href = window.location.href.split(\n trustHubRoutes.registerInvite\n )[0];\n }\n };\n\nexport const patchTrustHubInvitation =\n (params: UsersInvitationPatchRequest, onSuccess: () => void): VoidThunk =>\n async dispatch => {\n try {\n dispatch(patchTrustHubInvitationStatusRequest());\n await trusthubApi().usersInvitationPatch(params);\n\n dispatch(patchTrustHubInvitationStatusSuccess());\n onSuccess();\n // TODO: update CSRF-token\n // redirect to user root page. ex: /trusthub/july_22\n window.location.href = window.location.href.split(\n trustHubRoutes.registerInvite\n )[0];\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred during patching trusthub invitation. Please try again or contact support.'\n );\n console.log(err);\n dispatch(patchTrustHubInvitationStatusFailure(apiErrorMessage));\n }\n };\n\nexport const postTrustHubInvitation = createAsyncThunk(\n 'trusthub/postTrustHubInvitation',\n async (params: TrusthubInvitationCreatePayload, { dispatch }) => {\n try {\n await trusthubApi().usersInvitationPost({\n body: params,\n });\n } catch (error) {\n await handleThunkError(\n 'An error occurred while posting trusthub invitation. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchTrusthubCategories = createAsyncThunk(\n 'trusthub/fetchTrusthubCategories',\n async (\n params: VendorTrusthubsVendorIdOrDomainSectionsGetRequest,\n { dispatch }\n ) => {\n try {\n return await trusthubApi().vendorTrusthubsVendorIdOrDomainCategoriesGet(\n params\n );\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching trusthub categories. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n fetchTrusthubCategories,\n fetchTrustHubSection,\n updateTrustHubSection,\n} from '../store/trusthubThunks';\nimport { ApplicationState } from '../../../types/applicationState';\nimport {\n TrusthubSectionModel,\n TrusthubDocumentModel,\n SectionsSectionIdPatchRequest,\n TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesDocumentTypeEnum,\n TrusthubDocumentExtended,\n TrusthubDocumentModelVisibilityEnum,\n TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesVisibilityEnum,\n TrusthubCategoryModel,\n} from '../../../swagger/trusthub';\nimport { ApiRequestStatus } from '../../../store/global/globalState';\nimport { useAppDispatch } from '../../../hooks/useAppDispatch';\nimport { uniqArrayObjects } from '../../../functions/uniqueArrayObjects';\n\nexport interface EditSectionProps {\n section: TrusthubSectionModel;\n onClose: () => void;\n baseCss?: string;\n titleBar?: JSX.Element;\n editSectionHandler?: EditSectionHandlerType;\n bulkActionsRow?: JSX.Element;\n identifier?: string; //used for bottom sections reports and policies\n}\n\nexport type TrusthubFormDocument = {\n documentId: string; // id can be null for templates\n checked: boolean;\n visibility: FormDocumentVisibility;\n trusthubCategoryId: string; // used for controls\n description: string;\n rowOrder?: number; // needed only for controls admin right panel for ordering\n};\n\nexport type EditSectionHandlerType = {\n fetchingCurrentSection: boolean;\n sectionDescription: any;\n setSectionDescription: React.Dispatch;\n handleCheckboxChange: (checked: boolean, doc: TrusthubDocumentModel) => void;\n updateSectionStatus: ApiRequestStatus;\n sortedDocsToEdit: TrusthubDocumentExtended[];\n handleSave: () => void;\n fetchCurrentSection: () => void;\n handleCheckboxAllChange: (opts?: { filterIds?: string[] }) => void;\n handleVisibilityChange: (e: { value: any }) => void;\n formDocuments: TrusthubFormDocument[];\n // for controls section\n fetchCategories: (vendorIdOrDomain: string) => void;\n formCategories: TrusthubCategoryModel[];\n setFormCategories: React.Dispatch;\n handleDeselectAll: () => void;\n handleAddControlsToCategory: ({\n categoryId,\n controlIds,\n }: {\n categoryId: string;\n controlIds: string[];\n }) => void;\n handleAddControlsToRow: ({\n categoryId,\n controlIds,\n rowTargetRowOrder,\n }: {\n categoryId: string;\n controlIds: string[];\n rowTargetRowOrder: number;\n }) => void;\n handleDeleteControl: (controlId: string) => void;\n updateDocumentField: (documentId: string, field: string, value: any) => void;\n};\n\nexport enum FormDocumentVisibility {\n Destroy = 'destroy',\n Public = TrusthubDocumentModelVisibilityEnum.Public,\n PrivateUnlocked = TrusthubDocumentModelVisibilityEnum.PrivateUnlocked,\n PrivateLocked = TrusthubDocumentModelVisibilityEnum.PrivateLocked,\n}\n\n// Logic for fetching and saving current section ( after checkboxes items selected ) in Edit mode\n\nexport const useEditTrustHubSection = ({\n section,\n onClose,\n}: EditSectionProps) => {\n const dispatch = useAppDispatch();\n\n const [formDocuments, setFormDocuments] = useState(\n []\n );\n\n const { updateSectionStatus } = useSelector(\n (state: ApplicationState) => state.trustHub\n );\n\n const [fetchingCurrentSection, setFetchingCurrentSection] = useState(false);\n const [sectionDescription, setSectionDescription] = useState(null);\n const fetchCurrentSection = () => {\n setSectionDescription(section.description);\n setFetchingCurrentSection(true);\n dispatch(\n fetchTrustHubSection(\n {\n includeTemplates: true,\n sectionId: section.id,\n },\n (sectionPayload: TrusthubSectionModel) => {\n setFetchingCurrentSection(false);\n\n setFormDocuments(\n sectionPayload.trusthubDocuments.map(doc => ({\n documentId: doc.documentId,\n checked: false,\n description: doc.description,\n trusthubCategoryId: doc.trusthubCategoryId,\n rowOrder: doc.rowOrder,\n visibility:\n doc.id || section.identifier === 'controls'\n ? (doc.visibility as unknown as FormDocumentVisibility)\n : FormDocumentVisibility.Destroy,\n }))\n );\n }\n )\n );\n };\n\n // for categories ( controls section )\n const [formCategories, setFormCategories] = useState(\n []\n );\n\n const fetchCategories = async (vendorIdOrDomain: string) => {\n const categories = await dispatch(\n fetchTrusthubCategories({ vendorIdOrDomain })\n ).unwrap();\n setFormCategories(categories);\n };\n\n const handleCheckboxChange: EditSectionHandlerType['handleCheckboxChange'] = (\n checked,\n doc\n ) => {\n setFormDocuments(prevFormDocuments => {\n return prevFormDocuments.map(prevFormDoc => {\n if (prevFormDoc.documentId === doc.documentId) {\n return {\n ...prevFormDoc,\n checked: checked,\n };\n }\n return prevFormDoc;\n });\n });\n };\n\n const handleAddControlsToCategory: EditSectionHandlerType['handleAddControlsToCategory'] =\n ({ categoryId, controlIds }) => {\n return setFormDocuments(prevFormDocuments => {\n const lastIndex = (arr: TrusthubFormDocument[]) => {\n if (arr.length > 0) {\n return arr[arr.length - 1].rowOrder;\n } else {\n return 0;\n }\n };\n\n return prevFormDocuments.map(prevFormDoc => {\n if ((controlIds || []).includes(prevFormDoc.documentId)) {\n return {\n ...prevFormDoc,\n trusthubCategoryId: categoryId,\n checked: false,\n visibility: section.trusthubDocuments.find(\n doc => doc.documentId === prevFormDoc.documentId\n )?.visibility as unknown as FormDocumentVisibility,\n rowOrder:\n lastIndex(\n prevFormDocuments\n .filter(doc => doc.trusthubCategoryId === categoryId)\n .sort((a, b) => a.rowOrder - b.rowOrder)\n ) + 1,\n };\n } else {\n return { ...prevFormDoc, checked: false };\n }\n });\n });\n };\n\n const insertArrayAfterIndex = (\n originalArray: T[],\n newArray: T[],\n index: number\n ): T[] => {\n return [\n ...originalArray.slice(0, index + 1),\n ...newArray,\n ...originalArray.slice(index + 1),\n ];\n };\n\n const handleAddControlsToRow: EditSectionHandlerType['handleAddControlsToRow'] =\n ({ categoryId, controlIds, rowTargetRowOrder }) => {\n if (!categoryId || !controlIds || rowTargetRowOrder === undefined) {\n console.error('invalid drag and drop params', {\n categoryId,\n controlIds,\n rowTargetRowOrder,\n });\n return;\n }\n setFormDocuments(prevFormDocuments => {\n const newControls = controlIds.map(controlId => {\n const formDoc = prevFormDocuments.find(\n doc => doc.documentId === controlId\n );\n\n return formDoc;\n });\n\n // needed to exclude self if move to item in the same category\n const listWithoutDocs = (\n list: TrusthubFormDocument[],\n newList: TrusthubFormDocument[]\n ) => {\n return list.filter(\n categoryDoc =>\n !newList\n .map(doc => doc.documentId)\n .includes(categoryDoc.documentId)\n );\n };\n\n const categoryDocuments = listWithoutDocs(\n [...prevFormDocuments].filter(\n doc => doc.trusthubCategoryId === categoryId\n ),\n newControls\n ).sort((a, b) => a.rowOrder - b.rowOrder);\n\n const rowTargetRowIndex = categoryDocuments.findIndex(\n doc => doc.rowOrder === rowTargetRowOrder\n );\n\n if (rowTargetRowIndex < 0) {\n // if drag and drop on the same place\n return prevFormDocuments;\n }\n\n const newCategoryDocuments = insertArrayAfterIndex(\n categoryDocuments,\n newControls,\n rowTargetRowIndex\n );\n\n const newSortedDocuments = newCategoryDocuments.map((doc, index) => {\n return {\n ...doc,\n rowOrder: index,\n checked: false,\n trusthubCategoryId: categoryId,\n visibility: section.trusthubDocuments.find(\n trusthubDoc => trusthubDoc.documentId === doc.documentId\n )?.visibility as unknown as FormDocumentVisibility,\n };\n });\n\n return prevFormDocuments.map(prevFormDocument => {\n return (\n newSortedDocuments.find(\n sortedDoc => sortedDoc.documentId === prevFormDocument.documentId\n ) || prevFormDocument\n );\n });\n });\n };\n\n // used for controls when change framework\n const handleDeselectAll = () => {\n setFormDocuments(prevFormDocuments => {\n return prevFormDocuments.map(prevFormDoc => {\n return { ...prevFormDoc, checked: false };\n });\n });\n };\n\n const handleDeleteControl = (controlId: string) => {\n setFormDocuments(prevFormDocuments => {\n return prevFormDocuments.map(doc => {\n if (doc.documentId === controlId) {\n return {\n ...doc,\n checked: false,\n trusthubCategoryId: null,\n visibility: FormDocumentVisibility.Destroy,\n rowOrder: 0,\n };\n }\n return doc;\n });\n });\n };\n\n const handleVisibilityChange = (e: { value: any }) => {\n const newVisibility = e.value;\n setFormDocuments(prevFormDocuments => {\n return prevFormDocuments.map(prevFormDoc => {\n return prevFormDoc.checked\n ? {\n ...prevFormDoc,\n visibility: newVisibility,\n checked: false,\n }\n : prevFormDoc;\n });\n });\n };\n const handleCheckboxAllChange = (opts?: { filterIds?: string[] }) => {\n if (opts.filterIds) {\n // for left panel in controls filter by visible items\n return setFormDocuments(prevFormDocuments => {\n const allFilteredDocsSelected = prevFormDocuments\n .filter(prevFormDoc =>\n opts.filterIds.includes(prevFormDoc.documentId)\n )\n .every(prevFormDoc => {\n return prevFormDoc.checked;\n });\n\n return prevFormDocuments.map(prevFormDoc => {\n return {\n ...prevFormDoc,\n checked: opts.filterIds.includes(prevFormDoc.documentId)\n ? !allFilteredDocsSelected\n : false,\n };\n });\n });\n }\n\n setFormDocuments(prevFormDocuments => {\n const allDocsSelected = prevFormDocuments.every(prevFormDoc => {\n return prevFormDoc.checked;\n });\n return prevFormDocuments.map(prevFormDoc => {\n return {\n ...prevFormDoc,\n checked: !allDocsSelected,\n };\n });\n });\n };\n\n // used for updating control description\n const updateDocumentField = (\n documentId: string,\n field: string,\n value: any\n ) => {\n setFormDocuments(prevFormDocuments => {\n return prevFormDocuments.map(prevFormDoc => {\n if (prevFormDoc.documentId === documentId) {\n return {\n ...prevFormDoc,\n [field]: value,\n };\n }\n return prevFormDoc;\n });\n });\n };\n\n const handleSave = () => {\n const trusthubDocumentsAttributes = section.trusthubDocuments\n .map(doc => {\n const isControls = section.identifier === 'controls';\n const formDoc = formDocuments.find(\n formDocument => doc.documentId === formDocument.documentId\n );\n\n const rightPanelControl = formDoc.trusthubCategoryId;\n const leftPanelRemovedControl =\n !formDoc.trusthubCategoryId &&\n formDoc.visibility === FormDocumentVisibility.Destroy;\n\n if (isControls && !(rightPanelControl || leftPanelRemovedControl)) {\n return null;\n }\n\n const payloadDoc: SectionsSectionIdPatchRequest['body']['trusthubSection']['trusthubDocumentsAttributes'][0] =\n {\n id: doc.id,\n destroy: formDoc.visibility === FormDocumentVisibility.Destroy,\n name: doc.name,\n documentId: doc.documentId,\n trusthubCategoryId: formDoc.trusthubCategoryId,\n rowOrderPosition: formDoc.rowOrder,\n description: formDoc.description,\n visibility:\n formDoc.visibility === FormDocumentVisibility.Destroy\n ? null\n : (formDoc.visibility as unknown as TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesVisibilityEnum),\n documentType:\n doc.documentType as TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesDocumentTypeEnum,\n };\n return payloadDoc;\n })\n .filter(doc => doc);\n const payload: SectionsSectionIdPatchRequest = {\n sectionId: section.id,\n body: {\n trusthubSection: {\n description: sectionDescription,\n trusthubDocumentsAttributes: trusthubDocumentsAttributes,\n },\n },\n };\n\n dispatch(updateTrustHubSection(payload, () => onClose()));\n };\n\n const docsToEdit = section?.trusthubDocuments || [];\n const sortedDocsToEdit = [...docsToEdit].sort(\n (a, b) => a.rowOrder - b.rowOrder\n );\n\n const result: EditSectionHandlerType = {\n fetchingCurrentSection,\n sectionDescription,\n setSectionDescription,\n handleCheckboxChange,\n updateSectionStatus,\n handleVisibilityChange,\n sortedDocsToEdit,\n handleSave,\n fetchCurrentSection,\n handleCheckboxAllChange,\n formDocuments,\n fetchCategories,\n formCategories,\n setFormCategories,\n handleDeselectAll,\n handleAddControlsToCategory,\n handleAddControlsToRow,\n handleDeleteControl,\n updateDocumentField,\n };\n return result;\n};\n","import React, { useState } from 'react';\nimport { ToggleSwitch } from '../../components/ToggleSwitch/ToggleSwitch';\nimport { useDispatch } from 'react-redux';\nimport { updateTrustHubSectionVisibility } from './store/trusthubThunks';\nimport { SectionsSectionIdPatchRequest } from '../../swagger/trusthub/apis/DefaultApi';\nimport { TrusthubSectionModel } from '../../swagger/trusthub/models/TrusthubSectionModel';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../components/AdoptechButton/AdoptechButton';\nimport {\n FormDocumentVisibility,\n TrusthubFormDocument,\n useEditTrustHubSection,\n} from './admin/useEditTrustHubSection';\nimport { AdoptechCheckbox } from '../../components/AdoptechCheckbox/AdoptechCheckbox';\nimport { AdoptechReactSelect } from '../../components/AdoptechReactSelect/AdoptechReactSelect';\nimport { reactSelectLightBiggerStyle } from '../../functions/reactSelectCustomTheme';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { SelectionOption } from '../../types/selectionOption';\nimport { faEyeSlash } from '@fortawesome/pro-light-svg-icons/faEyeSlash';\nimport {\n faLock,\n faLockKeyholeOpen,\n faUserGroup,\n} from '@fortawesome/pro-light-svg-icons';\nimport { AdoptechTooltip } from '../../components/AdoptechTooltip/AdoptechTooltip';\nimport { faPencil } from '@fortawesome/pro-light-svg-icons/faPencil';\nimport { ConfirmationModal } from '../../components/ConfirmationModal/ConfirmationModal';\nimport { CommandConfirmation } from '../../types/CommandConfirmation';\n\nexport const bulkActionOptions = [\n {\n value: FormDocumentVisibility.Destroy,\n label: 'Do not show',\n icon: faEyeSlash,\n description: 'Hide the document from public view',\n },\n {\n value: FormDocumentVisibility.Public,\n label: 'Public',\n icon: faUserGroup,\n description: 'Document viewable by everyone',\n },\n // deprecated\n // {\n // value: FormDocumentVisibility.PrivateUnlocked,\n // label: 'Private and Unlocked',\n // icon: faLockKeyholeOpen,\n // description: 'Approved users can view document',\n // },\n {\n value: FormDocumentVisibility.PrivateLocked,\n label: 'Private and Locked',\n icon: faLock,\n description: 'Users require access to view document',\n },\n];\n\nexport interface UseTrustHubSectionProps {\n identifier: string;\n sections: TrusthubSectionModel[];\n isEditable: boolean;\n confirmOnDelete?: boolean;\n}\n\nexport const useTrustHubSection = ({\n identifier,\n sections,\n isEditable,\n confirmOnDelete,\n}: UseTrustHubSectionProps) => {\n const dispatch = useDispatch();\n const [isEditMode, setIsEditMode] = useState(false);\n const section = (sections || []).find(\n sectionModel => sectionModel.identifier === identifier\n );\n\n const baseCss = `${\n identifier.startsWith('environmental') ? 'esg' : identifier\n }Section`;\n const publicDocs = section\n ? [...section.trusthubDocuments.filter(doc => doc.id)].sort(\n (a, b) => a.rowOrder - b.rowOrder\n )\n : [];\n\n const onClose = () => setIsEditMode(false);\n\n const editSectionHandler = useEditTrustHubSection({\n section,\n onClose,\n });\n\n const [currentCommand, command] = useState(null);\n\n const removeCommand = (model: TrusthubFormDocument): CommandConfirmation => ({\n title: 'Are you sure you want to cancel?',\n description: 'You will lose any changes that have been made.',\n buttonVariant: AdoptechButtonVariant.Warning,\n buttonText: 'Discard changes',\n onConfirm: () => onClose(),\n showCancelButton: true,\n cancelButtonText: 'Keep editing',\n });\n\n const {\n sectionDescription,\n updateSectionStatus,\n handleSave,\n formDocuments,\n handleCheckboxAllChange,\n handleVisibilityChange,\n } = editSectionHandler;\n\n const isControls = identifier === 'controls';\n const titleBar = section && (\n
\n
\n
{section.name}
\n
\n
\n {isEditable && (\n {\n const payload: SectionsSectionIdPatchRequest = {\n sectionId: section.id,\n body: {\n trusthubSection: {\n visible: !section.visible,\n },\n },\n };\n\n dispatch(updateTrustHubSectionVisibility(payload));\n }}\n switchStyles={{\n width: 35,\n height: 18,\n offHandleColor: '#fff',\n onColor: '#666665',\n }}\n checked={!section.visible}\n />\n )}\n\n {isEditable && !isEditMode && isControls && (\n <>\n
\n
\n setIsEditMode(true)}\n variant={AdoptechButtonVariant.White}\n >\n Edit\n \n
\n \n )}\n\n {isEditMode && (\n <>\n
\n
\n \n confirmOnDelete ? command(removeCommand) : onClose()\n }\n variant={AdoptechButtonVariant.White}\n >\n Cancel\n \n \n Save\n \n
\n command(null)}\n />\n \n )}\n
\n
\n );\n\n const checkedDocs = formDocuments.filter(formDoc => formDoc.checked).length;\n const isBulkActionsDisabled = checkedDocs === 0;\n\n const bulkActionsRow = section && (\n
\n {\n handleCheckboxAllChange();\n }}\n label=\"Select all\"\n />\n \n
\n {\n const configOption = bulkActionOptions.find(\n bulkActionOption => bulkActionOption.value === option.value\n );\n return (\n
\n \n
\n
\n {configOption.label}\n
\n
\n {configOption.description}\n
\n
\n
\n );\n }}\n />\n
\n \n
\n );\n\n return {\n isEditMode,\n setIsEditMode,\n section,\n publicDocs,\n titleBar,\n baseCss,\n bulkActionsRow,\n editSectionHandler,\n };\n};\n","import React from 'react';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../components/AdoptechButton/AdoptechButton';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n setShowRequestDocumentModal,\n showTrustHubAuthModal,\n} from '../../store/trusthubSlice';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { LoadingSpinner } from '../../../../components/LoadingSpinner/LoadingSpinner';\nimport { selectCurrentUser } from '../../store/trusthubSelectors';\nimport { logoutTrustHub } from '../../store/trusthubThunks';\nimport { faRightToBracket } from '@fortawesome/pro-light-svg-icons/faRightToBracket';\nimport { faRightFromBracket } from '@fortawesome/pro-light-svg-icons/faRightFromBracket';\nimport { faUserPlus } from '@fortawesome/pro-solid-svg-icons/faUserPlus';\nimport { faKey } from '@fortawesome/pro-light-svg-icons/faKey';\nimport { UserAvatar } from '../../../../components/UserAvatar/UserAvatar';\n\nexport const TrustHubUserPageHeaderButtons: React.FC = () => {\n const dispatch = useDispatch();\n\n const currentUser = useSelector(selectCurrentUser);\n\n const handleLoginModal = () => dispatch(showTrustHubAuthModal('login'));\n const handleLogout = () => dispatch(logoutTrustHub());\n const handleSignupModal = () => dispatch(showTrustHubAuthModal('required'));\n const handleRequestDocModal = () =>\n dispatch(setShowRequestDocumentModal(true));\n\n const status = useSelector(\n (state: ApplicationState) => state.trustHub.auth.status\n );\n\n const baseCss = 'userButtons';\n\n return (\n <>\n {(status === 'idle' || status === 'failed') && (\n <>\n \n Login\n \n \n Create Account\n \n \n )}\n {status === 'succeeded' && (\n <>\n \n Request Access\n \n \n Logout\n \n \n )}\n\n {currentUser && (\n \n )}\n {status === 'loading' && }\n \n );\n};\n","import React from 'react';\nimport {\n DocumentPermissionTableRowProps,\n trusthubSectionName,\n} from '../../../admin/UserAdmin/TrusthubUserAdminAddDocumentPermissionDrawer/DocumentPermissionTableRow/DocumentPermissionTableRow';\nimport { AdoptechCheckbox } from '../../../../../components/AdoptechCheckbox/AdoptechCheckbox';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faLockAlt } from '@fortawesome/pro-light-svg-icons/faLockAlt';\nimport { faClock } from '@fortawesome/pro-solid-svg-icons/faClock';\nimport { TrusthubDocumentExtended } from '../../../../../swagger/trusthub';\nimport { faCloudDownloadAlt } from '@fortawesome/pro-light-svg-icons/faCloudDownloadAlt';\nimport { faCheckCircle } from '@fortawesome/pro-solid-svg-icons/faCheckCircle';\nimport { useTrusthubDocumentDownload } from '../../TrustHubUserPage/TrustHubUserPage';\nimport { useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../../types/applicationState';\nimport { LoadingSpinner } from '../../../../../components/LoadingSpinner/LoadingSpinner';\nimport { AdoptechTooltip } from '../../../../../components/AdoptechTooltip/AdoptechTooltip';\n\nexport const RequestDocumentModalDocumentSection: React.FC<\n DocumentPermissionTableRowProps\n> = ({ section, formData, setFormData }) => {\n const baseCss = 'trusthubRequestDocumentModal';\n\n const sectionDocs = section.trusthubDocuments;\n const { fetchVendorDocumentFileStatus, fetchingVendorDocumentIdFile } =\n useSelector((state: ApplicationState) => state.trustHub);\n const isDocumentChecked = (document: TrusthubDocumentExtended): boolean => {\n return (formData.selectedDocumentsIds || []).includes(document.id);\n };\n const handleDownload = useTrusthubDocumentDownload();\n const handleDocumentSelect = (document: TrusthubDocumentExtended) => {\n setFormData(prevFormData => {\n const docChecked = (prevFormData.selectedDocumentsIds || []).includes(\n document.id\n );\n const allIds = (prevFormData.selectedDocumentsIds || []).concat(\n document.id\n );\n const excludeIds = (prevFormData.selectedDocumentsIds || []).filter(\n id => id !== document.id\n );\n\n const payload = {\n selectedDocumentsIds: docChecked ? excludeIds : allIds,\n };\n\n return {\n ...prevFormData,\n ...payload,\n };\n });\n };\n\n return (\n <>\n
\n {trusthubSectionName(section.name)}\n
\n\n
\n {sectionDocs.map(doc => {\n return (\n {\n if (doc.requested) return;\n if (doc.restricted) {\n handleDocumentSelect(doc);\n return;\n }\n handleDownload(doc);\n }}\n >\n {doc.restricted ? (\n
\n {doc.requested ? (\n \n \n \n ) : (\n {\n e.stopPropagation();\n handleDocumentSelect(doc);\n }}\n label={
-
}\n />\n )}\n
\n {doc.name}\n
\n
\n ) : (\n <>\n \n
{doc.name}
\n \n )}\n {fetchVendorDocumentFileStatus === 'loading' &&\n fetchingVendorDocumentIdFile === doc.id ? (\n \n ) : (\n \n )}\n
\n );\n })}\n \n \n );\n};\n","import React, { useMemo, useState } from 'react';\nimport AdoptechModal from '../../../../components/AdoptechModal/AdoptechModal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faXmark } from '@fortawesome/pro-light-svg-icons/faXmark';\nimport { AdoptechTextInput } from '../../../../components/AdoptechTextInput/AdoptechTextInput';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { faSearch } from '@fortawesome/pro-light-svg-icons/faSearch';\nimport './TrustHubRequestDocumentModal.scss';\nimport { AddDocumentPermissionFormData } from '../../admin/UserAdmin/TrusthubUserAdminAddDocumentPermissionDrawer/TrusthubUserAdminAddDocumentPermissionDrawer';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { postTrustHubAccessRequest } from '../../store/trusthubThunks';\nimport { showGlobalToast } from '../../../../store/global/globalSlice';\nimport { currentTrustHubDomain } from '../TrustHubUserPage/TrustHubUserPage';\nimport { RequestDocumentModalDocumentSection } from './RequestDocumentModalDocumentSection/RequestDocumentModalDocumentSection';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../components/AdoptechButton/AdoptechButton';\nimport Fuse from 'fuse.js';\nimport { NoDataText } from '../../../../components/NoDataText/NoDataText';\nimport { selectCurrentUser } from '../../store/trusthubSelectors';\n\ninterface TrustHubRequestDocumentModalProps {\n onClose: () => void;\n}\nexport const TrustHubRequestDocumentModal: React.FC<\n TrustHubRequestDocumentModalProps\n> = ({ onClose }) => {\n const baseCss = 'trusthubRequestDocumentModal';\n\n const [documentsSearch, setDocumentsSearch] = useState('');\n const dispatch = useDispatch();\n const [formData, setFormData] = useState({});\n const user = useSelector(selectCurrentUser);\n const { createAccessRequestStatus, sections: allSections } = useSelector(\n (state: ApplicationState) => state.trustHub\n );\n const domain = currentTrustHubDomain();\n const handleSubmit = () => {\n dispatch(\n postTrustHubAccessRequest(\n {\n vendorIdOrDomain: domain,\n body: {\n trusthubAccessRequest: {\n trusthubVendorUserId: user.id,\n trusthubDocumentIds: formData.selectedDocumentsIds,\n },\n },\n },\n _ => {\n dispatch(\n showGlobalToast(\n 'Request sent. Our team is reviewing your request and you will receive an email if access is approved.'\n )\n );\n onClose();\n }\n )\n );\n };\n\n let sections = [...allSections];\n\n const fuse = new Fuse(sections, {\n ignoreLocation: true,\n includeScore: true,\n keys: ['name', 'trusthubDocuments.name'],\n threshold: 0,\n });\n\n if (documentsSearch) {\n sections = fuse.search(documentsSearch).map(x => x.item);\n }\n\n const sectionsList = useMemo(() => {\n return sections\n .filter(section => section.visible)\n .sort((a, b) => a.rowOrder || 0 - b.rowOrder || 0)\n .filter(section => section.trusthubDocuments.length > 0)\n .map(section => {\n return (\n \n );\n });\n }, [sections, formData]);\n\n const allIds: string[] = sections\n .map(section =>\n section.trusthubDocuments.filter(doc => doc.restricted).map(doc => doc.id)\n )\n .flat();\n\n const handleSelectAll = () => {\n setFormData(prevFormData => {\n const allChecked =\n (prevFormData.selectedDocumentsIds || []).length === allIds.length;\n const payload = {\n selectedDocumentsIds: allChecked ? [] : allIds,\n };\n\n return {\n ...prevFormData,\n ...payload,\n };\n });\n };\n return (\n \n
\n
Request Document Access
\n \n
\n
\n
\n setDocumentsSearch(e.currentTarget.value)}\n type=\"text\"\n placeholder=\"Search for documents\"\n icon={faSearch}\n additionalClass=\"adoptechTextInput-search\"\n />\n
\n
\n {sectionsList}\n {sections.length === 0 && (\n \n )}\n
\n
\n \n Select All\n \n handleSubmit()}\n busy={createAccessRequestStatus === 'loading'}\n disabled={(formData.selectedDocumentsIds || []).length === 0}\n >\n Confirm\n \n
\n \n );\n};\n","import React, { useEffect } from 'react';\nimport { CompanyDetailsSection } from '../../CompanyDetailsSection/CompanyDetailsSection';\nimport { InformationSecuritySection } from '../../InformationSecuritySection/InformationSecuritySection';\nimport adoptechLogoDark from 'images/adoptech-logo-dark.svg';\nimport {\n fetchTrustHubSections,\n fetchTrustHubSettings,\n fetchTrustHubVendorDocumentFile,\n fetchTrustHubVendorUserDetails,\n logoutTrustHub,\n} from '../../store/trusthubThunks';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport { LoadingSpinner } from '../../../../components/LoadingSpinner/LoadingSpinner';\nimport { TrustHubUserPageHeaderButtons } from '../TrustHubUserPageHeaderButtons/TrustHubUserPageHeaderButtons';\nimport './TrustHubUserPage.scss';\nimport {\n TrusthubDocumentModel,\n TrusthubSettingsModel,\n} from '../../../../swagger/trusthub';\nimport {\n setShowRequestDocumentModal,\n showTrustHubAuthModal,\n} from '../../store/trusthubSlice';\nimport { TrustHubRequestDocumentModal } from '../TrustHubRequestDocumentModal/TrustHubRequestDocumentModal';\nimport { selectCurrentUser } from '../../store/trusthubSelectors';\nimport { portalRoutes } from '../../../../components/Routes/Routes';\nimport { ColorHeader } from '../../ColorHeader/ColorHeader';\nimport { CertificationsSection } from '../../CertificationsSection/CertificationsSection';\nimport { PoliciesSection } from '../../PoliciesSection/PoliciesSection';\nimport { ControlsSection } from '../../ControlsSection/ControlsSection';\nimport { useIdleLogout } from '../../../../hooks/useIdleLogout';\n\nexport const currentTrustHubDomain = () => {\n return window.location.pathname.split('#')[0].split('/')[1];\n};\n\nexport const useTrusthubDocumentDownload = (onSuccess?: () => void) => {\n const dispatch = useDispatch();\n const handleDownload = (doc: TrusthubDocumentModel) => {\n dispatch(\n fetchTrustHubVendorDocumentFile(\n {\n documentId: doc.id,\n },\n (url: string) => {\n const tempLink = document.createElement('a');\n tempLink.href = url;\n tempLink.target = '_blank';\n onSuccess && onSuccess();\n tempLink.click();\n }\n )\n );\n };\n return handleDownload;\n};\n\nexport const useDisplayTrusthubSettingsApiError = () => {\n const { fetchingSettingsStatusCode } = useSelector(\n (state: ApplicationState) => state.trustHub\n );\n\n const TrustHubApiSettingsErrors = {\n 403: 'TrustHub is disabled. Please contact to the admin to enable TrustHub',\n 404: 'Trusthub domain not found. Please contact to the support',\n };\n\n const hasApiError = [403, 404].includes(fetchingSettingsStatusCode);\n const apiError =\n TrustHubApiSettingsErrors[\n fetchingSettingsStatusCode as keyof typeof TrustHubApiSettingsErrors\n ];\n\n return { hasApiError, apiError };\n};\nexport const TrustHubUserPage: React.FC = () => {\n const baseCss = 'trusthubUserPage';\n const {\n settings,\n sections,\n fetchingSectionsStatus,\n fetchingSettingsStatus,\n fetchTrustHubUserDetailsRequestStatus,\n showRequestDocumentModal,\n } = useSelector((state: ApplicationState) => state.trustHub);\n const dispatch = useDispatch();\n const domain = currentTrustHubDomain();\n useEffect(() => {\n dispatch(\n fetchTrustHubSections(\n {\n vendorIdOrDomain: domain,\n },\n () => {}\n )\n );\n }, [domain]);\n\n useEffect(() => {\n dispatch(\n fetchTrustHubSettings(\n {\n vendorIdOrDomain: domain,\n },\n (settingsModel: TrusthubSettingsModel) => {\n dispatch(fetchTrustHubVendorUserDetails(settingsModel.domain));\n }\n )\n );\n }, [domain]);\n\n const isLoggedIn = !!useSelector(selectCurrentUser);\n const handleDownload = useTrusthubDocumentDownload();\n\n const { apiError, hasApiError } = useDisplayTrusthubSettingsApiError();\n const setShowRequestDocModal = (showDocModal: boolean) => {\n dispatch(setShowRequestDocumentModal(showDocModal));\n };\n\n useIdleLogout({\n afterIdle: () => {\n if (isLoggedIn) {\n dispatch(logoutTrustHub());\n }\n },\n });\n\n if (\n fetchingSectionsStatus === 'loading' ||\n fetchingSettingsStatus === 'loading' ||\n fetchTrustHubUserDetailsRequestStatus === 'loading'\n ) {\n return ;\n }\n\n const onDocumentClick = (document: TrusthubDocumentModel) => {\n if (document.restricted) {\n if (isLoggedIn) {\n setShowRequestDocModal(true);\n } else {\n dispatch(showTrustHubAuthModal('required'));\n }\n } else {\n handleDownload(document);\n }\n };\n\n const sectionProps = {\n isEditable: false,\n showDocumentDownloadIcon: true,\n sections,\n settings,\n onDocumentClick,\n };\n\n const esgSectionProps = {\n ...sectionProps,\n ...{\n identifier: 'environmental_social_and_governance',\n title: 'Environmental, Social and Governance',\n },\n };\n\n const complianceSectionProps = {\n ...sectionProps,\n ...{\n identifier: 'compliance',\n title: 'Compliance',\n },\n };\n\n const controlsSectionProps = {\n ...sectionProps,\n ...{\n identifier: 'controls',\n },\n };\n\n return (\n
\n }\n />\n
\n {hasApiError ? (\n
{apiError}
\n ) : (\n <>\n \n \n \n \n \n \n\n {showRequestDocumentModal && (\n setShowRequestDocModal(false)}\n />\n )}\n \n )}\n
\n
(window.location.href = portalRoutes.home)}>\n Powered by \n
\n
\n
\n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport AdoptechModal from '../../../../components/AdoptechModal/AdoptechModal';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ApplicationState } from '../../../../types/applicationState';\nimport {\n hideTrustHubAuthModal,\n showTrustHubAuthModal,\n} from '../../store/trusthubSlice';\nimport {\n AdoptechButton,\n AdoptechButtonVariant,\n} from '../../../../components/AdoptechButton/AdoptechButton';\nimport { InputField } from '../../../../../unauthenticated/src/components/InputField/InputField';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faXmark } from '@fortawesome/pro-light-svg-icons/faXmark';\nimport { faAngleLeft } from '@fortawesome/pro-light-svg-icons/faAngleLeft';\n\nimport './TrustHubAuthModal.scss';\nimport {\n loginTrustHub,\n registerTrustHub,\n recoveryTrustHubUserPassword,\n resetTrustHubUserPassword,\n fetchTrustHubUserDetails,\n fetchTrustHubInvitation,\n patchTrustHubInvitation,\n} from '../../store/trusthubThunks';\nimport { LoadingSpinner } from '../../../../components/LoadingSpinner/LoadingSpinner';\nimport { PasswordStrength } from '../../../../../unauthenticated/src/components/PasswordStrength/PasswordStrength';\nimport zxcvbn from 'zxcvbn';\nimport { trustHubRoutes } from '../TrustHubUserRoutes';\nimport { TrusthubInvitationModel } from '../../../../swagger/trusthub';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { selectCurrentUser } from '../../store/trusthubSelectors';\nimport { portalRoutes } from '../../../../components/Routes/Routes';\nimport adoptechLogoDark from 'images/adoptech-logo-dark.svg';\nimport { ConfirmationModal } from '../../../../components/ConfirmationModal/ConfirmationModal';\nimport { CommandConfirmation } from '../../../../types/CommandConfirmation';\nimport { AdoptechCheckbox } from '../../../../components/AdoptechCheckbox/AdoptechCheckbox';\n\nexport const TrustHubAuthModal: React.FC = () => {\n const dispatch = useDispatch();\n\n const baseCss = 'trustHubAuthModal';\n\n const {\n auth: { modal, status },\n fetchingInvitationStatus,\n fetchTrustHubUserDetailsRequestStatus,\n } = useSelector((state: ApplicationState) => state.trustHub);\n const { router } = useSelector((state: ApplicationState) => state);\n const currentUser = useSelector(selectCurrentUser);\n const isLoading = status === 'loading';\n const isRegisterInviteStep = modal === 'register-invite';\n const isRequestStep = modal === 'request';\n\n const [firstName, setFirstName] = useState('');\n const [lastName, setLastName] = useState('');\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [passwordConfirmation, setPasswordConfirmation] = useState('');\n const passwordStrength = zxcvbn(password);\n\n const stepTo = (nextStep: ApplicationState['trustHub']['auth']['modal']) => {\n dispatch(showTrustHubAuthModal(nextStep));\n };\n const queryParams = useQueryParams();\n const invitationToken = queryParams.get('invitation_token');\n const token = queryParams.get('token');\n\n const handleLogin = () => {\n dispatch(loginTrustHub(email, password));\n };\n\n const [currentCommand, command] = useState(null);\n const [termsChecked, setTermsChecked] = useState(false);\n const showWarningModal = () =>\n command({\n title: 'Please verify your email address',\n description: `Click the link in the email we have sent you to verify your account. Once confirmed you will be able to login and request access to TrustHub resources.`,\n buttonText: 'OK',\n showCancelButton: false,\n buttonVariant: AdoptechButtonVariant.Primary,\n });\n\n const handleRegistration = () => {\n dispatch(\n registerTrustHub(\n { firstName, lastName, email, password },\n showWarningModal\n )\n );\n };\n\n const handleInviteRegistration = () => {\n dispatch(\n patchTrustHubInvitation(\n {\n body: {\n trusthubUser: {\n invitationToken,\n password,\n passwordConfirmation,\n },\n },\n },\n () => {}\n )\n );\n };\n\n const handleRecovery = () => {\n dispatch(recoveryTrustHubUserPassword(email));\n };\n\n const handleReset = () => {\n dispatch(resetTrustHubUserPassword(password, token));\n };\n\n let title = 'Setup Account';\n let content = (\n
\n
\n To access TrustHub details you need to login.\n
\n stepTo('request')}>\n Setup Account\n \n stepTo('login')}\n variant={AdoptechButtonVariant.DarkGray}\n >\n Login\n \n\n (window.location.href = portalRoutes.home)}\n >\n Powered by \n
\n
\n );\n\n if (modal === 'login') {\n const valid = !!email && !!password;\n title = 'Login';\n content = (\n
\n setEmail(value)}\n placeholder=\"Enter your email address\"\n type=\"email\"\n />\n setPassword(value)}\n placeholder=\"Enter your password\"\n type=\"password\"\n />\n \n {isLoading ? : 'Login'}\n \n
stepTo('request')}>\n Don't have an account?\n
\n
stepTo('recovery')}>\n Forgotten your password?\n
\n
\n );\n }\n\n if (isRequestStep) {\n const valid =\n !!firstName &&\n !!lastName &&\n !!email &&\n !!termsChecked &&\n !!password &&\n password === passwordConfirmation &&\n passwordStrength.score > 1;\n\n title = 'Setup Account';\n content = (\n
\n setFirstName(value)}\n placeholder=\"Enter your first name\"\n type=\"text\"\n />\n setLastName(value)}\n placeholder=\"Enter your last name\"\n type=\"text\"\n />\n setEmail(value)}\n placeholder=\"Enter your email address\"\n type=\"email\"\n />\n setPassword(value)}\n placeholder=\"Choose a password\"\n type=\"password\"\n />\n \n setPasswordConfirmation(value)}\n placeholder=\"Repeat password\"\n type=\"password\"\n />\n\n {\n setTermsChecked(e.currentTarget.checked);\n }}\n label={\n
\n Tick to agree to the{' '}\n \n Privacy Policy\n {' '}\n
\n }\n />\n\n \n {isLoading ? : 'Setup Account'}\n \n
\n );\n }\n\n if (isRegisterInviteStep) {\n const valid = !!email && !!password && password === passwordConfirmation;\n title = 'Email invitation sign up';\n content = (\n
\n {fetchingInvitationStatus === 'loading' ? (\n \n ) : (\n <>\n \n setPassword(value)}\n placeholder=\"Choose a password\"\n type=\"password\"\n value={password}\n />\n setPasswordConfirmation(value)}\n placeholder=\"Repeat password\"\n type=\"password\"\n value={passwordConfirmation}\n />\n \n {isLoading ? : 'Confirm'}\n \n \n )}\n
\n );\n }\n\n if (modal === 'recovery') {\n const valid = !!email;\n title = 'Forgot your password?';\n content = (\n
\n

\n Enter your email below and we will send you password reset\n instructions.\n

\n setEmail(value)}\n placeholder=\"Enter your email address\"\n type=\"email\"\n />\n \n {isLoading ? : 'Send'}\n \n
\n );\n }\n\n if (modal === 'reset-password') {\n const valid =\n !!password &&\n password === passwordConfirmation &&\n passwordStrength.score > 1;\n title = 'Reset password';\n content = (\n
\n setPassword(value)}\n placeholder=\"Choose a password\"\n type=\"password\"\n />\n setPasswordConfirmation(value)}\n placeholder=\"Repeat password\"\n type=\"password\"\n />\n \n \n {isLoading ? : 'Confirm'}\n \n
\n );\n }\n\n // not possible to hide during invite form\n const onClose = () =>\n isRegisterInviteStep ? null : dispatch(hideTrustHubAuthModal());\n\n useEffect(() => {\n dispatch(fetchTrustHubUserDetails());\n\n const isRegisterInviteRoute = router.location.pathname.includes(\n trustHubRoutes.registerInvite\n );\n if (isRegisterInviteRoute && invitationToken) {\n dispatch(showTrustHubAuthModal('register-invite'));\n dispatch(\n fetchTrustHubInvitation(\n {\n id: invitationToken,\n },\n (invitation: TrusthubInvitationModel) => {\n setEmail(invitation.email);\n }\n )\n );\n }\n\n const isResetPasswordRoute = router.location.pathname.includes(\n trustHubRoutes.resetPassword\n );\n if (isResetPasswordRoute && token) {\n dispatch(showTrustHubAuthModal('reset-password'));\n }\n }, []);\n\n useEffect(() => {\n const isLoginRoute = router.location.pathname.includes(\n trustHubRoutes.login\n );\n const currentUserRequestFinished =\n fetchTrustHubUserDetailsRequestStatus === 'succeeded' ||\n fetchTrustHubUserDetailsRequestStatus === 'failed';\n if (!isLoginRoute || !currentUserRequestFinished) return;\n\n if (currentUser) {\n window.location.href = window.location.href.replace('login', '');\n return;\n }\n\n dispatch(showTrustHubAuthModal('login'));\n return;\n }, [fetchTrustHubUserDetailsRequestStatus]);\n\n useEffect(() => {\n isRequestStep && setTermsChecked(false);\n }, [isRequestStep]);\n\n return (\n <>\n \n
\n {modal !== 'required' && !isRegisterInviteStep && (\n stepTo('required')}\n />\n )}\n
{title}
\n {!isRegisterInviteStep && (\n \n )}\n
\n
{content}
\n
\n command(null)}\n />\n \n );\n};\n","import { History } from 'history';\nimport React, { Suspense } from 'react';\nimport { LoadingScreen } from '../../../components/LoadingScreen/LoadingScreen';\nimport { Route, Switch } from 'react-router';\nimport { ErrorToast } from '../../../components/ErrorToast/ErrorToast';\nimport { GlobalToast } from '../../../components/GlobalToast/GlobalToast';\nimport { TrustHubUserPage } from './TrustHubUserPage/TrustHubUserPage';\nimport { TrustHubAuthModal } from './TrustHubAuthModal/TrustHubAuthModal';\n\ninterface RoutesProps {\n history: History;\n}\n\nexport const trustHubRoutes = {\n registerInvite: '/register-invite',\n resetPassword: '/reset-password',\n login: '/login',\n};\n\nexport const TrustHubUserRoutes: React.FC = () => {\n return (\n }>\n \n \n \n \n \n \n \n \n \n );\n};\n","import { useSelector } from 'react-redux';\nimport { AccessObject } from '../types/accessObject';\nimport { ApplicationState } from '../types/applicationState';\nimport { Access, ShareAccessLevel } from '../swagger';\n\ntype AccessObjectKeys = keyof typeof AccessObject;\nconst accessMapping: { readonly [key in AccessObjectKeys]+?: any } = {\n [AccessObject.assessments]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.payment_plan_vendors]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.manage_approvals]: (state: ApplicationState) =>\n state.vendors.documentState.policyDocuments?.[0],\n [AccessObject.manage_read_requests]: (state: ApplicationState) =>\n state.vendors.documentState.policyDocuments?.[0],\n [AccessObject.manage_versions]: (state: ApplicationState) =>\n state.vendors.documentState.policyDocuments?.[0],\n [AccessObject.vendor_users]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.vendor_teams]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.vendor_documents]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.vendor_details]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.vendor_dashboard]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.vendor_checklists]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.checklist_templates]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.company_identifiers]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.vendor_policies]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.companies]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.agreement_templates]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.agreements]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.data_room_entities]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.company_documents]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.people]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.legal_register]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.vendor_register]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.pestel]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.escrow]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.policy_categories]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.audits]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.risk_register]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.people_manage]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.user_dashboard]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.company_dashboard]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.frameworks]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.controls]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.tasks]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.frameworks_manage]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.controls_create]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.controls_update]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.tasks_create]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.tasks_update]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.calendar]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.company_manage]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.checklists]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.checklists_manage]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.agreements_manage]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.legal_register_manage]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.vendor_register_manage]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.audits_manage]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.risk_register_create]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.risk_register_update]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.calendar_manage]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.pestel_manage]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.reports]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.reports_manage]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.integrations]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.dataroom_root_tree_manage]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.dataroom_control_evidence_manage]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.trusthub]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.dashboard]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n [AccessObject.vendors_create]: (state: ApplicationState) =>\n state.vendors.currentVendor,\n};\n/**\n * @deprecated use `useCanCreate` instead\n */\nexport const canCreate = (\n accessObject: AccessObject,\n state?: ApplicationState\n) => {\n const selector = accessMapping[accessObject];\n // TODO: fix this\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const parentObject = state ? selector(state) : useSelector(selector);\n\n return Boolean(parentObject?.access?.create?.includes(accessObject));\n};\nexport const useCanFeature = (accessObject: AccessObject) => {\n const selector = accessMapping[accessObject];\n const parentObject = useSelector(selector) as {\n access?: { feature?: AccessObject[] };\n };\n return Boolean(parentObject?.access?.feature?.includes(accessObject));\n};\n\n/**\n * @deprecated use `useHasFeature` instead\n */\n\nexport const hasFeature = (\n accessObject: AccessObject,\n access: Access\n): boolean => {\n return Boolean(\n access && access.feature && access.feature.indexOf(accessObject) !== -1\n );\n};\n\n/**\n * @deprecated use `useCanIndex` instead\n */\n\nexport const canIndex = (\n accessObject: AccessObject,\n state?: ApplicationState\n) => {\n const selector = accessMapping[accessObject];\n // TODO: fix this\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const parentObject = state ? selector(state) : useSelector(selector);\n return Boolean(parentObject?.access?.index?.includes(accessObject));\n};\n\n/**\n * @deprecated use `useCanView` instead\n */\n\nexport const canView = (\n accessObject: AccessObject,\n state?: ApplicationState\n) => {\n const selector = accessMapping[accessObject];\n // TODO: fix this\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const parentObject = state ? selector(state) : useSelector(selector);\n\n return Boolean(parentObject?.access?.index?.includes(accessObject));\n};\n\nexport const havePermissions = (\n accessObject: AccessObject,\n state?: ApplicationState\n) => {\n return false;\n};\n\n// TODO rename all hooks in this file with use prefix\n// because additionalHooks for eslint rule doesn't work\n// https://github.com/facebook/react/blob/main/packages/eslint-plugin-react-hooks/README.md\nexport const useCanCreate = canCreate;\nexport const useCanIndex = canIndex;\nexport const useCanView = canView;\nexport const useHasFeature = hasFeature;\n\nconst shareFeaturesAndAccessLevels: { [key: string]: ShareAccessLevel } = {\n share__manager: ShareAccessLevel.Manager,\n share__contributor: ShareAccessLevel.Contributor,\n share__viewer: ShareAccessLevel.Viewer,\n};\n\nexport const mapShareFeaturesToAccessLevels = (\n shareAccessFeatures: string[]\n): ShareAccessLevel[] => {\n if (!shareAccessFeatures) {\n return [];\n }\n return (\n shareAccessFeatures\n .map((feature: string) => shareFeaturesAndAccessLevels[feature])\n .filter((feature: string) => !!feature) || []\n );\n};\n","export const capitaliseFirst = (input: string) => {\n if (!input || input.length === 0) {\n return '';\n }\n\n const input_without_underline = input.replace(/_/g, ' ');\n return (\n input_without_underline.charAt(0).toUpperCase() +\n input_without_underline.slice(1)\n );\n};\n","export const capitalize = (word: string) => {\n if (!word) {\n return word;\n }\n const sentence = word.replace(/([A-Z])/g, ' $1');\n return sentence.substring(0, 1)?.toUpperCase() + sentence?.substring(1);\n};\n","export const helpHost = 'https://knowledge.adoptech.co.uk';\nexport const articles = {\n pestel: `${helpHost}/pestel`,\n vendor: `${helpHost}/how-to-assess-a-vendor-risk`,\n risk: `${helpHost}/managing-infosec-risk-in-adoptech`,\n};\n\nexport type chatWidgetArticleId = keyof typeof articles;\n\nexport const showWidgetChatArticle = (articleId: chatWidgetArticleId) => {\n window.open(articles[articleId], '_blank');\n};\n\n// without \"important\" doesn't work\n// https://community.hubspot.com/t5/APIs-Integrations/How-to-move-the-livechat-widget-in-another-position/m-p/626678\nexport const moveChatWidgetPosition = (width: number) => {\n document\n .getElementById('hubspot-messages-iframe-container')\n ?.style?.setProperty('right', `${width}px`, 'important');\n};\n\nexport const openChatWidget = () => {\n window.HubSpotConversations?.widget?.open();\n};\n\n// we need init step ( not automatically init ) because we use identity api request\n// for logged-in admin user before init\n// https://developers.hubspot.com/docs/api/conversation/visitor-identification\nexport const initChatWidget = () => {\n const onInit = () => {\n window.HubSpotConversations?.clear();\n window.HubSpotConversations?.widget?.load();\n };\n\n if (window.HubSpotConversations) {\n onInit();\n } else {\n // looks we need to use hsConversationsOnReady \"if widget API is not initialized yet\"\n // https://developers.hubspot.com/beta-docs/reference/api/conversations/chat-widget-sdk#initializing\n window.hsConversationsOnReady = [onInit];\n }\n};\n\nexport const removeChatWidget = () => {\n window.HubSpotConversations?.widget?.remove();\n};\n","import moment from 'moment';\nimport { sort } from './sort';\n\nexport const dateSort = (a: string, b: string, direction: number): number => {\n if (a && !b) {\n return direction;\n }\n\n if (b && !a) {\n return -direction;\n }\n\n if (!a && !b) {\n return 0;\n }\n\n return sort(moment(a), moment(b), direction);\n};\n","const prepare = (pairs: Record) =>\n Object.keys(pairs).reduce((acc: Record, key) => {\n const value = pairs[key];\n switch (value) {\n case 't':\n acc[key] = true;\n break;\n case 'f':\n acc[key] = false;\n break;\n default:\n acc[key] = value;\n break;\n }\n\n return acc;\n }, {});\n\nenum TokenType {\n Number,\n Symbol,\n String,\n And,\n Or,\n Eq,\n LeftParen,\n RightParen,\n}\n\nconst tokens: [RegExp, TokenType][] = [\n [/^\\s+/, null],\n [/^-?\\d+(?:\\.\\d+)?/, TokenType.Number],\n [/^[a-zA-Z]+([._a-zA-Z]+)*/, TokenType.Symbol],\n [/^\"[^\"]+\"/, TokenType.String],\n [/^'[^']+'/, TokenType.String],\n [/^&&/, TokenType.And],\n [/^\\|\\|/, TokenType.Or],\n [/^=+/, TokenType.Eq],\n [/^\\(/, TokenType.LeftParen],\n [/^\\)/, TokenType.RightParen],\n];\n\nexport const tokenize = (expression: string): [TokenType, string][] => {\n for (const [pattern, type] of tokens) {\n const [match] = pattern.exec(expression) || [];\n\n if (!match) continue;\n\n const next = tokenize(expression.slice(match.length));\n\n if (!type) return next;\n\n return [[type, match.replace(/['\"]+/g, '')], ...next];\n }\n\n return [];\n};\n\ntype ASTNode = ASTCall | ASTOperation | ASTValue | ASTVariable;\n\ntype ASTCall = {\n type: 'call';\n name: string;\n argument: ASTNode;\n};\n\ntype ASTOperation = {\n type: 'operation';\n code: string;\n left: ASTNode;\n right: ASTNode;\n};\n\ntype ASTValue = {\n type: 'value';\n value: boolean | number | string;\n};\n\ntype ASTVariable = {\n type: 'variable';\n name: string;\n};\n\nexport const parse = (\n buffer: [TokenType, string][],\n nested = false\n): ASTNode => {\n const t = buffer.shift();\n\n let left: ASTNode = null;\n\n switch (t[0]) {\n case TokenType.LeftParen: {\n left = parse(buffer, true);\n break;\n }\n case TokenType.Symbol: {\n const nxt = buffer[0];\n if (nxt && nxt[0] == TokenType.LeftParen) {\n buffer.shift();\n left = {\n type: 'call',\n name: t[1],\n argument: parse(buffer, true),\n };\n } else {\n switch (t[1]) {\n case 'true':\n left = { type: 'value', value: true };\n break;\n case 'false':\n left = { type: 'value', value: false };\n break;\n default:\n left = { type: 'variable', name: t[1] };\n break;\n }\n }\n break;\n }\n case TokenType.String:\n case TokenType.Number: {\n left = {\n type: 'value',\n value: t[1],\n };\n break;\n }\n default: {\n throw new Error(`Unexpected token ${t[1]}.`);\n }\n }\n\n let nxt = buffer.shift();\n\n if (nxt && nxt[0] == TokenType.Eq) {\n // Emulate Eq higher priority\n const right = buffer.shift();\n let rightObject: ASTValue | ASTVariable = null;\n switch (right[0]) {\n case TokenType.String: {\n rightObject = { type: 'value', value: right[1] };\n break;\n }\n case TokenType.Symbol: {\n // TODO: DRY with common Symbol parsing\n switch (right[1]) {\n case 'true':\n rightObject = { type: 'value', value: true };\n break;\n case 'false':\n rightObject = { type: 'value', value: false };\n break;\n default:\n rightObject = { type: 'variable', name: right[1] };\n break;\n }\n break;\n }\n default: {\n throw new Error(`Unexpected comparison right side ${right[1]}.`);\n }\n }\n left = {\n type: 'operation',\n code: '==',\n left: left,\n right: rightObject,\n };\n nxt = buffer.shift();\n }\n\n if (!nested && !nxt) return left;\n if (nested && nxt[0] == TokenType.RightParen) return left;\n\n const operators = [TokenType.And, TokenType.Or];\n if (operators.includes(nxt[0])) {\n return {\n type: 'operation',\n code: nxt[1],\n left: left,\n right: parse(buffer, nested),\n };\n }\n\n throw new Error(`Unexpected token ${nxt[1]}.`);\n};\n\nexport const dentaku = (expression: string, context = {}): boolean => {\n if (!expression) return true;\n\n const ctx = prepare(context);\n\n const operation = (node: ASTOperation): boolean | string | number => {\n const left = evaluate(node.left);\n const right = evaluate(node.right);\n switch (node.code) {\n case '==': {\n return left == right;\n }\n case '&&': {\n return left && right;\n }\n case '||': {\n return left || right;\n }\n }\n };\n\n const call = (node: ASTCall): boolean => {\n if (node.name.toLowerCase() !== 'not')\n throw new Error(`Unexpected function name ${node.name}.`);\n // Support only not() for now\n return !evaluate(node.argument);\n };\n\n const evaluate = (ast: ASTNode): boolean | string | number => {\n switch (ast.type) {\n case 'variable': {\n return ctx[ast.name];\n }\n case 'operation': {\n return operation(ast);\n }\n case 'value': {\n return ast.value;\n }\n case 'call': {\n return call(ast);\n }\n }\n };\n\n const ast = parse(tokenize(expression));\n const result = !!evaluate(ast);\n\n const debug = false;\n\n if (debug) {\n console.log('DENTAKU DEBUG');\n console.log('SOURCE: ', expression);\n console.log('AST: ', ast);\n console.log('RESULT: ', result);\n }\n\n return result;\n};\n","import moment from 'moment';\n\nexport const formatLongDateTime = (date: string) => {\n return date ? moment(date).format('ddd, D MMMM YYYY HH:mm') : null;\n};\n","import moment from 'moment';\n\nexport const formatShortDate = (date: string) => {\n if (date) {\n return moment(date).format('DD/MM/YYYY');\n }\n return null;\n};\n","import { ErrorResponse } from '../swagger/models/ErrorResponse';\nimport { capitalize } from './capitalize';\n\nexport const getApiErrorMessage = async (err: Response): Promise => {\n let json: ErrorResponse | string | null | undefined;\n try {\n json = await err.json();\n } catch (error) {\n console.log('Error attempting to get API error JSON:', error);\n console.log('Response object:', err);\n return 'An unexpected error was encountered. Please try again or contact support.';\n }\n\n if (typeof json === 'string') return json;\n\n const baseErrors = json?.errors?.base;\n if (baseErrors) return baseErrors;\n const permissionErrors = json?.messages;\n if (permissionErrors) return json.messages.join(' ');\n\n const validFormatErrors = Object.keys(json?.errors || {});\n\n if (validFormatErrors.length > 0) {\n if (json.details) console.log(json.details);\n return Object.entries(validFormatErrors)\n .map(error => `${capitalize(error[0])} ${error[1]}.`)\n .join(' ');\n }\n\n const output =\n // for login we have old errors format [{message: ''}]\n Array.isArray(json) && json[0]?.message\n ? json.map(item => item.message).join(', ')\n : JSON.stringify(json);\n\n return `Error: ${output}`;\n};\n","export const getDate = (dateString: string) => {\n return dateString ? new Date(dateString) : null;\n};\n","import { ApplicationState } from '../types/applicationState';\nimport { SelectionOption } from '../types/selectionOption';\n\nexport const getDefaultSelectionOptions = (\n type: string,\n state: ApplicationState\n): SelectionOption[] => {\n if (!state.vendors.vendorTableCache) {\n return [];\n }\n\n if (state.vendors.vendorTableCache[type] === undefined) {\n return [];\n }\n\n return state.vendors.vendorTableCache[type].rows.map(vt => {\n return { value: vt.value, label: vt.cells[0] };\n });\n};\n","import { DataRoomEntityModel, DataRoomEntityModelTypeEnum } from '../swagger';\n\nexport interface FolderModel {\n id: string;\n level: number;\n path: string;\n name: string;\n description: string;\n}\n\nexport const getFolderModel = (entity: DataRoomEntityModel) => {\n const depth =\n entity.filePath === '/' ? 0 : entity.filePath.split('/').length - 1;\n\n return {\n id: entity.id,\n level: depth,\n name: entity.name,\n path: entity.filePath,\n description: entity.description,\n };\n};\n\nexport const getFlatFoldersList = (\n entity: DataRoomEntityModel,\n flatList: FolderModel[],\n requiredRights?: string[] // No requiredRights means all folders are available\n) => {\n if (\n entity?.type == DataRoomEntityModelTypeEnum.Folder &&\n (!requiredRights ||\n entity.access?.feature?.some(f => requiredRights.includes(f)) ||\n entity.name === '/')\n ) {\n flatList.push(getFolderModel(entity));\n requiredRights = undefined; // all children shall be added with parent access rights\n }\n\n entity?.children?.map(child => {\n return getFlatFoldersList(child, flatList, requiredRights);\n });\n};\n","import { VendorUser } from '../swagger';\n\nexport const getInitials = ({\n user,\n placeholder = ' ',\n}: {\n user: VendorUser;\n placeholder?: string;\n}) => {\n let initials;\n if (user.firstName || user.lastName) {\n // Use first name and last name if exists\n const firstInitial = user.firstName?.[0] || placeholder;\n const lastInitial = user.lastName?.[0] || placeholder;\n initials = firstInitial + lastInitial;\n } else if (user.fullName) {\n // Use full name otherwise\n const [first, second] = user.fullName\n .replace(/ +/gi, ' ') // remove multiple spaces in full name like External Consultant\n .split(' ');\n const firstInitial = first?.[0] || placeholder;\n const secondInitial = second?.[0] || placeholder;\n initials = firstInitial + secondInitial;\n } else {\n // If no name is present, use email\n initials = user.email ? user.email[0] : '';\n }\n return initials.toUpperCase();\n};\n","export const getMetaContent = (name: string) => {\n const metas = document.getElementsByTagName('meta');\n\n for (let i = 0; i < metas.length; i++) {\n if (metas[i].getAttribute('name') === name) {\n return metas[i].getAttribute('content');\n }\n }\n};\n","import { Progress } from '../swagger';\n\nexport const getProgressPercentage = (progress: Progress) => {\n return (progress.answered / (progress.unanswered + progress.answered)) * 100;\n};\n","import { ApplicationState } from '../types/applicationState';\n\nexport const getPolicyDocuments = (state: ApplicationState) => {\n return state.vendors.documentState.policyDocuments;\n};\n","import { getMetaContent } from './getMetaContent';\n\nexport const getRequest = async (url: string) => {\n return await fetch(url, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'X-CSRF-Token': getMetaContent('csrf-token'),\n },\n });\n};\n","import { getRequest } from './getRequest';\n\n// Non-binary request: Any BE error => retry\n// Binary request: Any BE error or PDF is empty => retry\ninterface FetchRequestWithRetryProps {\n url: string;\n retries: number;\n isBinary: boolean;\n}\n\ntype PromiseLikeObject = (value: void | PromiseLike) => void;\ninterface FetchRequestProps extends FetchRequestWithRetryProps {\n resolve: PromiseLikeObject;\n reject: PromiseLikeObject;\n}\n\nconst fetchRequest = async ({\n url,\n retries,\n isBinary,\n resolve,\n reject,\n}: FetchRequestProps): Promise => {\n const response = await getRequest(url);\n\n let isValid;\n let responseData;\n\n try {\n if (isBinary) {\n responseData = await response.blob();\n isValid = response.ok && responseData.size > 1;\n } else {\n responseData = await response.json();\n isValid = !!responseData && response.ok;\n }\n } catch (error) {\n isValid = false;\n }\n if (!isValid) {\n if (retries > 0) {\n console.log(`Cannot load ${url} Retry attempt left ${retries}`);\n return fetchRequest({\n url,\n isBinary,\n resolve,\n reject,\n retries: retries - 1,\n });\n }\n reject();\n return;\n }\n\n resolve(responseData);\n};\nexport const getRequestWithRetry = (\n options: FetchRequestWithRetryProps\n): Promise => {\n return new Promise((resolve, reject) => {\n fetchRequest({ ...options, resolve, reject });\n });\n};\n","import { ApplicationState } from '../types/applicationState';\n\nexport const getVendorAssessmentResponses = (state: ApplicationState) => {\n return state.assessments.assessmentResponses;\n};\n","import { ApplicationState } from '../types/applicationState';\n\nexport const getVendorAssessments = (state: ApplicationState) => {\n return state.assessments.assessments;\n};\n","import { ApplicationState } from '../types/applicationState';\n\nexport const getVendorPolicies = (state: ApplicationState) => {\n return state.policies.vendorPolicies;\n};\n","export const isValidEmailAddress = (emailAddress: string): boolean => {\n const emailRegex =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return emailRegex.test(emailAddress);\n};\n","export const isValidUrl = (url: string): boolean => {\n if (!url) return false;\n\n const regex = new RegExp(\n /(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.\\S{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.\\S{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.\\S{2,}|www\\.[a-zA-Z0-9]+\\.\\S{2,})/\n );\n return !!url.match(regex);\n};\n","import { VendorPolicyDetails, VendorPolicyDetailsStatusEnum } from '../swagger';\nimport { vendorPolicyCalculations } from './vendorPolicyCalculations';\n\nexport const isVendorPolicyFilled = (policy: VendorPolicyDetails) => {\n if (!policy) return false;\n\n const { stats } = vendorPolicyCalculations(policy);\n const overallProgress =\n stats.reduce((acc, s) => acc + s[1], 0) / stats.length;\n\n return (\n overallProgress === 1 &&\n policy.status === VendorPolicyDetailsStatusEnum.InProgress\n );\n};\n","import {\n AgreementExtended,\n Answer,\n AnswerFromJSON,\n AuditExtended,\n} from '../swagger';\n\n// Looks like a swagger bug ? We convert tables answers manually from underscore keys to capitalize keys from API\n\nexport const mapTableAnswers = (\n model: T\n): T => {\n const copiedModel: T = JSON.parse(JSON.stringify(model));\n copiedModel.survey.surveyClauses.forEach(clause =>\n clause.questions.forEach(question => {\n if (question.table) {\n const answers = question.table.answers\n ? (question.table.answers as Answer[][]).map(answersRow =>\n answersRow.map(answer => AnswerFromJSON(answer))\n )\n : undefined;\n\n if (answers.length) {\n question.table.answers = answers;\n }\n }\n })\n );\n return copiedModel;\n};\n","import React from 'react';\nimport { SelectionOption } from '../types/selectionOption';\nimport { StylesConfig } from 'react-select';\n\ntype IsMulti = false;\n\nexport const reactSelectCustomStyles: (\n showUserAvatar?: boolean,\n additionalStyling?: { [key: string]: React.CSSProperties }\n) => StylesConfig = (\n showUserAvatar?: boolean,\n additionalStyling?: { [key: string]: React.CSSProperties }\n) => ({\n control: (provided, state) => ({\n ...provided,\n boxShadow: 'none',\n backgroundColor: '#f2f2f2',\n borderRadius: '2px;',\n borderColor: '#dddddd',\n '&:hover': {\n borderColor: '#aaaaaa',\n },\n minHeight: '40px',\n ...additionalStyling?.control,\n }),\n option: (provided, state) => ({\n ...provided,\n backgroundColor:\n showUserAvatar && state.isSelected ? '#f2f2f2' : provided.backgroundColor,\n cursor: 'pointer',\n ...additionalStyling?.option,\n }),\n singleValue: provided => ({\n ...provided,\n color: '#666665',\n ...additionalStyling?.singleValue,\n }),\n multiValue: provided => ({\n ...provided,\n backgroundColor: 'hsl(0,0%,85%)',\n ...additionalStyling?.multiValue,\n }),\n placeholder: provided => ({\n ...provided,\n color: '#666665',\n opacity: 0.5,\n ...additionalStyling?.placeholder,\n }),\n valueContainer: provided => ({\n ...provided,\n paddingLeft: '5px',\n ...additionalStyling?.valueContainer,\n }),\n clearIndicator: provided => ({\n ...provided,\n\n ...additionalStyling?.clearIndicator,\n }),\n\n container: provided => ({\n ...provided,\n\n ...additionalStyling?.container,\n }),\n\n dropdownIndicator: provided => ({\n ...provided,\n\n ...additionalStyling?.dropdownIndicator,\n }),\n\n group: provided => ({\n ...provided,\n\n ...additionalStyling?.group,\n }),\n\n groupHeading: provided => ({\n ...provided,\n\n ...additionalStyling?.groupHeading,\n }),\n\n indicatorsContainer: provided => ({\n ...provided,\n\n ...additionalStyling?.indicatorsContainer,\n }),\n\n indicatorSeparator: provided => ({\n ...provided,\n\n ...additionalStyling?.indicatorSeparator,\n }),\n\n input: provided => ({\n ...provided,\n\n ...additionalStyling?.input,\n }),\n\n loadingIndicator: provided => ({\n ...provided,\n\n ...additionalStyling?.loadingIndicator,\n }),\n\n loadingMessage: provided => ({\n ...provided,\n\n ...additionalStyling?.loadingMessage,\n }),\n\n menu: provided => ({\n ...provided,\n zIndex: 100,\n ...additionalStyling?.menu,\n }),\n\n menuList: provided => ({\n ...provided,\n\n ...additionalStyling?.menuList,\n }),\n\n menuPortal: provided => ({\n ...provided,\n\n ...additionalStyling?.menuPortal,\n }),\n\n multiValueLabel: provided => ({\n ...provided,\n\n ...additionalStyling?.multiValueLabel,\n }),\n\n multiValueRemove: provided => ({\n ...provided,\n\n ...additionalStyling?.multiValueRemove,\n }),\n\n noOptionsMessage: provided => ({\n ...provided,\n\n ...additionalStyling?.noOptionsMessage,\n }),\n});\n","import { Theme } from 'react-select';\n\nexport const reactSelectCustomTheme = (theme: Theme) => ({\n ...theme,\n colors: {\n ...theme.colors,\n primary: '#666665',\n primary25: '#cccccc',\n primary50: '#f1881f',\n },\n});\n\nexport const reactSelectLightTheme = (theme: Theme) => ({\n ...theme,\n colors: {\n ...theme.colors,\n primary: '#ccc',\n primary25: '#cccccc',\n primary50: '#cccccc',\n },\n});\n\nexport const reactSelectLightStyle = {\n control: {\n backgroundColor: 'white',\n borderRadius: '4px',\n border: '1px solid #ddd',\n height: '32px',\n minHeight: '32px',\n },\n indicatorSeparator: {\n display: 'none',\n },\n valueContainer: {\n height: '32px',\n },\n indicatorsContainer: {\n height: '32px',\n },\n};\n\nexport const reactSelectLightCheckboxStyle = {\n control: {\n backgroundColor: 'white',\n borderRadius: '4px',\n border: '1px solid #ddd',\n minHeight: '32px',\n padding: '0px',\n },\n indicatorSeparator: {\n display: 'none',\n },\n valueContainer: {\n height: '32px',\n padding: '0px 8px',\n },\n indicatorsContainer: {\n height: '32px',\n },\n};\n\nexport const reactSelectLightStyleSmall = {\n ...reactSelectLightStyle,\n control: {\n ...reactSelectLightStyle.control,\n paddingLeft: 10,\n fontSize: 14,\n },\n};\n\nexport const reactSelectLightBiggerStyle = {\n ...reactSelectLightStyle,\n control: {\n ...reactSelectLightStyle.control,\n height: 'auto',\n minHeight: 'auto',\n },\n valueContainer: {\n ...reactSelectLightStyle.valueContainer,\n height: 'auto',\n },\n indicatorsContainer: {\n ...reactSelectLightStyle.indicatorsContainer,\n height: 'auto',\n },\n};\n","import { capitaliseFirst } from './capitaliseFirst';\n\nexport const registerTitle = (text: string) =>\n capitaliseFirst(text)\n .split(/(?=[A-Z])/)\n .join(' ')\n .replace('pestel', 'PESTEL')\n .replace('Pestel', 'PESTEL');\n","import { PdfOpenMode } from '../types/pdfOpenMode';\n// import { agreementsPageRoute } from '../components/Routes/Routes';\n// Only in this file agreementsPageRoute or any constant is empty.\n// Looks like it's a cycle dependency.\nexport const PdfPreviewEntityPaths = {\n policies: '/r/governance/policies',\n agreements: '/r/governance/agreements',\n documents: '/r/governance/documents',\n controls: '/r/compliance/frameworks/:id/controls',\n audits: '/r/compliance/audits',\n};\n\nexport const getPdfDocumentPath = ({\n vendorDocumentId,\n mode,\n basePath,\n vendorId,\n documentableId,\n}: {\n vendorDocumentId?: string;\n mode: PdfOpenMode;\n basePath: string;\n vendorId?: string;\n documentableId?: string;\n}): string => {\n const search = new URLSearchParams();\n vendorDocumentId && search.append('vendorDocumentId', vendorDocumentId);\n vendorId && search.append('vendorId', vendorId);\n mode && search.append('mode', mode);\n documentableId && search.append('documentableId', documentableId);\n\n const searchString = search.toString();\n return `${basePath}?${searchString}`;\n};\n","export const sendAnalytics = (eventName: string) => {\n if (window.gtag) {\n window.gtag('event', eventName);\n }\n};\n","export const sort = (a: any, b: any, direction: number) => {\n if (a > b) {\n return direction;\n }\n if (a < b) {\n return direction * -1;\n }\n return 0;\n};\n","import moment, { MomentInput } from 'moment';\nimport { sort } from './sort';\n\nexport const sortByDate = (a: string, b: string, direction: 1 | -1) => {\n return sort(moment(a as MomentInput), moment(b as MomentInput), direction);\n};\n","import { VendorUser } from '../swagger';\nimport { sort } from './sort';\n\nexport const sortByOwner = (\n a: VendorUser = {},\n b: VendorUser = {},\n direction: 1 | -1\n) => {\n return sort(a.fullName || '', b.fullName || '', direction);\n};\n","export const uniqArrayObjects = (arr: T[], field: string = 'id'): T[] =>\n arr.filter(\n (obj, index, self) =>\n index ===\n self.findIndex(\n selfObject => selfObject[field as keyof T] === obj[field as keyof T]\n )\n );\n","import { ColumnSort } from '../types/columnSort';\nimport { SortDirection } from '../types/sortDirection';\nimport { dateSort } from './dateSort';\nimport { sort } from './sort';\nimport { VendorDocumentWithCategoryName } from '../selectors/selectLivePolicies';\nimport { sortByOwner } from './sortByOwner';\n\nexport const vendorDocumentWithCategoryNameSort = (\n a: VendorDocumentWithCategoryName,\n b: VendorDocumentWithCategoryName,\n columnSort: ColumnSort\n): number => {\n let direction: SortDirection = 1;\n if (columnSort.direction === SortDirection.Ascending) {\n direction = -1;\n }\n\n const typedColumn: keyof VendorDocumentWithCategoryName =\n columnSort.name as keyof VendorDocumentWithCategoryName;\n\n switch (typedColumn) {\n case 'attestationDueAt':\n return dateSort(a.attestationDueAt, b.attestationDueAt, direction);\n case 'nextReviewDate':\n return dateSort(a.nextReviewDate, b.nextReviewDate, direction);\n case 'name':\n return sort(a.name.toLowerCase(), b.name.toLowerCase(), direction);\n case 'version':\n return sort(a.version, b.version, direction);\n case 'categoryName':\n return sort(a.categoryName, b.categoryName, direction);\n case 'owner':\n return sortByOwner(a.owner, b.owner, direction);\n }\n};\n","import { VendorPolicyDetails } from '../swagger';\nimport { dentaku } from './dentaku';\n\nexport const vendorPolicyCalculations = (\n policy: VendorPolicyDetails\n): { stats: [string, number][]; visibleQuestionIds?: string[] } => {\n if (!policy?.vendorPolicyClauses) return { stats: [] };\n if (!policy?.vendorPolicyAnswers) return { stats: [] };\n\n const answeredQuestionIds = new Set();\n let visibleQuestionIds: string[] = [];\n\n const context = policy.vendorPolicyAnswers.reduce(\n (acc: Record, answer) => ({\n ...acc,\n [answer.propertyName]: answer.value,\n }),\n {}\n );\n\n const isVisible = (expression: string) => dentaku(expression, context);\n\n policy.vendorPolicyAnswers.forEach(answer => {\n if (!answer.closestQuestion) {\n console.error(\n 'An answer object should always have a closestQuestion property. It is required for policies stats calculation',\n answer.propertyName\n );\n }\n const questionId = answer.closestQuestion?.id;\n const isCheckbox = answer.closestQuestion?.layout == 'check_boxes';\n if (isCheckbox) {\n if (answer.value === 't') answeredQuestionIds.add(questionId); // empty checkbox has 'f' value, so if uncheck/check skip them\n } else {\n if (answer.value != '') answeredQuestionIds.add(questionId);\n }\n });\n\n const stats: [string, number][] = [];\n policy.vendorPolicyClauses.forEach(({ id, questions, leaveOut }) => {\n const questionsIds = (questions || [])\n .filter(q => isVisible(q.showWhen))\n .map(q => q.id);\n if (leaveOut) {\n stats.push([id, 1]);\n } else {\n const answeredQuestionsIds = questionsIds.filter(qn =>\n answeredQuestionIds.has(qn)\n );\n stats.push([\n id,\n questionsIds.length > 0\n ? answeredQuestionsIds.length / questionsIds.length\n : 1,\n ]);\n }\n visibleQuestionIds = visibleQuestionIds.concat(questionsIds);\n });\n\n return { stats, visibleQuestionIds };\n};\n","import { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { selectCurrentVendor } from '../../selectors/selectCurrentVendor';\nimport { setCurrentAgreementId } from '../../store/agreements/agreementsSlice';\nimport {\n deleteAgreement,\n fetchAgreements,\n} from '../../store/agreements/agreementsThunks';\nimport { showGlobalToast } from '../../store/global/globalSlice';\nimport { AgreementModel } from '../../swagger';\nimport { ApplicationState } from '../../types/applicationState';\n\nexport const useAgreementsModals = () => {\n const currentVendor = useSelector(selectCurrentVendor);\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n\n const currentId = useSelector(\n (state: ApplicationState) => state.agreements.currentAgreementId\n );\n\n const setCurrentId = (id: AgreementModel['id']) =>\n dispatch(setCurrentAgreementId(id));\n\n const isDeletingAgreement = useSelector(\n (state: ApplicationState) => state.agreements.isDeletingAgreement\n );\n\n const dispatch = useDispatch();\n\n const handleDeleteClick = (agreementId: AgreementModel['id']) => {\n setCurrentId(agreementId);\n setShowDeleteModal(true);\n };\n\n const handleConfirmDelete = () => {\n dispatch(\n deleteAgreement(currentId, () => {\n dispatch(fetchAgreements(currentVendor.id, false));\n setShowDeleteModal(false);\n dispatch(showGlobalToast('The agreement has been deleted.'));\n })\n );\n };\n\n return {\n handleConfirmDelete,\n handleDeleteClick,\n showDeleteModal,\n setShowDeleteModal,\n currentId,\n setCurrentId,\n isDeletingAgreement,\n };\n};\n","import { useDispatch } from 'react-redux';\nimport { useCanFeature } from '../../functions/access';\nimport { AccessObject } from '../../types/accessObject';\nimport { TaskModel } from '../../swagger/models/TaskModel';\nimport {\n setEditTaskMode,\n setSelectedTaskId,\n setShowTaskDrawer,\n} from '../../store/compliance/complianceSlice';\nimport { EditTaskMode } from '../../store/compliance/complianceState';\n\nexport const useOnTaskViewClick = () => {\n const dispatch = useDispatch();\n const canUpdateTasks = useCanFeature(AccessObject.tasks_update);\n\n const onTaskViewClick = (taskId: TaskModel['id']) => {\n dispatch(setSelectedTaskId(taskId));\n if (!canUpdateTasks) {\n dispatch(setEditTaskMode(EditTaskMode.View));\n }\n dispatch(setShowTaskDrawer(true));\n };\n return { onTaskViewClick };\n};\n","import { useState } from 'react';\n\nexport const useAdoptechDebounce = () => {\n const [timer, setTimer] = useState();\n const checkWithDebounce = (callback: () => void, delayTime = 500) => {\n if (timer) {\n clearTimeout(timer);\n }\n setTimer(\n setTimeout(() => {\n callback();\n }, delayTime)\n );\n };\n return checkWithDebounce;\n};\n","import { AnyAction, Dispatch, ThunkDispatch } from '@reduxjs/toolkit';\nimport { useDispatch } from 'react-redux';\n\n// fixes ts error on await(dispatch(thunk)), where thunk was created by createAsyncThunk\ntype AppDispatch = ThunkDispatch & Dispatch;\nexport const useAppDispatch: () => AppDispatch = useDispatch;\n","import { useEffect } from 'react';\n\nexport const useAutoGrowTextArea = (\n textAreaRef: HTMLTextAreaElement | null,\n value: string\n) => {\n useEffect(() => {\n if (textAreaRef) {\n const scrollHeight = textAreaRef.scrollHeight;\n const height = textAreaRef.style.height;\n const heightNumber = height ? parseInt(height) : 0;\n\n if (scrollHeight >= heightNumber) {\n textAreaRef.style.height = scrollHeight + 'px';\n }\n }\n }, [textAreaRef, value]);\n};\n","import { useDispatch } from 'react-redux';\nimport { setBackgroundColor } from '../store/global/globalSlice';\nimport { GlobalState } from '../store/global/globalState';\nimport { useEffect } from 'react';\n\nexport const useBackground = (color: GlobalState['backgroundColor']) => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (!color) return;\n\n dispatch(setBackgroundColor(color));\n return () => {\n dispatch(setBackgroundColor());\n };\n }, [color]);\n};\n","import { useEffect } from 'react';\nimport useIdle from 'react-use/lib/useIdle';\n\nexport const useIdleLogout = ({ afterIdle }: { afterIdle: () => void }) => {\n const isIdle = useIdle(30 * 60 * 1000);\n\n useEffect(() => {\n if (isIdle) {\n afterIdle();\n }\n }, [isIdle]);\n};\n","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { selectUsers } from '../selectors/selectUsers';\nimport {\n SharedEmploymentStatus,\n SharedUserType,\n VendorUser,\n VendorUserRoles,\n} from '../swagger';\n\ninterface OwnerOptionsProps {\n valuesAsGlobalId: boolean;\n includingGuest: boolean;\n onlyAdminable: boolean;\n onlyRoles?: VendorUserRoles[];\n excludeLeft?: boolean;\n}\n\n// Special format for API value, which we use in SelectAnswer.tsx if object is vendor user\nexport const globalUserId = (user: VendorUser) => {\n return `VendorUser:${user.id}`;\n};\n\nexport const useOwnerOptions = ({\n valuesAsGlobalId,\n includingGuest,\n onlyAdminable,\n onlyRoles,\n excludeLeft = true,\n}: Partial = {}) => {\n const users = useSelector(selectUsers);\n const adminRoles = [\n VendorUserRoles.Admin,\n VendorUserRoles.SecurityManager,\n VendorUserRoles.SecurityEditor,\n VendorUserRoles.ExternalConsultant,\n ];\n\n const ownerOptions = useMemo(\n () =>\n users\n .filter(user =>\n includingGuest ? true : user.userType !== SharedUserType.Guest\n )\n .filter(user =>\n onlyAdminable\n ? user.roles.some(role => adminRoles.includes(role))\n : true\n )\n .filter(user =>\n onlyRoles ? user.roles.some(role => onlyRoles.includes(role)) : true\n )\n .filter(user =>\n excludeLeft\n ? user.employmentStatus !== SharedEmploymentStatus.Left\n : true\n )\n .map(user => {\n return {\n value: valuesAsGlobalId ? globalUserId(user) : user.id,\n label: user.fullName,\n };\n }),\n [\n includingGuest,\n onlyAdminable,\n valuesAsGlobalId,\n onlyRoles,\n excludeLeft,\n users,\n ]\n );\n\n return { users, ownerOptions };\n};\n","import { useHistory, useLocation } from 'react-router-dom';\n\nexport const useQueryParams = () => {\n return new URLSearchParams(useLocation().search);\n};\n\nexport const useRemoveQueryParam = () => {\n const history = useHistory();\n\n const queryParams = useQueryParams();\n\n return (key: string) => {\n queryParams.delete(key);\n\n history.push({\n search: queryParams.toString(),\n });\n };\n};\n","import { Dispatch, Middleware, MiddlewareAPI } from 'redux';\nimport { setErrorMessage } from '../store/global/globalSlice';\n\nexport const errorHandler: Middleware =\n (api: MiddlewareAPI) => (next: Dispatch) => action => {\n const apiFailureRegEx = /^.*failure$/gim;\n if (apiFailureRegEx.test(action.type)) {\n console.log('Error', action.type, action.payload);\n api.dispatch(setErrorMessage(action.payload));\n }\n return next(action);\n };\n","import { ApplicationState } from '../../types/applicationState';\n\nexport const selectVendorProductsFeatures = (state: ApplicationState) => {\n return state.vendors.vendorProducts?.features;\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { selectCurrentVendor } from './selectCurrentVendor';\nimport { ApplicationState } from '../types/applicationState';\nimport { sortByDate } from '../functions/sortByDate';\nimport { selectPaymentPlans } from './selectPaymentPlans';\n\nexport const selectActiveSubscription = createSelector(\n (state: ApplicationState) => state.user.subscriptions,\n (state: ApplicationState) => selectCurrentVendor(state),\n (subscriptions, currentVendor) => {\n return subscriptions.find(\n s => s.isActive && s.vendorId === currentVendor?.id\n );\n }\n);\n\n// select subscription which doesn't have outdated plan\nexport const selectActiveNotOutdatedSubscription = createSelector(\n (state: ApplicationState) => state.user.subscriptions,\n (state: ApplicationState) => selectCurrentVendor(state),\n (state: ApplicationState) => selectPaymentPlans(state),\n (subscriptions, currentVendor, plans) => {\n return [...subscriptions]\n .sort((a, b) => sortByDate(a.startDate, b.startDate, -1))\n .filter(subscription =>\n plans.map(plan => plan.id).includes(subscription.paymentPlanId)\n )\n .find(s => s.isActive && s.vendorId === currentVendor?.id);\n }\n);\n// If we have subscription with outdated plan like Bootup => Just ignore it ( use can subscribe to the new plan ) and show warning\n\nexport const outdatedActiveSubscription = createSelector(\n (state: ApplicationState) => state.user.subscriptions,\n (state: ApplicationState) => selectCurrentVendor(state),\n (state: ApplicationState) => selectPaymentPlans(state),\n (subscriptions, currentVendor, plans) => {\n return [...subscriptions]\n .filter(\n subscription =>\n !plans.map(plan => plan.id).includes(subscription.paymentPlanId)\n )\n .find(s => s.isActive && s.vendorId === currentVendor?.id);\n }\n);\n","import { AgreementModelSignatoriesStats } from '../swagger';\nimport { sort } from './sort';\n\nexport const sortBySignatoriesStats = (\n a: AgreementModelSignatoriesStats,\n b: AgreementModelSignatoriesStats,\n direction: 1 | -1\n) => {\n return sort(\n getSignedRatio(a.total, a.signed),\n getSignedRatio(b.total, b.signed),\n direction\n );\n};\n\nconst getSignedRatio = (total: number, signed: number) => {\n return total === 0 ? 0 : signed / total;\n};\n","import { AgreementModelSignatoriesStats, VendorUser } from '../swagger';\nimport { AgreementModel } from '../swagger/models/AgreementModel';\nimport { ColumnSort } from '../types/columnSort';\nimport { SortDirection } from '../types/sortDirection';\nimport { sort } from './sort';\nimport { sortByDate } from './sortByDate';\nimport { sortByOwner } from './sortByOwner';\nimport { sortBySignatoriesStats } from './sortBySignatoriesStats';\n\nexport const agreementSort = (\n a: AgreementModel,\n b: AgreementModel,\n columnSort: ColumnSort\n): number => {\n let direction: 1 | -1 = 1;\n if (columnSort.direction === SortDirection.Ascending) {\n direction = -1;\n }\n\n const typedColumn: keyof AgreementModel =\n columnSort.name as keyof AgreementModel;\n\n if (typedColumn === 'owner') {\n return sortByOwner(\n a[typedColumn] as VendorUser,\n b[typedColumn] as VendorUser,\n direction\n );\n }\n\n if (typedColumn === 'reviewDate') {\n return sortByDate(\n a[typedColumn] as string,\n b[typedColumn] as string,\n direction\n );\n }\n\n if (typedColumn === 'signatoriesStats') {\n return sortBySignatoriesStats(\n a[typedColumn] as AgreementModelSignatoriesStats,\n b[typedColumn] as AgreementModelSignatoriesStats,\n direction\n );\n }\n\n return sort(a[typedColumn], b[typedColumn], direction);\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AgreementModel, AgreementModelStatusEnum } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\n\nexport const selectAwaitingSignatureAgreements = createSelector(\n (state: ApplicationState) => state.agreements.agreements,\n (agreements: AgreementModel[]) => {\n const awaitingSignatureAgreements = agreements.filter(\n (agreement: AgreementModel) =>\n agreement.status === AgreementModelStatusEnum.AwaitingSignature\n );\n const rejectedAgreements = agreements.filter(\n (agreement: AgreementModel) =>\n agreement.status === AgreementModelStatusEnum.Rejected\n );\n\n return [...awaitingSignatureAgreements, ...rejectedAgreements];\n }\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AgreementModel, AgreementModelStatusEnum } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\n\nexport const selectDraftAgreements = createSelector(\n (state: ApplicationState) => state.agreements.agreements,\n (agreements: AgreementModel[]) =>\n agreements.filter(\n (agreement: AgreementModel) =>\n agreement.status === AgreementModelStatusEnum.Draft\n )\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AgreementsMode } from '../components/Agreements/AgreementsList/AgreementsList';\nimport { agreementSort } from '../functions/aggrementSort';\nimport { AgreementModel, AgreementModelStatusEnum } from '../swagger';\nimport { Grid } from '../types/grid';\nimport { selectAwaitingSignatureAgreements } from './selectAwaitingSignatureAgreements';\nimport { selectCompletedAgreements } from './selectCompletedAgreements';\nimport { selectDraftAgreements } from './selectDraftAgreements';\nimport { selectSortSettings } from './selectSortSettings';\n\nconst agreementsSelector = (mode: AgreementsMode) => {\n let selector;\n\n switch (mode) {\n case AgreementsMode.Draft:\n selector = selectDraftAgreements;\n break;\n case AgreementsMode.AwaitingSignature:\n selector = selectAwaitingSignatureAgreements;\n break;\n case AgreementsMode.Completed:\n selector = selectCompletedAgreements;\n break;\n }\n return selector;\n};\n\nexport const selectAgreementMode = (agreement: AgreementModel) => {\n switch (agreement.status) {\n case AgreementModelStatusEnum.Draft:\n return AgreementsMode.Draft;\n break;\n case AgreementModelStatusEnum.Signed:\n return AgreementsMode.Completed;\n break;\n default:\n return AgreementsMode.AwaitingSignature;\n }\n};\n\nexport const selectAgreements = (mode: AgreementsMode, currentGrid: Grid) => {\n const selector = agreementsSelector(mode);\n\n return createSelector(\n selector,\n selectSortSettings(currentGrid),\n (agreements: AgreementModel[], sortSetting) => {\n if (!agreements?.length) {\n return [];\n }\n return [...agreements].sort((a, b) =>\n agreementSort(a, b, sortSetting.columnSort)\n );\n }\n );\n};\n","import { ApplicationState } from '../types/applicationState';\n\nexport const selectAgreementsCreateForm = (state: ApplicationState) =>\n state.agreements.agreementsCreateForm;\n","import { createSelector } from '@reduxjs/toolkit';\nimport { getVendorAssessmentResponses } from '../functions/getVendorAssessmentResponses';\nimport { getVendorAssessments } from '../functions/getVendorAssessments';\nimport { AssessmentTabs } from '../store/assessments/assessmentsState';\nimport { ApplicationState } from '../types/applicationState';\n\nexport const selectAssessmentsTab = createSelector(\n getVendorAssessments,\n getVendorAssessmentResponses,\n (state: ApplicationState) => state.assessments.assessmentTabToShow,\n (vendorAssessments, vendorAssessmentResponses, assessmentTabToShow) => {\n const assessmentCount = vendorAssessments.length;\n const assessmentResponsesCount = vendorAssessmentResponses.length;\n\n if (assessmentCount === 0 && assessmentResponsesCount === 0) {\n return AssessmentTabs.Outgoing;\n } else if (assessmentTabToShow) {\n return assessmentTabToShow;\n } else {\n return assessmentResponsesCount > 0\n ? AssessmentTabs.Incoming\n : AssessmentTabs.Outgoing;\n }\n }\n);\n\n/*\nif neither populated, open Outgoing as has the tiles\nif only one populated, open the non-blank one\nif both are populated, open the last one opened\n*/\n","import { createSelector } from '@reduxjs/toolkit';\nimport { AgreementModel, AgreementModelStatusEnum } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\n\nexport const selectCompletedAgreements = createSelector(\n (state: ApplicationState) => state.agreements.agreements,\n (agreements: AgreementModel[]) =>\n agreements.filter(\n (agreement: AgreementModel) =>\n agreement.status === AgreementModelStatusEnum.Signed\n )\n);\n","import { ApplicationState } from '../types/applicationState';\n\nexport const selectCurrentAgreement = (state: ApplicationState) => {\n const {\n agreements,\n currentAgreementId,\n currentAgreement: agreementOnShowPage,\n } = state.agreements;\n\n const { pathname } = state.router.location;\n\n const agreementOnIndexPage = (agreements || []).find(\n agreement => agreement.id === currentAgreementId\n );\n\n // replace all slashes or # in the end\n return pathname.replaceAll(/[^\\w]/g, '').endsWith('agreements')\n ? agreementOnIndexPage\n : agreementOnShowPage;\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { CompanyExtended, VendorDetails } from '../swagger';\nimport { selectVendorDetails } from './selectVendorDetails';\n\n// Flow on initial load:\n// 1) fetch all vendors with companies\n// 2) fetch current company extended and save it to the same store to avoid dup state\n\nexport const selectCurrentCompany = createSelector(\n selectVendorDetails,\n (vendorDetails: VendorDetails): CompanyExtended => {\n if (vendorDetails && vendorDetails.companies.length > 0) {\n return vendorDetails.companies[0];\n }\n\n return undefined;\n }\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { Vendor } from '../swagger/models';\nimport { ApplicationState } from '../types/applicationState';\n\nconst getCurrentVendor = (state: ApplicationState) =>\n state.vendors?.currentVendor;\n\nexport const selectCurrentVendor = createSelector(\n getCurrentVendor,\n (vendor: Vendor) => {\n return vendor;\n }\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { UserDetails, VendorUser, VendorUserRoles } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\n\nconst getUserDetails = (state: ApplicationState) => state.user.userDetails;\nconst getVendorUsers = (state: ApplicationState) => state.vendors.users;\n\nexport const selectCurrentVendorUser = createSelector(\n getUserDetails,\n getVendorUsers,\n (userDetails: UserDetails, vendorUsers: VendorUser[]) => {\n return vendorUsers?.find(user => user.userId === userDetails.id);\n }\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { VendorUser } from '../swagger/models';\nimport { selectCurrentVendorUser } from './selectCurrentVendorUser';\n\nexport const selectCurrentVendorUserId = createSelector(\n selectCurrentVendorUser,\n (user: VendorUser) => {\n return user?.id;\n }\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { getPolicyDocuments } from '../functions/getPolicyDocuments';\nimport {\n VendorDocumentAttestationStatusEnum,\n VendorDocumentExtended,\n VendorDocumentStatusEnum,\n} from '../swagger';\nimport { Grid } from '../types/grid';\nimport { selectSortSettings } from './selectSortSettings';\nimport { getVendorPolicies } from '../functions/getVendorPolicies';\nimport { vendorDocumentWithCategoryNameSort } from '../functions/vendorDocumentWithCategoryNameSort';\nimport { ApplicationState } from '../types/applicationState';\n\nexport interface VendorDocumentWithCategoryName extends VendorDocumentExtended {\n categoryName: string;\n}\n\nexport const myPoliciesFilterEnabled = (state: ApplicationState) => {\n return state.vendors.documentState.myPoliciesFilterEnabled;\n};\n\nexport const selectLivePolicies = createSelector(\n getPolicyDocuments,\n getVendorPolicies,\n selectSortSettings(Grid.LivePolicies),\n myPoliciesFilterEnabled,\n (livePolicies, vendorPolicies, sortSetting, myPoliciesFilter) => {\n const clonedLivePolicies: VendorDocumentExtended[] = [...livePolicies];\n return clonedLivePolicies\n .filter(\n vd =>\n vd.status !== VendorDocumentStatusEnum.Approval &&\n vd.status !== VendorDocumentStatusEnum.Rejected\n )\n .filter(vendorDocument => {\n const attestation = vendorDocument.vendorDocumentAttestation;\n const relatedToMe = // was read by me or require read for me\n attestation &&\n attestation.status !==\n VendorDocumentAttestationStatusEnum.WasNotRequested;\n return myPoliciesFilter ? relatedToMe : true;\n })\n .map(vde => {\n return {\n ...vde,\n categoryName:\n vendorPolicies.find(vp => vp.vendorDocumentId === vde.id)\n ?.categoryName || '',\n } as VendorDocumentWithCategoryName;\n })\n .sort((a, b) =>\n vendorDocumentWithCategoryNameSort(a, b, sortSetting.columnSort)\n );\n }\n);\n","import { ApplicationState } from '../types/applicationState';\n\nexport const selectPaymentPlans = (state: ApplicationState) => {\n return state.pricing.paymentPlans || [];\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { assessmentResponseSort } from '../functions/assessmentResponseSort';\nimport { getVendorAssessmentResponses } from '../functions/getVendorAssessmentResponses';\nimport { COMPLETED_TEXT } from '../types/constants';\nimport { Grid } from '../types/grid';\nimport { selectSortSettings } from './selectSortSettings';\n\nexport const selectPendingAssessments = createSelector(\n getVendorAssessmentResponses,\n selectSortSettings(Grid.PendingAssessments),\n (vendorAssessmentResponses, sortSetting) => {\n const clonedVendorAssessmentResponses = [...vendorAssessmentResponses];\n return clonedVendorAssessmentResponses\n .filter(ar => ar.status !== COMPLETED_TEXT)\n .sort((a, b) => assessmentResponseSort(a, b, sortSetting.columnSort));\n }\n);\n","import moment from 'moment';\nimport { AssessmentResponse } from '../swagger';\nimport { ColumnSort } from '../types/columnSort';\nimport { SortDirection } from '../types/sortDirection';\nimport { sort } from './sort';\n\nexport const assessmentResponseSort = (\n a: AssessmentResponse,\n b: AssessmentResponse,\n columnSort: ColumnSort\n): number => {\n let direction = 1;\n if (columnSort.direction === SortDirection.Ascending) {\n direction = -1;\n }\n\n const typedColumn: keyof AssessmentResponse =\n columnSort.name as keyof AssessmentResponse;\n\n switch (typedColumn) {\n case 'dueDate':\n return sort(moment(a.dueDate), moment(b.dueDate), direction);\n case 'updatedAt':\n return sort(moment(a.updatedAt), moment(b.updatedAt), direction);\n default:\n return sort(a[typedColumn], b[typedColumn], direction);\n }\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { ApplicationState } from '../types/applicationState';\n\nexport const selectRouteName = createSelector(\n (state: ApplicationState) => state.router.location.pathname,\n path => `/${path.split('/').slice(1, 4).join('/')}`\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { FrameworkModel } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\n\nconst getFrameworks = (state: ApplicationState) => state.compliance.frameworks;\nexport const getSelectedFrameworkId = (state: ApplicationState) =>\n state.compliance.selectedFrameworkId;\n\nexport const selectSelectedFramework = createSelector(\n getFrameworks,\n getSelectedFrameworkId,\n (frameworks: FrameworkModel[], selectedFrameworkId: string) => {\n return frameworks?.find(fw => fw.id === selectedFrameworkId);\n }\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { GlobalState } from '../store/global/globalState';\nimport { ApplicationState } from '../types/applicationState';\nimport { ColumnSort } from '../types/columnSort';\nimport { Grid } from '../types/grid';\n\nexport const selectSortSettings = (grid: Grid) => {\n return createSelector(\n (state: ApplicationState) => state.global,\n (state: GlobalState) => {\n const columnSort: ColumnSort = { direction: undefined, name: undefined };\n const sortSetting = state.sortSettings.find(ss => ss.grid === grid);\n return sortSetting ? sortSetting : { columnSort, grid };\n }\n );\n};\n","import { ColumnSort } from '../types/columnSort';\nimport { SortDirection } from '../types/sortDirection';\nimport { sort } from './sort';\nimport { SharedUserType, SharedVendorUserStatus, VendorUser } from '../swagger';\n\nexport const vendorUserSort = (\n a: VendorUser,\n b: VendorUser,\n columnSort: ColumnSort\n): number => {\n let direction = 1;\n if (columnSort.direction === SortDirection.Ascending) {\n direction = -1;\n }\n\n const typedColumn: keyof VendorUser = columnSort.name as keyof VendorUser;\n\n // @ts-ignore\n if (typedColumn === 'compliant') {\n const aCompliance = a.complianceStats?.overall;\n const bCompliance = b.complianceStats?.overall;\n return (aCompliance === bCompliance ? 0 : aCompliance ? -1 : 1) * direction;\n }\n\n if (typedColumn === 'employmentStatus') {\n const aIsInvited = a.status === SharedVendorUserStatus.Invited;\n const bIsInvited = b.status === SharedVendorUserStatus.Invited;\n\n if (aIsInvited && !bIsInvited) return -1;\n if (!aIsInvited && bIsInvited) return 1;\n\n const aIsSystemUser = a.userType === SharedUserType.SystemUser;\n const bIsSystemUser = b.userType === SharedUserType.SystemUser;\n\n if (aIsSystemUser && !bIsSystemUser) return -1;\n if (!aIsSystemUser && bIsSystemUser) return 1;\n\n return sort(a[typedColumn] || '', b[typedColumn] || '', direction);\n }\n\n return sort(a[typedColumn] || '', b[typedColumn] || '', direction);\n};\n","import { createSelector } from '@reduxjs/toolkit';\nimport { SharedEmploymentStatus, VendorUser } from '../swagger';\nimport { ApplicationState } from '../types/applicationState';\nimport { selectSortSettings } from './selectSortSettings';\nimport { Grid } from '../types/grid';\nimport { vendorUserSort } from '../functions/vendorUserSort';\n\nexport const selectUsers = createSelector(\n (state: ApplicationState) => state.vendors.users,\n selectSortSettings(Grid.Users),\n (_: ApplicationState, options?: { excludeLeft?: boolean }) => options || {},\n (users: VendorUser[], sortSetting, options) => {\n const { excludeLeft = true } = options;\n if (users?.length) {\n let filteredUsers = users;\n if (excludeLeft) {\n filteredUsers = users.filter(\n user => user.employmentStatus !== SharedEmploymentStatus.Left\n );\n }\n return [...filteredUsers].sort((a, b) =>\n vendorUserSort(a, b, sortSetting.columnSort)\n );\n }\n return [];\n }\n);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { Vendor, VendorDetails } from '../swagger/models';\nimport { ApplicationState } from '../types/applicationState';\nimport { selectCurrentVendor } from './selectCurrentVendor';\n\nconst getVendorDetails = (state: ApplicationState) =>\n state.vendors.vendorDetails;\n\nexport const selectVendorDetails = createSelector(\n selectCurrentVendor,\n getVendorDetails,\n (vendor: Vendor, vendorDetails: VendorDetails[]) => {\n if (!vendor) {\n return undefined;\n }\n if (vendorDetails.length === 0) {\n return undefined;\n }\n return vendorDetails.find(vd => vd.id === vendor.id);\n }\n);\n","import { createSlice, current, PayloadAction } from '@reduxjs/toolkit';\nimport { AgreementsState } from './agreementsState';\nimport {\n AgreementExtended,\n AgreementModel,\n AgreementTemplateModel,\n AgreementSignatoryModel,\n AgreementTemplateCategoryModel,\n Answer,\n AgreementExtendedModesAvailableEnum,\n} from '../../swagger';\nimport {\n AgreementCreateFormFieldPayload,\n AgreementsCreateForm,\n} from '../../components/Agreements/AddNewAgreementForm/AddNewAgreementForm';\nimport {\n AgreementEditFormFieldPayload,\n AgreementsEditForm,\n} from '../../components/Agreements/EditAgreementForm/EditAgreementForm';\nimport { NOT_FOUND_INDEX } from '../../types/constants';\nimport { AuditsState } from '../../features/compliance/audits/store/auditsState';\n\nexport interface AgreementReminderModal {\n isShowing: boolean;\n id?: AgreementModel['id'];\n email?: string;\n}\n\nexport const updateAnswerSlice = (\n model: AgreementsState['currentAgreement'] | AuditsState['currentAudit'],\n action: PayloadAction\n) => {\n const newAnswer = action.payload;\n model.survey.surveyClauses.forEach(sc => {\n sc.questions.forEach(q => {\n if (q.propertyName === newAnswer.propertyName) {\n if (!q.answer) {\n // Initially before BE request we don't have \"q.answer\". We need to wait a couple of seconds to wait the BE response.\n // But we need \"q.answer.value\" for conditional question logic without wait => create it\n q.answer = { value: newAnswer.value };\n } else {\n q.answer.value = newAnswer.value;\n }\n }\n });\n });\n};\n\nconst agreementsSlice = createSlice({\n initialState: {\n agreementTemplates: [],\n agreementTemplateCategories: [],\n vendorAgreementDocuments: [],\n signAgreementModalData: { isShowing: false },\n agreementsCreateForm: {} as AgreementsCreateForm,\n agreementsEditForm: {} as AgreementsEditForm,\n agreements: [], // Used: /agreements, Edit RHS (on /agreements page)\n currentAgreementId: null as AgreementModel['id'], // Used in meatballMenu modals ( useAgreementsModals.ts )\n currentAgreement: null as AgreementExtended, // Used: /agreements/:id, Edit RHS (on /agreements/:id page), Edit RHS Branding\n archivingAgreement: {},\n currentAgreementSignatories: [],\n currentAgreementSignatoriesUpdated: [],\n agreementSendReminderModalData: {\n isShowing: false,\n } as AgreementReminderModal,\n currentAgreementMode: null as AgreementExtendedModesAvailableEnum,\n } as unknown as AgreementsState,\n name: 'agreementsSlice',\n reducers: {\n agreementTemplateCategoriesRequest: state => {\n state.isRequestingAgreementTemplateCategories = true;\n },\n agreementTemplateCategoriesRequestSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.agreementTemplateCategories = action.payload;\n state.isRequestingAgreementTemplateCategories = false;\n },\n agreementTemplateCategoriesRequestFailure: (\n state,\n action: PayloadAction\n ) => {\n state.agreementTemplateCategoriesRequestError = action.payload;\n state.isRequestingAgreementTemplateCategories = false;\n },\n toggleAddAgreementDrawer: state => {\n state.isShowingAddAgreementDrawer = !state.isShowingAddAgreementDrawer;\n },\n toggleEditAgreementDrawer: state => {\n state.isShowingEditAgreementDrawer = !state.isShowingEditAgreementDrawer;\n },\n agreementTemplatesRequest: state => {\n state.isRequestingAgreementTemplates = true;\n },\n agreementTemplatesRequestSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.agreementTemplates = action.payload;\n state.isRequestingAgreementTemplates = false;\n },\n agreementTemplatesRequestFailure: (state, action: PayloadAction) => {\n state.agreementTemplatesRequestError = action.payload;\n state.isRequestingAgreementTemplates = false;\n },\n createAgreementRequestFailure: (state, action: PayloadAction) => {\n state.createAgreementRequestFailure = action.payload;\n state.isCreatingAgreement = false;\n },\n setNotificationDispatchStatus: (state, action: PayloadAction) => {\n state.isDispatchingNotification = action.payload;\n },\n notificationDispatchError: (state, action: PayloadAction) => {\n state.notificationDispatchRequestFailure = action.payload;\n state.isDispatchingNotification = false;\n },\n setAgreementCreationStatus: (state, action: PayloadAction) => {\n state.isCreatingAgreement = action.payload;\n },\n agreementsRequest: (state, action: PayloadAction) => {\n state.isRequestingAgreements = action.payload;\n },\n agreementsRequestSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.agreements = action.payload;\n state.isRequestingAgreements = false;\n },\n agreementsRequestFailure: (state, action: PayloadAction) => {\n state.agreementsRequestError = action.payload;\n state.isRequestingAgreements = false;\n },\n setCurrentAgreementLoading: (state, action: PayloadAction) => {\n state.isRequestingCurrentAgreement = action.payload;\n },\n setAgreementEditFormExtendedFieldsLoaded: (\n state,\n action: PayloadAction\n ) => {\n state.agreementsEditForm.isLoadedExtendedFields = action.payload;\n },\n setCurrentAgreement: (state, action: PayloadAction) => {\n state.currentAgreement = action.payload; // used on show draft page ( because we don't have state.agreements here )\n state.currentAgreementId = state.currentAgreement?.id; // used for RHS/modals and selectCurrentAgreement selector\n state.currentAgreementMode = AgreementExtendedModesAvailableEnum.Survey;\n },\n currentAgreementRequestFailure: (state, action: PayloadAction) => {\n state.currentAgreementRequestError = action.payload;\n state.isRequestingCurrentAgreement = false;\n },\n setRequestingAgreementPdf: (state, action: PayloadAction) => {\n state.isRequestingAgreementPdf = action.payload;\n },\n currentAgreementPdfRequestFailure: (\n state,\n action: PayloadAction\n ) => {\n state.currentAgreementPdfRequestError = action.payload;\n },\n agreementAnswersFailure: (state, action: PayloadAction) => {\n state.agreementAnswersError = action.payload;\n },\n setSignatoryCreationOrUpdateStatus: (\n state,\n action: PayloadAction\n ) => {\n state.isCreatingOrUpdatingSignatory = action.payload;\n },\n createOrUpdateSignatoryRequestFailure: (\n state,\n action: PayloadAction\n ) => {\n state.createOrUpdateSignatoryRequestError = action.payload;\n state.isCreatingOrUpdatingSignatory = false;\n },\n currentAgreementSignatoriesRequest: state => {\n state.isRequestingCurrentAgreementSignatories = true;\n },\n currentAgreementSignatoriesRequestSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.currentAgreementSignatories = action.payload;\n state.isRequestingCurrentAgreementSignatories = false;\n },\n currentAgreementSignatoriesRequestFailure: (\n state,\n action: PayloadAction\n ) => {\n state.currentAgreementSignatoriesRequestError = action.payload;\n state.isRequestingCurrentAgreementSignatories = false;\n },\n updateSignatory: (\n state,\n action: PayloadAction\n ) => {\n const signatoryIndex = state.currentAgreementSignatories.findIndex(\n s => s.id === action.payload.id\n );\n if (signatoryIndex > NOT_FOUND_INDEX) {\n state.currentAgreementSignatories[signatoryIndex] = action.payload;\n\n const addToList = !state.currentAgreementSignatoriesUpdated.includes(\n action.payload.id\n );\n if (addToList)\n state.currentAgreementSignatoriesUpdated.push(action.payload.id);\n }\n },\n\n clearCurrentAgreementSignatories: state => {\n state.currentAgreementSignatories = null;\n },\n setDeleteAgreementStatus: (state, action: PayloadAction) => {\n state.isDeletingAgreement = action.payload;\n },\n deleteAgreementFailure: (state, action: PayloadAction) => {\n state.deleteAgreementFailure = action.payload;\n state.isDeletingAgreement = false;\n },\n deleteAgreementTableAnswersFailure: (\n state,\n action: PayloadAction\n ) => {\n state.deleteAgreementTableAnswersFailure = action.payload;\n },\n setSignAgreementStatus: (state, action: PayloadAction) => {\n state.isSigningAgreement = action.payload;\n },\n signAgreementFailure: (state, action: PayloadAction) => {\n state.signAgreementFailure = action.payload;\n state.isSigningAgreement = false;\n },\n editAgreementClauseFailure: (state, action: PayloadAction) => {\n state.editAgreementClauseFailure = action.payload;\n },\n revertAgreementClauseFailure: (state, action: PayloadAction) => {\n state.revertAgreementClauseFailure = action.payload;\n },\n undoArchivedAgreement: (state, _: PayloadAction) => {\n const indexAgreement = +localStorage.getItem('agreement-archived-index');\n state.agreements.splice(indexAgreement, 0, state.archivingAgreement);\n },\n createNewVersionOfAgreementRequest: (\n state,\n action: PayloadAction\n ) => {\n state.isCreatingNewVersionOfAgreement = action.payload;\n },\n createNewVersionOfAgreementFailure: (\n state,\n action: PayloadAction\n ) => {\n state.createNewVersionOfAgreementFailure = action.payload;\n state.isCreatingNewVersionOfAgreement = false;\n },\n\n sendToReviewRequest: state => {\n state.isSendingToReview = true;\n },\n\n sendToReviewSuccess: state => {\n state.isSendingToReview = false;\n },\n\n sendToReviewFailure: (state, _) => {\n state.isSendingToReview = false;\n },\n\n archiveAgreementRequest: state => {\n state.isArchivingAgreement = true;\n state.isArchivingError = undefined;\n },\n\n archiveAgreementSuccess: (state, action: PayloadAction) => {\n state.isArchivingAgreement = false;\n state.isArchivingError = undefined;\n\n state.agreements = state.agreements.filter(\n agreement => agreement.id !== action.payload\n );\n },\n\n unArchiveAgreementRequest: (state, action: PayloadAction) => {\n state.unArchivingError = undefined;\n },\n\n unArchiveAgreementRequestFailure: (\n state,\n action: PayloadAction\n ) => {\n state.unArchivingError = action.payload;\n },\n archiveAgreementFailure: (state, action: PayloadAction) => {\n state.isArchivingAgreement = false;\n state.archiveAgreementError = action.payload;\n },\n patchAgreementRequest: state => {\n state.isPatchingAgreement = true;\n state.patchAgreementError = undefined;\n },\n\n setArchivingAgreement: (\n state,\n action: PayloadAction\n ) => {\n state.archivingAgreement = state.agreements.find(\n agreement => agreement.id === action.payload\n );\n },\n patchAgreementSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isPatchingAgreement = false;\n\n const agreements = [...state.agreements];\n const index = agreements.findIndex(\n document => document.id === action.payload.id\n );\n if (index === -1) {\n agreements.push(action.payload);\n } else {\n agreements.splice(index, 1, { ...action.payload });\n }\n state.agreements = agreements;\n\n // We don't have state.agreements on /r/governance/agreements/id page)\n if (state.currentAgreement?.id === action.payload.id) {\n state.currentAgreement = {\n ...state.currentAgreement,\n ...action.payload,\n };\n }\n },\n patchAgreementFailure: (state, action: PayloadAction) => {\n state.isPatchingAgreement = false;\n state.patchAgreementError = action.payload;\n },\n\n cleanupAgreementsCreateForm: (state, action: PayloadAction) => {\n state.agreementsCreateForm = {} as AgreementsCreateForm;\n },\n\n updateAgreementsCreateFormField: (\n state,\n action: PayloadAction\n ) => {\n state.agreementsCreateForm = {\n ...state.agreementsCreateForm,\n ...action.payload,\n };\n },\n\n cleanupAgreementsEditForm: (state, action: PayloadAction) => {\n state.agreementsEditForm = {} as AgreementsEditForm;\n state.currentAgreementId = null as AgreementModel['id'];\n state.currentAgreementSignatories = null;\n state.currentAgreementSignatoriesUpdated = [];\n },\n\n setCurrentAgreementId: (\n state,\n action: PayloadAction\n ) => {\n state.currentAgreementId = action.payload;\n },\n\n updateAgreementsEditFormField: (\n state,\n action: PayloadAction\n ) => {\n state.agreementsEditForm = {\n ...state.agreementsEditForm,\n ...action.payload,\n };\n },\n\n toggleAgreementReminderModal: (\n state,\n action: PayloadAction\n ) => {\n state.agreementSendReminderModalData = action.payload;\n },\n\n setAgreementMode: (\n state,\n action: PayloadAction\n ) => {\n state.currentAgreementMode = action.payload;\n },\n\n postAgreementAnswer: state => {\n state.isPostingAgreementAnswer = true;\n },\n updateAnswer: (state, action: PayloadAction) => {\n updateAnswerSlice(state.currentAgreement, action);\n },\n isPostingAgreementAnswerFinished: state => {\n state.isPostingAgreementAnswer = false;\n },\n patchAgreementContentRequest: state => {\n state.isPatchingAgreementContent = true;\n state.patchAgreementContentError = undefined;\n },\n patchAgreementContentSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isPatchingAgreementContent = false;\n state.currentAgreement = action.payload;\n state.agreements = state.agreements.map(agreement => {\n return agreement.id === action.payload.id\n ? { ...agreement, ...action.payload }\n : agreement;\n });\n },\n patchAgreementContentFailure: (state, action: PayloadAction) => {\n state.isPatchingAgreementContent = false;\n state.patchAgreementContentError = action.payload;\n },\n setAgreementContent: (state, action: PayloadAction) => {\n state.agreementContent = action.payload;\n },\n setAgreementContentChanged: (state, action: PayloadAction) => {\n state.agreementContentChanged = action.payload;\n },\n agreementUploadRequest: state => {\n state.isUploadingAgreement = true;\n },\n agreementUploadRequestSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.agreements.push(action.payload);\n state.isUploadingAgreement = false;\n },\n agreementUploadRequestFailure: (state, action: PayloadAction) => {\n state.agreementUploadError = action.payload;\n state.isUploadingAgreement = false;\n },\n },\n});\n\nexport const {\n agreementTemplatesRequest,\n agreementTemplatesRequestSuccess,\n agreementTemplatesRequestFailure,\n agreementsRequest,\n agreementsRequestSuccess,\n agreementsRequestFailure,\n setCurrentAgreementLoading,\n setAgreementEditFormExtendedFieldsLoaded,\n setCurrentAgreement,\n currentAgreementRequestFailure,\n setAgreementCreationStatus,\n createAgreementRequestFailure,\n agreementAnswersFailure,\n setNotificationDispatchStatus,\n notificationDispatchError,\n setSignatoryCreationOrUpdateStatus,\n createOrUpdateSignatoryRequestFailure,\n currentAgreementSignatoriesRequest,\n currentAgreementSignatoriesRequestSuccess,\n currentAgreementSignatoriesRequestFailure,\n clearCurrentAgreementSignatories,\n setDeleteAgreementStatus,\n deleteAgreementFailure,\n deleteAgreementTableAnswersFailure,\n setSignAgreementStatus,\n signAgreementFailure,\n editAgreementClauseFailure,\n revertAgreementClauseFailure,\n createNewVersionOfAgreementFailure,\n createNewVersionOfAgreementRequest,\n patchAgreementFailure,\n patchAgreementRequest,\n patchAgreementSuccess,\n agreementTemplateCategoriesRequest,\n agreementTemplateCategoriesRequestSuccess,\n agreementTemplateCategoriesRequestFailure,\n toggleAddAgreementDrawer,\n updateAgreementsCreateFormField,\n cleanupAgreementsCreateForm,\n updateAgreementsEditFormField,\n cleanupAgreementsEditForm,\n toggleEditAgreementDrawer,\n setCurrentAgreementId,\n toggleAgreementReminderModal,\n setAgreementMode,\n archiveAgreementFailure,\n archiveAgreementSuccess,\n archiveAgreementRequest,\n setArchivingAgreement,\n unArchiveAgreementRequest,\n unArchiveAgreementRequestFailure,\n undoArchivedAgreement,\n patchAgreementContentRequest,\n patchAgreementContentSuccess,\n patchAgreementContentFailure,\n setAgreementContent,\n setAgreementContentChanged,\n updateSignatory,\n postAgreementAnswer,\n isPostingAgreementAnswerFinished,\n agreementUploadRequest,\n agreementUploadRequestSuccess,\n agreementUploadRequestFailure,\n currentAgreementPdfRequestFailure,\n setRequestingAgreementPdf,\n updateAnswer,\n sendToReviewRequest,\n sendToReviewFailure,\n sendToReviewSuccess,\n} = agreementsSlice.actions;\n\nexport default agreementsSlice.reducer;\n","import { api } from '../../api/api';\nimport { getApiErrorMessage } from '../../functions/getApiErrorMessage';\nimport {\n agreementAnswersFailure,\n agreementsRequest,\n agreementsRequestFailure,\n agreementsRequestSuccess,\n agreementTemplatesRequest,\n agreementTemplatesRequestFailure,\n agreementTemplatesRequestSuccess,\n createAgreementRequestFailure,\n createOrUpdateSignatoryRequestFailure,\n currentAgreementRequestFailure,\n currentAgreementSignatoriesRequest,\n currentAgreementSignatoriesRequestFailure,\n currentAgreementSignatoriesRequestSuccess,\n deleteAgreementFailure,\n deleteAgreementTableAnswersFailure,\n notificationDispatchError,\n patchAgreementContentFailure,\n patchAgreementContentRequest,\n patchAgreementContentSuccess,\n setAgreementCreationStatus,\n setCurrentAgreement,\n setCurrentAgreementLoading,\n setAgreementEditFormExtendedFieldsLoaded,\n setDeleteAgreementStatus,\n setNotificationDispatchStatus,\n setSignAgreementStatus,\n setSignatoryCreationOrUpdateStatus,\n signAgreementFailure,\n editAgreementClauseFailure,\n revertAgreementClauseFailure,\n createNewVersionOfAgreementFailure,\n createNewVersionOfAgreementRequest,\n patchAgreementRequest,\n patchAgreementSuccess,\n patchAgreementFailure,\n agreementTemplateCategoriesRequest,\n agreementTemplateCategoriesRequestSuccess,\n agreementTemplateCategoriesRequestFailure,\n archiveAgreementRequest,\n archiveAgreementSuccess,\n archiveAgreementFailure,\n setArchivingAgreement,\n unArchiveAgreementRequest,\n unArchiveAgreementRequestFailure,\n undoArchivedAgreement,\n updateAgreementsEditFormField,\n postAgreementAnswer,\n agreementUploadRequest,\n agreementUploadRequestSuccess,\n agreementUploadRequestFailure,\n updateAnswer,\n sendToReviewRequest,\n sendToReviewSuccess,\n sendToReviewFailure,\n isPostingAgreementAnswerFinished,\n setAgreementMode,\n} from './agreementsSlice';\nimport { VoidThunk } from '../../types/voidThunk';\nimport { UNKNOWN_ERROR } from '../../types/constants';\nimport {\n AgreementCreatePayload,\n AgreementExtended,\n AgreementModel,\n AgreementSignatoryCreateExternalPayload,\n AgreementSignatoryNotifyPayload,\n AgreementSignatoriesIdPatchRequest,\n AgreementVersionCreatePayloadVersionBumpEnum,\n Answer,\n SurveyClauseUpdatePayload,\n VendorsIdAgreementsUploadPostRequest,\n AgreementSignatoryModel,\n} from '../../swagger';\nimport { mapTableAnswers } from '../../functions/mapTableAnswers';\nimport { getErrorMessage } from '../helpers/thunkHelpers';\nimport {\n showGlobalToast,\n showGlobalToastWithUndo,\n} from '../global/globalSlice';\nimport {\n hideDocumentUploadModal,\n uploadVendorDocumentFailure,\n uploadVendorDocumentRequest,\n uploadVendorDocumentSuccess,\n} from '../vendors/vendorsSlice';\n\nexport const createAgreement =\n ({\n vendorId,\n body,\n onSuccess = () => {},\n onError = () => {},\n }: {\n vendorId: string;\n body: AgreementCreatePayload;\n onSuccess?: (response: AgreementExtended) => void;\n onError?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(setAgreementCreationStatus(true));\n const response = await api().vendorsIdAgreementsPostRaw({\n id: vendorId,\n body,\n });\n const data = await response.value();\n dispatch(setAgreementCreationStatus(false));\n onSuccess && onSuccess(data);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while creating the agreement. Please try again or contact support.'\n );\n dispatch(createAgreementRequestFailure(apiErrorMessage));\n onError && onError();\n }\n };\n\nexport const fetchAgreementTemplates =\n (): VoidThunk => async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor.id;\n dispatch(agreementTemplatesRequest());\n const response = await api().agreementTemplatesGet({ vendorId });\n dispatch(agreementTemplatesRequestSuccess(response));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred fetching agreements templates. Please try again or contact support.'\n );\n dispatch(agreementTemplatesRequestFailure(apiErrorMessage));\n }\n };\n\nexport const fetchAgreementTemplateCategories =\n (): VoidThunk => async dispatch => {\n try {\n dispatch(agreementTemplateCategoriesRequest());\n const response = await api().agreementTemplateCategoriesGet();\n dispatch(agreementTemplateCategoriesRequestSuccess(response));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching agreements categories templates. Please try again or contact support.'\n );\n dispatch(agreementTemplateCategoriesRequestFailure(apiErrorMessage));\n }\n };\n\nexport const fetchAgreements =\n (\n vendorId: string,\n withLoader = true,\n onSuccess?: (response: AgreementModel[]) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(agreementsRequest(withLoader));\n const response = await api().vendorsIdAgreementsGet({\n id: vendorId,\n });\n dispatch(agreementsRequestSuccess(response));\n onSuccess && onSuccess(response);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred fetching in progress agreements. Please try again or contact support.'\n );\n dispatch(agreementsRequestFailure(apiErrorMessage));\n }\n };\n\nexport const uploadCompletedAgreement =\n (params: VendorsIdAgreementsUploadPostRequest): VoidThunk =>\n async dispatch => {\n try {\n dispatch(agreementUploadRequest());\n const response = await api().vendorsIdAgreementsUploadPost(params);\n dispatch(agreementUploadRequestSuccess(response));\n dispatch(hideDocumentUploadModal());\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while uploading agreement. Please try again or contact support.'\n );\n dispatch(agreementUploadRequestFailure(apiErrorMessage));\n }\n };\n\nexport const fetchAgreementEditFormFields =\n (id: string): VoidThunk =>\n async dispatch => {\n try {\n const response = await api().agreementsIdGet({\n id,\n });\n const { useBrandingColor, useCompanyLogo } = response;\n dispatch(\n updateAgreementsEditFormField({ useBrandingColor, useCompanyLogo })\n );\n dispatch(setAgreementEditFormExtendedFieldsLoaded(true));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(currentAgreementRequestFailure(apiErrorMessage));\n } else {\n dispatch(\n currentAgreementRequestFailure(\n 'An error occurred fetching extended agreement data. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(currentAgreementRequestFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchAgreementById =\n (\n id: string,\n withLoader = true,\n onSuccess?: (response: AgreementExtended) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(setCurrentAgreementLoading(withLoader));\n const response = await api().agreementsIdGet({\n id,\n });\n dispatch(setCurrentAgreement(mapTableAnswers(response)));\n dispatch(setCurrentAgreementLoading(false));\n onSuccess && onSuccess(response);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred fetching agreement. Please try again or contact support.'\n );\n dispatch(currentAgreementRequestFailure(apiErrorMessage));\n }\n };\n\nexport const addAgreementAnswers =\n ({\n vendorId,\n answers,\n onSuccess,\n }: {\n vendorId: string;\n answers: Answer[];\n onSuccess?(): void;\n }): VoidThunk =>\n async dispatch => {\n try {\n answers.forEach(a => dispatch(updateAnswer(a)));\n dispatch(postAgreementAnswer());\n await api().vendorsIdAnswersPost({\n id: vendorId,\n answers: {\n answers,\n },\n });\n dispatch(isPostingAgreementAnswerFinished());\n onSuccess && onSuccess();\n } catch (err) {\n dispatch(isPostingAgreementAnswerFinished());\n console.log('err', err);\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while adding agreement answer. Please try again or contact support.'\n );\n console.log(apiErrorMessage);\n dispatch(agreementAnswersFailure(apiErrorMessage));\n reloadPageIfAgreementSigned(apiErrorMessage);\n }\n };\n\n// If agreement signed by external counterpart => it's not in draft state => we cannot edit agreement\nconst reloadPageIfAgreementSigned = (message: string) => {\n if (message.includes('should be in draft state')) {\n window.location.reload();\n }\n};\nexport const fetchAgreementSignatoriesById =\n (\n agreementId: string,\n onSuccess?: (signatories: AgreementSignatoryModel[]) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(currentAgreementSignatoriesRequest());\n const response =\n await api().agreementsAgreementIdAgreementSignatoriesGetRaw({\n agreementId,\n });\n const data = await response.value();\n dispatch(currentAgreementSignatoriesRequestSuccess(data));\n onSuccess && onSuccess(data);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching agreementSignatories. Please try again or contact support.'\n );\n dispatch(currentAgreementSignatoriesRequestFailure(apiErrorMessage));\n }\n };\n\nexport const updateInternalAgreementSignatory =\n ({\n agreementId,\n body,\n onSuccess = () => {},\n }: {\n agreementId: string;\n body: any;\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(setSignatoryCreationOrUpdateStatus(true));\n await api().agreementsAgreementIdAgreementSignatoriesInternalPatchRaw({\n agreementId,\n body,\n });\n onSuccess && onSuccess();\n dispatch(setSignatoryCreationOrUpdateStatus(false));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(createOrUpdateSignatoryRequestFailure(apiErrorMessage));\n } else {\n dispatch(\n createOrUpdateSignatoryRequestFailure(\n 'An error occurred updating an agreement internal signatory. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(createOrUpdateSignatoryRequestFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const updateExternalAgreementSignatory =\n ({\n body,\n onSuccess = () => {},\n onError = () => {},\n }: {\n body: AgreementSignatoriesIdPatchRequest;\n onSuccess?: () => void;\n onError?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(setSignatoryCreationOrUpdateStatus(true));\n await api().agreementSignatoriesIdPatchRaw(body);\n onSuccess && onSuccess();\n dispatch(setSignatoryCreationOrUpdateStatus(false));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(createOrUpdateSignatoryRequestFailure(apiErrorMessage));\n } else {\n dispatch(\n createOrUpdateSignatoryRequestFailure(\n 'An error occurred updating an agreement external signatory. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(createOrUpdateSignatoryRequestFailure(UNKNOWN_ERROR));\n }\n onError && onError();\n }\n };\n\nexport const createExternalAgreementSignatory =\n ({\n agreementId,\n body,\n onSuccess = () => {},\n onError = () => {},\n }: {\n agreementId: string;\n body: AgreementSignatoryCreateExternalPayload;\n onSuccess?: () => void;\n onError?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(setSignatoryCreationOrUpdateStatus(true));\n await api().agreementsAgreementIdAgreementSignatoriesExternalPostRaw({\n agreementId,\n body,\n });\n onSuccess && onSuccess();\n dispatch(setSignatoryCreationOrUpdateStatus(false));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(createOrUpdateSignatoryRequestFailure(apiErrorMessage));\n } else {\n dispatch(\n createOrUpdateSignatoryRequestFailure(\n 'An error occurred creating an agreement external signatory. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(createOrUpdateSignatoryRequestFailure(UNKNOWN_ERROR));\n }\n onError && onError();\n }\n };\n\nexport const sendSignatoryNotification =\n ({\n signatoryId,\n body,\n onSuccess = () => {},\n }: {\n signatoryId: string;\n body: AgreementSignatoryNotifyPayload;\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(setNotificationDispatchStatus(true));\n await api().agreementSignatoriesSignatoryIdNotifyPostRaw({\n signatoryId,\n body,\n });\n onSuccess && onSuccess();\n dispatch(setNotificationDispatchStatus(false));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(notificationDispatchError(apiErrorMessage));\n } else {\n dispatch(\n notificationDispatchError(\n 'An error occurred creating an agreement external signatory. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(notificationDispatchError(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const deleteAgreement =\n (id: string, onSuccess: () => void): VoidThunk =>\n async dispatch => {\n try {\n dispatch(setDeleteAgreementStatus(true));\n await api().agreementsIdDelete({ id });\n dispatch(setDeleteAgreementStatus(false));\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(deleteAgreementFailure(apiErrorMessage));\n } else {\n dispatch(\n deleteAgreementFailure(\n 'An error occurred while deleting agreement. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(deleteAgreementFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const deleteAgreementTableAnswers =\n ({\n answersIds,\n vendorId,\n onSuccess,\n }: {\n answersIds: string[];\n vendorId: string;\n onSuccess: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n await api().vendorsIdAnswersDelete({\n id: vendorId,\n body: { answersIds },\n });\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(deleteAgreementTableAnswersFailure(apiErrorMessage));\n } else {\n dispatch(\n deleteAgreementTableAnswersFailure(\n 'An error occurred while deleting answer. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(deleteAgreementTableAnswersFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const sendToReviewAgreement =\n ({\n agreementId,\n signatoryIds,\n onSuccess,\n }: {\n agreementId: string;\n signatoryIds: AgreementSignatoryModel['id'][];\n onSuccess: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(sendToReviewRequest());\n await api().agreementsIdSendPost({\n id: agreementId,\n body: { signatoriesToNotifyIds: signatoryIds },\n });\n dispatch(sendToReviewSuccess());\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while sending to review. Please try again or contact support.'\n );\n console.log(err);\n dispatch(sendToReviewFailure(apiErrorMessage));\n }\n };\n\nexport interface SignAgreementArguments {\n image?: Blob;\n userId?: string;\n signatoryId: string;\n onSuccess?(): void;\n}\n\nexport const signAgreement =\n ({\n image,\n userId,\n signatoryId,\n onSuccess,\n }: SignAgreementArguments): VoidThunk =>\n async dispatch => {\n try {\n dispatch(setSignAgreementStatus(true));\n if (image && userId) {\n await api().usersIdSignaturePatch({\n id: userId,\n image,\n });\n }\n await api().agreementSignatoriesSignatoryIdSignPatch({\n signatoryId,\n });\n dispatch(setSignAgreementStatus(false));\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while signing agreement. Please try again or contact support.'\n );\n console.log(err);\n dispatch(signAgreementFailure(apiErrorMessage));\n }\n };\n\nexport const editAgreementClause =\n ({\n surveyClauseId,\n agreementId,\n renderedText,\n useCustomText,\n onSuccess,\n }: {\n surveyClauseId: string;\n agreementId: string;\n renderedText: string;\n useCustomText: boolean;\n onSuccess?(): void;\n }): VoidThunk =>\n async dispatch => {\n try {\n const body: SurveyClauseUpdatePayload = { renderedText, useCustomText };\n await api().surveyClausesSurveyClauseIdPatch({\n surveyClauseId,\n body,\n });\n await dispatch(fetchAgreementById(agreementId, false));\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(editAgreementClauseFailure(apiErrorMessage));\n } else {\n dispatch(\n editAgreementClauseFailure(\n 'An error occurred while editing agreement clause. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(signAgreementFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const revertAgreementClause =\n ({\n surveyClauseId,\n agreementId,\n onSuccess,\n }: {\n surveyClauseId: string;\n agreementId: string;\n onSuccess?(): void;\n }): VoidThunk =>\n async dispatch => {\n try {\n await api().surveyClausesSurveyClauseIdRevertCustomTextPatch({\n surveyClauseId,\n });\n await dispatch(fetchAgreementById(agreementId, false));\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(revertAgreementClauseFailure(apiErrorMessage));\n } else {\n dispatch(\n revertAgreementClauseFailure(\n 'An error occurred while reverting agreement clause. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(revertAgreementClauseFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const createNewVersionOfAgreement =\n ({\n id,\n versionBump,\n changeReason,\n onSuccess = () => {},\n }: {\n id: string;\n versionBump?: string;\n changeReason?: string;\n onSuccess?: (response: AgreementExtended) => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(createNewVersionOfAgreementRequest(true));\n const response = await api().agreementsIdVersionsPost({\n id,\n body: {\n versionBump:\n versionBump as AgreementVersionCreatePayloadVersionBumpEnum,\n changeReason,\n },\n });\n dispatch(createNewVersionOfAgreementRequest(false));\n onSuccess && onSuccess(response);\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(createNewVersionOfAgreementFailure(apiErrorMessage));\n } else {\n dispatch(\n createNewVersionOfAgreementFailure(\n 'An error occurred while updating the agreement. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(createNewVersionOfAgreementFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const patchAgreement =\n ({\n agreementId,\n ownerId,\n name,\n useBrandingColor,\n useCompanyLogo,\n reviewDate,\n contentIsCustom,\n onSuccess,\n onError,\n }: {\n agreementId: string;\n ownerId?: string;\n name?: string;\n useBrandingColor?: boolean;\n useCompanyLogo?: boolean;\n reviewDate?: string;\n contentIsCustom?: boolean;\n onSuccess?: () => void;\n onError?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(patchAgreementRequest());\n const result = await api().agreementsIdPatch({\n id: agreementId,\n body: {\n ownerId,\n name,\n reviewDate,\n useBrandingColor,\n useCompanyLogo,\n contentIsCustom,\n },\n });\n const agreementWithTableAnswers = mapTableAnswers(result);\n dispatch(patchAgreementSuccess(agreementWithTableAnswers));\n onSuccess && onSuccess();\n } catch (err) {\n onError && onError();\n\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred updating the agreement. Please try again or contact support.'\n );\n console.log(err);\n dispatch(patchAgreementFailure(apiErrorMessage));\n reloadPageIfAgreementSigned(apiErrorMessage);\n }\n }\n };\n\nexport const unarchiveAgreement =\n ({ showToast }: { showToast: boolean }): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(unArchiveAgreementRequest());\n const { id, name } = getState().agreements.archivingAgreement || {};\n if (!id) return;\n\n await api().agreementsIdUnarchivePost({ id });\n\n if (showToast)\n dispatch(\n showGlobalToast(\n `${name} has been removed from the archive and will now be visible on the Agreement page.`\n )\n );\n\n dispatch(undoArchivedAgreement());\n } catch (err) {\n console.log('error');\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred unarchiving the agreement. Please try again or contact support.'\n );\n console.log(err);\n dispatch(unArchiveAgreementRequestFailure(apiErrorMessage));\n }\n }\n };\n\nexport const archiveAgreement =\n ({\n id,\n name,\n }: {\n id: AgreementModel['id'];\n name: AgreementModel['name'];\n }): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(setArchivingAgreement(id));\n\n const agreementIndex = getState().agreements.agreements.findIndex(\n model => model.id === id\n );\n window.localStorage.setItem(\n 'agreement-archived-index',\n agreementIndex.toString()\n );\n dispatch(archiveAgreementRequest());\n await api().agreementsIdArchivePost({ id });\n\n dispatch(archiveAgreementSuccess(id));\n dispatch(\n showGlobalToastWithUndo(\n `${name} has been moved to the archive on the Documents Page. It will no longer be visible on the Agreement page.`\n )\n );\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred archiving the agreement. Please try again or contact support.'\n );\n console.log(err);\n dispatch(archiveAgreementFailure(apiErrorMessage));\n }\n }\n };\n\nexport const patchAgreementContent =\n ({\n agreementId,\n content,\n onSuccess,\n }: {\n agreementId: string;\n content: string;\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(patchAgreementContentRequest());\n const result = await api().agreementsIdPatch({\n id: agreementId,\n body: {\n content,\n contentIsCustom: true,\n },\n });\n dispatch(patchAgreementContentSuccess(result));\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred updating the agreement content. Please try again or contact support.'\n );\n console.log(err);\n dispatch(patchAgreementContentFailure(apiErrorMessage));\n reloadPageIfAgreementSigned(apiErrorMessage);\n }\n }\n };\n\nexport const uploadAgreement =\n ({\n id,\n agreementName,\n agreementDocument,\n agreementDescription,\n }: {\n id: string;\n agreementName: string;\n agreementDocument: File;\n agreementDescription?: string;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(uploadVendorDocumentRequest());\n await api().vendorsIdAgreementsUploadPost({\n id,\n agreementName,\n agreementDocument,\n agreementDescription,\n });\n\n dispatch(uploadVendorDocumentSuccess());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(uploadVendorDocumentFailure(apiErrorMessage));\n } else {\n dispatch(\n uploadVendorDocumentFailure(\n 'An error occurred while uploading an agreement. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(uploadVendorDocumentFailure(UNKNOWN_ERROR));\n }\n }\n };\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport {\n Assessment,\n AssessmentDownload,\n AssessmentRecipient,\n AssessmentResponse,\n AssessmentResponseAnswer,\n AssessmentTemplateExtended,\n} from '../../swagger';\nimport { COMPLETED_TEXT, NOT_FOUND_INDEX } from '../../types/constants';\nimport { QuestionType } from '../../types/QuestionType';\nimport {\n AddFileMode,\n AssessmentsState,\n AssessmentTabs,\n SendAssessmentDetails,\n SendAssessmentMode,\n} from './assessmentsState';\n\nconst assessmentsSlice = createSlice({\n initialState: {\n assessments: [],\n assessmentResponses: [],\n assessmentTemplates: [],\n clearSendAssessmentDetails: false,\n currentAssessment: null,\n incomingAssessmentResponses: [],\n isAssessmentSentToastShowing: false,\n isDeletingAssessmentFileOrUrl: false,\n isDeletingAssessmentRecipient: false,\n isDeletingAssessmentResponse: false,\n isSendingAssessment: false,\n isSharingAssessmentResponse: false,\n isShowingAddFileOrUrlModal: false,\n isShowingConfirmDeleteAssessmentResponse: false,\n isShowingEditPublishedAssessmentModal: false,\n isShowingPublishAssessmentModal: false,\n isShowingPublishedAssessmentModal: false,\n isShowingSendAssessmentConfirmationModal: false,\n isShowingSendAssessmentModal: false,\n isShowingFileOrUrlSuccessfulToast: false,\n sendAssessmentRecipientEmails: [],\n isAssessmentResentToastShowing: false,\n isShowingAssessmentSummaryExportModal: false,\n fetchingAssessmentTemplatesError: '',\n } as unknown as AssessmentsState,\n name: 'assessmentsSlice',\n reducers: {\n addFileAnswer: (state, action: PayloadAction) => {\n state.addFileMode = AddFileMode.File;\n state.addFileToQuestionName = action.payload;\n state.isShowingAddFileModal = true;\n },\n addUrlAnswer: (state, action: PayloadAction) => {\n state.addFileMode = AddFileMode.Url;\n state.addFileToQuestionName = action.payload;\n state.isShowingAddFileModal = true;\n },\n backFromSendAssessmentConfirmationModal: state => {\n state.isShowingSendAssessmentConfirmationModal = false;\n state.isShowingSendAssessmentModal = true;\n },\n confirmSendAssessment: (\n state,\n action: PayloadAction\n ) => {\n state.clearSendAssessmentDetails = false;\n state.isShowingSendAssessmentModal = false;\n state.isShowingSendAssessmentConfirmationModal = true;\n state.sendAssessmentDetails = action.payload;\n },\n\n generateAndSendAssessment: (\n state,\n action: PayloadAction\n ) => {\n state.clearSendAssessmentDetails = false;\n state.isShowingSendAssessmentModal = false;\n state.isShowingSendAssessmentConfirmationModal = false;\n state.sendAssessmentDetails = action.payload;\n },\n\n deleteAssessmentFileOrUrlFailure: (\n state,\n action: PayloadAction\n ) => {\n state.deleteAssessmentFileOrUrlError = action.payload;\n state.isDeletingAssessmentFileOrUrl = false;\n },\n deleteAssessmentFileOrUrlRequest: state => {\n state.deleteAssessmentFileOrUrlError = undefined;\n state.isDeletingAssessmentFileOrUrl = true;\n },\n deleteAssessmentFileOrUrlSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isDeletingAssessmentFileOrUrl = false;\n state.currentAssessmentResponse = action.payload;\n },\n deleteAssessmentRecipientFailure: (\n state,\n action: PayloadAction\n ) => {\n state.deleteAssessmentRecipientError = action.payload;\n state.isDeletingAssessmentRecipient = false;\n },\n deleteAssessmentRecipientRequest: state => {\n state.deleteAssessmentRecipientError = undefined;\n state.isDeletingAssessmentRecipient = true;\n },\n deleteAssessmentRecipientSuccess: state => {\n state.isDeletingAssessmentRecipient = false;\n },\n deleteAssessmentResponseFailure: (state, action: PayloadAction) => {\n state.deleteAssessmentResponseError = action.payload;\n state.isDeletingAssessmentResponse = false;\n },\n\n deleteAssessmentRequest: state => {\n state.isDeletingAssessment = true;\n },\n deleteAssessmentSuccess: state => {\n state.isDeletingAssessment = false;\n const assessments = state.assessments?.filter(\n a => a.id !== state.assessmentToDelete?.id\n );\n state.assessments = assessments;\n state.assessmentToDelete = null;\n },\n deleteAssessmentError: (state, action: PayloadAction) => {\n state.isDeletingAssessment = false;\n state.deletingAssessmentError = action.payload;\n },\n\n deleteAssessmentResponseRequest: state => {\n state.deleteAssessmentResponseError = undefined;\n state.isDeletingAssessmentResponse = true;\n },\n deleteAssessmentResponseSuccess: state => {\n state.isDeletingAssessmentResponse = false;\n },\n fetchAssessmentRequest: state => {\n state.isFetchingAssessment = true;\n },\n fetchAssessmentSuccess: (state, action: PayloadAction) => {\n state.isFetchingAssessment = false;\n state.currentAssessment = action.payload;\n const index = state.assessments.findIndex(\n a => a.id === action.payload.id\n );\n if (index > NOT_FOUND_INDEX) state.assessments[index] = action.payload;\n else state.assessments.push(action.payload);\n },\n fetchAssessmentFailure: (state, action: PayloadAction) => {\n state.isFetchingAssessment = false;\n state.fetchingAssessmentError = action.payload;\n },\n fetchAssessmentResponseRequest: state => {\n state.isFetchingAssessmentResponse = true;\n state.currentAssessmentResponse = null;\n },\n fetchAssessmentResponseSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingAssessmentResponse = false;\n state.currentAssessmentResponse = action.payload;\n const index = state.assessmentResponses.findIndex(\n ar => ar.id === action.payload.id\n );\n if (index > NOT_FOUND_INDEX)\n state.assessmentResponses[index] = action.payload;\n },\n fetchAssessmentResponseFailure: (state, action: PayloadAction) => {\n state.isFetchingAssessmentResponse = false;\n state.fetchingAssessmentResponseError = action.payload;\n },\n\n fetchAssessmentTemplateRequest: state => {\n state.isFetchingAssessmentTemplate = true;\n state.currentAssessmentTemplate = null;\n },\n fetchAssessmentTemplateSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingAssessmentTemplate = false;\n state.currentAssessmentTemplate = action.payload;\n const index = state.assessmentTemplates.findIndex(\n at => at.id === action.payload.id\n );\n if (index > NOT_FOUND_INDEX)\n state.assessmentTemplates[index] = action.payload;\n },\n fetchAssessmentTemplateError: (state, action: PayloadAction) => {\n state.isFetchingAssessmentTemplate = false;\n state.fetchingAssessmentTemplateError = action.payload;\n },\n\n fetchAssessmentTemplatesRequest: state => {\n state.isFetchingAssessmentTemplates = true;\n state.assessmentTemplates = null;\n },\n fetchAssessmentTemplatesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingAssessmentTemplates = false;\n state.assessmentTemplates = action.payload;\n },\n fetchAssessmentTemplatesError: (state, action: PayloadAction) => {\n state.isFetchingAssessmentTemplates = false;\n state.fetchingAssessmentTemplatesError = action.payload;\n },\n fetchAssessmentsRequest: state => {\n state.isFetchingAssessments = true;\n },\n fetchAssessmentsSuccess: (\n state,\n action: PayloadAction<[Assessment[], AssessmentResponse[]]>\n ) => {\n const [assessments, assessmentResponses] = action.payload;\n state.isFetchingAssessments = false;\n state.assessments = assessments;\n state.assessmentResponses = assessmentResponses;\n },\n fetchAssessmentsFailure: (state, action: PayloadAction) => {\n state.isFetchingAssessments = false;\n state.fetchAssessmentsError = action.payload;\n },\n hideAddFileOrUrlModal: state => {\n state.isShowingAddFileModal = false;\n },\n hideDeleteAssessmentModal: state => {\n state.isDeleteAssessmentModalShowing = false;\n },\n hideDeleteAssessmentToast: state => {\n state.showDeleteAssessmentToast = false;\n },\n showDeleteAssessmentToast: state => {\n state.showDeleteAssessmentToast = true;\n },\n showDeleteAssessmentModal: (state, action: PayloadAction) => {\n state.assessmentToDelete = action.payload;\n state.isDeleteAssessmentModalShowing = true;\n },\n fetchIncomingAssessmentResponsesFailure: (\n state,\n action: PayloadAction\n ) => {\n state.fetchingIncomingAssessmentResponsesError = action.payload;\n state.isFetchingIncomingAssessmentResponses = false;\n },\n fetchIncomingAssessmentResponsesRequest: state => {\n state.fetchingIncomingAssessmentResponsesError = undefined;\n state.isFetchingIncomingAssessmentResponses = true;\n },\n fetchIncomingAssessmentResponsesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.incomingAssessmentResponses = action.payload;\n state.isFetchingIncomingAssessmentResponses = false;\n },\n fetchAssessmentResponseHistoryRequest: state => {\n state.fetchAssessmentResponseHistoryError = undefined;\n state.isFetchingAssessmentResponseHistory = true;\n },\n cleanupAssessmentHistories: state => {\n state.assessmentResponseHistories = {};\n },\n fetchAssessmentResponseHistorySuccess: (\n state,\n action: PayloadAction<{ id: string; answers: AssessmentResponseAnswer[] }>\n ) => {\n state.assessmentResponseHistories = {\n ...state.assessmentResponseHistories,\n [action.payload.id]: action.payload.answers,\n };\n state.isFetchingAssessmentResponseHistory = false;\n },\n fetchAssessmentResponseHistoryFailure: (\n state,\n action: PayloadAction\n ) => {\n state.fetchAssessmentResponseHistoryError = action.payload;\n state.isFetchingAssessmentResponseHistory = false;\n },\n hideAssessmentSentToast: state => {\n state.isAssessmentSentToastShowing = false;\n },\n hideConfirmDeleteAssessmentResponseModal: state => {\n state.assessmentResponseForDeletion = undefined;\n state.isShowingConfirmDeleteAssessmentResponse = false;\n },\n hideEditPublishedAssessmentModal: state => {\n state.editPublishedAssessmentResponseId = undefined;\n state.isShowingEditPublishedAssessmentModal = false;\n },\n hideFileOrUrlSuccessfulToast: state => {\n state.isShowingFileOrUrlSuccessfulToast = false;\n },\n hidePublishAssessmentModal: state => {\n state.isShowingPublishAssessmentModal = false;\n },\n hidePublishedAssessmentModal: state => {\n state.isShowingPublishedAssessmentModal = false;\n },\n hideSendAssessmentModal: state => {\n state.isShowingSendAssessmentModal = false;\n },\n initiateSendAssessment: state => {\n state.clearSendAssessmentDetails = true;\n state.sendAssessmentDetails = undefined;\n state.isShowingSendAssessmentModal = true;\n state.sendAssessmentMode = SendAssessmentMode.Send;\n },\n generateAssessment: (state, action: PayloadAction) => {\n state.clearSendAssessmentDetails = true;\n state.generateAssessmentName = action.payload;\n state.isShowingSendAssessmentModal = true;\n state.sendAssessmentDetails = undefined;\n state.sendAssessmentMode = SendAssessmentMode.Generate;\n state.isAssessmentSentToastShowing = false;\n },\n generateAssessmentRequest: state => {\n state.assessmentGenerationInProgress = true;\n },\n generateAssessmentSuccess: (state, action: PayloadAction) => {\n state.generatedAssessmentFromTemplate = action?.payload;\n state.assessmentGenerationInProgress = false;\n state.isAssessmentSentToastShowing = true;\n state.sendAssessmentDetails.id = action?.payload?.id;\n state.currentAssessment = action.payload;\n state.assessments.push(action.payload);\n },\n generateAssessmentError: (state, action: PayloadAction) => {\n state.assessmentGenerationInProgress = false;\n state.assessmentGenerationError = action.payload;\n },\n sendAssessmentFailure: (state, action: PayloadAction) => {\n state.isSendingAssessment = false;\n state.sendAssessmentError = action.payload;\n },\n sendAssessmentRequest: state => {\n state.isSendingAssessment = true;\n state.sendAssessmentError = undefined;\n },\n sendAssessmentSuccess: state => {\n state.isShowingSendAssessmentConfirmationModal = false;\n state.isSendingAssessment = false;\n state.isAssessmentSentToastShowing = true;\n },\n showEditPublishedAssessmentModal: (\n state,\n action: PayloadAction\n ) => {\n state.editPublishedAssessmentResponseId = action.payload;\n state.isShowingEditPublishedAssessmentModal = true;\n },\n showPublishAssessmentModal: state => {\n state.isShowingPublishAssessmentModal = true;\n },\n showPublishedAssessmentModal: state => {\n state.isShowingPublishedAssessmentModal = true;\n },\n reopenAssessmentResponseFailure: (state, action: PayloadAction) => {\n state.isReopeningAssessmentResponse = false;\n state.reopenAssessmentResponseError = action.payload;\n },\n reopenAssessmentResponseRequest: state => {\n state.isReopeningAssessmentResponse = true;\n state.reopenAssessmentResponseError = undefined;\n },\n reopenAssessmentResponseSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.assessmentResponses[\n state.assessmentResponses.findIndex(ar => ar.id === action.payload.id)\n ] = action.payload;\n state.isReopeningAssessmentResponse = false;\n },\n resendAssessmentFailure: (state, action: PayloadAction) => {\n state.isResendingAssessment = false;\n state.resendAssessmentError = action.payload;\n },\n resendAssessmentRequest: state => {\n state.isResendingAssessment = true;\n state.resendAssessmentError = undefined;\n },\n resendAssessmentSuccess: state => {\n state.isShowingResendAssessmentConfirmationModal = false;\n state.isResendingAssessment = false;\n state.isAssessmentResentToastShowing = true;\n },\n showConfirmDeleteAssessmentResponseModal: (\n state,\n action: PayloadAction\n ) => {\n state.assessmentResponseForDeletion = action.payload;\n state.isShowingConfirmDeleteAssessmentResponse = true;\n },\n showResendAssessmentConfirmationModal: (\n state,\n action: PayloadAction\n ) => {\n state.isShowingResendAssessmentConfirmationModal = true;\n state.resendRecipient = action.payload;\n },\n hideResendAssessmentConfirmationModal: state => {\n state.isShowingResendAssessmentConfirmationModal = false;\n state.resendRecipient = null;\n },\n hideAssessmentResentToast: state => {\n state.isAssessmentResentToastShowing = false;\n },\n showAssessmentSentToast: state => {\n state.isAssessmentSentToastShowing = true;\n },\n showFileOrUrlSuccessfulToast: state => {\n state.isShowingFileOrUrlSuccessfulToast = true;\n },\n patchAssessmentResponseRequest: state => {\n state.isPatchingAssessmentResponse = true;\n state.patchAssessmentResponseError = undefined;\n },\n patchAssessmentResponseSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isPatchingAssessmentResponse = false;\n state.currentAssessmentResponse = action.payload;\n state.assessmentResponses[\n state.assessmentResponses.findIndex(ar => ar.id === action.payload.id)\n ] = action.payload;\n },\n patchAssessmentResponseFailure: (state, action: PayloadAction) => {\n state.isPatchingAssessmentResponse = false;\n state.patchAssessmentResponseError = action.payload;\n },\n publishAssessmentResponseRequest: state => {\n state.isPublishingAssessmentResponse = true;\n state.publishAssessmentResponseError = null;\n },\n publishAssessmentResponseSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isPublishingAssessmentResponse = false;\n state.currentAssessmentResponse = action.payload;\n state.assessmentResponses[\n state.assessmentResponses.findIndex(ar => ar.id === action.payload.id)\n ] = action.payload;\n\n // update assessment as well on client side, if exists\n const assessment = state.assessments.find(\n a => a.id === action.payload.assessmentId\n );\n\n if (assessment) {\n ++assessment.responsesReceived;\n\n if (assessment.responsesReceived === assessment.responsesRequested) {\n assessment.status = COMPLETED_TEXT;\n assessment.updatedAt = action.payload.updatedAt;\n }\n }\n },\n publishAssessmentResponseFailure: (\n state,\n action: PayloadAction\n ) => {\n state.isPublishingAssessmentResponse = false;\n state.publishAssessmentResponseError = action.payload;\n },\n uploadFileOrUrlFailure: (state, action: PayloadAction) => {\n state.isUploadingFile = false;\n state.uploadFileError = action.payload;\n },\n uploadFileOrUrlRequest: state => {\n state.isUploadingFile = true;\n state.uploadFileError = undefined;\n },\n uploadFileOrUrlSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.currentAssessmentResponse = action.payload;\n state.isUploadingFile = false;\n },\n setCurrentTableQuestions: (\n state,\n action: PayloadAction<{ tableQuestions: QuestionType[]; index: number }>\n ) => {\n state.currentTableQuestions = action.payload.tableQuestions;\n state.currentTableAnswerIndex = action.payload.index;\n },\n showEditTableAnswersModal: state => {\n state.isShowingEditTableAnswersModal = true;\n },\n hideEditTableAnswersModal: state => {\n state.isShowingEditTableAnswersModal = false;\n },\n showDeleteTableAnswersModal: state => {\n state.isShowingDeleteTableAnswersModal = true;\n },\n hideDeleteTableAnswersModal: state => {\n state.isShowingDeleteTableAnswersModal = false;\n },\n showAssessmentSummaryExportModal: state => {\n state.isShowingAssessmentSummaryExportModal = true;\n state.exportCancelled = false;\n },\n hideAssessmentSummaryExportModal: state => {\n state.isShowingAssessmentSummaryExportModal = false;\n state.exportCancelled = true;\n state.isExportingAssessmentResponses = false;\n },\n exportAssessmentResponsesRequest: (\n state,\n action: PayloadAction\n ) => {\n state.isExportingAssessmentResponses = true;\n state.exportProgress = action.payload;\n },\n exportAssessmentResponsesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isExportingAssessmentResponses = false;\n state.assessmentDownload = action.payload;\n state.exportProgress = 100;\n },\n exportAssessmentResponsesFailure: (\n state,\n action: PayloadAction\n ) => {\n state.isExportingAssessmentResponses = false;\n state.exportAssessmentResponseError = action.payload;\n state.exportProgress = 0;\n },\n confirmAssessmentResponseRequest: state => {\n state.isConfirmingAssessmentResponse = true;\n },\n confirmAssessmentResponseSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isConfirmingAssessmentResponse = false;\n state.currentAssessmentResponse = action.payload;\n },\n confirmAssessmentResponseFailure: (\n state,\n action: PayloadAction\n ) => {\n state.isConfirmingAssessmentResponse = false;\n state.confirmAssessmentResponseFailure = action.payload;\n },\n patchAssessmentRequest: state => {\n state.isPatchingAssessment = true;\n state.patchAssessmentError = undefined;\n },\n patchAssessmentSuccess: (state, action: PayloadAction) => {\n state.isPatchingAssessment = false;\n const assessments = [...state.assessments];\n const index = assessments.findIndex(\n document => document.id === action.payload.id\n );\n if (index === -1) {\n assessments.push(action.payload);\n } else {\n assessments.splice(index, 1, { ...action.payload });\n }\n state.assessments = assessments;\n },\n patchAssessmentFailure: (state, action: PayloadAction) => {\n state.isPatchingAssessment = false;\n state.patchAssessmentError = action.payload;\n },\n saveSelectedAssessmentTab: (\n state,\n action: PayloadAction\n ) => {\n state.assessmentTabToShow = action.payload;\n },\n updateAnswer: (state, action: PayloadAction) => {\n const newAnswer = action.payload;\n const oldAnswer =\n state.currentAssessmentResponse.assessmentResponseAnswers.find(\n a => a.name === newAnswer.name\n );\n\n if (!oldAnswer) {\n state.currentAssessmentResponse.assessmentResponseAnswers.push({\n value: newAnswer.value,\n });\n } else {\n oldAnswer.value = newAnswer.value;\n }\n },\n },\n});\n\nexport const {\n addFileAnswer,\n addUrlAnswer,\n backFromSendAssessmentConfirmationModal,\n confirmSendAssessment,\n deleteAssessmentFileOrUrlFailure,\n deleteAssessmentFileOrUrlRequest,\n deleteAssessmentFileOrUrlSuccess,\n deleteAssessmentRecipientFailure,\n deleteAssessmentRecipientRequest,\n deleteAssessmentRecipientSuccess,\n deleteAssessmentResponseFailure,\n deleteAssessmentResponseRequest,\n deleteAssessmentResponseSuccess,\n deleteAssessmentRequest,\n deleteAssessmentSuccess,\n deleteAssessmentError,\n fetchAssessmentFailure,\n fetchAssessmentRequest,\n fetchAssessmentSuccess,\n fetchAssessmentResponseFailure,\n fetchAssessmentResponseRequest,\n fetchAssessmentResponseSuccess,\n fetchAssessmentTemplatesRequest,\n fetchAssessmentTemplatesSuccess,\n fetchAssessmentTemplatesError,\n fetchAssessmentTemplateRequest,\n fetchAssessmentTemplateSuccess,\n fetchAssessmentTemplateError,\n fetchAssessmentsFailure,\n fetchAssessmentsRequest,\n fetchAssessmentsSuccess,\n fetchIncomingAssessmentResponsesFailure,\n fetchIncomingAssessmentResponsesRequest,\n fetchIncomingAssessmentResponsesSuccess,\n generateAndSendAssessment,\n generateAssessmentRequest,\n generateAssessmentSuccess,\n generateAssessmentError,\n hideAddFileOrUrlModal,\n hideDeleteAssessmentModal,\n hideDeleteAssessmentToast,\n hideAssessmentSentToast,\n hideAssessmentResentToast,\n hideConfirmDeleteAssessmentResponseModal,\n hideEditPublishedAssessmentModal,\n hideFileOrUrlSuccessfulToast,\n hideSendAssessmentModal,\n hidePublishAssessmentModal,\n hidePublishedAssessmentModal,\n initiateSendAssessment,\n reopenAssessmentResponseFailure,\n reopenAssessmentResponseRequest,\n reopenAssessmentResponseSuccess,\n sendAssessmentFailure,\n sendAssessmentRequest,\n sendAssessmentSuccess,\n showAssessmentSentToast,\n showConfirmDeleteAssessmentResponseModal,\n showDeleteAssessmentModal,\n showEditPublishedAssessmentModal,\n showFileOrUrlSuccessfulToast,\n showPublishAssessmentModal,\n showPublishedAssessmentModal,\n patchAssessmentResponseRequest,\n patchAssessmentResponseSuccess,\n patchAssessmentResponseFailure,\n uploadFileOrUrlFailure,\n uploadFileOrUrlRequest,\n uploadFileOrUrlSuccess,\n resendAssessmentFailure,\n resendAssessmentRequest,\n resendAssessmentSuccess,\n showResendAssessmentConfirmationModal,\n hideResendAssessmentConfirmationModal,\n setCurrentTableQuestions,\n showEditTableAnswersModal,\n showDeleteAssessmentToast,\n hideEditTableAnswersModal,\n showDeleteTableAnswersModal,\n hideDeleteTableAnswersModal,\n showAssessmentSummaryExportModal,\n hideAssessmentSummaryExportModal,\n exportAssessmentResponsesRequest,\n exportAssessmentResponsesSuccess,\n exportAssessmentResponsesFailure,\n fetchAssessmentResponseHistoryRequest,\n fetchAssessmentResponseHistorySuccess,\n fetchAssessmentResponseHistoryFailure,\n confirmAssessmentResponseRequest,\n confirmAssessmentResponseSuccess,\n confirmAssessmentResponseFailure,\n publishAssessmentResponseRequest,\n publishAssessmentResponseSuccess,\n publishAssessmentResponseFailure,\n patchAssessmentRequest,\n patchAssessmentSuccess,\n patchAssessmentFailure,\n saveSelectedAssessmentTab,\n generateAssessment,\n updateAnswer,\n cleanupAssessmentHistories,\n} = assessmentsSlice.actions;\n\nexport default assessmentsSlice.reducer;\n","import {\n Assessment,\n AssessmentDownload,\n AssessmentRecipient,\n AssessmentResponse,\n AssessmentResponseAnswer,\n AssessmentTemplateExtended,\n} from '../../swagger';\nimport { QuestionType } from '../../types/QuestionType';\n\nexport enum AddFileMode {\n File,\n Url,\n}\n\nexport enum AssessmentTabs {\n Outgoing,\n Incoming,\n}\nexport interface SendAssessmentDetails {\n count: number;\n id: string;\n optionalMessage?: string;\n responseDeadline?: string;\n to: string;\n}\n\nexport enum SendAssessmentMode {\n Generate = 'Generate',\n Send = 'Send',\n}\n\nexport interface AssessmentsState {\n addFileMode: AddFileMode;\n addFileToQuestionName: string;\n assessmentGenerationInProgress: boolean;\n assessmentGenerationError: string;\n assessments: Assessment[];\n assessmentResponseForDeletion?: AssessmentRecipient & AssessmentResponse;\n assessmentResponses: AssessmentResponse[];\n assessmentTemplates: AssessmentTemplateExtended[];\n assessmentToDelete: Assessment;\n clearSendAssessmentDetails: boolean;\n currentAssessment: Assessment;\n currentAssessmentResponse: AssessmentResponse;\n currentAssessmentTemplate: AssessmentTemplateExtended;\n assessmentResponseHistories: {\n [key: string]: AssessmentResponseAnswer[];\n };\n deleteAssessmentFileOrUrlError?: string;\n deleteAssessmentRecipientError?: string;\n deleteAssessmentResponseError?: string;\n deletingAssessmentError?: string;\n editPublishedAssessmentResponseId?: string;\n fetchAssessmentResponseHistoryError: string;\n fetchAssessmentsError?: string;\n fetchingAssessmentError?: string;\n fetchingAssessmentResponseError?: string;\n fetchingAssessmentTemplatesError?: string;\n fetchingAssessmentTemplateError?: string;\n fetchingIncomingAssessmentResponsesError?: string;\n generatedAssessmentFromTemplate?: Assessment;\n incomingAssessmentResponses: AssessmentResponse[];\n isAssessmentSentToastShowing: boolean;\n isDeleteAssessmentModalShowing: boolean;\n isDeletingAssessment: boolean;\n isDeletingAssessmentFileOrUrl: boolean;\n isDeletingAssessmentRecipient: boolean;\n isDeletingAssessmentResponse: boolean;\n isFetchingAssessment: boolean;\n isFetchingAssessmentResponse: boolean;\n isFetchingAssessmentResponseHistory: boolean;\n isFetchingAssessments: boolean;\n isFetchingAssessmentTemplates: boolean;\n isFetchingAssessmentTemplate: boolean;\n isFetchingIncomingAssessmentResponses: boolean;\n isReopeningAssessmentResponse: boolean;\n isSendingAssessment: boolean;\n isSharingAssessmentResponse: boolean;\n isShowingAddFileModal: boolean;\n isShowingConfirmDeleteAssessmentResponse: boolean;\n isShowingEditPublishedAssessmentModal: boolean;\n isShowingFileOrUrlSuccessfulToast: boolean;\n isShowingPublishAssessmentModal: boolean;\n isShowingPublishedAssessmentModal: boolean;\n isShowingSendAssessmentConfirmationModal: boolean;\n isShowingSendAssessmentModal: boolean;\n isUploadingFile: boolean;\n reopenAssessmentResponseError?: string;\n sendAssessmentDetails?: SendAssessmentDetails;\n sendAssessmentError?: string;\n sharingAssessmentResponseId?: string;\n isPatchingAssessmentResponse: boolean;\n patchAssessmentResponseError: string;\n isPublishingAssessmentResponse: boolean;\n publishAssessmentResponseError: string;\n uploadFileError?: string;\n isResendingAssessment: boolean;\n resendAssessmentError: string;\n isShowingResendAssessmentConfirmationModal: boolean;\n isAssessmentResentToastShowing: boolean;\n resendRecipient: AssessmentRecipient & AssessmentResponse;\n currentTableQuestions: QuestionType[];\n currentTableAnswerIndex: number;\n isShowingEditTableAnswersModal: boolean;\n isShowingDeleteTableAnswersModal: boolean;\n isShowingAssessmentSummaryExportModal: boolean;\n isExportingAssessmentResponses: boolean;\n exportAssessmentResponseError: string;\n assessmentDownload: AssessmentDownload;\n exportProgress: number;\n exportCancelled: boolean;\n isConfirmingAssessmentResponse: boolean;\n confirmAssessmentResponseFailure: string;\n isPatchingAssessment: boolean;\n patchAssessmentError?: string;\n assessmentTabToShow?: AssessmentTabs;\n generateAssessmentName?: string;\n sendAssessmentMode: SendAssessmentMode;\n showDeleteAssessmentToast: boolean;\n}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { calculateChecklistProgress } from '../../functions/calculateChecklistProgress';\nimport { getProgressPercentage } from '../../functions/getPercentage';\nimport {\n Checklist,\n ChecklistExtended,\n ChecklistItem,\n ChecklistItemsGroups,\n ChecklistTemplateExtended,\n} from '../../swagger';\nimport { NOT_FOUND_INDEX } from '../../types/constants';\nimport { ChecklistsState } from './checklistsState';\n\nconst vendorsSlice = createSlice({\n initialState: {\n checklists: [],\n checklistTemplates: [],\n isSharingModalShowing: false,\n isShowingGenerateChecklistSuccessToast: false,\n } as unknown as ChecklistsState,\n name: 'checklistsSlice',\n reducers: {\n fetchVendorChecklistsRequest: state => {\n state.isFetchingChecklists = true;\n state.checklists = [];\n },\n fetchVendorChecklistsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.checklists = action.payload;\n state.isFetchingChecklists = false;\n },\n fetchVendorChecklistsError: (state, action: PayloadAction) => {\n state.isFetchingChecklists = false;\n state.fetchChecklistsError = action.payload;\n },\n fetchVendorChecklistTemplatesRequest: state => {\n state.checklistTemplates = [];\n },\n fetchVendorChecklistTemplatesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.checklistTemplates = action.payload;\n },\n fetchVendorChecklistTemplatesError: (\n state,\n action: PayloadAction\n ) => {},\n fetchChecklistDetailsRequest: state => {\n state.isFetchingChecklistDetails = true;\n },\n fetchChecklistDetailsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingChecklistDetails = false;\n const newChecklists = [...state.checklists];\n const checklistIndex = newChecklists.findIndex(\n checklist => checklist.id === action.payload.id\n );\n if (checklistIndex === -1) {\n newChecklists.push(action.payload);\n } else {\n newChecklists.splice(checklistIndex, 1, action.payload);\n }\n state.checklists = newChecklists;\n },\n fetchChecklistDetailsError: (state, action: PayloadAction) => {\n state.isFetchingChecklistDetails = false;\n state.fetchChecklistError = action.payload;\n },\n fetchChecklistTemplateDetailsRequest: state => {},\n fetchChecklistTemplateDetailsSuccess: (\n state,\n action: PayloadAction\n ) => {\n const newChecklists = [...state.checklistTemplates];\n const checklistIndex = newChecklists.findIndex(\n checklist => checklist.id === action.payload.id\n );\n if (checklistIndex === -1) {\n newChecklists.push(action.payload);\n } else {\n newChecklists.splice(checklistIndex, 1, action.payload);\n }\n state.checklistTemplates = newChecklists;\n },\n fetchChecklistTemplateDetailsError: (\n state,\n action: PayloadAction\n ) => {},\n updateChecklistItemRequest: state => {},\n updateChecklistItemSuccess: (\n state,\n action: PayloadAction<{\n checklistId: string;\n questionGroupId: string;\n item: ChecklistItem;\n }>\n ) => {\n const checklistIndex = state.checklists.findIndex(\n checklist => checklist.id === action.payload.checklistId\n );\n\n if (checklistIndex === NOT_FOUND_INDEX) return;\n\n const group = state.checklists[checklistIndex].itemsGroups.find(\n g => g.questionGroupId === action.payload.questionGroupId\n );\n\n const itemIndex = group.items.findIndex(\n i => i.questionId === action.payload.item.questionId\n );\n\n group.items[itemIndex] = action.payload.item;\n\n group.progress.answered = group.items.filter(\n i => i.answerNotApplicable || i.answerValue\n ).length;\n\n group.progress.unanswered = group.items.length - group.progress.answered;\n\n group.progress.percents = getProgressPercentage(group.progress);\n },\n updateChecklistItemError: (state, action: PayloadAction) => {},\n showGenerateChecklistUsersModal: (\n state,\n action: PayloadAction\n ) => {\n state.isShowingGenerateChecklistUsersModal = true;\n state.checklistTemplateToGenerate = action.payload;\n },\n hideGenerateChecklistUsersModal: state => {\n state.isShowingGenerateChecklistUsersModal = false;\n },\n showGenerateChecklistManagersModal: (\n state,\n action: PayloadAction\n ) => {\n state.isShowingGenerateChecklistManagersModal = true;\n state.checklistTemplateToGenerate = action.payload;\n },\n hideGenerateChecklistManagersModal: state => {\n state.isShowingGenerateChecklistManagersModal = false;\n },\n addUserToGenerate: (state, action: PayloadAction) => {\n state.userIdToGenerate = action.payload;\n },\n addManagersToGenerate: (\n state,\n action: PayloadAction<{ users: string[]; message: string }>\n ) => {\n state.managersToGenerate = action.payload.users;\n state.messageToGenerate = action.payload.message;\n },\n generateChecklistFromTemplateRequest: state => {\n state.isGeneratingChecklistFromTemplate = true;\n },\n generateChecklistFromTemplateSuccess: state => {\n state.isGeneratingChecklistFromTemplate = false;\n },\n generateChecklistFromTemplateError: (\n state,\n action: PayloadAction\n ) => {\n state.isGeneratingChecklistFromTemplate = false;\n },\n checklistChangeStatusRequest: state => {},\n checklistChangeStatusSuccess: (\n state,\n action: PayloadAction\n ) => {\n const newChecklists = [...state.checklists];\n const checklistIndex = newChecklists.findIndex(\n checklist => checklist.id === action.payload.id\n );\n if (checklistIndex === -1) {\n newChecklists.push(action.payload);\n } else {\n newChecklists.splice(checklistIndex, 1, action.payload);\n }\n state.checklists = newChecklists;\n },\n checklistChangeStatusError: (state, action: PayloadAction) => {},\n showGenerateChecklistSuccessToast: state => {\n state.isShowingGenerateChecklistSuccessToast = true;\n },\n hideGenerateChecklistSuccessToast: state => {\n state.isShowingGenerateChecklistSuccessToast = false;\n },\n },\n});\n\nexport const {\n fetchVendorChecklistsRequest,\n fetchVendorChecklistsSuccess,\n fetchVendorChecklistsError,\n fetchChecklistDetailsRequest,\n fetchChecklistDetailsSuccess,\n fetchChecklistDetailsError,\n updateChecklistItemRequest,\n updateChecklistItemSuccess,\n updateChecklistItemError,\n fetchVendorChecklistTemplatesRequest,\n fetchVendorChecklistTemplatesSuccess,\n fetchVendorChecklistTemplatesError,\n fetchChecklistTemplateDetailsRequest,\n fetchChecklistTemplateDetailsSuccess,\n fetchChecklistTemplateDetailsError,\n showGenerateChecklistUsersModal,\n hideGenerateChecklistUsersModal,\n showGenerateChecklistManagersModal,\n hideGenerateChecklistManagersModal,\n addManagersToGenerate,\n addUserToGenerate,\n generateChecklistFromTemplateRequest,\n generateChecklistFromTemplateSuccess,\n generateChecklistFromTemplateError,\n checklistChangeStatusRequest,\n checklistChangeStatusSuccess,\n checklistChangeStatusError,\n showGenerateChecklistSuccessToast,\n hideGenerateChecklistSuccessToast,\n} = vendorsSlice.actions;\n\nexport default vendorsSlice.reducer;\n","import moment from 'moment';\nimport { api } from '../../api/api';\nimport { getApiErrorMessage } from '../../functions/getApiErrorMessage';\nimport {\n ChecklistChangedStatusPayloadStatusEnum,\n ChecklistCreatePayloadChecklistCheckableTypeEnum,\n ChecklistCreatePayloadChecklistRelatedToEnum,\n ChecklistCreatePayloadQuestions,\n ChecklistExtended,\n ChecklistItem,\n ChecklistTemplateExtended,\n} from '../../swagger';\nimport { UNKNOWN_ERROR } from '../../types/constants';\nimport { VoidThunk } from '../../types/voidThunk';\nimport {\n checklistChangeStatusError,\n checklistChangeStatusRequest,\n checklistChangeStatusSuccess,\n fetchChecklistDetailsError,\n fetchChecklistDetailsRequest,\n fetchChecklistDetailsSuccess,\n fetchChecklistTemplateDetailsError,\n fetchChecklistTemplateDetailsRequest,\n fetchChecklistTemplateDetailsSuccess,\n fetchVendorChecklistsError,\n fetchVendorChecklistsRequest,\n fetchVendorChecklistsSuccess,\n fetchVendorChecklistTemplatesError,\n fetchVendorChecklistTemplatesRequest,\n fetchVendorChecklistTemplatesSuccess,\n generateChecklistFromTemplateError,\n generateChecklistFromTemplateRequest,\n generateChecklistFromTemplateSuccess,\n hideGenerateChecklistManagersModal,\n showGenerateChecklistSuccessToast,\n updateChecklistItemError,\n updateChecklistItemRequest,\n updateChecklistItemSuccess,\n} from './checklistsSlice';\n\nexport const fetchVendorChecklists =\n (vendorId: string): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(fetchVendorChecklistsRequest());\n const response = await api().vendorsIdChecklistsGet({ id: vendorId });\n dispatch(fetchVendorChecklistsSuccess(response as ChecklistExtended[]));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorChecklistsError(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorChecklistsError(\n 'An error occurred fetching checklists. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorChecklistsError(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchChecklistDetails =\n ({ checklistId }: { checklistId: string }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchChecklistDetailsRequest());\n const response = await api().checklistsIdGet({ id: checklistId });\n dispatch(fetchChecklistDetailsSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchChecklistDetailsError(apiErrorMessage));\n } else {\n dispatch(\n fetchChecklistDetailsError(\n 'An error occurred fetching checklist details. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchChecklistDetailsError(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const updateChecklistItem =\n ({\n checklistSurveyId,\n checklistId,\n questionGroupId,\n item,\n }: {\n checklistSurveyId: string;\n checklistId: string;\n questionGroupId: string;\n item: ChecklistItem;\n }): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(updateChecklistItemRequest());\n const vendorId = getState().vendors.currentVendor?.id;\n\n await api().vendorsIdAnswersPost({\n id: vendorId,\n answers: {\n answers: [\n {\n surveyId: checklistSurveyId,\n questionId: item.questionId,\n value: item.answerValue?.toString(),\n notApplicable: item.answerNotApplicable,\n note: item.answerNote,\n },\n ],\n },\n });\n const currentUser = getState().user.userDetails;\n const currentUserName = currentUser.fullName;\n\n dispatch(\n updateChecklistItemSuccess({\n checklistId,\n questionGroupId,\n item: {\n ...item,\n answerUpdatedAt: moment().toISOString(),\n answerUserName: currentUserName,\n },\n })\n );\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(updateChecklistItemError(apiErrorMessage));\n } else {\n dispatch(\n updateChecklistItemError(\n 'An error occurred updating the checklist item. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(updateChecklistItemError(UNKNOWN_ERROR));\n }\n }\n };\n\nexport enum GettingStartedChecklistItems {\n complete_profile = 'complete_profile',\n invite_colleagues_to_the_portal = 'invite_colleagues_to_the_portal',\n set_up_company_teams = 'set_up_company_teams',\n watch_policy_generator_video = 'watch_policy_generator_video',\n watch_policy_approval_management_video = 'watch_policy_approval_management_video',\n watch_policy_attestation_management_video_for_admins = 'watch_policy_attestation_management_video_for_admins',\n watch_policy_attestation_management_video_for_viewers = 'watch_policy_attestation_management_video_for_viewers',\n}\n\nexport const completeGetStartedChecklistItem =\n (completedItem: string): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const getStartedList = getState().checklists.checklists.find(checklist =>\n checklist.name.includes('Getting Started')\n );\n const item = getStartedList?.itemsGroups[0]?.items?.find(\n (checklistItem: ChecklistItem) =>\n checklistItem.propertyName === completedItem\n );\n\n if (process.env.NODE_ENV === 'development')\n console.log(completedItem.toString());\n\n if (!item || item?.answerValue) {\n // return if already checked\n return;\n }\n\n if (item.answerId) {\n await api().answersIdPatch({\n id: item.answerId.toString(),\n answer: {\n value: 'true',\n surveyId: getStartedList.survey.id,\n },\n });\n } else {\n const vendorId = getState().vendors.currentVendor?.id;\n\n await api().vendorsIdAnswersPost({\n id: vendorId,\n answers: {\n answers: [\n {\n value: 'true',\n questionId: item.questionId,\n surveyId: getStartedList.survey.id,\n },\n ],\n },\n });\n }\n dispatch(fetchChecklistDetails({ checklistId: getStartedList.id }));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n } else {\n console.log(err);\n }\n }\n };\n\nexport const fetchVendorChecklistTemplates =\n (vendorId: string): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(fetchVendorChecklistTemplatesRequest());\n const response = await api().vendorsIdChecklistTemplatesGet({\n id: vendorId,\n });\n dispatch(\n fetchVendorChecklistTemplatesSuccess(\n response as ChecklistTemplateExtended[]\n )\n );\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorChecklistTemplatesError(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorChecklistTemplatesError(\n 'An error occurred fetching checklist templates. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorChecklistTemplatesError(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchChecklistTemplateDetails =\n ({ checklistTemplateId }: { checklistTemplateId: string }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchChecklistTemplateDetailsRequest());\n const response = await api().checklistTemplatesIdGet({\n id: checklistTemplateId,\n });\n dispatch(fetchChecklistTemplateDetailsSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchChecklistTemplateDetailsError(apiErrorMessage));\n } else {\n dispatch(\n fetchChecklistTemplateDetailsError(\n 'An error occurred fetching checklist template details. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchChecklistTemplateDetailsError(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const generateChecklistFromTemplate =\n (vendorId: string): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(generateChecklistFromTemplateRequest());\n const state = getState();\n const {\n checklistTemplateToGenerate,\n userIdToGenerate,\n managersToGenerate,\n messageToGenerate,\n } = state.checklists;\n\n const managers = managersToGenerate.map(managerId => ({\n vendorUserId: managerId,\n responsible: true,\n }));\n\n const template = await api().checklistTemplatesIdGet({\n id: checklistTemplateToGenerate.id,\n });\n\n const questions: ChecklistCreatePayloadQuestions[] = [];\n template.itemsGroups.forEach(group => {\n group.items.forEach(item => {\n const question: ChecklistCreatePayloadQuestions = {\n questionGroupId: group.questionGroupId,\n explanatoryText: item.explanatoryText,\n questionId: item.questionId,\n questionText: item.questionText,\n };\n questions.push(question);\n });\n });\n\n await api().vendorsIdChecklistsPost({\n id: vendorId,\n body: {\n checklist: {\n name: template.name,\n common: template.common,\n relatedTo:\n template.relatedTo as unknown as ChecklistCreatePayloadChecklistRelatedToEnum,\n checkableId: userIdToGenerate || undefined,\n checkableType: userIdToGenerate\n ? ChecklistCreatePayloadChecklistCheckableTypeEnum.VendorUser\n : undefined,\n },\n checklistUsers: managers,\n questions,\n message: messageToGenerate,\n },\n });\n dispatch(generateChecklistFromTemplateSuccess());\n dispatch(hideGenerateChecklistManagersModal());\n dispatch(showGenerateChecklistSuccessToast());\n dispatch(fetchVendorChecklists(vendorId));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(generateChecklistFromTemplateError(apiErrorMessage));\n } else {\n dispatch(\n generateChecklistFromTemplateError(\n 'An error occurred fetching generating a new checklist. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(generateChecklistFromTemplateError(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const updateChecklistStatus =\n ({\n id,\n status,\n }: {\n id: string;\n status: ChecklistChangedStatusPayloadStatusEnum;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(checklistChangeStatusRequest());\n const response = await api().checklistsIdChangeStatusPatch({\n id,\n body: {\n status,\n },\n });\n dispatch(checklistChangeStatusSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(checklistChangeStatusError(apiErrorMessage));\n } else {\n dispatch(\n checklistChangeStatusError(\n 'An error occurred fetching checklists. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(checklistChangeStatusError(UNKNOWN_ERROR));\n }\n }\n };\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport {\n ComplianceEditControlFormModel,\n ComplianceFilterPayload,\n DrawerType,\n} from '../../components/compliance/Types/complianceTypes';\nimport { MessageToastVariant } from '../../components/MessageToast/MessageToast';\nimport {\n ControlCategoryExtended,\n ControlExtended,\n ControlModel,\n ControlModelStatusEnum,\n EvidenceModel,\n FrameworkGuidanceModel,\n FrameworkModel,\n FrameworkModelAvailabilityEnum,\n FrameworkRequirementCategoryExtended,\n FrameworkRequirementExtendedStatusEnum,\n FrameworkRequirementModel,\n ReviewStatusEnum,\n TaskExtended,\n TaskList,\n TaskModel,\n TaskModelStatusEnum,\n VendorDocument,\n VendorFrameworkRequirementModel,\n} from '../../swagger';\nimport { NOT_FOUND_INDEX } from '../../types/constants';\nimport {\n ComplianceState,\n ControlsFilters,\n EditControlMode,\n EditTaskMode,\n} from './complianceState';\nimport {\n fetchAssertionDetails,\n fetchAssertionDetailsSilent,\n fetchComplianceControls,\n fetchEvidence,\n patchAssertionDetails,\n patchAssertionResultExclude,\n patchAssertionResultInclude,\n patchControlCheckAssertions,\n postAssertionReview,\n postAssertionRun,\n postFrameworkEvidenceExport,\n postFrameworkRequestActivation,\n removeVendorRequirement,\n} from './complianceThunks';\nimport { ControlPageFilterStatus } from '../../features/compliance/controls/Controls/ControlsHeader';\n\nconst updateEditControlFormModelTasks = (\n state: ComplianceState,\n payloadTasks: TaskModel[]\n) => {\n // Merge tasks, not replace.\n // Example: Add a check to control ( not saved yet ) -> click view check -> save check changes ( status to compliant for example ) -> return to this screen ->\n // we must see \"updated\" added task which has not been saved yet to control\n state.editControlFormModel.tasks = state.editControlFormModel.tasks.map(\n formTask => {\n const updatedTask = payloadTasks.find(task => task.id === formTask.id);\n\n return updatedTask\n ? {\n ...formTask,\n ...updatedTask,\n }\n : formTask;\n }\n );\n const tasksIds = state.editControlFormModel.tasks.map(task => task.id);\n\n // Insert tasks which were not updated ( For example: Open control RHS without expanding it from meatball menu )\n payloadTasks.map(payloadTask => {\n if (!tasksIds.includes(payloadTask.id))\n state.editControlFormModel.tasks.push(payloadTask);\n });\n};\n\nexport const controlIsCompliant = (tasks: TaskModel[]) => {\n return !(\n (tasks || []).length === 0 ||\n tasks.some(\n task =>\n task.status === TaskModelStatusEnum.Pending ||\n task.status === TaskModelStatusEnum.Failed\n )\n );\n};\n\nexport const controlIsFailed = (tasks: TaskModel[]) => {\n return tasks.some(task => task.status === TaskModelStatusEnum.Failed);\n};\n\ninterface ControlExtendedWithIndex extends ControlExtended {\n orderIndex?: number;\n}\n\nconst initialState: ComplianceState = {\n categories: [],\n assignableTasks: [],\n controls: [],\n controlsSearch: undefined,\n notApplicableControls: [],\n tasks: [],\n tasksMeta: {},\n fetchCategoriesError: '',\n fetchTasksError: '',\n frameworks: [],\n isFetchingAssignableTasks: false,\n isCreatingControl: false,\n frameworkPolicies: [],\n frameworkRequirementCategories: [],\n frameworkGuidances: {},\n isFetchingFrameworkPolicies: false,\n isFetchingFrameworkRequirements: false,\n isFetchingFrameworks: false,\n isFetchingCategories: false,\n isFetchingTasks: false,\n isFetchingTaskDetails: false,\n selectedFrameworkId: undefined,\n selectedCategoryId: undefined,\n selectedControlId: undefined,\n selectedTaskId: undefined,\n showControlDrawer: false,\n isFetchingControlDetails: false,\n showTaskDrawer: false,\n editControlFormModel: {} as ComplianceEditControlFormModel,\n toastMessage: '',\n tasksFilters: {},\n categoriesFilters: {},\n editControlMode: EditControlMode.Normal,\n editTaskMode: EditTaskMode.Normal,\n controlsFilters: {} as ControlsFilters,\n patchControlCheckAssertionsStatus: 'idle',\n tempTask: null as TaskExtended,\n fetchAssertionDetailsStatus: 'idle',\n patchAssertionDetailsStatus: 'idle',\n postAssertionRunStatus: 'idle',\n patchAssertionResultIncludeStatus: 'idle',\n patchAssertionResultExcludeStatus: 'idle',\n fetchEvidenceStatus: 'idle',\n drawerOnTop: null,\n isPatchingControl: false,\n isFetchingEvidenceDownloadDetails: false,\n isPatchingTask: false,\n isPostingTask: false,\n isPostingTaskEvidence: false,\n isDeletingEvidence: false,\n isPDFReportRequest: false,\n isPDFReportError: '',\n isFetchingNotApplicableControls: false,\n fetchNotApplicableControlsError: '',\n toastVariant: null,\n isMarkingControlApplicable: false,\n isMarkingControlNotApplicable: false,\n isPostFrameworkRequest: false,\n isPostFrameworkError: '',\n isSettingInitialTempTaskFields: false,\n isPostingReviewHistoryItem: false,\n isFetchingReviewHistoryItems: false,\n fetchAssertionDetailsSilentStatus: 'idle',\n postAssertionReviewStatus: 'idle',\n postFrameworkEvidenceExportStatus: 'idle',\n evidence: [],\n fetchControlsStatus: 'idle',\n removeVendorRequirementStatus: 'idle',\n postFrameworkRequestStatus: 'idle',\n};\nconst complianceSlice = createSlice({\n initialState,\n name: 'complianceSlice',\n reducers: {\n cleanupCompliance: state => {\n Object.assign(state, initialState);\n },\n clearToastMessage: state => {\n state.toastMessage = '';\n state.toastVariant = MessageToastVariant.Primary;\n },\n createControlRequest: state => {\n state.isCreatingControl = true;\n state.toastMessage = '';\n },\n createControlSuccess: (state, action: PayloadAction) => {\n state.isCreatingControl = false;\n state.controls.push(action.payload);\n\n const catIndex = state.categories.findIndex(cat =>\n state.editControlFormModel.frameworksRelations.find(\n fr => fr.controlCategory.id === cat.id\n )\n );\n\n if (catIndex > NOT_FOUND_INDEX)\n state.categories[catIndex].controls.push(action.payload);\n },\n createControlError: (state, action: PayloadAction) => {\n state.toastMessage = action.payload;\n state.toastVariant = MessageToastVariant.Warning;\n state.isCreatingControl = false;\n },\n fetchAssignableComplianceTasksRequest: state => {\n state.isFetchingAssignableTasks = true;\n },\n fetchAssignableComplianceTasksSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingAssignableTasks = false;\n state.assignableTasks = action.payload;\n },\n fetchRequirementsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingFrameworkRequirements = false;\n state.frameworkRequirementCategories = action.payload;\n },\n fetchFrameworkGuidanceSuccess: (\n state,\n action: PayloadAction<[string, FrameworkGuidanceModel]>\n ) => {\n state.frameworkGuidances[action.payload[0]] = action.payload[1];\n },\n createVendorRequirementSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingFrameworkRequirements = false;\n state.frameworkRequirementCategories.forEach(category => {\n category.frameworkRequirements.forEach(requirement => {\n if (requirement.id == action.payload.frameworkRequirementId) {\n requirement.vendorFrameworkRequirementId = action.payload.id;\n requirement.status =\n FrameworkRequirementExtendedStatusEnum.Completed;\n }\n });\n });\n },\n fetchAssignableComplianceTasksError: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingAssignableTasks = false;\n state.toastMessage = action.payload;\n state.toastVariant = MessageToastVariant.Warning;\n },\n fetchRequirementsRequest: state => {\n state.isFetchingCategories = true;\n },\n fetchCategoriesRequest: state => {\n state.isFetchingCategories = true;\n },\n setTasksFilters: (\n state,\n action: PayloadAction\n ) => {\n state.tasksFilters = { ...state.tasksFilters, ...action.payload };\n },\n setCategoriesFilters: (\n state,\n action: PayloadAction\n ) => {\n state.categoriesFilters = { assigneeId: action.payload?.assigneeId };\n },\n fetchCategoriesSuccess: (\n state,\n action: PayloadAction\n ) => {\n const categories = action.payload;\n state.categories = categories;\n const notApplicable: ControlExtended[] = [];\n\n categories.forEach(category => {\n const applicable: ControlExtended[] = [];\n category.controls.forEach(control =>\n (control.applicable ? applicable : notApplicable).push(control)\n );\n category.controls = applicable;\n });\n\n state.notApplicableControls = notApplicable;\n state.isFetchingCategories = false;\n state.selectedCategoryId = categories ? categories[0].id : undefined;\n },\n fetchCategoriesError: (state, action: PayloadAction) => {\n state.isFetchingCategories = false;\n state.fetchCategoriesError = action.payload;\n },\n fetchNotApplicableControlsError: (state, action: PayloadAction) => {\n state.fetchNotApplicableControlsError = action.payload;\n state.isFetchingNotApplicableControls = false;\n },\n fetchNotApplicableControlsRequest: state => {\n state.fetchNotApplicableControlsError = undefined;\n state.isFetchingNotApplicableControls = true;\n },\n fetchNotApplicableControlsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingNotApplicableControls = false;\n state.notApplicableControls = action.payload;\n },\n fetchFrameworkPoliciesRequest: state => {\n state.isFetchingFrameworkPolicies = true;\n },\n fetchFrameworkPoliciesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingFrameworkPolicies = false;\n state.frameworkPolicies = action.payload;\n },\n fetchFrameworkPoliciesError: (state, action: PayloadAction) => {\n state.isFetchingFrameworkPolicies = false;\n // TODO: handle the error\n },\n fetchFrameworksRequest: state => {\n state.isFetchingFrameworks = true;\n },\n fetchFrameworksSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingFrameworks = false;\n state.frameworks = action.payload.sort((a, b) =>\n a.rowOrder > b.rowOrder ? 1 : -1\n );\n },\n fetchFrameworksError: (state, action: PayloadAction) => {\n state.isFetchingFrameworks = false;\n state.fetchFrameworksError = action.payload;\n },\n fetchTaskDetailsRequest: state => {\n state.isFetchingTaskDetails = true;\n },\n cleanupTaskDetails: state => {\n state.tempTask = undefined;\n state.selectedTaskId = undefined;\n },\n fetchTaskDetailsSuccess: state => {\n state.isFetchingTaskDetails = false;\n },\n setTempTaskInitialFieldsRequest: (\n state,\n action: PayloadAction\n ) => {\n state.isSettingInitialTempTaskFields = action.payload;\n },\n fetchTaskDetailsError: (state, action: PayloadAction) => {\n state.isFetchingTaskDetails = false;\n state.fetchTasksError = action.payload;\n state.tempTask = undefined;\n },\n fetchTasksRequest: state => {\n state.isFetchingTasks = true;\n },\n fetchTasksSuccess: (state, action: PayloadAction) => {\n state.isFetchingTasks = false;\n state.tasks = action.payload['tasks'];\n state.tasksMeta = action.payload['meta'];\n },\n\n updateTasksInTheEditControlFormSlice: (\n state,\n action: PayloadAction\n ) => {\n if (!state.editControlFormModel.tasks) return;\n updateEditControlFormModelTasks(state, [action.payload]);\n },\n updateControlReviewStatusSuccess: (\n state,\n action: PayloadAction<{\n id: ControlModel['id'];\n nextReviewDate: string;\n reviewStatus: ReviewStatusEnum;\n reviewOverdue: false;\n }>\n ) => {\n const { id, nextReviewDate, reviewStatus, reviewOverdue } =\n action.payload;\n const control = state.controls.find(c => c.id == id);\n control.reviewStatus = reviewStatus;\n control.nextReviewDate = nextReviewDate;\n control.reviewOverdue = reviewOverdue;\n if (state.editControlFormModel.id === id) {\n state.editControlFormModel.reviewStatus = reviewStatus;\n state.editControlFormModel.nextReviewDate = nextReviewDate;\n state.editControlFormModel.reviewOverdue = reviewOverdue;\n }\n\n state.categories.map(category => {\n category.controls = category.controls.map(categoryControl => {\n if (categoryControl.id === id) {\n categoryControl.reviewStatus = reviewStatus;\n categoryControl.nextReviewDate = nextReviewDate;\n categoryControl.reviewOverdue = reviewOverdue;\n }\n\n return categoryControl;\n });\n category;\n });\n },\n fetchControlExtendedRequest: state => {\n state.isFetchingControlDetails = true;\n },\n fetchControlExtendedSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingControlDetails = false;\n const {\n id,\n tasks,\n policies,\n status,\n reviewStatus,\n lastReview,\n custom,\n assignee,\n vendorPolicies,\n risks,\n helpArticleUrl,\n access,\n } = action.payload;\n const control = state.controls.find(c => c.id == id);\n if (control) {\n control.tasks = tasks;\n control.policies = policies;\n control.vendorPolicies = vendorPolicies;\n control.risks = risks;\n control.reviewStatus = reviewStatus;\n control.status = status;\n control.lastReview = lastReview;\n control.custom = custom;\n control.access = access;\n control.helpArticleUrl = helpArticleUrl;\n }\n\n if (state.editControlFormModel.id === id) {\n state.editControlFormModel.policies = policies;\n state.editControlFormModel.vendorPolicies = vendorPolicies;\n state.editControlFormModel.status = status;\n state.editControlFormModel.reviewStatus = reviewStatus;\n state.editControlFormModel.lastReview = lastReview;\n state.editControlFormModel.custom = custom;\n state.editControlFormModel.assignee = assignee;\n state.editControlFormModel.access = access;\n state.editControlFormModel.helpArticleUrl = helpArticleUrl;\n state.editControlFormModel.risks = risks;\n\n updateEditControlFormModelTasks(state, action.payload.tasks);\n }\n },\n\n fetchControlExtendedError: (state, action: PayloadAction) => {\n state.isFetchingControlDetails = false;\n },\n\n fetchTasksError: (state, action: PayloadAction) => {\n state.isFetchingTasks = false;\n state.fetchTasksError = action.payload;\n },\n\n setTempTask: (state, action: PayloadAction) => {\n state.tempTask = action.payload;\n },\n\n postTaskEvidenceRequest: state => {\n state.isPostingTaskEvidence = true;\n },\n\n postTaskEvidenceSuccess: (state, action: PayloadAction) => {\n state.isPostingTaskEvidence = false;\n state.tempTask.evidences.push(action.payload);\n },\n\n fetchEvidenceDownloadDetailsRequest: state => {\n state.isFetchingEvidenceDownloadDetails = true;\n },\n\n fetchEvidenceDownloadDetailsSuccess: state => {\n state.isFetchingEvidenceDownloadDetails = false;\n },\n\n fetchEvidenceDownloadDetailsError: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingEvidenceDownloadDetails = false;\n state.fetchEvidenceDownloadDetailsError = action.payload;\n },\n\n deleteEvidenceRequest: state => {\n state.isDeletingEvidence = true;\n },\n\n deleteEvidenceSuccess: (state, action: PayloadAction) => {\n state.isDeletingEvidence = false;\n state.tempTask.evidences = state.tempTask.evidences.filter(\n evidence => evidence.id !== action.payload\n );\n },\n\n deleteEvidenceError: (state, action: PayloadAction) => {\n state.isDeletingEvidence = false;\n state.deleteEvidenceError = action.payload;\n },\n\n createPDFReportRequest: state => {\n state.isPDFReportRequest = true;\n },\n\n createPDFReportSuccess: (state, action: PayloadAction) => {\n state.isPDFReportRequest = false;\n },\n\n createPDFReportError: (state, action: PayloadAction) => {\n state.isPDFReportRequest = false;\n state.isPDFReportError = action.payload;\n },\n\n postTaskEvidenceError: (state, action: PayloadAction) => {\n state.isPostingTaskEvidence = false;\n state.postTaskEvidenceError = action.payload;\n },\n\n postTaskRequest: state => {\n state.isPostingTask = true;\n },\n\n postTaskSuccess: (state, action: PayloadAction) => {\n state.isPostingTask = false;\n state.tasks = [action.payload, ...state.tasks];\n },\n postTaskError: (state, action: PayloadAction) => {\n state.isPostingTask = false;\n state.fetchTasksError = action.payload;\n },\n patchTaskRequest: state => {\n state.isPatchingTask = true;\n },\n\n // update control status in tempTask.controls[0].status\n updateHiddenEditTaskDrawerControls: state => {\n const taskDrawerControls = state.tempTask?.controls;\n if (taskDrawerControls) {\n state.tempTask.controls = state.tempTask?.controls.map(control => {\n const newStatus = (state.controls || []).find(\n treeControl => treeControl.id === control.id\n )?.status;\n return {\n ...control,\n ...{ status: newStatus },\n };\n });\n }\n },\n\n updateTaskInTheTree: (\n state,\n action: PayloadAction & { partialUpdate?: boolean }>\n ) => {\n const payload = action.payload;\n // partialUpdate false by default\n const { id, partialUpdate, ...payloadFields } = payload;\n\n state.tasks = state.tasks.map(task =>\n task.id === id\n ? partialUpdate\n ? { ...task, ...payloadFields }\n : (payload as TaskModel)\n : task\n );\n\n state.controls = state.controls.map(control => {\n if (control.tasks) {\n const newTasks = control.tasks.map(task =>\n task.id === id\n ? partialUpdate\n ? { ...task, ...payloadFields }\n : (payload as TaskModel)\n : task\n );\n\n const controlCompliant = controlIsCompliant(newTasks);\n\n const newStatus = controlCompliant\n ? ControlModelStatusEnum.Compliant\n : controlIsFailed(newTasks)\n ? ControlModelStatusEnum.Failed\n : ControlModelStatusEnum.Pending;\n\n return {\n ...control,\n tasks: newTasks,\n status: newStatus,\n };\n }\n\n return control;\n });\n\n state.categories = state.categories.map(category => ({\n ...category,\n controls: category.controls.map(control => {\n const newTasks = control.tasks?.map(task =>\n task.id === id\n ? partialUpdate\n ? { ...task, ...payloadFields }\n : (payload as TaskModel)\n : task\n );\n\n const controlCompliant = controlIsCompliant(newTasks);\n\n const newStatus = controlCompliant\n ? ControlModelStatusEnum.Compliant\n : controlIsFailed(newTasks)\n ? ControlModelStatusEnum.Failed\n : ControlModelStatusEnum.Pending;\n\n return {\n ...control,\n tasks: newTasks,\n status: newStatus,\n };\n }),\n }));\n },\n\n patchTaskSuccess: (state, action: PayloadAction) => {\n state.isPatchingTask = false;\n },\n\n patchTaskError: (state, action: PayloadAction) => {\n state.isPatchingTask = false;\n state.fetchTasksError = action.payload;\n },\n patchControlRequest: state => {\n state.isPatchingControl = true;\n state.toastMessage = '';\n },\n patchControlSuccess: (state, action: PayloadAction) => {\n state.isPatchingControl = false;\n state.showControlDrawer = false;\n\n const index = state.controls.findIndex(c => c.id === action.payload.id);\n if (index > NOT_FOUND_INDEX) state.controls[index] = action.payload;\n\n let controlIndex = NOT_FOUND_INDEX;\n let categoryIndex = NOT_FOUND_INDEX;\n const found = false;\n\n for (const cat of state.categories) {\n categoryIndex++;\n controlIndex = cat.controls.findIndex(\n con => con.id === action.payload?.id\n );\n if (controlIndex > NOT_FOUND_INDEX) break;\n }\n\n if (categoryIndex > NOT_FOUND_INDEX && controlIndex > NOT_FOUND_INDEX)\n state.categories[categoryIndex].controls[controlIndex] = action.payload;\n\n // if edit test opened\n if (state.tempTask && !state.tempTask.assignee) {\n state.tempTask.assignee = action.payload.assignee;\n }\n },\n patchControlError: (state, action: PayloadAction) => {\n state.isPatchingControl = false;\n state.toastMessage = action.payload;\n state.toastVariant = MessageToastVariant.Warning;\n state.showControlDrawer = false;\n },\n removeControlRelation: (state, action: PayloadAction) => {\n state.tempTask?.controls?.splice(\n state.tempTask?.controls?.findIndex(tc => tc.id === action.payload),\n 1\n );\n },\n setControlFormModel: (\n state,\n action: PayloadAction\n ) => {\n state.editControlFormModel = action.payload;\n },\n setControlFormModelValid: (state, action: PayloadAction) => {\n state.editControlFormModel.formValid = action.payload;\n },\n setSelectedFramework: (state, action: PayloadAction) => {\n state.selectedFrameworkId = action.payload?.id;\n },\n setSelectedFrameworkId: (\n state,\n action: PayloadAction\n ) => {\n state.selectedFrameworkId = action.payload;\n },\n setSelectedCategoryId: (state, action: PayloadAction) => {\n state.selectedCategoryId = action.payload;\n },\n setSelectedControlId: (state, action: PayloadAction) => {\n state.selectedControlId = action.payload;\n },\n setSelectedTaskId: (state, action: PayloadAction) => {\n state.selectedTaskId = action.payload;\n },\n setShowControlDrawer: (state, action: PayloadAction) => {\n state.showControlDrawer = action.payload;\n if (action.payload) {\n state.drawerOnTop = DrawerType.Control;\n } else {\n state.editControlMode = EditControlMode.Normal;\n }\n },\n setShowTaskDrawer: (state, action: PayloadAction) => {\n state.showTaskDrawer = action.payload;\n if (action.payload) state.drawerOnTop = DrawerType.Task;\n },\n setDrawerOnTop: (state, action: PayloadAction) => {\n state.drawerOnTop = action.payload;\n },\n markControlApplicableFailure: (state, action: PayloadAction) => {\n state.isMarkingControlApplicable = false;\n state.markingControlApplicableError = action.payload;\n },\n markControlApplicableRequest: state => {\n state.isMarkingControlApplicable = true;\n state.markingControlApplicableError = undefined;\n },\n markControlApplicableSuccess: state => {\n state.isMarkingControlApplicable = false;\n },\n markControlNotApplicableFailure: (state, action: PayloadAction) => {\n state.isMarkingControlNotApplicable = false;\n state.markingControlNotApplicableError = action.payload;\n },\n markControlNotApplicableRequest: (state, action: PayloadAction) => {\n state.controlIdBeingMarkedNotApplicable = action.payload;\n state.isMarkingControlNotApplicable = true;\n state.markingControlNotApplicableError = undefined;\n },\n markControlNotApplicableSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isMarkingControlNotApplicable = false;\n // save reasonForExclusion from state.controls to state.notApplicableControls\n state.notApplicableControls = state.notApplicableControls.map(control => {\n if (control.id !== action.payload.id) return control;\n return { ...control, ...action.payload };\n });\n },\n removeApplicableControl: (\n state,\n action: PayloadAction<{ categoryId: string; controlId: string }>\n ) => {\n const category = state.categories.find(\n c => c.id === action.payload.categoryId\n );\n if (!category) return;\n category.controls = category.controls.filter(\n c => c.id !== action.payload.controlId\n );\n },\n removeNotApplicableControl: (\n state,\n action: PayloadAction<{ controlId: string }>\n ) => {\n state.notApplicableControls = state.notApplicableControls.filter(\n nac => nac.id !== action.payload.controlId\n );\n },\n addNotApplicableControl: (\n state,\n action: PayloadAction\n ) => {\n state.notApplicableControls.push(action.payload);\n },\n addApplicableControl: (state, action: PayloadAction) => {\n if (!state.selectedFrameworkId) {\n console.error('state.selectedFrameworkId is empty');\n }\n const categoryId = action.payload.frameworksRelations.find(\n fr => fr.framework.id === state.selectedFrameworkId\n ).controlCategory.id;\n const category = state.categories.find(c => c.id === categoryId);\n if (!category) return;\n\n // orderIndex - optional temporary field to add control in valid order\n // if control was marked as not applicable but clicked cancel without saving reason for exclusion\n // TODO: may be we need to have this index on the backend\n const { orderIndex } = action.payload as ControlExtendedWithIndex;\n if (orderIndex) {\n category.controls.splice(orderIndex, 0, action.payload);\n } else {\n category.controls.push(action.payload);\n }\n },\n setEditControlMode: (state, action: PayloadAction) => {\n state.editControlMode = action.payload;\n },\n setEditTaskMode: (state, action: PayloadAction) => {\n state.editTaskMode = action.payload;\n },\n\n postFrameworkRequest: state => {\n state.isPostFrameworkRequest = true;\n },\n postFrameworkSuccess: (state, action: PayloadAction) => {\n state.isPostFrameworkRequest = false;\n },\n postFrameworkError: (state, action: PayloadAction) => {\n state.isPostFrameworkRequest = false;\n state.isPostFrameworkError = action.payload;\n },\n setControlsFilterAssigneeId: (state, action: PayloadAction) => {\n state.controlsFilters.assigneeId = action.payload;\n },\n setControlsFilterFrameworkIdentifier: (\n state,\n action: PayloadAction\n ) => {\n state.controlsFilters.frameworkIdentifier = action.payload;\n },\n setControlsFilterStatus: (\n state,\n action: PayloadAction\n ) => {\n state.controlsFilters.status = action.payload;\n },\n setControlsFilterApplicable: (state, action: PayloadAction) => {\n state.controlsFilters.applicable = action.payload;\n },\n setControlsSearch: (state, action: PayloadAction) => {\n state.controlsSearch = action.payload;\n },\n isPostingReviewHistoryItemRequest: state => {\n state.isPostingReviewHistoryItem = true;\n },\n isPostingReviewHistoryItemSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isPostingReviewHistoryItem = false;\n },\n isPostingReviewHistoryItemFailure: (\n state,\n action: PayloadAction\n ) => {\n state.isPostingReviewHistoryItem = false;\n },\n\n isFetchingReviewHistoryItemsRequest: state => {\n state.isFetchingReviewHistoryItems = true;\n },\n isFetchingReviewHistoryItemsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingReviewHistoryItems = false;\n },\n isFetchingReviewHistoryItemsFailure: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingReviewHistoryItems = false;\n },\n },\n extraReducers: builder => {\n builder\n .addCase(patchControlCheckAssertions.pending, state => {\n state.patchControlCheckAssertionsStatus = 'loading';\n })\n .addCase(patchControlCheckAssertions.fulfilled, (state, action) => {\n state.patchControlCheckAssertionsStatus = 'succeeded';\n })\n .addCase(patchControlCheckAssertions.rejected, state => {\n state.patchControlCheckAssertionsStatus = 'failed';\n })\n .addCase(fetchAssertionDetails.pending, state => {\n state.fetchAssertionDetailsStatus = 'loading';\n })\n .addCase(fetchAssertionDetails.fulfilled, (state, action) => {\n state.fetchAssertionDetailsStatus = 'succeeded';\n })\n .addCase(fetchAssertionDetails.rejected, state => {\n state.fetchAssertionDetailsStatus = 'failed';\n })\n .addCase(fetchAssertionDetailsSilent.pending, state => {\n state.fetchAssertionDetailsSilentStatus = 'loading';\n })\n .addCase(fetchAssertionDetailsSilent.fulfilled, (state, action) => {\n state.fetchAssertionDetailsSilentStatus = 'succeeded';\n })\n .addCase(fetchAssertionDetailsSilent.rejected, state => {\n state.fetchAssertionDetailsSilentStatus = 'failed';\n })\n .addCase(patchAssertionDetails.pending, state => {\n state.patchAssertionDetailsStatus = 'loading';\n })\n .addCase(patchAssertionDetails.fulfilled, (state, action) => {\n state.patchAssertionDetailsStatus = 'succeeded';\n })\n .addCase(patchAssertionDetails.rejected, state => {\n state.patchAssertionDetailsStatus = 'failed';\n })\n .addCase(postAssertionRun.pending, state => {\n state.postAssertionRunStatus = 'loading';\n })\n .addCase(postAssertionRun.fulfilled, (state, action) => {\n state.postAssertionRunStatus = 'succeeded';\n })\n .addCase(postAssertionRun.rejected, state => {\n state.postAssertionRunStatus = 'failed';\n })\n .addCase(patchAssertionResultInclude.pending, state => {\n state.patchAssertionResultIncludeStatus = 'loading';\n })\n .addCase(patchAssertionResultInclude.fulfilled, (state, action) => {\n state.patchAssertionResultIncludeStatus = 'succeeded';\n })\n .addCase(patchAssertionResultInclude.rejected, state => {\n state.patchAssertionResultIncludeStatus = 'failed';\n })\n .addCase(patchAssertionResultExclude.pending, state => {\n state.patchAssertionResultExcludeStatus = 'loading';\n })\n .addCase(patchAssertionResultExclude.fulfilled, (state, action) => {\n state.patchAssertionResultExcludeStatus = 'succeeded';\n })\n .addCase(patchAssertionResultExclude.rejected, state => {\n state.patchAssertionResultExcludeStatus = 'failed';\n })\n .addCase(postAssertionReview.pending, state => {\n state.postAssertionReviewStatus = 'loading';\n })\n .addCase(postAssertionReview.fulfilled, (state, action) => {\n state.postAssertionReviewStatus = 'succeeded';\n })\n .addCase(postAssertionReview.rejected, state => {\n state.postAssertionReviewStatus = 'failed';\n })\n .addCase(postFrameworkEvidenceExport.pending, state => {\n state.postFrameworkEvidenceExportStatus = 'loading';\n })\n .addCase(postFrameworkEvidenceExport.fulfilled, (state, _action) => {\n state.postFrameworkEvidenceExportStatus = 'succeeded';\n })\n .addCase(postFrameworkEvidenceExport.rejected, state => {\n state.postFrameworkEvidenceExportStatus = 'failed';\n })\n .addCase(fetchEvidence.pending, state => {\n state.fetchEvidenceStatus = 'loading';\n })\n .addCase(fetchEvidence.fulfilled, (state, action) => {\n state.fetchEvidenceStatus = 'succeeded';\n state.evidence = action.payload;\n })\n .addCase(fetchEvidence.rejected, state => {\n state.fetchEvidenceStatus = 'failed';\n })\n .addCase(fetchComplianceControls.pending, state => {\n state.fetchControlsStatus = 'loading';\n })\n .addCase(fetchComplianceControls.fulfilled, (state, action) => {\n state.fetchControlsStatus = 'succeeded';\n\n state.controls = action.payload;\n state.selectedControlId = action.payload\n ? action.payload[0]?.id\n : undefined;\n })\n .addCase(fetchComplianceControls.rejected, state => {\n state.fetchControlsStatus = 'failed';\n })\n .addCase(removeVendorRequirement.pending, state => {\n state.removeVendorRequirementStatus = 'loading';\n })\n .addCase(removeVendorRequirement.fulfilled, (state, action) => {\n state.removeVendorRequirementStatus = 'succeeded';\n state.frameworkRequirementCategories.forEach(category => {\n category.frameworkRequirements.forEach(requirement => {\n if (requirement.vendorFrameworkRequirementId == action.payload) {\n requirement.vendorFrameworkRequirementId = null;\n requirement.status =\n FrameworkRequirementExtendedStatusEnum.Pending;\n }\n });\n });\n })\n .addCase(removeVendorRequirement.rejected, state => {\n state.removeVendorRequirementStatus = 'failed';\n })\n\n .addCase(postFrameworkRequestActivation.pending, state => {\n state.postFrameworkRequestStatus = 'loading';\n })\n .addCase(postFrameworkRequestActivation.fulfilled, (state, action) => {\n state.postFrameworkRequestStatus = 'succeeded';\n state.frameworks = state.frameworks.map(framework => {\n if (framework.frameworkTemplateId === action.payload.templateId) {\n return {\n ...framework,\n ...{ availability: FrameworkModelAvailabilityEnum.Requested },\n };\n } else {\n return framework;\n }\n });\n })\n .addCase(postFrameworkRequestActivation.rejected, state => {\n state.postFrameworkRequestStatus = 'failed';\n });\n },\n});\nexport const {\n clearToastMessage,\n createControlRequest,\n createControlSuccess,\n createControlError,\n fetchAssignableComplianceTasksRequest,\n fetchAssignableComplianceTasksSuccess,\n fetchAssignableComplianceTasksError,\n fetchCategoriesRequest,\n fetchCategoriesSuccess,\n fetchCategoriesError,\n fetchFrameworkPoliciesRequest,\n fetchFrameworkPoliciesSuccess,\n fetchFrameworkPoliciesError,\n fetchFrameworksRequest,\n fetchFrameworksSuccess,\n fetchFrameworksError,\n fetchTaskDetailsRequest,\n fetchTaskDetailsSuccess,\n fetchTaskDetailsError,\n fetchTasksRequest,\n fetchTasksSuccess,\n fetchControlExtendedSuccess,\n fetchTasksError,\n fetchRequirementsRequest,\n fetchRequirementsSuccess,\n fetchFrameworkGuidanceSuccess,\n createVendorRequirementSuccess,\n postTaskRequest,\n postTaskSuccess,\n postTaskError,\n patchTaskRequest,\n patchTaskSuccess,\n patchTaskError,\n patchControlRequest,\n patchControlSuccess,\n patchControlError,\n setControlFormModel,\n setControlFormModelValid,\n setSelectedCategoryId,\n setSelectedControlId,\n setSelectedTaskId,\n setSelectedFramework,\n setShowControlDrawer,\n fetchNotApplicableControlsError,\n fetchNotApplicableControlsRequest,\n fetchNotApplicableControlsSuccess,\n setTasksFilters,\n setCategoriesFilters,\n setShowTaskDrawer,\n cleanupTaskDetails,\n postTaskEvidenceRequest,\n postTaskEvidenceSuccess,\n postTaskEvidenceError,\n fetchEvidenceDownloadDetailsRequest,\n fetchEvidenceDownloadDetailsSuccess,\n fetchEvidenceDownloadDetailsError,\n deleteEvidenceRequest,\n deleteEvidenceSuccess,\n deleteEvidenceError,\n removeApplicableControl,\n removeNotApplicableControl,\n markControlApplicableRequest,\n markControlApplicableFailure,\n markControlApplicableSuccess,\n markControlNotApplicableFailure,\n markControlNotApplicableRequest,\n markControlNotApplicableSuccess,\n addNotApplicableControl,\n addApplicableControl,\n setEditControlMode,\n createPDFReportRequest,\n createPDFReportSuccess,\n createPDFReportError,\n setTempTask,\n removeControlRelation,\n postFrameworkRequest,\n postFrameworkSuccess,\n postFrameworkError,\n setEditTaskMode,\n setTempTaskInitialFieldsRequest,\n setControlsFilterAssigneeId,\n setControlsFilterFrameworkIdentifier,\n setControlsFilterStatus,\n setControlsFilterApplicable,\n setControlsSearch,\n updateTasksInTheEditControlFormSlice,\n isPostingReviewHistoryItemRequest,\n isPostingReviewHistoryItemSuccess,\n isPostingReviewHistoryItemFailure,\n updateControlReviewStatusSuccess,\n isFetchingReviewHistoryItemsRequest,\n isFetchingReviewHistoryItemsSuccess,\n isFetchingReviewHistoryItemsFailure,\n updateTaskInTheTree,\n updateHiddenEditTaskDrawerControls,\n fetchControlExtendedRequest,\n fetchControlExtendedError,\n setDrawerOnTop,\n setSelectedFrameworkId,\n cleanupCompliance,\n} = complianceSlice.actions;\n\nexport default complianceSlice.reducer;\n","import {\n ComplianceEditControlFormModel,\n ComplianceFilterPayload,\n DrawerType,\n} from '../../components/compliance/Types/complianceTypes';\nimport { ControlPageFilterStatus } from '../../features/compliance/controls/Controls/ControlsHeader';\nimport { MessageToastVariant } from '../../components/MessageToast/MessageToast';\n\nimport {\n ControlCategoryExtended,\n ControlExtended,\n ControlModelStatusEnum,\n DataRoomEntityModel,\n EvidenceModel,\n FrameworkGuidanceModel,\n FrameworkModel,\n FrameworkRequirementCategoryExtended,\n FrameworkRequirementCategoryModel,\n TaskExtended,\n TaskList,\n TaskModel,\n VendorDocument,\n} from '../../swagger';\nimport { ApiRequestStatus } from '../global/globalState';\n\nexport enum EditControlMode {\n Normal,\n MarkNotApplicable,\n View, // used in audits answer for evidence button\n}\n\nexport enum EditTaskMode {\n Normal,\n View, // used in audits answer for evidence button\n}\n\nexport interface ControlsFilters {\n frameworkIdentifier?: string;\n assigneeId?: string;\n status?: ControlPageFilterStatus;\n applicable?: string;\n}\n\nexport interface ComplianceState {\n assignableTasks: TaskModel[];\n categories?: ControlCategoryExtended[];\n controls?: ControlExtended[];\n controlsSearch?: string;\n drawerOnTop: DrawerType;\n fetchFrameworksError?: string;\n fetchCategoriesError?: string;\n fetchTasksError?: string;\n deleteEvidenceError?: string;\n fetchEvidenceDownloadDetailsError?: string;\n postTaskEvidenceError?: string;\n frameworks: FrameworkModel[];\n isFetchingAssignableTasks: boolean;\n isCreatingControl: boolean;\n isPatchingControl: boolean;\n frameworkPolicies: VendorDocument[];\n frameworkRequirementCategories: FrameworkRequirementCategoryExtended[];\n frameworkGuidances: Record;\n isFetchingFrameworkPolicies: boolean;\n isFetchingFrameworkRequirements: boolean;\n isFetchingFrameworks: boolean;\n isFetchingCategories: boolean;\n isFetchingTaskDetails: boolean;\n isFetchingEvidenceDownloadDetails: boolean;\n isFetchingTasks: boolean;\n isPatchingTask: boolean;\n isPostingTask: boolean;\n isFetchingControlDetails: boolean;\n isPostingTaskEvidence: boolean;\n isDeletingEvidence: boolean;\n isPDFReportRequest: boolean;\n isPDFReportError: string;\n selectedFrameworkId: string; // can be null, no localStorage\n selectedCategoryId: string;\n selectedControlId: string;\n selectedTaskId: string;\n editControlFormModel: ComplianceEditControlFormModel;\n tasks: TaskModel[];\n tasksMeta: TaskList['meta'];\n tempTask: TaskExtended;\n showControlDrawer: boolean;\n showTaskDrawer: boolean;\n toastMessage: string;\n notApplicableControls: ControlExtended[];\n isFetchingNotApplicableControls: boolean;\n fetchNotApplicableControlsError: string;\n tasksFilters: ComplianceFilterPayload;\n categoriesFilters: ComplianceFilterPayload;\n toastVariant: MessageToastVariant;\n controlIdBeingMarkedNotApplicable?: string;\n isMarkingControlApplicable: boolean;\n isMarkingControlNotApplicable: boolean;\n markingControlApplicableError?: string;\n markingControlNotApplicableError?: string;\n editControlMode: EditControlMode;\n isPostFrameworkRequest: boolean;\n isPostFrameworkError: string;\n editTaskMode: EditTaskMode;\n isSettingInitialTempTaskFields: boolean; // deprecated, owner not used\n controlsFilters: ControlsFilters;\n isPostingReviewHistoryItem: boolean;\n isFetchingReviewHistoryItems: boolean;\n patchControlCheckAssertionsStatus: ApiRequestStatus;\n fetchAssertionDetailsStatus: ApiRequestStatus;\n fetchAssertionDetailsSilentStatus: ApiRequestStatus;\n patchAssertionDetailsStatus: ApiRequestStatus;\n postAssertionRunStatus: ApiRequestStatus;\n patchAssertionResultExcludeStatus: ApiRequestStatus;\n patchAssertionResultIncludeStatus: ApiRequestStatus;\n postAssertionReviewStatus: ApiRequestStatus;\n postFrameworkEvidenceExportStatus: ApiRequestStatus;\n fetchEvidenceStatus: ApiRequestStatus;\n evidence: DataRoomEntityModel[];\n fetchControlsStatus: ApiRequestStatus;\n removeVendorRequirementStatus: ApiRequestStatus;\n postFrameworkRequestStatus: ApiRequestStatus;\n}\n","import { api } from '../../api/api';\nimport {\n AssertionsAssertionIdGetRequest,\n AssertionsAssertionIdPatchRequest,\n AssertionsAssertionIdRunPostRequest,\n ControlCreatePayloadControl,\n ControlExtended,\n ControlUpdatePayloadControl,\n EvidenceModel,\n FrameworkModel,\n FrameworkRequirementModel,\n ReviewHistoryItemCreatePayloadReviewHistoryItem,\n ReviewHistoryItemModel,\n TaskCreatePayloadTask,\n TaskExtended,\n TaskModel,\n TasksTaskIdEvidencesPostRequest,\n TaskUpdatePayloadTask,\n VendorDocument,\n TasksTaskIdAvailableAssertionsPatchRequest,\n VendorsVendorIdControlsGetRequest,\n VendorsVendorIdReviewHistoryItemsGetRelatedToTypeEnum,\n AssertionsAssertionIdCreateReviewPostRequest,\n AssertionResultsAssertionResultIdIncludePatchRequest,\n AssertionResultsAssertionResultIdExcludePatchRequest,\n AssertionExtendedFromJSON,\n FrameworksIdExportEvidencePostRequest,\n VendorsVendorIdItemCreationRequestsPostRequest,\n} from '../../swagger';\nimport { VoidThunk } from '../../types/voidThunk';\nimport { getErrorMessage, handleThunkError } from '../helpers/thunkHelpers';\nimport {\n addApplicableControl,\n addNotApplicableControl,\n createControlError,\n createControlRequest,\n createControlSuccess,\n createVendorRequirementSuccess,\n fetchAssignableComplianceTasksError,\n fetchAssignableComplianceTasksRequest,\n fetchAssignableComplianceTasksSuccess,\n fetchCategoriesError,\n fetchCategoriesRequest,\n fetchCategoriesSuccess,\n fetchFrameworksError,\n fetchFrameworksRequest,\n fetchFrameworksSuccess,\n fetchRequirementsRequest,\n fetchRequirementsSuccess,\n fetchNotApplicableControlsError,\n fetchNotApplicableControlsRequest,\n fetchNotApplicableControlsSuccess,\n fetchTaskDetailsError,\n fetchTaskDetailsRequest,\n fetchTaskDetailsSuccess,\n fetchTasksError,\n fetchTasksRequest,\n fetchTasksSuccess,\n markControlApplicableFailure,\n markControlApplicableRequest,\n markControlApplicableSuccess,\n markControlNotApplicableFailure,\n markControlNotApplicableRequest,\n markControlNotApplicableSuccess,\n patchControlError,\n patchControlRequest,\n patchControlSuccess,\n patchTaskError,\n patchTaskRequest,\n patchTaskSuccess,\n postTaskError,\n postTaskRequest,\n postTaskSuccess,\n postTaskEvidenceError,\n postTaskEvidenceRequest,\n postTaskEvidenceSuccess,\n fetchControlExtendedSuccess,\n fetchEvidenceDownloadDetailsRequest,\n fetchEvidenceDownloadDetailsSuccess,\n fetchEvidenceDownloadDetailsError,\n deleteEvidenceRequest,\n deleteEvidenceSuccess,\n deleteEvidenceError,\n fetchFrameworkPoliciesRequest,\n fetchFrameworkPoliciesSuccess,\n fetchFrameworkPoliciesError,\n removeApplicableControl,\n removeNotApplicableControl,\n createPDFReportRequest,\n createPDFReportError,\n createPDFReportSuccess,\n setTempTask,\n setEditControlMode,\n fetchFrameworkGuidanceSuccess,\n isPostingReviewHistoryItemRequest,\n isPostingReviewHistoryItemSuccess,\n isPostingReviewHistoryItemFailure,\n isFetchingReviewHistoryItemsFailure,\n isFetchingReviewHistoryItemsSuccess,\n isFetchingReviewHistoryItemsRequest,\n fetchControlExtendedRequest,\n fetchControlExtendedError,\n updateTaskInTheTree,\n} from './complianceSlice';\nimport { setPdfPreviewUrl } from '../global/globalSlice';\nimport { getRequest } from '../../functions/getRequest';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { rawRequest } from '../../features/calendar/store/calendarThunksApiHelpers';\nimport { ApplicationState } from '../../types/applicationState';\n\nexport const fetchComplianceFrameworks =\n (\n vendorId: string,\n onSuccess?: (id: FrameworkModel['id']) => void,\n includeStats?: boolean\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchFrameworksRequest());\n const response = await api().vendorsIdFrameworksGet({\n id: vendorId,\n includeStats,\n });\n dispatch(fetchFrameworksSuccess(response as FrameworkModel[]));\n onSuccess && onSuccess(response[0]?.id);\n } catch (err) {\n if (err instanceof Response) {\n if (err.status === 403) return;\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching compliance frameworks. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchFrameworksError(apiErrorMessage));\n }\n }\n };\n\nexport const fetchComplianceFrameworkPolicies =\n (frameworkId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchFrameworkPoliciesRequest());\n const response = await api().frameworksIdPoliciesGet({ id: frameworkId });\n dispatch(fetchFrameworkPoliciesSuccess(response as VendorDocument[]));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching compliance frameworks. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchFrameworkPoliciesError(apiErrorMessage));\n }\n }\n };\n\nexport const fetchComplianceTasks =\n ({\n vendorId,\n frameworkId,\n applicable,\n status,\n name,\n includeStats,\n }: {\n vendorId: string;\n frameworkId?: string;\n applicable?: boolean;\n name?: string;\n status?: string;\n includeStats?: boolean;\n }): VoidThunk =>\n async dispatch => {\n try {\n if (!vendorId) {\n dispatch(\n fetchTasksError('Insufficient parameter values for API call.')\n );\n return;\n }\n dispatch(fetchTasksRequest());\n const response = await api().vendorsVendorIdTasksGet({\n vendorId,\n frameworkId,\n applicable,\n name,\n status: status ? [status] : null,\n includeStats,\n });\n dispatch(fetchTasksSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching compliance tasks. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchTasksError(apiErrorMessage));\n }\n }\n };\n\nexport const fetchControlExtended =\n (controlId: string): VoidThunk =>\n async dispatch => {\n try {\n // cause spinner in checks list\n // dispatch(fetchTasksRequest());\n dispatch(fetchControlExtendedRequest());\n const response = await api().controlsControlIdGet({ controlId });\n dispatch(fetchControlExtendedSuccess(response));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching control details. Please try again or contact support.'\n );\n dispatch(fetchControlExtendedError(apiErrorMessage));\n }\n };\n\nexport const fetchAssignableComplianceTasks =\n (vendorId: string, notUsedInFrameworksIds?: string[] | null): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchAssignableComplianceTasksRequest());\n const response = await api().vendorsVendorIdTasksGet({\n vendorId,\n notUsedInFrameworksIds,\n });\n dispatch(fetchAssignableComplianceTasksSuccess(response['tasks']));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching assignable compliance tasks for a compliance control. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchAssignableComplianceTasksError(apiErrorMessage));\n }\n }\n };\n\nexport const postComplianceTask =\n ({\n vendorId,\n task,\n }: {\n vendorId: string;\n task: TaskCreatePayloadTask;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(postTaskRequest());\n const response = await api().vendorsVendorIdTasksPost({\n vendorId,\n body: {\n task,\n },\n });\n dispatch(postTaskSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while creating a compliance task. Please try again or contact support.'\n );\n console.log(err);\n dispatch(postTaskError(apiErrorMessage));\n }\n }\n };\n\nexport const patchComplianceTask =\n ({\n taskId,\n task,\n onSuccess = () => {},\n }: {\n taskId: string;\n task: TaskUpdatePayloadTask;\n onSuccess?(response: TaskModel): void;\n }): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor.id;\n dispatch(patchTaskRequest());\n const response = await api().tasksTaskIdPatch({\n taskId,\n body: {\n task,\n },\n });\n dispatch(patchTaskSuccess(response));\n dispatch(updateTaskInTheTree(response));\n onSuccess(response);\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while updating a compliance task. Please try again or contact support.'\n );\n console.log(err);\n dispatch(patchTaskError(apiErrorMessage));\n }\n }\n };\n\nexport const fetchComplianceControls = createAsyncThunk(\n 'compliance/fetchComplianceControls',\n async (params: VendorsVendorIdControlsGetRequest, { dispatch }) => {\n try {\n if (!params.vendorId) {\n throw new Error('Insufficient parameter values for API call.');\n }\n\n const response = await api().vendorsVendorIdControlsGet(params);\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred on fetching compliance controls. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\n// TODO: this will be removed\nexport const fetchComplianceReportPdf =\n (requestParameters: any): VoidThunk =>\n async dispatch => {\n alert('TODO SoA reports ticket');\n try {\n // TODO: investigate issue on the backend rswag:\n // It makes valid request but generate incorrect empty response in DefaultApi.ts:\n // runtime.VoidApiResponse(response);\n dispatch(createPDFReportRequest());\n const response = await getRequest(\n `/api/v1/frameworks/${requestParameters.id}/statement_of_applicability`\n );\n const convertedData = await response.blob();\n const url = URL.createObjectURL(convertedData);\n dispatch(createPDFReportSuccess());\n dispatch(setPdfPreviewUrl(url));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching compliance report pdf. Please try again or contact support.'\n );\n console.log(err);\n dispatch(createPDFReportError(apiErrorMessage));\n }\n }\n };\n\nexport const fetchNotApplicableComplianceControls =\n (vendorId: string, frameworkId?: string): VoidThunk =>\n async dispatch => {\n try {\n if (!vendorId || !frameworkId) {\n dispatch(\n fetchNotApplicableControlsError(\n 'Insufficient parameter values for API call.'\n )\n );\n return;\n }\n dispatch(fetchNotApplicableControlsRequest());\n const response = await api().vendorsVendorIdControlsGet({\n vendorId: vendorId,\n frameworkId: frameworkId,\n queryApplicable: 'false',\n });\n dispatch(fetchNotApplicableControlsSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching compliance controls. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchNotApplicableControlsError(apiErrorMessage));\n }\n }\n };\n\nexport const fetchComplianceCategories =\n (vendorId: string, frameworkId: string): VoidThunk =>\n async dispatch => {\n try {\n if (!vendorId) {\n dispatch(\n fetchCategoriesError('Insufficient parameter values for API call.')\n );\n return;\n }\n dispatch(fetchCategoriesRequest());\n const response = await api().vendorsVendorIdControlCategoriesGet({\n vendorId,\n frameworkId,\n });\n dispatch(fetchCategoriesSuccess(response));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching compliance framework categories. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchCategoriesError(apiErrorMessage));\n }\n };\n\nexport const createComplianceControl =\n (vendorId: string, control: ControlCreatePayloadControl): VoidThunk =>\n async dispatch => {\n try {\n if (!vendorId || !control) {\n dispatch(\n fetchTasksError('Insufficient parameter values for API call.')\n );\n return;\n }\n dispatch(createControlRequest());\n const response = await api().vendorsVendorIdControlsPost({\n vendorId,\n body: { control },\n });\n dispatch(createControlSuccess(response as ControlExtended));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while creating compliance controls. Please try again or contact support.'\n );\n console.log(err);\n dispatch(createControlError(apiErrorMessage));\n }\n }\n };\n\nexport const patchComplianceControl =\n (\n controlId: string,\n control: ControlUpdatePayloadControl,\n onSuccess?: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n if (!controlId || !control) {\n dispatch(\n fetchTasksError('Insufficient parameter values for API call.')\n );\n return;\n }\n dispatch(patchControlRequest());\n const response = await api().controlsControlIdPatch({\n controlId,\n body: { control },\n });\n onSuccess && onSuccess();\n dispatch(patchControlSuccess(response as ControlExtended));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while patching compliance controls. Please try again or contact support.'\n );\n console.log(err);\n dispatch(patchControlError(apiErrorMessage));\n }\n }\n };\n\nexport const createTaskEvidence =\n (params: TasksTaskIdEvidencesPostRequest): VoidThunk =>\n async dispatch => {\n try {\n dispatch(postTaskEvidenceRequest());\n const response = await api().tasksTaskIdEvidencesPost(params);\n dispatch(postTaskEvidenceSuccess(response as EvidenceModel));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while creating evidence. Please try again or contact support.'\n );\n console.log(err);\n dispatch(postTaskEvidenceError(apiErrorMessage));\n }\n }\n };\n\n// deprecated\n// export const tempTaskWithDefaultOwner = (\n// defaultAssigneeId: VendorUser['id'],\n// task: TaskModel\n// ) => {\n// return {\n// ...task,\n// assignee: { id: task?.assignee?.id || defaultAssigneeId },\n// };\n// };\n\n// On both create/edit we set tempTask fields (name, description, etc) + additional logic:\n// On create - always assign default owner\n// On edit - assign default owner after fetchTaskDetails thunk finished and not a view mode\n\n// deprecated - no owner for now\n// export const setTempTaskInitialFields =\n// (response: TaskModel): VoidThunk =>\n// async (dispatch, getState) => {\n// dispatch(setTempTaskInitialFieldsRequest(true));\n// const defaultAssigneeId = selectCurrentVendorUserId(getState());\n// const tempTask = getState().compliance.tempTask;\n// const selectedTask = {\n// ...tempTask,\n// ...response,\n// };\n// const isViewMode = selectIsViewModeTaskDrawer(getState());\n\n// const payload = isViewMode\n// ? selectedTask\n// : tempTaskWithDefaultOwner(defaultAssigneeId, selectedTask);\n// dispatch(setTempTask(payload));\n// dispatch(setTempTaskInitialFieldsRequest(false));\n// };\n\nexport const fetchTaskDetails =\n (taskId: string, onSuccess?: (response: TaskExtended) => void): VoidThunk =>\n async dispatch => {\n try {\n if (!taskId) {\n dispatch(\n fetchTaskDetailsError('Insufficient parameter values for API call.')\n );\n return;\n }\n dispatch(fetchTaskDetailsRequest());\n const response = await api().tasksTaskIdGet({\n taskId,\n });\n dispatch(setTempTask(response));\n dispatch(fetchTaskDetailsSuccess());\n // deprecated\n // dispatch(setTempTaskInitialFields(response));\n onSuccess && onSuccess(response);\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching Task details. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchTaskDetailsError(apiErrorMessage));\n }\n }\n };\n\n// Mark not application consists of 2 steps:\n// 1) Click meatball menu in the tree inside categories and mark control\n// 2) Save reason for exclusion\n\n// 1 step\nexport const markControlNotApplicable =\n (categoryId: string, controlId: string): VoidThunk =>\n async (dispatch, getState) => {\n dispatch(markControlNotApplicableRequest(controlId));\n try {\n const category = getState().compliance.categories.find(\n c => c.id === categoryId\n );\n if (!category) return;\n const controlIndex = category.controls.findIndex(c => c.id === controlId);\n const control = category.controls.find(c => c.id === controlId);\n if (!control) return;\n dispatch(removeApplicableControl({ categoryId, controlId }));\n\n const payload = { applicable: false, orderIndex: controlIndex };\n const newControl = { ...control, ...payload };\n\n dispatch(addNotApplicableControl(newControl));\n dispatch(markControlNotApplicableSuccess());\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while marking the control not applicable. Please try again or contact support.'\n );\n console.log(err);\n dispatch(markControlNotApplicableFailure(apiErrorMessage));\n }\n }\n };\n// 2 step\nexport const patchReasonForExclusion =\n (controlId: string, reasonForExclusion: string): VoidThunk =>\n async dispatch => {\n dispatch(markControlNotApplicableRequest(controlId));\n try {\n const response = await api().controlsControlIdStatusPatch({\n controlId,\n body: { control: { applicable: false, reasonForExclusion } },\n });\n dispatch(patchControlSuccess(response));\n dispatch(markControlNotApplicableSuccess(response));\n dispatch(setEditControlMode(null));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while saving reason for exclusion. Please try again or contact support.'\n );\n console.log(err);\n dispatch(markControlNotApplicableFailure(apiErrorMessage));\n }\n }\n };\n\nexport const markControlApplicable =\n (controlId: string): VoidThunk =>\n async (dispatch, getState) => {\n dispatch(markControlApplicableRequest());\n try {\n const control = getState().compliance.notApplicableControls.find(\n c => c.id === controlId\n );\n if (!control) return;\n dispatch(removeNotApplicableControl({ controlId }));\n dispatch(setEditControlMode(null));\n\n const response = await api().controlsControlIdStatusPatch({\n controlId,\n body: {\n control: {\n applicable: true,\n },\n },\n });\n\n dispatch(addApplicableControl(response));\n dispatch(markControlApplicableSuccess());\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while marking the control applicable. Please try again or contact support.'\n );\n console.log(err);\n dispatch(markControlApplicableFailure(apiErrorMessage));\n }\n }\n };\n\nexport const fetchEvidenceDownloadDetails =\n (evidenceId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchEvidenceDownloadDetailsRequest());\n const response = await api().evidencesEvidenceIdDownloadGet({\n evidenceId,\n });\n dispatch(fetchEvidenceDownloadDetailsSuccess());\n window.location.href = response.attachmentUrl;\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching Evidence download link. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchEvidenceDownloadDetailsError(apiErrorMessage));\n }\n }\n };\n\nexport const deleteEvidence =\n (evidenceId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deleteEvidenceRequest());\n await api().evidencesEvidenceIdDelete({ evidenceId });\n dispatch(deleteEvidenceSuccess(evidenceId));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while deleting Evidence. Please try again or contact support.'\n );\n console.log(err);\n dispatch(deleteEvidenceError(apiErrorMessage));\n }\n }\n };\n\nexport const fetchRequirementCategories =\n (frameworkId: FrameworkModel['id']): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchRequirementsRequest());\n const response =\n await api().frameworksFrameworkIdFrameworkRequirementCategoriesGet({\n frameworkId,\n });\n dispatch(fetchRequirementsSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching Requirements. Please try again or contact support.'\n );\n console.log(err);\n }\n }\n };\n\nexport const createVendorRequirement =\n (frameworkRequirementId: FrameworkRequirementModel['id']): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor.id;\n const result = await api().vendorsVendorIdVendorFrameworkRequirementsPost(\n {\n vendorId,\n body: {\n vendorFrameworkRequirement: { frameworkRequirementId },\n },\n }\n );\n dispatch(createVendorRequirementSuccess(result));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching Requirements. Please try again or contact support.'\n );\n console.log(err);\n }\n }\n };\nexport const removeVendorRequirement = createAsyncThunk(\n 'compliance/removeVendorRequirement',\n async (\n id: FrameworkRequirementModel['vendorFrameworkRequirementId'],\n { dispatch }\n ) => {\n try {\n await api().vendorFrameworkRequirementsIdDelete({\n id,\n });\n return id;\n } catch (error) {\n await handleThunkError(\n 'An error occurred on removing vendor framework requirement. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchFrameworkGuidance =\n (id: FrameworkModel['identifier']): VoidThunk =>\n async dispatch => {\n try {\n const response = await api().frameworkGuidancesIdGet({\n id,\n });\n dispatch(fetchFrameworkGuidanceSuccess([id, response]));\n } catch (err) {\n if (err instanceof Response) {\n if (err.status == 404) {\n dispatch(\n fetchFrameworkGuidanceSuccess([\n id,\n {\n content: 'Guidance not found. Please contact support.',\n },\n ])\n );\n return;\n }\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching Guidance. Please try again or contact support.'\n );\n console.log(err);\n }\n }\n };\n\nexport const postReviewHistoryItem =\n (\n reviewHistoryItem: ReviewHistoryItemCreatePayloadReviewHistoryItem,\n onSuccess?: (historyItem: ReviewHistoryItemModel) => void\n ): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor.id;\n dispatch(isPostingReviewHistoryItemRequest());\n const historyItem = await api().vendorsVendorIdReviewHistoryItemsPost({\n vendorId,\n body: { reviewHistoryItem },\n });\n dispatch(isPostingReviewHistoryItemSuccess());\n onSuccess && onSuccess(historyItem);\n } catch (err) {\n dispatch(isPostingReviewHistoryItemFailure());\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while adding review comment. Please try again or contact support.'\n );\n console.log(err);\n }\n }\n };\n\nexport const fetchReviewHistoryItems =\n ({\n relatedToId,\n relatedToType,\n onSuccess,\n }: {\n relatedToId: string;\n relatedToType: VendorsVendorIdReviewHistoryItemsGetRelatedToTypeEnum;\n onSuccess: (items: ReviewHistoryItemModel[]) => void;\n }): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor.id;\n dispatch(isFetchingReviewHistoryItemsRequest());\n const response = await api().vendorsVendorIdReviewHistoryItemsGet({\n vendorId,\n relatedToId,\n relatedToType,\n });\n onSuccess(response);\n dispatch(isFetchingReviewHistoryItemsSuccess());\n } catch (err) {\n dispatch(isFetchingReviewHistoryItemsFailure());\n if (err instanceof Response) {\n if (err.status == 404) return;\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching review history items. Please try again or contact support.'\n );\n console.log(err);\n }\n }\n };\n\nexport const patchControlCheckAssertions = createAsyncThunk(\n 'compliance/patchControlCheckAssertions',\n async (params: TasksTaskIdAvailableAssertionsPatchRequest, { dispatch }) => {\n try {\n await api().tasksTaskIdAvailableAssertionsPatchRaw(params);\n } catch (error) {\n await handleThunkError(\n 'An error occurred while patching control check assertions. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchAssertionDetails = createAsyncThunk(\n 'compliance/fetchAssertionDetails',\n async (params: AssertionsAssertionIdGetRequest, { dispatch }) => {\n try {\n const result = await api().assertionsAssertionIdGet(params);\n return result;\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching assertion details. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\n// no loading spinner. For example fetch status of assertion details\nexport const fetchAssertionDetailsSilent = createAsyncThunk(\n 'compliance/fetchAssertionDetailsSilent',\n async (params: AssertionsAssertionIdGetRequest, { dispatch }) => {\n try {\n const result = await api().assertionsAssertionIdGet(params);\n return result;\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching assertion details. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const patchAssertionDetails = createAsyncThunk(\n 'compliance/patchAssertionDetails',\n async (params: AssertionsAssertionIdPatchRequest, { dispatch }) => {\n try {\n return await api().assertionsAssertionIdPatch(params);\n } catch (error) {\n await handleThunkError(\n 'An error occurred while patching assertion details. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const postAssertionRun = createAsyncThunk(\n 'compliance/postAssertionRun',\n async (params: AssertionsAssertionIdRunPostRequest, { dispatch }) => {\n try {\n const assertion = await api().assertionsAssertionIdRunPost(params);\n return assertion;\n } catch (error) {\n await handleThunkError(\n 'An error occurred on creating assertion run Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const patchAssertionResultInclude = createAsyncThunk(\n 'compliance/patchAssertionResultInclude',\n async (\n params: AssertionResultsAssertionResultIdIncludePatchRequest,\n { dispatch }\n ) => {\n try {\n await api().assertionResultsAssertionResultIdIncludePatch(params);\n } catch (error) {\n await handleThunkError(\n 'An error occurred on patching include assertion result Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const patchAssertionResultExclude = createAsyncThunk(\n 'compliance/patchAssertionResultExclude',\n async (\n params: AssertionResultsAssertionResultIdExcludePatchRequest,\n { dispatch }\n ) => {\n try {\n await api().assertionResultsAssertionResultIdExcludePatch(params);\n } catch (error) {\n await handleThunkError(\n 'An error occurred on patching exclude assertion result Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nconst buildAssertionData = (\n payload: AssertionsAssertionIdCreateReviewPostRequest\n): FormData => {\n const formData = new FormData();\n const root = 'assertion_review';\n formData.append(`${root}[status]`, payload.assertionReviewStatus);\n formData.append(`${root}[comment]`, payload.assertionReviewComment ?? '');\n\n if (payload.assertionReviewEvidences) {\n payload.assertionReviewEvidences.forEach(file => {\n formData.append(`${root}[evidences][]`, file);\n });\n }\n return formData;\n};\n\nexport const postAssertionReview = createAsyncThunk(\n 'compliance/postAssertionReview',\n async (\n params: AssertionsAssertionIdCreateReviewPostRequest,\n { dispatch }\n ) => {\n try {\n const formData = buildAssertionData(params);\n const rawResponse = await rawRequest(\n `/api/v1/assertions/${params.assertionId}/create_review`,\n {\n method: 'POST',\n body: formData,\n }\n );\n\n if (rawResponse.status >= 200 && rawResponse.status < 300) {\n const response = AssertionExtendedFromJSON(await rawResponse.json());\n return response;\n } else {\n throw rawResponse;\n }\n } catch (error) {\n await handleThunkError(\n 'An error occurred on posting assertion review. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const postFrameworkEvidenceExport = createAsyncThunk(\n 'compliance/postFrameworkEvidenceExport',\n async (params: FrameworksIdExportEvidencePostRequest, { dispatch }) => {\n try {\n await api().frameworksIdExportEvidencePost(params);\n } catch (error) {\n await handleThunkError(\n 'An error occurred on posting framework evidence. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchEvidence = createAsyncThunk(\n 'compliance/fetchEvidence',\n async (params, { dispatch, getState }) => {\n try {\n const vendorId = (getState() as ApplicationState).vendors.currentVendor\n .id;\n return await api().vendorsVendorIdDataRoomEvidenceGet({ vendorId });\n } catch (error) {\n await handleThunkError(\n 'An error occurred on fetching evidence. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const postFrameworkRequestActivation = createAsyncThunk(\n 'compliance/postFrameworkRequest',\n async (\n params: VendorsVendorIdItemCreationRequestsPostRequest,\n { dispatch }\n ) => {\n try {\n await api().vendorsVendorIdItemCreationRequestsPost(params);\n return { templateId: params.body.itemCreationRequest.templateId };\n } catch (error) {\n await handleThunkError(\n 'An error occurred on posting framework request. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { EntityDetails } from '../../components/dataRoom/DataRoomEntityMeatballMenu/DataRoomEntityMeatballMenu';\nimport {\n FolderModel,\n getFlatFoldersList,\n} from '../../functions/getFlatFoldersList';\nimport { DataRoomEntityModel } from '../../swagger';\nimport { DataRoomState } from './dataRoomState';\nimport { DataRoomMoveEntitiesTabsInfo } from '../../components/dataRoom/DataRoomMoveEntitiesModal/DataRoomMoveEntitiesModalTabsInfo';\n\nconst dataRoomSlice = createSlice({\n initialState: {\n isFetchingFiles: false,\n isFetchingAllFiles: false,\n isUploadingFile: false,\n allFiles: undefined,\n files: [],\n folders: [],\n cursor: [],\n currentEntityIdProcessing: undefined,\n showDeleteModal: false,\n entityToEdit: [],\n entitiesToMove: [],\n entitiesToDelete: [],\n showMoveEntitiesModal: false,\n showEditEntityModal: false,\n selectedModalTabId: undefined,\n } as unknown as DataRoomState,\n name: 'dataRoomSlice',\n reducers: {\n createFolderRequest: state => {\n state.isCreatingFolder = true;\n },\n createFolderSuccess: state => {\n state.isCreatingFolder = false;\n state.showEditEntityModal = false;\n },\n createFolderError: state => {\n state.isCreatingFolder = false;\n },\n dataRoomShowDeleteModal: state => {\n state.showDeleteModal = true;\n },\n dataRoomShowMoveModal: state => {\n state.showMoveEntitiesModal = true;\n state.selectedModalTabId = DataRoomMoveEntitiesTabsInfo.selectFolder.id;\n },\n dataRoomShowEditEntityModal: state => {\n state.showEditEntityModal = true;\n },\n deleteEntitiesRequest: (state, action: PayloadAction) => {\n state.currentEntityIdProcessing = action.payload[0]; // We only support single action, bulk actions to be added\n },\n deleteEntitiesSuccess: (state, action: PayloadAction) => {\n state.currentEntityIdProcessing = undefined;\n state.files = state.files.filter(f => !action.payload.includes(f.id));\n },\n updateEntityRequest: (state, action: PayloadAction) => {\n state.currentEntityIdProcessing = action.payload[0]; // We only support single action, bulk actions to be added\n },\n updateEntitySuccess: (state, action: PayloadAction) => {\n state.currentEntityIdProcessing = undefined;\n state.showEditEntityModal = false;\n },\n updateEntityError: state => {\n state.currentEntityIdProcessing = undefined;\n },\n moveEntitiesRequest: (state, action: PayloadAction) => {\n state.currentEntityIdProcessing = action.payload[0]; // We only support single action, bulk actions to be added\n },\n uploadToFolderRequest: (state, action: PayloadAction) => {\n state.currentEntityIdProcessing = action.payload[0]; // We only support single action, bulk actions to be added\n },\n moveEntitiesSuccess: (state, action: PayloadAction) => {\n state.currentEntityIdProcessing = undefined;\n state.showMoveEntitiesModal = false;\n },\n moveEntitiesError: state => {\n // contains Id of entity moving failed to\n state.currentEntityIdProcessing = undefined;\n },\n deleteEntitiesError: state => {\n state.currentEntityIdProcessing = undefined;\n },\n fetchFilesRequest: state => {\n state.isFetchingFiles = true;\n },\n fetchFilesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingFiles = false;\n state.files = action.payload;\n },\n fetchFilesError: state => {\n state.isFetchingFiles = false;\n },\n fetchEntitiesTreeRequest: state => {\n state.isFetchingEntitiesTree = true;\n },\n fetchEntitiesTreeSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingEntitiesTree = false;\n state.entitiesTree = action.payload;\n const list: FolderModel[] = [];\n getFlatFoldersList(action.payload, list);\n state.folders = list;\n },\n fetchEntitiesTreeError: state => {\n state.isFetchingEntitiesTree = false;\n },\n getFileDetailsRequest: (state, action: PayloadAction) => {\n state.currentEntityIdProcessing = action.payload;\n },\n getFileDetailsSuccess: state => {\n state.currentEntityIdProcessing = undefined;\n },\n getFileDetailsError: state => {\n state.currentEntityIdProcessing = undefined;\n },\n setCursor: (state: DataRoomState, action: PayloadAction) => {\n state.cursor = action.payload;\n },\n setEntityToEdit: (\n state: DataRoomState,\n action: PayloadAction\n ) => {\n state.entityToEdit = action.payload;\n },\n setEntitiesToMove: (\n state: DataRoomState,\n action: PayloadAction\n ) => {\n state.entitiesToMove = action.payload;\n },\n setEntitiesToDelete: (state, action: PayloadAction) => {\n state.entitiesToDelete = action.payload;\n },\n setShowEditEntityModal: (state, action: PayloadAction) => {\n state.showEditEntityModal = action.payload;\n },\n hideModals: state => {\n state.showMoveEntitiesModal = false;\n state.showEditEntityModal = false;\n },\n uploadFileRequest: (state, action: PayloadAction) => {\n state.isUploadingFile = true;\n state.currentEntityIdProcessing = action.payload;\n },\n uploadFileSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isUploadingFile = false;\n state.currentEntityIdProcessing = undefined;\n },\n uploadFileError: state => {\n state.isUploadingFile = false;\n state.currentEntityIdProcessing = undefined;\n },\n selectModalTab: (state, action: PayloadAction) => {\n state.selectedModalTabId = action.payload;\n },\n },\n});\n\nexport const {\n createFolderRequest,\n createFolderSuccess,\n createFolderError,\n dataRoomShowDeleteModal,\n dataRoomShowMoveModal,\n dataRoomShowEditEntityModal,\n deleteEntitiesRequest,\n deleteEntitiesSuccess,\n deleteEntitiesError,\n moveEntitiesRequest,\n moveEntitiesSuccess,\n moveEntitiesError,\n updateEntityRequest,\n updateEntitySuccess,\n updateEntityError,\n fetchFilesSuccess,\n fetchFilesRequest,\n fetchFilesError,\n fetchEntitiesTreeSuccess,\n fetchEntitiesTreeRequest,\n fetchEntitiesTreeError,\n getFileDetailsRequest,\n getFileDetailsSuccess,\n getFileDetailsError,\n setCursor,\n setEntityToEdit,\n setEntitiesToMove,\n setEntitiesToDelete,\n setShowEditEntityModal,\n hideModals,\n uploadFileRequest,\n uploadFileSuccess,\n uploadFileError,\n selectModalTab,\n uploadToFolderRequest,\n} = dataRoomSlice.actions;\n\nexport default dataRoomSlice.reducer;\n","import { api } from '../../api/api';\nimport {\n DataRoomEntityFolderCreatePayloadFolder,\n DataRoomEntityModel,\n DataRoomEntityModelTypeEnum,\n} from '../../swagger';\nimport { VoidThunk } from '../../types/voidThunk';\nimport { showGlobalToast } from '../global/globalSlice';\nimport { getErrorMessage } from '../helpers/thunkHelpers';\nimport {\n fetchFilesRequest,\n fetchFilesSuccess,\n fetchFilesError,\n fetchEntitiesTreeRequest,\n fetchEntitiesTreeSuccess,\n fetchEntitiesTreeError,\n createFolderRequest,\n createFolderSuccess,\n createFolderError,\n getFileDetailsRequest,\n getFileDetailsSuccess,\n getFileDetailsError,\n uploadFileRequest,\n uploadFileSuccess,\n uploadFileError,\n deleteEntitiesRequest,\n deleteEntitiesSuccess,\n deleteEntitiesError,\n moveEntitiesRequest,\n moveEntitiesSuccess,\n moveEntitiesError,\n updateEntityRequest,\n updateEntitySuccess,\n updateEntityError,\n} from './dataRoomSlice';\n\nexport const fetchFiles =\n (vendorId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchFilesRequest());\n const response = await api().vendorsVendorIdDataRoomEntitiesGet({\n vendorId,\n });\n dispatch(fetchFilesSuccess(response as DataRoomEntityModel[]));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching files. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchFilesError());\n dispatch(showGlobalToast(apiErrorMessage));\n }\n }\n };\n\nexport const fetchEntitiesTree =\n (\n vendorId: string,\n type?: DataRoomEntityModelTypeEnum,\n onSuccess?: (tree: DataRoomEntityModel) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchEntitiesTreeRequest());\n const response = await api().vendorsVendorIdDataRoomEntitiesTreeGet({\n vendorId,\n type,\n });\n dispatch(fetchEntitiesTreeSuccess(response as DataRoomEntityModel));\n onSuccess && onSuccess(response);\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching files. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchEntitiesTreeError());\n dispatch(showGlobalToast(apiErrorMessage));\n }\n }\n };\n\nexport const createFolder =\n (\n vendorId: string,\n folder: DataRoomEntityFolderCreatePayloadFolder\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(createFolderRequest());\n const response = await api().vendorsVendorIdDataRoomFoldersPost({\n vendorId,\n body: { folder },\n });\n dispatch(createFolderSuccess());\n dispatch(fetchEntitiesTree(vendorId));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching files. Please try again or contact support.'\n );\n console.log(err);\n dispatch(createFolderError());\n dispatch(showGlobalToast(apiErrorMessage));\n }\n }\n };\n\nexport const downloadFile =\n (fileId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(getFileDetailsRequest(fileId));\n const response = await api().dataRoomFilesFileIdDownloadGet({\n fileId,\n });\n dispatch(getFileDetailsSuccess());\n window.open(response.attachmentUrl, '_blank');\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching file details. Please try again or contact support.'\n );\n console.log(err);\n dispatch(getFileDetailsError());\n dispatch(showGlobalToast(apiErrorMessage));\n }\n }\n };\n\nexport const uploadFile =\n (\n vendorId: string,\n parentFolderId: string,\n files0Attachment: Blob,\n files0Filename: string\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(uploadFileRequest(parentFolderId));\n const response = await api().vendorsVendorIdDataRoomFilesPost({\n vendorId,\n parentFolderId,\n files0Attachment,\n files0Filename,\n });\n dispatch(uploadFileSuccess(response as DataRoomEntityModel[]));\n dispatch(fetchEntitiesTree(vendorId));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching files. Please try again or contact support.'\n );\n console.log(err);\n dispatch(uploadFileError());\n dispatch(showGlobalToast(apiErrorMessage));\n }\n }\n };\n\nexport const deleteEntities =\n (\n vendorId: string,\n entitiesIds: string[],\n canManageRootTree: boolean\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deleteEntitiesRequest(entitiesIds));\n await api().vendorsVendorIdDataRoomEntitiesDelete({\n vendorId,\n body: { entitiesIds },\n });\n dispatch(deleteEntitiesSuccess(entitiesIds));\n if (canManageRootTree) {\n dispatch(fetchEntitiesTree(vendorId));\n }\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while deleting an entity. Please try again or contact support.'\n );\n console.log(err);\n dispatch(deleteEntitiesError());\n dispatch(showGlobalToast(apiErrorMessage));\n }\n }\n };\n\nexport const updateEntity =\n (\n vendorId: string,\n entityId: string,\n filename: string,\n description = '',\n canManageRootTree: boolean\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(updateEntityRequest([entityId]));\n await api().dataRoomEntitiesEntityIdPatch({\n entityId,\n body: { entity: { filename, description } },\n });\n\n dispatch(updateEntitySuccess([entityId]));\n dispatch(fetchFiles(vendorId));\n if (canManageRootTree) {\n dispatch(fetchEntitiesTree(vendorId));\n }\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while moving entities. Please try again or contact support.'\n );\n console.log(err);\n dispatch(updateEntityError());\n dispatch(showGlobalToast(apiErrorMessage));\n }\n }\n };\n\nexport const moveEntities =\n (\n vendorId: string,\n parentEntityId: string,\n entitiesIds: string[]\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(moveEntitiesRequest([parentEntityId]));\n await api().vendorsVendorIdDataRoomEntitiesMovePatch({\n vendorId,\n body: { parentEntityId, entitiesIds },\n });\n dispatch(moveEntitiesSuccess([parentEntityId]));\n // TODO: replace fetch with optimistic client side store mutations\n dispatch(fetchEntitiesTree(vendorId));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while moving entities. Please try again or contact support.'\n );\n console.log(err);\n dispatch(moveEntitiesError());\n dispatch(showGlobalToast(apiErrorMessage));\n }\n }\n };\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { rotateDirection } from '../../functions/rotateDirection';\nimport {\n AgreementModel,\n Assessment,\n AssessmentResponse,\n ChecklistExtended,\n ChecklistItem,\n GlobalSearchItem,\n PaymentPlan,\n Product,\n VendorDocument,\n VendorDocumentExtended,\n} from '../../swagger';\nimport { Grid } from '../../types/grid';\nimport { PdfOpenMode } from '../../types/pdfOpenMode';\nimport { SortDirection } from '../../types/sortDirection';\nimport { GlobalState } from './globalState';\nimport { DocumentType } from '../../constants/DocumentType';\nimport { PurchaseType } from '../../types/PurchaseType';\nimport { OwnerObjectType } from '../../types/OwnerObjectType';\n\nexport interface ShowVideoRequest {\n checklist?: ChecklistExtended;\n item?: ChecklistItem;\n videoId: number;\n}\n\nconst globalSlice = createSlice({\n initialState: {\n isInitialised: false,\n isInitialising: false,\n isShowingVideoPlayerModal: false,\n isShowingSubscriptionRequiredModal: false,\n globalSearchInProgress: false,\n globalSearchResults: [],\n globalSearchBarVisible: false,\n globalToastConfig: {\n isShowing: false,\n text: '',\n },\n sortSettings: [\n {\n columnSort: { name: 'name', direction: SortDirection.Descending },\n grid: Grid.AllDocuments,\n },\n {\n columnSort: {\n name: 'attestationDueAt',\n direction: SortDirection.Descending,\n },\n grid: Grid.PendingDocuments,\n },\n {\n columnSort: {\n name: 'attestationDueAt',\n direction: SortDirection.Descending,\n },\n grid: Grid.DocumentAdmin,\n },\n {\n columnSort: {\n name: 'status',\n direction: SortDirection.Ascending,\n },\n grid: Grid.AttestationManagement,\n },\n {\n columnSort: {\n name: 'status',\n direction: SortDirection.Ascending,\n },\n grid: Grid.ApprovalManagement,\n },\n {\n columnSort: {\n name: 'fullName',\n direction: SortDirection.Descending,\n },\n grid: Grid.Users,\n },\n ...[\n Grid.DraftAgreements,\n Grid.AwaitingSignatureAgreements,\n Grid.CompletedAgreements,\n ].map(grid => {\n return {\n columnSort: { name: 'name', direction: SortDirection.Ascending },\n grid: grid,\n };\n }),\n ],\n showHelp: false,\n } as unknown as GlobalState,\n name: 'globalSlice',\n reducers: {\n clearErrorMessage: state => {\n state.errorMessage = undefined;\n },\n clearInitialise: state => {\n state.isInitialised = false;\n },\n closePdfPreview: state => {\n state.isPreviewingPdf = false;\n state.pdfPreviewUrl = undefined;\n state.pdfPreviewVendorDocumentId = undefined;\n state.pdfPreviewObjectId = undefined;\n state.pdfPreviewInline = false;\n },\n download: (state, action: PayloadAction) => {\n state.downloadUrl = action.payload;\n },\n\n setPdfPreviewUrl: (state, action: PayloadAction) => {\n state.pdfPreviewUrl = action.payload;\n },\n\n initialisationFailure: (state, action: PayloadAction) => {\n state.isInitialising = false;\n state.initialisationError = action.payload;\n },\n initialisationRequest: state => {\n state.initialisationError = undefined;\n state.isInitialising = true;\n },\n initialisationSuccess: state => {\n state.isInitialised = true;\n state.isInitialising = false;\n },\n openPdfPreview: (\n state,\n action: PayloadAction<{\n dueDate?: string;\n documentType: DocumentType;\n mode: PdfOpenMode;\n title: string;\n url?: string;\n vendorDocument?: VendorDocument | VendorDocumentExtended;\n vendorDocumentId?: string;\n objectId?: string;\n documentableId?: string;\n navigateUrlOnClose?: string;\n inline?: boolean;\n customPageHeaderLabel?: string;\n }>\n ) => {\n state.isPreviewingPdf = true;\n state.pdfOpenMode = action.payload.mode;\n state.pdfPreviewDueDate = action.payload.dueDate;\n state.pdfPreviewTitle = action.payload.title;\n state.pdfPreviewUrl = action.payload.url;\n state.pdfPreviewVendorDocument = action.payload.vendorDocument;\n state.pdfPreviewVendorDocumentId = action.payload.vendorDocumentId;\n state.pdfPreviewObjectId = action.payload.objectId;\n state.pdfPreviewDocumentType = action.payload.documentType;\n state.pdfPreviewInline = action.payload.inline || false;\n state.documentableId = action.payload.documentableId;\n state.navigateUrlOnClose = action.payload.navigateUrlOnClose;\n },\n resetScrollToY: state => {\n state.scrollToY = undefined;\n },\n scrollToY: (state, action: PayloadAction) => {\n state.scrollToY = action.payload;\n },\n scrollCardIntoView: (state, action: PayloadAction) => {\n state.scrollCardIntoView = action.payload;\n },\n resetScrollCardIntoView: state => {\n state.scrollCardIntoView = null;\n },\n setPageHeaderLabel: (state, action: PayloadAction) => {\n state.customPageHeaderLabel = action.payload;\n },\n setErrorMessage: (state, action: PayloadAction) => {\n state.errorMessage = action.payload;\n },\n setTableSort: (\n state,\n action: PayloadAction<{ columnName: string; grid: Grid | string }>\n ) => {\n const existingSort = state.sortSettings.find(\n ss => ss.grid === action.payload.grid\n );\n\n if (existingSort) {\n existingSort.columnSort = {\n direction:\n existingSort.columnSort.name === action.payload.columnName\n ? rotateDirection(existingSort.columnSort.direction)\n : SortDirection.Descending,\n name: action.payload.columnName,\n };\n } else {\n state.sortSettings.push({\n columnSort: {\n direction: SortDirection.Descending,\n name: action.payload.columnName,\n },\n grid: action.payload.grid,\n });\n }\n },\n showGlobalToastWithUndo: (state, action: PayloadAction) => {\n state.globalToastConfig = {\n isShowing: true,\n text: action.payload,\n undoButton: true,\n };\n },\n showGlobalToast: (state, action: PayloadAction) => {\n state.globalToastConfig = {\n isShowing: true,\n text: action.payload,\n };\n },\n hideGlobalToast: state => {\n state.globalToastConfig = {\n isShowing: false,\n text: '',\n };\n },\n showHelp: state => {\n state.showHelp = true;\n },\n clearHelp: state => {\n state.showHelp = false;\n },\n showPolicyHelp: state => {\n state.showPolicyHelp = true;\n },\n clearPolicyHelp: state => {\n state.showPolicyHelp = false;\n },\n showAssessmentHelp: state => {\n state.showAssessmentHelp = true;\n },\n clearAssessmentHelp: state => {\n state.showAssessmentHelp = false;\n },\n showEditOwnerModal: (\n state,\n action: PayloadAction<{\n object:\n | VendorDocument\n | AgreementModel\n | Assessment\n | AssessmentResponse;\n type: OwnerObjectType;\n }>\n ) => {\n state.isEditOwnerModalShowing = true;\n state.ownerObjectToEdit = action.payload.object;\n state.ownerObjectType = action.payload.type;\n },\n showSubscriptionRequiredModal: state => {\n state.isShowingSubscriptionRequiredModal = true;\n },\n hideSubscriptionRequiredModal: state => {\n state.isShowingSubscriptionRequiredModal = false;\n },\n hideEditOwnerModal: state => {\n state.isEditOwnerModalShowing = false;\n state.ownerObjectToEdit = undefined;\n state.ownerObjectType = undefined;\n },\n showEditOwnerToast: state => {\n state.isEditedOwnerToastShowing = true;\n },\n hideEditOwnerToast: state => {\n state.isEditedOwnerToastShowing = false;\n },\n globalSearchRequest: (state, action: PayloadAction) => {\n state.globalSearchResults = [];\n state.globalSearchInProgress = true;\n },\n globalSearchSuccess: (state, action: PayloadAction) => {\n state.globalSearchResults = action.payload;\n state.globalSearchInProgress = false;\n },\n globalSearchError: (state, action: PayloadAction) => {\n state.globalSearchInProgress = false;\n },\n clearGlobalSearchResults: state => {\n state.globalSearchResults = [];\n },\n setGlobalSearchBarVisible: (state, action: PayloadAction) => {\n state.globalSearchBarVisible = action.payload;\n },\n setBackgroundColor: (\n state,\n action: PayloadAction\n ) => {\n state.backgroundColor = action.payload;\n },\n setCustomAppContentClasses: (\n state,\n action: PayloadAction\n ) => {\n state.customAppContentClasses = action.payload;\n },\n showHelpMenu: state => {\n state.isHelpMenuShowing = true;\n },\n hideHelpMenu: state => {\n state.isHelpMenuShowing = false;\n },\n },\n});\n\nexport const {\n clearErrorMessage,\n clearInitialise,\n closePdfPreview,\n download,\n initialisationFailure,\n initialisationRequest,\n initialisationSuccess,\n openPdfPreview,\n resetScrollToY,\n scrollToY,\n scrollCardIntoView,\n resetScrollCardIntoView,\n setErrorMessage,\n setTableSort,\n showGlobalToast,\n hideGlobalToast,\n showHelp,\n clearHelp,\n clearPolicyHelp,\n showPolicyHelp,\n clearAssessmentHelp,\n showAssessmentHelp,\n showEditOwnerModal,\n hideEditOwnerModal,\n showSubscriptionRequiredModal,\n hideSubscriptionRequiredModal,\n showEditOwnerToast,\n hideEditOwnerToast,\n setPdfPreviewUrl,\n showGlobalToastWithUndo,\n setPageHeaderLabel,\n globalSearchRequest,\n globalSearchSuccess,\n globalSearchError,\n clearGlobalSearchResults,\n setGlobalSearchBarVisible,\n setBackgroundColor,\n setCustomAppContentClasses,\n showHelpMenu,\n hideHelpMenu,\n} = globalSlice.actions;\nexport default globalSlice.reducer;\n","import { SortDirection } from '../types/sortDirection';\n\nexport const rotateDirection = (direction: SortDirection): SortDirection => {\n if (direction === undefined) {\n return SortDirection.Descending;\n }\n\n if (direction === SortDirection.Descending) {\n return SortDirection.Ascending;\n }\n\n if (direction === SortDirection.Ascending) {\n return SortDirection.Descending;\n }\n};\n","import { api } from '../../api/api';\nimport { canIndex } from '../../functions/access';\nimport { getApiErrorMessage } from '../../functions/getApiErrorMessage';\nimport { AccessObject } from '../../types/accessObject';\nimport { UNKNOWN_ERROR } from '../../types/constants';\nimport { VoidThunk } from '../../types/voidThunk';\nimport { getErrorMessage } from '../helpers/thunkHelpers';\nimport { fetchNotifications } from '../notifications/notificationsThunks';\nimport { fetchSubscriptions, fetchUserDetails } from '../user/userThunks';\nimport { setCurrentVendor } from '../vendors/vendorsSlice';\nimport {\n fetchCurrentCompany,\n fetchVendorDetails,\n fetchVendors,\n fetchVendorTeams,\n fetchVendorUsers,\n getVendorProducts,\n} from '../vendors/vendorsThunks';\nimport {\n globalSearchError,\n globalSearchRequest,\n globalSearchSuccess,\n initialisationFailure,\n initialisationRequest,\n initialisationSuccess,\n} from './globalSlice';\n\nexport const initialise = (): VoidThunk => async (dispatch, getState) => {\n try {\n dispatch(initialisationRequest());\n await Promise.all([dispatch(fetchUserDetails()), dispatch(fetchVendors())]);\n\n const vendors = getState().vendors.vendors;\n const currentUser = getState().user.userDetails;\n let currentVendor = getState().vendors.currentVendor;\n if (vendors.length > 0) {\n if (!currentVendor) {\n const savedVendor = vendors.find(\n vendor => vendor.id === localStorage.getItem('currentVendorId')\n );\n currentVendor = savedVendor || vendors[0];\n dispatch(setCurrentVendor(currentVendor));\n }\n const requests = [];\n\n requests.push(fetchSubscriptions());\n canIndex(AccessObject.vendor_details, getState()) &&\n requests.push(fetchVendorDetails(currentVendor.id));\n requests.push(fetchVendorUsers(currentVendor.id));\n requests.push(getVendorProducts(true));\n await Promise.all(requests.map(request => dispatch(request)));\n }\n dispatch(fetchCurrentCompany());\n const vendorUsers = getState().vendors.users;\n\n if (vendorUsers.length) {\n const currentVendorUser = vendorUsers.find(\n user => user.email === currentUser.email\n );\n\n dispatch(fetchNotifications(currentVendorUser.id, false));\n }\n\n dispatch(initialisationSuccess());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(initialisationFailure(apiErrorMessage));\n } else {\n dispatch(\n initialisationFailure(\n 'An error occurred fetching vendors. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(initialisationFailure(UNKNOWN_ERROR));\n }\n }\n};\n\nexport const getSearchResults =\n (vendorId: string, term: string): VoidThunk =>\n async dispatch => {\n try {\n if (!term) return;\n dispatch(globalSearchRequest());\n const response = await api().vendorsVendorIdSearchGet({\n vendorId,\n term,\n });\n dispatch(globalSearchSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while getting search results. Please try again or contact support.'\n );\n dispatch(globalSearchError(apiErrorMessage));\n }\n }\n };\n","import { AnyAction, ThunkDispatch } from '@reduxjs/toolkit';\nimport { getApiErrorMessage } from '../../functions/getApiErrorMessage';\nimport { UNKNOWN_ERROR } from '../../types/constants';\nimport { setErrorMessage } from '../global/globalSlice';\n\nexport const getErrorMessage = async (err: any, specificMessage: string) => {\n let errorFromResponse = ''; // Help troubleshooting\n let userMessage = specificMessage ?? UNKNOWN_ERROR; // Keep it user friendly\n if (err instanceof Response) {\n errorFromResponse = await getApiErrorMessage(err);\n if (!errorFromResponse) {\n errorFromResponse = `API error - Status: ${err.status} Message: ${err.statusText}`;\n } else {\n userMessage = errorFromResponse;\n }\n } else {\n errorFromResponse = specificMessage ?? UNKNOWN_ERROR;\n }\n console.log(errorFromResponse);\n\n return userMessage;\n};\n\nexport const handleThunkError = async (\n text: string,\n {\n dispatch,\n error,\n showError = true,\n }: {\n dispatch: ThunkDispatch;\n error: any;\n showError?: boolean;\n }\n) => {\n const apiErrorMessage = await getErrorMessage(error, text);\n console.error(error);\n showError && dispatch(setErrorMessage(apiErrorMessage));\n throw new Error(apiErrorMessage);\n};\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { LegalRegisterState } from './legalRegisterState';\nimport { LegislationModel } from '../../swagger/models/LegislationModel';\nimport { LegislationTemplateModel } from '../../swagger/models/LegislationTemplateModel';\nimport { AddLegislationForm } from '../../features/legalRegister/AddLegislationModal/useAddLegislationFormHandler';\nimport { LegalRegisterModel } from '../../swagger';\n\nconst legalRegisterSlice = createSlice({\n initialState: {\n legislationsSearch: null,\n legislationIdToDelete: null,\n isRequestingFetchJurisdictions: false,\n fetchJurisdictionsError: null,\n isRequestingVendorLegislations: false,\n vendorLegislations: null,\n addLegislationForm: {},\n isRequestingFetchLegislationTemplates: false,\n fetchLegislationTemplatesError: null,\n isPostingLegislation: 'idle',\n } as LegalRegisterState,\n name: 'legalRegisterSlice',\n reducers: {\n setLegislationsSearch: (state, action: PayloadAction) => {\n state.legislationsSearch = action.payload;\n },\n fetchVendorLegislationsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isRequestingVendorLegislations = false;\n state.vendorLegislations = action.payload;\n },\n fetchVendorLegislationsFailure: state => {\n state.isRequestingVendorLegislations = false;\n },\n fetchVendorLegislationsRequest: state => {\n state.isRequestingVendorLegislations = true;\n },\n deleteLegislationRequest: (state, action: PayloadAction) => {\n state.legislationIdToDelete = action.payload;\n },\n deleteLegislationSuccess: state => {\n state.vendorLegislations = state.vendorLegislations.filter(\n l => l.id != state.legislationIdToDelete\n );\n state.legislationIdToDelete = '';\n },\n deleteLegislationFailure: state => {\n state.legislationIdToDelete = '';\n },\n updateVendorLegislation: (\n state,\n action: PayloadAction\n ) => {\n state.vendorLegislations = state.vendorLegislations.map(legislation => {\n return legislation.id === action.payload.id\n ? action.payload\n : legislation;\n });\n },\n fetchLegislationTemplatesFailure: (\n state,\n action: PayloadAction\n ) => {\n state.isRequestingFetchLegislationTemplates = false;\n state.fetchLegislationTemplatesError = action.payload;\n },\n fetchLegislationTemplatesRequest: state => {\n state.isRequestingFetchLegislationTemplates = true;\n },\n fetchLegislationTemplatesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isRequestingFetchLegislationTemplates = false;\n const alreadyUsedTemplatesIds = state.vendorLegislations.map(\n legislation => legislation.legislationTemplateId\n );\n state.addLegislationForm.legislationTemplates = action.payload.filter(\n template => !alreadyUsedTemplatesIds.includes(template.id)\n );\n },\n fetchJurisdictionsFailure: (state, action: PayloadAction) => {\n state.isRequestingFetchJurisdictions = false;\n state.fetchJurisdictionsError = action.payload;\n },\n fetchJurisdictionsRequest: state => {\n state.isRequestingFetchJurisdictions = true;\n },\n fetchJurisdictionsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isRequestingFetchJurisdictions = false;\n state.addLegislationForm.jurisdictions = action.payload;\n },\n updateAddLegislationForm: (\n state,\n action: PayloadAction\n ) => {\n state.addLegislationForm = action.payload;\n },\n createLegislationFromTemplatesFailure: (\n state,\n action: PayloadAction\n ) => {\n state.isRequestingCreateLegislationFromTemplates = false;\n state.createLegislationFromTemplatesError = action.payload;\n },\n createLegislationFromTemplatesRequest: state => {\n state.isRequestingCreateLegislationFromTemplates = true;\n },\n createLegislationFromTemplatesSuccess: state => {\n state.isRequestingCreateLegislationFromTemplates = false;\n },\n\n fetchLegalRegisterSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingLegalRegister = false;\n state.legalRegister = action.payload;\n },\n fetchLegalRegisterFailure: (state, _: PayloadAction) => {\n state.isFetchingLegalRegister = false;\n },\n fetchLegalRegisterRequest: state => {\n state.isFetchingLegalRegister = true;\n },\n patchLegalRegisterSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isPatchingLegalRegister = false;\n state.legalRegister = { ...state.legalRegister, ...action.payload };\n },\n patchLegalRegisterFailure: (state, _: PayloadAction) => {\n state.isPatchingLegalRegister = false;\n },\n patchLegalRegisterRequest: state => {\n state.isPatchingLegalRegister = true;\n },\n updateLegalRegisterReviewSuccess: (\n state,\n action: PayloadAction>\n ) => {\n state.legalRegister = { ...state.legalRegister, ...action.payload };\n },\n },\n});\n\nexport const {\n setLegislationsSearch,\n fetchVendorLegislationsSuccess,\n fetchVendorLegislationsFailure,\n fetchVendorLegislationsRequest,\n deleteLegislationRequest,\n deleteLegislationSuccess,\n deleteLegislationFailure,\n updateVendorLegislation,\n fetchLegislationTemplatesFailure,\n fetchLegislationTemplatesRequest,\n fetchLegislationTemplatesSuccess,\n updateAddLegislationForm,\n fetchJurisdictionsFailure,\n fetchJurisdictionsRequest,\n fetchJurisdictionsSuccess,\n createLegislationFromTemplatesFailure,\n createLegislationFromTemplatesRequest,\n createLegislationFromTemplatesSuccess,\n fetchLegalRegisterFailure,\n fetchLegalRegisterRequest,\n fetchLegalRegisterSuccess,\n patchLegalRegisterFailure,\n patchLegalRegisterRequest,\n patchLegalRegisterSuccess,\n updateLegalRegisterReviewSuccess,\n} = legalRegisterSlice.actions;\n\nexport default legalRegisterSlice.reducer;\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { NotificationList } from '../../swagger';\nimport { NotificationsState } from './notificationsState';\n\nconst notificationSlice = createSlice({\n initialState: {\n count: 0,\n notificationsList: { data: [], meta: {} },\n } as unknown as NotificationsState,\n name: 'notificationSlice',\n reducers: {\n setAssessmentsCount: (state, action: PayloadAction) => {\n state.assessmentsCount = action.payload;\n },\n setCount: (state, action: PayloadAction) => {\n state.count = action.payload;\n },\n notificationsRequest: state => {\n state.isRequestingNotifications = true;\n },\n notificationsRequestSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isRequestingNotifications = false;\n state.notificationsList = action.payload;\n },\n notificationsRequestFailure: (state, action: PayloadAction) => {\n state.isRequestingNotifications = false;\n state.notificationsRequestError = action.payload;\n },\n markNotificationAsReadFailure: (state, action: PayloadAction) => {\n state.markNotificationAsReadRequestFailure = action.payload;\n },\n createNotificationRequest: (state, action: PayloadAction) => {\n state.isCreatingNotification = action.payload;\n },\n createNotificationRequestFailure: (\n state,\n action: PayloadAction\n ) => {\n state.createNotificationRequestError = action.payload;\n },\n },\n});\n\nexport const {\n setAssessmentsCount,\n setCount,\n notificationsRequest,\n notificationsRequestSuccess,\n notificationsRequestFailure,\n markNotificationAsReadFailure,\n createNotificationRequest,\n createNotificationRequestFailure,\n} = notificationSlice.actions;\n\nexport default notificationSlice.reducer;\n","import { api } from '../../api/api';\nimport { getApiErrorMessage } from '../../functions/getApiErrorMessage';\nimport {\n notificationsRequest,\n notificationsRequestSuccess,\n notificationsRequestFailure,\n markNotificationAsReadFailure,\n createNotificationRequest,\n createNotificationRequestFailure,\n} from './notificationSlice';\nimport { VoidThunk } from '../../types/voidThunk';\nimport { UNKNOWN_ERROR } from '../../types/constants';\nimport { ReminderCreatePayloadReminder } from '../../swagger';\n\nexport const fetchNotifications =\n (vendorUserId: string, showRead: boolean): VoidThunk =>\n async dispatch => {\n try {\n dispatch(notificationsRequest());\n const response = await api().vendorUsersVendorUserIdNotificationsGet({\n vendorUserId,\n showRead,\n });\n dispatch(notificationsRequestSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(notificationsRequestFailure(apiErrorMessage));\n } else {\n dispatch(\n notificationsRequestFailure(\n 'An error occurred fetching notifications. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(notificationsRequestFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const markNotificationAsRead =\n ({\n notificationId,\n onSuccess,\n }: {\n notificationId: string;\n onSuccess: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n await api().notificationsNotificationIdReadPatch({ notificationId });\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(markNotificationAsReadFailure(apiErrorMessage));\n } else {\n dispatch(\n markNotificationAsReadFailure(\n 'An error occurred marking notification as read. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(markNotificationAsReadFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const createNotification =\n ({\n vendorUserId,\n reminder,\n onSuccess,\n }: {\n vendorUserId: string;\n reminder: ReminderCreatePayloadReminder;\n onSuccess: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(createNotificationRequest(true));\n await api().vendorUsersVendorUserIdRemindersPost({\n vendorUserId,\n body: { reminder },\n });\n dispatch(createNotificationRequest(false));\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(createNotificationRequestFailure(apiErrorMessage));\n } else {\n dispatch(\n createNotificationRequestFailure(\n 'An error occurred creating a notification. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(createNotificationRequestFailure(UNKNOWN_ERROR));\n }\n }\n };\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { PestelItemForm } from '../../components/ManagePestelItemsDrawer/ManagePestelItemsDrawer';\nimport { MessageToastVariant } from '../../components/MessageToast/MessageToast';\nimport { PestelItemModel, PestelRegisterModel } from '../../swagger';\nimport { PestelState } from './pestelState';\n\nconst pestelSlice = createSlice({\n initialState: {\n isFetchingPestels: false,\n toastMessage: '',\n toastVariant: MessageToastVariant.Primary,\n pestelItems: [],\n showEditDrawer: false,\n isDeletingPestel: false,\n pestelItemForm: {},\n } as unknown as PestelState,\n name: 'pestelSlice',\n reducers: {\n clearToastMessage: state => {\n state.toastMessage = '';\n state.toastVariant = MessageToastVariant.Primary;\n },\n fetchPestelsRequest: state => {\n state.isFetchingPestels = true;\n },\n fetchPestelsSuccess: (state, action: PayloadAction) => {\n state.isFetchingPestels = false;\n state.pestelItems = action.payload;\n },\n setPestelError: (state, action: PayloadAction) => {\n state.isFetchingPestels = false;\n state.toastMessage = action.payload; // Looks like state.toastMessage not required because we already show the error at the right bottom corner\n },\n deletePestelRequest: state => {\n state.isDeletingPestel = true;\n },\n deletePestelSuccess: (state, action: PayloadAction) => {\n state.pestelIdToBeDeleted = undefined;\n state.isDeletingPestel = false;\n const items = state.pestelItems.filter(p => p.id != action.payload);\n state.pestelItems = items;\n },\n setPestelIdToBeDeleted: (state, action: PayloadAction) => {\n state.pestelIdToBeDeleted = action.payload;\n },\n updatePestelItemForm: (state, action: PayloadAction) => {\n state.pestelItemForm = action.payload;\n },\n createPestelItemRequest: state => {\n state.isCreatingPestelItem = true;\n },\n createPestelItemSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isCreatingPestelItem = false;\n state.pestelItems.push(action.payload);\n },\n createPestelItemFailure: (state, action: PayloadAction) => {\n state.isCreatingPestelItem = false;\n },\n fetchPestelItemRequest: state => {\n state.isFetchingPestelItem = true;\n },\n fetchPestelItemSuccess: (state, action: PayloadAction) => {\n state.isFetchingPestelItem = false;\n state.pestelItemForm = action.payload;\n },\n fetchPestelItemFailure: (state, action: PayloadAction) => {\n state.isFetchingPestelItem = false;\n },\n\n updatePestelItemRequest: state => {\n state.isFetchingPestelItem = true;\n },\n updatePestelItemSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingPestelItem = false;\n const updatedPestel = action.payload;\n state.pestelItems = state.pestelItems.map(pestel => {\n return pestel.id === updatedPestel.id ? updatedPestel : pestel;\n });\n },\n updatePestelItemFailure: (state, action: PayloadAction) => {\n state.isFetchingPestelItem = false;\n },\n\n setShowEditDrawer: (state, action: PayloadAction) => {\n state.showEditDrawer = action.payload;\n },\n\n fetchPestelRegisterSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingPestelRegister = false;\n state.pestelRegister = action.payload;\n },\n fetchPestelRegisterFailure: (state, _: PayloadAction) => {\n state.isFetchingPestelRegister = false;\n },\n fetchPestelRegisterRequest: state => {\n state.isFetchingPestelRegister = true;\n },\n patchPestelRegisterSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isPatchingPestelRegister = false;\n state.pestelRegister = { ...state.pestelRegister, ...action.payload };\n },\n patchPestelRegisterFailure: (state, _: PayloadAction) => {\n state.isPatchingPestelRegister = false;\n },\n patchPestelRegisterRequest: state => {\n state.isPatchingPestelRegister = true;\n },\n\n updatePestelRegisterReviewSuccess: (\n state,\n action: PayloadAction>\n ) => {\n state.pestelRegister = { ...state.pestelRegister, ...action.payload };\n },\n },\n});\n\nexport const {\n setPestelIdToBeDeleted,\n clearToastMessage,\n fetchPestelsRequest,\n fetchPestelsSuccess,\n setPestelError,\n deletePestelRequest,\n deletePestelSuccess,\n updatePestelItemForm,\n createPestelItemRequest,\n createPestelItemSuccess,\n createPestelItemFailure,\n fetchPestelItemRequest,\n fetchPestelItemSuccess,\n fetchPestelItemFailure,\n updatePestelItemRequest,\n updatePestelItemSuccess,\n updatePestelItemFailure,\n setShowEditDrawer,\n fetchPestelRegisterRequest,\n fetchPestelRegisterSuccess,\n fetchPestelRegisterFailure,\n patchPestelRegisterRequest,\n patchPestelRegisterSuccess,\n patchPestelRegisterFailure,\n updatePestelRegisterReviewSuccess,\n} = pestelSlice.actions;\n\nexport default pestelSlice.reducer;\n","import { VendorPolicyClause } from '../swagger';\nimport { Question } from '../swagger/models/Question';\nimport { VendorPolicyDetails } from '../swagger/models/VendorPolicyDetails';\n\nexport const keepCurrentAnswersAndClauses = (\n action: { payload: any; type?: string },\n oldVendorPolicyClauses: VendorPolicyClause[],\n oldVendorPolicy: VendorPolicyDetails\n) => {\n const vendorPolicyClauses = action.payload.vendorPolicyClauses.map(\n (pc: VendorPolicyClause) => {\n const oldVendorPolicyClause = oldVendorPolicyClauses.find(\n opc => opc.id === pc.id\n );\n const questions = pc.questions.map((newQuestion: Question) => {\n const oldQuestion = oldVendorPolicyClause.questions.find(\n (old: Question) => old.propertyName === newQuestion.propertyName\n );\n if ((newQuestion.layout || oldQuestion.layout) === 'table_layout')\n return newQuestion;\n return oldQuestion || newQuestion;\n });\n const leaveOut = oldVendorPolicyClause.leaveOut;\n return { ...pc, leaveOut, questions };\n }\n );\n const vendorPolicyAnswers = oldVendorPolicy.vendorPolicyAnswers;\n const payload = {\n ...action.payload,\n vendorPolicyClauses,\n vendorPolicyAnswers,\n };\n return payload;\n};\n","export const safelyDeleteItemFromArray = (array: T[], item: T) => {\n const index = array.indexOf(item);\n if (index === -1) {\n return;\n }\n array.splice(index, 1);\n};\n","import { ExistingPolicyWarningModalMode } from '../../components/ExistingPolicyWarningModal/ExistingPolicyWarningModal';\nimport {\n AgreementModel,\n Policy,\n PolicyCategory,\n VendorDocument,\n VendorDocumentApproval,\n VendorDocumentExtended,\n VendorPolicyDetails,\n VendorTeamModel,\n} from '../../swagger';\nimport { ApiRequestStatus } from '../global/globalState';\n\nexport enum SortColumn {\n Name,\n Category,\n Progress,\n UpdatedAt,\n UpdatedBy,\n Version,\n}\n\nexport enum SortDirection {\n Ascending,\n Descending,\n}\n\nexport interface PoliciesState {\n attestationManagementVendorDocument?: VendorDocumentExtended;\n approvalManagementVendorDocumentId: string;\n approvalManagementVendorDocumentName: string;\n approvals: VendorDocumentApproval[];\n isPaymentSuccessfulShowing: boolean;\n availableExpandedCategories: string[];\n availableSortColumn?: SortColumn;\n availableSortDirection: SortDirection;\n completeExpandedCategories: string[];\n completePolicyError?: string;\n completeSortColumn?: SortColumn;\n completeSortDirection: SortDirection;\n createPolicyError?: string;\n deletePolicyError?: string;\n fetchVendorPolicyError?: string;\n initialisingCreationOfPolicyId?: string;\n inProgressSortColumn?: SortColumn;\n inProgressSortDirection: SortDirection;\n isDocumentLibraryModalShowing: boolean;\n isAttestationManagementModalShowing: boolean;\n isApprovalManagementModalShowing: boolean;\n isApprovalManagementModalCancelable: boolean;\n isCompletingPolicy: boolean;\n isCreatingPolicy: boolean;\n isDeletingPolicy: boolean;\n isFetchingPolicies: boolean;\n isFetchingVendorPolicies: boolean;\n isFetchingVendorPolicy: boolean;\n isPatchingVendorPolicy: boolean;\n isPatchingVendorPolicyClause: boolean;\n isPolicySummaryToastShowing: boolean;\n isFetchingPolicyCategories: boolean;\n policyCategories: PolicyCategory[];\n patchVendorPolicyError?: string;\n patchVendorPolicyClauseError?: string;\n policies: Policy[];\n policySummaryToastId: string;\n searchTerm?: string;\n searchText?: string;\n showAutoSaveToast: boolean;\n vendorPolicies: VendorPolicyDetails[];\n loadedDataOnLoad: boolean;\n postAttestationError: string;\n isPostingAttestation: boolean;\n patchApprovalError: string;\n isPostingApproval: boolean;\n stripeCreatedVendorPolicy: boolean;\n isSkippingAttestation: boolean;\n isSkippingApproval: boolean;\n skipApprovalError: string;\n skipAttestationError: string;\n policyRefreshRequired: boolean;\n isFetchingDocumentApprovals: boolean;\n isExistingPolicyWarningModalShowing: boolean;\n existingPolicyWarningModalMode: ExistingPolicyWarningModalMode;\n selectedPolicyId: string;\n isManageRejectionModalShowing: boolean;\n rejectedItemToManage: VendorDocument | AgreementModel;\n sendingReadReminder: string;\n readReminderError: string;\n policyToEdit: (VendorPolicyDetails | VendorDocumentExtended) & {\n initialTeamsFetched?: boolean;\n selectedTeams?: {\n id: VendorTeamModel['id'];\n name: VendorTeamModel['name'];\n }[];\n };\n isPolicyDrawerShowing: boolean;\n isPolicyDrawerShowingForReadRequest: boolean;\n fetchPoliciesStatus: ApiRequestStatus;\n fetchVendorPoliciesDetailsStatus: ApiRequestStatus;\n fetchVendorPoliciesStatus: ApiRequestStatus;\n fetchPolicyAttestationGroupsStatus: ApiRequestStatus;\n patchPolicyAttestationGroupsStatus: ApiRequestStatus;\n}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { ExistingPolicyWarningModalMode } from '../../components/ExistingPolicyWarningModal/ExistingPolicyWarningModal';\nimport { PolicyOverviewSection } from '../../components/PolicyDrawer/PolicyOverviewSection/PolicyOverviewSection';\nimport { keepCurrentAnswersAndClauses } from '../../functions/keepCurrentAnswersAndClauses';\nimport { safelyDeleteItemFromArray } from '../../functions/safelyDeleteItemFromArray';\nimport {\n AgreementModel,\n Policy,\n PolicyCategory,\n VendorDocument,\n VendorDocumentApproval,\n VendorDocumentExtended,\n VendorPolicy,\n VendorPolicyAnswer,\n VendorPolicyClause,\n VendorPolicyDetails,\n VendorPolicyStatusEnum,\n} from '../../swagger';\nimport { PoliciesState, SortDirection } from './policiesState';\nimport {\n fetchPolicies,\n fetchPolicyAttestationGroups,\n fetchVendorPolicies,\n fetchVendorPoliciesDetails,\n patchPolicyAttestationGroups,\n} from './policiesThunks';\n\nconst policiesSlice = createSlice({\n initialState: {\n attestationManagementVendorDocument: undefined,\n approvalManagementVendorDocumentId: undefined,\n approvalManagementVendorDocumentName: undefined,\n approvals: [],\n isPaymentSuccessfulShowing: false,\n availableExpandedCategories: [],\n availableSortColumn: undefined,\n availableSortDirection: SortDirection.Ascending,\n completeExpandedCategories: [],\n completePolicyError: undefined,\n completeSortColumn: undefined,\n completeSortDirection: SortDirection.Ascending,\n createPolicyError: undefined,\n deletePolicyError: undefined,\n fetchVendorPolicyError: undefined,\n initialisingCreationOfPolicyId: undefined,\n inProgressSortColumn: undefined,\n inProgressSortDirection: SortDirection.Ascending,\n isDocumentLibraryModalShowing: false,\n isAttestationManagementModalShowing: false,\n isApprovalManagementModalShowing: false,\n isApprovalManagementModalCancelable: false,\n isCompletingPolicy: false,\n isCreatingPolicy: false,\n isDeletingPolicy: false,\n isFetchingPolicies: false,\n isFetchingVendorPolicies: false,\n isFetchingVendorPolicy: false,\n isPatchingVendorPolicy: false,\n isPatchingVendorPolicyClause: false,\n isPolicySummaryToastShowing: false,\n isFetchingPolicyCategories: false,\n policyCategories: [],\n patchVendorPolicyError: undefined,\n patchVendorPolicyClauseError: undefined,\n policies: [],\n policySummaryToastId: undefined,\n searchTerm: undefined,\n searchText: undefined,\n showAutoSaveToast: false,\n vendorPolicies: [],\n loadedDataOnLoad: false,\n postAttestationError: undefined,\n isPostingAttestation: false,\n patchApprovalError: undefined,\n isPostingApproval: false,\n stripeCreatedVendorPolicy: false,\n isSkippingAttestation: false,\n isSkippingApproval: false,\n skipApprovalError: undefined,\n skipAttestationError: undefined,\n policyRefreshRequired: true,\n isFetchingDocumentApprovals: false,\n isExistingPolicyWarningModalShowing: false,\n existingPolicyWarningModalMode: undefined,\n selectedPolicyId: undefined,\n isManageRejectionModalShowing: false,\n rejectedItemToManage: null,\n sendingReadReminder: undefined,\n readReminderError: undefined,\n policyToEdit: undefined,\n isPolicyDrawerShowing: true,\n isPolicyDrawerShowingForReadRequest: false,\n fetchPoliciesStatus: 'idle',\n fetchVendorPoliciesDetailsStatus: 'idle',\n fetchVendorPoliciesStatus: 'idle',\n } as PoliciesState,\n name: 'policiesSlice',\n reducers: {\n clearAutoSave: state => {\n state.showAutoSaveToast = false;\n },\n collapseCategory: (\n state,\n action: PayloadAction<{\n section: VendorPolicyStatusEnum;\n categoryName: string;\n }>\n ) => {\n switch (action.payload.section) {\n case VendorPolicyStatusEnum.Available:\n safelyDeleteItemFromArray(\n state.availableExpandedCategories,\n action.payload.categoryName\n );\n break;\n case VendorPolicyStatusEnum.Completed:\n safelyDeleteItemFromArray(\n state.completeExpandedCategories,\n action.payload.categoryName\n );\n break;\n }\n },\n completePolicyRequest: state => {\n state.completePolicyError = undefined;\n state.isCompletingPolicy = true;\n },\n completePolicySuccess: state => {\n state.isCompletingPolicy = false;\n },\n completePolicyFailure: (state, action: PayloadAction) => {\n state.completePolicyError = action.payload;\n state.isCompletingPolicy = false;\n },\n createPolicyRequest: (state, action: PayloadAction) => {\n state.createPolicyError = undefined;\n state.initialisingCreationOfPolicyId = action.payload;\n state.isCreatingPolicy = true;\n },\n createPolicySuccess: (state, action: PayloadAction) => {\n state.availableExpandedCategories = [];\n state.initialisingCreationOfPolicyId = undefined;\n state.isCreatingPolicy = false;\n },\n createPolicyFailure: (state, action: PayloadAction) => {\n state.createPolicyError = action.payload;\n state.isCreatingPolicy = false;\n },\n deletePolicyRequest: state => {\n state.deletePolicyError = undefined;\n state.isDeletingPolicy = true;\n },\n deletePolicySuccess: state => {\n state.isDeletingPolicy = false;\n },\n deletePolicyFailure: (state, action: PayloadAction) => {\n state.deletePolicyError = action.payload;\n state.isDeletingPolicy = false;\n },\n expandCategory: (\n state,\n action: PayloadAction<{\n section: VendorPolicyStatusEnum;\n categoryName: string;\n }>\n ) => {\n switch (action.payload.section) {\n case VendorPolicyStatusEnum.Available:\n state.availableExpandedCategories.push(action.payload.categoryName);\n break;\n case VendorPolicyStatusEnum.Completed:\n state.completeExpandedCategories.push(action.payload.categoryName);\n break;\n }\n },\n fetchVendorPolicyRequest: state => {\n state.fetchVendorPolicyError = undefined;\n state.isFetchingVendorPolicy = true;\n },\n fetchVendorPolicySuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingVendorPolicy = false;\n const newVendorPolicies = [...state.vendorPolicies];\n const policyIndex = newVendorPolicies.findIndex(\n vp => vp.id === action.payload.id\n );\n const oldVendorPolicy = { ...state.vendorPolicies[policyIndex] };\n const oldVendorPolicyClauses = oldVendorPolicy?.vendorPolicyClauses;\n let payload: VendorPolicyDetails;\n if (oldVendorPolicyClauses) {\n payload = keepCurrentAnswersAndClauses(\n action,\n oldVendorPolicyClauses,\n oldVendorPolicy\n );\n } else {\n payload = action.payload;\n }\n\n if (policyIndex === -1) {\n newVendorPolicies.push(payload);\n } else {\n newVendorPolicies.splice(policyIndex, 1, payload);\n }\n state.vendorPolicies = newVendorPolicies;\n },\n fetchVendorPolicyFailure: (state, action: PayloadAction) => {\n state.isFetchingVendorPolicy = false;\n state.fetchVendorPolicyError = action.payload;\n },\n patchVendorPolicyClauseRequest: (\n state,\n action: PayloadAction\n ) => {\n state.isPatchingVendorPolicyClause = true;\n state.patchVendorPolicyClauseError = undefined;\n const policy = state.vendorPolicies.find(\n ({ id }) => id === action.payload.vendorPolicyId\n );\n const clause = policy.vendorPolicyClauses.find(\n ({ id }) => id === action.payload.id\n );\n if (!action.payload.clauseTextIsCustom)\n // fast revert\n clause.clauseTextIsCustom = action.payload.clauseTextIsCustom;\n clause.leaveOut = action.payload.leaveOut;\n },\n patchVendorPolicyClauseSuccess: (\n state,\n action: PayloadAction\n ) => {\n const policy = state.vendorPolicies.find(\n ({ id }) => id === action.payload.vendorPolicyId\n );\n const clause = policy.vendorPolicyClauses.find(\n ({ name }) => name === action.payload.name\n );\n clause.clauseText = action.payload.clauseText;\n clause.clauseTextIsCustom = action.payload.clauseTextIsCustom;\n clause.questions = action.payload.questions;\n clause.updatedAt = action.payload.updatedAt;\n clause.updatedBy = action.payload.updatedBy;\n state.isPatchingVendorPolicyClause = false;\n },\n patchVendorPolicyClauseFailure: (state, action: PayloadAction) => {\n state.isPatchingVendorPolicyClause = false;\n state.patchVendorPolicyClauseError = action.payload;\n },\n updateVendorPolicyProgress: (\n state,\n action: PayloadAction\n ) => {\n const policy = state.vendorPolicies.find(\n vendorPolicy => vendorPolicy.id === action.payload.id\n );\n policy.progress = action.payload.progress;\n },\n updateVendorPoliciesAnswers: (state, action: PayloadAction) => {\n const policyId = action.payload.policyId;\n const answersPropertyNames = action.payload.answersPropertyNames;\n const { updatedBy, updatedAt } = action.payload;\n const newFields = { updatedAt, updatedBy };\n\n const policy = state.vendorPolicies.find(\n vendorPolicy => vendorPolicy.id === policyId\n );\n\n policy.vendorPolicyAnswers = policy.vendorPolicyAnswers.map(answer => {\n if (answersPropertyNames?.includes(answer.propertyName)) {\n return { ...answer, ...newFields };\n }\n\n return answer;\n });\n },\n patchVendorPolicyRequest: (\n state,\n action: PayloadAction\n ) => {\n state.isPatchingVendorPolicy = true;\n state.patchVendorPolicyError = undefined;\n\n // Saving current answers to buffer(cache) during request to the backend\n const buffer: Record = {};\n const policyIndex = state.vendorPolicies.findIndex(\n vp => vp.id === action.payload.id\n );\n state.vendorPolicies[policyIndex].vendorPolicyAnswers.forEach(\n answer => (buffer[answer.propertyName] = answer)\n );\n // vendorPolicyAnswers can be null if we patch policy from PolicyDrawer\n action.payload.vendorPolicyAnswers?.forEach(answer => {\n buffer[answer.propertyName] ||= answer;\n buffer[answer.propertyName].value = answer.value;\n });\n state.vendorPolicies[policyIndex].vendorPolicyAnswers =\n Object.values(buffer);\n },\n patchVendorPolicySuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isPatchingVendorPolicy = false;\n const newVendorPolicies = [...state.vendorPolicies];\n const policyIndex = newVendorPolicies.findIndex(\n vp => vp.id === action.payload.id\n );\n const oldVendorPolicy = { ...state.vendorPolicies[policyIndex] };\n const oldVendorPolicyClauses = oldVendorPolicy?.vendorPolicyClauses;\n let payload: VendorPolicyDetails;\n if (oldVendorPolicyClauses) {\n payload = keepCurrentAnswersAndClauses(\n action,\n oldVendorPolicyClauses,\n oldVendorPolicy\n );\n } else {\n payload = action.payload;\n }\n if (policyIndex === -1) {\n newVendorPolicies.push(payload);\n } else {\n newVendorPolicies.splice(policyIndex, 1, payload);\n }\n state.vendorPolicies = newVendorPolicies;\n },\n patchVendorPolicyFailure: (state, action: PayloadAction) => {\n state.isPatchingVendorPolicy = false;\n state.patchVendorPolicyError = action.payload;\n },\n\n setSearchTerm: (state, action: PayloadAction) => {\n state.searchTerm = action.payload;\n },\n setSearchText: (state, action: PayloadAction) => {\n state.searchText = action.payload;\n },\n showAutoSave: state => {\n state.showAutoSaveToast = true;\n },\n hideIsPaymentSuccessfulShowing: state => {\n state.isPaymentSuccessfulShowing = false;\n },\n showIsPaymentSuccessfulShowing: state => {\n state.isPaymentSuccessfulShowing = true;\n },\n showPolicySummaryToast: (state, action: PayloadAction) => {\n state.isPolicySummaryToastShowing = true;\n state.policySummaryToastId = action.payload;\n },\n hidePolicySummaryToast: state => {\n state.isPolicySummaryToastShowing = false;\n state.policySummaryToastId = undefined;\n },\n closeAttestationManagement: state => {\n state.attestationManagementVendorDocument = undefined;\n state.isAttestationManagementModalShowing = false;\n },\n openAttestationManagement: (\n state,\n action: PayloadAction\n ) => {\n state.attestationManagementVendorDocument = action.payload;\n state.isAttestationManagementModalShowing = true;\n },\n closeApprovalManagement: state => {\n state.approvalManagementVendorDocumentId = undefined;\n state.isApprovalManagementModalShowing = false;\n },\n openApprovalManagement: (\n state,\n action: PayloadAction<{\n id: string;\n name: string;\n isCancelable?: boolean;\n }>\n ) => {\n state.approvalManagementVendorDocumentId = action.payload.id;\n state.approvalManagementVendorDocumentName = action.payload.name;\n state.isApprovalManagementModalShowing = true;\n state.isApprovalManagementModalCancelable = action.payload.isCancelable;\n },\n fetchDocumentApprovalsRequest: state => {\n state.approvals = [];\n state.isFetchingDocumentApprovals = true;\n },\n fetchDocumentApprovalsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.approvals = action.payload;\n state.isFetchingDocumentApprovals = false;\n },\n fetchDocumentApprovalsFailure: (state, action: PayloadAction) => {\n state.isFetchingDocumentApprovals = false;\n },\n postAttestationRequest: state => {\n state.isPostingAttestation = true;\n state.postAttestationError = undefined;\n },\n postAttestationSuccess: state => {\n state.isPostingAttestation = false;\n },\n postAttestationFailure: (state, action: PayloadAction) => {\n state.isPostingAttestation = false;\n state.postAttestationError = action.payload;\n },\n patchApprovalRequest: state => {\n state.isPostingApproval = true;\n state.patchApprovalError = undefined;\n },\n patchApprovalSuccess: state => {\n state.isPostingApproval = false;\n },\n patchApprovalFailure: (state, action: PayloadAction) => {\n state.isPostingApproval = false;\n state.patchApprovalError = action.payload;\n },\n skipAttestationRequest: state => {\n state.isSkippingAttestation = true;\n state.skipAttestationError = undefined;\n },\n skipAttestationSuccess: state => {\n state.isSkippingAttestation = false;\n },\n skipAttestationFailure: (state, action: PayloadAction) => {\n state.isSkippingAttestation = false;\n state.skipAttestationError = action.payload;\n },\n skipApprovalRequest: state => {\n state.isSkippingApproval = true;\n state.skipApprovalError = undefined;\n },\n skipApprovalSuccess: state => {\n state.isSkippingApproval = false;\n },\n skipApprovalFailure: (state, action: PayloadAction) => {\n state.isSkippingApproval = false;\n state.skipApprovalError = action.payload;\n },\n showDocumentLibraryModal: state => {\n state.isDocumentLibraryModalShowing = true;\n },\n hideDocumentLibraryModal: state => {\n state.isDocumentLibraryModalShowing = false;\n },\n showExistingPolicyWarningModal: (\n state,\n action: PayloadAction<{\n policyId: string;\n existingPolicyWarningModalMode: ExistingPolicyWarningModalMode;\n }>\n ) => {\n state.existingPolicyWarningModalMode =\n action.payload.existingPolicyWarningModalMode;\n state.isExistingPolicyWarningModalShowing = true;\n state.selectedPolicyId = action.payload.policyId;\n },\n closeExistingPolicyWarningModal: state => {\n state.isExistingPolicyWarningModalShowing = false;\n },\n openManageRejectionModal: (\n state,\n action: PayloadAction\n ) => {\n state.isManageRejectionModalShowing = true;\n state.rejectedItemToManage = action.payload;\n },\n closeManageRejectionModal: state => {\n state.isManageRejectionModalShowing = false;\n state.rejectedItemToManage = null;\n },\n readReminderRequest: (state, action: PayloadAction) => {\n state.sendingReadReminder = action.payload;\n state.readReminderError = undefined;\n },\n readReminderSuccess: state => {\n state.sendingReadReminder = null;\n },\n readReminderFailure: (state, action: PayloadAction) => {\n state.sendingReadReminder = null;\n state.readReminderError = action.payload;\n },\n showPolicyDrawer: state => {\n state.isPolicyDrawerShowing = true;\n },\n showPolicyDrawerForReadRequest: state => {\n state.isPolicyDrawerShowing = true;\n state.isPolicyDrawerShowingForReadRequest = true;\n },\n hidePolicyDrawer: state => {\n state.isPolicyDrawerShowing = false;\n state.isPolicyDrawerShowingForReadRequest = false;\n state.policyToEdit = null;\n },\n updatePolicyToEdit: (\n state,\n action: PayloadAction\n ) => {\n state.policyToEdit = action.payload;\n },\n updatePolicyToEditField: (\n state,\n action: PayloadAction>\n ) => {\n state.policyToEdit = {\n ...state.policyToEdit,\n ...action.payload,\n };\n },\n fetchPolicyTemplateCategoriesRequest: state => {\n state.isFetchingPolicyCategories = true;\n },\n fetchPolicyTemplateCategoriesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingPolicyCategories = false;\n state.policyCategories = action.payload;\n },\n },\n extraReducers: builder => {\n builder\n .addCase(fetchVendorPoliciesDetails.pending, state => {\n state.fetchVendorPoliciesDetailsStatus = 'loading';\n })\n .addCase(\n fetchVendorPoliciesDetails.fulfilled,\n (state, action: PayloadAction) => {\n state.fetchVendorPoliciesDetailsStatus = 'succeeded';\n if (\n window.location.pathname.endsWith('/policies/draft') ||\n window.location.pathname.endsWith('/policies')\n ) {\n state.vendorPolicies = action.payload;\n }\n }\n )\n .addCase(fetchVendorPoliciesDetails.rejected, state => {\n state.fetchVendorPoliciesDetailsStatus = 'failed';\n })\n .addCase(fetchVendorPolicies.pending, state => {\n state.fetchVendorPoliciesStatus = 'loading';\n })\n .addCase(\n fetchVendorPolicies.fulfilled,\n (state, action: PayloadAction) => {\n state.fetchVendorPoliciesStatus = 'succeeded';\n }\n )\n .addCase(fetchVendorPolicies.rejected, state => {\n state.fetchVendorPoliciesStatus = 'failed';\n })\n .addCase(fetchPolicies.pending, state => {\n state.fetchPoliciesStatus = 'loading';\n })\n .addCase(\n fetchPolicies.fulfilled,\n (state, action: PayloadAction) => {\n state.fetchPoliciesStatus = 'succeeded';\n state.policies = action.payload;\n }\n )\n .addCase(fetchPolicies.rejected, state => {\n state.fetchPoliciesStatus = 'failed';\n })\n .addCase(fetchPolicyAttestationGroups.pending, state => {\n state.fetchPolicyAttestationGroupsStatus = 'loading';\n })\n .addCase(fetchPolicyAttestationGroups.fulfilled, (state, _) => {\n state.fetchPolicyAttestationGroupsStatus = 'succeeded';\n })\n .addCase(fetchPolicyAttestationGroups.rejected, state => {\n state.fetchPolicyAttestationGroupsStatus = 'failed';\n })\n .addCase(patchPolicyAttestationGroups.pending, state => {\n state.patchPolicyAttestationGroupsStatus = 'loading';\n })\n .addCase(patchPolicyAttestationGroups.fulfilled, (state, _) => {\n state.patchPolicyAttestationGroupsStatus = 'succeeded';\n })\n .addCase(patchPolicyAttestationGroups.rejected, state => {\n state.patchPolicyAttestationGroupsStatus = 'failed';\n });\n },\n});\n\nexport const {\n clearAutoSave,\n collapseCategory,\n completePolicyRequest,\n completePolicySuccess,\n completePolicyFailure,\n createPolicyRequest,\n createPolicySuccess,\n createPolicyFailure,\n deletePolicyRequest,\n deletePolicySuccess,\n deletePolicyFailure,\n expandCategory,\n fetchVendorPolicyRequest,\n fetchVendorPolicySuccess,\n fetchVendorPolicyFailure,\n patchVendorPolicyClauseRequest,\n patchVendorPolicyClauseSuccess,\n patchVendorPolicyClauseFailure,\n patchVendorPolicyRequest,\n patchVendorPolicySuccess,\n patchVendorPolicyFailure,\n updateVendorPoliciesAnswers,\n updateVendorPolicyProgress,\n setSearchTerm,\n setSearchText,\n showAutoSave,\n hidePolicySummaryToast,\n showPolicySummaryToast,\n hideIsPaymentSuccessfulShowing,\n showIsPaymentSuccessfulShowing,\n closeAttestationManagement,\n openAttestationManagement,\n postAttestationRequest,\n postAttestationSuccess,\n postAttestationFailure,\n patchApprovalRequest,\n patchApprovalSuccess,\n patchApprovalFailure,\n skipAttestationRequest,\n skipAttestationSuccess,\n skipAttestationFailure,\n skipApprovalRequest,\n skipApprovalSuccess,\n skipApprovalFailure,\n closeApprovalManagement,\n openApprovalManagement,\n fetchDocumentApprovalsRequest,\n fetchDocumentApprovalsSuccess,\n fetchDocumentApprovalsFailure,\n fetchPolicyTemplateCategoriesRequest,\n fetchPolicyTemplateCategoriesSuccess,\n showDocumentLibraryModal,\n hideDocumentLibraryModal,\n showExistingPolicyWarningModal,\n closeExistingPolicyWarningModal,\n openManageRejectionModal,\n closeManageRejectionModal,\n readReminderRequest,\n readReminderSuccess,\n readReminderFailure,\n hidePolicyDrawer,\n showPolicyDrawer,\n showPolicyDrawerForReadRequest,\n updatePolicyToEdit,\n updatePolicyToEditField,\n} = policiesSlice.actions;\n\nexport default policiesSlice.reducer;\n","import { VendorPolicyDetails, Answer, AnswerFromJSON } from '../swagger';\n\nexport const mapPolicyTable = (\n policy: VendorPolicyDetails\n): VendorPolicyDetails => {\n const copiedPolicy: VendorPolicyDetails = JSON.parse(JSON.stringify(policy));\n copiedPolicy.vendorPolicyClauses.forEach(clause =>\n clause.questions.forEach(question => {\n if (question.table) {\n const answers = question.table.answers\n ? (question.table.answers as Answer[][]).map(answersRow =>\n answersRow.map(answer => AnswerFromJSON(answer))\n )\n : undefined;\n\n if (answers.length) {\n question.table.answers = answers;\n }\n }\n })\n );\n return copiedPolicy;\n};\n","import { push } from 'connected-react-router';\nimport { api } from '../../api/api';\nimport { getApiErrorMessage } from '../../functions/getApiErrorMessage';\nimport {\n VendorDocumentApproval,\n VendorDocumentAttestation,\n VendorDocumentsIdVendorDocumentAttestationGroupsGetRequest,\n VendorDocumentsIdVendorDocumentAttestationGroupsPatchRequest,\n VendorPolicy,\n VendorPolicyClause,\n VendorPolicyDetails,\n VendorPolicyVersionBumpEnum,\n VendorsVendorIdVendorPoliciesGetRequest,\n} from '../../swagger';\nimport { UNKNOWN_ERROR } from '../../types/constants';\nimport { PdfOpenMode } from '../../types/pdfOpenMode';\nimport { VoidThunk } from '../../types/voidThunk';\nimport {\n clearErrorMessage,\n download,\n openPdfPreview,\n setErrorMessage,\n showGlobalToast,\n showSubscriptionRequiredModal,\n} from '../global/globalSlice';\nimport { getErrorMessage, handleThunkError } from '../helpers/thunkHelpers';\nimport { fetchVendorPolicyDocuments } from '../vendors/vendorsThunks';\nimport {\n closeApprovalManagement,\n closeAttestationManagement,\n closeExistingPolicyWarningModal,\n completePolicyFailure,\n completePolicyRequest,\n completePolicySuccess,\n createPolicyFailure,\n createPolicyRequest,\n createPolicySuccess,\n deletePolicyFailure,\n deletePolicyRequest,\n deletePolicySuccess,\n fetchDocumentApprovalsFailure,\n fetchDocumentApprovalsRequest,\n fetchDocumentApprovalsSuccess,\n fetchPolicyTemplateCategoriesRequest,\n fetchPolicyTemplateCategoriesSuccess,\n fetchVendorPolicyFailure,\n fetchVendorPolicyRequest,\n fetchVendorPolicySuccess,\n hideDocumentLibraryModal,\n openApprovalManagement,\n patchApprovalFailure,\n patchApprovalRequest,\n patchApprovalSuccess,\n patchVendorPolicyClauseFailure,\n patchVendorPolicyClauseRequest,\n patchVendorPolicyClauseSuccess,\n patchVendorPolicyFailure,\n patchVendorPolicyRequest,\n patchVendorPolicySuccess,\n postAttestationFailure,\n postAttestationRequest,\n postAttestationSuccess,\n readReminderFailure,\n readReminderRequest,\n readReminderSuccess,\n showAutoSave,\n skipApprovalFailure,\n skipApprovalRequest,\n skipApprovalSuccess,\n skipAttestationFailure,\n skipAttestationRequest,\n skipAttestationSuccess,\n updateVendorPoliciesAnswers,\n updateVendorPolicyProgress,\n} from './policiesSlice';\nimport { DocumentType } from '../../constants/DocumentType';\nimport { mapPolicyTable } from '../../functions/mapPolicyTable';\nimport moment from 'moment';\nimport { vendorPolicyCalculations } from '../../functions/vendorPolicyCalculations';\nimport { removeDupFromArrayByProp } from '../../functions/removeDupFromArrayByProp';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { ApplicationState } from '../../types/applicationState';\nimport { WithoutVendorId } from '../../features/calendar/store/calendarThunksApiHelpers';\nimport { policiesPageRoute } from '../../components/Routes/Routes';\n\nexport const calculatePolicyProgress =\n (vendorPolicyId: VendorPolicyDetails['id']): VoidThunk =>\n async dispatch => {\n const policy = await api().vendorPoliciesIdGet({\n id: vendorPolicyId,\n omitClauseText: true,\n });\n const { stats } = vendorPolicyCalculations(policy);\n const progress =\n stats.reduce((acc, s) => acc + s[1], 0) / stats.length || 0;\n dispatch(updateVendorPolicyProgress({ ...policy, progress }));\n dispatch(patchVendorPolicyProgress(policy.id, progress));\n };\n\nexport const deletePolicy =\n (policyId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deletePolicyRequest());\n await api().vendorPoliciesIdDelete({ id: policyId });\n dispatch(deletePolicySuccess());\n dispatch(fetchPolicies());\n dispatch(fetchVendorPoliciesDetails());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(deletePolicyFailure(apiErrorMessage));\n } else {\n dispatch(\n deletePolicyFailure(\n 'An error occurred deleting the policy. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(deletePolicyFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchVendorPolicy =\n (\n vendorPolicyId: string,\n onSuccess?: (response: VendorPolicyDetails) => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchVendorPolicyRequest());\n const response = await api().vendorPoliciesIdGet({ id: vendorPolicyId });\n if (onSuccess) onSuccess(response);\n dispatch(fetchVendorPolicySuccess(mapPolicyTable(response)));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorPolicyFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorPolicyFailure(\n 'An error occurred fetching the vendor policy. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorPolicyFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const completePolicy =\n (vendorPolicyId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(completePolicyRequest());\n const response = await api().vendorPoliciesIdPublishPost({\n id: vendorPolicyId,\n });\n dispatch(completePolicySuccess());\n dispatch(\n openApprovalManagement({\n id: response.vendorDocumentId,\n name: response.name,\n isCancelable: false,\n })\n );\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(completePolicyFailure(apiErrorMessage));\n } else {\n dispatch(\n completePolicyFailure(\n 'An error occurred completing the policy. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(completePolicyFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const createPolicy =\n ({\n policyId,\n versionBump,\n changeReason,\n onSuccess = () => {},\n }: {\n policyId: string;\n versionBump?: string;\n changeReason?: string;\n onSuccess?: (response: VendorPolicy) => void;\n }): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(createPolicyRequest(policyId));\n const response = await api().vendorsIdVendorPoliciesPost({\n id: vendorId,\n vendorPolicy: {\n policyId,\n versionBump: versionBump as VendorPolicyVersionBumpEnum,\n changeReason,\n },\n });\n dispatch(createPolicySuccess(response));\n dispatch(hideDocumentLibraryModal());\n dispatch(closeExistingPolicyWarningModal());\n onSuccess(response);\n } catch (err) {\n if (err instanceof Response) {\n if (err.status === 402) {\n dispatch(hideDocumentLibraryModal());\n dispatch(createPolicyFailure());\n dispatch(showSubscriptionRequiredModal());\n return;\n }\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(createPolicyFailure(apiErrorMessage));\n } else {\n dispatch(\n createPolicyFailure(\n 'An error occurred creating the policy. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(createPolicyFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const patchVendorPolicyClause =\n (id: string, vendorPolicyClause: VendorPolicyClause): VoidThunk =>\n async dispatch => {\n try {\n dispatch(patchVendorPolicyClauseRequest({ ...vendorPolicyClause, id }));\n const response = await api().vendorPolicyClausesIdPatch({\n id,\n vendorPolicyClause,\n });\n dispatch(patchVendorPolicyClauseSuccess(response));\n dispatch(showAutoSave());\n } catch (error) {\n await handleThunkError(\n 'An error occurred updating the policy clause. Please try again or contact support.',\n { dispatch, error }\n );\n }\n };\n\nexport const patchVendorPolicyProgress =\n (\n id: VendorPolicyDetails['id'],\n progress: VendorPolicyDetails['progress']\n ): VoidThunk =>\n async (dispatch, getState) => {\n try {\n await api().vendorPoliciesIdProgressPatch({\n id,\n progress: { progress },\n });\n } catch (err) {\n console.log(err);\n dispatch(patchVendorPolicyFailure(UNKNOWN_ERROR));\n }\n };\n\nexport const patchVendorPolicy =\n (\n id: string,\n vendorPolicy: VendorPolicyDetails,\n isAutoSave: boolean\n ): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const answersPropertyNames = vendorPolicy.vendorPolicyAnswers?.map(\n answer => answer.propertyName\n );\n\n const updatedBy = getState().user.userDetails.fullName;\n const updatedAt = moment().toISOString();\n dispatch(patchVendorPolicyRequest({ ...vendorPolicy, id }));\n dispatch(\n updateVendorPoliciesAnswers({\n answersPropertyNames,\n updatedBy,\n updatedAt,\n policyId: id,\n })\n );\n const response = await api().vendorPoliciesIdPatch({\n id,\n vendorPolicy,\n });\n dispatch(patchVendorPolicySuccess(mapPolicyTable(response)));\n dispatch(fetchVendorPolicy(id));\n if (isAutoSave) {\n dispatch(showAutoSave());\n } else {\n dispatch(showGlobalToast('Policy has been successfully updated.'));\n }\n } catch (error) {\n await handleThunkError(\n 'An error occurred updating the policy. Please try again or contact support.',\n { dispatch, error }\n );\n }\n };\n\nexport const openVendorPolicyPdf =\n (id: string, mode: PdfOpenMode): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchVendorPolicyRequest());\n const response = await api().vendorPoliciesIdGet({ id });\n dispatch(fetchVendorPolicySuccess(response));\n if (\n mode === PdfOpenMode.Attest ||\n mode === PdfOpenMode.Approve ||\n mode === PdfOpenMode.Preview\n ) {\n dispatch(\n openPdfPreview({\n mode,\n documentType: DocumentType.Policy,\n vendorDocumentId: response.vendorDocumentId,\n title: response.name,\n url:\n response.document || `/api/v1/vendor_policies/${response.id}/pdf`,\n })\n );\n } else {\n dispatch(\n download(\n response.document || `/api/v1/vendor_policies/${response.id}/pdf`\n )\n );\n }\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred opening the policy PDF. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchVendorPolicyFailure(apiErrorMessage));\n }\n }\n };\n\nexport const postAttestation =\n ({\n policyId,\n attestationDueAt,\n attestationMessage,\n attestations,\n selectedUsers,\n onSuccess,\n }: {\n policyId: string;\n attestationDueAt: string;\n attestationMessage: string;\n attestations: VendorDocumentAttestation[];\n selectedUsers: VendorDocumentAttestation[];\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(postAttestationRequest());\n const selectedAttestationsToSend = selectedUsers.map(attestation => ({\n ...attestation,\n required: true,\n attestationDueAt,\n }));\n\n const filteredAttestations: VendorDocumentAttestation[] =\n attestations.filter(attestation => {\n const attestationIsSelected = !!selectedAttestationsToSend.find(\n selectedAttest =>\n attestation.vendorUserId === selectedAttest.vendorUserId\n );\n return !attestationIsSelected;\n });\n\n const newAttestations = [\n ...filteredAttestations,\n ...selectedAttestationsToSend,\n ];\n const uniqueNewAttestationsArr = [...new Set(newAttestations)];\n const uniqueNewAttestations = removeDupFromArrayByProp(\n uniqueNewAttestationsArr,\n 'email'\n );\n\n await api().vendorDocumentsIdPatch({\n id: policyId,\n vendorDocument: {\n attestationMessage,\n vendorDocumentAttestations: uniqueNewAttestations,\n },\n });\n dispatch(postAttestationSuccess());\n dispatch(closeAttestationManagement());\n dispatch(fetchVendorPolicyDocuments());\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(postAttestationFailure(apiErrorMessage));\n } else {\n dispatch(\n postAttestationFailure(\n 'An error occurred posting the read request. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(postAttestationFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const sendReadReminder =\n ({\n attestationId,\n onSuccess,\n }: {\n attestationId: string;\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(readReminderRequest(attestationId));\n\n await api().vendorDocumentAttestationsAttestationIdNotifyPost({\n attestationId,\n });\n dispatch(readReminderSuccess());\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(readReminderFailure(apiErrorMessage));\n } else {\n dispatch(\n readReminderFailure(\n 'An error occurred sending read reminder. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(readReminderFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const patchApproval =\n ({\n policyId,\n approvals,\n approvalMessage,\n selectedUsers,\n onSuccess,\n }: {\n policyId: string;\n approvals: VendorDocumentApproval[];\n approvalMessage: string;\n selectedUsers: VendorDocumentApproval[];\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(patchApprovalRequest());\n const newApprovals: VendorDocumentApproval[] = approvals.map(u => ({\n id: u.id,\n vendorUserId: u.vendorUserId,\n required: !!selectedUsers.find(s => s.vendorUserId === u.vendorUserId),\n }));\n await api().vendorDocumentsIdPatch({\n id: policyId,\n vendorDocument: {\n vendorDocumentApprovals: newApprovals,\n approvalMessage,\n },\n });\n dispatch(patchApprovalSuccess());\n dispatch(closeApprovalManagement());\n dispatch(push(policiesPageRoute));\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(patchApprovalFailure(apiErrorMessage));\n } else {\n dispatch(\n patchApprovalFailure(\n 'An error occurred posting the approval(s). Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(patchApprovalFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const skipApproval =\n ({\n policyId,\n onSuccess,\n }: {\n policyId: string;\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(skipApprovalRequest());\n await api().vendorDocumentsIdSkipApprovalPost({\n id: policyId,\n });\n dispatch(skipApprovalSuccess());\n dispatch(closeApprovalManagement());\n dispatch(fetchVendorPolicyDocuments());\n dispatch(push(policiesPageRoute));\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(skipApprovalFailure(apiErrorMessage));\n } else {\n dispatch(\n skipApprovalFailure(\n 'An error occurred skipping the approval(s). Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(patchApprovalFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const skipAttestation =\n ({\n policyId,\n onSuccess,\n }: {\n policyId: string;\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(skipAttestationRequest());\n await api().vendorDocumentsIdSkipAttestationPost({\n id: policyId,\n });\n dispatch(skipAttestationSuccess());\n onSuccess && onSuccess();\n dispatch(fetchVendorPolicyDocuments(false));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(skipAttestationFailure(apiErrorMessage));\n } else {\n dispatch(\n skipAttestationFailure(\n 'An error occurred skipping the read request(s). Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(skipAttestationFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchDocumentApprovals =\n (documentId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchDocumentApprovalsRequest());\n const response = await api().vendorDocumentsIdVendorDocumentApprovalsGet({\n id: documentId,\n });\n dispatch(fetchDocumentApprovalsSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchDocumentApprovalsFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchDocumentApprovalsFailure(\n 'An error occurred fetching the vendor policy. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchDocumentApprovalsFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchPolicyTemplateCategories =\n (): VoidThunk => async dispatch => {\n try {\n dispatch(fetchPolicyTemplateCategoriesRequest());\n dispatch(clearErrorMessage());\n const response = await api().policyCategoriesGet();\n dispatch(fetchPolicyTemplateCategoriesSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(setErrorMessage(apiErrorMessage));\n } else {\n dispatch(\n setErrorMessage(\n 'An error occurred fetching the policy categories. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(setErrorMessage(UNKNOWN_ERROR));\n }\n }\n };\n\n// Used in main /policies page and return model\n\nexport const fetchVendorPoliciesDetails = createAsyncThunk(\n 'vendorPolicies/fetchVendorPoliciesDetails',\n async (_, { getState, dispatch }) => {\n try {\n const vendorId = (getState() as ApplicationState).vendors.currentVendor\n ?.id;\n\n const response = await api().vendorsIdVendorPoliciesGet({ id: vendorId });\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred fetching vendor policies details. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport type fetchVendorPolicies =\n | WithoutVendorId\n | undefined;\n\n// used in control RHS to fetch policies list\nexport const fetchVendorPolicies = createAsyncThunk(\n 'vendorPolicies/fetchVendorPolicies',\n async (filterParams: fetchVendorPolicies, { getState, dispatch }) => {\n try {\n const vendorId = (getState() as ApplicationState).vendors.currentVendor\n ?.id;\n\n const params: VendorsVendorIdVendorPoliciesGetRequest = {\n vendorId,\n ...filterParams,\n };\n const response = await api().vendorsVendorIdVendorPoliciesGet(params);\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred fetching vendor policies. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchPolicies = createAsyncThunk(\n 'policies/fetchPolicies',\n async (_, { dispatch }) => {\n try {\n const response = await api().policiesGet();\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred fetching policies. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchPoliciesForVendor = createAsyncThunk(\n 'policies/fetchPolicies',\n async (_, { dispatch, getState }) => {\n try {\n const vendorId = (getState() as ApplicationState).vendors.currentVendor\n ?.id;\n const response = await api().vendorsIdPoliciesGet({ id: vendorId });\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred fetching policies for vendor. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchPolicyAttestationGroups = createAsyncThunk(\n 'policies/fetchPolicyAttestationGroups',\n async (\n params: VendorDocumentsIdVendorDocumentAttestationGroupsGetRequest,\n { dispatch }\n ) => {\n try {\n const response =\n await api().vendorDocumentsIdVendorDocumentAttestationGroupsGet(params);\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred fetching attestation groups for policy drawer. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const patchPolicyAttestationGroups = createAsyncThunk(\n 'policies/patchPolicyAttestationGroups',\n async (\n params: VendorDocumentsIdVendorDocumentAttestationGroupsPatchRequest,\n { dispatch }\n ) => {\n try {\n const response =\n await api().vendorDocumentsIdVendorDocumentAttestationGroupsPatch(\n params\n );\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred patching attestation groups for policy drawer. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n","import { ReportModel } from '../../swagger/models/ReportModel';\nimport { ReportsState } from './reportsState';\nimport { createSlice, PayloadAction } from '@reduxjs/toolkit';\n\nconst initialState = {\n reportsSearch: null,\n isFetchingReports: false,\n reports: [],\n isCreatingReport: false,\n isDeletingReport: false,\n} as ReportsState;\n\nconst reportsSlice = createSlice({\n initialState,\n name: 'reportsSlice',\n reducers: {\n fetchReportsRequest: state => {\n state.isFetchingReports = true;\n },\n fetchReportsSuccess: (state, action: PayloadAction) => {\n state.isFetchingReports = false;\n state.reports = action.payload;\n },\n fetchReportsFailure: (state, _) => {\n state.isFetchingReports = false;\n },\n deleteReportFailure: (state, _) => {\n state.isDeletingReport = false;\n },\n deleteReportRequest: state => {\n state.isDeletingReport = true;\n },\n deleteReportSuccess: (state, action: PayloadAction) => {\n state.isDeletingReport = false;\n state.reports = state.reports.filter(\n report => report.id !== action.payload\n );\n },\n\n createReportRequest: state => {\n state.isCreatingReport = true;\n },\n createReportSuccess: (state, action: PayloadAction) => {\n state.isCreatingReport = false;\n state.reports.push(action.payload);\n },\n createReportFailure: (state, _) => {\n state.isCreatingReport = false;\n },\n fetchReportRequest: state => {\n state.isFetchingReport = true;\n },\n fetchReportSuccess: (state, action: PayloadAction) => {\n state.currentReport = action.payload;\n state.isFetchingReport = false;\n },\n fetchReportFailure: (state, _) => {\n state.isFetchingReport = false;\n },\n setReportsSearch: (state, action: PayloadAction) => {\n state.reportsSearch = action.payload;\n },\n fetchReportDocumentRequest: state => {\n state.isFetchingReportDocument = true;\n },\n fetchReportDocumentSuccess: state => {\n state.isFetchingReportDocument = false;\n },\n fetchReportDocumentFailure: (state, _) => {\n state.isFetchingReportDocument = false;\n },\n cleanCurrentReport: state => {\n state.currentReport = null;\n },\n },\n});\n\nexport const {\n fetchReportsRequest,\n fetchReportsFailure,\n fetchReportsSuccess,\n deleteReportFailure,\n deleteReportRequest,\n deleteReportSuccess,\n createReportFailure,\n createReportRequest,\n createReportSuccess,\n fetchReportRequest,\n fetchReportSuccess,\n fetchReportFailure,\n setReportsSearch,\n fetchReportDocumentRequest,\n fetchReportDocumentSuccess,\n fetchReportDocumentFailure,\n cleanCurrentReport,\n} = reportsSlice.actions;\n\nexport default reportsSlice.reducer;\n","import { VoidThunk } from '../../types/voidThunk';\n\nimport { getErrorMessage } from '../helpers/thunkHelpers';\nimport { api } from '../../api/api';\nimport {\n createReportFailure,\n createReportRequest,\n createReportSuccess,\n deleteReportFailure,\n deleteReportRequest,\n deleteReportSuccess,\n fetchReportDocumentFailure,\n fetchReportDocumentRequest,\n fetchReportDocumentSuccess,\n fetchReportFailure,\n fetchReportRequest,\n fetchReportsFailure,\n fetchReportsRequest,\n fetchReportsSuccess,\n fetchReportSuccess,\n} from './reportsSlice';\nimport {\n ReportModel,\n ReportCreatePayloadReport,\n VendorsVendorIdReportsUploadPostRequest,\n} from '../../swagger';\nimport { showGlobalToast } from '../global/globalSlice';\nimport { getRequest } from '../../functions/getRequest';\n\nexport const fetchReports =\n (vendorId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchReportsRequest());\n const result = await api().vendorsVendorIdReportsGet({\n vendorId: vendorId,\n });\n dispatch(fetchReportsSuccess(result));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching s reports. Please try again or contact support.'\n );\n dispatch(fetchReportsFailure(apiErrorMessage));\n }\n };\n\nexport const deleteReport =\n (id: ReportModel['id']): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deleteReportRequest());\n await api().reportsIdDelete({ id });\n dispatch(deleteReportSuccess(id));\n dispatch(showGlobalToast('Report has been successfully deleted'));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while deleting report. Please try again or contact support.'\n );\n dispatch(deleteReportFailure(apiErrorMessage));\n }\n };\n\nexport const createReport =\n (payload: ReportCreatePayloadReport, onSuccess?: () => void): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(createReportRequest());\n const body = { report: payload };\n dispatch(showGlobalToast('Generating report. Please wait...'));\n const report = await api().vendorsVendorIdReportsPost({\n vendorId,\n body,\n });\n dispatch(createReportSuccess(report));\n dispatch(showGlobalToast('A report has been successfully generated.'));\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while creating report. Please try again or contact support.'\n );\n dispatch(createReportFailure(apiErrorMessage));\n }\n };\n\ninterface UploadReportPayload {\n completedAt: string;\n file: File;\n name: string;\n ownerId: string;\n version: string;\n}\n\nexport const uploadReport =\n (payload: UploadReportPayload, onSuccess?: () => void): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(createReportRequest());\n dispatch(showGlobalToast('Uploading report. Please wait...'));\n\n const response = await api().vendorsVendorIdReportsUploadPost({\n vendorId,\n reportCompletedAt: payload.completedAt,\n reportFile: payload.file,\n reportName: payload.name,\n reportOwnerId: payload.ownerId,\n reportVersion: payload.version,\n });\n\n dispatch(createReportSuccess(response));\n dispatch(showGlobalToast('A report has been successfully uploaded.'));\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while uploading report. Please try again or contact support.'\n );\n dispatch(createReportFailure(apiErrorMessage));\n }\n };\n\nexport const fetchReport =\n (id: string, onSuccess?: (report: ReportModel) => void): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchReportRequest());\n const result = await api().reportsIdGet({ id });\n dispatch(fetchReportSuccess(result));\n onSuccess && onSuccess(result);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching report. Please try again or contact support.'\n );\n dispatch(fetchReportFailure(apiErrorMessage));\n }\n };\n\nexport const fetchReportDocument =\n ({\n id,\n successCallback,\n }: {\n id: ReportModel['id'];\n successCallback?: (response: string) => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchReportDocumentRequest());\n // TODO: fix BE swag void type issue\n const response = await getRequest(`/api/v1/reports/${id}/document`);\n const convertedData = await response.blob();\n const url = URL.createObjectURL(convertedData);\n\n dispatch(fetchReportDocumentSuccess());\n successCallback && successCallback(url);\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching report document. Please try again or contact support.'\n );\n dispatch(fetchReportDocumentFailure(apiErrorMessage));\n }\n };\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport {\n RiskCategoryModel,\n RiskModel,\n RiskTemplateModel,\n RiskExtended,\n RiskReportModel,\n ControlModel,\n VendorActionModel,\n} from '../../swagger';\nimport { RiskRegistryState } from './riskRegistryState';\nimport { patchRisk } from './riskRegistryThunks';\n\nconst initialState = {\n isFetchingRisks: false,\n isFetchingRisk: false,\n isFetchingCategories: false,\n isFetchingTemplates: false,\n isFetchingReports: false,\n controls: [],\n vendorActions: [],\n risks: [],\n categories: [],\n reports: [],\n currentReport: null,\n currentRisk: null,\n currentCategory: null,\n templates: [],\n isDeletingRisk: false,\n isApprovingRisk: false,\n showAutoSaveToast: false,\n patchRiskStatus: 'idle',\n} as RiskRegistryState;\n\nconst risksSlice = createSlice({\n initialState,\n name: 'risksSlice',\n reducers: {\n fetchRiskControlsRequest: state => {\n state.controls = [];\n },\n fetchRiskControlsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.controls = action.payload;\n },\n fetchRiskActionsRequest: state => {\n state.vendorActions = [];\n },\n fetchRiskActionsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.vendorActions = action.payload;\n },\n fetchRisksRequest: state => {\n state.isFetchingRisks = true;\n },\n fetchRisksSuccess: (state, action: PayloadAction) => {\n state.isFetchingRisks = false;\n state.risks = action.payload;\n },\n fetchRiskRequest: state => {\n state.isFetchingRisk = true;\n },\n fetchRiskSuccess: (state, action: PayloadAction) => {\n state.isFetchingRisk = false;\n state.currentRisk = action.payload;\n },\n fetchRisksFailure: (state, _) => {\n state.isFetchingRisks = false;\n },\n fetchRiskFailure: (state, _) => {\n state.isFetchingRisk = false;\n },\n updateCurrentRisk: (state, action: PayloadAction) => {\n state.currentRisk = action.payload;\n },\n updateCurrentRiskFailure: (state, action: PayloadAction) => {\n state.currentRiskError = action.payload;\n },\n cleanCurrentRisk: state => {\n state.currentRisk = null;\n },\n fetchRisksCategoriesRequest: state => {\n state.isFetchingCategories = true;\n },\n fetchRisksCategoriesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingCategories = false;\n state.categories = action.payload;\n },\n fetchRisksCategoriesFailure: (state, _) => {\n state.isFetchingCategories = false;\n },\n createCustomRiskRequest: state => {\n state.isCreatingCustomRisk = true;\n },\n createCustomRiskSuccess: state => {\n state.isCreatingCustomRisk = false;\n },\n createCustomRiskFailure: (state, _) => {\n state.isCreatingCustomRisk = false;\n },\n\n createRiskFromTemplateRequest: state => {\n state.isCreatingRiskFromTemplate = true;\n },\n createRiskFromTemplateSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isCreatingRiskFromTemplate = false;\n state.risks.push(action.payload);\n },\n createRiskFromTemplateFailure: (state, _) => {\n state.isCreatingRiskFromTemplate = false;\n },\n fetchRisksTemplatesRequest: state => {\n state.isFetchingTemplates = true;\n },\n fetchRisksTemplatesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingTemplates = false;\n state.templates = action.payload;\n },\n fetchRisksTemplatesFailure: (state, _) => {\n state.isFetchingTemplates = false;\n },\n deleteRiskFailure: (state, _) => {\n state.isDeletingRisk = false;\n },\n deleteRiskRequest: state => {\n state.isDeletingRisk = true;\n },\n deleteRiskSuccess: (state, action: PayloadAction) => {\n state.isDeletingRisk = false;\n state.risks = state.risks.filter(risk => risk.id !== action.payload);\n },\n approveRiskRequest: state => {\n state.isApprovingRisk = true;\n },\n approveRiskFailure: (state, _) => {\n state.isApprovingRisk = false;\n },\n approveRiskSuccess: (state, _) => {\n state.isApprovingRisk = false;\n },\n\n showAutoSaveToast: state => {\n state.showAutoSaveToast = true;\n },\n hideAutoSaveToast: state => {\n state.showAutoSaveToast = false;\n },\n },\n extraReducers: builder => {\n builder\n .addCase(patchRisk.pending, state => {\n state.patchRiskStatus = 'loading';\n })\n .addCase(\n patchRisk.fulfilled,\n (state, action: PayloadAction) => {\n state.patchRiskStatus = 'succeeded';\n state.currentRisk = action.payload;\n }\n )\n .addCase(patchRisk.rejected, state => {\n state.patchRiskStatus = 'failed';\n });\n },\n});\nexport const {\n fetchRiskControlsRequest,\n fetchRiskControlsSuccess,\n fetchRiskActionsRequest,\n fetchRiskActionsSuccess,\n fetchRisksRequest,\n fetchRisksSuccess,\n fetchRisksFailure,\n fetchRiskRequest,\n fetchRiskSuccess,\n fetchRiskFailure,\n fetchRisksCategoriesFailure,\n fetchRisksCategoriesRequest,\n fetchRisksCategoriesSuccess,\n createCustomRiskFailure,\n createCustomRiskRequest,\n createCustomRiskSuccess,\n updateCurrentRisk,\n updateCurrentRiskFailure,\n cleanCurrentRisk,\n fetchRisksTemplatesRequest,\n fetchRisksTemplatesSuccess,\n fetchRisksTemplatesFailure,\n deleteRiskFailure,\n deleteRiskRequest,\n deleteRiskSuccess,\n createRiskFromTemplateFailure,\n createRiskFromTemplateRequest,\n createRiskFromTemplateSuccess,\n approveRiskFailure,\n approveRiskRequest,\n approveRiskSuccess,\n showAutoSaveToast,\n hideAutoSaveToast,\n} = risksSlice.actions;\n\nexport default risksSlice.reducer;\n","import { VoidThunk } from '../../types/voidThunk';\nimport {\n ReferenceCreatePayloadReferenceReferenceableTypeEnum,\n RiskModel,\n RiskCreatePayloadRisk,\n ControlModel,\n VendorActionModel,\n RiskUpdatePayloadRiskInformationSecurityPropertiesEnum,\n VendorsVendorIdVendorActionsPostRequest,\n VendorActionExtendedFromJSON,\n RiskUpdatePayload,\n} from '../../swagger';\n\nimport { getErrorMessage, handleThunkError } from '../helpers/thunkHelpers';\nimport { api } from '../../api/api';\n\nimport {\n approveRiskRequest,\n approveRiskFailure,\n approveRiskSuccess,\n fetchRiskControlsRequest,\n fetchRiskControlsSuccess,\n fetchRiskActionsRequest,\n fetchRiskActionsSuccess,\n createCustomRiskFailure,\n createCustomRiskRequest,\n createCustomRiskSuccess,\n createRiskFromTemplateFailure,\n createRiskFromTemplateRequest,\n createRiskFromTemplateSuccess,\n deleteRiskFailure,\n deleteRiskRequest,\n deleteRiskSuccess,\n fetchRisksCategoriesFailure,\n fetchRisksCategoriesRequest,\n fetchRisksCategoriesSuccess,\n fetchRisksFailure,\n fetchRisksRequest,\n fetchRisksSuccess,\n fetchRiskRequest,\n fetchRiskSuccess,\n fetchRiskFailure,\n fetchRisksTemplatesFailure,\n fetchRisksTemplatesRequest,\n fetchRisksTemplatesSuccess,\n updateCurrentRiskFailure,\n showAutoSaveToast,\n} from './riskRegistrySlice';\nimport { showGlobalToast } from '../global/globalSlice';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\n\nexport const fetchRisks =\n (vendorId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchRisksRequest());\n const result = await api().vendorsVendorIdRisksGet({\n vendorId: vendorId,\n });\n dispatch(fetchRisksSuccess(result));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching risks. Please try again or contact support.'\n );\n dispatch(fetchRisksFailure(apiErrorMessage));\n }\n };\n\nexport const fetchRisk =\n (id: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchRiskRequest());\n const result = await api().risksIdGet({ id });\n dispatch(fetchRiskSuccess(result));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching risk entry. Please try again or contact support.'\n );\n dispatch(fetchRiskFailure(apiErrorMessage));\n }\n };\n\nexport const fetchRisksCategories =\n (): VoidThunk => async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(fetchRisksCategoriesRequest());\n const result = await api().riskCategoriesGet({ vendorId });\n dispatch(fetchRisksCategoriesSuccess(result));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching risks categories. Please try again or contact support.'\n );\n dispatch(fetchRisksCategoriesFailure(apiErrorMessage));\n }\n };\n\nexport const createCustomRisk =\n (payload: RiskCreatePayloadRisk, onSuccess: () => void): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(createCustomRiskRequest());\n await api().vendorsVendorIdRisksPost({\n vendorId,\n body: { risk: payload },\n });\n dispatch(createCustomRiskSuccess());\n onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while creating custom risk. Please try again or contact support.'\n );\n dispatch(createCustomRiskFailure(apiErrorMessage));\n }\n };\n\n// used in RiskEditor\n// TODO: send only changed fields\nexport const commitCurrentRisk =\n (): VoidThunk => async (dispatch, getState) => {\n try {\n const model = getState().riskRegistry.currentRisk;\n const risk = {\n ownerId: model.owner?.id,\n inherentRiskLikelihood: model.inherentRiskLikelihood,\n inherentRiskConsequence: model.inherentRiskConsequence,\n inherentRiskComment: model.inherentRiskComment,\n residualRiskLikelihood: model.residualRiskLikelihood,\n residualRiskConsequence: model.residualRiskConsequence,\n residualRiskComment: model.residualRiskComment,\n treatmentStrategy: model.treatmentStrategy,\n treatmentExplanation: model.treatmentExplanation,\n informationSecurityProperties:\n model.informationSecurityProperties as unknown as RiskUpdatePayloadRiskInformationSecurityPropertiesEnum[],\n };\n await api().risksIdPatch({\n id: model.id,\n body: { risk },\n });\n dispatch(showAutoSaveToast());\n } catch (err) {\n const errorMessage = await getErrorMessage(\n err,\n 'An error occurred while updating risk. Please try again or contact support.'\n );\n dispatch(updateCurrentRiskFailure(errorMessage));\n }\n };\n\n// used in Risk Edit Modal\nexport const patchRisk = createAsyncThunk(\n 'riskRegistry/patchRisk',\n async (payload: { id: string; body: RiskUpdatePayload }, { dispatch }) => {\n try {\n return await api().risksIdPatch({\n id: payload.id,\n body: payload.body,\n });\n } catch (error) {\n await handleThunkError(\n 'An error occurred while patching risk. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const createRiskFromTemplate =\n (payload: Pick): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(createRiskFromTemplateRequest());\n const risk = await api().vendorsVendorIdRisksPost({\n vendorId,\n body: { risk: payload },\n });\n dispatch(createRiskFromTemplateSuccess(risk));\n dispatch(showGlobalToast('Risk has been successfully added'));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while creating risk. Please try again or contact support.'\n );\n dispatch(createRiskFromTemplateFailure(apiErrorMessage));\n }\n };\n\nexport const fetchRisksTemplates = (): VoidThunk => async dispatch => {\n try {\n dispatch(fetchRisksTemplatesRequest());\n const result = await api().riskTemplatesGet();\n dispatch(fetchRisksTemplatesSuccess(result));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching risks templates. Please try again or contact support.'\n );\n dispatch(fetchRisksTemplatesFailure(apiErrorMessage));\n }\n};\n\nexport const approveRisk =\n (id: RiskModel['id'], onSuccess = () => {}): VoidThunk =>\n async dispatch => {\n try {\n dispatch(approveRiskRequest());\n await api().risksIdApprovePost({ id });\n dispatch(approveRiskSuccess(id));\n dispatch(showGlobalToast('Risk has been approved'));\n onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while approving risk. Please try again or contact support.'\n );\n dispatch(approveRiskFailure(apiErrorMessage));\n }\n };\n\nexport const deleteRisk =\n (id: RiskModel['id'], onSuccess = () => {}): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deleteRiskRequest());\n await api().risksIdDelete({ id });\n dispatch(deleteRiskSuccess(id));\n dispatch(showGlobalToast('Risk has been successfully deleted'));\n onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while deleting risk. Please try again or contact support.'\n );\n dispatch(deleteRiskFailure(apiErrorMessage));\n }\n };\n\nexport const fetchRiskControls =\n (): VoidThunk => async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(fetchRiskControlsRequest());\n const result = await api().vendorsVendorIdControlsGet({ vendorId });\n dispatch(fetchRiskControlsSuccess(result));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching risks controls. Please try again or contact support.'\n );\n dispatch(fetchRisksCategoriesFailure(apiErrorMessage));\n }\n };\n\nexport const fetchVendorActions =\n (): VoidThunk => async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(fetchRiskActionsRequest());\n const result = await api().vendorsVendorIdVendorActionsGet({ vendorId });\n dispatch(fetchRiskActionsSuccess(result));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching risks tasks. Please try again or contact support.'\n );\n dispatch(fetchRisksCategoriesFailure(apiErrorMessage));\n }\n };\n\nexport const createRiskControlReference =\n (\n controlId: ControlModel['id'],\n riskId: RiskModel['id'],\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n await api().controlsControlIdReferencesPost({\n controlId,\n body: {\n reference: {\n referenceableId: riskId,\n referenceableType:\n ReferenceCreatePayloadReferenceReferenceableTypeEnum.Risk,\n },\n },\n });\n onSuccess();\n } catch (err) {\n const errorMessage = await getErrorMessage(\n err,\n 'An error occurred while adding control. Please try again or contact support.'\n );\n dispatch(updateCurrentRiskFailure(errorMessage));\n }\n };\n\nexport const deleteRiskControlReference =\n (\n controlId: ControlModel['id'],\n riskId: RiskModel['id'],\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n await api().controlsControlIdReferencesDelete({\n controlId,\n referenceableId: riskId,\n referenceableType:\n ReferenceCreatePayloadReferenceReferenceableTypeEnum.Risk,\n });\n onSuccess();\n } catch (err) {\n const errorMessage = await getErrorMessage(\n err,\n 'An error occurred while deleting control. Please try again or contact support.'\n );\n dispatch(updateCurrentRiskFailure(errorMessage));\n }\n };\n\nexport const createRiskActionReference =\n (\n vendorActionId: VendorActionModel['id'],\n riskId: RiskModel['id'],\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n await api().vendorActionsVendorActionIdReferencesPost({\n vendorActionId,\n body: {\n reference: {\n referenceableId: riskId,\n referenceableType:\n ReferenceCreatePayloadReferenceReferenceableTypeEnum.Risk,\n },\n },\n });\n onSuccess();\n } catch (err) {\n const errorMessage = await getErrorMessage(\n err,\n 'An error occurred while adding action. Please try again or contact support.'\n );\n dispatch(updateCurrentRiskFailure(errorMessage));\n }\n };\n\nexport const deleteRiskActionReference =\n (\n vendorActionId: VendorActionModel['id'],\n riskId: RiskModel['id'],\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n await api().vendorActionsVendorActionIdReferencesDelete({\n vendorActionId,\n referenceableId: riskId,\n referenceableType:\n ReferenceCreatePayloadReferenceReferenceableTypeEnum.Risk,\n });\n onSuccess();\n } catch (err) {\n const errorMessage = await getErrorMessage(\n err,\n 'An error occurred while deleting action. Please try again or contact support.'\n );\n dispatch(updateCurrentRiskFailure(errorMessage));\n }\n };\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport {\n Image,\n Invoice,\n PaymentMethod,\n Subscription,\n UserDetails,\n} from '../../swagger';\nimport { UserState, PaymentMethodModalMode } from './userState';\nimport { logoutUser } from './userThunks';\n\nconst userSlice = createSlice({\n initialState: {\n invoices: [],\n isChangingPassword: false,\n isDeletePaymentMethodModalShowing: false,\n isDeleteUserModalShowing: false,\n isDeletingPaymentMethod: false,\n isDeletingSubscription: false,\n isDeletingUser: false,\n isFetchingPaymentMethods: false,\n isFetchingUserDetails: false,\n isPasswordChangeSuccessfulToastShowing: false,\n isPasswordModalShowing: false,\n isProfileDeletedToastShowing: false,\n isProfileMenuShowing: false,\n isProfileModalShowing: false,\n isProfileSavedToastShowing: false,\n isUpdatingUserDetails: false,\n is2FAEnabledShowing: false,\n isTwoFactorSavedToastShowing: false,\n mfaIsVerifying: false,\n paymentMethods: [],\n currentPaymentMethodId: null,\n subscriptions: [], // TODO: move subscription related stuff to pricingState\n userDetails: {},\n logoutUserStatus: 'idle',\n } as unknown as UserState,\n name: 'userSlice',\n reducers: {\n changePasswordRequest: state => {\n state.changePasswordError = undefined;\n state.isChangingPassword = true;\n },\n changePasswordSuccess: state => {\n state.isChangingPassword = false;\n },\n changePasswordFailure: (state, action: PayloadAction) => {\n state.changePasswordError = action.payload;\n state.isChangingPassword = false;\n },\n clearPasswordChangeSuccessfulToast: state => {\n state.isPasswordChangeSuccessfulToastShowing = false;\n },\n clearProfileDeletedToast: state => {\n state.isProfileDeletedToastShowing = false;\n },\n clearProfileSavedToast: state => {\n state.isProfileSavedToastShowing = false;\n },\n closeDeleteProfileModal: state => {\n state.isDeleteUserModalShowing = false;\n },\n closePasswordModal: state => {\n state.isPasswordModalShowing = false;\n },\n closeProfileModal: state => {\n state.isProfileModalShowing = false;\n },\n deletePaymentMethodFailure: (state, action: PayloadAction) => {\n state.deletePaymentMethodError = action.payload;\n state.isDeletingPaymentMethod = false;\n },\n deletePaymentMethodRequest: state => {\n state.deletePaymentMethodError = undefined;\n state.isDeletingPaymentMethod = true;\n },\n deletePaymentMethodSuccess: state => {\n state.isDeletingPaymentMethod = false;\n },\n deleteSubscriptionRequest: state => {\n state.deleteSubscriptionError = undefined;\n state.isDeletingSubscription = true;\n },\n deleteSubscriptionSuccess: state => {\n state.isDeletingSubscription = false;\n },\n deleteSubscriptionFailure: (state, action: PayloadAction) => {\n state.deleteSubscriptionError = action.payload;\n state.isDeletingSubscription = false;\n },\n deleteUserRequest: state => {\n state.deleteUserError = undefined;\n state.isDeletingUser = true;\n },\n deleteUserSuccess: state => {\n state.isDeletingUser = false;\n state.isDeleteUserModalShowing = false;\n state.isProfileDeletedToastShowing = true;\n },\n deleteUserFailure: (state, action: PayloadAction) => {\n state.deleteUserError = action.payload;\n state.isDeletingUser = false;\n },\n changePassword: state => {\n state.isPasswordModalShowing = true;\n },\n editProfile: state => {\n state.isProfileModalShowing = true;\n },\n fetchPaymentMethodsFailure: (state, action: PayloadAction) => {\n state.fetchPaymentMethodsError = action.payload;\n state.isFetchingPaymentMethods = false;\n },\n fetchPaymentMethodsRequest: state => {\n state.fetchPaymentMethodsError = undefined;\n state.isFetchingPaymentMethods = true;\n },\n fetchPaymentMethodsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.paymentMethods = action.payload;\n state.isFetchingPaymentMethods = false;\n state.isDeletePaymentMethodModalShowing = false;\n },\n addPaymentMethodFailure: (state, action: PayloadAction) => {\n state.addPaymentMethodError = action.payload;\n state.isAddingPaymentMethod = false;\n },\n addPaymentMethodRequest: state => {\n state.addPaymentMethodError = undefined;\n state.isAddingPaymentMethod = true;\n },\n updatePaymentMethodRequest: state => {\n state.updatePaymentMethodError = undefined;\n state.isUpdatingPaymentMethod = true;\n },\n addPaymentMethodSuccess: (state, action: PayloadAction) => {\n state.paymentMethods = [...state.paymentMethods, action.payload];\n state.isAddingPaymentMethod = false;\n state.isDeletePaymentMethodModalShowing = false;\n },\n\n updatePaymentMethodFailure: (state, action: PayloadAction) => {\n state.updatePaymentMethodError = action.payload;\n state.isAddingPaymentMethod = false;\n state.isUpdatingPaymentMethod = false;\n },\n updatePaymentMethodSuccess: (\n state,\n action: PayloadAction\n ) => {\n const { payload } = action;\n const newPaymentMethods = state.paymentMethods.map(item => {\n if (item.id !== payload.id) {\n return item;\n }\n return { ...item, ...payload };\n });\n state.paymentMethods = newPaymentMethods;\n\n state.isUpdatingPaymentMethod = false;\n state.isDeletePaymentMethodModalShowing = false;\n },\n fetchSubscriptionsRequest: state => {\n state.fetchSubscriptionsError = undefined;\n state.isFetchingSubscriptions = true;\n },\n fetchSubscriptionsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingSubscriptions = false;\n state.subscriptions = action.payload;\n },\n fetchSubscriptionsFailure: (state, action: PayloadAction) => {\n state.fetchSubscriptionsError = action.payload;\n state.isFetchingSubscriptions = false;\n },\n fetchUserDetailsRequest: state => {\n state.fetchingUserDetailsError = undefined;\n state.isFetchingUserDetails = true;\n },\n fetchUserDetailsSuccess: (state, action: PayloadAction) => {\n state.isFetchingUserDetails = false;\n state.userDetails = action.payload;\n },\n fetchUserDetailsFailure: (state, action: PayloadAction) => {\n state.fetchingUserDetailsError = action.payload;\n state.isFetchingUserDetails = false;\n },\n initiateUserDeletion: state => {\n state.isDeleteUserModalShowing = true;\n state.isProfileModalShowing = false;\n },\n showPasswordChangeSuccessfulToast: state => {\n state.isPasswordChangeSuccessfulToastShowing = true;\n },\n showProfileSavedToast: state => {\n state.isProfileSavedToastShowing = true;\n },\n toggleProfileMenu: state => {\n state.isProfileMenuShowing = !state.isProfileMenuShowing;\n },\n closeProfileMenu: state => {\n state.isProfileMenuShowing = false;\n },\n updateProfileRequest: state => {\n state.updatingUserDetailsError = undefined;\n state.isUpdatingUserDetails = true;\n },\n updateProfileSuccess: state => {\n state.isProfileModalShowing = false;\n state.isUpdatingUserDetails = false;\n },\n updateProfileFailure: (state, action: PayloadAction) => {\n state.updatingUserDetailsError = action.payload;\n state.isUpdatingUserDetails = false;\n },\n addTwoFactorAuthentication: state => {\n state.is2FAEnabledShowing = true;\n },\n addTwoFactorAuthenticationRequest: state => {\n state.mfaIsVerifying = true;\n state.addingTwoFactorError = undefined;\n },\n addTwoFactorAuthenticationFailure: (\n state,\n action: PayloadAction\n ) => {\n state.addingTwoFactorError = action.payload;\n },\n closeTwoFactorAuthentication: state => {\n state.is2FAEnabledShowing = false;\n state.addingTwoFactorError = undefined;\n },\n twoFactorQrCodeLoaded: (\n state,\n action: PayloadAction<{ qrCode: string; mfaAlreadyEnabled: boolean }>\n ) => {\n state.mfaIsVerifying = false;\n state.mfaAlreadyEnabled = action.payload.mfaAlreadyEnabled;\n state.mfaQrCode = action.payload.qrCode;\n },\n twoFactorBackupCodesLoaded: (\n state,\n action: PayloadAction<{ backupCodes: string[] }>\n ) => {\n state.mfaIsVerifying = false;\n state.mfaAlreadyEnabled = true;\n state.mfaBackupCodes = action.payload.backupCodes;\n },\n twoFactorDisabled: state => {\n state.mfaIsVerifying = false;\n state.mfaAlreadyEnabled = false;\n },\n twoFactorVerificationStop: state => {\n state.mfaIsVerifying = false;\n },\n showTwoFactorSavedToast: state => {\n state.isTwoFactorSavedToastShowing = true;\n },\n clearTwoFactorSavedToast: state => {\n state.isTwoFactorSavedToastShowing = false;\n },\n showDeletePaymentMethodModal: state => {\n state.isDeletePaymentMethodModalShowing = true;\n },\n hideDeletePaymentMethodModal: state => {\n state.isDeletePaymentMethodModalShowing = false;\n },\n showAddPaymentMethodModal: (\n state,\n action: PayloadAction\n ) => {\n state.isAddPaymentMethodModalShowing = true;\n state.paymentMethodModalMode = action.payload;\n },\n\n setCurrentPaymentMethodId: (state, action: PayloadAction) => {\n state.currentPaymentMethodId = action.payload;\n },\n\n hideAddPaymentMethodModal: state => {\n state.isAddPaymentMethodModalShowing = false;\n },\n fetchInvoicesRequest: state => {\n state.fetchInvoicesError = undefined;\n state.isFetchingInvoices = true;\n },\n fetchInvoicesSuccess: (state, action: PayloadAction) => {\n state.isFetchingInvoices = false;\n state.invoices = action.payload;\n },\n fetchInvoicesFailure: (state, action: PayloadAction) => {\n state.fetchInvoicesError = action.payload;\n state.isFetchingInvoices = false;\n },\n userSignatureRequest: state => {\n state.isRequestingUserSignature = true;\n },\n userSignatureRequestSuccess: (state, action: PayloadAction) => {\n state.isRequestingUserSignature = false;\n state.userSignature = action.payload;\n },\n userSignatureRequestFailure: (state, action: PayloadAction) => {\n state.userSignatureRequestFailure = action.payload;\n state.isRequestingUserSignature = false;\n },\n cleanupUserSignature: state => {\n state.userSignature = null;\n },\n },\n extraReducers: builder => {\n builder\n .addCase(logoutUser.pending, state => {\n state.logoutUserStatus = 'loading';\n })\n .addCase(logoutUser.fulfilled, state => {\n state.logoutUserStatus = 'succeeded';\n })\n .addCase(logoutUser.rejected, state => {\n state.logoutUserStatus = 'failed';\n });\n },\n});\n\nexport const {\n changePassword,\n changePasswordRequest,\n changePasswordSuccess,\n changePasswordFailure,\n clearPasswordChangeSuccessfulToast,\n clearProfileDeletedToast,\n clearProfileSavedToast,\n closeDeleteProfileModal,\n closePasswordModal,\n closeProfileModal,\n deleteUserRequest,\n deleteUserSuccess,\n deleteUserFailure,\n editProfile,\n fetchUserDetailsRequest,\n fetchUserDetailsSuccess,\n fetchUserDetailsFailure,\n initiateUserDeletion,\n showPasswordChangeSuccessfulToast,\n showProfileSavedToast,\n toggleProfileMenu,\n closeProfileMenu,\n updateProfileRequest,\n updateProfileSuccess,\n updateProfileFailure,\n addTwoFactorAuthentication,\n closeTwoFactorAuthentication,\n showTwoFactorSavedToast,\n clearTwoFactorSavedToast,\n addTwoFactorAuthenticationRequest,\n addTwoFactorAuthenticationFailure,\n fetchSubscriptionsRequest,\n fetchSubscriptionsSuccess,\n fetchSubscriptionsFailure,\n deleteSubscriptionRequest,\n deleteSubscriptionSuccess,\n deleteSubscriptionFailure,\n fetchPaymentMethodsFailure,\n fetchPaymentMethodsRequest,\n fetchPaymentMethodsSuccess,\n deletePaymentMethodFailure,\n deletePaymentMethodRequest,\n deletePaymentMethodSuccess,\n showDeletePaymentMethodModal,\n hideDeletePaymentMethodModal,\n fetchInvoicesRequest,\n fetchInvoicesSuccess,\n fetchInvoicesFailure,\n userSignatureRequest,\n userSignatureRequestSuccess,\n userSignatureRequestFailure,\n showAddPaymentMethodModal,\n setCurrentPaymentMethodId,\n hideAddPaymentMethodModal,\n addPaymentMethodFailure,\n addPaymentMethodRequest,\n updatePaymentMethodRequest,\n addPaymentMethodSuccess,\n updatePaymentMethodSuccess,\n updatePaymentMethodFailure,\n cleanupUserSignature,\n twoFactorQrCodeLoaded,\n twoFactorBackupCodesLoaded,\n twoFactorDisabled,\n twoFactorVerificationStop,\n} = userSlice.actions;\n\nexport default userSlice.reducer;\n","import { push } from 'connected-react-router';\nimport { setGoogleAnalyticsUser } from '../../../packs/googleAnalytics';\nimport { setSentryUser } from '../../../packs/sentry';\nimport { api } from '../../api/api';\nimport { getApiErrorMessage } from '../../functions/getApiErrorMessage';\nimport { getMetaContent } from '../../functions/getMetaContent';\nimport {\n PaymentMethodsIdPatchRequest,\n PaymentMethodsPostRequest,\n UserDetails,\n UserPassword,\n} from '../../swagger';\nimport { UNKNOWN_ERROR } from '../../types/constants';\nimport { VoidThunk } from '../../types/voidThunk';\nimport {\n completeGetStartedChecklistItem,\n GettingStartedChecklistItems,\n} from '../checklists/checklistsThunks';\nimport { showGlobalToast } from '../global/globalSlice';\nimport {\n fetchVendorUsers,\n fetchVendors,\n getVendorProducts,\n} from '../vendors/vendorsThunks';\nimport {\n addPaymentMethodFailure,\n addPaymentMethodRequest,\n addPaymentMethodSuccess,\n updatePaymentMethodSuccess,\n updatePaymentMethodFailure,\n addTwoFactorAuthenticationFailure,\n addTwoFactorAuthenticationRequest,\n changePasswordFailure,\n changePasswordRequest,\n changePasswordSuccess,\n closePasswordModal,\n closeTwoFactorAuthentication,\n deletePaymentMethodFailure,\n deletePaymentMethodRequest,\n deletePaymentMethodSuccess,\n deleteSubscriptionFailure,\n deleteSubscriptionRequest,\n deleteSubscriptionSuccess,\n deleteUserFailure,\n deleteUserRequest,\n deleteUserSuccess,\n fetchInvoicesFailure,\n fetchInvoicesRequest,\n fetchInvoicesSuccess,\n fetchPaymentMethodsFailure,\n fetchPaymentMethodsRequest,\n fetchPaymentMethodsSuccess,\n fetchSubscriptionsFailure,\n fetchSubscriptionsRequest,\n fetchSubscriptionsSuccess,\n fetchUserDetailsFailure,\n fetchUserDetailsRequest,\n fetchUserDetailsSuccess,\n hideAddPaymentMethodModal,\n showPasswordChangeSuccessfulToast,\n showProfileSavedToast,\n showTwoFactorSavedToast,\n updatePaymentMethodRequest,\n updateProfileFailure,\n updateProfileRequest,\n updateProfileSuccess,\n userSignatureRequest,\n userSignatureRequestFailure,\n userSignatureRequestSuccess,\n twoFactorQrCodeLoaded,\n twoFactorBackupCodesLoaded,\n twoFactorDisabled,\n twoFactorVerificationStop,\n} from './userSlice';\nimport { getErrorMessage, handleThunkError } from '../helpers/thunkHelpers';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\n\nexport const deleteSubscription =\n (id: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deleteSubscriptionRequest());\n await api().subscriptionsIdDelete({ id });\n await Promise.all([\n dispatch(fetchVendors()),\n dispatch(fetchSubscriptions()),\n dispatch(getVendorProducts(true)),\n ]);\n\n dispatch(deleteSubscriptionSuccess());\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred deleting your subscription. Please try again or contact support.'\n );\n dispatch(deleteSubscriptionFailure(apiErrorMessage));\n }\n };\n\nexport const deleteUser = (): VoidThunk => async dispatch => {\n try {\n dispatch(deleteUserRequest());\n await api({ Accept: 'application/json' }).usersDelete();\n dispatch(deleteUserSuccess());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(deleteUserFailure(apiErrorMessage));\n } else {\n dispatch(\n deleteUserFailure(\n 'An error occurred deleting your account. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(deleteUserFailure(UNKNOWN_ERROR));\n }\n }\n};\n\nexport const deletePaymentMethod =\n (id: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deletePaymentMethodRequest());\n await api().paymentMethodsIdDelete({ id });\n dispatch(deletePaymentMethodSuccess());\n dispatch(fetchPaymentMethods());\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred deleting the payment method. Please try again or contact support.'\n );\n console.log(err);\n dispatch(deletePaymentMethodFailure(apiErrorMessage));\n }\n }\n };\n\nexport const fetchPaymentMethods = (): VoidThunk => async dispatch => {\n try {\n dispatch(fetchPaymentMethodsRequest());\n const response = await api().paymentMethodsGet();\n dispatch(fetchPaymentMethodsSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred fetching payment methods. Please try again or contact support.'\n );\n console.log(err);\n dispatch(fetchPaymentMethodsFailure(apiErrorMessage));\n }\n }\n};\n\nexport const addPaymentMethod =\n (paymentMethod: PaymentMethodsPostRequest): VoidThunk =>\n async dispatch => {\n try {\n dispatch(addPaymentMethodRequest());\n const response = await api().paymentMethodsPost(paymentMethod);\n dispatch(addPaymentMethodSuccess(response));\n dispatch(showGlobalToast('Payment method was successfully added.'));\n dispatch(hideAddPaymentMethodModal());\n dispatch(fetchPaymentMethods());\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred adding a payment method. Please try again or contact support.'\n );\n console.log(err);\n dispatch(addPaymentMethodFailure(apiErrorMessage));\n }\n }\n };\n\nexport const updatePaymentMethod =\n (params: PaymentMethodsIdPatchRequest): VoidThunk =>\n async dispatch => {\n try {\n dispatch(updatePaymentMethodRequest());\n const response = await api().paymentMethodsIdPatch(params);\n dispatch(updatePaymentMethodSuccess(response));\n dispatch(showGlobalToast('Payment method was successfully updated.'));\n dispatch(hideAddPaymentMethodModal());\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred updating a payment method. Please try again or contact support.'\n );\n console.log(err);\n dispatch(updatePaymentMethodFailure(apiErrorMessage));\n }\n }\n };\n\nexport const fetchSubscriptions =\n (onSuccess?: () => void): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchSubscriptionsRequest());\n const response = await api().subscriptionsGet();\n dispatch(fetchSubscriptionsSuccess(response));\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred fetching subscriptions. Please try again or contact support.'\n );\n dispatch(fetchSubscriptionsFailure(apiErrorMessage));\n }\n };\n\nexport const fetchInvoices = (): VoidThunk => async (dispatch, getState) => {\n try {\n dispatch(fetchInvoicesRequest());\n const vendorId = getState().vendors.currentVendor?.id;\n const response = await api().vendorsIdInvoicesGet({ id: vendorId });\n dispatch(fetchInvoicesSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchInvoicesFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchInvoicesFailure(\n 'An error occurred fetching invoices. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchInvoicesFailure(UNKNOWN_ERROR));\n }\n }\n};\n\nexport const fetchUserDetails = (): VoidThunk => async dispatch => {\n try {\n dispatch(fetchUserDetailsRequest());\n const response = await api().userDetailsGet();\n setSentryUser(response);\n setGoogleAnalyticsUser(response);\n dispatch(fetchUserDetailsSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchUserDetailsFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchUserDetailsFailure(\n 'An error occurred fetching user details. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchUserDetailsFailure(UNKNOWN_ERROR));\n }\n }\n};\n\nexport const fetchUserDetailsByEmail =\n ({\n email,\n onSuccess,\n }: {\n email: string;\n onSuccess?(users: UserDetails[]): void;\n }): VoidThunk =>\n async dispatch => {\n try {\n const response = await api().usersGetRaw({ queryEmail: email });\n const data = await response.value();\n onSuccess && onSuccess(data);\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchUserDetailsFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchUserDetailsFailure(\n 'An error occurred fetching user details by email. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchUserDetailsFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const updatePassword =\n (userPassword: UserPassword): VoidThunk =>\n async dispatch => {\n try {\n dispatch(changePasswordRequest());\n await api({ Accept: 'application/json' }).usersPatch({\n password: userPassword,\n });\n dispatch(changePasswordSuccess());\n dispatch(closePasswordModal());\n dispatch(showPasswordChangeSuccessfulToast());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(changePasswordFailure(apiErrorMessage));\n } else {\n dispatch(\n changePasswordFailure(\n 'An error occurred changing your password. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(changePasswordFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const updateProfile =\n (userDetails: UserDetails, fromWelcome: boolean): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(updateProfileRequest());\n await api().userDetailsPatch({ userDetails });\n dispatch(updateProfileSuccess());\n dispatch(fetchUserDetails());\n if (vendorId) {\n dispatch(fetchVendorUsers(vendorId));\n }\n\n if (\n userDetails.firstName &&\n userDetails.lastName &&\n (userDetails.mobile || userDetails.phone)\n ) {\n dispatch(\n completeGetStartedChecklistItem(\n GettingStartedChecklistItems.complete_profile\n )\n );\n }\n\n if (fromWelcome) {\n dispatch(push('/r/welcome/company'));\n } else {\n dispatch(showProfileSavedToast());\n }\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(updateProfileFailure(apiErrorMessage));\n } else {\n dispatch(\n updateProfileFailure(\n 'An error occurred updating user details. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(updateProfileFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const registerTwoFA =\n (mobile: string, country_code: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(addTwoFactorAuthenticationRequest());\n const payload = JSON.stringify({\n country_code,\n mobile,\n });\n\n const response = await fetch(`/api/v1/users/enable_twofactor`, {\n body: payload,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': getMetaContent('csrf-token'),\n },\n method: 'POST',\n });\n\n if (response.status === 200) {\n dispatch(fetchUserDetails());\n dispatch(closeTwoFactorAuthentication());\n dispatch(showTwoFactorSavedToast());\n } else {\n dispatch(\n addTwoFactorAuthenticationFailure(\n 'An error has occurred with registering two FA'\n )\n );\n }\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(addTwoFactorAuthenticationFailure(apiErrorMessage));\n } else {\n dispatch(\n addTwoFactorAuthenticationFailure(`Error: ${err.statusText}`)\n );\n }\n } else {\n console.log(err);\n dispatch(addTwoFactorAuthenticationFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const requestQrCode = (): VoidThunk => async dispatch => {\n try {\n dispatch(addTwoFactorAuthenticationRequest());\n\n const response = await api().usersRequestOtpGet();\n dispatch(twoFactorQrCodeLoaded(response));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(addTwoFactorAuthenticationFailure(apiErrorMessage));\n } else {\n dispatch(addTwoFactorAuthenticationFailure(`Error: ${err.statusText}`));\n }\n } else {\n console.log(err);\n dispatch(addTwoFactorAuthenticationFailure(UNKNOWN_ERROR));\n }\n }\n};\n\nexport const verifyOtpSetup =\n (otpAttempt: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(addTwoFactorAuthenticationRequest());\n\n const response = await api().usersVerifyOtpSetupPost({\n payload: { otpAttempt },\n });\n\n dispatch(twoFactorBackupCodesLoaded(response));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(addTwoFactorAuthenticationFailure(apiErrorMessage));\n } else {\n dispatch(\n addTwoFactorAuthenticationFailure(`Error: ${err.statusText}`)\n );\n }\n } else {\n console.log(err);\n dispatch(addTwoFactorAuthenticationFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const verifyOtpUninstall =\n (otpAttempt: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(addTwoFactorAuthenticationRequest());\n\n const response = await api().usersVerifyOtpUninstallDelete({\n payload: { otpAttempt },\n });\n dispatch(twoFactorDisabled());\n dispatch(closeTwoFactorAuthentication());\n } catch (err) {\n dispatch(twoFactorVerificationStop());\n if (err instanceof Response) {\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(addTwoFactorAuthenticationFailure(apiErrorMessage));\n } else {\n dispatch(\n addTwoFactorAuthenticationFailure(`Error: ${err.statusText}`)\n );\n }\n } else {\n console.log(err);\n dispatch(addTwoFactorAuthenticationFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchUserSignature =\n (userId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(userSignatureRequest());\n const response = await api().usersIdSignatureGet({\n id: userId,\n });\n dispatch(userSignatureRequestSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(userSignatureRequestFailure(apiErrorMessage));\n } else {\n dispatch(\n userSignatureRequestFailure(\n 'An error occurred while fetching user signature. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(userSignatureRequestFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const logoutUser = createAsyncThunk(\n 'users/logout',\n async (_, { dispatch }) => {\n try {\n await api().usersSignOutDelete();\n window.location.href = '/';\n } catch (error) {\n await handleThunkError(\n 'An error occurred while making user logout. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport moment from 'moment';\nimport {\n Company,\n CompanyIdentifierModel,\n CompanyIdentifierType,\n DashboardSummary,\n EscrowAccount,\n Image,\n Office,\n SharedDocumentList,\n SharesList,\n ShareSuggestionList,\n Vendor,\n VendorDetails,\n VendorDocument,\n VendorDocumentApproval,\n VendorDocumentAttestation,\n VendorDocumentDownload,\n VendorDocumentExtended,\n VendorProductIndex,\n VendorSupplierCategory,\n VendorSupplierExtended,\n VendorSupplierModel,\n VendorTable,\n VendorTeamModel,\n VendorUser,\n} from '../../swagger';\nimport { InviteUserDetails } from '../../types/inviteUserDetails';\nimport { ShareableObject, VendorsState } from './vendorsState';\nimport { VendorDocumentApprovalExtended } from '../../types/VendorDocumentApprovalExtended';\nimport { VendorDocumentAttestationExtended } from '../../types/VendorDocumentAttestationExtended';\nimport {\n downloadOrgChart,\n fetchComplianceUsers,\n fetchOrgChart,\n fetchVendorUserAttestations,\n} from './vendorsThunks';\n\nconst vendorsSlice = createSlice({\n initialState: {\n // TODO: move to companyProfileSlice\n companyDetailsState: {\n isAddOfficeAddressModalShowing: false,\n isDeleteCertificateModalShowing: false,\n showAddedToast: false,\n showEditedToast: false,\n showDeletedToast: false,\n isEditMediaModalShowing: false,\n showEditedMediaToast: false,\n showEditedCompanyProfileToast: false,\n isLogoUploadSuccessToastShowing: false,\n identifierTypes: null,\n isDeleteCompanyIdentifierModalShowing: false,\n isDeleteCompanyIdentifierToastShowing: false,\n },\n documentState: {\n isArchivingVendorDocument: false,\n isAttestingVendorDocument: false,\n isCompleteDocumentAuditModalOpen: false,\n isDeleteVendorDocumentModalShowing: false,\n isDeletingVendorDocument: false,\n isFetchingVendorDocument: false,\n isFetchingVendorDocumentApprovals: false,\n isFetchingVendorDocumentAttestations: false,\n isFetchingVendorDocuments: false,\n isFetchingVendorPolicyDocuments: false,\n isFileUploadedToastShowing: false,\n isDocumentUploadModalShowing: false,\n isShowingSuccessfulVendorDocumentAttestationToast: false,\n isShowingSuccessfulVendorDocumentApprovalToast: false,\n isShowingSuccessfulVendorDocumentRejectionToast: false,\n isShowingSuccessfulVendorDocumentUpdatedToast: false,\n isUnarchivingVendorDocument: false,\n isUploadingVendorDocument: false,\n isVendorDocumentDeletedToastShowing: false,\n policyDocuments: [],\n vendorDocuments: [],\n vendorDocumentDownload: null,\n vendorDocumentApprovals: [],\n vendorDocumentAttestations: [],\n },\n inviteState: {\n isAddUserModalShowing: false,\n firstName: '',\n lastName: '',\n emailAddress: '',\n isSendingInvitation: false,\n resend: false,\n },\n isFetchingEscrowAccounts: false,\n isFetchingVendorDetails: false,\n isFetchingVendorTable: {},\n isFetchingVendors: false,\n isFetchingDashboard: false,\n isManageBillingModalShowing: false,\n isManageSubscriptionModalShowing: false,\n isWarningSubscriptionLimitModalShowing: false,\n isUserDeletedModalShowing: false,\n teamsState: {\n isAddTeamModalShowing: false,\n isAddingVendorTeam: false,\n isDeleteTeamModalShowing: false,\n isDeletingVendorTeam: false,\n isDuplicateTeamName: false,\n isFetchingVendorTeams: false,\n isTeamDeletedToastShowing: false,\n vendorTeams: [],\n },\n vendors: [],\n users: [],\n vendorDetails: [],\n companyIdentifiers: {},\n vendorTableCache: {},\n currentVendor: null,\n vendorSupplierForm: null,\n orgChart: null,\n isFetchingOrgChart: false,\n escrowAccounts: [],\n vendorSuppliers: [],\n vendorSupplierCategories: [],\n legislationIdToDelete: '',\n isCreatingVendorSupplier: false,\n isPatchingVendorSupplier: false,\n fetchVendorUserAttestationsStatus: 'idle',\n fetchCompliantUsersStatus: 'idle',\n complianceUsers: [],\n } as unknown as VendorsState,\n name: 'vendorsSlice',\n reducers: {\n fetchEscrowAccountsRequest: state => {\n state.isFetchingEscrowAccounts = true;\n state.escrowAccounts = [];\n },\n fetchEscrowAccountsFailure: state => {\n state.isFetchingEscrowAccounts = false;\n state.escrowAccounts = [];\n },\n fetchEscrowAccountsSuccess: (\n state,\n action: PayloadAction>\n ) => {\n state.isFetchingEscrowAccounts = false;\n state.escrowAccounts = action.payload;\n },\n upsertVendorTeamsRequest: state => {\n state.teamsState.upsertVendorTeamsError = undefined;\n state.teamsState.isUpsertingVendorTeams = true;\n },\n upsertVendorTeamsSuccess: state => {\n state.teamsState.isUpsertingVendorTeams = false;\n },\n fetchVendorSupplierCategoriesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.vendorSupplierCategories = action.payload;\n },\n upsertVendorTeamsFailure: (state, action: PayloadAction) => {\n state.teamsState.upsertVendorTeamsError = action.payload;\n state.teamsState.isUpsertingVendorTeams = false;\n },\n fetchVendorDocumentsRequest: state => {\n state.documentState.fetchVendorDocumentsError = undefined;\n state.documentState.isFetchingVendorDocuments = true;\n },\n fetchVendorDocumentsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.documentState.isFetchingVendorDocuments = false;\n state.documentState.vendorDocuments = action.payload;\n },\n fetchVendorDocumentsFailure: (state, action: PayloadAction) => {\n state.documentState.fetchVendorDocumentsError = action.payload;\n state.documentState.isFetchingVendorDocuments = false;\n },\n fetchVendorTableRequest: (state, action: PayloadAction) => {\n state.fetchingVendorTableError = null;\n state.isFetchingVendorTable[action.payload] = true;\n },\n fetchVendorTableSuccess: (\n state,\n action: PayloadAction<{ type: string; vendorTable: VendorTable }>\n ) => {\n state.isFetchingVendorTable[action.payload.type] = false;\n state.vendorTableCache[action.payload.type] = action.payload.vendorTable;\n },\n fetchVendorTableFailure: (\n state,\n action: PayloadAction<{ type: string; error: string }>\n ) => {\n state.fetchingVendorTableError = action.payload.error;\n state.isFetchingVendorTable[action.payload.type] = false;\n },\n fetchVendorTeamsRequest: state => {\n state.teamsState.fetchVendorTeamsError = undefined;\n state.teamsState.isFetchingVendorTeams = true;\n },\n fetchVendorTeamsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.teamsState.isFetchingVendorTeams = false;\n state.teamsState.vendorTeams = action.payload;\n },\n fetchVendorTeamsFailure: (state, action: PayloadAction) => {\n state.teamsState.fetchVendorTeamsError = action.payload;\n state.teamsState.isFetchingVendorTeams = false;\n },\n fetchVendorDetailsRequest: state => {\n state.fetchingVendorDetailsError = undefined;\n state.isFetchingVendorDetails = true;\n },\n fetchVendorDetailsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingVendorDetails = false;\n const index = state.vendorDetails.findIndex(\n vd => vd.id === action.payload.id\n );\n\n if (index !== -1) {\n state.vendorDetails[index] = action.payload;\n } else {\n state.vendorDetails.push(action.payload);\n }\n },\n fetchVendorDetailsFailure: (state, action: PayloadAction) => {\n state.isFetchingVendorDetails = false;\n state.fetchingVendorDetailsError = action.payload;\n },\n fetchVendorsRequest: state => {\n state.fetchingVendorsError = undefined;\n state.isFetchingVendors = true;\n },\n fetchVendorsSuccess: (state, action: PayloadAction) => {\n state.isFetchingVendors = false;\n state.vendors = action.payload;\n if (state.currentVendor) {\n state.currentVendor = state.vendors.find(\n (vendor: Vendor) => vendor.id === state.currentVendor.id\n );\n }\n },\n setCurrentVendor: (state, action: PayloadAction) => {\n localStorage.setItem('currentVendorId', action.payload?.id);\n state.currentVendor = action.payload;\n },\n fetchVendorsFailure: (state, action: PayloadAction) => {\n state.isFetchingVendors = false;\n state.fetchingVendorsError = action.payload;\n },\n fetchVendorUserRequest: state => {\n state.fetchingVendorUserError = undefined;\n state.isFetchingVendorUser = true;\n },\n fetchVendorUserSuccess: (state, action: PayloadAction) => {\n state.isFetchingVendorUser = false;\n\n const index = state.users.findIndex(u => u.id === action.payload.id);\n if (index !== -1) {\n const { complianceStats, ...restPayload } = action.payload;\n\n state.users[index] = {\n ...state.users[index],\n ...restPayload,\n };\n } else {\n state.users.push(action.payload);\n }\n },\n\n updateVendorUserRoles: (state, action: PayloadAction) => {\n const newFields = { roles: action.payload.roles };\n state.users = state.users.map(user => {\n return action.payload.id === user.id ? { ...user, ...newFields } : user;\n });\n },\n fetchVendorUserFailure: (state, action: PayloadAction) => {\n state.isFetchingVendorUser = false;\n state.fetchingVendorUserError = action.payload;\n },\n fetchVendorUsersRequest: state => {\n state.fetchingVendorUsersError = undefined;\n state.isFetchingVendorUsers = true;\n },\n fetchVendorUsersSuccess: (state, action: PayloadAction) => {\n state.hasFetchedVendorUsers = true;\n state.isFetchingVendorUsers = false;\n state.users = action.payload;\n },\n fetchVendorUsersFailure: (state, action: PayloadAction) => {\n state.isFetchingVendorUsers = false;\n state.fetchingVendorUsersError = action.payload;\n },\n showAddUserModal: (state, action: PayloadAction) => {\n state.inviteState.isAddUserModalShowing = true;\n },\n cancelAddUserModal: state => {\n state.inviteState.isAddUserModalShowing = false;\n },\n hideAddUserModal: state => {\n state.inviteState.isAddUserModalShowing = false;\n },\n showConfirmSendInvitationModal: (state, action: PayloadAction) => {\n state.inviteState.isConfirmSendInvitationModalShowing = true;\n state.inviteState.resend = action.payload;\n },\n hideConfirmSendInvitationModal: state => {\n state.inviteState.isConfirmSendInvitationModalShowing = false;\n },\n showConfirmResendInvitationModal: state => {\n state.inviteState.isConfirmResendInvitationModalShowing = true;\n },\n hideConfirmResendInvitationModal: state => {\n state.inviteState.isConfirmResendInvitationModalShowing = false;\n },\n updateInviteUserDetails: (\n state,\n action: PayloadAction\n ) => {\n const { firstName, lastName, emailAddress, message } = action.payload;\n state.inviteState.firstName = firstName;\n state.inviteState.lastName = lastName;\n state.inviteState.emailAddress = emailAddress;\n state.inviteState.message = message;\n },\n sendInvitationRequest: state => {\n state.inviteState.sendingInvitationError = undefined;\n state.inviteState.isSendingInvitation = true;\n },\n sendInvitationSuccess: state => {\n state.inviteState.isInvitationSentModalShowing = true;\n state.inviteState.isSendingInvitation = false;\n },\n sendInvitationFailure: (state, action: PayloadAction) => {\n state.inviteState.isSendingInvitation = false;\n state.inviteState.sendingInvitationError = action.payload;\n },\n hideInvitationSentModal: state => {\n state.inviteState.isInvitationSentModalShowing = false;\n },\n userRolesChangeFailure: (state, action: PayloadAction) => {},\n userDeleteSuccess: state => {\n state.isUserDeletedModalShowing = true;\n },\n hideUserDeletedModal: state => {\n state.isUserDeletedModalShowing = false;\n },\n userCreateFailure: (state, action: PayloadAction) => {\n state.userCreateError = action.payload;\n },\n userUpdateFailure: (state, action: PayloadAction) => {\n state.userUpdateError = action.payload;\n },\n userDeleteFailure: (state, action: PayloadAction) => {\n state.userDeleteError = action.payload;\n },\n showAddTeamModal: (state, action: PayloadAction) => {\n state.teamsState.isAddTeamModalShowing = true;\n state.teamsState.isDuplicateTeamName = false;\n state.teamsState.addVendorTeamError = undefined;\n },\n cancelAddTeamModal: state => {\n state.teamsState.isAddTeamModalShowing = false;\n },\n hideAddTeamModal: state => {\n state.teamsState.isAddTeamModalShowing = false;\n },\n showDeleteTeamModal: (state, action: PayloadAction) => {\n state.teamsState.isDeleteTeamModalShowing = true;\n state.teamsState.vendorTeamIdBeingDeleted = action.payload;\n },\n hideDeleteTeamModal: state => {\n state.teamsState.isDeleteTeamModalShowing = false;\n state.teamsState.vendorTeamIdBeingDeleted = undefined;\n },\n showTeamDeletedToast: state => {\n state.teamsState.isTeamDeletedToastShowing = true;\n },\n hideTeamDeletedToast: state => {\n state.teamsState.isTeamDeletedToastShowing = false;\n },\n uploadVendorDocumentRequest: state => {\n state.documentState.uploadVendorDocumentError = undefined;\n state.documentState.isUploadingVendorDocument = true;\n },\n uploadVendorDocumentSuccess: state => {\n state.documentState.isUploadingVendorDocument = false;\n },\n uploadVendorDocumentFailure: (state, action: PayloadAction) => {\n state.documentState.uploadVendorDocumentError = action.payload;\n state.documentState.isUploadingVendorDocument = false;\n },\n hideFileUploadedToast: state => {\n state.documentState.isFileUploadedToastShowing = false;\n },\n showFileUploadedToast: state => {\n state.documentState.isFileUploadedToastShowing = true;\n },\n hideDocumentUploadModal: state => {\n state.documentState.isDocumentUploadModalShowing = false;\n },\n showDocumentUploadModal: state => {\n state.documentState.isDocumentUploadModalShowing = true;\n },\n deleteVendorDocumentRequest: state => {\n state.documentState.deleteVendorDocumentError = undefined;\n state.documentState.isDeletingVendorDocument = true;\n },\n deleteVendorDocumentSuccess: (\n state,\n action: PayloadAction\n ) => {\n const docs = state.documentState.vendorDocuments;\n state.documentState.vendorDocuments = docs.filter(\n doc => doc.id !== action.payload\n );\n state.documentState.isDeletingVendorDocument = false;\n },\n deleteVendorDocumentFailure: (state, action: PayloadAction) => {\n state.documentState.deleteVendorDocumentError = action.payload;\n state.documentState.isDeletingVendorDocument = false;\n },\n showDeleteVendorDocumentModal: (state, action: PayloadAction) => {\n state.documentState.isDeleteVendorDocumentModalShowing = true;\n state.documentState.vendorDocumentIdBeingDeleted = action.payload;\n },\n hideDeleteVendorDocumentModal: state => {\n state.documentState.isDeleteVendorDocumentModalShowing = false;\n state.documentState.vendorDocumentIdBeingDeleted = undefined;\n },\n showVendorDocumentDeletedToast: state => {\n state.documentState.isVendorDocumentDeletedToastShowing = true;\n },\n hideVendorDocumentDeletedToast: state => {\n state.documentState.isVendorDocumentDeletedToastShowing = false;\n },\n\n attestVendorDocumentRequest: state => {\n state.documentState.isAttestingVendorDocument = true;\n },\n attestVendorDocumentSuccess: state => {\n state.documentState.isAttestingVendorDocument = false;\n },\n attestVendorDocumentFailure: (state, action: PayloadAction) => {\n state.documentState.attestVendorDocumentError = action.payload;\n state.documentState.isAttestingVendorDocument = false;\n },\n approveVendorDocumentRequest: state => {\n state.documentState.isApprovingVendorDocument = true;\n },\n approveVendorDocumentSuccess: state => {\n state.documentState.isApprovingVendorDocument = false;\n },\n approveVendorDocumentFailure: (state, action: PayloadAction) => {\n state.documentState.approveVendorDocumentError = action.payload;\n state.documentState.isApprovingVendorDocument = false;\n },\n updateOfficeAddressRequest: state => {\n state.companyDetailsState.isUpdatingOfficeAddress = true;\n },\n updateOfficeAddressSuccess: (state, action: PayloadAction) => {\n state.companyDetailsState.isUpdatingOfficeAddress = false;\n state.companyOffices = action.payload.offices;\n },\n updateOfficeAddressFailure: (state, action: PayloadAction) => {\n state.companyDetailsState.updateOfficeAddressError = action.payload;\n state.companyDetailsState.isUpdatingOfficeAddress = false;\n },\n deleteOfficeAddressRequest: state => {\n state.companyDetailsState.isDeletingOfficeAddress = true;\n },\n deleteOfficeAddressSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.companyDetailsState.isDeletingOfficeAddress = false;\n const offices = state.companyOffices;\n if (!offices) return;\n state.companyOffices = offices.filter(\n office => office.id !== action.payload\n );\n },\n deleteOfficeAddressFailure: (state, action: PayloadAction) => {\n state.companyDetailsState.deleteOfficeAddressError = action.payload;\n state.companyDetailsState.isDeletingOfficeAddress = false;\n },\n showSuccessfulVendorDocumentAttestationToast: state => {\n state.documentState.isShowingSuccessfulVendorDocumentAttestationToast =\n true;\n },\n hideSuccessfulVendorDocumentAttestationToast: state => {\n state.documentState.isShowingSuccessfulVendorDocumentAttestationToast =\n false;\n },\n showSuccessfulVendorDocumentApprovalToast: state => {\n state.documentState.isShowingSuccessfulVendorDocumentApprovalToast = true;\n },\n hideSuccessfulVendorDocumentApprovalToast: state => {\n state.documentState.isShowingSuccessfulVendorDocumentApprovalToast =\n false;\n },\n showSuccessfulVendorDocumentRejectionToast: state => {\n state.documentState.isShowingSuccessfulVendorDocumentRejectionToast =\n true;\n },\n hideSuccessfulVendorDocumentRejectionToast: state => {\n state.documentState.isShowingSuccessfulVendorDocumentRejectionToast =\n false;\n },\n showSuccessfulVendorDocumentUpdatedToast: state => {\n state.documentState.isShowingSuccessfulVendorDocumentUpdatedToast = true;\n },\n hideSuccessfulVendorDocumentUpdatedToast: state => {\n state.documentState.isShowingSuccessfulVendorDocumentUpdatedToast = false;\n },\n showAddCompanyOfficeAddressModal: (\n state,\n action: PayloadAction\n ) => {\n state.companyDetailsState.isAddOfficeAddressModalShowing = true;\n },\n cancelAddCompanyOfficeAddressModal: state => {\n state.companyDetailsState.isAddOfficeAddressModalShowing = false;\n },\n hideAddCompanyOfficeAddressModal: state => {\n state.companyDetailsState.isAddOfficeAddressModalShowing = false;\n },\n setCompanyOfficeBeingEdited: (state, action: PayloadAction) => {\n state.companyDetailsState.officeBeingEdited = action.payload;\n },\n showDeleteCompanyOfficeAddressModal: (\n state,\n action: PayloadAction\n ) => {\n state.companyDetailsState.isDeleteOfficeAddressModalShowing = true;\n state.companyDetailsState.officeBeingEdited = action.payload;\n },\n hideDeleteCompanyOfficeAddressModal: state => {\n state.companyDetailsState.isDeleteOfficeAddressModalShowing = false;\n },\n showDeleteCertificateModal: (state, action: PayloadAction) => {\n state.companyDetailsState.isDeleteCertificateModalShowing = true;\n state.companyDetailsState.certificateIdBeingDeleted = action.payload;\n },\n hideDeleteCertificateModal: state => {\n state.companyDetailsState.isDeleteCertificateModalShowing = false;\n state.companyDetailsState.certificateIdBeingDeleted = undefined;\n },\n showOfficeAddressDeletedToast: state => {\n state.companyDetailsState.showDeletedToast = true;\n },\n hideOfficeAddressDeletedToast: state => {\n state.companyDetailsState.showDeletedToast = false;\n },\n showOfficeAddressEditedToast: state => {\n state.companyDetailsState.showEditedToast = true;\n },\n hideOfficeAddressEditedToast: state => {\n state.companyDetailsState.showEditedToast = false;\n },\n showOfficeAddressAddedToast: state => {\n state.companyDetailsState.showAddedToast = true;\n },\n hideOfficeAddressAddedToast: state => {\n state.companyDetailsState.showAddedToast = false;\n },\n showEditMediaModal: state => {\n state.companyDetailsState.isEditMediaModalShowing = true;\n },\n hideEditMediaModal: state => {\n state.companyDetailsState.isEditMediaModalShowing = false;\n },\n showEditMediaToast: state => {\n state.companyDetailsState.showEditedMediaToast = true;\n },\n hideEditMediaToast: state => {\n state.companyDetailsState.showEditedMediaToast = false;\n },\n showEditCompanyProfileToast: state => {\n state.companyDetailsState.showEditedCompanyProfileToast = true;\n },\n hideEditCompanyProfileToast: state => {\n state.companyDetailsState.showEditedCompanyProfileToast = false;\n },\n updateVendorDetailsRequest: state => {\n state.companyDetailsState.isUpdatingVendorDetails = true;\n },\n updateVendorDetailsSuccess: state => {\n state.companyDetailsState.isUpdatingVendorDetails = false;\n },\n updateVendorDetailsFailure: (state, action: PayloadAction) => {\n state.companyDetailsState.updateVendorDetailsError = action.payload;\n state.companyDetailsState.isUpdatingVendorDetails = false;\n },\n updateOrgChartRequest: (state, action: PayloadAction) => {\n state.isUpdatingOrgChart = action.payload;\n },\n updateOrgChartFailure: (state, action: PayloadAction) => {\n state.isUpdatingOrgChart = false;\n state.updateOrgChartError = action.payload;\n },\n showCompleteDocumentAuditModal: (\n state,\n action: PayloadAction\n ) => {\n state.documentState.isCompleteDocumentAuditModalOpen = true;\n state.documentState.completeDocument = action.payload;\n },\n hideCompleteDocumentAuditModal: state => {\n state.documentState.isCompleteDocumentAuditModalOpen = false;\n state.documentState.completeDocument = null;\n },\n showManageBillingModal: state => {\n state.isManageBillingModalShowing = true;\n },\n hideManageBillingModal: state => {\n state.isManageBillingModalShowing = false;\n },\n fetchVendorPolicyDocumentsFailure: (\n state,\n action: PayloadAction\n ) => {\n state.documentState.fetchVendorPolicyDocumentsError = action.payload;\n state.documentState.isFetchingVendorPolicyDocuments = false;\n },\n fetchVendorPolicyDocumentsRequest: (\n state,\n action: PayloadAction\n ) => {\n const showLoading = action.payload;\n state.documentState.fetchVendorPolicyDocumentsError = undefined;\n state.documentState.isFetchingVendorPolicyDocuments = showLoading;\n },\n fetchVendorPolicyDocumentsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.documentState.isFetchingVendorPolicyDocuments = false;\n state.documentState.policyDocuments = action.payload;\n },\n fetchLogoRequest: state => {\n state.companyDetailsState.logoFetchingError = undefined;\n },\n fetchLogoSuccess: (state, action: PayloadAction) => {\n state.companyDetailsState.logo = action.payload;\n },\n fetchLogoError: (state, action: PayloadAction) => {\n state.companyDetailsState.logoFetchingError = action.payload;\n },\n showUploadLogoModal: state => {\n state.companyDetailsState.isUploadLogoModalShowing = true;\n },\n setCompanyColour: (state, action: PayloadAction) => {\n state.companyDetailsState.colour = action.payload;\n },\n hideUploadLogoModal: state => {\n state.companyDetailsState.isUploadLogoModalShowing = false;\n },\n uploadLogoRequest: state => {\n state.companyDetailsState.isLogoUploading = true;\n state.companyDetailsState.logoUploadingError = undefined;\n },\n uploadLogoSuccess: (state, action: PayloadAction) => {\n state.companyDetailsState.isLogoUploading = false;\n state.companyDetailsState.logo = action.payload;\n },\n uploadLogoFailure: (state, action: PayloadAction) => {\n state.companyDetailsState.isLogoUploading = false;\n state.companyDetailsState.logoUploadingError = action.payload;\n },\n showLogoUploadSuccessToast: state => {\n state.companyDetailsState.isLogoUploadSuccessToastShowing = true;\n },\n hideLogoUploadSuccessToast: state => {\n state.companyDetailsState.isLogoUploadSuccessToastShowing = false;\n },\n fetchDashboardRequest: state => {\n state.dashboard = null;\n state.isFetchingDashboard = true;\n },\n fetchDashboardSuccess: (state, action: PayloadAction) => {\n state.dashboard = action.payload;\n state.isFetchingDashboard = false;\n },\n clearDashboard: state => {\n state.dashboard = null;\n },\n clearVendorSupplierForm: state => {\n state.vendorSupplierForm = null;\n },\n initVendorSupplierForm: (\n state,\n action: PayloadAction\n ) => {\n state.vendorSupplierForm = {\n ...action.payload,\n id: null,\n vendorSupplierCategoryId: null,\n certifications: [] as string[],\n } as VendorSupplierExtended;\n },\n setVendorSupplierForm: (\n state,\n action: PayloadAction\n ) => {\n state.vendorSupplierForm = action.payload as VendorSupplierExtended;\n },\n fetchDashboardError: (state, action: PayloadAction) => {\n state.isFetchingDashboard = false;\n },\n archiveVendorDocumentFailure: (state, action: PayloadAction) => {\n state.documentState.archiveVendorDocumentError = action.payload;\n state.documentState.isArchivingVendorDocument = false;\n },\n archiveVendorDocumentRequest: (state, action: PayloadAction) => {\n state.documentState.archiveVendorDocumentError = undefined;\n state.documentState.isArchivingVendorDocument = true;\n },\n archiveVendorDocumentSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.documentState.archivingVendorDocumentId = action.payload;\n\n const document = state.documentState.vendorDocuments.find(\n doc => doc.id === action.payload\n );\n document.archived = true;\n document.updatedAt = moment().toISOString();\n state.documentState.isArchivingVendorDocument = false;\n },\n unarchiveVendorDocumentFailure: (state, action: PayloadAction) => {\n state.documentState.unarchiveVendorDocumentError = action.payload;\n state.documentState.archivingVendorDocumentId = null;\n state.documentState.isUnarchivingVendorDocument = false;\n },\n unarchiveVendorDocumentRequest: (state, action: PayloadAction) => {\n state.documentState.unarchiveVendorDocumentError = undefined;\n state.documentState.isUnarchivingVendorDocument = true;\n },\n unarchiveVendorDocumentSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.documentState.isUnarchivingVendorDocument = false;\n const document = state.documentState.vendorDocuments.find(\n doc => doc.id === action.payload\n );\n document.archived = false;\n document.updatedAt = moment().toISOString();\n state.documentState.archivingVendorDocumentId = null;\n },\n fetchVendorDocumentsDownloadRequest: state => {},\n\n fetchVendorDocumentDownloadSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.documentState.vendorDocumentDownload = action.payload;\n },\n cleanupVendorDocumentDownload: state => {\n state.documentState.vendorDocumentDownload = null;\n },\n fetchVendorDocumentsDownloadError: (\n state,\n action: PayloadAction\n ) => {},\n hideWarningSubscriptionLimitModal: state => {\n state.isWarningSubscriptionLimitModalShowing = false;\n },\n\n showWarningSubscriptionLimitModal: state => {\n state.isWarningSubscriptionLimitModalShowing = true;\n },\n\n fetchIdentifierTypesRequest: state => {\n state.companyDetailsState.identifierTypesFetching = true;\n },\n fetchIdentifierTypesSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.companyDetailsState.identifierTypesFetching = false;\n state.companyDetailsState.identifierTypes = action.payload;\n },\n fetchIdentifierTypesFailure: (state, action: PayloadAction) => {\n state.companyDetailsState.identifierTypesFailure = action.payload;\n state.companyDetailsState.identifierTypesFetching = false;\n },\n fetchCompanyIdentifiersRequest: state => {\n state.companyIdentifiersFetching = true;\n },\n fetchCompanyIdentifiersSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.companyIdentifiersFetching = false;\n const index = state.vendorDetails.findIndex(\n vd => vd.id === state.currentVendor.id\n );\n state.companyIdentifiers[state.vendorDetails[index].companies[0].id] =\n action.payload;\n },\n fetchCompanyIdentifiersFailure: (state, action: PayloadAction) => {\n state.companyIdentifiersFailure = action.payload;\n state.companyIdentifiersFetching = false;\n },\n showDeleteCompanyIdentifierModal: (\n state,\n action: PayloadAction\n ) => {\n state.companyDetailsState.isDeleteCompanyIdentifierModalShowing = true;\n state.companyDetailsState.identifierBeingDeleted = action.payload;\n },\n hideDeleteCompanyIdentifierModal: state => {\n state.companyDetailsState.isDeleteCompanyIdentifierModalShowing = false;\n state.companyDetailsState.identifierBeingDeleted = null;\n },\n showDeleteCompanyIdentifierToast: state => {\n state.companyDetailsState.isDeleteCompanyIdentifierToastShowing = true;\n },\n hideDeleteCompanyIdentifierToast: state => {\n state.companyDetailsState.isDeleteCompanyIdentifierToastShowing = false;\n },\n deleteCompanyIdentifierRequest: state => {\n state.companyDetailsState.isDeletingCompanyIdentifier = true;\n },\n deleteCompanyIdentifierSuccess: state => {\n state.companyDetailsState.isDeletingCompanyIdentifier = false;\n },\n deleteCompanyIdentifierFailure: (state, action: PayloadAction) => {\n state.companyDetailsState.isDeletingCompanyIdentifier = false;\n state.companyDetailsState.deleteCompanyIdentifierError = action.payload;\n },\n editCompanyIdentifierRequest: state => {\n state.companyDetailsState.isEditingCompanyIdentifier = true;\n },\n editCompanyIdentifierSuccess: state => {\n state.companyDetailsState.isEditingCompanyIdentifier = false;\n },\n editCompanyIdentifierFailure: (state, action: PayloadAction) => {\n state.companyDetailsState.isEditingCompanyIdentifier = false;\n state.companyDetailsState.editCompanyIdentifierError = action.payload;\n },\n createCompanyIdentifierRequest: state => {\n state.companyDetailsState.isCreatingCompanyIdentifier = true;\n },\n createCompanyIdentifierSuccess: state => {\n state.companyDetailsState.isCreatingCompanyIdentifier = false;\n },\n createCompanyIdentifierFailure: (state, action: PayloadAction) => {\n state.companyDetailsState.isCreatingCompanyIdentifier = false;\n state.companyDetailsState.createCompanyIdentifierError = action.payload;\n },\n fetchSharesListRequest: state => {\n state.isFetchingSharesList = true;\n },\n fetchSharesListSuccess: (state, action: PayloadAction) => {\n state.isFetchingSharesList = false;\n state.sharesList = action.payload;\n state.sharesListError = null;\n },\n fetchSharesListFailure: (state, action: PayloadAction) => {\n state.isFetchingSharesList = false;\n state.sharesListError = action.payload;\n },\n fetchShareSuggestionsRequest: state => {\n state.isFetchingShareSuggestions = true;\n },\n fetchShareSuggestionsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isFetchingShareSuggestions = false;\n state.shareSuggestions = action.payload;\n state.sharesSuggestionsError = null;\n },\n fetchShareSuggestionsFailure: (state, action: PayloadAction) => {\n state.isFetchingShareSuggestions = false;\n state.sharesSuggestionsError = action.payload;\n },\n shareRequest: state => {\n state.isRequestingShare = true;\n },\n shareSuccess: state => {\n state.isRequestingShare = false;\n state.shareError = null;\n },\n shareFailure: (state, action: PayloadAction) => {\n state.isRequestingShare = false;\n state.shareError = action.payload;\n },\n showShareModal: (state, action: PayloadAction) => {\n state.isSharingModalShowing = true;\n state.shareableObject = action.payload;\n },\n hideShareModal: state => {\n state.isSharingModalShowing = false;\n state.shareableObject = null;\n },\n deleteSharePermissionsRequest: state => {\n state.isRequestingDeletePermissions = true;\n },\n deleteSharePermissionsSuccess: state => {\n state.isRequestingDeletePermissions = false;\n },\n deleteSharePermissionsFailure: (state, action: PayloadAction) => {\n state.deletePermissionsError = action.payload;\n state.isRequestingDeletePermissions = false;\n },\n getVendorUserPermissionsRequest: state => {\n state.isRequestingVendorUserPermissions = true;\n },\n getVendorUserPermissionsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isRequestingVendorUserPermissions = false;\n state.vendorUserPermissions = action.payload;\n },\n getVendorUserPermissionsFailure: (state, action: PayloadAction) => {\n state.isRequestingVendorUserPermissions = false;\n state.vendorUserPermissionsErrors = action.payload;\n },\n getVendorProductsRequest: state => {\n state.isRequestingVendorProducts = true;\n },\n getVendorProductsSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.isRequestingVendorProducts = false;\n state.vendorProducts = action.payload;\n },\n getVendorProductsFailure: (state, action: PayloadAction) => {\n state.isRequestingVendorProducts = false;\n state.vendorProductsError = action.payload;\n },\n setFetchVendorDocumentByIdLoading: (\n state,\n action: PayloadAction\n ) => {\n state.isRequestingVendorDocumentById = action.payload;\n },\n setCurrentVendorDocument: (\n state,\n action: PayloadAction\n ) => {\n state.currentVendorDocument = action.payload;\n },\n fetchVendorDocumentByIdFailure: (state, action: PayloadAction) => {\n state.isRequestingVendorDocumentById = false;\n state.fetchVendorDocumentByIdFailure = action.payload;\n },\n patchVendorDocumentRequest: state => {\n state.documentState.isPatchingVendorDocument = true;\n state.documentState.patchVendorDocumentError = undefined;\n },\n patchVendorDocumentSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.documentState.isPatchingVendorDocument = false;\n\n // policy documents\n const newPolicyDocuments = [...state.documentState.policyDocuments];\n const policyIndex = newPolicyDocuments.findIndex(\n document => document.id === action.payload.id\n );\n if (policyIndex === -1) {\n newPolicyDocuments.push(action.payload);\n } else {\n newPolicyDocuments.splice(policyIndex, 1, { ...action.payload });\n }\n state.documentState.policyDocuments = newPolicyDocuments;\n\n // vendor documents\n const newVendorDocuments = [...state.documentState.vendorDocuments];\n const vendorIndex = newVendorDocuments.findIndex(\n document => document.id === action.payload.id\n );\n if (vendorIndex === -1) {\n newVendorDocuments.push(action.payload);\n } else {\n newVendorDocuments.splice(vendorIndex, 1, { ...action.payload });\n }\n state.documentState.vendorDocuments = newVendorDocuments;\n },\n patchVendorDocumentFailure: (state, action: PayloadAction) => {\n state.documentState.isPatchingVendorDocument = false;\n state.documentState.patchVendorDocumentError = action.payload;\n },\n toggleMyDocumentsFilter: state => {\n const { myPoliciesFilterEnabled } = state.documentState;\n state.documentState.myPoliciesFilterEnabled = !myPoliciesFilterEnabled;\n },\n setMyDocumentsFilter: (state, action: PayloadAction) => {\n state.documentState.myPoliciesFilterEnabled = action.payload;\n },\n fetchVendorSuppliersRequest: state => {\n state.vendorSuppliers = [];\n },\n fetchVendorSuppliersSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.vendorSuppliers = action.payload;\n },\n fetchVendorSupplierSuccess: (\n state,\n action: PayloadAction\n ) => {\n state.vendorSupplierForm = action.payload;\n },\n fetchVendorSuppliersFailure: (state, action: PayloadAction) => {},\n createVendorSupplierRequest: state => {\n state.isCreatingVendorSupplier = true;\n },\n createVendorSupplierSuccess: state => {\n state.isCreatingVendorSupplier = false;\n },\n patchVendorSupplierRequest: state => {\n state.isPatchingVendorSupplier = true;\n },\n patchVendorSupplierSuccess: state => {\n state.isPatchingVendorSupplier = false;\n },\n\n fetchCurrentCompanyRequest: state => {\n state.fetchCurrentCompanyRequest = true;\n },\n fetchCurrentCompanySuccess: (state, action: PayloadAction) => {\n state.fetchCurrentCompanyRequest = false;\n // Don't create a separate state currentCompany because it's already exist\n // in state.vendors.vendorDetails[0].companies[0]\n // UPDATE: after be changes - companies[0] exist but new extended fields not present in it\n state.companyOffices = action.payload.offices;\n state.vendorDetails.map(vendor => {\n if (vendor.id !== state.currentVendor.id) return vendor;\n\n vendor.companies = vendor.companies.map(company => {\n if (company.id !== action.payload.id) return company;\n return { ...company, ...action.payload };\n });\n\n return vendor;\n });\n },\n fetchCurrentCompanyError: (state, action: PayloadAction) => {\n state.fetchCurrentCompanyRequest = false;\n },\n updateCompanyProfileRequest: state => {\n state.updateCompanyProfileRequest = true;\n },\n setCompanyState: (state, action: PayloadAction) => {\n state.vendorDetails.map(vendor => {\n if (vendor.id !== state.currentVendor.id) return vendor;\n const company = vendor.companies[0];\n vendor.companies[0] = { ...company, ...action.payload };\n });\n },\n updateCompanyProfileSuccess: (state, _action: PayloadAction) => {\n state.updateCompanyProfileRequest = false;\n },\n updateCompanyProfileError: (state, action: PayloadAction) => {\n state.updateCompanyProfileRequest = false;\n },\n fetchVendorDocumentApprovalsRequest: state => {\n state.documentState.isFetchingVendorDocumentApprovals = true;\n state.documentState.fetchVendorDocumentApprovalsError = undefined;\n },\n fetchVendorDocumentApprovalsSuccess: (\n state,\n action: PayloadAction<{\n vendorDocumentId: string;\n approvals: VendorDocumentApproval[];\n }>\n ) => {\n state.documentState.isFetchingVendorDocumentApprovals = false;\n state.documentState.vendorDocumentApprovals =\n state.documentState.vendorDocumentApprovals.filter(\n vda => vda.vendorDocumentId !== action.payload.vendorDocumentId\n );\n const vendorDocumentApprovalsExtended: VendorDocumentApprovalExtended[] =\n action.payload.approvals.map(vda => {\n return { vendorDocumentId: action.payload.vendorDocumentId, ...vda };\n });\n state.documentState.vendorDocumentApprovals.push(\n ...vendorDocumentApprovalsExtended\n );\n },\n fetchVendorDocumentApprovalsFailure: (\n state,\n action: PayloadAction\n ) => {\n state.documentState.isFetchingVendorDocumentApprovals = false;\n state.documentState.fetchVendorDocumentApprovalsError = action.payload;\n },\n fetchVendorDocumentAttestationsRequest: state => {\n state.documentState.isFetchingVendorDocumentAttestations = true;\n state.documentState.fetchVendorDocumentAttestationsError = undefined;\n },\n fetchVendorDocumentAttestationsSuccess: (\n state,\n action: PayloadAction<{\n vendorDocumentId: string;\n attestations: VendorDocumentAttestation[];\n }>\n ) => {\n state.documentState.isFetchingVendorDocumentAttestations = false;\n state.documentState.vendorDocumentAttestations =\n state.documentState.vendorDocumentAttestations.filter(\n vda => vda.vendorDocumentId !== action.payload.vendorDocumentId\n );\n const vendorDocumentAttestationsExtended: VendorDocumentAttestationExtended[] =\n action.payload.attestations.map(vda => {\n return { vendorDocumentId: action.payload.vendorDocumentId, ...vda };\n });\n state.documentState.vendorDocumentAttestations.push(\n ...vendorDocumentAttestationsExtended\n );\n },\n fetchVendorDocumentAttestationsFailure: (\n state,\n action: PayloadAction\n ) => {\n state.documentState.isFetchingVendorDocumentAttestations = false;\n state.documentState.fetchVendorDocumentAttestationsError = action.payload;\n },\n\n setOrgChart: (state, action: PayloadAction) => {\n state.orgChart = action.payload;\n },\n },\n extraReducers: builder => {\n builder\n .addCase(fetchVendorUserAttestations.pending, state => {\n state.fetchVendorUserAttestationsStatus = 'loading';\n })\n .addCase(fetchVendorUserAttestations.fulfilled, state => {\n state.fetchVendorUserAttestationsStatus = 'succeeded';\n })\n .addCase(fetchVendorUserAttestations.rejected, (state, _action) => {\n state.fetchVendorUserAttestationsStatus = 'failed';\n })\n .addCase(fetchComplianceUsers.pending, state => {\n state.fetchComplianceUsersStatus = 'loading';\n })\n .addCase(fetchComplianceUsers.fulfilled, (state, action) => {\n state.fetchComplianceUsersStatus = 'succeeded';\n state.complianceUsers = action.payload.map(user => {\n return {\n id: user.id,\n complianceStats: user.complianceStats,\n };\n });\n })\n .addCase(fetchComplianceUsers.rejected, state => {\n state.fetchComplianceUsersStatus = 'failed';\n })\n .addCase(fetchOrgChart.pending, state => {\n state.fetchOrgChartStatus = 'loading';\n })\n .addCase(fetchOrgChart.fulfilled, (state, action) => {\n state.fetchOrgChartStatus = 'succeeded';\n state.orgChart = action.payload;\n })\n .addCase(fetchOrgChart.rejected, (state, _action) => {\n state.fetchOrgChartStatus = 'failed';\n })\n .addCase(downloadOrgChart.pending, state => {\n state.downloadOrgChartStatus = 'loading';\n })\n .addCase(downloadOrgChart.fulfilled, (state, action) => {\n state.downloadOrgChartStatus = 'succeeded';\n state.orgChart = action.payload;\n })\n .addCase(downloadOrgChart.rejected, (state, _action) => {\n state.downloadOrgChartStatus = 'failed';\n });\n },\n});\n\nexport const {\n fetchEscrowAccountsRequest,\n fetchEscrowAccountsFailure,\n fetchEscrowAccountsSuccess,\n fetchVendorDetailsRequest,\n fetchVendorDetailsSuccess,\n fetchVendorDetailsFailure,\n fetchVendorDocumentsRequest,\n fetchVendorDocumentsSuccess,\n fetchVendorDocumentsFailure,\n fetchVendorTableRequest,\n fetchVendorTableSuccess,\n fetchVendorTableFailure,\n fetchVendorTeamsRequest,\n fetchVendorTeamsSuccess,\n fetchVendorTeamsFailure,\n upsertVendorTeamsRequest,\n upsertVendorTeamsSuccess,\n upsertVendorTeamsFailure,\n fetchVendorUserRequest,\n fetchVendorUserSuccess,\n fetchVendorUserFailure,\n fetchVendorUsersRequest,\n fetchVendorUsersSuccess,\n fetchVendorUsersFailure,\n fetchVendorsRequest,\n fetchVendorsSuccess,\n setCurrentVendor,\n fetchVendorsFailure,\n showAddUserModal,\n hideAddUserModal,\n showConfirmSendInvitationModal,\n hideConfirmSendInvitationModal,\n showConfirmResendInvitationModal,\n hideConfirmResendInvitationModal,\n updateInviteUserDetails,\n sendInvitationRequest,\n sendInvitationSuccess,\n sendInvitationFailure,\n hideInvitationSentModal,\n userRolesChangeFailure,\n userDeleteSuccess,\n hideUserDeletedModal,\n userCreateFailure,\n userUpdateFailure,\n userDeleteFailure,\n showAddTeamModal,\n hideAddTeamModal,\n showDeleteTeamModal,\n hideDeleteTeamModal,\n showTeamDeletedToast,\n hideTeamDeletedToast,\n uploadVendorDocumentRequest,\n uploadVendorDocumentSuccess,\n uploadVendorDocumentFailure,\n hideFileUploadedToast,\n showFileUploadedToast,\n hideDocumentUploadModal,\n showDocumentUploadModal,\n deleteVendorDocumentRequest,\n deleteVendorDocumentSuccess,\n deleteVendorDocumentFailure,\n showDeleteVendorDocumentModal,\n hideDeleteVendorDocumentModal,\n showVendorDocumentDeletedToast,\n hideVendorDocumentDeletedToast,\n attestVendorDocumentRequest,\n attestVendorDocumentSuccess,\n attestVendorDocumentFailure,\n approveVendorDocumentRequest,\n approveVendorDocumentSuccess,\n approveVendorDocumentFailure,\n updateOfficeAddressRequest,\n updateOfficeAddressSuccess,\n updateOfficeAddressFailure,\n updateVendorDetailsRequest,\n updateVendorDetailsSuccess,\n updateVendorDetailsFailure,\n updateOrgChartRequest,\n updateOrgChartFailure,\n deleteOfficeAddressRequest,\n deleteOfficeAddressSuccess,\n deleteOfficeAddressFailure,\n showSuccessfulVendorDocumentAttestationToast,\n hideSuccessfulVendorDocumentAttestationToast,\n showSuccessfulVendorDocumentApprovalToast,\n hideSuccessfulVendorDocumentApprovalToast,\n showAddCompanyOfficeAddressModal,\n hideAddCompanyOfficeAddressModal,\n setCompanyOfficeBeingEdited,\n showDeleteCompanyOfficeAddressModal,\n hideDeleteCompanyOfficeAddressModal,\n showOfficeAddressDeletedToast,\n hideOfficeAddressDeletedToast,\n showOfficeAddressEditedToast,\n hideOfficeAddressEditedToast,\n showOfficeAddressAddedToast,\n hideOfficeAddressAddedToast,\n showEditMediaModal,\n hideEditMediaModal,\n showEditMediaToast,\n hideEditMediaToast,\n showCompleteDocumentAuditModal,\n hideCompleteDocumentAuditModal,\n showEditCompanyProfileToast,\n hideEditCompanyProfileToast,\n showManageBillingModal,\n hideManageBillingModal,\n fetchVendorPolicyDocumentsFailure,\n fetchVendorPolicyDocumentsRequest,\n fetchVendorPolicyDocumentsSuccess,\n cancelAddUserModal,\n cancelAddTeamModal,\n cancelAddCompanyOfficeAddressModal,\n fetchLogoRequest,\n fetchLogoSuccess,\n fetchLogoError,\n showUploadLogoModal,\n hideUploadLogoModal,\n uploadLogoFailure,\n uploadLogoRequest,\n uploadLogoSuccess,\n showLogoUploadSuccessToast,\n hideLogoUploadSuccessToast,\n fetchDashboardSuccess,\n fetchDashboardError,\n fetchDashboardRequest,\n clearDashboard,\n clearVendorSupplierForm,\n initVendorSupplierForm,\n setVendorSupplierForm,\n archiveVendorDocumentFailure,\n archiveVendorDocumentRequest,\n archiveVendorDocumentSuccess,\n unarchiveVendorDocumentFailure,\n unarchiveVendorDocumentRequest,\n unarchiveVendorDocumentSuccess,\n showSuccessfulVendorDocumentRejectionToast,\n hideSuccessfulVendorDocumentRejectionToast,\n showSuccessfulVendorDocumentUpdatedToast,\n hideSuccessfulVendorDocumentUpdatedToast,\n fetchVendorDocumentsDownloadRequest,\n fetchVendorDocumentDownloadSuccess,\n cleanupVendorDocumentDownload,\n fetchVendorDocumentsDownloadError,\n hideWarningSubscriptionLimitModal,\n showWarningSubscriptionLimitModal,\n fetchIdentifierTypesRequest,\n fetchIdentifierTypesSuccess,\n fetchIdentifierTypesFailure,\n fetchCompanyIdentifiersRequest,\n fetchCompanyIdentifiersSuccess,\n fetchCompanyIdentifiersFailure,\n showDeleteCompanyIdentifierModal,\n hideDeleteCompanyIdentifierModal,\n showDeleteCompanyIdentifierToast,\n hideDeleteCompanyIdentifierToast,\n deleteCompanyIdentifierRequest,\n deleteCompanyIdentifierSuccess,\n deleteCompanyIdentifierFailure,\n editCompanyIdentifierRequest,\n editCompanyIdentifierSuccess,\n editCompanyIdentifierFailure,\n createCompanyIdentifierRequest,\n createCompanyIdentifierSuccess,\n createCompanyIdentifierFailure,\n fetchSharesListRequest,\n fetchSharesListSuccess,\n fetchVendorSupplierCategoriesSuccess,\n fetchSharesListFailure,\n fetchShareSuggestionsRequest,\n fetchShareSuggestionsSuccess,\n fetchShareSuggestionsFailure,\n shareRequest,\n shareSuccess,\n shareFailure,\n showShareModal,\n hideShareModal,\n deleteSharePermissionsRequest,\n deleteSharePermissionsSuccess,\n deleteSharePermissionsFailure,\n getVendorUserPermissionsRequest,\n getVendorUserPermissionsSuccess,\n getVendorUserPermissionsFailure,\n getVendorProductsFailure,\n getVendorProductsRequest,\n getVendorProductsSuccess,\n setFetchVendorDocumentByIdLoading,\n setCurrentVendorDocument,\n fetchVendorDocumentByIdFailure,\n patchVendorDocumentFailure,\n patchVendorDocumentRequest,\n patchVendorDocumentSuccess,\n setCompanyColour,\n fetchVendorSuppliersFailure,\n fetchVendorSuppliersRequest,\n fetchVendorSuppliersSuccess,\n fetchVendorSupplierSuccess,\n toggleMyDocumentsFilter,\n fetchCurrentCompanyRequest,\n fetchCurrentCompanySuccess,\n fetchCurrentCompanyError,\n updateCompanyProfileRequest,\n setCompanyState,\n updateCompanyProfileSuccess,\n updateCompanyProfileError,\n setMyDocumentsFilter,\n updateVendorUserRoles,\n createVendorSupplierRequest,\n createVendorSupplierSuccess,\n patchVendorSupplierRequest,\n patchVendorSupplierSuccess,\n fetchVendorDocumentApprovalsRequest,\n fetchVendorDocumentApprovalsSuccess,\n fetchVendorDocumentApprovalsFailure,\n fetchVendorDocumentAttestationsRequest,\n fetchVendorDocumentAttestationsSuccess,\n fetchVendorDocumentAttestationsFailure,\n showDeleteCertificateModal,\n hideDeleteCertificateModal,\n setOrgChart,\n} = vendorsSlice.actions;\n\nexport default vendorsSlice.reducer;\n","// Used to download images\n// for other window.open(url, '_blank') works fine as forces user to download\n\nexport const rawDownloadFile = async (url: string, fileName: string) => {\n try {\n const response = await fetch(url);\n const blob = await response.blob();\n const urlObject = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = fileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(urlObject);\n } catch (error) {\n console.error(error);\n }\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { api } from '../../api/api';\nimport { getApiErrorMessage } from '../../functions/getApiErrorMessage';\nimport {\n Company,\n CompanyExtended,\n CompanyIdentifierCreatePayloadTypeEnum,\n CompanyUpdatePayload,\n MultipleShare,\n Office,\n QuestionObjectTypeEnum,\n QuestionTableTypeEnum,\n SharedVendorUserStatus,\n UserInvitation,\n VendorDetails,\n VendorDocument,\n VendorDocumentDownload,\n VendorDocumentExtended,\n VendorsIdPatchRequest,\n VendorsIdSharesDeleteShareableTypeEnum,\n VendorsIdSharesGetShareableTypeEnum,\n VendorsIdSharesPostShareableTypeEnum,\n VendorsIdSharesSuggestionsGetShareableTypeEnum,\n VendorsIdVendorUsersChatWidgetLoginPostRequest,\n VendorsIdVendorUsersPostRequest,\n VendorSupplierPayload,\n VendorSuppliersIdDeleteRequest,\n VendorSuppliersIdPatchRequest,\n VendorsVendorIdVendorDocumentAttestationsGetTargetTypeEnum,\n VendorsVendorIdVendorDocumentsPostRequest,\n VendorsVendorIdVendorSuppliersPostRequest,\n VendorTable,\n VendorTeamModel,\n VendorTeamUpsertPayloadVendorTeams,\n VendorUser,\n VendorUserCreatePayloadVendorUsers,\n VendorUserRoles,\n VendorUsersIdDeleteRequest,\n VendorUsersIdPatchRequest,\n VendorUserStatus,\n VendorUserUpdatePayloadVendorUser,\n} from '../../swagger';\nimport { UNKNOWN_ERROR } from '../../types/constants';\nimport { InviteUserDetails } from '../../types/inviteUserDetails';\nimport { VoidThunk } from '../../types/voidThunk';\nimport {\n completeGetStartedChecklistItem,\n GettingStartedChecklistItems,\n} from '../checklists/checklistsThunks';\nimport {\n setErrorMessage,\n showGlobalToast,\n showGlobalToastWithUndo,\n} from '../global/globalSlice';\nimport { getErrorMessage, handleThunkError } from '../helpers/thunkHelpers';\nimport {\n approveVendorDocumentFailure,\n approveVendorDocumentRequest,\n approveVendorDocumentSuccess,\n archiveVendorDocumentFailure,\n archiveVendorDocumentRequest,\n archiveVendorDocumentSuccess,\n attestVendorDocumentFailure,\n attestVendorDocumentRequest,\n attestVendorDocumentSuccess,\n createCompanyIdentifierFailure,\n createCompanyIdentifierRequest,\n createCompanyIdentifierSuccess,\n createVendorSupplierRequest,\n createVendorSupplierSuccess,\n deleteCompanyIdentifierFailure,\n deleteCompanyIdentifierRequest,\n deleteCompanyIdentifierSuccess,\n deleteOfficeAddressFailure,\n deleteOfficeAddressRequest,\n deleteOfficeAddressSuccess,\n deleteSharePermissionsFailure,\n deleteSharePermissionsRequest,\n deleteSharePermissionsSuccess,\n deleteVendorDocumentFailure,\n deleteVendorDocumentRequest,\n deleteVendorDocumentSuccess,\n editCompanyIdentifierFailure,\n editCompanyIdentifierRequest,\n editCompanyIdentifierSuccess,\n fetchCompanyIdentifiersFailure,\n fetchCompanyIdentifiersRequest,\n fetchCompanyIdentifiersSuccess,\n fetchCurrentCompanyError,\n fetchCurrentCompanyRequest,\n fetchCurrentCompanySuccess,\n fetchDashboardError,\n fetchDashboardRequest,\n fetchDashboardSuccess,\n fetchEscrowAccountsFailure,\n fetchEscrowAccountsRequest,\n fetchEscrowAccountsSuccess,\n fetchIdentifierTypesFailure,\n fetchIdentifierTypesRequest,\n fetchIdentifierTypesSuccess,\n fetchLogoError,\n fetchLogoRequest,\n fetchLogoSuccess,\n fetchSharesListFailure,\n fetchSharesListRequest,\n fetchSharesListSuccess,\n fetchShareSuggestionsFailure,\n fetchShareSuggestionsRequest,\n fetchShareSuggestionsSuccess,\n fetchVendorDetailsFailure,\n fetchVendorDetailsRequest,\n fetchVendorDetailsSuccess,\n fetchVendorDocumentApprovalsFailure,\n fetchVendorDocumentApprovalsRequest,\n fetchVendorDocumentApprovalsSuccess,\n fetchVendorDocumentAttestationsFailure,\n fetchVendorDocumentAttestationsRequest,\n fetchVendorDocumentAttestationsSuccess,\n fetchVendorDocumentByIdFailure,\n fetchVendorDocumentDownloadSuccess,\n fetchVendorDocumentsDownloadError,\n fetchVendorDocumentsDownloadRequest,\n fetchVendorDocumentsFailure,\n fetchVendorDocumentsRequest,\n fetchVendorDocumentsSuccess,\n fetchVendorPolicyDocumentsFailure,\n fetchVendorPolicyDocumentsRequest,\n fetchVendorPolicyDocumentsSuccess,\n fetchVendorsFailure,\n fetchVendorsRequest,\n fetchVendorsSuccess,\n fetchVendorSupplierCategoriesSuccess,\n fetchVendorSuppliersFailure,\n fetchVendorSuppliersRequest,\n fetchVendorSuppliersSuccess,\n fetchVendorSupplierSuccess,\n fetchVendorTableFailure,\n fetchVendorTableRequest,\n fetchVendorTableSuccess,\n fetchVendorTeamsFailure,\n fetchVendorTeamsRequest,\n fetchVendorTeamsSuccess,\n fetchVendorUserFailure,\n fetchVendorUserRequest,\n fetchVendorUsersFailure,\n fetchVendorUsersRequest,\n fetchVendorUsersSuccess,\n fetchVendorUserSuccess,\n getVendorProductsFailure,\n getVendorProductsRequest,\n getVendorProductsSuccess,\n getVendorUserPermissionsFailure,\n getVendorUserPermissionsRequest,\n getVendorUserPermissionsSuccess,\n hideAddCompanyOfficeAddressModal,\n hideConfirmSendInvitationModal,\n hideDeleteCompanyIdentifierModal,\n hideDeleteCompanyOfficeAddressModal,\n hideDeleteVendorDocumentModal,\n hideDocumentUploadModal,\n hideEditMediaModal,\n hideUploadLogoModal,\n patchVendorDocumentFailure,\n patchVendorDocumentRequest,\n patchVendorDocumentSuccess,\n patchVendorSupplierRequest,\n patchVendorSupplierSuccess,\n sendInvitationFailure,\n sendInvitationRequest,\n sendInvitationSuccess,\n setCompanyState,\n setCurrentVendorDocument,\n setFetchVendorDocumentByIdLoading,\n setOrgChart,\n shareFailure,\n shareRequest,\n shareSuccess,\n showDeleteCompanyIdentifierToast,\n showEditCompanyProfileToast,\n showEditMediaToast,\n showFileUploadedToast,\n showLogoUploadSuccessToast,\n showOfficeAddressAddedToast,\n showOfficeAddressDeletedToast,\n showOfficeAddressEditedToast,\n showSuccessfulVendorDocumentApprovalToast,\n showSuccessfulVendorDocumentAttestationToast,\n showSuccessfulVendorDocumentRejectionToast,\n showVendorDocumentDeletedToast,\n showWarningSubscriptionLimitModal,\n unarchiveVendorDocumentFailure,\n unarchiveVendorDocumentRequest,\n unarchiveVendorDocumentSuccess,\n updateCompanyProfileError,\n updateCompanyProfileRequest,\n updateCompanyProfileSuccess,\n updateInviteUserDetails,\n updateOfficeAddressFailure,\n updateOfficeAddressRequest,\n updateOfficeAddressSuccess,\n updateOrgChartFailure,\n updateOrgChartRequest,\n updateVendorDetailsFailure,\n updateVendorDetailsRequest,\n updateVendorDetailsSuccess,\n updateVendorUserRoles,\n uploadLogoFailure,\n uploadLogoRequest,\n uploadLogoSuccess,\n uploadVendorDocumentFailure,\n uploadVendorDocumentRequest,\n uploadVendorDocumentSuccess,\n upsertVendorTeamsFailure,\n upsertVendorTeamsRequest,\n upsertVendorTeamsSuccess,\n userCreateFailure,\n userDeleteFailure,\n userDeleteSuccess,\n userRolesChangeFailure,\n userUpdateFailure,\n} from './vendorsSlice';\nimport { ApplicationState } from '../../types/applicationState';\nimport { peopleComplianceRoute } from '../../components/Routes/Routes';\nimport { rawDownloadFile } from '../../functions/rawDownloadFile';\n\nexport const fetchEscrowAccounts =\n (id: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchEscrowAccountsRequest());\n const response = await api().vendorsIdEscrowAccountsGet({ id });\n dispatch(fetchEscrowAccountsSuccess(response));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred fetching escrow accounts. Please try again or contact support.'\n );\n dispatch(fetchEscrowAccountsFailure());\n dispatch(setErrorMessage(apiErrorMessage));\n console.log(err);\n }\n };\n\nexport const fetchVendors =\n (onSuccess?: () => void): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchVendorsRequest());\n const response = await api().vendorsGet();\n dispatch(fetchVendorsSuccess(response));\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorsFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorsFailure(\n 'An error occurred fetching vendors. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorsFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchVendorSupplierCategories =\n (): VoidThunk => async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n const response = await api().vendorsVendorIdVendorSuppliersCategoriesGet({\n vendorId,\n });\n dispatch(fetchVendorSupplierCategoriesSuccess(response));\n } catch (err) {\n console.log(err);\n }\n };\n\nexport const sendInvitation =\n (userDetails: InviteUserDetails): VoidThunk =>\n async dispatch => {\n const {\n emailAddress: email,\n firstName,\n lastName,\n vendorId,\n message: invitationMessage,\n } = userDetails;\n try {\n dispatch(sendInvitationRequest());\n const invitation: UserInvitation = {\n email,\n firstName,\n lastName,\n vendorId,\n invitationMessage,\n };\n await api().usersInvitationsPost({ invitation });\n dispatch(sendInvitationSuccess());\n dispatch(hideConfirmSendInvitationModal());\n dispatch(\n updateInviteUserDetails({\n firstName: '',\n lastName: '',\n emailAddress: '',\n message: '',\n })\n );\n dispatch(fetchVendorUsers(vendorId));\n dispatch(\n fetchVendorTable({ vendorId, type: QuestionObjectTypeEnum.VendorUser })\n );\n dispatch(\n completeGetStartedChecklistItem(\n GettingStartedChecklistItems.invite_colleagues_to_the_portal\n )\n );\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n if (err.status === 422) {\n dispatch(\n sendInvitationFailure(`User ${email} has already been invited.`)\n );\n }\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(sendInvitationFailure(apiErrorMessage));\n } else {\n dispatch(\n sendInvitationFailure(\n 'An error occurred during sending the invitation. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(sendInvitationFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchVendorDetails =\n (vendorId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchVendorDetailsRequest());\n const response = await api().vendorsIdGet({ id: vendorId });\n dispatch(fetchVendorDetailsSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorDetailsFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorDetailsFailure(\n 'An error occurred fetching vendor details. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorDetailsFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchVendorUser =\n (vendorUserId: string, onSuccess: (user: VendorUser) => void): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchVendorUserRequest());\n const response = await api().vendorUsersIdGet({ id: vendorUserId });\n dispatch(fetchVendorUserSuccess(response));\n onSuccess(response);\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorUserFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorUserFailure(\n 'An error occurred fetching the user. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorUserFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchVendorUsers =\n (\n vendorId: string,\n options?: {\n silent?: boolean;\n }\n ): VoidThunk =>\n async dispatch => {\n try {\n if (!options?.silent) dispatch(fetchVendorUsersRequest());\n const response = await api().vendorsIdVendorUsersGet({\n id: vendorId,\n });\n dispatch(fetchVendorUsersSuccess(response));\n } catch (err) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorUsersFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorUsersFailure(\n 'An error occurred fetching users. Please try again or contact support.'\n )\n );\n }\n }\n };\n\nexport const updateUserRoles =\n ({\n user,\n roles,\n vendorId,\n onSuccess = () => {},\n }: {\n user: VendorUser;\n roles: VendorUserRoles[];\n vendorId: string;\n onSuccess: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n const request: VendorUsersIdPatchRequest = {\n id: user.id,\n body: {\n vendorUser: {\n roles,\n },\n },\n };\n await api().vendorUsersIdPatch(request);\n dispatch(fetchVendorUsers(vendorId));\n onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(userRolesChangeFailure(apiErrorMessage));\n } else {\n dispatch(\n userRolesChangeFailure(\n 'An error occurred during changing the access level. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(userRolesChangeFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const createUser =\n ({\n vendorId,\n vendorUsers,\n onSuccess,\n onError,\n }: {\n vendorId: string;\n vendorUsers: VendorUserCreatePayloadVendorUsers[];\n onSuccess(): void;\n onError(): void;\n }): VoidThunk =>\n async dispatch => {\n try {\n const request: VendorsIdVendorUsersPostRequest = {\n id: vendorId,\n body: { vendorUsers },\n };\n await api().vendorsIdVendorUsersPost(request);\n dispatch(fetchVendorUsers(vendorId));\n onSuccess && onSuccess();\n } catch (err) {\n onError();\n if (err instanceof Response) {\n if (err.status == 402) {\n dispatch(showWarningSubscriptionLimitModal());\n console.log('Payment required');\n return;\n }\n\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while creating user. Please try again or contact support.'\n );\n console.log(err);\n dispatch(userCreateFailure(apiErrorMessage));\n } else {\n console.log(err);\n dispatch(userCreateFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const updateUser =\n ({\n vendorUserId,\n vendorUser,\n onSuccess,\n }: {\n vendorUserId: string;\n vendorUser: VendorUserUpdatePayloadVendorUser;\n onSuccess(): void;\n }): VoidThunk =>\n async dispatch => {\n try {\n const request: VendorUsersIdPatchRequest = {\n id: vendorUserId,\n body: { vendorUser },\n };\n const result = await api().vendorUsersIdPatch(request);\n dispatch(updateVendorUserRoles(result));\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while updating user. Please try again or contact support.'\n );\n dispatch(userUpdateFailure(apiErrorMessage));\n }\n };\n\nexport const submitVendorSupplier =\n ({ onSuccess }: { onSuccess(): void }): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorSupplier = getState().vendors.vendorSupplierForm;\n const body: VendorSupplierPayload = {\n ...vendorSupplier,\n ownerId: vendorSupplier.owner.id,\n };\n if (vendorSupplier.id) {\n dispatch(patchVendorSupplierRequest());\n const request: VendorSuppliersIdPatchRequest = {\n id: vendorSupplier.id,\n body,\n };\n await api().vendorSuppliersIdPatch(request);\n dispatch(patchVendorSupplierSuccess());\n } else {\n dispatch(createVendorSupplierRequest());\n const vendorId = getState().vendors.currentVendor.id;\n const request: VendorsVendorIdVendorSuppliersPostRequest = {\n vendorId: vendorId,\n body,\n };\n await api().vendorsVendorIdVendorSuppliersPost(request);\n dispatch(createVendorSupplierSuccess());\n }\n onSuccess && onSuccess();\n } catch (err) {\n let errorMessage =\n 'Vendor submit error. Please try again or contact support.';\n if (err instanceof Response) {\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) errorMessage = apiErrorMessage;\n }\n dispatch(setErrorMessage(errorMessage));\n }\n };\n\nexport const deleteVendorSupplier =\n ({ onSuccess }: { onSuccess(): void }): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorSupplier = getState().vendors.vendorSupplierForm;\n const request: VendorSuppliersIdDeleteRequest = {\n id: vendorSupplier.id,\n };\n await api().vendorSuppliersIdDelete(request);\n onSuccess && onSuccess();\n } catch (err) {\n let errorMessage =\n 'Vendor delete error. Please try again or contact support.';\n if (err instanceof Response) {\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) errorMessage = apiErrorMessage;\n }\n dispatch(setErrorMessage(errorMessage));\n }\n };\n\nexport const deleteUser =\n ({ user, vendorId }: { user: VendorUser; vendorId: string }): VoidThunk =>\n async dispatch => {\n try {\n const request: VendorUsersIdDeleteRequest = {\n id: user.id,\n };\n await api().vendorUsersIdDelete(request);\n dispatch(userDeleteSuccess());\n dispatch(fetchVendorUsers(vendorId));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(userDeleteFailure(apiErrorMessage));\n } else {\n dispatch(\n userDeleteFailure(\n 'An error occurred while deleting user. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(userDeleteFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchVendorTeams =\n (\n viewExtended?: boolean,\n onSuccess?: (response: VendorTeamModel[]) => void,\n searchQuery?: string\n ): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(fetchVendorTeamsRequest());\n const response = await api().vendorsIdVendorTeamsGet({\n id: vendorId,\n viewExtended,\n query: searchQuery,\n });\n dispatch(fetchVendorTeamsSuccess(response));\n onSuccess && onSuccess(response);\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorTeamsFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorTeamsFailure(\n 'An error occurred fetching vendor teams. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorTeamsFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const upsertVendorTeams =\n ({\n vendorTeams,\n vendorId,\n onSuccess,\n }: {\n vendorTeams: Array;\n vendorId: string;\n onSuccess(): void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(upsertVendorTeamsRequest());\n await api().vendorsIdVendorTeamsPost({\n id: vendorId,\n body: { vendorTeams },\n });\n dispatch(fetchVendorTeams(true));\n dispatch(upsertVendorTeamsSuccess());\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(upsertVendorTeamsFailure(apiErrorMessage));\n } else {\n dispatch(\n upsertVendorTeamsFailure(\n 'An error occurred while editing teams. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(upsertVendorTeamsFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchVendorDocuments =\n ({\n vendorId,\n queryShowHistory,\n queryDocumentType,\n viewExtended,\n }: {\n vendorId: string;\n queryShowHistory?: boolean;\n queryDocumentType?: string;\n viewExtended?: boolean;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchVendorDocumentsRequest());\n const response = await api().vendorsIdVendorDocumentsGet({\n id: vendorId,\n queryDocumentType,\n queryShowHistory,\n });\n dispatch(fetchVendorDocumentsSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorDocumentsFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorDocumentsFailure(\n 'An error occurred fetching the documents. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorDocumentsFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchVendorDocumentDownload =\n ({\n id,\n successCallback,\n }: {\n id: string;\n successCallback?: (response: VendorDocumentDownload) => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchVendorDocumentsDownloadRequest());\n const response = await api().vendorDocumentsIdDownloadGet({\n id,\n });\n dispatch(fetchVendorDocumentDownloadSuccess(response));\n successCallback && successCallback(response);\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorDocumentsDownloadError(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorDocumentsDownloadError(\n 'An error occurred fetching the dowload details. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorDocumentsDownloadError(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchVendorPolicyDocuments =\n (showLoading = true): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(fetchVendorPolicyDocumentsRequest(showLoading));\n const response = await api().vendorsIdVendorDocumentsGet({\n id: vendorId,\n queryDocumentType: 'policy',\n });\n dispatch(fetchVendorPolicyDocumentsSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorPolicyDocumentsFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorPolicyDocumentsFailure(\n 'An error occurred fetching the policy documents. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorPolicyDocumentsFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const uploadVendorDocument =\n (\n params: Omit\n ): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(uploadVendorDocumentRequest());\n if (!params.vendorDocumentPolicyCategoryId) {\n // fix send \"null\" as a string to the backend\n delete params.vendorDocumentPolicyCategoryId;\n }\n await api().vendorsVendorIdVendorDocumentsPost({\n vendorId,\n ...params,\n });\n dispatch(uploadVendorDocumentSuccess());\n dispatch(fetchVendorDocuments({ vendorId }));\n dispatch(hideDocumentUploadModal());\n dispatch(showFileUploadedToast());\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred uploading the document. Please try again or contact support.'\n );\n dispatch(uploadVendorDocumentFailure(apiErrorMessage));\n return Promise.reject(apiErrorMessage);\n }\n };\n\nexport const deleteVendorDocument =\n (id: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deleteVendorDocumentRequest());\n await api().vendorDocumentsIdDelete({ id });\n dispatch(deleteVendorDocumentSuccess(id));\n dispatch(hideDeleteVendorDocumentModal());\n dispatch(showVendorDocumentDeletedToast());\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while deleting a vendor document. Please try again or contact support.'\n );\n dispatch(deleteVendorDocumentFailure(apiErrorMessage));\n }\n };\n\nexport const fetchVendorTable =\n ({\n type,\n vendorId,\n }: {\n type: QuestionObjectTypeEnum;\n vendorId?: string;\n }): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(fetchVendorTableRequest(type));\n const id = vendorId || getState().vendors.currentVendor?.id;\n const response = await api().vendorsIdTablesGet({\n id,\n type,\n statuses: [VendorUserStatus.Active, VendorUserStatus.Invited],\n });\n dispatch(fetchVendorTableSuccess({ type, vendorTable: response }));\n } catch (err) {\n if (err instanceof Response) {\n if (err.status === 404) {\n const emptyTable: VendorTable = { columns: [], rows: [] };\n dispatch(fetchVendorTableSuccess({ type, vendorTable: emptyTable }));\n return;\n }\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorTableFailure({ error: apiErrorMessage, type }));\n } else {\n dispatch(\n fetchVendorTableFailure({\n error:\n 'An error occurred fetching the vendor table. Please try again or contact support.',\n type,\n })\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorTableFailure({ error: UNKNOWN_ERROR, type }));\n }\n }\n };\n\nexport const fetchTable =\n (type: QuestionTableTypeEnum): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchVendorTableRequest(type));\n const response = await api().tablesTypeGet({ type });\n dispatch(fetchVendorTableSuccess({ type, vendorTable: response }));\n } catch (err) {\n if (err instanceof Response) {\n if (err.status === 404) {\n const emptyTable: VendorTable = { columns: [], rows: [] };\n dispatch(fetchVendorTableSuccess({ type, vendorTable: emptyTable }));\n return;\n }\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorTableFailure({ error: apiErrorMessage, type }));\n } else {\n dispatch(\n fetchVendorTableFailure({\n error:\n 'An error occurred fetching the table. Please try again or contact support.',\n type,\n })\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorTableFailure({ error: UNKNOWN_ERROR, type }));\n }\n }\n };\n\nexport const attestVendorDocument =\n (id: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(attestVendorDocumentRequest());\n await api().vendorDocumentsIdAttestPost({ id });\n dispatch(attestVendorDocumentSuccess());\n dispatch(fetchVendorPolicyDocuments());\n dispatch(showSuccessfulVendorDocumentAttestationToast());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(attestVendorDocumentFailure(apiErrorMessage));\n } else {\n dispatch(\n attestVendorDocumentFailure(\n 'An error occurred attesting the document. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(attestVendorDocumentFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const approveVendorDocument =\n ({ id, onSuccess }: { id: string; onSuccess: () => void }): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(approveVendorDocumentRequest());\n await api().vendorDocumentsIdApprovePost({ id });\n dispatch(approveVendorDocumentSuccess());\n\n const vendorId = getState().vendors.currentVendor?.id;\n dispatch(fetchVendorDocuments({ vendorId }));\n\n dispatch(fetchVendorPolicyDocuments());\n dispatch(showSuccessfulVendorDocumentApprovalToast());\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(approveVendorDocumentFailure(apiErrorMessage));\n } else {\n dispatch(\n approveVendorDocumentFailure(\n 'An error occurred approving the document. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(approveVendorDocumentFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const rejectVendorDocument =\n ({\n vendorDocumentId,\n reason,\n onSuccess,\n }: {\n vendorDocumentId: string;\n reason: string;\n onSuccess: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(approveVendorDocumentRequest());\n await api().vendorDocumentsIdRejectPost({\n id: vendorDocumentId,\n vendorDocumentApproval: { rejectionReason: reason },\n });\n dispatch(approveVendorDocumentSuccess());\n dispatch(fetchVendorPolicyDocuments());\n dispatch(showSuccessfulVendorDocumentRejectionToast());\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(approveVendorDocumentFailure(apiErrorMessage));\n } else {\n dispatch(\n approveVendorDocumentFailure(\n 'An error occurred rejecting the document. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(approveVendorDocumentFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const updateOfficeAddress =\n ({\n company,\n office,\n isExisting,\n onSuccess,\n }: {\n company: Company;\n office: Office;\n isExisting: boolean;\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(updateOfficeAddressRequest());\n const result = await api().companiesIdPatch({\n id: company.id,\n body: {\n ...company,\n offices: [office],\n },\n });\n dispatch(updateOfficeAddressSuccess(result));\n dispatch(hideAddCompanyOfficeAddressModal());\n dispatch(\n isExisting\n ? showOfficeAddressEditedToast()\n : showOfficeAddressAddedToast()\n );\n onSuccess && onSuccess();\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while updating office location. Please try again or contact support.'\n );\n dispatch(updateOfficeAddressFailure(apiErrorMessage));\n }\n };\n\nexport const deleteOfficeAddress =\n ({ company, office }: { company: Company; office: Office }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deleteOfficeAddressRequest());\n await api().companiesIdOfficesOfficeIdDelete({\n id: company.id,\n officeId: office.id,\n });\n dispatch(deleteOfficeAddressSuccess(office.id));\n dispatch(hideDeleteCompanyOfficeAddressModal());\n dispatch(showOfficeAddressDeletedToast());\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while deleting office location. Please try again or contact support.'\n );\n dispatch(deleteOfficeAddressFailure(apiErrorMessage));\n }\n };\n\nexport const updateVendorDetails =\n ({ vendorDetails }: { vendorDetails: VendorDetails }): VoidThunk =>\n async dispatch => {\n const { access, ...vendorFields } = vendorDetails;\n try {\n dispatch(updateVendorDetailsRequest());\n const request: VendorsIdPatchRequest = {\n id: vendorDetails.id,\n vendor: vendorFields,\n };\n await api().vendorsIdPatch(request);\n dispatch(updateVendorDetailsSuccess());\n dispatch(hideEditMediaModal());\n dispatch(showEditMediaToast());\n dispatch(fetchVendorDetails(vendorDetails.id));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while updating vendor details. Please try again or contact support.'\n );\n dispatch(updateVendorDetailsFailure(apiErrorMessage));\n }\n };\n\nexport const fetchOrgChart = createAsyncThunk(\n 'vendors/fetchOrgChart',\n async (id: string, { dispatch }) => {\n try {\n const response = await api().vendorsIdOrgChartGet({ id });\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred during fetching org chart. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const downloadOrgChart = createAsyncThunk(\n 'vendors/downloadOrgChart',\n async (id: string, { dispatch }) => {\n try {\n const response = await api().vendorsIdOrgChartGet({ id });\n await rawDownloadFile(response.urls.full, response.filename);\n\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred while downloading org chart. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const updateOrgChart =\n ({\n id,\n image,\n onSuccess,\n }: {\n id: string;\n image: Blob;\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(updateOrgChartRequest(true));\n const response = await api().vendorsIdOrgChartPatch({ id, image });\n dispatch(setOrgChart(response));\n dispatch(updateOrgChartRequest(false));\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(updateOrgChartFailure(apiErrorMessage));\n } else {\n dispatch(\n updateOrgChartFailure(\n 'An error occurred during updating org chart. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(updateOrgChartFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const patchCompanyProfile =\n ({\n company,\n onSuccess,\n }: {\n company: CompanyExtended;\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(updateCompanyProfileRequest());\n const result = await api().companiesIdPatch({\n id: company.id,\n body: company as unknown as CompanyUpdatePayload,\n });\n dispatch(setCompanyState(result));\n dispatch(updateCompanyProfileSuccess(result));\n onSuccess && onSuccess();\n dispatch(showEditCompanyProfileToast());\n } catch (err) {\n const errorMessageToUser = await getErrorMessage(\n err,\n 'An error occurred during updating company profile. Please try again or contact support.'\n );\n dispatch(setErrorMessage(errorMessageToUser));\n dispatch(updateCompanyProfileError(errorMessageToUser));\n }\n };\n\nexport const fetchCurrentCompany =\n (): VoidThunk => async (dispatch, getState) => {\n try {\n const vendorId = getState().vendors.currentVendor?.id;\n const companyId = getState().vendors.vendorDetails.find(\n details => details.id === vendorId\n ).companies[0].id;\n dispatch(fetchCurrentCompanyRequest());\n const response = await api().companiesIdGet({ id: companyId });\n dispatch(fetchCurrentCompanySuccess(response));\n } catch (err) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred while fetching company details. Please try again or contact support.'\n );\n dispatch(fetchCurrentCompanyError(apiErrorMessage));\n }\n };\n\nexport const fetchCompanyLogo =\n ({ vendorId }: { vendorId: string }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchLogoRequest());\n const response = await api().vendorsIdLogoGet({\n id: vendorId,\n });\n dispatch(fetchLogoSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchLogoError(apiErrorMessage));\n } else {\n dispatch(\n fetchLogoError(\n 'An error occurred fetching vendors. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchLogoError(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const uploadCompanyLogo =\n ({ vendorId, file }: { vendorId: string; file: File }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(uploadLogoRequest());\n const response = await api().vendorsIdLogoPatch({\n id: vendorId,\n image: file,\n });\n dispatch(uploadLogoSuccess(response));\n dispatch(hideUploadLogoModal());\n dispatch(showLogoUploadSuccessToast());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(uploadLogoFailure(apiErrorMessage));\n } else {\n dispatch(\n uploadLogoFailure(\n 'An error occurred uploading the logo. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(uploadLogoFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchDashboard =\n ({ vendorId }: { vendorId: string }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchDashboardRequest());\n const response = await api().vendorsIdDashboardSummaryGet({\n id: vendorId,\n });\n dispatch(fetchDashboardSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchDashboardError(apiErrorMessage));\n } else {\n dispatch(\n fetchDashboardError(\n 'An error occurred fetching vendors. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchDashboardError(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const archiveVendorDocument =\n (document: VendorDocument): VoidThunk =>\n async dispatch => {\n try {\n const { name, id, documentType, documentableId } = document;\n dispatch(archiveVendorDocumentRequest(id));\n documentType === 'agreement'\n ? await api().agreementsIdArchivePost({ id: documentableId })\n : await api().vendorDocumentsIdArchivePost({ id });\n\n dispatch(archiveVendorDocumentSuccess(id));\n dispatch(\n showGlobalToastWithUndo(`${name} has been moved to the archive.`)\n );\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(archiveVendorDocumentFailure(apiErrorMessage));\n } else {\n dispatch(\n archiveVendorDocumentFailure(\n 'An error occurred archiving the document. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(archiveVendorDocumentFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const unarchiveVendorDocument =\n (document?: VendorDocument): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const archivingDocument =\n getState().vendors.documentState.vendorDocuments.find(\n doc =>\n doc.id ===\n getState().vendors.documentState.archivingVendorDocumentId\n );\n // From meatball menu OR current archiving doc when click undo button in toast message\n const targetDocument = document || archivingDocument;\n if (!targetDocument) return;\n const { id, name, documentType, documentableId } = targetDocument;\n\n dispatch(unarchiveVendorDocumentRequest(id));\n documentType === 'agreement'\n ? await api().agreementsIdUnarchivePost({\n id: documentableId,\n })\n : await api().vendorDocumentsIdUnarchivePost({ id });\n\n dispatch(unarchiveVendorDocumentSuccess(id));\n if (documentType === 'agreement')\n dispatch(\n showGlobalToast(\n `${name} has been removed from the archive and will now be visible on the Agreement page.`\n )\n );\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(unarchiveVendorDocumentFailure(apiErrorMessage));\n } else {\n dispatch(\n unarchiveVendorDocumentFailure(\n 'An error occurred unarchiving the document. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(unarchiveVendorDocumentFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchIdentifierTypes = (): VoidThunk => async dispatch => {\n try {\n dispatch(fetchIdentifierTypesRequest());\n const response = await api().companyIdentifiersTypesGet();\n dispatch(fetchIdentifierTypesSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchIdentifierTypesFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchIdentifierTypesFailure(\n 'An error occurred fetching identifier types. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchIdentifierTypesFailure(UNKNOWN_ERROR));\n }\n }\n};\n\nexport const fetchCompanyIdentifiers =\n (companyId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchCompanyIdentifiersRequest());\n const response = await api().companiesIdCompanyIdentifiersGet({\n id: companyId,\n });\n dispatch(fetchCompanyIdentifiersSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchCompanyIdentifiersFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchCompanyIdentifiersFailure(\n 'An error occurred fetching identifiers. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchCompanyIdentifiersFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const simpleDeleteCompanyIdentifier =\n (companyIdentifierId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(deleteCompanyIdentifierRequest());\n await api().companyIdentifiersIdDelete({ id: companyIdentifierId });\n dispatch(deleteCompanyIdentifierSuccess());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(deleteCompanyIdentifierFailure(apiErrorMessage));\n } else {\n dispatch(\n deleteCompanyIdentifierFailure(\n 'An error occurred creating a company identifier. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(deleteCompanyIdentifierFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const deleteCompanyIdentifier =\n (companyId: string): VoidThunk =>\n async (dispatch, getState) => {\n try {\n const identifierBeingDeleted =\n getState().vendors.companyDetailsState.identifierBeingDeleted;\n dispatch(deleteCompanyIdentifierRequest());\n await api().companyIdentifiersIdDelete({\n id: identifierBeingDeleted.id,\n });\n dispatch(deleteCompanyIdentifierSuccess());\n dispatch(hideDeleteCompanyIdentifierModal());\n dispatch(showDeleteCompanyIdentifierToast());\n\n dispatch(fetchCompanyIdentifiers(companyId));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(deleteCompanyIdentifierFailure(apiErrorMessage));\n } else {\n dispatch(\n deleteCompanyIdentifierFailure(\n 'An error occurred deleting company identifier. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(deleteCompanyIdentifierFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const editCompanyIdentifier =\n (\n { identifier, id }: { id: string; identifier: string },\n companyId: string,\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(editCompanyIdentifierRequest());\n await api().companyIdentifiersIdPatch({\n id,\n body: { identifier },\n });\n onSuccess();\n dispatch(fetchCompanyIdentifiers(companyId));\n dispatch(editCompanyIdentifierSuccess());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(editCompanyIdentifierFailure(apiErrorMessage));\n } else {\n dispatch(\n editCompanyIdentifierFailure(\n 'An error occurred updating company identifier. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(editCompanyIdentifierFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const createCompanyIdentifier =\n (\n { identifier, type }: { identifier: string; type: string },\n companyId: string,\n onSuccess: () => void\n ): VoidThunk =>\n async dispatch => {\n try {\n dispatch(createCompanyIdentifierRequest());\n await api().companiesIdCompanyIdentifiersPost({\n id: companyId,\n body: {\n identifier,\n type: type as CompanyIdentifierCreatePayloadTypeEnum,\n },\n });\n onSuccess();\n dispatch(fetchCompanyIdentifiers(companyId));\n dispatch(createCompanyIdentifierSuccess());\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(createCompanyIdentifierFailure(apiErrorMessage));\n } else {\n dispatch(\n createCompanyIdentifierFailure(\n 'An error occurred creating company identifier. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(createCompanyIdentifierFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchShares =\n ({\n id,\n shareableType,\n shareableId,\n }: {\n id: string;\n shareableType: string;\n shareableId: string;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchSharesListRequest());\n const result = await api().vendorsIdSharesGet({\n id,\n shareableType: shareableType,\n shareableId,\n });\n dispatch(fetchSharesListSuccess(result));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchSharesListFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchSharesListFailure(\n 'An error occurred fetching shares. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchSharesListFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchShareSuggestions =\n ({\n textSearch,\n id,\n shareableType,\n shareableId,\n }: {\n textSearch: string;\n id: string;\n shareableType: string;\n shareableId: string;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(fetchShareSuggestionsRequest());\n const result = await api().vendorsIdSharesSuggestionsGet({\n shareableType: (\n shareableType\n ),\n textSearch,\n id,\n shareableId,\n });\n dispatch(fetchShareSuggestionsSuccess(result));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchShareSuggestionsFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchShareSuggestionsFailure(\n 'An error occurred fetching suggestions. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchShareSuggestionsFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const shareEntity =\n ({\n id,\n shareableType,\n shareableId,\n multipleShare,\n onSuccess,\n }: {\n id: string;\n shareableType: string;\n shareableId: string;\n multipleShare: MultipleShare;\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(shareRequest());\n await api().vendorsIdSharesPost({\n id,\n shareableType: shareableType,\n shareableId,\n body: multipleShare,\n });\n dispatch(shareSuccess());\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(shareFailure(apiErrorMessage));\n } else {\n dispatch(\n shareFailure(\n 'An error occurred during sharing. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(shareFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const updateSharePermissions =\n ({\n id,\n shareableType,\n shareableId,\n onSuccess,\n multipleShare,\n emailsToDelete,\n }: {\n id: string;\n shareableType: string;\n shareableId: string;\n onSuccess?: () => void;\n multipleShare?: MultipleShare;\n emailsToDelete?: string[];\n }): VoidThunk =>\n async dispatch => {\n try {\n if (multipleShare?.shares?.length) {\n dispatch(shareRequest());\n await api().vendorsIdSharesPost({\n id,\n shareableType: shareableType,\n shareableId,\n body: multipleShare,\n });\n dispatch(shareSuccess());\n }\n if (emailsToDelete?.length) {\n dispatch(deleteSharePermissionsRequest());\n await api().vendorsIdSharesDeleteRaw({\n id,\n shareableType: shareableType,\n shareableId,\n body: { emails: emailsToDelete },\n });\n dispatch(deleteSharePermissionsSuccess());\n }\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(deleteSharePermissionsFailure(apiErrorMessage));\n } else {\n dispatch(\n deleteSharePermissionsFailure(\n 'An error occurred updating permissions. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(deleteSharePermissionsFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchVendorUserPermissions =\n (userId: string): VoidThunk =>\n async dispatch => {\n try {\n dispatch(getVendorUserPermissionsRequest());\n const response = await api().vendorUsersIdPermissionsGet({\n id: userId,\n });\n dispatch(getVendorUserPermissionsSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(getVendorUserPermissionsFailure(apiErrorMessage));\n } else {\n dispatch(\n getVendorUserPermissionsFailure(\n 'An error occurred during fetching permissions. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(getVendorUserPermissionsFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const getVendorProducts =\n (showUnavailable: boolean): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(getVendorProductsRequest());\n const vendorId = getState().vendors.currentVendor?.id;\n const response = await api().vendorsIdProductsGet({\n id: vendorId,\n queryShowUnavailable: showUnavailable,\n });\n dispatch(getVendorProductsSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n const apiErrorMessage = await getErrorMessage(\n err,\n 'An error occurred fetching vendor products. Please try again or contact support.'\n );\n console.log(err);\n dispatch(getVendorProductsFailure(apiErrorMessage));\n }\n }\n };\n\nexport const fetchVendorDocumentById =\n ({\n id,\n onSuccess = () => {},\n }: {\n id: string;\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(setFetchVendorDocumentByIdLoading(true));\n const response = await api().vendorDocumentsIdGet({\n id,\n });\n dispatch(setFetchVendorDocumentByIdLoading(false));\n dispatch(setCurrentVendorDocument(response));\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorDocumentByIdFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorDocumentByIdFailure(\n 'An error occurred fetching vendor document. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorDocumentByIdFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const patchVendorDocument =\n ({\n documentId,\n vendorDocument,\n onSuccess,\n }: {\n documentId: string;\n vendorDocument: VendorDocumentExtended;\n onSuccess?: () => void;\n }): VoidThunk =>\n async dispatch => {\n try {\n dispatch(patchVendorDocumentRequest());\n const result = await api().vendorDocumentsIdPatch({\n id: documentId,\n vendorDocument,\n });\n dispatch(patchVendorDocumentSuccess(result));\n onSuccess && onSuccess();\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(patchVendorDocumentFailure(apiErrorMessage));\n } else {\n dispatch(\n patchVendorDocumentFailure(\n 'An error occurred updating the document. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(patchVendorDocumentFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchVendorSuppliers =\n (): VoidThunk => async (dispatch, getState) => {\n try {\n dispatch(fetchVendorSuppliersRequest());\n const vendorId = getState().vendors.currentVendor?.id;\n const response = await api().vendorsVendorIdVendorSuppliersGet({\n vendorId,\n });\n dispatch(fetchVendorSuppliersSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorSuppliersFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorSuppliersFailure(\n 'An error occurred fetching vendor suppliers. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorSuppliersFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchVendorSupplier =\n (id: VendorDocumentExtended['id']): VoidThunk =>\n async dispatch => {\n try {\n const response = await api().vendorSuppliersIdGet({\n id,\n });\n dispatch(fetchVendorSupplierSuccess(response));\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorSuppliersFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorSuppliersFailure(\n 'An error occurred fetching vendor supplier. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorSuppliersFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchVendorDocumentApprovals =\n (vendorDocumentId: string): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(fetchVendorDocumentApprovalsRequest());\n const response = await api().vendorDocumentsIdVendorDocumentApprovalsGet({\n id: vendorDocumentId,\n });\n dispatch(\n fetchVendorDocumentApprovalsSuccess({\n vendorDocumentId,\n approvals: response,\n })\n );\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorDocumentApprovalsFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorDocumentApprovalsFailure(\n 'An error occurred fetching the document approvals. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorDocumentApprovalsFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const fetchVendorDocumentAttestations =\n (vendorDocumentId: string): VoidThunk =>\n async (dispatch, getState) => {\n try {\n dispatch(fetchVendorDocumentAttestationsRequest());\n const response = await api().vendorsVendorIdVendorDocumentAttestationsGet(\n {\n vendorId: getState().vendors.currentVendor?.id,\n targetId: vendorDocumentId,\n targetType:\n VendorsVendorIdVendorDocumentAttestationsGetTargetTypeEnum.VendorDocument,\n }\n );\n dispatch(\n fetchVendorDocumentAttestationsSuccess({\n vendorDocumentId,\n attestations: response,\n })\n );\n } catch (err) {\n if (err instanceof Response) {\n console.log(\n 'API error',\n `Status: ${err.status} Message: ${err.statusText}`\n );\n const apiErrorMessage = await getApiErrorMessage(err);\n if (apiErrorMessage) {\n dispatch(fetchVendorDocumentAttestationsFailure(apiErrorMessage));\n } else {\n dispatch(\n fetchVendorDocumentAttestationsFailure(\n 'An error occurred fetching the document attestations. Please try again or contact support.'\n )\n );\n }\n } else {\n console.log(err);\n dispatch(fetchVendorDocumentAttestationsFailure(UNKNOWN_ERROR));\n }\n }\n };\n\nexport const postChatWidgetToken = createAsyncThunk(\n 'vendors/postChatWidgetToken',\n async (_, { dispatch, getState }) => {\n const vendorId = (getState() as ApplicationState).vendors.currentVendor?.id;\n const params: VendorsIdVendorUsersChatWidgetLoginPostRequest = {\n id: vendorId,\n };\n try {\n const response =\n await api().vendorsIdVendorUsersChatWidgetLoginPost(params);\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred while posting chat widget token. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchVendorUserAttestations = createAsyncThunk(\n 'vendors/fetchVendorUserAttestations',\n async (vendorUserId: string, { dispatch, getState }) => {\n const vendorId = (getState() as ApplicationState).vendors.currentVendor?.id;\n try {\n const response = await api().vendorsVendorIdVendorDocumentAttestationsGet(\n {\n vendorId,\n targetId: vendorUserId,\n targetType:\n VendorsVendorIdVendorDocumentAttestationsGetTargetTypeEnum.VendorUser,\n }\n );\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching user attestations. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n\nexport const fetchComplianceUsers = createAsyncThunk(\n 'vendorUsers/fetchComplianceUsers',\n async (_params, { dispatch, getState }) => {\n try {\n const vendorId = (getState() as ApplicationState).vendors.currentVendor\n ?.id;\n const response = await api().vendorsIdVendorUsersGet({\n id: vendorId,\n includeComplianceStats: true,\n queryStatuses: [SharedVendorUserStatus.Active],\n });\n return response;\n } catch (error) {\n await handleThunkError(\n 'An error occurred while fetching compliance users. Please try again or contact support.',\n { dispatch, error }\n );\n }\n }\n);\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport * as runtime from '../runtime';\nimport {\n AgreementCreatePayload,\n AgreementCreatePayloadFromJSON,\n AgreementCreatePayloadToJSON,\n AgreementExtended,\n AgreementExtendedFromJSON,\n AgreementExtendedToJSON,\n AgreementModel,\n AgreementModelFromJSON,\n AgreementModelToJSON,\n AgreementSendPayload,\n AgreementSendPayloadFromJSON,\n AgreementSendPayloadToJSON,\n AgreementSignatoryCreateExternalPayload,\n AgreementSignatoryCreateExternalPayloadFromJSON,\n AgreementSignatoryCreateExternalPayloadToJSON,\n AgreementSignatoryModel,\n AgreementSignatoryModelFromJSON,\n AgreementSignatoryModelToJSON,\n AgreementSignatoryNotifyPayload,\n AgreementSignatoryNotifyPayloadFromJSON,\n AgreementSignatoryNotifyPayloadToJSON,\n AgreementSignatoryRejectPayload,\n AgreementSignatoryRejectPayloadFromJSON,\n AgreementSignatoryRejectPayloadToJSON,\n AgreementSignatoryUpdateInternalPayload,\n AgreementSignatoryUpdateInternalPayloadFromJSON,\n AgreementSignatoryUpdateInternalPayloadToJSON,\n AgreementTemplateCategoryModel,\n AgreementTemplateCategoryModelFromJSON,\n AgreementTemplateCategoryModelToJSON,\n AgreementTemplateModel,\n AgreementTemplateModelFromJSON,\n AgreementTemplateModelToJSON,\n AgreementUpdatePayload,\n AgreementUpdatePayloadFromJSON,\n AgreementUpdatePayloadToJSON,\n AgreementVersionCreatePayload,\n AgreementVersionCreatePayloadFromJSON,\n AgreementVersionCreatePayloadToJSON,\n Answer,\n AnswerFromJSON,\n AnswerToJSON,\n AnswerDeletePayload,\n AnswerDeletePayloadFromJSON,\n AnswerDeletePayloadToJSON,\n AssertionCategoryModel,\n AssertionCategoryModelFromJSON,\n AssertionCategoryModelToJSON,\n AssertionCreatePayload,\n AssertionCreatePayloadFromJSON,\n AssertionCreatePayloadToJSON,\n AssertionExtended,\n AssertionExtendedFromJSON,\n AssertionExtendedToJSON,\n AssertionResultExcludePayload,\n AssertionResultExcludePayloadFromJSON,\n AssertionResultExcludePayloadToJSON,\n AssertionResultExtended,\n AssertionResultExtendedFromJSON,\n AssertionResultExtendedToJSON,\n AssertionRunExtended,\n AssertionRunExtendedFromJSON,\n AssertionRunExtendedToJSON,\n AssertionRunList,\n AssertionRunListFromJSON,\n AssertionRunListToJSON,\n AssertionUpdatePayload,\n AssertionUpdatePayloadFromJSON,\n AssertionUpdatePayloadToJSON,\n Assessment,\n AssessmentFromJSON,\n AssessmentToJSON,\n AssessmentCreatePayload,\n AssessmentCreatePayloadFromJSON,\n AssessmentCreatePayloadToJSON,\n AssessmentDeletePayload,\n AssessmentDeletePayloadFromJSON,\n AssessmentDeletePayloadToJSON,\n AssessmentDownload,\n AssessmentDownloadFromJSON,\n AssessmentDownloadToJSON,\n AssessmentResponse,\n AssessmentResponseFromJSON,\n AssessmentResponseToJSON,\n AssessmentResponseAnswer,\n AssessmentResponseAnswerFromJSON,\n AssessmentResponseAnswerToJSON,\n AssessmentTemplateExtended,\n AssessmentTemplateExtendedFromJSON,\n AssessmentTemplateExtendedToJSON,\n AssessmentTemplateModel,\n AssessmentTemplateModelFromJSON,\n AssessmentTemplateModelToJSON,\n AssessmentUpdatePayload,\n AssessmentUpdatePayloadFromJSON,\n AssessmentUpdatePayloadToJSON,\n AuditCreatePayload,\n AuditCreatePayloadFromJSON,\n AuditCreatePayloadToJSON,\n AuditExtended,\n AuditExtendedFromJSON,\n AuditExtendedToJSON,\n AuditModel,\n AuditModelFromJSON,\n AuditModelToJSON,\n AuditReviewHistoryItem,\n AuditReviewHistoryItemFromJSON,\n AuditReviewHistoryItemToJSON,\n AuditTemplateExtended,\n AuditTemplateExtendedFromJSON,\n AuditTemplateExtendedToJSON,\n AuditTemplateModel,\n AuditTemplateModelFromJSON,\n AuditTemplateModelToJSON,\n AuditUpdatePayload,\n AuditUpdatePayloadFromJSON,\n AuditUpdatePayloadToJSON,\n BusinessFunctionCreatePayload,\n BusinessFunctionCreatePayloadFromJSON,\n BusinessFunctionCreatePayloadToJSON,\n BusinessFunctionModel,\n BusinessFunctionModelFromJSON,\n BusinessFunctionModelToJSON,\n BusinessFunctionUpdatePayload,\n BusinessFunctionUpdatePayloadFromJSON,\n BusinessFunctionUpdatePayloadToJSON,\n CalendarItemList,\n CalendarItemListFromJSON,\n CalendarItemListToJSON,\n Card,\n CardFromJSON,\n CardToJSON,\n CertificateModel,\n CertificateModelFromJSON,\n CertificateModelToJSON,\n ChatWidgetLogin,\n ChatWidgetLoginFromJSON,\n ChatWidgetLoginToJSON,\n ChecklistChangedStatusPayload,\n ChecklistChangedStatusPayloadFromJSON,\n ChecklistChangedStatusPayloadToJSON,\n ChecklistCreatePayload,\n ChecklistCreatePayloadFromJSON,\n ChecklistCreatePayloadToJSON,\n ChecklistExtended,\n ChecklistExtendedFromJSON,\n ChecklistExtendedToJSON,\n ChecklistTemplate,\n ChecklistTemplateFromJSON,\n ChecklistTemplateToJSON,\n ChecklistTemplateCreatePayload,\n ChecklistTemplateCreatePayloadFromJSON,\n ChecklistTemplateCreatePayloadToJSON,\n ChecklistTemplateExtended,\n ChecklistTemplateExtendedFromJSON,\n ChecklistTemplateExtendedToJSON,\n ChecklistTemplateUpdatePayload,\n ChecklistTemplateUpdatePayloadFromJSON,\n ChecklistTemplateUpdatePayloadToJSON,\n ChecklistUpdatePayload,\n ChecklistUpdatePayloadFromJSON,\n ChecklistUpdatePayloadToJSON,\n Company,\n CompanyFromJSON,\n CompanyToJSON,\n CompanyExtended,\n CompanyExtendedFromJSON,\n CompanyExtendedToJSON,\n CompanyIdentifierCreatePayload,\n CompanyIdentifierCreatePayloadFromJSON,\n CompanyIdentifierCreatePayloadToJSON,\n CompanyIdentifierModel,\n CompanyIdentifierModelFromJSON,\n CompanyIdentifierModelToJSON,\n CompanyIdentifierType,\n CompanyIdentifierTypeFromJSON,\n CompanyIdentifierTypeToJSON,\n CompanyIdentifierUpdatePayload,\n CompanyIdentifierUpdatePayloadFromJSON,\n CompanyIdentifierUpdatePayloadToJSON,\n CompanyUpdatePayload,\n CompanyUpdatePayloadFromJSON,\n CompanyUpdatePayloadToJSON,\n ControlCategoryExtended,\n ControlCategoryExtendedFromJSON,\n ControlCategoryExtendedToJSON,\n ControlCreatePayload,\n ControlCreatePayloadFromJSON,\n ControlCreatePayloadToJSON,\n ControlExtended,\n ControlExtendedFromJSON,\n ControlExtendedToJSON,\n ControlModel,\n ControlModelFromJSON,\n ControlModelToJSON,\n ControlUpdatePayload,\n ControlUpdatePayloadFromJSON,\n ControlUpdatePayloadToJSON,\n ControlUpdateStatusPayload,\n ControlUpdateStatusPayloadFromJSON,\n ControlUpdateStatusPayloadToJSON,\n CorrectiveActionExtended,\n CorrectiveActionExtendedFromJSON,\n CorrectiveActionExtendedToJSON,\n DashboardSummary,\n DashboardSummaryFromJSON,\n DashboardSummaryToJSON,\n DataRoomEntityDeletePayload,\n DataRoomEntityDeletePayloadFromJSON,\n DataRoomEntityDeletePayloadToJSON,\n DataRoomEntityFolderCreatePayload,\n DataRoomEntityFolderCreatePayloadFromJSON,\n DataRoomEntityFolderCreatePayloadToJSON,\n DataRoomEntityModel,\n DataRoomEntityModelFromJSON,\n DataRoomEntityModelToJSON,\n DataRoomEntityMovePayload,\n DataRoomEntityMovePayloadFromJSON,\n DataRoomEntityMovePayloadToJSON,\n DataRoomEntityUpdatePayload,\n DataRoomEntityUpdatePayloadFromJSON,\n DataRoomEntityUpdatePayloadToJSON,\n EmailArray,\n EmailArrayFromJSON,\n EmailArrayToJSON,\n EmailText,\n EmailTextFromJSON,\n EmailTextToJSON,\n ErrorResponse,\n ErrorResponseFromJSON,\n ErrorResponseToJSON,\n EscrowAccount,\n EscrowAccountFromJSON,\n EscrowAccountToJSON,\n EvidenceModel,\n EvidenceModelFromJSON,\n EvidenceModelToJSON,\n ExternalShare,\n ExternalShareFromJSON,\n ExternalShareToJSON,\n FrameworkExportEvidencePayload,\n FrameworkExportEvidencePayloadFromJSON,\n FrameworkExportEvidencePayloadToJSON,\n FrameworkExtended,\n FrameworkExtendedFromJSON,\n FrameworkExtendedToJSON,\n FrameworkGuidanceModel,\n FrameworkGuidanceModelFromJSON,\n FrameworkGuidanceModelToJSON,\n FrameworkModel,\n FrameworkModelFromJSON,\n FrameworkModelToJSON,\n FrameworkRequirementCategoryExtended,\n FrameworkRequirementCategoryExtendedFromJSON,\n FrameworkRequirementCategoryExtendedToJSON,\n FrameworkTemplateExtended,\n FrameworkTemplateExtendedFromJSON,\n FrameworkTemplateExtendedToJSON,\n FrameworkTemplateModel,\n FrameworkTemplateModelFromJSON,\n FrameworkTemplateModelToJSON,\n GlobalSearchItem,\n GlobalSearchItemFromJSON,\n GlobalSearchItemToJSON,\n Image,\n ImageFromJSON,\n ImageToJSON,\n IncidentEventExtended,\n IncidentEventExtendedFromJSON,\n IncidentEventExtendedToJSON,\n InlineObject,\n InlineObjectFromJSON,\n InlineObjectToJSON,\n Invoice,\n InvoiceFromJSON,\n InvoiceToJSON,\n ItemCreationRequestCreatePayload,\n ItemCreationRequestCreatePayloadFromJSON,\n ItemCreationRequestCreatePayloadToJSON,\n JurisdictionModel,\n JurisdictionModelFromJSON,\n JurisdictionModelToJSON,\n LegalRegisterModel,\n LegalRegisterModelFromJSON,\n LegalRegisterModelToJSON,\n LegalRegisterUpdatePayload,\n LegalRegisterUpdatePayloadFromJSON,\n LegalRegisterUpdatePayloadToJSON,\n LegislationAddPayload,\n LegislationAddPayloadFromJSON,\n LegislationAddPayloadToJSON,\n LegislationClassificationModel,\n LegislationClassificationModelFromJSON,\n LegislationClassificationModelToJSON,\n LegislationCreatePayload,\n LegislationCreatePayloadFromJSON,\n LegislationCreatePayloadToJSON,\n LegislationExtended,\n LegislationExtendedFromJSON,\n LegislationExtendedToJSON,\n LegislationModel,\n LegislationModelFromJSON,\n LegislationModelToJSON,\n LegislationTemplateModel,\n LegislationTemplateModelFromJSON,\n LegislationTemplateModelToJSON,\n LegislationUpdatePayload,\n LegislationUpdatePayloadFromJSON,\n LegislationUpdatePayloadToJSON,\n MessageResponse,\n MessageResponseFromJSON,\n MessageResponseToJSON,\n MultipleShare,\n MultipleShareFromJSON,\n MultipleShareToJSON,\n MultipleShareDelete,\n MultipleShareDeleteFromJSON,\n MultipleShareDeleteToJSON,\n NotificationList,\n NotificationListFromJSON,\n NotificationListToJSON,\n PaymentMethod,\n PaymentMethodFromJSON,\n PaymentMethodToJSON,\n PaymentMethodUpdatePayload,\n PaymentMethodUpdatePayloadFromJSON,\n PaymentMethodUpdatePayloadToJSON,\n PaymentPlan,\n PaymentPlanFromJSON,\n PaymentPlanToJSON,\n PaymentPlanPrice,\n PaymentPlanPriceFromJSON,\n PaymentPlanPriceToJSON,\n PaymentPlanVendorCheckoutCreatePayload,\n PaymentPlanVendorCheckoutCreatePayloadFromJSON,\n PaymentPlanVendorCheckoutCreatePayloadToJSON,\n PaymentPlanVendorCheckoutModel,\n PaymentPlanVendorCheckoutModelFromJSON,\n PaymentPlanVendorCheckoutModelToJSON,\n PestelItemCreatePayload,\n PestelItemCreatePayloadFromJSON,\n PestelItemCreatePayloadToJSON,\n PestelItemModel,\n PestelItemModelFromJSON,\n PestelItemModelToJSON,\n PestelItemUpdatePayload,\n PestelItemUpdatePayloadFromJSON,\n PestelItemUpdatePayloadToJSON,\n PestelRegisterModel,\n PestelRegisterModelFromJSON,\n PestelRegisterModelToJSON,\n PestelRegisterUpdatePayload,\n PestelRegisterUpdatePayloadFromJSON,\n PestelRegisterUpdatePayloadToJSON,\n Policy,\n PolicyFromJSON,\n PolicyToJSON,\n PolicyCategory,\n PolicyCategoryFromJSON,\n PolicyCategoryToJSON,\n RecurringPaymentCheckoutCreatePayload,\n RecurringPaymentCheckoutCreatePayloadFromJSON,\n RecurringPaymentCheckoutCreatePayloadToJSON,\n RecurringPaymentCheckoutModel,\n RecurringPaymentCheckoutModelFromJSON,\n RecurringPaymentCheckoutModelToJSON,\n ReferenceCreatePayload,\n ReferenceCreatePayloadFromJSON,\n ReferenceCreatePayloadToJSON,\n RegisteredCompany,\n RegisteredCompanyFromJSON,\n RegisteredCompanyToJSON,\n ReminderCreatePayload,\n ReminderCreatePayloadFromJSON,\n ReminderCreatePayloadToJSON,\n ReminderList,\n ReminderListFromJSON,\n ReminderListToJSON,\n ReminderModel,\n ReminderModelFromJSON,\n ReminderModelToJSON,\n ReminderUpdatePayload,\n ReminderUpdatePayloadFromJSON,\n ReminderUpdatePayloadToJSON,\n ReportCreatePayload,\n ReportCreatePayloadFromJSON,\n ReportCreatePayloadToJSON,\n ReportModel,\n ReportModelFromJSON,\n ReportModelToJSON,\n ReviewHistoryItemCreatePayload,\n ReviewHistoryItemCreatePayloadFromJSON,\n ReviewHistoryItemCreatePayloadToJSON,\n ReviewHistoryItemModel,\n ReviewHistoryItemModelFromJSON,\n ReviewHistoryItemModelToJSON,\n RiskCategoryModel,\n RiskCategoryModelFromJSON,\n RiskCategoryModelToJSON,\n RiskCreatePayload,\n RiskCreatePayloadFromJSON,\n RiskCreatePayloadToJSON,\n RiskExtended,\n RiskExtendedFromJSON,\n RiskExtendedToJSON,\n RiskModel,\n RiskModelFromJSON,\n RiskModelToJSON,\n RiskReportCreatePayload,\n RiskReportCreatePayloadFromJSON,\n RiskReportCreatePayloadToJSON,\n RiskReportModel,\n RiskReportModelFromJSON,\n RiskReportModelToJSON,\n RiskTemplateModel,\n RiskTemplateModelFromJSON,\n RiskTemplateModelToJSON,\n RiskUpdatePayload,\n RiskUpdatePayloadFromJSON,\n RiskUpdatePayloadToJSON,\n ShareReceiver,\n ShareReceiverFromJSON,\n ShareReceiverToJSON,\n ShareSuggestionList,\n ShareSuggestionListFromJSON,\n ShareSuggestionListToJSON,\n SharedDocumentList,\n SharedDocumentListFromJSON,\n SharedDocumentListToJSON,\n SharedEmploymentStatus,\n SharedEmploymentStatusFromJSON,\n SharedEmploymentStatusToJSON,\n SharedUserType,\n SharedUserTypeFromJSON,\n SharedUserTypeToJSON,\n SharedVendorUserStatus,\n SharedVendorUserStatusFromJSON,\n SharedVendorUserStatusToJSON,\n SharesList,\n SharesListFromJSON,\n SharesListToJSON,\n Subscription,\n SubscriptionFromJSON,\n SubscriptionToJSON,\n SubscriptionUpdatePayload,\n SubscriptionUpdatePayloadFromJSON,\n SubscriptionUpdatePayloadToJSON,\n SurveyClause,\n SurveyClauseFromJSON,\n SurveyClauseToJSON,\n SurveyClauseUpdatePayload,\n SurveyClauseUpdatePayloadFromJSON,\n SurveyClauseUpdatePayloadToJSON,\n Table,\n TableFromJSON,\n TableToJSON,\n TaskAvailableAssertionsPayload,\n TaskAvailableAssertionsPayloadFromJSON,\n TaskAvailableAssertionsPayloadToJSON,\n TaskCreatePayload,\n TaskCreatePayloadFromJSON,\n TaskCreatePayloadToJSON,\n TaskExtended,\n TaskExtendedFromJSON,\n TaskExtendedToJSON,\n TaskList,\n TaskListFromJSON,\n TaskListToJSON,\n TaskUpdatePayload,\n TaskUpdatePayloadFromJSON,\n TaskUpdatePayloadToJSON,\n TwoFactorRequestOtpPayload,\n TwoFactorRequestOtpPayloadFromJSON,\n TwoFactorRequestOtpPayloadToJSON,\n TwoFactorSmsRequestPayload,\n TwoFactorSmsRequestPayloadFromJSON,\n TwoFactorSmsRequestPayloadToJSON,\n TwoFactorVerifyOtpPayload,\n TwoFactorVerifyOtpPayloadFromJSON,\n TwoFactorVerifyOtpPayloadToJSON,\n TwoFactorVerifyOtpSetupPayload,\n TwoFactorVerifyOtpSetupPayloadFromJSON,\n TwoFactorVerifyOtpSetupPayloadToJSON,\n TwoFactorVerifyOtpSetupResponse,\n TwoFactorVerifyOtpSetupResponseFromJSON,\n TwoFactorVerifyOtpSetupResponseToJSON,\n TwoFactorVerifyTokenPayload,\n TwoFactorVerifyTokenPayloadFromJSON,\n TwoFactorVerifyTokenPayloadToJSON,\n UserDetails,\n UserDetailsFromJSON,\n UserDetailsToJSON,\n UserForgotPassword,\n UserForgotPasswordFromJSON,\n UserForgotPasswordToJSON,\n UserInvitation,\n UserInvitationFromJSON,\n UserInvitationToJSON,\n UserPassword,\n UserPasswordFromJSON,\n UserPasswordToJSON,\n UserResetPassword,\n UserResetPasswordFromJSON,\n UserResetPasswordToJSON,\n UserSignIn,\n UserSignInFromJSON,\n UserSignInToJSON,\n UserSignUp,\n UserSignUpFromJSON,\n UserSignUpToJSON,\n Vendor,\n VendorFromJSON,\n VendorToJSON,\n VendorActionExtended,\n VendorActionExtendedFromJSON,\n VendorActionExtendedToJSON,\n VendorActionModel,\n VendorActionModelFromJSON,\n VendorActionModelToJSON,\n VendorDetails,\n VendorDetailsFromJSON,\n VendorDetailsToJSON,\n VendorDocument,\n VendorDocumentFromJSON,\n VendorDocumentToJSON,\n VendorDocumentApproval,\n VendorDocumentApprovalFromJSON,\n VendorDocumentApprovalToJSON,\n VendorDocumentApprovalReject,\n VendorDocumentApprovalRejectFromJSON,\n VendorDocumentApprovalRejectToJSON,\n VendorDocumentAttestation,\n VendorDocumentAttestationFromJSON,\n VendorDocumentAttestationToJSON,\n VendorDocumentAttestationsGroupUpdatePayload,\n VendorDocumentAttestationsGroupUpdatePayloadFromJSON,\n VendorDocumentAttestationsGroupUpdatePayloadToJSON,\n VendorDocumentDownload,\n VendorDocumentDownloadFromJSON,\n VendorDocumentDownloadToJSON,\n VendorDocumentExtended,\n VendorDocumentExtendedFromJSON,\n VendorDocumentExtendedToJSON,\n VendorDocumentUpdatePayload,\n VendorDocumentUpdatePayloadFromJSON,\n VendorDocumentUpdatePayloadToJSON,\n VendorEventExtended,\n VendorEventExtendedFromJSON,\n VendorEventExtendedToJSON,\n VendorEventModel,\n VendorEventModelFromJSON,\n VendorEventModelToJSON,\n VendorFrameworkRequirementCreatePayload,\n VendorFrameworkRequirementCreatePayloadFromJSON,\n VendorFrameworkRequirementCreatePayloadToJSON,\n VendorFrameworkRequirementModel,\n VendorFrameworkRequirementModelFromJSON,\n VendorFrameworkRequirementModelToJSON,\n VendorIntegrationCreatePayload,\n VendorIntegrationCreatePayloadFromJSON,\n VendorIntegrationCreatePayloadToJSON,\n VendorIntegrationExtended,\n VendorIntegrationExtendedFromJSON,\n VendorIntegrationExtendedToJSON,\n VendorIntegrationModel,\n VendorIntegrationModelFromJSON,\n VendorIntegrationModelToJSON,\n VendorIntegrationSyncCreatePayload,\n VendorIntegrationSyncCreatePayloadFromJSON,\n VendorIntegrationSyncCreatePayloadToJSON,\n VendorIntegrationSyncExtended,\n VendorIntegrationSyncExtendedFromJSON,\n VendorIntegrationSyncExtendedToJSON,\n VendorIntegrationUpdatePayload,\n VendorIntegrationUpdatePayloadFromJSON,\n VendorIntegrationUpdatePayloadToJSON,\n VendorPolicy,\n VendorPolicyFromJSON,\n VendorPolicyToJSON,\n VendorPolicyClause,\n VendorPolicyClauseFromJSON,\n VendorPolicyClauseToJSON,\n VendorPolicyDetails,\n VendorPolicyDetailsFromJSON,\n VendorPolicyDetailsToJSON,\n VendorPolicyProgress,\n VendorPolicyProgressFromJSON,\n VendorPolicyProgressToJSON,\n VendorPolicyPublish,\n VendorPolicyPublishFromJSON,\n VendorPolicyPublishToJSON,\n VendorPolicyType,\n VendorPolicyTypeFromJSON,\n VendorPolicyTypeToJSON,\n VendorProductIndex,\n VendorProductIndexFromJSON,\n VendorProductIndexToJSON,\n VendorSupplierCategory,\n VendorSupplierCategoryFromJSON,\n VendorSupplierCategoryToJSON,\n VendorSupplierExtended,\n VendorSupplierExtendedFromJSON,\n VendorSupplierExtendedToJSON,\n VendorSupplierModel,\n VendorSupplierModelFromJSON,\n VendorSupplierModelToJSON,\n VendorSupplierPayload,\n VendorSupplierPayloadFromJSON,\n VendorSupplierPayloadToJSON,\n VendorTeamModel,\n VendorTeamModelFromJSON,\n VendorTeamModelToJSON,\n VendorTeamUpsertPayload,\n VendorTeamUpsertPayloadFromJSON,\n VendorTeamUpsertPayloadToJSON,\n VendorTreeNodeModel,\n VendorTreeNodeModelFromJSON,\n VendorTreeNodeModelToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserToJSON,\n VendorUserCreatePayload,\n VendorUserCreatePayloadFromJSON,\n VendorUserCreatePayloadToJSON,\n VendorUserRoles,\n VendorUserRolesFromJSON,\n VendorUserRolesToJSON,\n VendorUserStatus,\n VendorUserStatusFromJSON,\n VendorUserStatusToJSON,\n VendorUserUpdatePayload,\n VendorUserUpdatePayloadFromJSON,\n VendorUserUpdatePayloadToJSON,\n VendorsCreatePayload,\n VendorsCreatePayloadFromJSON,\n VendorsCreatePayloadToJSON,\n} from '../models';\n\nexport interface AgreementSignatoriesIdDeleteRequest {\n id: string;\n}\n\nexport interface AgreementSignatoriesIdGetRequest {\n id: string;\n}\n\nexport interface AgreementSignatoriesIdPatchRequest {\n id: string;\n agreementSignatoryType?: string;\n agreementSignatoryFirstName?: string;\n agreementSignatoryLastName?: string;\n agreementSignatoryStatus?: string;\n agreementSignatoryEmail?: string;\n agreementSignatoryAddress?: string;\n agreementSignatoryCompanyName?: string;\n agreementSignatoryCompanyAddress?: string;\n agreementSignatoryCompanyNumber?: string;\n agreementSignatoryDocument?: Blob;\n}\n\nexport interface AgreementSignatoriesSignatoryIdNotifyPostRequest {\n signatoryId: string;\n body?: AgreementSignatoryNotifyPayload;\n}\n\nexport interface AgreementSignatoriesSignatoryIdRejectPatchRequest {\n signatoryId: string;\n body?: AgreementSignatoryRejectPayload;\n}\n\nexport interface AgreementSignatoriesSignatoryIdSignPatchRequest {\n signatoryId: string;\n}\n\nexport interface AgreementTemplatesGetRequest {\n vendorId?: string;\n}\n\nexport interface AgreementTemplatesIdGetRequest {\n id: string;\n}\n\nexport interface AgreementsAgreementIdAgreementSignatoriesExternalPostRequest {\n agreementId: string;\n body: AgreementSignatoryCreateExternalPayload;\n}\n\nexport interface AgreementsAgreementIdAgreementSignatoriesGetRequest {\n agreementId: string;\n}\n\nexport interface AgreementsAgreementIdAgreementSignatoriesInternalPatchRequest {\n agreementId: string;\n body: AgreementSignatoryUpdateInternalPayload;\n}\n\nexport interface AgreementsIdArchivePostRequest {\n id: string;\n}\n\nexport interface AgreementsIdDeleteRequest {\n id: string;\n}\n\nexport interface AgreementsIdGetRequest {\n id: string;\n}\n\nexport interface AgreementsIdPatchRequest {\n id: string;\n body: AgreementUpdatePayload;\n}\n\nexport interface AgreementsIdPreviewGetRequest {\n id: string;\n}\n\nexport interface AgreementsIdSendPostRequest {\n id: string;\n body: AgreementSendPayload;\n}\n\nexport interface AgreementsIdUnarchivePostRequest {\n id: string;\n}\n\nexport interface AgreementsIdVersionsPostRequest {\n id: string;\n body: AgreementVersionCreatePayload;\n}\n\nexport interface AnswersIdPatchRequest {\n id: string;\n answer: Answer;\n}\n\nexport interface AssertionResultsAssertionResultIdExcludePatchRequest {\n assertionResultId: string;\n body: AssertionResultExcludePayload;\n}\n\nexport interface AssertionResultsAssertionResultIdGetRequest {\n assertionResultId: string;\n}\n\nexport interface AssertionResultsAssertionResultIdIncludePatchRequest {\n assertionResultId: string;\n}\n\nexport interface AssertionRunsAssertionRunIdGetRequest {\n assertionRunId: string;\n}\n\nexport interface AssertionsAssertionIdCreateReviewPostRequest {\n assertionId: string;\n assertionReviewStatus?: string;\n assertionReviewComment?: string;\n assertionReviewEvidences?: Array;\n}\n\nexport interface AssertionsAssertionIdDeleteRequest {\n assertionId: string;\n}\n\nexport interface AssertionsAssertionIdGetRequest {\n assertionId: string;\n}\n\nexport interface AssertionsAssertionIdPatchRequest {\n assertionId: string;\n body: AssertionUpdatePayload;\n}\n\nexport interface AssertionsAssertionIdRunPostRequest {\n assertionId: string;\n}\n\nexport interface AssessmentDownloadsIdDeleteRequest {\n id: string;\n}\n\nexport interface AssessmentDownloadsIdGetRequest {\n id: string;\n}\n\nexport interface AssessmentResponseAnswerFilesIdDeleteRequest {\n id: string;\n}\n\nexport interface AssessmentResponseAnswersIdConfirmPatchRequest {\n id: string;\n}\n\nexport interface AssessmentResponseAnswersIdDeleteRequest {\n id: string;\n}\n\nexport interface AssessmentResponsesIdAssessmentResponseAnswersHistoryGetRequest {\n id: string;\n questionId?: string;\n}\n\nexport interface AssessmentResponsesIdDeleteRequest {\n id: string;\n}\n\nexport interface AssessmentResponsesIdGetRequest {\n id: string;\n}\n\nexport interface AssessmentResponsesIdPatchRequest {\n id: string;\n body: AssessmentResponse;\n}\n\nexport interface AssessmentResponsesIdPublishPatchRequest {\n id: string;\n}\n\nexport interface AssessmentTemplatesIdGetRequest {\n id: string;\n}\n\nexport interface AssessmentsAssessmentIdAssessmentRecipientsRecipientIdDeleteRequest {\n assessmentId: string;\n recipientId: string;\n}\n\nexport interface AssessmentsIdAssessmentDownloadsGetRequest {\n id: string;\n}\n\nexport interface AssessmentsIdAssessmentDownloadsPostRequest {\n id: string;\n assessmentDownload?: AssessmentDownload;\n}\n\nexport interface AssessmentsIdAssessmentResponsesGetRequest {\n id: string;\n}\n\nexport interface AssessmentsIdDeleteRequest {\n id: string;\n body: AssessmentDeletePayload;\n}\n\nexport interface AssessmentsIdGetRequest {\n id: string;\n}\n\nexport interface AssessmentsIdPatchRequest {\n id: string;\n body: AssessmentUpdatePayload;\n}\n\nexport interface AssessmentsIdSharePostRequest {\n id: string;\n externalShare: ExternalShare;\n}\n\nexport interface AuditTemplatesIdGetRequest {\n id: string;\n}\n\nexport interface AuditsAuditIdReviewHistoryGetRequest {\n auditId: string;\n questionId: string;\n}\n\nexport interface AuditsIdCompletePostRequest {\n id: string;\n}\n\nexport interface AuditsIdDeleteRequest {\n id: string;\n}\n\nexport interface AuditsIdGetRequest {\n id: string;\n}\n\nexport interface AuditsIdPatchRequest {\n id: string;\n body: AuditUpdatePayload;\n}\n\nexport interface AuditsIdPreviewGetRequest {\n id: string;\n}\n\nexport interface BusinessFunctionsIdDeleteRequest {\n id: string;\n}\n\nexport interface BusinessFunctionsIdGetRequest {\n id: string;\n}\n\nexport interface BusinessFunctionsIdPatchRequest {\n id: string;\n body: BusinessFunctionUpdatePayload;\n}\n\nexport interface CertificatesIdDeleteRequest {\n id: string;\n}\n\nexport interface CertificatesIdDocumentGetRequest {\n id: string;\n}\n\nexport interface CertificatesIdGetRequest {\n id: string;\n}\n\nexport interface ChecklistTemplatesIdGetRequest {\n id: string;\n}\n\nexport interface ChecklistTemplatesIdPatchRequest {\n id: string;\n body: ChecklistTemplateUpdatePayload;\n}\n\nexport interface ChecklistsIdChangeStatusPatchRequest {\n id: string;\n body: ChecklistChangedStatusPayload;\n}\n\nexport interface ChecklistsIdGetRequest {\n id: string;\n}\n\nexport interface ChecklistsIdPatchRequest {\n id: string;\n body: ChecklistUpdatePayload;\n}\n\nexport interface CompaniesIdCompanyIdentifiersGetRequest {\n id: string;\n}\n\nexport interface CompaniesIdCompanyIdentifiersPostRequest {\n id: string;\n body: CompanyIdentifierCreatePayload;\n}\n\nexport interface CompaniesIdGetRequest {\n id: string;\n}\n\nexport interface CompaniesIdOfficesOfficeIdDeleteRequest {\n id: string;\n officeId: string;\n}\n\nexport interface CompaniesIdPatchRequest {\n id: string;\n body: CompanyUpdatePayload;\n}\n\nexport interface CompaniesValidatePostRequest {\n id: string;\n body: Company;\n}\n\nexport interface CompanyIdentifiersIdDeleteRequest {\n id: string;\n}\n\nexport interface CompanyIdentifiersIdGetRequest {\n id: string;\n}\n\nexport interface CompanyIdentifiersIdPatchRequest {\n id: string;\n body: CompanyIdentifierUpdatePayload;\n}\n\nexport interface ConfigsConfigIdGetRequest {\n configId: ConfigsConfigIdGetConfigIdEnum;\n}\n\nexport interface ControlsControlIdGetRequest {\n controlId: string;\n vendorId?: string;\n}\n\nexport interface ControlsControlIdPatchRequest {\n controlId: string;\n body: ControlUpdatePayload;\n}\n\nexport interface ControlsControlIdReferencesDeleteRequest {\n controlId: string;\n referenceableId: string;\n referenceableType: string;\n}\n\nexport interface ControlsControlIdReferencesPostRequest {\n controlId: string;\n body: ReferenceCreatePayload;\n}\n\nexport interface ControlsControlIdStatusPatchRequest {\n controlId: string;\n body: ControlUpdateStatusPayload;\n}\n\nexport interface CorrectiveActionsCorrectiveActionIdDeleteRequest {\n correctiveActionId: string;\n}\n\nexport interface CorrectiveActionsCorrectiveActionIdGetRequest {\n correctiveActionId: string;\n}\n\nexport interface CorrectiveActionsCorrectiveActionIdPatchRequest {\n correctiveActionId: string;\n correctiveActionName?: string;\n correctiveActionDescription?: string;\n correctiveActionIdentifier?: string;\n correctiveActionDateIdentified?: string;\n correctiveActionRaisedBy?: string;\n correctiveActionRootCause?: string;\n correctiveActionOwnerId?: string;\n correctiveActionCompleted?: boolean;\n correctiveActionUrl?: string;\n correctiveActionAttachments?: Array;\n correctiveActionDeletedAttachmentIds?: Array;\n correctiveActionActionType?: CorrectiveActionsCorrectiveActionIdPatchCorrectiveActionActionTypeEnum;\n correctiveActionCorrectiveActions?: string;\n}\n\nexport interface CreateRecurringPaymentGetRequest {\n purchasableType: string;\n purchasableId: string;\n paymentPeriod: CreateRecurringPaymentGetPaymentPeriodEnum;\n}\n\nexport interface CreateStripeRecurringPaymentPostRequest {\n body: RecurringPaymentCheckoutCreatePayload;\n}\n\nexport interface CreateStripeSessionPostRequest {\n body: PaymentPlanVendorCheckoutCreatePayload;\n}\n\nexport interface DataRoomEntitiesEntityIdPatchRequest {\n entityId: string;\n body: DataRoomEntityUpdatePayload;\n}\n\nexport interface DataRoomFilesFileIdDownloadGetRequest {\n fileId: string;\n}\n\nexport interface EvidencesEvidenceIdDeleteRequest {\n evidenceId: string;\n}\n\nexport interface EvidencesEvidenceIdDownloadGetRequest {\n evidenceId: string;\n}\n\nexport interface FrameworkGuidancesIdGetRequest {\n id: string;\n}\n\nexport interface FrameworkTemplatesIdGetRequest {\n id: string;\n}\n\nexport interface FrameworksFrameworkIdFrameworkRequirementCategoriesGetRequest {\n frameworkId: string;\n}\n\nexport interface FrameworksIdExportEvidencePostRequest {\n id: string;\n body: FrameworkExportEvidencePayload;\n}\n\nexport interface FrameworksIdGetRequest {\n id: string;\n}\n\nexport interface FrameworksIdPoliciesGetRequest {\n id: string;\n}\n\nexport interface IncidentEventsIncidentEventIdDeleteRequest {\n incidentEventId: string;\n}\n\nexport interface IncidentEventsIncidentEventIdGetRequest {\n incidentEventId: string;\n}\n\nexport interface IncidentEventsIncidentEventIdPatchRequest {\n incidentEventId: string;\n incidentEventName?: string;\n incidentEventDescription?: string;\n incidentEventIdentifier?: string;\n incidentEventDateIdentified?: string;\n incidentEventRaisedBy?: string;\n incidentEventRootCause?: string;\n incidentEventOwnerId?: string;\n incidentEventCompleted?: boolean;\n incidentEventUrl?: string;\n incidentEventAttachments?: Array;\n incidentEventDeletedAttachmentIds?: Array;\n incidentEventPreventativeActions?: string;\n incidentEventActionsTaken?: string;\n incidentEventDataBreach?: boolean;\n incidentEventDataBreachDetails?: string;\n}\n\nexport interface LegislationsIdDeleteRequest {\n id: string;\n}\n\nexport interface LegislationsIdGetRequest {\n id: string;\n}\n\nexport interface LegislationsIdPatchRequest {\n id: string;\n body: LegislationUpdatePayload;\n}\n\nexport interface NotificationsNotificationIdReadPatchRequest {\n notificationId: string;\n}\n\nexport interface ParseEmailsPostRequest {\n email: EmailText;\n}\n\nexport interface PaymentMethodsIdDeleteRequest {\n id: string;\n}\n\nexport interface PaymentMethodsIdGetRequest {\n id: string;\n}\n\nexport interface PaymentMethodsIdPatchRequest {\n id: string;\n card: PaymentMethodUpdatePayload;\n}\n\nexport interface PaymentMethodsPostRequest {\n card?: Card;\n}\n\nexport interface PaymentPlanVendorsGetRequest {\n paymentPlanId: string;\n}\n\nexport interface PaymentPlansPricingGetRequest {\n usersLimit: number;\n paymentPeriod: PaymentPlansPricingGetPaymentPeriodEnum;\n paymentPlanIds: Array;\n}\n\nexport interface PestelItemsIdDeleteRequest {\n id: string;\n}\n\nexport interface PestelItemsIdGetRequest {\n id: string;\n}\n\nexport interface PestelItemsIdPatchRequest {\n id: string;\n body: PestelItemUpdatePayload;\n}\n\nexport interface RemindersReminderIdDeleteRequest {\n reminderId: string;\n}\n\nexport interface RemindersReminderIdPatchRequest {\n reminderId: string;\n body?: ReminderUpdatePayload;\n}\n\nexport interface ReportsIdDeleteRequest {\n id: string;\n}\n\nexport interface ReportsIdDocumentGetRequest {\n id: string;\n}\n\nexport interface ReportsIdGetRequest {\n id: string;\n}\n\nexport interface RiskCategoriesGetRequest {\n vendorId?: string;\n}\n\nexport interface RiskReportsIdDeleteRequest {\n id: string;\n}\n\nexport interface RiskReportsIdGetRequest {\n id: string;\n}\n\nexport interface RisksIdApprovePostRequest {\n id: string;\n}\n\nexport interface RisksIdDeleteRequest {\n id: string;\n}\n\nexport interface RisksIdGetRequest {\n id: string;\n}\n\nexport interface RisksIdPatchRequest {\n id: string;\n body: RiskUpdatePayload;\n}\n\nexport interface SearchRegisteredCompaniesqqGetRequest {\n q: string;\n}\n\nexport interface SubscriptionsIdDeleteRequest {\n id: string;\n}\n\nexport interface SubscriptionsIdPatchRequest {\n id: string;\n body: SubscriptionUpdatePayload;\n}\n\nexport interface SurveyClausesSurveyClauseIdPatchRequest {\n surveyClauseId: string;\n body: SurveyClauseUpdatePayload;\n}\n\nexport interface SurveyClausesSurveyClauseIdRevertCustomTextPatchRequest {\n surveyClauseId: string;\n}\n\nexport interface TablesTypeGetRequest {\n type: string;\n}\n\nexport interface TasksTaskIdAvailableAssertionsPatchRequest {\n taskId: string;\n body: TaskAvailableAssertionsPayload;\n}\n\nexport interface TasksTaskIdEvidencesPostRequest {\n taskId: string;\n attachment?: Blob;\n description?: string;\n}\n\nexport interface TasksTaskIdGetRequest {\n taskId: string;\n}\n\nexport interface TasksTaskIdPatchRequest {\n taskId: string;\n body: TaskUpdatePayload;\n}\n\nexport interface UserDetailsPatchRequest {\n userDetails?: UserDetails;\n}\n\nexport interface UsersGetRequest {\n queryEmail?: string;\n}\n\nexport interface UsersIdSignatureGetRequest {\n id: string;\n}\n\nexport interface UsersIdSignaturePatchRequest {\n id: string;\n image: Blob;\n}\n\nexport interface UsersInvitationsPostRequest {\n invitation?: UserInvitation;\n}\n\nexport interface UsersInvitationsTokenGetRequest {\n token: string;\n}\n\nexport interface UsersPasswordPatchRequest {\n user?: UserResetPassword;\n}\n\nexport interface UsersPasswordPostRequest {\n user?: UserForgotPassword;\n}\n\nexport interface UsersPatchRequest {\n password?: UserPassword;\n}\n\nexport interface UsersPostRequest {\n user?: UserSignUp;\n}\n\nexport interface UsersSignInPostRequest {\n session?: UserSignIn;\n}\n\nexport interface UsersSmsRequestPostRequest {\n payload?: TwoFactorSmsRequestPayload;\n}\n\nexport interface UsersVerifyOtpPostRequest {\n payload?: TwoFactorVerifyOtpPayload;\n}\n\nexport interface UsersVerifyOtpSetupPostRequest {\n payload?: TwoFactorVerifyOtpSetupPayload;\n}\n\nexport interface UsersVerifyOtpUninstallDeleteRequest {\n payload?: TwoFactorVerifyOtpSetupPayload;\n}\n\nexport interface UsersVerifyTokenPostRequest {\n payload?: TwoFactorVerifyTokenPayload;\n}\n\nexport interface VendorActionsVendorActionIdDeleteRequest {\n vendorActionId: string;\n}\n\nexport interface VendorActionsVendorActionIdGetRequest {\n vendorActionId: string;\n}\n\nexport interface VendorActionsVendorActionIdPatchRequest {\n vendorActionId: string;\n vendorActionName: string;\n vendorActionOwnerId: string;\n vendorActionCompleted: boolean;\n vendorActionDescription?: string;\n vendorActionDueDate?: string;\n vendorActionAttachments?: Array;\n vendorActionUrl?: string;\n vendorActionActionType?: string;\n vendorActionDeletedAttachmentIds?: Array;\n}\n\nexport interface VendorActionsVendorActionIdReferencesDeleteRequest {\n vendorActionId: string;\n referenceableId: string;\n referenceableType: string;\n}\n\nexport interface VendorActionsVendorActionIdReferencesPostRequest {\n vendorActionId: string;\n body: ReferenceCreatePayload;\n}\n\nexport interface VendorDocumentAttestationsAttestationIdNotifyPostRequest {\n attestationId: string;\n}\n\nexport interface VendorDocumentsIdApprovePostRequest {\n id: string;\n}\n\nexport interface VendorDocumentsIdArchivePostRequest {\n id: string;\n}\n\nexport interface VendorDocumentsIdAttestPostRequest {\n id: string;\n}\n\nexport interface VendorDocumentsIdDeleteRequest {\n id: string;\n}\n\nexport interface VendorDocumentsIdDownloadGetRequest {\n id: string;\n}\n\nexport interface VendorDocumentsIdGetRequest {\n id: string;\n}\n\nexport interface VendorDocumentsIdPatchRequest {\n id: string;\n vendorDocument?: VendorDocumentUpdatePayload;\n}\n\nexport interface VendorDocumentsIdRejectPostRequest {\n id: string;\n vendorDocumentApproval: VendorDocumentApprovalReject;\n}\n\nexport interface VendorDocumentsIdSkipApprovalPostRequest {\n id: string;\n}\n\nexport interface VendorDocumentsIdSkipAttestationPostRequest {\n id: string;\n}\n\nexport interface VendorDocumentsIdSummaryGetRequest {\n id: string;\n}\n\nexport interface VendorDocumentsIdUnarchivePostRequest {\n id: string;\n}\n\nexport interface VendorDocumentsIdVendorDocumentApprovalsGetRequest {\n id: string;\n}\n\nexport interface VendorDocumentsIdVendorDocumentAttestationGroupsGetRequest {\n id: string;\n}\n\nexport interface VendorDocumentsIdVendorDocumentAttestationGroupsPatchRequest {\n id: string;\n body: VendorDocumentAttestationsGroupUpdatePayload;\n}\n\nexport interface VendorEventsVendorEventIdDeleteRequest {\n vendorEventId: string;\n}\n\nexport interface VendorEventsVendorEventIdGetRequest {\n vendorEventId: string;\n}\n\nexport interface VendorEventsVendorEventIdPatchRequest {\n vendorEventId: string;\n vendorEventName: string;\n vendorEventDate: string;\n vendorEventEventType: string;\n vendorEventOwnerId: string;\n vendorEventDescription?: string;\n vendorEventAttachments?: Array;\n vendorEventUrl?: string;\n vendorEventDeletedAttachmentIds?: Array;\n}\n\nexport interface VendorFrameworkRequirementsIdDeleteRequest {\n id: string;\n}\n\nexport interface VendorIntegrationSyncsVendorIntegrationSyncIdDeleteRequest {\n vendorIntegrationSyncId: string;\n}\n\nexport interface VendorIntegrationsVendorIntegrationIdDeleteRequest {\n vendorIntegrationId: string;\n}\n\nexport interface VendorIntegrationsVendorIntegrationIdGetRequest {\n vendorIntegrationId: string;\n}\n\nexport interface VendorIntegrationsVendorIntegrationIdPatchRequest {\n vendorIntegrationId: string;\n body: VendorIntegrationUpdatePayload;\n}\n\nexport interface VendorIntegrationsVendorIntegrationIdVendorIntegrationSyncsPostRequest {\n vendorIntegrationId: string;\n body: VendorIntegrationSyncCreatePayload;\n}\n\nexport interface VendorPoliciesIdDeleteRequest {\n id: string;\n}\n\nexport interface VendorPoliciesIdGetRequest {\n id: string;\n omitClauseText?: boolean;\n}\n\nexport interface VendorPoliciesIdPatchRequest {\n id: string;\n vendorPolicy?: VendorPolicyDetails;\n}\n\nexport interface VendorPoliciesIdPdfGetRequest {\n id: string;\n}\n\nexport interface VendorPoliciesIdProgressPatchRequest {\n id: string;\n progress?: VendorPolicyProgress;\n}\n\nexport interface VendorPoliciesIdPublishPostRequest {\n id: string;\n vendorPolicy?: VendorPolicyPublish;\n}\n\nexport interface VendorPoliciesIdVendorPolicyClausesGetRequest {\n id: string;\n}\n\nexport interface VendorPolicyClausesIdGetRequest {\n id: string;\n}\n\nexport interface VendorPolicyClausesIdPatchRequest {\n id: string;\n vendorPolicyClause?: VendorPolicyClause;\n}\n\nexport interface VendorSuppliersIdDeleteRequest {\n id: string;\n}\n\nexport interface VendorSuppliersIdGetRequest {\n id: string;\n}\n\nexport interface VendorSuppliersIdPatchRequest {\n id: string;\n body: VendorSupplierPayload;\n}\n\nexport interface VendorTeamsIdDeleteRequest {\n id: string;\n}\n\nexport interface VendorTeamsIdGetRequest {\n id: string;\n}\n\nexport interface VendorTeamsIdPatchRequest {\n id: string;\n vendorTeam?: VendorTeamModel;\n}\n\nexport interface VendorUsersIdDeleteRequest {\n id: string;\n}\n\nexport interface VendorUsersIdGetRequest {\n id: string;\n}\n\nexport interface VendorUsersIdPatchRequest {\n id: string;\n body?: VendorUserUpdatePayload;\n}\n\nexport interface VendorUsersIdPermissionsGetRequest {\n id: string;\n}\n\nexport interface VendorUsersVendorUserIdNotificationsGetRequest {\n vendorUserId: string;\n perPage?: string;\n page?: string;\n showRead?: boolean;\n}\n\nexport interface VendorUsersVendorUserIdRemindersGetRequest {\n vendorUserId: string;\n relatedToType?: string;\n relatedToId?: string;\n perPage?: string;\n page?: string;\n}\n\nexport interface VendorUsersVendorUserIdRemindersPostRequest {\n vendorUserId: string;\n body?: ReminderCreatePayload;\n}\n\nexport interface VendorsIdAgreementsGetRequest {\n id: string;\n}\n\nexport interface VendorsIdAgreementsPostRequest {\n id: string;\n body: AgreementCreatePayload;\n}\n\nexport interface VendorsIdAgreementsUploadPostRequest {\n id: string;\n agreementName: string;\n agreementDocument: Blob;\n agreementDescription?: string;\n}\n\nexport interface VendorsIdAnswersDeleteRequest {\n id: string;\n body: AnswerDeletePayload;\n}\n\nexport interface VendorsIdAnswersPostRequest {\n id: string;\n answers?: InlineObject;\n}\n\nexport interface VendorsIdAssessmentResponsesGetRequest {\n id: string;\n}\n\nexport interface VendorsIdAssessmentsGetRequest {\n id: string;\n}\n\nexport interface VendorsIdAssessmentsPostRequest {\n id: string;\n body: AssessmentCreatePayload;\n}\n\nexport interface VendorsIdChecklistTemplatesGetRequest {\n id: string;\n}\n\nexport interface VendorsIdChecklistTemplatesPostRequest {\n id: string;\n body: ChecklistTemplateCreatePayload;\n}\n\nexport interface VendorsIdChecklistsGetRequest {\n id: string;\n}\n\nexport interface VendorsIdChecklistsPostRequest {\n id: string;\n body: ChecklistCreatePayload;\n}\n\nexport interface VendorsIdDashboardSummaryGetRequest {\n id: string;\n}\n\nexport interface VendorsIdEscrowAccountsGetRequest {\n id: string;\n}\n\nexport interface VendorsIdFrameworksGetRequest {\n id: string;\n includeStats?: boolean;\n}\n\nexport interface VendorsIdGetRequest {\n id: string;\n}\n\nexport interface VendorsIdInvoicesGetRequest {\n id: string;\n}\n\nexport interface VendorsIdLogoGetRequest {\n id: string;\n}\n\nexport interface VendorsIdLogoPatchRequest {\n id: string;\n image: Blob;\n}\n\nexport interface VendorsIdOrgChartGetRequest {\n id: string;\n}\n\nexport interface VendorsIdOrgChartPatchRequest {\n id: string;\n image: Blob;\n}\n\nexport interface VendorsIdPatchRequest {\n id: string;\n vendor?: Vendor;\n}\n\nexport interface VendorsIdPoliciesGetRequest {\n id: string;\n}\n\nexport interface VendorsIdProductsGetRequest {\n id: string;\n queryProductType?: string;\n queryShowUnavailable?: boolean;\n}\n\nexport interface VendorsIdSharesDeleteRequest {\n id: string;\n shareableType: VendorsIdSharesDeleteShareableTypeEnum;\n shareableId: string;\n body: MultipleShareDelete;\n}\n\nexport interface VendorsIdSharesGetRequest {\n id: string;\n shareableType: VendorsIdSharesGetShareableTypeEnum;\n shareableId: string;\n}\n\nexport interface VendorsIdSharesPostRequest {\n id: string;\n shareableType: VendorsIdSharesPostShareableTypeEnum;\n shareableId: string;\n body: MultipleShare;\n}\n\nexport interface VendorsIdSharesSuggestionsGetRequest {\n id: string;\n shareableType: VendorsIdSharesSuggestionsGetShareableTypeEnum;\n shareableId: string;\n perPage?: string;\n textSearch?: string;\n}\n\nexport interface VendorsIdTablesGetRequest {\n id: string;\n type: string;\n statuses?: Array;\n}\n\nexport interface VendorsIdTreeGetRequest {\n id: string;\n}\n\nexport interface VendorsIdVendorDocumentsGetRequest {\n id: string;\n queryDocumentType?: string;\n queryShowHistory?: boolean;\n}\n\nexport interface VendorsIdVendorPoliciesGetRequest {\n id: string;\n}\n\nexport interface VendorsIdVendorPoliciesPostRequest {\n id: string;\n vendorPolicy?: VendorPolicy;\n}\n\nexport interface VendorsIdVendorTeamsGetRequest {\n id: string;\n query?: string;\n viewExtended?: boolean;\n}\n\nexport interface VendorsIdVendorTeamsPostRequest {\n id: string;\n body?: VendorTeamUpsertPayload;\n}\n\nexport interface VendorsIdVendorUsersChatWidgetLoginPostRequest {\n id: string;\n}\n\nexport interface VendorsIdVendorUsersGetRequest {\n id: string;\n queryRoles?: Array;\n queryUserTypes?: Array;\n queryEmploymentStatuses?: Array;\n queryStatuses?: Array;\n includeComplianceStats?: boolean;\n}\n\nexport interface VendorsIdVendorUsersPostRequest {\n id: string;\n body?: VendorUserCreatePayload;\n}\n\nexport interface VendorsIdVendorUsersTrusthubLoginPostRequest {\n id: string;\n}\n\nexport interface VendorsPostRequest {\n body?: VendorsCreatePayload;\n}\n\nexport interface VendorsVendorIdAssertionRunsGetRequest {\n vendorId: string;\n assertionId?: string;\n assertionName?: string;\n assertionCategoryIdentifier?: string;\n assertionStatus?: string;\n showManual?: boolean;\n perPage?: string;\n page?: string;\n}\n\nexport interface VendorsVendorIdAssertionsPostRequest {\n vendorId: string;\n body: AssertionCreatePayload;\n}\n\nexport interface VendorsVendorIdAssessmentTemplatesGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdAuditsGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdAuditsPostRequest {\n vendorId: string;\n body: AuditCreatePayload;\n}\n\nexport interface VendorsVendorIdAuditsUploadMeetingPostRequest {\n vendorId: string;\n auditName: string;\n auditOwnerId: string;\n auditFile: Blob;\n auditStartedAt: string;\n}\n\nexport interface VendorsVendorIdAuditsUploadPostRequest {\n vendorId: string;\n auditName: string;\n auditOrigin: VendorsVendorIdAuditsUploadPostAuditOriginEnum;\n auditOwnerId: string;\n auditFile: Blob;\n auditStartedAt: string;\n auditCompletedAt: string;\n auditRating: VendorsVendorIdAuditsUploadPostAuditRatingEnum;\n}\n\nexport interface VendorsVendorIdBusinessFunctionsGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdBusinessFunctionsPostRequest {\n vendorId: string;\n body: BusinessFunctionCreatePayload;\n}\n\nexport interface VendorsVendorIdCalendarGetRequest {\n vendorId: string;\n startDate: string;\n endDate: string;\n viewMode: VendorsVendorIdCalendarGetViewModeEnum;\n statuses?: Array;\n ownerIds?: Array;\n textSearch?: string;\n perPage?: string;\n page?: string;\n}\n\nexport interface VendorsVendorIdCertificatesGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdCertificatesPostRequest {\n vendorId: string;\n attachment?: Blob;\n certificateType?: string;\n expireAt?: string;\n}\n\nexport interface VendorsVendorIdControlCategoriesGetRequest {\n vendorId: string;\n frameworkId: string;\n}\n\nexport interface VendorsVendorIdControlsGetRequest {\n vendorId: string;\n frameworkId?: string;\n queryApplicable?: string;\n}\n\nexport interface VendorsVendorIdControlsPostRequest {\n vendorId: string;\n body: ControlCreatePayload;\n}\n\nexport interface VendorsVendorIdCorrectiveActionsPostRequest {\n vendorId: string;\n correctiveActionName: string;\n correctiveActionDescription: string;\n correctiveActionDateIdentified: string;\n correctiveActionRaisedBy: string;\n correctiveActionRootCause: string;\n correctiveActionActionType: VendorsVendorIdCorrectiveActionsPostCorrectiveActionActionTypeEnum;\n correctiveActionCorrectiveActions: string;\n correctiveActionIdentifier?: string;\n correctiveActionOwnerId?: string;\n correctiveActionUrl?: string;\n correctiveActionAttachments?: Array;\n}\n\nexport interface VendorsVendorIdDataRoomEntitiesDeleteRequest {\n vendorId: string;\n body: DataRoomEntityDeletePayload;\n}\n\nexport interface VendorsVendorIdDataRoomEntitiesGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdDataRoomEntitiesMovePatchRequest {\n vendorId: string;\n body: DataRoomEntityMovePayload;\n}\n\nexport interface VendorsVendorIdDataRoomEntitiesTreeGetRequest {\n vendorId: string;\n nodeId?: string;\n depth?: number;\n type?: string;\n}\n\nexport interface VendorsVendorIdDataRoomEvidenceGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdDataRoomFilesPostRequest {\n vendorId: string;\n parentFolderId: string;\n files0Attachment: Blob;\n files0Filename: string;\n files0Description?: string;\n}\n\nexport interface VendorsVendorIdDataRoomFoldersPostRequest {\n vendorId: string;\n body: DataRoomEntityFolderCreatePayload;\n}\n\nexport interface VendorsVendorIdIncidentEventsPostRequest {\n vendorId: string;\n incidentEventName: string;\n incidentEventDescription: string;\n incidentEventDateIdentified: string;\n incidentEventRaisedBy: string;\n incidentEventRootCause: string;\n incidentEventPreventativeActions: string;\n incidentEventActionsTaken: string;\n incidentEventDataBreach: boolean;\n incidentEventIdentifier?: string;\n incidentEventOwnerId?: string;\n incidentEventUrl?: string;\n incidentEventAttachments?: Array;\n incidentEventDataBreachDetails?: string;\n}\n\nexport interface VendorsVendorIdItemCreationRequestsPostRequest {\n vendorId: string;\n body: ItemCreationRequestCreatePayload;\n}\n\nexport interface VendorsVendorIdLegalRegisterGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdLegalRegisterPatchRequest {\n vendorId: string;\n body: LegalRegisterUpdatePayload;\n}\n\nexport interface VendorsVendorIdLegislationsAddPostRequest {\n vendorId: string;\n body: LegislationAddPayload;\n}\n\nexport interface VendorsVendorIdLegislationsGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdLegislationsPostRequest {\n vendorId: string;\n body: LegislationCreatePayload;\n}\n\nexport interface VendorsVendorIdPestelItemsGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdPestelItemsPostRequest {\n vendorId: string;\n body: PestelItemCreatePayload;\n}\n\nexport interface VendorsVendorIdPestelRegisterGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdPestelRegisterPatchRequest {\n vendorId: string;\n body: PestelRegisterUpdatePayload;\n}\n\nexport interface VendorsVendorIdReportsGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdReportsPostRequest {\n vendorId: string;\n body: ReportCreatePayload;\n}\n\nexport interface VendorsVendorIdReportsUploadPostRequest {\n vendorId: string;\n reportFile: Blob;\n reportName: string;\n reportCompletedAt: string;\n reportVersion: string;\n reportOwnerId: string;\n}\n\nexport interface VendorsVendorIdReviewHistoryItemsGetRequest {\n vendorId: string;\n relatedToId: string;\n relatedToType: VendorsVendorIdReviewHistoryItemsGetRelatedToTypeEnum;\n}\n\nexport interface VendorsVendorIdReviewHistoryItemsPostRequest {\n vendorId: string;\n body: ReviewHistoryItemCreatePayload;\n}\n\nexport interface VendorsVendorIdRiskReportsGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdRiskReportsPostRequest {\n vendorId: string;\n body: RiskReportCreatePayload;\n}\n\nexport interface VendorsVendorIdRisksGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdRisksPostRequest {\n vendorId: string;\n body: RiskCreatePayload;\n}\n\nexport interface VendorsVendorIdSearchGetRequest {\n vendorId: string;\n term: string;\n}\n\nexport interface VendorsVendorIdTasksGetRequest {\n vendorId: string;\n frameworkId?: string;\n notUsedInFrameworksIds?: Array;\n applicable?: boolean;\n includeStats?: boolean;\n status?: Array;\n name?: string;\n}\n\nexport interface VendorsVendorIdTasksPostRequest {\n vendorId: string;\n body: TaskCreatePayload;\n}\n\nexport interface VendorsVendorIdVendorActionsGetRequest {\n vendorId: string;\n referenceableId?: string;\n referenceableType?: string;\n}\n\nexport interface VendorsVendorIdVendorActionsPostRequest {\n vendorId: string;\n vendorActionName: string;\n vendorActionOwnerId: string;\n vendorActionDescription?: string;\n vendorActionDueDate?: string;\n vendorActionUrl?: string;\n vendorActionActionType?: string;\n vendorActionAttachments?: Array;\n}\n\nexport interface VendorsVendorIdVendorDocumentAttestationsGetRequest {\n vendorId: string;\n targetId: string;\n targetType: VendorsVendorIdVendorDocumentAttestationsGetTargetTypeEnum;\n includePossibleAttestations?: boolean;\n}\n\nexport interface VendorsVendorIdVendorDocumentsPostRequest {\n vendorId: string;\n vendorDocumentDocument?: Blob;\n vendorDocumentName?: string;\n vendorDocumentDocumentType?: string;\n vendorDocumentDescription?: string;\n vendorDocumentPolicyCategoryId?: string;\n vendorDocumentFileSizeInBytes?: number;\n}\n\nexport interface VendorsVendorIdVendorEventsGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdVendorEventsPostRequest {\n vendorId: string;\n vendorEventName: string;\n vendorEventDate: string;\n vendorEventEventType: string;\n vendorEventOwnerId: string;\n vendorEventDescription?: string;\n vendorEventAttachments?: Array;\n vendorEventUrl?: string;\n}\n\nexport interface VendorsVendorIdVendorFrameworkRequirementsPostRequest {\n vendorId: string;\n body: VendorFrameworkRequirementCreatePayload;\n}\n\nexport interface VendorsVendorIdVendorIntegrationsGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdVendorIntegrationsPostRequest {\n vendorId: string;\n body: VendorIntegrationCreatePayload;\n}\n\nexport interface VendorsVendorIdVendorPoliciesGetRequest {\n vendorId: string;\n queryStatus?: Array;\n queryType?: Array;\n}\n\nexport interface VendorsVendorIdVendorSuppliersCategoriesGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdVendorSuppliersGetRequest {\n vendorId: string;\n}\n\nexport interface VendorsVendorIdVendorSuppliersPostRequest {\n vendorId: string;\n body: VendorSupplierPayload;\n}\n\n/**\n * no description\n */\nexport class DefaultApi extends runtime.BaseAPI {\n /**\n * Remove agreement signatory\n */\n async agreementSignatoriesIdDeleteRaw(\n requestParameters: AgreementSignatoriesIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling agreementSignatoriesIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/agreement_signatories/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Remove agreement signatory\n */\n async agreementSignatoriesIdDelete(\n requestParameters: AgreementSignatoriesIdDeleteRequest\n ): Promise {\n await this.agreementSignatoriesIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get agreement signatory\n */\n async agreementSignatoriesIdGetRaw(\n requestParameters: AgreementSignatoriesIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling agreementSignatoriesIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/agreement_signatories/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AgreementSignatoryModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get agreement signatory\n */\n async agreementSignatoriesIdGet(\n requestParameters: AgreementSignatoriesIdGetRequest\n ): Promise {\n const response = await this.agreementSignatoriesIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update agreement signatory\n */\n async agreementSignatoriesIdPatchRaw(\n requestParameters: AgreementSignatoriesIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling agreementSignatoriesIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.agreementSignatoryType !== undefined) {\n formParams.append(\n 'agreement_signatory[type]',\n requestParameters.agreementSignatoryType as any\n );\n }\n\n if (requestParameters.agreementSignatoryFirstName !== undefined) {\n formParams.append(\n 'agreement_signatory[first_name]',\n requestParameters.agreementSignatoryFirstName as any\n );\n }\n\n if (requestParameters.agreementSignatoryLastName !== undefined) {\n formParams.append(\n 'agreement_signatory[last_name]',\n requestParameters.agreementSignatoryLastName as any\n );\n }\n\n if (requestParameters.agreementSignatoryStatus !== undefined) {\n formParams.append(\n 'agreement_signatory[status]',\n requestParameters.agreementSignatoryStatus as any\n );\n }\n\n if (requestParameters.agreementSignatoryEmail !== undefined) {\n formParams.append(\n 'agreement_signatory[email]',\n requestParameters.agreementSignatoryEmail as any\n );\n }\n\n if (requestParameters.agreementSignatoryAddress !== undefined) {\n formParams.append(\n 'agreement_signatory[address]',\n requestParameters.agreementSignatoryAddress as any\n );\n }\n\n if (requestParameters.agreementSignatoryCompanyName !== undefined) {\n formParams.append(\n 'agreement_signatory[company_name]',\n requestParameters.agreementSignatoryCompanyName as any\n );\n }\n\n if (requestParameters.agreementSignatoryCompanyAddress !== undefined) {\n formParams.append(\n 'agreement_signatory[company_address]',\n requestParameters.agreementSignatoryCompanyAddress as any\n );\n }\n\n if (requestParameters.agreementSignatoryCompanyNumber !== undefined) {\n formParams.append(\n 'agreement_signatory[company_number]',\n requestParameters.agreementSignatoryCompanyNumber as any\n );\n }\n\n if (requestParameters.agreementSignatoryDocument !== undefined) {\n formParams.append(\n 'agreement_signatory[document]',\n requestParameters.agreementSignatoryDocument as any\n );\n }\n\n const response = await this.request({\n path: `/agreement_signatories/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AgreementSignatoryModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Update agreement signatory\n */\n async agreementSignatoriesIdPatch(\n requestParameters: AgreementSignatoriesIdPatchRequest\n ): Promise {\n const response =\n await this.agreementSignatoriesIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Notify signatory\n */\n async agreementSignatoriesSignatoryIdNotifyPostRaw(\n requestParameters: AgreementSignatoriesSignatoryIdNotifyPostRequest\n ): Promise> {\n if (\n requestParameters.signatoryId === null ||\n requestParameters.signatoryId === undefined\n ) {\n throw new runtime.RequiredError(\n 'signatoryId',\n 'Required parameter requestParameters.signatoryId was null or undefined when calling agreementSignatoriesSignatoryIdNotifyPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/agreement_signatories/{signatory_id}/notify`.replace(\n `{${'signatory_id'}}`,\n encodeURIComponent(String(requestParameters.signatoryId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AgreementSignatoryNotifyPayloadToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Notify signatory\n */\n async agreementSignatoriesSignatoryIdNotifyPost(\n requestParameters: AgreementSignatoriesSignatoryIdNotifyPostRequest\n ): Promise {\n await this.agreementSignatoriesSignatoryIdNotifyPostRaw(requestParameters);\n }\n\n /**\n * Reject agreement\n */\n async agreementSignatoriesSignatoryIdRejectPatchRaw(\n requestParameters: AgreementSignatoriesSignatoryIdRejectPatchRequest\n ): Promise> {\n if (\n requestParameters.signatoryId === null ||\n requestParameters.signatoryId === undefined\n ) {\n throw new runtime.RequiredError(\n 'signatoryId',\n 'Required parameter requestParameters.signatoryId was null or undefined when calling agreementSignatoriesSignatoryIdRejectPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/agreement_signatories/{signatory_id}/reject`.replace(\n `{${'signatory_id'}}`,\n encodeURIComponent(String(requestParameters.signatoryId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: AgreementSignatoryRejectPayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AgreementSignatoryModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Reject agreement\n */\n async agreementSignatoriesSignatoryIdRejectPatch(\n requestParameters: AgreementSignatoriesSignatoryIdRejectPatchRequest\n ): Promise {\n const response =\n await this.agreementSignatoriesSignatoryIdRejectPatchRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Sign agreement\n */\n async agreementSignatoriesSignatoryIdSignPatchRaw(\n requestParameters: AgreementSignatoriesSignatoryIdSignPatchRequest\n ): Promise> {\n if (\n requestParameters.signatoryId === null ||\n requestParameters.signatoryId === undefined\n ) {\n throw new runtime.RequiredError(\n 'signatoryId',\n 'Required parameter requestParameters.signatoryId was null or undefined when calling agreementSignatoriesSignatoryIdSignPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/agreement_signatories/{signatory_id}/sign`.replace(\n `{${'signatory_id'}}`,\n encodeURIComponent(String(requestParameters.signatoryId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AgreementSignatoryModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Sign agreement\n */\n async agreementSignatoriesSignatoryIdSignPatch(\n requestParameters: AgreementSignatoriesSignatoryIdSignPatchRequest\n ): Promise {\n const response =\n await this.agreementSignatoriesSignatoryIdSignPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get agreement template categories\n */\n async agreementTemplateCategoriesGetRaw(): Promise<\n runtime.ApiResponse>\n > {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/agreement_template_categories`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AgreementTemplateCategoryModelFromJSON)\n );\n }\n\n /**\n * Get agreement template categories\n */\n async agreementTemplateCategoriesGet(): Promise<\n Array\n > {\n const response = await this.agreementTemplateCategoriesGetRaw();\n return await response.value();\n }\n\n /**\n * Get agreement templates\n */\n async agreementTemplatesGetRaw(\n requestParameters: AgreementTemplatesGetRequest\n ): Promise>> {\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.vendorId !== undefined) {\n queryParameters['vendor_id'] = requestParameters.vendorId;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/agreement_templates`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AgreementTemplateModelFromJSON)\n );\n }\n\n /**\n * Get agreement templates\n */\n async agreementTemplatesGet(\n requestParameters: AgreementTemplatesGetRequest\n ): Promise> {\n const response = await this.agreementTemplatesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get agreement template\n */\n async agreementTemplatesIdGetRaw(\n requestParameters: AgreementTemplatesIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling agreementTemplatesIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/agreement_templates/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AgreementTemplateModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get agreement template\n */\n async agreementTemplatesIdGet(\n requestParameters: AgreementTemplatesIdGetRequest\n ): Promise {\n const response = await this.agreementTemplatesIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create agreement external signatories\n */\n async agreementsAgreementIdAgreementSignatoriesExternalPostRaw(\n requestParameters: AgreementsAgreementIdAgreementSignatoriesExternalPostRequest\n ): Promise>> {\n if (\n requestParameters.agreementId === null ||\n requestParameters.agreementId === undefined\n ) {\n throw new runtime.RequiredError(\n 'agreementId',\n 'Required parameter requestParameters.agreementId was null or undefined when calling agreementsAgreementIdAgreementSignatoriesExternalPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling agreementsAgreementIdAgreementSignatoriesExternalPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/agreements/{agreement_id}/agreement_signatories/external`.replace(\n `{${'agreement_id'}}`,\n encodeURIComponent(String(requestParameters.agreementId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AgreementSignatoryCreateExternalPayloadToJSON(\n requestParameters.body\n ),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AgreementSignatoryModelFromJSON)\n );\n }\n\n /**\n * Create agreement external signatories\n */\n async agreementsAgreementIdAgreementSignatoriesExternalPost(\n requestParameters: AgreementsAgreementIdAgreementSignatoriesExternalPostRequest\n ): Promise> {\n const response =\n await this.agreementsAgreementIdAgreementSignatoriesExternalPostRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get agreement signatories\n */\n async agreementsAgreementIdAgreementSignatoriesGetRaw(\n requestParameters: AgreementsAgreementIdAgreementSignatoriesGetRequest\n ): Promise>> {\n if (\n requestParameters.agreementId === null ||\n requestParameters.agreementId === undefined\n ) {\n throw new runtime.RequiredError(\n 'agreementId',\n 'Required parameter requestParameters.agreementId was null or undefined when calling agreementsAgreementIdAgreementSignatoriesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/agreements/{agreement_id}/agreement_signatories`.replace(\n `{${'agreement_id'}}`,\n encodeURIComponent(String(requestParameters.agreementId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AgreementSignatoryModelFromJSON)\n );\n }\n\n /**\n * Get agreement signatories\n */\n async agreementsAgreementIdAgreementSignatoriesGet(\n requestParameters: AgreementsAgreementIdAgreementSignatoriesGetRequest\n ): Promise> {\n const response =\n await this.agreementsAgreementIdAgreementSignatoriesGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Update agreement internal signatories\n */\n async agreementsAgreementIdAgreementSignatoriesInternalPatchRaw(\n requestParameters: AgreementsAgreementIdAgreementSignatoriesInternalPatchRequest\n ): Promise>> {\n if (\n requestParameters.agreementId === null ||\n requestParameters.agreementId === undefined\n ) {\n throw new runtime.RequiredError(\n 'agreementId',\n 'Required parameter requestParameters.agreementId was null or undefined when calling agreementsAgreementIdAgreementSignatoriesInternalPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling agreementsAgreementIdAgreementSignatoriesInternalPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/agreements/{agreement_id}/agreement_signatories/internal`.replace(\n `{${'agreement_id'}}`,\n encodeURIComponent(String(requestParameters.agreementId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: AgreementSignatoryUpdateInternalPayloadToJSON(\n requestParameters.body\n ),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AgreementSignatoryModelFromJSON)\n );\n }\n\n /**\n * Update agreement internal signatories\n */\n async agreementsAgreementIdAgreementSignatoriesInternalPatch(\n requestParameters: AgreementsAgreementIdAgreementSignatoriesInternalPatchRequest\n ): Promise> {\n const response =\n await this.agreementsAgreementIdAgreementSignatoriesInternalPatchRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Archive agreement\n */\n async agreementsIdArchivePostRaw(\n requestParameters: AgreementsIdArchivePostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling agreementsIdArchivePost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/agreements/{id}/archive`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Archive agreement\n */\n async agreementsIdArchivePost(\n requestParameters: AgreementsIdArchivePostRequest\n ): Promise {\n await this.agreementsIdArchivePostRaw(requestParameters);\n }\n\n /**\n * Delete agreement\n */\n async agreementsIdDeleteRaw(\n requestParameters: AgreementsIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling agreementsIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/agreements/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete agreement\n */\n async agreementsIdDelete(\n requestParameters: AgreementsIdDeleteRequest\n ): Promise {\n await this.agreementsIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get agreement\n */\n async agreementsIdGetRaw(\n requestParameters: AgreementsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling agreementsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/agreements/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AgreementExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get agreement\n */\n async agreementsIdGet(\n requestParameters: AgreementsIdGetRequest\n ): Promise {\n const response = await this.agreementsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update agreement\n */\n async agreementsIdPatchRaw(\n requestParameters: AgreementsIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling agreementsIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling agreementsIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/agreements/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: AgreementUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AgreementExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update agreement\n */\n async agreementsIdPatch(\n requestParameters: AgreementsIdPatchRequest\n ): Promise {\n const response = await this.agreementsIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get agreement preview pdf\n */\n async agreementsIdPreviewGetRaw(\n requestParameters: AgreementsIdPreviewGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling agreementsIdPreviewGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/agreements/{id}/preview`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Get agreement preview pdf\n */\n async agreementsIdPreviewGet(\n requestParameters: AgreementsIdPreviewGetRequest\n ): Promise {\n await this.agreementsIdPreviewGetRaw(requestParameters);\n }\n\n /**\n * Send notifications to review or sign agreement\n */\n async agreementsIdSendPostRaw(\n requestParameters: AgreementsIdSendPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling agreementsIdSendPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling agreementsIdSendPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/agreements/{id}/send`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AgreementSendPayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AgreementExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Send notifications to review or sign agreement\n */\n async agreementsIdSendPost(\n requestParameters: AgreementsIdSendPostRequest\n ): Promise {\n const response = await this.agreementsIdSendPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Unarchive agreement\n */\n async agreementsIdUnarchivePostRaw(\n requestParameters: AgreementsIdUnarchivePostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling agreementsIdUnarchivePost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/agreements/{id}/unarchive`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Unarchive agreement\n */\n async agreementsIdUnarchivePost(\n requestParameters: AgreementsIdUnarchivePostRequest\n ): Promise {\n await this.agreementsIdUnarchivePostRaw(requestParameters);\n }\n\n /**\n * Create new version of agreement\n */\n async agreementsIdVersionsPostRaw(\n requestParameters: AgreementsIdVersionsPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling agreementsIdVersionsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling agreementsIdVersionsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/agreements/{id}/versions`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AgreementVersionCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AgreementExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create new version of agreement\n */\n async agreementsIdVersionsPost(\n requestParameters: AgreementsIdVersionsPostRequest\n ): Promise {\n const response = await this.agreementsIdVersionsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update the answer\n */\n async answersIdPatchRaw(\n requestParameters: AnswersIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling answersIdPatch.'\n );\n }\n\n if (\n requestParameters.answer === null ||\n requestParameters.answer === undefined\n ) {\n throw new runtime.RequiredError(\n 'answer',\n 'Required parameter requestParameters.answer was null or undefined when calling answersIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/answers/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: AnswerToJSON(requestParameters.answer),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AnswerFromJSON(jsonValue)\n );\n }\n\n /**\n * Update the answer\n */\n async answersIdPatch(\n requestParameters: AnswersIdPatchRequest\n ): Promise {\n const response = await this.answersIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get assertion categories list\n */\n async assertionCategoriesGetRaw(): Promise<\n runtime.ApiResponse>\n > {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assertion_categories`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AssertionCategoryModelFromJSON)\n );\n }\n\n /**\n * Get assertion categories list\n */\n async assertionCategoriesGet(): Promise> {\n const response = await this.assertionCategoriesGetRaw();\n return await response.value();\n }\n\n /**\n * Exclude assertion result\n */\n async assertionResultsAssertionResultIdExcludePatchRaw(\n requestParameters: AssertionResultsAssertionResultIdExcludePatchRequest\n ): Promise> {\n if (\n requestParameters.assertionResultId === null ||\n requestParameters.assertionResultId === undefined\n ) {\n throw new runtime.RequiredError(\n 'assertionResultId',\n 'Required parameter requestParameters.assertionResultId was null or undefined when calling assertionResultsAssertionResultIdExcludePatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling assertionResultsAssertionResultIdExcludePatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/assertion_results/{assertion_result_id}/exclude`.replace(\n `{${'assertion_result_id'}}`,\n encodeURIComponent(String(requestParameters.assertionResultId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: AssertionResultExcludePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssertionResultExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Exclude assertion result\n */\n async assertionResultsAssertionResultIdExcludePatch(\n requestParameters: AssertionResultsAssertionResultIdExcludePatchRequest\n ): Promise {\n const response =\n await this.assertionResultsAssertionResultIdExcludePatchRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get assertion result\n */\n async assertionResultsAssertionResultIdGetRaw(\n requestParameters: AssertionResultsAssertionResultIdGetRequest\n ): Promise> {\n if (\n requestParameters.assertionResultId === null ||\n requestParameters.assertionResultId === undefined\n ) {\n throw new runtime.RequiredError(\n 'assertionResultId',\n 'Required parameter requestParameters.assertionResultId was null or undefined when calling assertionResultsAssertionResultIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assertion_results/{assertion_result_id}`.replace(\n `{${'assertion_result_id'}}`,\n encodeURIComponent(String(requestParameters.assertionResultId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssertionResultExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get assertion result\n */\n async assertionResultsAssertionResultIdGet(\n requestParameters: AssertionResultsAssertionResultIdGetRequest\n ): Promise {\n const response =\n await this.assertionResultsAssertionResultIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Include assertion result\n */\n async assertionResultsAssertionResultIdIncludePatchRaw(\n requestParameters: AssertionResultsAssertionResultIdIncludePatchRequest\n ): Promise> {\n if (\n requestParameters.assertionResultId === null ||\n requestParameters.assertionResultId === undefined\n ) {\n throw new runtime.RequiredError(\n 'assertionResultId',\n 'Required parameter requestParameters.assertionResultId was null or undefined when calling assertionResultsAssertionResultIdIncludePatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assertion_results/{assertion_result_id}/include`.replace(\n `{${'assertion_result_id'}}`,\n encodeURIComponent(String(requestParameters.assertionResultId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssertionResultExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Include assertion result\n */\n async assertionResultsAssertionResultIdIncludePatch(\n requestParameters: AssertionResultsAssertionResultIdIncludePatchRequest\n ): Promise {\n const response =\n await this.assertionResultsAssertionResultIdIncludePatchRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get assertion run\n */\n async assertionRunsAssertionRunIdGetRaw(\n requestParameters: AssertionRunsAssertionRunIdGetRequest\n ): Promise> {\n if (\n requestParameters.assertionRunId === null ||\n requestParameters.assertionRunId === undefined\n ) {\n throw new runtime.RequiredError(\n 'assertionRunId',\n 'Required parameter requestParameters.assertionRunId was null or undefined when calling assertionRunsAssertionRunIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assertion_runs/{assertion_run_id}`.replace(\n `{${'assertion_run_id'}}`,\n encodeURIComponent(String(requestParameters.assertionRunId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssertionRunExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get assertion run\n */\n async assertionRunsAssertionRunIdGet(\n requestParameters: AssertionRunsAssertionRunIdGetRequest\n ): Promise {\n const response =\n await this.assertionRunsAssertionRunIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create review\n */\n async assertionsAssertionIdCreateReviewPostRaw(\n requestParameters: AssertionsAssertionIdCreateReviewPostRequest\n ): Promise> {\n if (\n requestParameters.assertionId === null ||\n requestParameters.assertionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'assertionId',\n 'Required parameter requestParameters.assertionId was null or undefined when calling assertionsAssertionIdCreateReviewPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.assertionReviewStatus !== undefined) {\n formParams.append(\n 'assertion_review[status]',\n requestParameters.assertionReviewStatus as any\n );\n }\n\n if (requestParameters.assertionReviewComment !== undefined) {\n formParams.append(\n 'assertion_review[comment]',\n requestParameters.assertionReviewComment as any\n );\n }\n\n if (requestParameters.assertionReviewEvidences) {\n formParams.append(\n 'assertion_review[evidences]',\n requestParameters.assertionReviewEvidences.join(\n runtime.COLLECTION_FORMATS['csv']\n )\n );\n }\n\n const response = await this.request({\n path: `/assertions/{assertion_id}/create_review`.replace(\n `{${'assertion_id'}}`,\n encodeURIComponent(String(requestParameters.assertionId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssertionExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create review\n */\n async assertionsAssertionIdCreateReviewPost(\n requestParameters: AssertionsAssertionIdCreateReviewPostRequest\n ): Promise {\n const response =\n await this.assertionsAssertionIdCreateReviewPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete assertion\n */\n async assertionsAssertionIdDeleteRaw(\n requestParameters: AssertionsAssertionIdDeleteRequest\n ): Promise> {\n if (\n requestParameters.assertionId === null ||\n requestParameters.assertionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'assertionId',\n 'Required parameter requestParameters.assertionId was null or undefined when calling assertionsAssertionIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assertions/{assertion_id}`.replace(\n `{${'assertion_id'}}`,\n encodeURIComponent(String(requestParameters.assertionId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete assertion\n */\n async assertionsAssertionIdDelete(\n requestParameters: AssertionsAssertionIdDeleteRequest\n ): Promise {\n await this.assertionsAssertionIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get assertion\n */\n async assertionsAssertionIdGetRaw(\n requestParameters: AssertionsAssertionIdGetRequest\n ): Promise> {\n if (\n requestParameters.assertionId === null ||\n requestParameters.assertionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'assertionId',\n 'Required parameter requestParameters.assertionId was null or undefined when calling assertionsAssertionIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assertions/{assertion_id}`.replace(\n `{${'assertion_id'}}`,\n encodeURIComponent(String(requestParameters.assertionId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssertionExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get assertion\n */\n async assertionsAssertionIdGet(\n requestParameters: AssertionsAssertionIdGetRequest\n ): Promise {\n const response = await this.assertionsAssertionIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update assertion\n */\n async assertionsAssertionIdPatchRaw(\n requestParameters: AssertionsAssertionIdPatchRequest\n ): Promise> {\n if (\n requestParameters.assertionId === null ||\n requestParameters.assertionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'assertionId',\n 'Required parameter requestParameters.assertionId was null or undefined when calling assertionsAssertionIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling assertionsAssertionIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/assertions/{assertion_id}`.replace(\n `{${'assertion_id'}}`,\n encodeURIComponent(String(requestParameters.assertionId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: AssertionUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssertionExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update assertion\n */\n async assertionsAssertionIdPatch(\n requestParameters: AssertionsAssertionIdPatchRequest\n ): Promise {\n const response =\n await this.assertionsAssertionIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Run assertion\n */\n async assertionsAssertionIdRunPostRaw(\n requestParameters: AssertionsAssertionIdRunPostRequest\n ): Promise> {\n if (\n requestParameters.assertionId === null ||\n requestParameters.assertionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'assertionId',\n 'Required parameter requestParameters.assertionId was null or undefined when calling assertionsAssertionIdRunPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assertions/{assertion_id}/run`.replace(\n `{${'assertion_id'}}`,\n encodeURIComponent(String(requestParameters.assertionId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssertionExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Run assertion\n */\n async assertionsAssertionIdRunPost(\n requestParameters: AssertionsAssertionIdRunPostRequest\n ): Promise {\n const response =\n await this.assertionsAssertionIdRunPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Cancel assessment download\n */\n async assessmentDownloadsIdDeleteRaw(\n requestParameters: AssessmentDownloadsIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentDownloadsIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assessment_downloads/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Cancel assessment download\n */\n async assessmentDownloadsIdDelete(\n requestParameters: AssessmentDownloadsIdDeleteRequest\n ): Promise {\n await this.assessmentDownloadsIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get assessment download\n */\n async assessmentDownloadsIdGetRaw(\n requestParameters: AssessmentDownloadsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentDownloadsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assessment_downloads/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssessmentDownloadFromJSON(jsonValue)\n );\n }\n\n /**\n * Get assessment download\n */\n async assessmentDownloadsIdGet(\n requestParameters: AssessmentDownloadsIdGetRequest\n ): Promise {\n const response = await this.assessmentDownloadsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete assessment response answer file\n */\n async assessmentResponseAnswerFilesIdDeleteRaw(\n requestParameters: AssessmentResponseAnswerFilesIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentResponseAnswerFilesIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assessment_response_answer_files/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete assessment response answer file\n */\n async assessmentResponseAnswerFilesIdDelete(\n requestParameters: AssessmentResponseAnswerFilesIdDeleteRequest\n ): Promise {\n await this.assessmentResponseAnswerFilesIdDeleteRaw(requestParameters);\n }\n\n /**\n * Confirm assessment response answer\n */\n async assessmentResponseAnswersIdConfirmPatchRaw(\n requestParameters: AssessmentResponseAnswersIdConfirmPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentResponseAnswersIdConfirmPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assessment_response_answers/{id}/confirm`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssessmentResponseAnswerFromJSON(jsonValue)\n );\n }\n\n /**\n * Confirm assessment response answer\n */\n async assessmentResponseAnswersIdConfirmPatch(\n requestParameters: AssessmentResponseAnswersIdConfirmPatchRequest\n ): Promise {\n const response =\n await this.assessmentResponseAnswersIdConfirmPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete assessment response answer\n */\n async assessmentResponseAnswersIdDeleteRaw(\n requestParameters: AssessmentResponseAnswersIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentResponseAnswersIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assessment_response_answers/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete assessment response answer\n */\n async assessmentResponseAnswersIdDelete(\n requestParameters: AssessmentResponseAnswersIdDeleteRequest\n ): Promise {\n await this.assessmentResponseAnswersIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get answer history by question ID/CODE\n */\n async assessmentResponsesIdAssessmentResponseAnswersHistoryGetRaw(\n requestParameters: AssessmentResponsesIdAssessmentResponseAnswersHistoryGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentResponsesIdAssessmentResponseAnswersHistoryGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.questionId !== undefined) {\n queryParameters['question_id'] = requestParameters.questionId;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assessment_responses/{id}/assessment_response_answers/history`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AssessmentResponseAnswerFromJSON)\n );\n }\n\n /**\n * Get answer history by question ID/CODE\n */\n async assessmentResponsesIdAssessmentResponseAnswersHistoryGet(\n requestParameters: AssessmentResponsesIdAssessmentResponseAnswersHistoryGetRequest\n ): Promise> {\n const response =\n await this.assessmentResponsesIdAssessmentResponseAnswersHistoryGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Delete assessment response\n */\n async assessmentResponsesIdDeleteRaw(\n requestParameters: AssessmentResponsesIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentResponsesIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assessment_responses/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete assessment response\n */\n async assessmentResponsesIdDelete(\n requestParameters: AssessmentResponsesIdDeleteRequest\n ): Promise {\n await this.assessmentResponsesIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get the details of one assessment response\n */\n async assessmentResponsesIdGetRaw(\n requestParameters: AssessmentResponsesIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentResponsesIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assessment_responses/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssessmentResponseFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the details of one assessment response\n */\n async assessmentResponsesIdGet(\n requestParameters: AssessmentResponsesIdGetRequest\n ): Promise {\n const response = await this.assessmentResponsesIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update an assessment response\n */\n async assessmentResponsesIdPatchRaw(\n requestParameters: AssessmentResponsesIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentResponsesIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling assessmentResponsesIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/assessment_responses/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: AssessmentResponseToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssessmentResponseFromJSON(jsonValue)\n );\n }\n\n /**\n * Update an assessment response\n */\n async assessmentResponsesIdPatch(\n requestParameters: AssessmentResponsesIdPatchRequest\n ): Promise {\n const response =\n await this.assessmentResponsesIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Publish an assessment response\n */\n async assessmentResponsesIdPublishPatchRaw(\n requestParameters: AssessmentResponsesIdPublishPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentResponsesIdPublishPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assessment_responses/{id}/publish`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssessmentResponseFromJSON(jsonValue)\n );\n }\n\n /**\n * Publish an assessment response\n */\n async assessmentResponsesIdPublishPatch(\n requestParameters: AssessmentResponsesIdPublishPatchRequest\n ): Promise {\n const response =\n await this.assessmentResponsesIdPublishPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of all available assessment_templates for the given vendor\n */\n async assessmentTemplatesIdGetRaw(\n requestParameters: AssessmentTemplatesIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentTemplatesIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assessment_templates/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssessmentTemplateExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the list of all available assessment_templates for the given vendor\n */\n async assessmentTemplatesIdGet(\n requestParameters: AssessmentTemplatesIdGetRequest\n ): Promise {\n const response = await this.assessmentTemplatesIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete assessment recipients\n */\n async assessmentsAssessmentIdAssessmentRecipientsRecipientIdDeleteRaw(\n requestParameters: AssessmentsAssessmentIdAssessmentRecipientsRecipientIdDeleteRequest\n ): Promise> {\n if (\n requestParameters.assessmentId === null ||\n requestParameters.assessmentId === undefined\n ) {\n throw new runtime.RequiredError(\n 'assessmentId',\n 'Required parameter requestParameters.assessmentId was null or undefined when calling assessmentsAssessmentIdAssessmentRecipientsRecipientIdDelete.'\n );\n }\n\n if (\n requestParameters.recipientId === null ||\n requestParameters.recipientId === undefined\n ) {\n throw new runtime.RequiredError(\n 'recipientId',\n 'Required parameter requestParameters.recipientId was null or undefined when calling assessmentsAssessmentIdAssessmentRecipientsRecipientIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assessments/{assessment_id}/assessment_recipients/{recipient_id}`\n .replace(\n `{${'assessment_id'}}`,\n encodeURIComponent(String(requestParameters.assessmentId))\n )\n .replace(\n `{${'recipient_id'}}`,\n encodeURIComponent(String(requestParameters.recipientId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete assessment recipients\n */\n async assessmentsAssessmentIdAssessmentRecipientsRecipientIdDelete(\n requestParameters: AssessmentsAssessmentIdAssessmentRecipientsRecipientIdDeleteRequest\n ): Promise {\n await this.assessmentsAssessmentIdAssessmentRecipientsRecipientIdDeleteRaw(\n requestParameters\n );\n }\n\n /**\n * Get assessment downloads for current user\n */\n async assessmentsIdAssessmentDownloadsGetRaw(\n requestParameters: AssessmentsIdAssessmentDownloadsGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentsIdAssessmentDownloadsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assessments/{id}/assessment_downloads`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AssessmentDownloadFromJSON)\n );\n }\n\n /**\n * Get assessment downloads for current user\n */\n async assessmentsIdAssessmentDownloadsGet(\n requestParameters: AssessmentsIdAssessmentDownloadsGetRequest\n ): Promise> {\n const response =\n await this.assessmentsIdAssessmentDownloadsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create a new assessment download\n */\n async assessmentsIdAssessmentDownloadsPostRaw(\n requestParameters: AssessmentsIdAssessmentDownloadsPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentsIdAssessmentDownloadsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/assessments/{id}/assessment_downloads`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AssessmentDownloadToJSON(requestParameters.assessmentDownload),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssessmentDownloadFromJSON(jsonValue)\n );\n }\n\n /**\n * Create a new assessment download\n */\n async assessmentsIdAssessmentDownloadsPost(\n requestParameters: AssessmentsIdAssessmentDownloadsPostRequest\n ): Promise {\n const response =\n await this.assessmentsIdAssessmentDownloadsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of all assessment responses for the given assessment\n */\n async assessmentsIdAssessmentResponsesGetRaw(\n requestParameters: AssessmentsIdAssessmentResponsesGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentsIdAssessmentResponsesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assessments/{id}/assessment_responses`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AssessmentResponseFromJSON)\n );\n }\n\n /**\n * Get the list of all assessment responses for the given assessment\n */\n async assessmentsIdAssessmentResponsesGet(\n requestParameters: AssessmentsIdAssessmentResponsesGetRequest\n ): Promise> {\n const response =\n await this.assessmentsIdAssessmentResponsesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete assessment and all related responses\n */\n async assessmentsIdDeleteRaw(\n requestParameters: AssessmentsIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentsIdDelete.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling assessmentsIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/assessments/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n body: AssessmentDeletePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete assessment and all related responses\n */\n async assessmentsIdDelete(\n requestParameters: AssessmentsIdDeleteRequest\n ): Promise {\n await this.assessmentsIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get the details of one assessment\n */\n async assessmentsIdGetRaw(\n requestParameters: AssessmentsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/assessments/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssessmentFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the details of one assessment\n */\n async assessmentsIdGet(\n requestParameters: AssessmentsIdGetRequest\n ): Promise {\n const response = await this.assessmentsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update assessment\n */\n async assessmentsIdPatchRaw(\n requestParameters: AssessmentsIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentsIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling assessmentsIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/assessments/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: AssessmentUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssessmentFromJSON(jsonValue)\n );\n }\n\n /**\n * Update assessment\n */\n async assessmentsIdPatch(\n requestParameters: AssessmentsIdPatchRequest\n ): Promise {\n const response = await this.assessmentsIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Share an assessment\n */\n async assessmentsIdSharePostRaw(\n requestParameters: AssessmentsIdSharePostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling assessmentsIdSharePost.'\n );\n }\n\n if (\n requestParameters.externalShare === null ||\n requestParameters.externalShare === undefined\n ) {\n throw new runtime.RequiredError(\n 'externalShare',\n 'Required parameter requestParameters.externalShare was null or undefined when calling assessmentsIdSharePost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/assessments/{id}/share`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ExternalShareToJSON(requestParameters.externalShare),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Share an assessment\n */\n async assessmentsIdSharePost(\n requestParameters: AssessmentsIdSharePostRequest\n ): Promise {\n await this.assessmentsIdSharePostRaw(requestParameters);\n }\n\n /**\n * Get audit templates\n */\n async auditTemplatesGetRaw(): Promise<\n runtime.ApiResponse>\n > {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/audit_templates`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AuditTemplateModelFromJSON)\n );\n }\n\n /**\n * Get audit templates\n */\n async auditTemplatesGet(): Promise> {\n const response = await this.auditTemplatesGetRaw();\n return await response.value();\n }\n\n /**\n * Get audit template\n */\n async auditTemplatesIdGetRaw(\n requestParameters: AuditTemplatesIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling auditTemplatesIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/audit_templates/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AuditTemplateExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get audit template\n */\n async auditTemplatesIdGet(\n requestParameters: AuditTemplatesIdGetRequest\n ): Promise {\n const response = await this.auditTemplatesIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get audit review history by question id\n */\n async auditsAuditIdReviewHistoryGetRaw(\n requestParameters: AuditsAuditIdReviewHistoryGetRequest\n ): Promise>> {\n if (\n requestParameters.auditId === null ||\n requestParameters.auditId === undefined\n ) {\n throw new runtime.RequiredError(\n 'auditId',\n 'Required parameter requestParameters.auditId was null or undefined when calling auditsAuditIdReviewHistoryGet.'\n );\n }\n\n if (\n requestParameters.questionId === null ||\n requestParameters.questionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'questionId',\n 'Required parameter requestParameters.questionId was null or undefined when calling auditsAuditIdReviewHistoryGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.questionId !== undefined) {\n queryParameters['question_id'] = requestParameters.questionId;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/audits/{audit_id}/review_history`.replace(\n `{${'audit_id'}}`,\n encodeURIComponent(String(requestParameters.auditId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AuditReviewHistoryItemFromJSON)\n );\n }\n\n /**\n * Get audit review history by question id\n */\n async auditsAuditIdReviewHistoryGet(\n requestParameters: AuditsAuditIdReviewHistoryGetRequest\n ): Promise> {\n const response =\n await this.auditsAuditIdReviewHistoryGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Complete Audit\n */\n async auditsIdCompletePostRaw(\n requestParameters: AuditsIdCompletePostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling auditsIdCompletePost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/audits/{id}/complete`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AuditExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Complete Audit\n */\n async auditsIdCompletePost(\n requestParameters: AuditsIdCompletePostRequest\n ): Promise {\n const response = await this.auditsIdCompletePostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete audit\n */\n async auditsIdDeleteRaw(\n requestParameters: AuditsIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling auditsIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/audits/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete audit\n */\n async auditsIdDelete(\n requestParameters: AuditsIdDeleteRequest\n ): Promise {\n await this.auditsIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get audit\n */\n async auditsIdGetRaw(\n requestParameters: AuditsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling auditsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/audits/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AuditExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get audit\n */\n async auditsIdGet(\n requestParameters: AuditsIdGetRequest\n ): Promise {\n const response = await this.auditsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update audit\n */\n async auditsIdPatchRaw(\n requestParameters: AuditsIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling auditsIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling auditsIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/audits/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: AuditUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AuditExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update audit\n */\n async auditsIdPatch(\n requestParameters: AuditsIdPatchRequest\n ): Promise {\n const response = await this.auditsIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get audit preview pdf\n */\n async auditsIdPreviewGetRaw(\n requestParameters: AuditsIdPreviewGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling auditsIdPreviewGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/audits/{id}/preview`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Get audit preview pdf\n */\n async auditsIdPreviewGet(\n requestParameters: AuditsIdPreviewGetRequest\n ): Promise {\n await this.auditsIdPreviewGetRaw(requestParameters);\n }\n\n /**\n * Delete business function\n */\n async businessFunctionsIdDeleteRaw(\n requestParameters: BusinessFunctionsIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling businessFunctionsIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/business_functions/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete business function\n */\n async businessFunctionsIdDelete(\n requestParameters: BusinessFunctionsIdDeleteRequest\n ): Promise {\n await this.businessFunctionsIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get a specific business function\n */\n async businessFunctionsIdGetRaw(\n requestParameters: BusinessFunctionsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling businessFunctionsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/business_functions/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n BusinessFunctionModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get a specific business function\n */\n async businessFunctionsIdGet(\n requestParameters: BusinessFunctionsIdGetRequest\n ): Promise {\n const response = await this.businessFunctionsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update a specific business function\n */\n async businessFunctionsIdPatchRaw(\n requestParameters: BusinessFunctionsIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling businessFunctionsIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling businessFunctionsIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/business_functions/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: BusinessFunctionUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n BusinessFunctionModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Update a specific business function\n */\n async businessFunctionsIdPatch(\n requestParameters: BusinessFunctionsIdPatchRequest\n ): Promise {\n const response = await this.businessFunctionsIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete certificate\n */\n async certificatesIdDeleteRaw(\n requestParameters: CertificatesIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling certificatesIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/certificates/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete certificate\n */\n async certificatesIdDelete(\n requestParameters: CertificatesIdDeleteRequest\n ): Promise {\n await this.certificatesIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get certificate pdf\n */\n async certificatesIdDocumentGetRaw(\n requestParameters: CertificatesIdDocumentGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling certificatesIdDocumentGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/certificates/{id}/document`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Get certificate pdf\n */\n async certificatesIdDocumentGet(\n requestParameters: CertificatesIdDocumentGetRequest\n ): Promise {\n await this.certificatesIdDocumentGetRaw(requestParameters);\n }\n\n /**\n * Get details for one certificate\n */\n async certificatesIdGetRaw(\n requestParameters: CertificatesIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling certificatesIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/certificates/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n CertificateModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get details for one certificate\n */\n async certificatesIdGet(\n requestParameters: CertificatesIdGetRequest\n ): Promise {\n const response = await this.certificatesIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get checklist template\n */\n async checklistTemplatesIdGetRaw(\n requestParameters: ChecklistTemplatesIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling checklistTemplatesIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/checklist_templates/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ChecklistTemplateExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get checklist template\n */\n async checklistTemplatesIdGet(\n requestParameters: ChecklistTemplatesIdGetRequest\n ): Promise {\n const response = await this.checklistTemplatesIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update checklist template\n */\n async checklistTemplatesIdPatchRaw(\n requestParameters: ChecklistTemplatesIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling checklistTemplatesIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling checklistTemplatesIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/checklist_templates/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ChecklistTemplateUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ChecklistTemplateExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update checklist template\n */\n async checklistTemplatesIdPatch(\n requestParameters: ChecklistTemplatesIdPatchRequest\n ): Promise {\n const response = await this.checklistTemplatesIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Checklist update status\n */\n async checklistsIdChangeStatusPatchRaw(\n requestParameters: ChecklistsIdChangeStatusPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling checklistsIdChangeStatusPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling checklistsIdChangeStatusPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/checklists/{id}/change_status`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ChecklistChangedStatusPayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ChecklistExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Checklist update status\n */\n async checklistsIdChangeStatusPatch(\n requestParameters: ChecklistsIdChangeStatusPatchRequest\n ): Promise {\n const response =\n await this.checklistsIdChangeStatusPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get a checklist\n */\n async checklistsIdGetRaw(\n requestParameters: ChecklistsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling checklistsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/checklists/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ChecklistExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get a checklist\n */\n async checklistsIdGet(\n requestParameters: ChecklistsIdGetRequest\n ): Promise {\n const response = await this.checklistsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update checklist\n */\n async checklistsIdPatchRaw(\n requestParameters: ChecklistsIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling checklistsIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling checklistsIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/checklists/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ChecklistUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ChecklistExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update checklist\n */\n async checklistsIdPatch(\n requestParameters: ChecklistsIdPatchRequest\n ): Promise {\n const response = await this.checklistsIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get company identifiers\n */\n async companiesIdCompanyIdentifiersGetRaw(\n requestParameters: CompaniesIdCompanyIdentifiersGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling companiesIdCompanyIdentifiersGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/companies/{id}/company_identifiers`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(CompanyIdentifierModelFromJSON)\n );\n }\n\n /**\n * Get company identifiers\n */\n async companiesIdCompanyIdentifiersGet(\n requestParameters: CompaniesIdCompanyIdentifiersGetRequest\n ): Promise> {\n const response =\n await this.companiesIdCompanyIdentifiersGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create company identifier\n */\n async companiesIdCompanyIdentifiersPostRaw(\n requestParameters: CompaniesIdCompanyIdentifiersPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling companiesIdCompanyIdentifiersPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling companiesIdCompanyIdentifiersPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/companies/{id}/company_identifiers`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CompanyIdentifierCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n CompanyIdentifierModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Create company identifier\n */\n async companiesIdCompanyIdentifiersPost(\n requestParameters: CompaniesIdCompanyIdentifiersPostRequest\n ): Promise {\n const response =\n await this.companiesIdCompanyIdentifiersPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get company\n */\n async companiesIdGetRaw(\n requestParameters: CompaniesIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling companiesIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/companies/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n CompanyExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get company\n */\n async companiesIdGet(\n requestParameters: CompaniesIdGetRequest\n ): Promise {\n const response = await this.companiesIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete the office of a particular company\n */\n async companiesIdOfficesOfficeIdDeleteRaw(\n requestParameters: CompaniesIdOfficesOfficeIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling companiesIdOfficesOfficeIdDelete.'\n );\n }\n\n if (\n requestParameters.officeId === null ||\n requestParameters.officeId === undefined\n ) {\n throw new runtime.RequiredError(\n 'officeId',\n 'Required parameter requestParameters.officeId was null or undefined when calling companiesIdOfficesOfficeIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/companies/{id}/offices/{office_id}`\n .replace(`{${'id'}}`, encodeURIComponent(String(requestParameters.id)))\n .replace(\n `{${'office_id'}}`,\n encodeURIComponent(String(requestParameters.officeId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete the office of a particular company\n */\n async companiesIdOfficesOfficeIdDelete(\n requestParameters: CompaniesIdOfficesOfficeIdDeleteRequest\n ): Promise {\n await this.companiesIdOfficesOfficeIdDeleteRaw(requestParameters);\n }\n\n /**\n * Update the details for a particular company\n */\n async companiesIdPatchRaw(\n requestParameters: CompaniesIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling companiesIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling companiesIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/companies/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: CompanyUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n CompanyExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update the details for a particular company\n */\n async companiesIdPatch(\n requestParameters: CompaniesIdPatchRequest\n ): Promise {\n const response = await this.companiesIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Validate new company data\n */\n async companiesValidatePostRaw(\n requestParameters: CompaniesValidatePostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling companiesValidatePost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling companiesValidatePost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/companies/validate`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CompanyToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Validate new company data\n */\n async companiesValidatePost(\n requestParameters: CompaniesValidatePostRequest\n ): Promise {\n await this.companiesValidatePostRaw(requestParameters);\n }\n\n /**\n * Delete company identifier\n */\n async companyIdentifiersIdDeleteRaw(\n requestParameters: CompanyIdentifiersIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling companyIdentifiersIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/company_identifiers/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete company identifier\n */\n async companyIdentifiersIdDelete(\n requestParameters: CompanyIdentifiersIdDeleteRequest\n ): Promise {\n await this.companyIdentifiersIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get company identifier\n */\n async companyIdentifiersIdGetRaw(\n requestParameters: CompanyIdentifiersIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling companyIdentifiersIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/company_identifiers/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n CompanyIdentifierModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get company identifier\n */\n async companyIdentifiersIdGet(\n requestParameters: CompanyIdentifiersIdGetRequest\n ): Promise {\n const response = await this.companyIdentifiersIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update company identifier\n */\n async companyIdentifiersIdPatchRaw(\n requestParameters: CompanyIdentifiersIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling companyIdentifiersIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling companyIdentifiersIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/company_identifiers/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: CompanyIdentifierUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n CompanyIdentifierModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Update company identifier\n */\n async companyIdentifiersIdPatch(\n requestParameters: CompanyIdentifiersIdPatchRequest\n ): Promise {\n const response = await this.companyIdentifiersIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get identifiers types\n */\n async companyIdentifiersTypesGetRaw(): Promise<\n runtime.ApiResponse>\n > {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/company_identifiers/types`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(CompanyIdentifierTypeFromJSON)\n );\n }\n\n /**\n * Get identifiers types\n */\n async companyIdentifiersTypesGet(): Promise> {\n const response = await this.companyIdentifiersTypesGetRaw();\n return await response.value();\n }\n\n /**\n * Get config\n */\n async configsConfigIdGetRaw(\n requestParameters: ConfigsConfigIdGetRequest\n ): Promise>> {\n if (\n requestParameters.configId === null ||\n requestParameters.configId === undefined\n ) {\n throw new runtime.RequiredError(\n 'configId',\n 'Required parameter requestParameters.configId was null or undefined when calling configsConfigIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/configs/{config_id}`.replace(\n `{${'config_id'}}`,\n encodeURIComponent(String(requestParameters.configId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response);\n }\n\n /**\n * Get config\n */\n async configsConfigIdGet(\n requestParameters: ConfigsConfigIdGetRequest\n ): Promise> {\n const response = await this.configsConfigIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get control\n */\n async controlsControlIdGetRaw(\n requestParameters: ControlsControlIdGetRequest\n ): Promise> {\n if (\n requestParameters.controlId === null ||\n requestParameters.controlId === undefined\n ) {\n throw new runtime.RequiredError(\n 'controlId',\n 'Required parameter requestParameters.controlId was null or undefined when calling controlsControlIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.vendorId !== undefined) {\n queryParameters['vendor_id'] = requestParameters.vendorId;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/controls/{control_id}`.replace(\n `{${'control_id'}}`,\n encodeURIComponent(String(requestParameters.controlId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ControlExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get control\n */\n async controlsControlIdGet(\n requestParameters: ControlsControlIdGetRequest\n ): Promise {\n const response = await this.controlsControlIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update control\n */\n async controlsControlIdPatchRaw(\n requestParameters: ControlsControlIdPatchRequest\n ): Promise> {\n if (\n requestParameters.controlId === null ||\n requestParameters.controlId === undefined\n ) {\n throw new runtime.RequiredError(\n 'controlId',\n 'Required parameter requestParameters.controlId was null or undefined when calling controlsControlIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling controlsControlIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/controls/{control_id}`.replace(\n `{${'control_id'}}`,\n encodeURIComponent(String(requestParameters.controlId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ControlUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ControlExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update control\n */\n async controlsControlIdPatch(\n requestParameters: ControlsControlIdPatchRequest\n ): Promise {\n const response = await this.controlsControlIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Remove reference\n */\n async controlsControlIdReferencesDeleteRaw(\n requestParameters: ControlsControlIdReferencesDeleteRequest\n ): Promise> {\n if (\n requestParameters.controlId === null ||\n requestParameters.controlId === undefined\n ) {\n throw new runtime.RequiredError(\n 'controlId',\n 'Required parameter requestParameters.controlId was null or undefined when calling controlsControlIdReferencesDelete.'\n );\n }\n\n if (\n requestParameters.referenceableId === null ||\n requestParameters.referenceableId === undefined\n ) {\n throw new runtime.RequiredError(\n 'referenceableId',\n 'Required parameter requestParameters.referenceableId was null or undefined when calling controlsControlIdReferencesDelete.'\n );\n }\n\n if (\n requestParameters.referenceableType === null ||\n requestParameters.referenceableType === undefined\n ) {\n throw new runtime.RequiredError(\n 'referenceableType',\n 'Required parameter requestParameters.referenceableType was null or undefined when calling controlsControlIdReferencesDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.referenceableId !== undefined) {\n queryParameters['referenceable_id'] = requestParameters.referenceableId;\n }\n\n if (requestParameters.referenceableType !== undefined) {\n queryParameters['referenceable_type'] =\n requestParameters.referenceableType;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/controls/{control_id}/references`.replace(\n `{${'control_id'}}`,\n encodeURIComponent(String(requestParameters.controlId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Remove reference\n */\n async controlsControlIdReferencesDelete(\n requestParameters: ControlsControlIdReferencesDeleteRequest\n ): Promise {\n await this.controlsControlIdReferencesDeleteRaw(requestParameters);\n }\n\n /**\n * Create reference\n */\n async controlsControlIdReferencesPostRaw(\n requestParameters: ControlsControlIdReferencesPostRequest\n ): Promise> {\n if (\n requestParameters.controlId === null ||\n requestParameters.controlId === undefined\n ) {\n throw new runtime.RequiredError(\n 'controlId',\n 'Required parameter requestParameters.controlId was null or undefined when calling controlsControlIdReferencesPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling controlsControlIdReferencesPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/controls/{control_id}/references`.replace(\n `{${'control_id'}}`,\n encodeURIComponent(String(requestParameters.controlId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ReferenceCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Create reference\n */\n async controlsControlIdReferencesPost(\n requestParameters: ControlsControlIdReferencesPostRequest\n ): Promise {\n await this.controlsControlIdReferencesPostRaw(requestParameters);\n }\n\n /**\n * Update control status\n */\n async controlsControlIdStatusPatchRaw(\n requestParameters: ControlsControlIdStatusPatchRequest\n ): Promise> {\n if (\n requestParameters.controlId === null ||\n requestParameters.controlId === undefined\n ) {\n throw new runtime.RequiredError(\n 'controlId',\n 'Required parameter requestParameters.controlId was null or undefined when calling controlsControlIdStatusPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling controlsControlIdStatusPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/controls/{control_id}/status`.replace(\n `{${'control_id'}}`,\n encodeURIComponent(String(requestParameters.controlId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ControlUpdateStatusPayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ControlExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update control status\n */\n async controlsControlIdStatusPatch(\n requestParameters: ControlsControlIdStatusPatchRequest\n ): Promise {\n const response =\n await this.controlsControlIdStatusPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete action\n */\n async correctiveActionsCorrectiveActionIdDeleteRaw(\n requestParameters: CorrectiveActionsCorrectiveActionIdDeleteRequest\n ): Promise> {\n if (\n requestParameters.correctiveActionId === null ||\n requestParameters.correctiveActionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'correctiveActionId',\n 'Required parameter requestParameters.correctiveActionId was null or undefined when calling correctiveActionsCorrectiveActionIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/corrective_actions/{corrective_action_id}`.replace(\n `{${'corrective_action_id'}}`,\n encodeURIComponent(String(requestParameters.correctiveActionId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete action\n */\n async correctiveActionsCorrectiveActionIdDelete(\n requestParameters: CorrectiveActionsCorrectiveActionIdDeleteRequest\n ): Promise {\n await this.correctiveActionsCorrectiveActionIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get action\n */\n async correctiveActionsCorrectiveActionIdGetRaw(\n requestParameters: CorrectiveActionsCorrectiveActionIdGetRequest\n ): Promise> {\n if (\n requestParameters.correctiveActionId === null ||\n requestParameters.correctiveActionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'correctiveActionId',\n 'Required parameter requestParameters.correctiveActionId was null or undefined when calling correctiveActionsCorrectiveActionIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/corrective_actions/{corrective_action_id}`.replace(\n `{${'corrective_action_id'}}`,\n encodeURIComponent(String(requestParameters.correctiveActionId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n CorrectiveActionExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get action\n */\n async correctiveActionsCorrectiveActionIdGet(\n requestParameters: CorrectiveActionsCorrectiveActionIdGetRequest\n ): Promise {\n const response =\n await this.correctiveActionsCorrectiveActionIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update action\n */\n async correctiveActionsCorrectiveActionIdPatchRaw(\n requestParameters: CorrectiveActionsCorrectiveActionIdPatchRequest\n ): Promise> {\n if (\n requestParameters.correctiveActionId === null ||\n requestParameters.correctiveActionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'correctiveActionId',\n 'Required parameter requestParameters.correctiveActionId was null or undefined when calling correctiveActionsCorrectiveActionIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.correctiveActionName !== undefined) {\n formParams.append(\n 'corrective_action[name]',\n requestParameters.correctiveActionName as any\n );\n }\n\n if (requestParameters.correctiveActionDescription !== undefined) {\n formParams.append(\n 'corrective_action[description]',\n requestParameters.correctiveActionDescription as any\n );\n }\n\n if (requestParameters.correctiveActionIdentifier !== undefined) {\n formParams.append(\n 'corrective_action[identifier]',\n requestParameters.correctiveActionIdentifier as any\n );\n }\n\n if (requestParameters.correctiveActionDateIdentified !== undefined) {\n formParams.append(\n 'corrective_action[date_identified]',\n requestParameters.correctiveActionDateIdentified as any\n );\n }\n\n if (requestParameters.correctiveActionRaisedBy !== undefined) {\n formParams.append(\n 'corrective_action[raised_by]',\n requestParameters.correctiveActionRaisedBy as any\n );\n }\n\n if (requestParameters.correctiveActionRootCause !== undefined) {\n formParams.append(\n 'corrective_action[root_cause]',\n requestParameters.correctiveActionRootCause as any\n );\n }\n\n if (requestParameters.correctiveActionOwnerId !== undefined) {\n formParams.append(\n 'corrective_action[owner_id]',\n requestParameters.correctiveActionOwnerId as any\n );\n }\n\n if (requestParameters.correctiveActionCompleted !== undefined) {\n formParams.append(\n 'corrective_action[completed]',\n requestParameters.correctiveActionCompleted as any\n );\n }\n\n if (requestParameters.correctiveActionUrl !== undefined) {\n formParams.append(\n 'corrective_action[url]',\n requestParameters.correctiveActionUrl as any\n );\n }\n\n if (requestParameters.correctiveActionAttachments) {\n formParams.append(\n 'corrective_action[attachments]',\n requestParameters.correctiveActionAttachments.join(\n runtime.COLLECTION_FORMATS['csv']\n )\n );\n }\n\n if (requestParameters.correctiveActionDeletedAttachmentIds) {\n formParams.append(\n 'corrective_action[deleted_attachment_ids]',\n requestParameters.correctiveActionDeletedAttachmentIds.join(\n runtime.COLLECTION_FORMATS['csv']\n )\n );\n }\n\n if (requestParameters.correctiveActionActionType !== undefined) {\n formParams.append(\n 'corrective_action[action_type]',\n requestParameters.correctiveActionActionType as any\n );\n }\n\n if (requestParameters.correctiveActionCorrectiveActions !== undefined) {\n formParams.append(\n 'corrective_action[corrective_actions]',\n requestParameters.correctiveActionCorrectiveActions as any\n );\n }\n\n const response = await this.request({\n path: `/corrective_actions/{corrective_action_id}`.replace(\n `{${'corrective_action_id'}}`,\n encodeURIComponent(String(requestParameters.correctiveActionId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n CorrectiveActionExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update action\n */\n async correctiveActionsCorrectiveActionIdPatch(\n requestParameters: CorrectiveActionsCorrectiveActionIdPatchRequest\n ): Promise {\n const response =\n await this.correctiveActionsCorrectiveActionIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create subscription after Stripe checkout from Stripe session\n */\n async createRecurringPaymentGetRaw(\n requestParameters: CreateRecurringPaymentGetRequest\n ): Promise> {\n if (\n requestParameters.purchasableType === null ||\n requestParameters.purchasableType === undefined\n ) {\n throw new runtime.RequiredError(\n 'purchasableType',\n 'Required parameter requestParameters.purchasableType was null or undefined when calling createRecurringPaymentGet.'\n );\n }\n\n if (\n requestParameters.purchasableId === null ||\n requestParameters.purchasableId === undefined\n ) {\n throw new runtime.RequiredError(\n 'purchasableId',\n 'Required parameter requestParameters.purchasableId was null or undefined when calling createRecurringPaymentGet.'\n );\n }\n\n if (\n requestParameters.paymentPeriod === null ||\n requestParameters.paymentPeriod === undefined\n ) {\n throw new runtime.RequiredError(\n 'paymentPeriod',\n 'Required parameter requestParameters.paymentPeriod was null or undefined when calling createRecurringPaymentGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.paymentPeriod !== undefined) {\n queryParameters['payment_period'] = requestParameters.paymentPeriod;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/create_recurring_payment`\n .replace(\n `{${'purchasable_type'}}`,\n encodeURIComponent(String(requestParameters.purchasableType))\n )\n .replace(\n `{${'purchasable_id'}}`,\n encodeURIComponent(String(requestParameters.purchasableId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Create subscription after Stripe checkout from Stripe session\n */\n async createRecurringPaymentGet(\n requestParameters: CreateRecurringPaymentGetRequest\n ): Promise {\n await this.createRecurringPaymentGetRaw(requestParameters);\n }\n\n /**\n * Create recurring_payment stripe checkout\n */\n async createStripeRecurringPaymentPostRaw(\n requestParameters: CreateStripeRecurringPaymentPostRequest\n ): Promise> {\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling createStripeRecurringPaymentPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/create_stripe_recurring_payment`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: RecurringPaymentCheckoutCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n RecurringPaymentCheckoutModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Create recurring_payment stripe checkout\n */\n async createStripeRecurringPaymentPost(\n requestParameters: CreateStripeRecurringPaymentPostRequest\n ): Promise {\n const response =\n await this.createStripeRecurringPaymentPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create subscription payment stripe checkout\n */\n async createStripeSessionPostRaw(\n requestParameters: CreateStripeSessionPostRequest\n ): Promise> {\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling createStripeSessionPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/create_stripe_session`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: PaymentPlanVendorCheckoutCreatePayloadToJSON(\n requestParameters.body\n ),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n PaymentPlanVendorCheckoutModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Create subscription payment stripe checkout\n */\n async createStripeSessionPost(\n requestParameters: CreateStripeSessionPostRequest\n ): Promise {\n const response = await this.createStripeSessionPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update entity\n */\n async dataRoomEntitiesEntityIdPatchRaw(\n requestParameters: DataRoomEntitiesEntityIdPatchRequest\n ): Promise> {\n if (\n requestParameters.entityId === null ||\n requestParameters.entityId === undefined\n ) {\n throw new runtime.RequiredError(\n 'entityId',\n 'Required parameter requestParameters.entityId was null or undefined when calling dataRoomEntitiesEntityIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling dataRoomEntitiesEntityIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/data_room/entities/{entity_id}`.replace(\n `{${'entity_id'}}`,\n encodeURIComponent(String(requestParameters.entityId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: DataRoomEntityUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n DataRoomEntityModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Update entity\n */\n async dataRoomEntitiesEntityIdPatch(\n requestParameters: DataRoomEntitiesEntityIdPatchRequest\n ): Promise {\n const response =\n await this.dataRoomEntitiesEntityIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get Data Room file with attachment download link\n */\n async dataRoomFilesFileIdDownloadGetRaw(\n requestParameters: DataRoomFilesFileIdDownloadGetRequest\n ): Promise> {\n if (\n requestParameters.fileId === null ||\n requestParameters.fileId === undefined\n ) {\n throw new runtime.RequiredError(\n 'fileId',\n 'Required parameter requestParameters.fileId was null or undefined when calling dataRoomFilesFileIdDownloadGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/data_room/files/{file_id}/download`.replace(\n `{${'file_id'}}`,\n encodeURIComponent(String(requestParameters.fileId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n DataRoomEntityModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get Data Room file with attachment download link\n */\n async dataRoomFilesFileIdDownloadGet(\n requestParameters: DataRoomFilesFileIdDownloadGetRequest\n ): Promise {\n const response =\n await this.dataRoomFilesFileIdDownloadGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete evidence (deprecated)\n */\n async evidencesEvidenceIdDeleteRaw(\n requestParameters: EvidencesEvidenceIdDeleteRequest\n ): Promise> {\n if (\n requestParameters.evidenceId === null ||\n requestParameters.evidenceId === undefined\n ) {\n throw new runtime.RequiredError(\n 'evidenceId',\n 'Required parameter requestParameters.evidenceId was null or undefined when calling evidencesEvidenceIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/evidences/{evidence_id}`.replace(\n `{${'evidence_id'}}`,\n encodeURIComponent(String(requestParameters.evidenceId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete evidence (deprecated)\n */\n async evidencesEvidenceIdDelete(\n requestParameters: EvidencesEvidenceIdDeleteRequest\n ): Promise {\n await this.evidencesEvidenceIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get evidence data with attachment download link (deprecated)\n */\n async evidencesEvidenceIdDownloadGetRaw(\n requestParameters: EvidencesEvidenceIdDownloadGetRequest\n ): Promise> {\n if (\n requestParameters.evidenceId === null ||\n requestParameters.evidenceId === undefined\n ) {\n throw new runtime.RequiredError(\n 'evidenceId',\n 'Required parameter requestParameters.evidenceId was null or undefined when calling evidencesEvidenceIdDownloadGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/evidences/{evidence_id}/download`.replace(\n `{${'evidence_id'}}`,\n encodeURIComponent(String(requestParameters.evidenceId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n EvidenceModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get evidence data with attachment download link (deprecated)\n */\n async evidencesEvidenceIdDownloadGet(\n requestParameters: EvidencesEvidenceIdDownloadGetRequest\n ): Promise {\n const response =\n await this.evidencesEvidenceIdDownloadGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get framework guidance\n */\n async frameworkGuidancesIdGetRaw(\n requestParameters: FrameworkGuidancesIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling frameworkGuidancesIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/framework_guidances/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n FrameworkGuidanceModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get framework guidance\n */\n async frameworkGuidancesIdGet(\n requestParameters: FrameworkGuidancesIdGetRequest\n ): Promise {\n const response = await this.frameworkGuidancesIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get framework templates\n */\n async frameworkTemplatesGetRaw(): Promise<\n runtime.ApiResponse>\n > {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/framework_templates`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(FrameworkTemplateModelFromJSON)\n );\n }\n\n /**\n * Get framework templates\n */\n async frameworkTemplatesGet(): Promise> {\n const response = await this.frameworkTemplatesGetRaw();\n return await response.value();\n }\n\n /**\n * Get framework template\n */\n async frameworkTemplatesIdGetRaw(\n requestParameters: FrameworkTemplatesIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling frameworkTemplatesIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/framework_templates/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n FrameworkTemplateExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get framework template\n */\n async frameworkTemplatesIdGet(\n requestParameters: FrameworkTemplatesIdGetRequest\n ): Promise {\n const response = await this.frameworkTemplatesIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get framework requirement categories\n */\n async frameworksFrameworkIdFrameworkRequirementCategoriesGetRaw(\n requestParameters: FrameworksFrameworkIdFrameworkRequirementCategoriesGetRequest\n ): Promise>> {\n if (\n requestParameters.frameworkId === null ||\n requestParameters.frameworkId === undefined\n ) {\n throw new runtime.RequiredError(\n 'frameworkId',\n 'Required parameter requestParameters.frameworkId was null or undefined when calling frameworksFrameworkIdFrameworkRequirementCategoriesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/frameworks/{framework_id}/framework_requirement_categories`.replace(\n `{${'framework_id'}}`,\n encodeURIComponent(String(requestParameters.frameworkId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(FrameworkRequirementCategoryExtendedFromJSON)\n );\n }\n\n /**\n * Get framework requirement categories\n */\n async frameworksFrameworkIdFrameworkRequirementCategoriesGet(\n requestParameters: FrameworksFrameworkIdFrameworkRequirementCategoriesGetRequest\n ): Promise> {\n const response =\n await this.frameworksFrameworkIdFrameworkRequirementCategoriesGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Run evidence export\n */\n async frameworksIdExportEvidencePostRaw(\n requestParameters: FrameworksIdExportEvidencePostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling frameworksIdExportEvidencePost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling frameworksIdExportEvidencePost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/frameworks/{id}/export_evidence`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: FrameworkExportEvidencePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Run evidence export\n */\n async frameworksIdExportEvidencePost(\n requestParameters: FrameworksIdExportEvidencePostRequest\n ): Promise {\n await this.frameworksIdExportEvidencePostRaw(requestParameters);\n }\n\n /**\n * Get framework\n */\n async frameworksIdGetRaw(\n requestParameters: FrameworksIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling frameworksIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/frameworks/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n FrameworkExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get framework\n */\n async frameworksIdGet(\n requestParameters: FrameworksIdGetRequest\n ): Promise {\n const response = await this.frameworksIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get framework policies\n */\n async frameworksIdPoliciesGetRaw(\n requestParameters: FrameworksIdPoliciesGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling frameworksIdPoliciesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/frameworks/{id}/policies`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorDocumentFromJSON)\n );\n }\n\n /**\n * Get framework policies\n */\n async frameworksIdPoliciesGet(\n requestParameters: FrameworksIdPoliciesGetRequest\n ): Promise> {\n const response = await this.frameworksIdPoliciesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete action\n */\n async incidentEventsIncidentEventIdDeleteRaw(\n requestParameters: IncidentEventsIncidentEventIdDeleteRequest\n ): Promise> {\n if (\n requestParameters.incidentEventId === null ||\n requestParameters.incidentEventId === undefined\n ) {\n throw new runtime.RequiredError(\n 'incidentEventId',\n 'Required parameter requestParameters.incidentEventId was null or undefined when calling incidentEventsIncidentEventIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/incident_events/{incident_event_id}`.replace(\n `{${'incident_event_id'}}`,\n encodeURIComponent(String(requestParameters.incidentEventId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete action\n */\n async incidentEventsIncidentEventIdDelete(\n requestParameters: IncidentEventsIncidentEventIdDeleteRequest\n ): Promise {\n await this.incidentEventsIncidentEventIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get action\n */\n async incidentEventsIncidentEventIdGetRaw(\n requestParameters: IncidentEventsIncidentEventIdGetRequest\n ): Promise> {\n if (\n requestParameters.incidentEventId === null ||\n requestParameters.incidentEventId === undefined\n ) {\n throw new runtime.RequiredError(\n 'incidentEventId',\n 'Required parameter requestParameters.incidentEventId was null or undefined when calling incidentEventsIncidentEventIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/incident_events/{incident_event_id}`.replace(\n `{${'incident_event_id'}}`,\n encodeURIComponent(String(requestParameters.incidentEventId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n IncidentEventExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get action\n */\n async incidentEventsIncidentEventIdGet(\n requestParameters: IncidentEventsIncidentEventIdGetRequest\n ): Promise {\n const response =\n await this.incidentEventsIncidentEventIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update action\n */\n async incidentEventsIncidentEventIdPatchRaw(\n requestParameters: IncidentEventsIncidentEventIdPatchRequest\n ): Promise> {\n if (\n requestParameters.incidentEventId === null ||\n requestParameters.incidentEventId === undefined\n ) {\n throw new runtime.RequiredError(\n 'incidentEventId',\n 'Required parameter requestParameters.incidentEventId was null or undefined when calling incidentEventsIncidentEventIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.incidentEventName !== undefined) {\n formParams.append(\n 'incident_event[name]',\n requestParameters.incidentEventName as any\n );\n }\n\n if (requestParameters.incidentEventDescription !== undefined) {\n formParams.append(\n 'incident_event[description]',\n requestParameters.incidentEventDescription as any\n );\n }\n\n if (requestParameters.incidentEventIdentifier !== undefined) {\n formParams.append(\n 'incident_event[identifier]',\n requestParameters.incidentEventIdentifier as any\n );\n }\n\n if (requestParameters.incidentEventDateIdentified !== undefined) {\n formParams.append(\n 'incident_event[date_identified]',\n requestParameters.incidentEventDateIdentified as any\n );\n }\n\n if (requestParameters.incidentEventRaisedBy !== undefined) {\n formParams.append(\n 'incident_event[raised_by]',\n requestParameters.incidentEventRaisedBy as any\n );\n }\n\n if (requestParameters.incidentEventRootCause !== undefined) {\n formParams.append(\n 'incident_event[root_cause]',\n requestParameters.incidentEventRootCause as any\n );\n }\n\n if (requestParameters.incidentEventOwnerId !== undefined) {\n formParams.append(\n 'incident_event[owner_id]',\n requestParameters.incidentEventOwnerId as any\n );\n }\n\n if (requestParameters.incidentEventCompleted !== undefined) {\n formParams.append(\n 'incident_event[completed]',\n requestParameters.incidentEventCompleted as any\n );\n }\n\n if (requestParameters.incidentEventUrl !== undefined) {\n formParams.append(\n 'incident_event[url]',\n requestParameters.incidentEventUrl as any\n );\n }\n\n if (requestParameters.incidentEventAttachments) {\n formParams.append(\n 'incident_event[attachments]',\n requestParameters.incidentEventAttachments.join(\n runtime.COLLECTION_FORMATS['csv']\n )\n );\n }\n\n if (requestParameters.incidentEventDeletedAttachmentIds) {\n formParams.append(\n 'incident_event[deleted_attachment_ids]',\n requestParameters.incidentEventDeletedAttachmentIds.join(\n runtime.COLLECTION_FORMATS['csv']\n )\n );\n }\n\n if (requestParameters.incidentEventPreventativeActions !== undefined) {\n formParams.append(\n 'incident_event[preventative_actions]',\n requestParameters.incidentEventPreventativeActions as any\n );\n }\n\n if (requestParameters.incidentEventActionsTaken !== undefined) {\n formParams.append(\n 'incident_event[actions_taken]',\n requestParameters.incidentEventActionsTaken as any\n );\n }\n\n if (requestParameters.incidentEventDataBreach !== undefined) {\n formParams.append(\n 'incident_event[data_breach]',\n requestParameters.incidentEventDataBreach as any\n );\n }\n\n if (requestParameters.incidentEventDataBreachDetails !== undefined) {\n formParams.append(\n 'incident_event[data_breach_details]',\n requestParameters.incidentEventDataBreachDetails as any\n );\n }\n\n const response = await this.request({\n path: `/incident_events/{incident_event_id}`.replace(\n `{${'incident_event_id'}}`,\n encodeURIComponent(String(requestParameters.incidentEventId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n IncidentEventExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update action\n */\n async incidentEventsIncidentEventIdPatch(\n requestParameters: IncidentEventsIncidentEventIdPatchRequest\n ): Promise {\n const response =\n await this.incidentEventsIncidentEventIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get jurisdictions\n */\n async jurisdictionsGetRaw(): Promise<\n runtime.ApiResponse>\n > {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/jurisdictions`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(JurisdictionModelFromJSON)\n );\n }\n\n /**\n * Get jurisdictions\n */\n async jurisdictionsGet(): Promise> {\n const response = await this.jurisdictionsGetRaw();\n return await response.value();\n }\n\n /**\n * Get legislation Classifications\n */\n async legislationClassificationsGetRaw(): Promise<\n runtime.ApiResponse>\n > {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/legislation_classifications`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(LegislationClassificationModelFromJSON)\n );\n }\n\n /**\n * Get legislation Classifications\n */\n async legislationClassificationsGet(): Promise<\n Array\n > {\n const response = await this.legislationClassificationsGetRaw();\n return await response.value();\n }\n\n /**\n * Get legislation templates\n */\n async legislationTemplatesGetRaw(): Promise<\n runtime.ApiResponse>\n > {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/legislation_templates`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(LegislationTemplateModelFromJSON)\n );\n }\n\n /**\n * Get legislation templates\n */\n async legislationTemplatesGet(): Promise> {\n const response = await this.legislationTemplatesGetRaw();\n return await response.value();\n }\n\n /**\n * Delete legislation\n */\n async legislationsIdDeleteRaw(\n requestParameters: LegislationsIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling legislationsIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/legislations/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete legislation\n */\n async legislationsIdDelete(\n requestParameters: LegislationsIdDeleteRequest\n ): Promise {\n await this.legislationsIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get legislation\n */\n async legislationsIdGetRaw(\n requestParameters: LegislationsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling legislationsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/legislations/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n LegislationExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get legislation\n */\n async legislationsIdGet(\n requestParameters: LegislationsIdGetRequest\n ): Promise {\n const response = await this.legislationsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update legislation\n */\n async legislationsIdPatchRaw(\n requestParameters: LegislationsIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling legislationsIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling legislationsIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/legislations/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: LegislationUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n LegislationExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update legislation\n */\n async legislationsIdPatch(\n requestParameters: LegislationsIdPatchRequest\n ): Promise {\n const response = await this.legislationsIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Mark notification as read\n */\n async notificationsNotificationIdReadPatchRaw(\n requestParameters: NotificationsNotificationIdReadPatchRequest\n ): Promise> {\n if (\n requestParameters.notificationId === null ||\n requestParameters.notificationId === undefined\n ) {\n throw new runtime.RequiredError(\n 'notificationId',\n 'Required parameter requestParameters.notificationId was null or undefined when calling notificationsNotificationIdReadPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/notifications/{notification_id}/read`.replace(\n `{${'notification_id'}}`,\n encodeURIComponent(String(requestParameters.notificationId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Mark notification as read\n */\n async notificationsNotificationIdReadPatch(\n requestParameters: NotificationsNotificationIdReadPatchRequest\n ): Promise {\n await this.notificationsNotificationIdReadPatchRaw(requestParameters);\n }\n\n /**\n * Get an array of parsed emails\n */\n async parseEmailsPostRaw(\n requestParameters: ParseEmailsPostRequest\n ): Promise> {\n if (\n requestParameters.email === null ||\n requestParameters.email === undefined\n ) {\n throw new runtime.RequiredError(\n 'email',\n 'Required parameter requestParameters.email was null or undefined when calling parseEmailsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/parse_emails`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: EmailTextToJSON(requestParameters.email),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n EmailArrayFromJSON(jsonValue)\n );\n }\n\n /**\n * Get an array of parsed emails\n */\n async parseEmailsPost(\n requestParameters: ParseEmailsPostRequest\n ): Promise {\n const response = await this.parseEmailsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of all available payment methods\n */\n async paymentMethodsGetRaw(): Promise<\n runtime.ApiResponse>\n > {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/payment_methods`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(PaymentMethodFromJSON)\n );\n }\n\n /**\n * Get the list of all available payment methods\n */\n async paymentMethodsGet(): Promise> {\n const response = await this.paymentMethodsGetRaw();\n return await response.value();\n }\n\n /**\n * Delete one payment method\n */\n async paymentMethodsIdDeleteRaw(\n requestParameters: PaymentMethodsIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling paymentMethodsIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/payment_methods/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete one payment method\n */\n async paymentMethodsIdDelete(\n requestParameters: PaymentMethodsIdDeleteRequest\n ): Promise {\n await this.paymentMethodsIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get the details of one payment method\n */\n async paymentMethodsIdGetRaw(\n requestParameters: PaymentMethodsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling paymentMethodsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/payment_methods/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n PaymentMethodFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the details of one payment method\n */\n async paymentMethodsIdGet(\n requestParameters: PaymentMethodsIdGetRequest\n ): Promise {\n const response = await this.paymentMethodsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update payment method\n */\n async paymentMethodsIdPatchRaw(\n requestParameters: PaymentMethodsIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling paymentMethodsIdPatch.'\n );\n }\n\n if (\n requestParameters.card === null ||\n requestParameters.card === undefined\n ) {\n throw new runtime.RequiredError(\n 'card',\n 'Required parameter requestParameters.card was null or undefined when calling paymentMethodsIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/payment_methods/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: PaymentMethodUpdatePayloadToJSON(requestParameters.card),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n PaymentMethodFromJSON(jsonValue)\n );\n }\n\n /**\n * Update payment method\n */\n async paymentMethodsIdPatch(\n requestParameters: PaymentMethodsIdPatchRequest\n ): Promise {\n const response = await this.paymentMethodsIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create a new payment method\n */\n async paymentMethodsPostRaw(\n requestParameters: PaymentMethodsPostRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/payment_methods`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: CardToJSON(requestParameters.card),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n PaymentMethodFromJSON(jsonValue)\n );\n }\n\n /**\n * Create a new payment method\n */\n async paymentMethodsPost(\n requestParameters: PaymentMethodsPostRequest\n ): Promise {\n const response = await this.paymentMethodsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create subscription after Stripe checkout from Stripe session\n */\n async paymentPlanVendorsGetRaw(\n requestParameters: PaymentPlanVendorsGetRequest\n ): Promise> {\n if (\n requestParameters.paymentPlanId === null ||\n requestParameters.paymentPlanId === undefined\n ) {\n throw new runtime.RequiredError(\n 'paymentPlanId',\n 'Required parameter requestParameters.paymentPlanId was null or undefined when calling paymentPlanVendorsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/payment_plan_vendors`.replace(\n `{${'payment_plan_id'}}`,\n encodeURIComponent(String(requestParameters.paymentPlanId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Create subscription after Stripe checkout from Stripe session\n */\n async paymentPlanVendorsGet(\n requestParameters: PaymentPlanVendorsGetRequest\n ): Promise {\n await this.paymentPlanVendorsGetRaw(requestParameters);\n }\n\n /**\n * Get active Payment Plans\n */\n async paymentPlansGetRaw(): Promise>> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/payment_plans`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(PaymentPlanFromJSON)\n );\n }\n\n /**\n * Get active Payment Plans\n */\n async paymentPlansGet(): Promise> {\n const response = await this.paymentPlansGetRaw();\n return await response.value();\n }\n\n /**\n * Get actual price for payment plans\n */\n async paymentPlansPricingGetRaw(\n requestParameters: PaymentPlansPricingGetRequest\n ): Promise>> {\n if (\n requestParameters.usersLimit === null ||\n requestParameters.usersLimit === undefined\n ) {\n throw new runtime.RequiredError(\n 'usersLimit',\n 'Required parameter requestParameters.usersLimit was null or undefined when calling paymentPlansPricingGet.'\n );\n }\n\n if (\n requestParameters.paymentPeriod === null ||\n requestParameters.paymentPeriod === undefined\n ) {\n throw new runtime.RequiredError(\n 'paymentPeriod',\n 'Required parameter requestParameters.paymentPeriod was null or undefined when calling paymentPlansPricingGet.'\n );\n }\n\n if (\n requestParameters.paymentPlanIds === null ||\n requestParameters.paymentPlanIds === undefined\n ) {\n throw new runtime.RequiredError(\n 'paymentPlanIds',\n 'Required parameter requestParameters.paymentPlanIds was null or undefined when calling paymentPlansPricingGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.usersLimit !== undefined) {\n queryParameters['users_limit'] = requestParameters.usersLimit;\n }\n\n if (requestParameters.paymentPeriod !== undefined) {\n queryParameters['payment_period'] = requestParameters.paymentPeriod;\n }\n\n if (requestParameters.paymentPlanIds) {\n queryParameters['payment_plan_ids[]'] =\n requestParameters.paymentPlanIds.join(\n runtime.COLLECTION_FORMATS['csv']\n );\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/payment_plans/pricing`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(PaymentPlanPriceFromJSON)\n );\n }\n\n /**\n * Get actual price for payment plans\n */\n async paymentPlansPricingGet(\n requestParameters: PaymentPlansPricingGetRequest\n ): Promise> {\n const response = await this.paymentPlansPricingGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete PESTEL item\n */\n async pestelItemsIdDeleteRaw(\n requestParameters: PestelItemsIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling pestelItemsIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pestel_items/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete PESTEL item\n */\n async pestelItemsIdDelete(\n requestParameters: PestelItemsIdDeleteRequest\n ): Promise {\n await this.pestelItemsIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get PESTEL item\n */\n async pestelItemsIdGetRaw(\n requestParameters: PestelItemsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling pestelItemsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pestel_items/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n PestelItemModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get PESTEL item\n */\n async pestelItemsIdGet(\n requestParameters: PestelItemsIdGetRequest\n ): Promise {\n const response = await this.pestelItemsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update PESTEL item\n */\n async pestelItemsIdPatchRaw(\n requestParameters: PestelItemsIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling pestelItemsIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling pestelItemsIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/pestel_items/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: PestelItemUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n PestelItemModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Update PESTEL item\n */\n async pestelItemsIdPatch(\n requestParameters: PestelItemsIdPatchRequest\n ): Promise {\n const response = await this.pestelItemsIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of all policies\n */\n async policiesGetRaw(): Promise>> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/policies`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(PolicyFromJSON)\n );\n }\n\n /**\n * Get the list of all policies\n */\n async policiesGet(): Promise> {\n const response = await this.policiesGetRaw();\n return await response.value();\n }\n\n /**\n * Get policy categories\n */\n async policyCategoriesGetRaw(): Promise<\n runtime.ApiResponse>\n > {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/policy_categories`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(PolicyCategoryFromJSON)\n );\n }\n\n /**\n * Get policy categories\n */\n async policyCategoriesGet(): Promise> {\n const response = await this.policyCategoriesGetRaw();\n return await response.value();\n }\n\n /**\n * Delete reminder\n */\n async remindersReminderIdDeleteRaw(\n requestParameters: RemindersReminderIdDeleteRequest\n ): Promise> {\n if (\n requestParameters.reminderId === null ||\n requestParameters.reminderId === undefined\n ) {\n throw new runtime.RequiredError(\n 'reminderId',\n 'Required parameter requestParameters.reminderId was null or undefined when calling remindersReminderIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/reminders/{reminder_id}`.replace(\n `{${'reminder_id'}}`,\n encodeURIComponent(String(requestParameters.reminderId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete reminder\n */\n async remindersReminderIdDelete(\n requestParameters: RemindersReminderIdDeleteRequest\n ): Promise {\n await this.remindersReminderIdDeleteRaw(requestParameters);\n }\n\n /**\n * Update reminder\n */\n async remindersReminderIdPatchRaw(\n requestParameters: RemindersReminderIdPatchRequest\n ): Promise> {\n if (\n requestParameters.reminderId === null ||\n requestParameters.reminderId === undefined\n ) {\n throw new runtime.RequiredError(\n 'reminderId',\n 'Required parameter requestParameters.reminderId was null or undefined when calling remindersReminderIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/reminders/{reminder_id}`.replace(\n `{${'reminder_id'}}`,\n encodeURIComponent(String(requestParameters.reminderId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: ReminderUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ReminderModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Update reminder\n */\n async remindersReminderIdPatch(\n requestParameters: RemindersReminderIdPatchRequest\n ): Promise {\n const response = await this.remindersReminderIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete report\n */\n async reportsIdDeleteRaw(\n requestParameters: ReportsIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling reportsIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/reports/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete report\n */\n async reportsIdDelete(\n requestParameters: ReportsIdDeleteRequest\n ): Promise {\n await this.reportsIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get report pdf\n */\n async reportsIdDocumentGetRaw(\n requestParameters: ReportsIdDocumentGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling reportsIdDocumentGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/reports/{id}/document`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Get report pdf\n */\n async reportsIdDocumentGet(\n requestParameters: ReportsIdDocumentGetRequest\n ): Promise {\n await this.reportsIdDocumentGetRaw(requestParameters);\n }\n\n /**\n * Get report\n */\n async reportsIdGetRaw(\n requestParameters: ReportsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling reportsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/reports/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ReportModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get report\n */\n async reportsIdGet(\n requestParameters: ReportsIdGetRequest\n ): Promise {\n const response = await this.reportsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get risk categories\n */\n async riskCategoriesGetRaw(\n requestParameters: RiskCategoriesGetRequest\n ): Promise>> {\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.vendorId !== undefined) {\n queryParameters['vendor_id'] = requestParameters.vendorId;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/risk_categories`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(RiskCategoryModelFromJSON)\n );\n }\n\n /**\n * Get risk categories\n */\n async riskCategoriesGet(\n requestParameters: RiskCategoriesGetRequest\n ): Promise> {\n const response = await this.riskCategoriesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete risk report\n */\n async riskReportsIdDeleteRaw(\n requestParameters: RiskReportsIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling riskReportsIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/risk_reports/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete risk report\n */\n async riskReportsIdDelete(\n requestParameters: RiskReportsIdDeleteRequest\n ): Promise {\n await this.riskReportsIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get risk report\n */\n async riskReportsIdGetRaw(\n requestParameters: RiskReportsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling riskReportsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/risk_reports/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n RiskReportModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get risk report\n */\n async riskReportsIdGet(\n requestParameters: RiskReportsIdGetRequest\n ): Promise {\n const response = await this.riskReportsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get risk templates\n */\n async riskTemplatesGetRaw(): Promise<\n runtime.ApiResponse>\n > {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/risk_templates`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(RiskTemplateModelFromJSON)\n );\n }\n\n /**\n * Get risk templates\n */\n async riskTemplatesGet(): Promise> {\n const response = await this.riskTemplatesGetRaw();\n return await response.value();\n }\n\n /**\n * Approve Risk\n */\n async risksIdApprovePostRaw(\n requestParameters: RisksIdApprovePostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling risksIdApprovePost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/risks/{id}/approve`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n RiskExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Approve Risk\n */\n async risksIdApprovePost(\n requestParameters: RisksIdApprovePostRequest\n ): Promise {\n const response = await this.risksIdApprovePostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete risk\n */\n async risksIdDeleteRaw(\n requestParameters: RisksIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling risksIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/risks/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete risk\n */\n async risksIdDelete(requestParameters: RisksIdDeleteRequest): Promise {\n await this.risksIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get risk\n */\n async risksIdGetRaw(\n requestParameters: RisksIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling risksIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/risks/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n RiskExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get risk\n */\n async risksIdGet(\n requestParameters: RisksIdGetRequest\n ): Promise {\n const response = await this.risksIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update risk\n */\n async risksIdPatchRaw(\n requestParameters: RisksIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling risksIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling risksIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/risks/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: RiskUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n RiskExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update risk\n */\n async risksIdPatch(\n requestParameters: RisksIdPatchRequest\n ): Promise {\n const response = await this.risksIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get registered companies matching a query string\n */\n async searchRegisteredCompaniesqqGetRaw(\n requestParameters: SearchRegisteredCompaniesqqGetRequest\n ): Promise>> {\n if (requestParameters.q === null || requestParameters.q === undefined) {\n throw new runtime.RequiredError(\n 'q',\n 'Required parameter requestParameters.q was null or undefined when calling searchRegisteredCompaniesqqGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/search_registered_companies?q={q}`.replace(\n `{${'q'}}`,\n encodeURIComponent(String(requestParameters.q))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(RegisteredCompanyFromJSON)\n );\n }\n\n /**\n * Get registered companies matching a query string\n */\n async searchRegisteredCompaniesqqGet(\n requestParameters: SearchRegisteredCompaniesqqGetRequest\n ): Promise> {\n const response =\n await this.searchRegisteredCompaniesqqGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the payment subscriptions\n */\n async subscriptionsGetRaw(): Promise<\n runtime.ApiResponse>\n > {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/subscriptions`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(SubscriptionFromJSON)\n );\n }\n\n /**\n * Get the payment subscriptions\n */\n async subscriptionsGet(): Promise> {\n const response = await this.subscriptionsGetRaw();\n return await response.value();\n }\n\n /**\n * Delete subscription\n */\n async subscriptionsIdDeleteRaw(\n requestParameters: SubscriptionsIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling subscriptionsIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/subscriptions/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete subscription\n */\n async subscriptionsIdDelete(\n requestParameters: SubscriptionsIdDeleteRequest\n ): Promise {\n await this.subscriptionsIdDeleteRaw(requestParameters);\n }\n\n /**\n * Update subscription\n */\n async subscriptionsIdPatchRaw(\n requestParameters: SubscriptionsIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling subscriptionsIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling subscriptionsIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/subscriptions/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: SubscriptionUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n SubscriptionFromJSON(jsonValue)\n );\n }\n\n /**\n * Update subscription\n */\n async subscriptionsIdPatch(\n requestParameters: SubscriptionsIdPatchRequest\n ): Promise {\n const response = await this.subscriptionsIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update survey clause\n */\n async surveyClausesSurveyClauseIdPatchRaw(\n requestParameters: SurveyClausesSurveyClauseIdPatchRequest\n ): Promise> {\n if (\n requestParameters.surveyClauseId === null ||\n requestParameters.surveyClauseId === undefined\n ) {\n throw new runtime.RequiredError(\n 'surveyClauseId',\n 'Required parameter requestParameters.surveyClauseId was null or undefined when calling surveyClausesSurveyClauseIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling surveyClausesSurveyClauseIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/survey_clauses/{survey_clause_id}`.replace(\n `{${'survey_clause_id'}}`,\n encodeURIComponent(String(requestParameters.surveyClauseId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: SurveyClauseUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n SurveyClauseFromJSON(jsonValue)\n );\n }\n\n /**\n * Update survey clause\n */\n async surveyClausesSurveyClauseIdPatch(\n requestParameters: SurveyClausesSurveyClauseIdPatchRequest\n ): Promise {\n const response =\n await this.surveyClausesSurveyClauseIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Revert survey clause custom text\n */\n async surveyClausesSurveyClauseIdRevertCustomTextPatchRaw(\n requestParameters: SurveyClausesSurveyClauseIdRevertCustomTextPatchRequest\n ): Promise> {\n if (\n requestParameters.surveyClauseId === null ||\n requestParameters.surveyClauseId === undefined\n ) {\n throw new runtime.RequiredError(\n 'surveyClauseId',\n 'Required parameter requestParameters.surveyClauseId was null or undefined when calling surveyClausesSurveyClauseIdRevertCustomTextPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/survey_clauses/{survey_clause_id}/revert_custom_text`.replace(\n `{${'survey_clause_id'}}`,\n encodeURIComponent(String(requestParameters.surveyClauseId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n SurveyClauseFromJSON(jsonValue)\n );\n }\n\n /**\n * Revert survey clause custom text\n */\n async surveyClausesSurveyClauseIdRevertCustomTextPatch(\n requestParameters: SurveyClausesSurveyClauseIdRevertCustomTextPatchRequest\n ): Promise {\n const response =\n await this.surveyClausesSurveyClauseIdRevertCustomTextPatchRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get a table of generic data\n */\n async tablesTypeGetRaw(\n requestParameters: TablesTypeGetRequest\n ): Promise> {\n if (\n requestParameters.type === null ||\n requestParameters.type === undefined\n ) {\n throw new runtime.RequiredError(\n 'type',\n 'Required parameter requestParameters.type was null or undefined when calling tablesTypeGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/tables/{type}`.replace(\n `{${'type'}}`,\n encodeURIComponent(String(requestParameters.type))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TableFromJSON(jsonValue)\n );\n }\n\n /**\n * Get a table of generic data\n */\n async tablesTypeGet(requestParameters: TablesTypeGetRequest): Promise {\n const response = await this.tablesTypeGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Set available assertions\n */\n async tasksTaskIdAvailableAssertionsPatchRaw(\n requestParameters: TasksTaskIdAvailableAssertionsPatchRequest\n ): Promise> {\n if (\n requestParameters.taskId === null ||\n requestParameters.taskId === undefined\n ) {\n throw new runtime.RequiredError(\n 'taskId',\n 'Required parameter requestParameters.taskId was null or undefined when calling tasksTaskIdAvailableAssertionsPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling tasksTaskIdAvailableAssertionsPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/tasks/{task_id}/available_assertions`.replace(\n `{${'task_id'}}`,\n encodeURIComponent(String(requestParameters.taskId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: TaskAvailableAssertionsPayloadToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Set available assertions\n */\n async tasksTaskIdAvailableAssertionsPatch(\n requestParameters: TasksTaskIdAvailableAssertionsPatchRequest\n ): Promise {\n await this.tasksTaskIdAvailableAssertionsPatchRaw(requestParameters);\n }\n\n /**\n * Create evidence\n */\n async tasksTaskIdEvidencesPostRaw(\n requestParameters: TasksTaskIdEvidencesPostRequest\n ): Promise> {\n if (\n requestParameters.taskId === null ||\n requestParameters.taskId === undefined\n ) {\n throw new runtime.RequiredError(\n 'taskId',\n 'Required parameter requestParameters.taskId was null or undefined when calling tasksTaskIdEvidencesPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.attachment !== undefined) {\n formParams.append('attachment', requestParameters.attachment as any);\n }\n\n if (requestParameters.description !== undefined) {\n formParams.append('description', requestParameters.description as any);\n }\n\n const response = await this.request({\n path: `/tasks/{task_id}/evidences`.replace(\n `{${'task_id'}}`,\n encodeURIComponent(String(requestParameters.taskId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n EvidenceModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Create evidence\n */\n async tasksTaskIdEvidencesPost(\n requestParameters: TasksTaskIdEvidencesPostRequest\n ): Promise {\n const response = await this.tasksTaskIdEvidencesPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get task\n */\n async tasksTaskIdGetRaw(\n requestParameters: TasksTaskIdGetRequest\n ): Promise> {\n if (\n requestParameters.taskId === null ||\n requestParameters.taskId === undefined\n ) {\n throw new runtime.RequiredError(\n 'taskId',\n 'Required parameter requestParameters.taskId was null or undefined when calling tasksTaskIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/tasks/{task_id}`.replace(\n `{${'task_id'}}`,\n encodeURIComponent(String(requestParameters.taskId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TaskExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get task\n */\n async tasksTaskIdGet(\n requestParameters: TasksTaskIdGetRequest\n ): Promise {\n const response = await this.tasksTaskIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update task\n */\n async tasksTaskIdPatchRaw(\n requestParameters: TasksTaskIdPatchRequest\n ): Promise> {\n if (\n requestParameters.taskId === null ||\n requestParameters.taskId === undefined\n ) {\n throw new runtime.RequiredError(\n 'taskId',\n 'Required parameter requestParameters.taskId was null or undefined when calling tasksTaskIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling tasksTaskIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/tasks/{task_id}`.replace(\n `{${'task_id'}}`,\n encodeURIComponent(String(requestParameters.taskId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: TaskUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TaskExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update task\n */\n async tasksTaskIdPatch(\n requestParameters: TasksTaskIdPatchRequest\n ): Promise {\n const response = await this.tasksTaskIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the details of the current user\n */\n async userDetailsGetRaw(): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/user_details`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n UserDetailsFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the details of the current user\n */\n async userDetailsGet(): Promise {\n const response = await this.userDetailsGetRaw();\n return await response.value();\n }\n\n /**\n * Change the details of the current user\n */\n async userDetailsPatchRaw(\n requestParameters: UserDetailsPatchRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/user_details`,\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: UserDetailsToJSON(requestParameters.userDetails),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n UserDetailsFromJSON(jsonValue)\n );\n }\n\n /**\n * Change the details of the current user\n */\n async userDetailsPatch(\n requestParameters: UserDetailsPatchRequest\n ): Promise {\n const response = await this.userDetailsPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete my account\n */\n async usersDeleteRaw(): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/users`,\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete my account\n */\n async usersDelete(): Promise {\n await this.usersDeleteRaw();\n }\n\n /**\n * Get list of users by query params\n */\n async usersGetRaw(\n requestParameters: UsersGetRequest\n ): Promise>> {\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.queryEmail !== undefined) {\n queryParameters['query[email]'] = requestParameters.queryEmail;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/users`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(UserDetailsFromJSON)\n );\n }\n\n /**\n * Get list of users by query params\n */\n async usersGet(\n requestParameters: UsersGetRequest\n ): Promise> {\n const response = await this.usersGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get user signature urls\n */\n async usersIdSignatureGetRaw(\n requestParameters: UsersIdSignatureGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling usersIdSignatureGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/users/{id}/signature`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ImageFromJSON(jsonValue)\n );\n }\n\n /**\n * Get user signature urls\n */\n async usersIdSignatureGet(\n requestParameters: UsersIdSignatureGetRequest\n ): Promise {\n const response = await this.usersIdSignatureGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update user signature\n */\n async usersIdSignaturePatchRaw(\n requestParameters: UsersIdSignaturePatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling usersIdSignaturePatch.'\n );\n }\n\n if (\n requestParameters.image === null ||\n requestParameters.image === undefined\n ) {\n throw new runtime.RequiredError(\n 'image',\n 'Required parameter requestParameters.image was null or undefined when calling usersIdSignaturePatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.image !== undefined) {\n formParams.append('image', requestParameters.image as any);\n }\n\n const response = await this.request({\n path: `/users/{id}/signature`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ImageFromJSON(jsonValue)\n );\n }\n\n /**\n * Update user signature\n */\n async usersIdSignaturePatch(\n requestParameters: UsersIdSignaturePatchRequest\n ): Promise {\n const response = await this.usersIdSignaturePatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create an invitation\n */\n async usersInvitationsPostRaw(\n requestParameters: UsersInvitationsPostRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users/invitations`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: UserInvitationToJSON(requestParameters.invitation),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n MessageResponseFromJSON(jsonValue)\n );\n }\n\n /**\n * Create an invitation\n */\n async usersInvitationsPost(\n requestParameters: UsersInvitationsPostRequest\n ): Promise {\n const response = await this.usersInvitationsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the details for the invitation\n */\n async usersInvitationsTokenGetRaw(\n requestParameters: UsersInvitationsTokenGetRequest\n ): Promise> {\n if (\n requestParameters.token === null ||\n requestParameters.token === undefined\n ) {\n throw new runtime.RequiredError(\n 'token',\n 'Required parameter requestParameters.token was null or undefined when calling usersInvitationsTokenGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/users/invitations/{token}`.replace(\n `{${'token'}}`,\n encodeURIComponent(String(requestParameters.token))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n UserInvitationFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the details for the invitation\n */\n async usersInvitationsTokenGet(\n requestParameters: UsersInvitationsTokenGetRequest\n ): Promise {\n const response = await this.usersInvitationsTokenGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Set new password\n */\n async usersPasswordPatchRaw(\n requestParameters: UsersPasswordPatchRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users/password`,\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: UserResetPasswordToJSON(requestParameters.user),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Set new password\n */\n async usersPasswordPatch(\n requestParameters: UsersPasswordPatchRequest\n ): Promise {\n await this.usersPasswordPatchRaw(requestParameters);\n }\n\n /**\n * Forgot my password\n */\n async usersPasswordPostRaw(\n requestParameters: UsersPasswordPostRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users/password`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: UserForgotPasswordToJSON(requestParameters.user),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n UserDetailsFromJSON(jsonValue)\n );\n }\n\n /**\n * Forgot my password\n */\n async usersPasswordPost(\n requestParameters: UsersPasswordPostRequest\n ): Promise {\n const response = await this.usersPasswordPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Change email or password\n */\n async usersPatchRaw(\n requestParameters: UsersPatchRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users`,\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: UserPasswordToJSON(requestParameters.password),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Change email or password\n */\n async usersPatch(requestParameters: UsersPatchRequest): Promise {\n await this.usersPatchRaw(requestParameters);\n }\n\n /**\n * Sign up to the platform\n */\n async usersPostRaw(\n requestParameters: UsersPostRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: UserSignUpToJSON(requestParameters.user),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n UserDetailsFromJSON(jsonValue)\n );\n }\n\n /**\n * Sign up to the platform\n */\n async usersPost(requestParameters: UsersPostRequest): Promise {\n const response = await this.usersPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Request OTP secret\n */\n async usersRequestOtpGetRaw(): Promise<\n runtime.ApiResponse\n > {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/users/request_otp`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TwoFactorRequestOtpPayloadFromJSON(jsonValue)\n );\n }\n\n /**\n * Request OTP secret\n */\n async usersRequestOtpGet(): Promise {\n const response = await this.usersRequestOtpGetRaw();\n return await response.value();\n }\n\n /**\n * Sign in to the platform\n */\n async usersSignInPostRaw(\n requestParameters: UsersSignInPostRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users/sign_in`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: UserSignInToJSON(requestParameters.session),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n UserDetailsFromJSON(jsonValue)\n );\n }\n\n /**\n * Sign in to the platform\n */\n async usersSignInPost(\n requestParameters: UsersSignInPostRequest\n ): Promise {\n const response = await this.usersSignInPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Sign out of the platform\n */\n async usersSignOutDeleteRaw(): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/users/sign_out`,\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Sign out of the platform\n */\n async usersSignOutDelete(): Promise {\n await this.usersSignOutDeleteRaw();\n }\n\n /**\n * Verify 2FA token\n */\n async usersSmsRequestPostRaw(\n requestParameters: UsersSmsRequestPostRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users/sms_request`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: TwoFactorSmsRequestPayloadToJSON(requestParameters.payload),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Verify 2FA token\n */\n async usersSmsRequestPost(\n requestParameters: UsersSmsRequestPostRequest\n ): Promise {\n await this.usersSmsRequestPostRaw(requestParameters);\n }\n\n /**\n * Verify OTP attempt\n */\n async usersVerifyOtpPostRaw(\n requestParameters: UsersVerifyOtpPostRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users/verify_otp`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: TwoFactorVerifyOtpPayloadToJSON(requestParameters.payload),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Verify OTP attempt\n */\n async usersVerifyOtpPost(\n requestParameters: UsersVerifyOtpPostRequest\n ): Promise {\n await this.usersVerifyOtpPostRaw(requestParameters);\n }\n\n /**\n * Verify OTP attempt\n */\n async usersVerifyOtpSetupPostRaw(\n requestParameters: UsersVerifyOtpSetupPostRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users/verify_otp_setup`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: TwoFactorVerifyOtpSetupPayloadToJSON(requestParameters.payload),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TwoFactorVerifyOtpSetupResponseFromJSON(jsonValue)\n );\n }\n\n /**\n * Verify OTP attempt\n */\n async usersVerifyOtpSetupPost(\n requestParameters: UsersVerifyOtpSetupPostRequest\n ): Promise {\n const response = await this.usersVerifyOtpSetupPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Verify OTP uninstall attempt\n */\n async usersVerifyOtpUninstallDeleteRaw(\n requestParameters: UsersVerifyOtpUninstallDeleteRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users/verify_otp_uninstall`,\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n body: TwoFactorVerifyOtpSetupPayloadToJSON(requestParameters.payload),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Verify OTP uninstall attempt\n */\n async usersVerifyOtpUninstallDelete(\n requestParameters: UsersVerifyOtpUninstallDeleteRequest\n ): Promise {\n await this.usersVerifyOtpUninstallDeleteRaw(requestParameters);\n }\n\n /**\n * Verify 2FA token\n */\n async usersVerifyTokenPostRaw(\n requestParameters: UsersVerifyTokenPostRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users/verify_token`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: TwoFactorVerifyTokenPayloadToJSON(requestParameters.payload),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Verify 2FA token\n */\n async usersVerifyTokenPost(\n requestParameters: UsersVerifyTokenPostRequest\n ): Promise {\n await this.usersVerifyTokenPostRaw(requestParameters);\n }\n\n /**\n * Delete action\n */\n async vendorActionsVendorActionIdDeleteRaw(\n requestParameters: VendorActionsVendorActionIdDeleteRequest\n ): Promise> {\n if (\n requestParameters.vendorActionId === null ||\n requestParameters.vendorActionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorActionId',\n 'Required parameter requestParameters.vendorActionId was null or undefined when calling vendorActionsVendorActionIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_actions/{vendor_action_id}`.replace(\n `{${'vendor_action_id'}}`,\n encodeURIComponent(String(requestParameters.vendorActionId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete action\n */\n async vendorActionsVendorActionIdDelete(\n requestParameters: VendorActionsVendorActionIdDeleteRequest\n ): Promise {\n await this.vendorActionsVendorActionIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get action\n */\n async vendorActionsVendorActionIdGetRaw(\n requestParameters: VendorActionsVendorActionIdGetRequest\n ): Promise> {\n if (\n requestParameters.vendorActionId === null ||\n requestParameters.vendorActionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorActionId',\n 'Required parameter requestParameters.vendorActionId was null or undefined when calling vendorActionsVendorActionIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_actions/{vendor_action_id}`.replace(\n `{${'vendor_action_id'}}`,\n encodeURIComponent(String(requestParameters.vendorActionId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorActionExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get action\n */\n async vendorActionsVendorActionIdGet(\n requestParameters: VendorActionsVendorActionIdGetRequest\n ): Promise {\n const response =\n await this.vendorActionsVendorActionIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update action\n */\n async vendorActionsVendorActionIdPatchRaw(\n requestParameters: VendorActionsVendorActionIdPatchRequest\n ): Promise> {\n if (\n requestParameters.vendorActionId === null ||\n requestParameters.vendorActionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorActionId',\n 'Required parameter requestParameters.vendorActionId was null or undefined when calling vendorActionsVendorActionIdPatch.'\n );\n }\n\n if (\n requestParameters.vendorActionName === null ||\n requestParameters.vendorActionName === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorActionName',\n 'Required parameter requestParameters.vendorActionName was null or undefined when calling vendorActionsVendorActionIdPatch.'\n );\n }\n\n if (\n requestParameters.vendorActionOwnerId === null ||\n requestParameters.vendorActionOwnerId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorActionOwnerId',\n 'Required parameter requestParameters.vendorActionOwnerId was null or undefined when calling vendorActionsVendorActionIdPatch.'\n );\n }\n\n if (\n requestParameters.vendorActionCompleted === null ||\n requestParameters.vendorActionCompleted === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorActionCompleted',\n 'Required parameter requestParameters.vendorActionCompleted was null or undefined when calling vendorActionsVendorActionIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.vendorActionName !== undefined) {\n formParams.append(\n 'vendor_action[name]',\n requestParameters.vendorActionName as any\n );\n }\n\n if (requestParameters.vendorActionDescription !== undefined) {\n formParams.append(\n 'vendor_action[description]',\n requestParameters.vendorActionDescription as any\n );\n }\n\n if (requestParameters.vendorActionDueDate !== undefined) {\n formParams.append(\n 'vendor_action[due_date]',\n requestParameters.vendorActionDueDate as any\n );\n }\n\n if (requestParameters.vendorActionOwnerId !== undefined) {\n formParams.append(\n 'vendor_action[owner_id]',\n requestParameters.vendorActionOwnerId as any\n );\n }\n\n if (requestParameters.vendorActionAttachments) {\n formParams.append(\n 'vendor_action[attachments]',\n requestParameters.vendorActionAttachments.join(\n runtime.COLLECTION_FORMATS['csv']\n )\n );\n }\n\n if (requestParameters.vendorActionUrl !== undefined) {\n formParams.append(\n 'vendor_action[url]',\n requestParameters.vendorActionUrl as any\n );\n }\n\n if (requestParameters.vendorActionActionType !== undefined) {\n formParams.append(\n 'vendor_action[action_type]',\n requestParameters.vendorActionActionType as any\n );\n }\n\n if (requestParameters.vendorActionCompleted !== undefined) {\n formParams.append(\n 'vendor_action[completed]',\n requestParameters.vendorActionCompleted as any\n );\n }\n\n if (requestParameters.vendorActionDeletedAttachmentIds) {\n formParams.append(\n 'vendor_action[deleted_attachment_ids]',\n requestParameters.vendorActionDeletedAttachmentIds.join(\n runtime.COLLECTION_FORMATS['csv']\n )\n );\n }\n\n const response = await this.request({\n path: `/vendor_actions/{vendor_action_id}`.replace(\n `{${'vendor_action_id'}}`,\n encodeURIComponent(String(requestParameters.vendorActionId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorActionExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update action\n */\n async vendorActionsVendorActionIdPatch(\n requestParameters: VendorActionsVendorActionIdPatchRequest\n ): Promise {\n const response =\n await this.vendorActionsVendorActionIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Remove reference\n */\n async vendorActionsVendorActionIdReferencesDeleteRaw(\n requestParameters: VendorActionsVendorActionIdReferencesDeleteRequest\n ): Promise> {\n if (\n requestParameters.vendorActionId === null ||\n requestParameters.vendorActionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorActionId',\n 'Required parameter requestParameters.vendorActionId was null or undefined when calling vendorActionsVendorActionIdReferencesDelete.'\n );\n }\n\n if (\n requestParameters.referenceableId === null ||\n requestParameters.referenceableId === undefined\n ) {\n throw new runtime.RequiredError(\n 'referenceableId',\n 'Required parameter requestParameters.referenceableId was null or undefined when calling vendorActionsVendorActionIdReferencesDelete.'\n );\n }\n\n if (\n requestParameters.referenceableType === null ||\n requestParameters.referenceableType === undefined\n ) {\n throw new runtime.RequiredError(\n 'referenceableType',\n 'Required parameter requestParameters.referenceableType was null or undefined when calling vendorActionsVendorActionIdReferencesDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.referenceableId !== undefined) {\n queryParameters['referenceable_id'] = requestParameters.referenceableId;\n }\n\n if (requestParameters.referenceableType !== undefined) {\n queryParameters['referenceable_type'] =\n requestParameters.referenceableType;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_actions/{vendor_action_id}/references`.replace(\n `{${'vendor_action_id'}}`,\n encodeURIComponent(String(requestParameters.vendorActionId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Remove reference\n */\n async vendorActionsVendorActionIdReferencesDelete(\n requestParameters: VendorActionsVendorActionIdReferencesDeleteRequest\n ): Promise {\n await this.vendorActionsVendorActionIdReferencesDeleteRaw(\n requestParameters\n );\n }\n\n /**\n * Create reference\n */\n async vendorActionsVendorActionIdReferencesPostRaw(\n requestParameters: VendorActionsVendorActionIdReferencesPostRequest\n ): Promise> {\n if (\n requestParameters.vendorActionId === null ||\n requestParameters.vendorActionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorActionId',\n 'Required parameter requestParameters.vendorActionId was null or undefined when calling vendorActionsVendorActionIdReferencesPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorActionsVendorActionIdReferencesPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_actions/{vendor_action_id}/references`.replace(\n `{${'vendor_action_id'}}`,\n encodeURIComponent(String(requestParameters.vendorActionId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ReferenceCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Create reference\n */\n async vendorActionsVendorActionIdReferencesPost(\n requestParameters: VendorActionsVendorActionIdReferencesPostRequest\n ): Promise {\n await this.vendorActionsVendorActionIdReferencesPostRaw(requestParameters);\n }\n\n /**\n * Send notification for attestation\n */\n async vendorDocumentAttestationsAttestationIdNotifyPostRaw(\n requestParameters: VendorDocumentAttestationsAttestationIdNotifyPostRequest\n ): Promise> {\n if (\n requestParameters.attestationId === null ||\n requestParameters.attestationId === undefined\n ) {\n throw new runtime.RequiredError(\n 'attestationId',\n 'Required parameter requestParameters.attestationId was null or undefined when calling vendorDocumentAttestationsAttestationIdNotifyPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_document_attestations/{attestation_id}/notify`.replace(\n `{${'attestation_id'}}`,\n encodeURIComponent(String(requestParameters.attestationId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Send notification for attestation\n */\n async vendorDocumentAttestationsAttestationIdNotifyPost(\n requestParameters: VendorDocumentAttestationsAttestationIdNotifyPostRequest\n ): Promise {\n await this.vendorDocumentAttestationsAttestationIdNotifyPostRaw(\n requestParameters\n );\n }\n\n /**\n * Approve the document for the current user\n */\n async vendorDocumentsIdApprovePostRaw(\n requestParameters: VendorDocumentsIdApprovePostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdApprovePost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_documents/{id}/approve`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorDocumentApprovalFromJSON(jsonValue)\n );\n }\n\n /**\n * Approve the document for the current user\n */\n async vendorDocumentsIdApprovePost(\n requestParameters: VendorDocumentsIdApprovePostRequest\n ): Promise {\n const response =\n await this.vendorDocumentsIdApprovePostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Set archived flag for vendor document\n */\n async vendorDocumentsIdArchivePostRaw(\n requestParameters: VendorDocumentsIdArchivePostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdArchivePost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_documents/{id}/archive`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Set archived flag for vendor document\n */\n async vendorDocumentsIdArchivePost(\n requestParameters: VendorDocumentsIdArchivePostRequest\n ): Promise {\n await this.vendorDocumentsIdArchivePostRaw(requestParameters);\n }\n\n /**\n * Attest the document for the current user\n */\n async vendorDocumentsIdAttestPostRaw(\n requestParameters: VendorDocumentsIdAttestPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdAttestPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_documents/{id}/attest`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorDocumentAttestationFromJSON(jsonValue)\n );\n }\n\n /**\n * Attest the document for the current user\n */\n async vendorDocumentsIdAttestPost(\n requestParameters: VendorDocumentsIdAttestPostRequest\n ): Promise {\n const response =\n await this.vendorDocumentsIdAttestPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete a vendor document\n */\n async vendorDocumentsIdDeleteRaw(\n requestParameters: VendorDocumentsIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_documents/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete a vendor document\n */\n async vendorDocumentsIdDelete(\n requestParameters: VendorDocumentsIdDeleteRequest\n ): Promise {\n await this.vendorDocumentsIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get serialized vendor document with download links\n */\n async vendorDocumentsIdDownloadGetRaw(\n requestParameters: VendorDocumentsIdDownloadGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdDownloadGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_documents/{id}/download`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorDocumentDownloadFromJSON(jsonValue)\n );\n }\n\n /**\n * Get serialized vendor document with download links\n */\n async vendorDocumentsIdDownloadGet(\n requestParameters: VendorDocumentsIdDownloadGetRequest\n ): Promise {\n const response =\n await this.vendorDocumentsIdDownloadGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get details for one vendor document\n */\n async vendorDocumentsIdGetRaw(\n requestParameters: VendorDocumentsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_documents/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorDocumentExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get details for one vendor document\n */\n async vendorDocumentsIdGet(\n requestParameters: VendorDocumentsIdGetRequest\n ): Promise {\n const response = await this.vendorDocumentsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update the details for a vendor document\n */\n async vendorDocumentsIdPatchRaw(\n requestParameters: VendorDocumentsIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_documents/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: VendorDocumentUpdatePayloadToJSON(requestParameters.vendorDocument),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorDocumentExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update the details for a vendor document\n */\n async vendorDocumentsIdPatch(\n requestParameters: VendorDocumentsIdPatchRequest\n ): Promise {\n const response = await this.vendorDocumentsIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Reject the document approval\n */\n async vendorDocumentsIdRejectPostRaw(\n requestParameters: VendorDocumentsIdRejectPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdRejectPost.'\n );\n }\n\n if (\n requestParameters.vendorDocumentApproval === null ||\n requestParameters.vendorDocumentApproval === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorDocumentApproval',\n 'Required parameter requestParameters.vendorDocumentApproval was null or undefined when calling vendorDocumentsIdRejectPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_documents/{id}/reject`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: VendorDocumentApprovalRejectToJSON(\n requestParameters.vendorDocumentApproval\n ),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorDocumentApprovalFromJSON(jsonValue)\n );\n }\n\n /**\n * Reject the document approval\n */\n async vendorDocumentsIdRejectPost(\n requestParameters: VendorDocumentsIdRejectPostRequest\n ): Promise {\n const response =\n await this.vendorDocumentsIdRejectPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Skip attestation for the current document\n */\n async vendorDocumentsIdSkipApprovalPostRaw(\n requestParameters: VendorDocumentsIdSkipApprovalPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdSkipApprovalPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_documents/{id}/skip_approval`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorDocumentExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Skip attestation for the current document\n */\n async vendorDocumentsIdSkipApprovalPost(\n requestParameters: VendorDocumentsIdSkipApprovalPostRequest\n ): Promise {\n const response =\n await this.vendorDocumentsIdSkipApprovalPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Skip attestation for the current document\n */\n async vendorDocumentsIdSkipAttestationPostRaw(\n requestParameters: VendorDocumentsIdSkipAttestationPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdSkipAttestationPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_documents/{id}/skip_attestation`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorDocumentExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Skip attestation for the current document\n */\n async vendorDocumentsIdSkipAttestationPost(\n requestParameters: VendorDocumentsIdSkipAttestationPostRequest\n ): Promise {\n const response =\n await this.vendorDocumentsIdSkipAttestationPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get a vendor document summary as pdf\n */\n async vendorDocumentsIdSummaryGetRaw(\n requestParameters: VendorDocumentsIdSummaryGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdSummaryGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_documents/{id}/summary`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Get a vendor document summary as pdf\n */\n async vendorDocumentsIdSummaryGet(\n requestParameters: VendorDocumentsIdSummaryGetRequest\n ): Promise {\n await this.vendorDocumentsIdSummaryGetRaw(requestParameters);\n }\n\n /**\n * Unset archived flag for vendor document\n */\n async vendorDocumentsIdUnarchivePostRaw(\n requestParameters: VendorDocumentsIdUnarchivePostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdUnarchivePost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_documents/{id}/unarchive`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Unset archived flag for vendor document\n */\n async vendorDocumentsIdUnarchivePost(\n requestParameters: VendorDocumentsIdUnarchivePostRequest\n ): Promise {\n await this.vendorDocumentsIdUnarchivePostRaw(requestParameters);\n }\n\n /**\n * Get the approvals for one document\n */\n async vendorDocumentsIdVendorDocumentApprovalsGetRaw(\n requestParameters: VendorDocumentsIdVendorDocumentApprovalsGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdVendorDocumentApprovalsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_documents/{id}/vendor_document_approvals`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorDocumentApprovalFromJSON)\n );\n }\n\n /**\n * Get the approvals for one document\n */\n async vendorDocumentsIdVendorDocumentApprovalsGet(\n requestParameters: VendorDocumentsIdVendorDocumentApprovalsGetRequest\n ): Promise> {\n const response =\n await this.vendorDocumentsIdVendorDocumentApprovalsGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get the attestation groups for a vendor document\n */\n async vendorDocumentsIdVendorDocumentAttestationGroupsGetRaw(\n requestParameters: VendorDocumentsIdVendorDocumentAttestationGroupsGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdVendorDocumentAttestationGroupsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_documents/{id}/vendor_document_attestation_groups`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorTeamModelFromJSON)\n );\n }\n\n /**\n * Get the attestation groups for a vendor document\n */\n async vendorDocumentsIdVendorDocumentAttestationGroupsGet(\n requestParameters: VendorDocumentsIdVendorDocumentAttestationGroupsGetRequest\n ): Promise> {\n const response =\n await this.vendorDocumentsIdVendorDocumentAttestationGroupsGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Update attestation groups for a vendor document\n */\n async vendorDocumentsIdVendorDocumentAttestationGroupsPatchRaw(\n requestParameters: VendorDocumentsIdVendorDocumentAttestationGroupsPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorDocumentsIdVendorDocumentAttestationGroupsPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorDocumentsIdVendorDocumentAttestationGroupsPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_documents/{id}/vendor_document_attestation_groups`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: VendorDocumentAttestationsGroupUpdatePayloadToJSON(\n requestParameters.body\n ),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Update attestation groups for a vendor document\n */\n async vendorDocumentsIdVendorDocumentAttestationGroupsPatch(\n requestParameters: VendorDocumentsIdVendorDocumentAttestationGroupsPatchRequest\n ): Promise {\n await this.vendorDocumentsIdVendorDocumentAttestationGroupsPatchRaw(\n requestParameters\n );\n }\n\n /**\n * Delete event\n */\n async vendorEventsVendorEventIdDeleteRaw(\n requestParameters: VendorEventsVendorEventIdDeleteRequest\n ): Promise> {\n if (\n requestParameters.vendorEventId === null ||\n requestParameters.vendorEventId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorEventId',\n 'Required parameter requestParameters.vendorEventId was null or undefined when calling vendorEventsVendorEventIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_events/{vendor_event_id}`.replace(\n `{${'vendor_event_id'}}`,\n encodeURIComponent(String(requestParameters.vendorEventId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete event\n */\n async vendorEventsVendorEventIdDelete(\n requestParameters: VendorEventsVendorEventIdDeleteRequest\n ): Promise {\n await this.vendorEventsVendorEventIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get event\n */\n async vendorEventsVendorEventIdGetRaw(\n requestParameters: VendorEventsVendorEventIdGetRequest\n ): Promise> {\n if (\n requestParameters.vendorEventId === null ||\n requestParameters.vendorEventId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorEventId',\n 'Required parameter requestParameters.vendorEventId was null or undefined when calling vendorEventsVendorEventIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_events/{vendor_event_id}`.replace(\n `{${'vendor_event_id'}}`,\n encodeURIComponent(String(requestParameters.vendorEventId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorEventExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get event\n */\n async vendorEventsVendorEventIdGet(\n requestParameters: VendorEventsVendorEventIdGetRequest\n ): Promise {\n const response =\n await this.vendorEventsVendorEventIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update event\n */\n async vendorEventsVendorEventIdPatchRaw(\n requestParameters: VendorEventsVendorEventIdPatchRequest\n ): Promise> {\n if (\n requestParameters.vendorEventId === null ||\n requestParameters.vendorEventId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorEventId',\n 'Required parameter requestParameters.vendorEventId was null or undefined when calling vendorEventsVendorEventIdPatch.'\n );\n }\n\n if (\n requestParameters.vendorEventName === null ||\n requestParameters.vendorEventName === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorEventName',\n 'Required parameter requestParameters.vendorEventName was null or undefined when calling vendorEventsVendorEventIdPatch.'\n );\n }\n\n if (\n requestParameters.vendorEventDate === null ||\n requestParameters.vendorEventDate === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorEventDate',\n 'Required parameter requestParameters.vendorEventDate was null or undefined when calling vendorEventsVendorEventIdPatch.'\n );\n }\n\n if (\n requestParameters.vendorEventEventType === null ||\n requestParameters.vendorEventEventType === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorEventEventType',\n 'Required parameter requestParameters.vendorEventEventType was null or undefined when calling vendorEventsVendorEventIdPatch.'\n );\n }\n\n if (\n requestParameters.vendorEventOwnerId === null ||\n requestParameters.vendorEventOwnerId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorEventOwnerId',\n 'Required parameter requestParameters.vendorEventOwnerId was null or undefined when calling vendorEventsVendorEventIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.vendorEventName !== undefined) {\n formParams.append(\n 'vendor_event[name]',\n requestParameters.vendorEventName as any\n );\n }\n\n if (requestParameters.vendorEventDescription !== undefined) {\n formParams.append(\n 'vendor_event[description]',\n requestParameters.vendorEventDescription as any\n );\n }\n\n if (requestParameters.vendorEventDate !== undefined) {\n formParams.append(\n 'vendor_event[date]',\n requestParameters.vendorEventDate as any\n );\n }\n\n if (requestParameters.vendorEventEventType !== undefined) {\n formParams.append(\n 'vendor_event[event_type]',\n requestParameters.vendorEventEventType as any\n );\n }\n\n if (requestParameters.vendorEventOwnerId !== undefined) {\n formParams.append(\n 'vendor_event[owner_id]',\n requestParameters.vendorEventOwnerId as any\n );\n }\n\n if (requestParameters.vendorEventAttachments) {\n formParams.append(\n 'vendor_event[attachments]',\n requestParameters.vendorEventAttachments.join(\n runtime.COLLECTION_FORMATS['csv']\n )\n );\n }\n\n if (requestParameters.vendorEventUrl !== undefined) {\n formParams.append(\n 'vendor_event[url]',\n requestParameters.vendorEventUrl as any\n );\n }\n\n if (requestParameters.vendorEventDeletedAttachmentIds) {\n formParams.append(\n 'vendor_event[deleted_attachment_ids]',\n requestParameters.vendorEventDeletedAttachmentIds.join(\n runtime.COLLECTION_FORMATS['csv']\n )\n );\n }\n\n const response = await this.request({\n path: `/vendor_events/{vendor_event_id}`.replace(\n `{${'vendor_event_id'}}`,\n encodeURIComponent(String(requestParameters.vendorEventId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorEventExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update event\n */\n async vendorEventsVendorEventIdPatch(\n requestParameters: VendorEventsVendorEventIdPatchRequest\n ): Promise {\n const response =\n await this.vendorEventsVendorEventIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete vendor framework requirement\n */\n async vendorFrameworkRequirementsIdDeleteRaw(\n requestParameters: VendorFrameworkRequirementsIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorFrameworkRequirementsIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_framework_requirements/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete vendor framework requirement\n */\n async vendorFrameworkRequirementsIdDelete(\n requestParameters: VendorFrameworkRequirementsIdDeleteRequest\n ): Promise {\n await this.vendorFrameworkRequirementsIdDeleteRaw(requestParameters);\n }\n\n /**\n * Delete vendor integration sync\n */\n async vendorIntegrationSyncsVendorIntegrationSyncIdDeleteRaw(\n requestParameters: VendorIntegrationSyncsVendorIntegrationSyncIdDeleteRequest\n ): Promise> {\n if (\n requestParameters.vendorIntegrationSyncId === null ||\n requestParameters.vendorIntegrationSyncId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIntegrationSyncId',\n 'Required parameter requestParameters.vendorIntegrationSyncId was null or undefined when calling vendorIntegrationSyncsVendorIntegrationSyncIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_integration_syncs/{vendor_integration_sync_id}`.replace(\n `{${'vendor_integration_sync_id'}}`,\n encodeURIComponent(String(requestParameters.vendorIntegrationSyncId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete vendor integration sync\n */\n async vendorIntegrationSyncsVendorIntegrationSyncIdDelete(\n requestParameters: VendorIntegrationSyncsVendorIntegrationSyncIdDeleteRequest\n ): Promise {\n await this.vendorIntegrationSyncsVendorIntegrationSyncIdDeleteRaw(\n requestParameters\n );\n }\n\n /**\n * Delete vendor integration\n */\n async vendorIntegrationsVendorIntegrationIdDeleteRaw(\n requestParameters: VendorIntegrationsVendorIntegrationIdDeleteRequest\n ): Promise> {\n if (\n requestParameters.vendorIntegrationId === null ||\n requestParameters.vendorIntegrationId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIntegrationId',\n 'Required parameter requestParameters.vendorIntegrationId was null or undefined when calling vendorIntegrationsVendorIntegrationIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_integrations/{vendor_integration_id}`.replace(\n `{${'vendor_integration_id'}}`,\n encodeURIComponent(String(requestParameters.vendorIntegrationId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete vendor integration\n */\n async vendorIntegrationsVendorIntegrationIdDelete(\n requestParameters: VendorIntegrationsVendorIntegrationIdDeleteRequest\n ): Promise {\n await this.vendorIntegrationsVendorIntegrationIdDeleteRaw(\n requestParameters\n );\n }\n\n /**\n * Get vendor integration\n */\n async vendorIntegrationsVendorIntegrationIdGetRaw(\n requestParameters: VendorIntegrationsVendorIntegrationIdGetRequest\n ): Promise> {\n if (\n requestParameters.vendorIntegrationId === null ||\n requestParameters.vendorIntegrationId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIntegrationId',\n 'Required parameter requestParameters.vendorIntegrationId was null or undefined when calling vendorIntegrationsVendorIntegrationIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_integrations/{vendor_integration_id}`.replace(\n `{${'vendor_integration_id'}}`,\n encodeURIComponent(String(requestParameters.vendorIntegrationId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorIntegrationModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get vendor integration\n */\n async vendorIntegrationsVendorIntegrationIdGet(\n requestParameters: VendorIntegrationsVendorIntegrationIdGetRequest\n ): Promise {\n const response =\n await this.vendorIntegrationsVendorIntegrationIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update vendor integration\n */\n async vendorIntegrationsVendorIntegrationIdPatchRaw(\n requestParameters: VendorIntegrationsVendorIntegrationIdPatchRequest\n ): Promise> {\n if (\n requestParameters.vendorIntegrationId === null ||\n requestParameters.vendorIntegrationId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIntegrationId',\n 'Required parameter requestParameters.vendorIntegrationId was null or undefined when calling vendorIntegrationsVendorIntegrationIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorIntegrationsVendorIntegrationIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_integrations/{vendor_integration_id}`.replace(\n `{${'vendor_integration_id'}}`,\n encodeURIComponent(String(requestParameters.vendorIntegrationId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: VendorIntegrationUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorIntegrationExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update vendor integration\n */\n async vendorIntegrationsVendorIntegrationIdPatch(\n requestParameters: VendorIntegrationsVendorIntegrationIdPatchRequest\n ): Promise {\n const response =\n await this.vendorIntegrationsVendorIntegrationIdPatchRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Create vendor integration sync\n */\n async vendorIntegrationsVendorIntegrationIdVendorIntegrationSyncsPostRaw(\n requestParameters: VendorIntegrationsVendorIntegrationIdVendorIntegrationSyncsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorIntegrationId === null ||\n requestParameters.vendorIntegrationId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIntegrationId',\n 'Required parameter requestParameters.vendorIntegrationId was null or undefined when calling vendorIntegrationsVendorIntegrationIdVendorIntegrationSyncsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorIntegrationsVendorIntegrationIdVendorIntegrationSyncsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_integrations/{vendor_integration_id}/vendor_integration_syncs`.replace(\n `{${'vendor_integration_id'}}`,\n encodeURIComponent(String(requestParameters.vendorIntegrationId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: VendorIntegrationSyncCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorIntegrationSyncExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor integration sync\n */\n async vendorIntegrationsVendorIntegrationIdVendorIntegrationSyncsPost(\n requestParameters: VendorIntegrationsVendorIntegrationIdVendorIntegrationSyncsPostRequest\n ): Promise {\n const response =\n await this.vendorIntegrationsVendorIntegrationIdVendorIntegrationSyncsPostRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Delete a vendor policy\n */\n async vendorPoliciesIdDeleteRaw(\n requestParameters: VendorPoliciesIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorPoliciesIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_policies/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete a vendor policy\n */\n async vendorPoliciesIdDelete(\n requestParameters: VendorPoliciesIdDeleteRequest\n ): Promise {\n await this.vendorPoliciesIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get a vendor policy\n */\n async vendorPoliciesIdGetRaw(\n requestParameters: VendorPoliciesIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorPoliciesIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.omitClauseText !== undefined) {\n queryParameters['omit_clause_text'] = requestParameters.omitClauseText;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_policies/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorPolicyDetailsFromJSON(jsonValue)\n );\n }\n\n /**\n * Get a vendor policy\n */\n async vendorPoliciesIdGet(\n requestParameters: VendorPoliciesIdGetRequest\n ): Promise {\n const response = await this.vendorPoliciesIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update a vendor policy\n */\n async vendorPoliciesIdPatchRaw(\n requestParameters: VendorPoliciesIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorPoliciesIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_policies/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: VendorPolicyDetailsToJSON(requestParameters.vendorPolicy),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorPolicyDetailsFromJSON(jsonValue)\n );\n }\n\n /**\n * Update a vendor policy\n */\n async vendorPoliciesIdPatch(\n requestParameters: VendorPoliciesIdPatchRequest\n ): Promise {\n const response = await this.vendorPoliciesIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get a vendor policy\n */\n async vendorPoliciesIdPdfGetRaw(\n requestParameters: VendorPoliciesIdPdfGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorPoliciesIdPdfGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_policies/{id}/pdf`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Get a vendor policy\n */\n async vendorPoliciesIdPdfGet(\n requestParameters: VendorPoliciesIdPdfGetRequest\n ): Promise {\n await this.vendorPoliciesIdPdfGetRaw(requestParameters);\n }\n\n /**\n * update VendorPolicy progress (cache) column\n */\n async vendorPoliciesIdProgressPatchRaw(\n requestParameters: VendorPoliciesIdProgressPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorPoliciesIdProgressPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_policies/{id}/progress`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: VendorPolicyProgressToJSON(requestParameters.progress),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * update VendorPolicy progress (cache) column\n */\n async vendorPoliciesIdProgressPatch(\n requestParameters: VendorPoliciesIdProgressPatchRequest\n ): Promise {\n await this.vendorPoliciesIdProgressPatchRaw(requestParameters);\n }\n\n /**\n * publish vendor_policy\n */\n async vendorPoliciesIdPublishPostRaw(\n requestParameters: VendorPoliciesIdPublishPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorPoliciesIdPublishPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_policies/{id}/publish`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: VendorPolicyPublishToJSON(requestParameters.vendorPolicy),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorPolicyDetailsFromJSON(jsonValue)\n );\n }\n\n /**\n * publish vendor_policy\n */\n async vendorPoliciesIdPublishPost(\n requestParameters: VendorPoliciesIdPublishPostRequest\n ): Promise {\n const response =\n await this.vendorPoliciesIdPublishPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of all policy clauses for the specified vendor policy\n */\n async vendorPoliciesIdVendorPolicyClausesGetRaw(\n requestParameters: VendorPoliciesIdVendorPolicyClausesGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorPoliciesIdVendorPolicyClausesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_policies/{id}/vendor_policy_clauses`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorPolicyClauseFromJSON)\n );\n }\n\n /**\n * Get the list of all policy clauses for the specified vendor policy\n */\n async vendorPoliciesIdVendorPolicyClausesGet(\n requestParameters: VendorPoliciesIdVendorPolicyClausesGetRequest\n ): Promise> {\n const response =\n await this.vendorPoliciesIdVendorPolicyClausesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get a vendor policy clause\n */\n async vendorPolicyClausesIdGetRaw(\n requestParameters: VendorPolicyClausesIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorPolicyClausesIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_policy_clauses/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorPolicyClauseFromJSON(jsonValue)\n );\n }\n\n /**\n * Get a vendor policy clause\n */\n async vendorPolicyClausesIdGet(\n requestParameters: VendorPolicyClausesIdGetRequest\n ): Promise {\n const response = await this.vendorPolicyClausesIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update a vendor policy clause\n */\n async vendorPolicyClausesIdPatchRaw(\n requestParameters: VendorPolicyClausesIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorPolicyClausesIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_policy_clauses/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: VendorPolicyClauseToJSON(requestParameters.vendorPolicyClause),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorPolicyClauseFromJSON(jsonValue)\n );\n }\n\n /**\n * Update a vendor policy clause\n */\n async vendorPolicyClausesIdPatch(\n requestParameters: VendorPolicyClausesIdPatchRequest\n ): Promise {\n const response =\n await this.vendorPolicyClausesIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete a specific vendor supplier\n */\n async vendorSuppliersIdDeleteRaw(\n requestParameters: VendorSuppliersIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorSuppliersIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_suppliers/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete a specific vendor supplier\n */\n async vendorSuppliersIdDelete(\n requestParameters: VendorSuppliersIdDeleteRequest\n ): Promise {\n await this.vendorSuppliersIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get a specific vendor supplier\n */\n async vendorSuppliersIdGetRaw(\n requestParameters: VendorSuppliersIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorSuppliersIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_suppliers/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorSupplierExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get a specific vendor supplier\n */\n async vendorSuppliersIdGet(\n requestParameters: VendorSuppliersIdGetRequest\n ): Promise {\n const response = await this.vendorSuppliersIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update a specific vendor supplier\n */\n async vendorSuppliersIdPatchRaw(\n requestParameters: VendorSuppliersIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorSuppliersIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorSuppliersIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_suppliers/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: VendorSupplierPayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorSupplierExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update a specific vendor supplier\n */\n async vendorSuppliersIdPatch(\n requestParameters: VendorSuppliersIdPatchRequest\n ): Promise {\n const response = await this.vendorSuppliersIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete a vendor team\n */\n async vendorTeamsIdDeleteRaw(\n requestParameters: VendorTeamsIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorTeamsIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_teams/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete a vendor team\n */\n async vendorTeamsIdDelete(\n requestParameters: VendorTeamsIdDeleteRequest\n ): Promise {\n await this.vendorTeamsIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get the details for one vendor team\n */\n async vendorTeamsIdGetRaw(\n requestParameters: VendorTeamsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorTeamsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_teams/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorTeamModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the details for one vendor team\n */\n async vendorTeamsIdGet(\n requestParameters: VendorTeamsIdGetRequest\n ): Promise {\n const response = await this.vendorTeamsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update a vendor team\n */\n async vendorTeamsIdPatchRaw(\n requestParameters: VendorTeamsIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorTeamsIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_teams/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: VendorTeamModelToJSON(requestParameters.vendorTeam),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorTeamModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Update a vendor team\n */\n async vendorTeamsIdPatch(\n requestParameters: VendorTeamsIdPatchRequest\n ): Promise {\n const response = await this.vendorTeamsIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete a vendor user\n */\n async vendorUsersIdDeleteRaw(\n requestParameters: VendorUsersIdDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorUsersIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_users/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete a vendor user\n */\n async vendorUsersIdDelete(\n requestParameters: VendorUsersIdDeleteRequest\n ): Promise {\n await this.vendorUsersIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get details for one vendor user\n */\n async vendorUsersIdGetRaw(\n requestParameters: VendorUsersIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorUsersIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_users/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorUserFromJSON(jsonValue)\n );\n }\n\n /**\n * Get details for one vendor user\n */\n async vendorUsersIdGet(\n requestParameters: VendorUsersIdGetRequest\n ): Promise {\n const response = await this.vendorUsersIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update the details for a vendor user\n */\n async vendorUsersIdPatchRaw(\n requestParameters: VendorUsersIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorUsersIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_users/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: VendorUserUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorUserFromJSON(jsonValue)\n );\n }\n\n /**\n * Update the details for a vendor user\n */\n async vendorUsersIdPatch(\n requestParameters: VendorUsersIdPatchRequest\n ): Promise {\n const response = await this.vendorUsersIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of Object the user was granted permissions\n */\n async vendorUsersIdPermissionsGetRaw(\n requestParameters: VendorUsersIdPermissionsGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorUsersIdPermissionsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_users/{id}/permissions`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n SharedDocumentListFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the list of Object the user was granted permissions\n */\n async vendorUsersIdPermissionsGet(\n requestParameters: VendorUsersIdPermissionsGetRequest\n ): Promise {\n const response =\n await this.vendorUsersIdPermissionsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of vendor user\\'s notifications\n */\n async vendorUsersVendorUserIdNotificationsGetRaw(\n requestParameters: VendorUsersVendorUserIdNotificationsGetRequest\n ): Promise> {\n if (\n requestParameters.vendorUserId === null ||\n requestParameters.vendorUserId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorUserId',\n 'Required parameter requestParameters.vendorUserId was null or undefined when calling vendorUsersVendorUserIdNotificationsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.perPage !== undefined) {\n queryParameters['per_page'] = requestParameters.perPage;\n }\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.showRead !== undefined) {\n queryParameters['show_read'] = requestParameters.showRead;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_users/{vendor_user_id}/notifications`.replace(\n `{${'vendor_user_id'}}`,\n encodeURIComponent(String(requestParameters.vendorUserId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n NotificationListFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the list of vendor user\\'s notifications\n */\n async vendorUsersVendorUserIdNotificationsGet(\n requestParameters: VendorUsersVendorUserIdNotificationsGetRequest\n ): Promise {\n const response =\n await this.vendorUsersVendorUserIdNotificationsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of vendor user\\'s reminders\n */\n async vendorUsersVendorUserIdRemindersGetRaw(\n requestParameters: VendorUsersVendorUserIdRemindersGetRequest\n ): Promise> {\n if (\n requestParameters.vendorUserId === null ||\n requestParameters.vendorUserId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorUserId',\n 'Required parameter requestParameters.vendorUserId was null or undefined when calling vendorUsersVendorUserIdRemindersGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.relatedToType !== undefined) {\n queryParameters['related_to_type'] = requestParameters.relatedToType;\n }\n\n if (requestParameters.relatedToId !== undefined) {\n queryParameters['related_to_id'] = requestParameters.relatedToId;\n }\n\n if (requestParameters.perPage !== undefined) {\n queryParameters['per_page'] = requestParameters.perPage;\n }\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_users/{vendor_user_id}/reminders`.replace(\n `{${'vendor_user_id'}}`,\n encodeURIComponent(String(requestParameters.vendorUserId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ReminderListFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the list of vendor user\\'s reminders\n */\n async vendorUsersVendorUserIdRemindersGet(\n requestParameters: VendorUsersVendorUserIdRemindersGetRequest\n ): Promise {\n const response =\n await this.vendorUsersVendorUserIdRemindersGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create reminder\n */\n async vendorUsersVendorUserIdRemindersPostRaw(\n requestParameters: VendorUsersVendorUserIdRemindersPostRequest\n ): Promise> {\n if (\n requestParameters.vendorUserId === null ||\n requestParameters.vendorUserId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorUserId',\n 'Required parameter requestParameters.vendorUserId was null or undefined when calling vendorUsersVendorUserIdRemindersPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_users/{vendor_user_id}/reminders`.replace(\n `{${'vendor_user_id'}}`,\n encodeURIComponent(String(requestParameters.vendorUserId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ReminderCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ReminderModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Create reminder\n */\n async vendorUsersVendorUserIdRemindersPost(\n requestParameters: VendorUsersVendorUserIdRemindersPostRequest\n ): Promise {\n const response =\n await this.vendorUsersVendorUserIdRemindersPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get a list of all visible vendors for the current user\n */\n async vendorsGetRaw(): Promise>> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorFromJSON)\n );\n }\n\n /**\n * Get a list of all visible vendors for the current user\n */\n async vendorsGet(): Promise> {\n const response = await this.vendorsGetRaw();\n return await response.value();\n }\n\n /**\n * Get vendor agreements\n */\n async vendorsIdAgreementsGetRaw(\n requestParameters: VendorsIdAgreementsGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdAgreementsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/agreements`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AgreementModelFromJSON)\n );\n }\n\n /**\n * Get vendor agreements\n */\n async vendorsIdAgreementsGet(\n requestParameters: VendorsIdAgreementsGetRequest\n ): Promise> {\n const response = await this.vendorsIdAgreementsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor agreement\n */\n async vendorsIdAgreementsPostRaw(\n requestParameters: VendorsIdAgreementsPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdAgreementsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsIdAgreementsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{id}/agreements`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AgreementCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AgreementExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor agreement\n */\n async vendorsIdAgreementsPost(\n requestParameters: VendorsIdAgreementsPostRequest\n ): Promise {\n const response = await this.vendorsIdAgreementsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Upload agreement\n */\n async vendorsIdAgreementsUploadPostRaw(\n requestParameters: VendorsIdAgreementsUploadPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdAgreementsUploadPost.'\n );\n }\n\n if (\n requestParameters.agreementName === null ||\n requestParameters.agreementName === undefined\n ) {\n throw new runtime.RequiredError(\n 'agreementName',\n 'Required parameter requestParameters.agreementName was null or undefined when calling vendorsIdAgreementsUploadPost.'\n );\n }\n\n if (\n requestParameters.agreementDocument === null ||\n requestParameters.agreementDocument === undefined\n ) {\n throw new runtime.RequiredError(\n 'agreementDocument',\n 'Required parameter requestParameters.agreementDocument was null or undefined when calling vendorsIdAgreementsUploadPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.agreementName !== undefined) {\n formParams.append(\n 'agreement[name]',\n requestParameters.agreementName as any\n );\n }\n\n if (requestParameters.agreementDocument !== undefined) {\n formParams.append(\n 'agreement[document]',\n requestParameters.agreementDocument as any\n );\n }\n\n if (requestParameters.agreementDescription !== undefined) {\n formParams.append(\n 'agreement[description]',\n requestParameters.agreementDescription as any\n );\n }\n\n const response = await this.request({\n path: `/vendors/{id}/agreements/upload`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AgreementExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Upload agreement\n */\n async vendorsIdAgreementsUploadPost(\n requestParameters: VendorsIdAgreementsUploadPostRequest\n ): Promise {\n const response =\n await this.vendorsIdAgreementsUploadPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete answers\n */\n async vendorsIdAnswersDeleteRaw(\n requestParameters: VendorsIdAnswersDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdAnswersDelete.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsIdAnswersDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{id}/answers`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n body: AnswerDeletePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete answers\n */\n async vendorsIdAnswersDelete(\n requestParameters: VendorsIdAnswersDeleteRequest\n ): Promise {\n await this.vendorsIdAnswersDeleteRaw(requestParameters);\n }\n\n /**\n * Upsert completed answers to the server\n */\n async vendorsIdAnswersPostRaw(\n requestParameters: VendorsIdAnswersPostRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdAnswersPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{id}/answers`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: InlineObjectToJSON(requestParameters.answers),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AnswerFromJSON)\n );\n }\n\n /**\n * Upsert completed answers to the server\n */\n async vendorsIdAnswersPost(\n requestParameters: VendorsIdAnswersPostRequest\n ): Promise> {\n const response = await this.vendorsIdAnswersPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of all assessment responses for the given vendor\n */\n async vendorsIdAssessmentResponsesGetRaw(\n requestParameters: VendorsIdAssessmentResponsesGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdAssessmentResponsesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/assessment_responses`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AssessmentResponseFromJSON)\n );\n }\n\n /**\n * Get the list of all assessment responses for the given vendor\n */\n async vendorsIdAssessmentResponsesGet(\n requestParameters: VendorsIdAssessmentResponsesGetRequest\n ): Promise> {\n const response =\n await this.vendorsIdAssessmentResponsesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of all available assessments for the given vendor\n */\n async vendorsIdAssessmentsGetRaw(\n requestParameters: VendorsIdAssessmentsGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdAssessmentsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/assessments`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AssessmentFromJSON)\n );\n }\n\n /**\n * Get the list of all available assessments for the given vendor\n */\n async vendorsIdAssessmentsGet(\n requestParameters: VendorsIdAssessmentsGetRequest\n ): Promise> {\n const response = await this.vendorsIdAssessmentsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create an assessment from a template\n */\n async vendorsIdAssessmentsPostRaw(\n requestParameters: VendorsIdAssessmentsPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdAssessmentsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsIdAssessmentsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{id}/assessments`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AssessmentCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssessmentFromJSON(jsonValue)\n );\n }\n\n /**\n * Create an assessment from a template\n */\n async vendorsIdAssessmentsPost(\n requestParameters: VendorsIdAssessmentsPostRequest\n ): Promise {\n const response = await this.vendorsIdAssessmentsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor checklist templates\n */\n async vendorsIdChecklistTemplatesGetRaw(\n requestParameters: VendorsIdChecklistTemplatesGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdChecklistTemplatesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/checklist_templates`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(ChecklistTemplateFromJSON)\n );\n }\n\n /**\n * Get vendor checklist templates\n */\n async vendorsIdChecklistTemplatesGet(\n requestParameters: VendorsIdChecklistTemplatesGetRequest\n ): Promise> {\n const response =\n await this.vendorsIdChecklistTemplatesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor checklist templates\n */\n async vendorsIdChecklistTemplatesPostRaw(\n requestParameters: VendorsIdChecklistTemplatesPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdChecklistTemplatesPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsIdChecklistTemplatesPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{id}/checklist_templates`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ChecklistTemplateCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ChecklistTemplateExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor checklist templates\n */\n async vendorsIdChecklistTemplatesPost(\n requestParameters: VendorsIdChecklistTemplatesPostRequest\n ): Promise {\n const response =\n await this.vendorsIdChecklistTemplatesPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor checklists\n */\n async vendorsIdChecklistsGetRaw(\n requestParameters: VendorsIdChecklistsGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdChecklistsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/checklists`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(ChecklistExtendedFromJSON)\n );\n }\n\n /**\n * Get vendor checklists\n */\n async vendorsIdChecklistsGet(\n requestParameters: VendorsIdChecklistsGetRequest\n ): Promise> {\n const response = await this.vendorsIdChecklistsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor checklists\n */\n async vendorsIdChecklistsPostRaw(\n requestParameters: VendorsIdChecklistsPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdChecklistsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsIdChecklistsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{id}/checklists`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ChecklistCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ChecklistExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor checklists\n */\n async vendorsIdChecklistsPost(\n requestParameters: VendorsIdChecklistsPostRequest\n ): Promise {\n const response = await this.vendorsIdChecklistsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get dashboard widgets\n */\n async vendorsIdDashboardSummaryGetRaw(\n requestParameters: VendorsIdDashboardSummaryGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdDashboardSummaryGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/dashboard/summary`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n DashboardSummaryFromJSON(jsonValue)\n );\n }\n\n /**\n * Get dashboard widgets\n */\n async vendorsIdDashboardSummaryGet(\n requestParameters: VendorsIdDashboardSummaryGetRequest\n ): Promise {\n const response =\n await this.vendorsIdDashboardSummaryGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get escrow accounts\n */\n async vendorsIdEscrowAccountsGetRaw(\n requestParameters: VendorsIdEscrowAccountsGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdEscrowAccountsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/escrow_accounts`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(EscrowAccountFromJSON)\n );\n }\n\n /**\n * Get escrow accounts\n */\n async vendorsIdEscrowAccountsGet(\n requestParameters: VendorsIdEscrowAccountsGetRequest\n ): Promise> {\n const response =\n await this.vendorsIdEscrowAccountsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor frameworks\n */\n async vendorsIdFrameworksGetRaw(\n requestParameters: VendorsIdFrameworksGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdFrameworksGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.includeStats !== undefined) {\n queryParameters['include_stats'] = requestParameters.includeStats;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/frameworks`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(FrameworkModelFromJSON)\n );\n }\n\n /**\n * Get vendor frameworks\n */\n async vendorsIdFrameworksGet(\n requestParameters: VendorsIdFrameworksGetRequest\n ): Promise> {\n const response = await this.vendorsIdFrameworksGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the details for a particular vendor\n */\n async vendorsIdGetRaw(\n requestParameters: VendorsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorDetailsFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the details for a particular vendor\n */\n async vendorsIdGet(\n requestParameters: VendorsIdGetRequest\n ): Promise {\n const response = await this.vendorsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get a list of all invoices for a given vendor\n */\n async vendorsIdInvoicesGetRaw(\n requestParameters: VendorsIdInvoicesGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdInvoicesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/invoices`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(InvoiceFromJSON)\n );\n }\n\n /**\n * Get a list of all invoices for a given vendor\n */\n async vendorsIdInvoicesGet(\n requestParameters: VendorsIdInvoicesGetRequest\n ): Promise> {\n const response = await this.vendorsIdInvoicesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor logo urls\n */\n async vendorsIdLogoGetRaw(\n requestParameters: VendorsIdLogoGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdLogoGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/logo`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ImageFromJSON(jsonValue)\n );\n }\n\n /**\n * Get vendor logo urls\n */\n async vendorsIdLogoGet(\n requestParameters: VendorsIdLogoGetRequest\n ): Promise {\n const response = await this.vendorsIdLogoGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update vendor logo\n */\n async vendorsIdLogoPatchRaw(\n requestParameters: VendorsIdLogoPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdLogoPatch.'\n );\n }\n\n if (\n requestParameters.image === null ||\n requestParameters.image === undefined\n ) {\n throw new runtime.RequiredError(\n 'image',\n 'Required parameter requestParameters.image was null or undefined when calling vendorsIdLogoPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.image !== undefined) {\n formParams.append('image', requestParameters.image as any);\n }\n\n const response = await this.request({\n path: `/vendors/{id}/logo`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ImageFromJSON(jsonValue)\n );\n }\n\n /**\n * Update vendor logo\n */\n async vendorsIdLogoPatch(\n requestParameters: VendorsIdLogoPatchRequest\n ): Promise {\n const response = await this.vendorsIdLogoPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor org chart urls\n */\n async vendorsIdOrgChartGetRaw(\n requestParameters: VendorsIdOrgChartGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdOrgChartGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/org_chart`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ImageFromJSON(jsonValue)\n );\n }\n\n /**\n * Get vendor org chart urls\n */\n async vendorsIdOrgChartGet(\n requestParameters: VendorsIdOrgChartGetRequest\n ): Promise {\n const response = await this.vendorsIdOrgChartGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update vendor org chart\n */\n async vendorsIdOrgChartPatchRaw(\n requestParameters: VendorsIdOrgChartPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdOrgChartPatch.'\n );\n }\n\n if (\n requestParameters.image === null ||\n requestParameters.image === undefined\n ) {\n throw new runtime.RequiredError(\n 'image',\n 'Required parameter requestParameters.image was null or undefined when calling vendorsIdOrgChartPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.image !== undefined) {\n formParams.append('image', requestParameters.image as any);\n }\n\n const response = await this.request({\n path: `/vendors/{id}/org_chart`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ImageFromJSON(jsonValue)\n );\n }\n\n /**\n * Update vendor org chart\n */\n async vendorsIdOrgChartPatch(\n requestParameters: VendorsIdOrgChartPatchRequest\n ): Promise {\n const response = await this.vendorsIdOrgChartPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update the details for a particular vendor\n */\n async vendorsIdPatchRaw(\n requestParameters: VendorsIdPatchRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: VendorToJSON(requestParameters.vendor),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorDetailsFromJSON(jsonValue)\n );\n }\n\n /**\n * Update the details for a particular vendor\n */\n async vendorsIdPatch(\n requestParameters: VendorsIdPatchRequest\n ): Promise {\n const response = await this.vendorsIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of all policies with stats for one vendor\n */\n async vendorsIdPoliciesGetRaw(\n requestParameters: VendorsIdPoliciesGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdPoliciesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/policies`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(PolicyFromJSON)\n );\n }\n\n /**\n * Get the list of all policies with stats for one vendor\n */\n async vendorsIdPoliciesGet(\n requestParameters: VendorsIdPoliciesGetRequest\n ): Promise> {\n const response = await this.vendorsIdPoliciesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of products available for vendor\n */\n async vendorsIdProductsGetRaw(\n requestParameters: VendorsIdProductsGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdProductsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.queryProductType !== undefined) {\n queryParameters['query[product_type]'] =\n requestParameters.queryProductType;\n }\n\n if (requestParameters.queryShowUnavailable !== undefined) {\n queryParameters['query[show_unavailable]'] =\n requestParameters.queryShowUnavailable;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/products`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorProductIndexFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the list of products available for vendor\n */\n async vendorsIdProductsGet(\n requestParameters: VendorsIdProductsGetRequest\n ): Promise {\n const response = await this.vendorsIdProductsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete Shares\n */\n async vendorsIdSharesDeleteRaw(\n requestParameters: VendorsIdSharesDeleteRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdSharesDelete.'\n );\n }\n\n if (\n requestParameters.shareableType === null ||\n requestParameters.shareableType === undefined\n ) {\n throw new runtime.RequiredError(\n 'shareableType',\n 'Required parameter requestParameters.shareableType was null or undefined when calling vendorsIdSharesDelete.'\n );\n }\n\n if (\n requestParameters.shareableId === null ||\n requestParameters.shareableId === undefined\n ) {\n throw new runtime.RequiredError(\n 'shareableId',\n 'Required parameter requestParameters.shareableId was null or undefined when calling vendorsIdSharesDelete.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsIdSharesDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.shareableType !== undefined) {\n queryParameters['shareable[type]'] = requestParameters.shareableType;\n }\n\n if (requestParameters.shareableId !== undefined) {\n queryParameters['shareable[id]'] = requestParameters.shareableId;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{id}/shares`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n body: MultipleShareDeleteToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete Shares\n */\n async vendorsIdSharesDelete(\n requestParameters: VendorsIdSharesDeleteRequest\n ): Promise {\n await this.vendorsIdSharesDeleteRaw(requestParameters);\n }\n\n /**\n * Get the list all Vendor Users who can view Object\n */\n async vendorsIdSharesGetRaw(\n requestParameters: VendorsIdSharesGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdSharesGet.'\n );\n }\n\n if (\n requestParameters.shareableType === null ||\n requestParameters.shareableType === undefined\n ) {\n throw new runtime.RequiredError(\n 'shareableType',\n 'Required parameter requestParameters.shareableType was null or undefined when calling vendorsIdSharesGet.'\n );\n }\n\n if (\n requestParameters.shareableId === null ||\n requestParameters.shareableId === undefined\n ) {\n throw new runtime.RequiredError(\n 'shareableId',\n 'Required parameter requestParameters.shareableId was null or undefined when calling vendorsIdSharesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.shareableType !== undefined) {\n queryParameters['shareable[type]'] = requestParameters.shareableType;\n }\n\n if (requestParameters.shareableId !== undefined) {\n queryParameters['shareable[id]'] = requestParameters.shareableId;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/shares`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n SharesListFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the list all Vendor Users who can view Object\n */\n async vendorsIdSharesGet(\n requestParameters: VendorsIdSharesGetRequest\n ): Promise {\n const response = await this.vendorsIdSharesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create Shares\n */\n async vendorsIdSharesPostRaw(\n requestParameters: VendorsIdSharesPostRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdSharesPost.'\n );\n }\n\n if (\n requestParameters.shareableType === null ||\n requestParameters.shareableType === undefined\n ) {\n throw new runtime.RequiredError(\n 'shareableType',\n 'Required parameter requestParameters.shareableType was null or undefined when calling vendorsIdSharesPost.'\n );\n }\n\n if (\n requestParameters.shareableId === null ||\n requestParameters.shareableId === undefined\n ) {\n throw new runtime.RequiredError(\n 'shareableId',\n 'Required parameter requestParameters.shareableId was null or undefined when calling vendorsIdSharesPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsIdSharesPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.shareableType !== undefined) {\n queryParameters['shareable[type]'] = requestParameters.shareableType;\n }\n\n if (requestParameters.shareableId !== undefined) {\n queryParameters['shareable[id]'] = requestParameters.shareableId;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{id}/shares`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: MultipleShareToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(ShareReceiverFromJSON)\n );\n }\n\n /**\n * Create Shares\n */\n async vendorsIdSharesPost(\n requestParameters: VendorsIdSharesPostRequest\n ): Promise> {\n const response = await this.vendorsIdSharesPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get a list of Suggestion Vendor Users\n */\n async vendorsIdSharesSuggestionsGetRaw(\n requestParameters: VendorsIdSharesSuggestionsGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdSharesSuggestionsGet.'\n );\n }\n\n if (\n requestParameters.shareableType === null ||\n requestParameters.shareableType === undefined\n ) {\n throw new runtime.RequiredError(\n 'shareableType',\n 'Required parameter requestParameters.shareableType was null or undefined when calling vendorsIdSharesSuggestionsGet.'\n );\n }\n\n if (\n requestParameters.shareableId === null ||\n requestParameters.shareableId === undefined\n ) {\n throw new runtime.RequiredError(\n 'shareableId',\n 'Required parameter requestParameters.shareableId was null or undefined when calling vendorsIdSharesSuggestionsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.shareableType !== undefined) {\n queryParameters['shareable[type]'] = requestParameters.shareableType;\n }\n\n if (requestParameters.shareableId !== undefined) {\n queryParameters['shareable[id]'] = requestParameters.shareableId;\n }\n\n if (requestParameters.perPage !== undefined) {\n queryParameters['per_page'] = requestParameters.perPage;\n }\n\n if (requestParameters.textSearch !== undefined) {\n queryParameters['text_search'] = requestParameters.textSearch;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/shares/suggestions`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ShareSuggestionListFromJSON(jsonValue)\n );\n }\n\n /**\n * Get a list of Suggestion Vendor Users\n */\n async vendorsIdSharesSuggestionsGet(\n requestParameters: VendorsIdSharesSuggestionsGetRequest\n ): Promise {\n const response =\n await this.vendorsIdSharesSuggestionsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get a table of data for a particular vendor\n */\n async vendorsIdTablesGetRaw(\n requestParameters: VendorsIdTablesGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdTablesGet.'\n );\n }\n\n if (\n requestParameters.type === null ||\n requestParameters.type === undefined\n ) {\n throw new runtime.RequiredError(\n 'type',\n 'Required parameter requestParameters.type was null or undefined when calling vendorsIdTablesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.type !== undefined) {\n queryParameters['type'] = requestParameters.type;\n }\n\n if (requestParameters.statuses) {\n queryParameters['statuses[]'] = requestParameters.statuses;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/tables`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TableFromJSON(jsonValue)\n );\n }\n\n /**\n * Get a table of data for a particular vendor\n */\n async vendorsIdTablesGet(\n requestParameters: VendorsIdTablesGetRequest\n ): Promise
{\n const response = await this.vendorsIdTablesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor and his descendants\n */\n async vendorsIdTreeGetRaw(\n requestParameters: VendorsIdTreeGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdTreeGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/tree`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorTreeNodeModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get vendor and his descendants\n */\n async vendorsIdTreeGet(\n requestParameters: VendorsIdTreeGetRequest\n ): Promise {\n const response = await this.vendorsIdTreeGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of all documents for one vendor\n */\n async vendorsIdVendorDocumentsGetRaw(\n requestParameters: VendorsIdVendorDocumentsGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdVendorDocumentsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.queryDocumentType !== undefined) {\n queryParameters['query[document_type]'] =\n requestParameters.queryDocumentType;\n }\n\n if (requestParameters.queryShowHistory !== undefined) {\n queryParameters['query[show_history]'] =\n requestParameters.queryShowHistory;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/vendor_documents`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorDocumentFromJSON)\n );\n }\n\n /**\n * Get the list of all documents for one vendor\n */\n async vendorsIdVendorDocumentsGet(\n requestParameters: VendorsIdVendorDocumentsGetRequest\n ): Promise> {\n const response =\n await this.vendorsIdVendorDocumentsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of all policies for the current vendor\n */\n async vendorsIdVendorPoliciesGetRaw(\n requestParameters: VendorsIdVendorPoliciesGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdVendorPoliciesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/vendor_policies`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorPolicyDetailsFromJSON)\n );\n }\n\n /**\n * Get the list of all policies for the current vendor\n */\n async vendorsIdVendorPoliciesGet(\n requestParameters: VendorsIdVendorPoliciesGetRequest\n ): Promise> {\n const response =\n await this.vendorsIdVendorPoliciesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create a new vendor policy\n */\n async vendorsIdVendorPoliciesPostRaw(\n requestParameters: VendorsIdVendorPoliciesPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdVendorPoliciesPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{id}/vendor_policies`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: VendorPolicyToJSON(requestParameters.vendorPolicy),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorPolicyFromJSON(jsonValue)\n );\n }\n\n /**\n * Create a new vendor policy\n */\n async vendorsIdVendorPoliciesPost(\n requestParameters: VendorsIdVendorPoliciesPostRequest\n ): Promise {\n const response =\n await this.vendorsIdVendorPoliciesPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of all teams for one vendor\n */\n async vendorsIdVendorTeamsGetRaw(\n requestParameters: VendorsIdVendorTeamsGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdVendorTeamsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.query !== undefined) {\n queryParameters['query'] = requestParameters.query;\n }\n\n if (requestParameters.viewExtended !== undefined) {\n queryParameters['view[extended]'] = requestParameters.viewExtended;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/vendor_teams`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorTeamModelFromJSON)\n );\n }\n\n /**\n * Get the list of all teams for one vendor\n */\n async vendorsIdVendorTeamsGet(\n requestParameters: VendorsIdVendorTeamsGetRequest\n ): Promise> {\n const response = await this.vendorsIdVendorTeamsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Upsert vendor teams\n */\n async vendorsIdVendorTeamsPostRaw(\n requestParameters: VendorsIdVendorTeamsPostRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdVendorTeamsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{id}/vendor_teams`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: VendorTeamUpsertPayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorTeamModelFromJSON)\n );\n }\n\n /**\n * Upsert vendor teams\n */\n async vendorsIdVendorTeamsPost(\n requestParameters: VendorsIdVendorTeamsPostRequest\n ): Promise> {\n const response = await this.vendorsIdVendorTeamsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Fetch hubspot token\n */\n async vendorsIdVendorUsersChatWidgetLoginPostRaw(\n requestParameters: VendorsIdVendorUsersChatWidgetLoginPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdVendorUsersChatWidgetLoginPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/vendor_users/chat_widget_login`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ChatWidgetLoginFromJSON(jsonValue)\n );\n }\n\n /**\n * Fetch hubspot token\n */\n async vendorsIdVendorUsersChatWidgetLoginPost(\n requestParameters: VendorsIdVendorUsersChatWidgetLoginPostRequest\n ): Promise {\n const response =\n await this.vendorsIdVendorUsersChatWidgetLoginPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of all users for one vendor\n */\n async vendorsIdVendorUsersGetRaw(\n requestParameters: VendorsIdVendorUsersGetRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdVendorUsersGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.queryRoles) {\n queryParameters['query[roles][]'] = requestParameters.queryRoles;\n }\n\n if (requestParameters.queryUserTypes) {\n queryParameters['query[user_types][]'] = requestParameters.queryUserTypes;\n }\n\n if (requestParameters.queryEmploymentStatuses) {\n queryParameters['query[employment_statuses][]'] =\n requestParameters.queryEmploymentStatuses;\n }\n\n if (requestParameters.queryStatuses) {\n queryParameters['query[statuses][]'] = requestParameters.queryStatuses;\n }\n\n if (requestParameters.includeComplianceStats !== undefined) {\n queryParameters['include_compliance_stats'] =\n requestParameters.includeComplianceStats;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/vendor_users`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorUserFromJSON)\n );\n }\n\n /**\n * Get the list of all users for one vendor\n */\n async vendorsIdVendorUsersGet(\n requestParameters: VendorsIdVendorUsersGetRequest\n ): Promise> {\n const response = await this.vendorsIdVendorUsersGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor users\n */\n async vendorsIdVendorUsersPostRaw(\n requestParameters: VendorsIdVendorUsersPostRequest\n ): Promise>> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdVendorUsersPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{id}/vendor_users`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: VendorUserCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorUserFromJSON)\n );\n }\n\n /**\n * Create vendor users\n */\n async vendorsIdVendorUsersPost(\n requestParameters: VendorsIdVendorUsersPostRequest\n ): Promise> {\n const response = await this.vendorsIdVendorUsersPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create or find Trusthub vendor user and emulates his login\n */\n async vendorsIdVendorUsersTrusthubLoginPostRaw(\n requestParameters: VendorsIdVendorUsersTrusthubLoginPostRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling vendorsIdVendorUsersTrusthubLoginPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{id}/vendor_users/trusthub_login`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Create or find Trusthub vendor user and emulates his login\n */\n async vendorsIdVendorUsersTrusthubLoginPost(\n requestParameters: VendorsIdVendorUsersTrusthubLoginPostRequest\n ): Promise {\n await this.vendorsIdVendorUsersTrusthubLoginPostRaw(requestParameters);\n }\n\n /**\n * Create a new vendor\n */\n async vendorsPostRaw(\n requestParameters: VendorsPostRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: VendorsCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorDetailsFromJSON(jsonValue)\n );\n }\n\n /**\n * Create a new vendor\n */\n async vendorsPost(\n requestParameters: VendorsPostRequest\n ): Promise {\n const response = await this.vendorsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor assertion runs\n */\n async vendorsVendorIdAssertionRunsGetRaw(\n requestParameters: VendorsVendorIdAssertionRunsGetRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdAssertionRunsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.assertionId !== undefined) {\n queryParameters['assertion_id'] = requestParameters.assertionId;\n }\n\n if (requestParameters.assertionName !== undefined) {\n queryParameters['assertion_name'] = requestParameters.assertionName;\n }\n\n if (requestParameters.assertionCategoryIdentifier !== undefined) {\n queryParameters['assertion_category_identifier'] =\n requestParameters.assertionCategoryIdentifier;\n }\n\n if (requestParameters.assertionStatus !== undefined) {\n queryParameters['assertion_status'] = requestParameters.assertionStatus;\n }\n\n if (requestParameters.showManual !== undefined) {\n queryParameters['show_manual'] = requestParameters.showManual;\n }\n\n if (requestParameters.perPage !== undefined) {\n queryParameters['per_page'] = requestParameters.perPage;\n }\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/assertion_runs`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssertionRunListFromJSON(jsonValue)\n );\n }\n\n /**\n * Get vendor assertion runs\n */\n async vendorsVendorIdAssertionRunsGet(\n requestParameters: VendorsVendorIdAssertionRunsGetRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdAssertionRunsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor assertion\n */\n async vendorsVendorIdAssertionsPostRaw(\n requestParameters: VendorsVendorIdAssertionsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdAssertionsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdAssertionsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/assertions`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AssertionCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AssertionExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor assertion\n */\n async vendorsVendorIdAssertionsPost(\n requestParameters: VendorsVendorIdAssertionsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdAssertionsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the list of all available assessment_templates for the given vendor\n */\n async vendorsVendorIdAssessmentTemplatesGetRaw(\n requestParameters: VendorsVendorIdAssessmentTemplatesGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdAssessmentTemplatesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/assessment_templates`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AssessmentTemplateModelFromJSON)\n );\n }\n\n /**\n * Get the list of all available assessment_templates for the given vendor\n */\n async vendorsVendorIdAssessmentTemplatesGet(\n requestParameters: VendorsVendorIdAssessmentTemplatesGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdAssessmentTemplatesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor audits\n */\n async vendorsVendorIdAuditsGetRaw(\n requestParameters: VendorsVendorIdAuditsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdAuditsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/audits`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(AuditModelFromJSON)\n );\n }\n\n /**\n * Get vendor audits\n */\n async vendorsVendorIdAuditsGet(\n requestParameters: VendorsVendorIdAuditsGetRequest\n ): Promise> {\n const response = await this.vendorsVendorIdAuditsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor audit\n */\n async vendorsVendorIdAuditsPostRaw(\n requestParameters: VendorsVendorIdAuditsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdAuditsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdAuditsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/audits`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: AuditCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AuditExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor audit\n */\n async vendorsVendorIdAuditsPost(\n requestParameters: VendorsVendorIdAuditsPostRequest\n ): Promise {\n const response = await this.vendorsVendorIdAuditsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Upload meeting\n */\n async vendorsVendorIdAuditsUploadMeetingPostRaw(\n requestParameters: VendorsVendorIdAuditsUploadMeetingPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdAuditsUploadMeetingPost.'\n );\n }\n\n if (\n requestParameters.auditName === null ||\n requestParameters.auditName === undefined\n ) {\n throw new runtime.RequiredError(\n 'auditName',\n 'Required parameter requestParameters.auditName was null or undefined when calling vendorsVendorIdAuditsUploadMeetingPost.'\n );\n }\n\n if (\n requestParameters.auditOwnerId === null ||\n requestParameters.auditOwnerId === undefined\n ) {\n throw new runtime.RequiredError(\n 'auditOwnerId',\n 'Required parameter requestParameters.auditOwnerId was null or undefined when calling vendorsVendorIdAuditsUploadMeetingPost.'\n );\n }\n\n if (\n requestParameters.auditFile === null ||\n requestParameters.auditFile === undefined\n ) {\n throw new runtime.RequiredError(\n 'auditFile',\n 'Required parameter requestParameters.auditFile was null or undefined when calling vendorsVendorIdAuditsUploadMeetingPost.'\n );\n }\n\n if (\n requestParameters.auditStartedAt === null ||\n requestParameters.auditStartedAt === undefined\n ) {\n throw new runtime.RequiredError(\n 'auditStartedAt',\n 'Required parameter requestParameters.auditStartedAt was null or undefined when calling vendorsVendorIdAuditsUploadMeetingPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.auditName !== undefined) {\n formParams.append('audit[name]', requestParameters.auditName as any);\n }\n\n if (requestParameters.auditOwnerId !== undefined) {\n formParams.append(\n 'audit[owner_id]',\n requestParameters.auditOwnerId as any\n );\n }\n\n if (requestParameters.auditFile !== undefined) {\n formParams.append('audit[file]', requestParameters.auditFile as any);\n }\n\n if (requestParameters.auditStartedAt !== undefined) {\n formParams.append(\n 'audit[started_at]',\n requestParameters.auditStartedAt as any\n );\n }\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/audits/upload_meeting`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AuditModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Upload meeting\n */\n async vendorsVendorIdAuditsUploadMeetingPost(\n requestParameters: VendorsVendorIdAuditsUploadMeetingPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdAuditsUploadMeetingPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Upload vendor audit\n */\n async vendorsVendorIdAuditsUploadPostRaw(\n requestParameters: VendorsVendorIdAuditsUploadPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdAuditsUploadPost.'\n );\n }\n\n if (\n requestParameters.auditName === null ||\n requestParameters.auditName === undefined\n ) {\n throw new runtime.RequiredError(\n 'auditName',\n 'Required parameter requestParameters.auditName was null or undefined when calling vendorsVendorIdAuditsUploadPost.'\n );\n }\n\n if (\n requestParameters.auditOrigin === null ||\n requestParameters.auditOrigin === undefined\n ) {\n throw new runtime.RequiredError(\n 'auditOrigin',\n 'Required parameter requestParameters.auditOrigin was null or undefined when calling vendorsVendorIdAuditsUploadPost.'\n );\n }\n\n if (\n requestParameters.auditOwnerId === null ||\n requestParameters.auditOwnerId === undefined\n ) {\n throw new runtime.RequiredError(\n 'auditOwnerId',\n 'Required parameter requestParameters.auditOwnerId was null or undefined when calling vendorsVendorIdAuditsUploadPost.'\n );\n }\n\n if (\n requestParameters.auditFile === null ||\n requestParameters.auditFile === undefined\n ) {\n throw new runtime.RequiredError(\n 'auditFile',\n 'Required parameter requestParameters.auditFile was null or undefined when calling vendorsVendorIdAuditsUploadPost.'\n );\n }\n\n if (\n requestParameters.auditStartedAt === null ||\n requestParameters.auditStartedAt === undefined\n ) {\n throw new runtime.RequiredError(\n 'auditStartedAt',\n 'Required parameter requestParameters.auditStartedAt was null or undefined when calling vendorsVendorIdAuditsUploadPost.'\n );\n }\n\n if (\n requestParameters.auditCompletedAt === null ||\n requestParameters.auditCompletedAt === undefined\n ) {\n throw new runtime.RequiredError(\n 'auditCompletedAt',\n 'Required parameter requestParameters.auditCompletedAt was null or undefined when calling vendorsVendorIdAuditsUploadPost.'\n );\n }\n\n if (\n requestParameters.auditRating === null ||\n requestParameters.auditRating === undefined\n ) {\n throw new runtime.RequiredError(\n 'auditRating',\n 'Required parameter requestParameters.auditRating was null or undefined when calling vendorsVendorIdAuditsUploadPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.auditName !== undefined) {\n formParams.append('audit[name]', requestParameters.auditName as any);\n }\n\n if (requestParameters.auditOrigin !== undefined) {\n formParams.append('audit[origin]', requestParameters.auditOrigin as any);\n }\n\n if (requestParameters.auditOwnerId !== undefined) {\n formParams.append(\n 'audit[owner_id]',\n requestParameters.auditOwnerId as any\n );\n }\n\n if (requestParameters.auditFile !== undefined) {\n formParams.append('audit[file]', requestParameters.auditFile as any);\n }\n\n if (requestParameters.auditStartedAt !== undefined) {\n formParams.append(\n 'audit[started_at]',\n requestParameters.auditStartedAt as any\n );\n }\n\n if (requestParameters.auditCompletedAt !== undefined) {\n formParams.append(\n 'audit[completed_at]',\n requestParameters.auditCompletedAt as any\n );\n }\n\n if (requestParameters.auditRating !== undefined) {\n formParams.append('audit[rating]', requestParameters.auditRating as any);\n }\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/audits/upload`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n AuditModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Upload vendor audit\n */\n async vendorsVendorIdAuditsUploadPost(\n requestParameters: VendorsVendorIdAuditsUploadPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdAuditsUploadPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get business functions\n */\n async vendorsVendorIdBusinessFunctionsGetRaw(\n requestParameters: VendorsVendorIdBusinessFunctionsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdBusinessFunctionsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/business_functions`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(BusinessFunctionModelFromJSON)\n );\n }\n\n /**\n * Get business functions\n */\n async vendorsVendorIdBusinessFunctionsGet(\n requestParameters: VendorsVendorIdBusinessFunctionsGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdBusinessFunctionsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create business function\n */\n async vendorsVendorIdBusinessFunctionsPostRaw(\n requestParameters: VendorsVendorIdBusinessFunctionsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdBusinessFunctionsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdBusinessFunctionsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/business_functions`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: BusinessFunctionCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n BusinessFunctionModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Create business function\n */\n async vendorsVendorIdBusinessFunctionsPost(\n requestParameters: VendorsVendorIdBusinessFunctionsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdBusinessFunctionsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor calendar items\n */\n async vendorsVendorIdCalendarGetRaw(\n requestParameters: VendorsVendorIdCalendarGetRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdCalendarGet.'\n );\n }\n\n if (\n requestParameters.startDate === null ||\n requestParameters.startDate === undefined\n ) {\n throw new runtime.RequiredError(\n 'startDate',\n 'Required parameter requestParameters.startDate was null or undefined when calling vendorsVendorIdCalendarGet.'\n );\n }\n\n if (\n requestParameters.endDate === null ||\n requestParameters.endDate === undefined\n ) {\n throw new runtime.RequiredError(\n 'endDate',\n 'Required parameter requestParameters.endDate was null or undefined when calling vendorsVendorIdCalendarGet.'\n );\n }\n\n if (\n requestParameters.viewMode === null ||\n requestParameters.viewMode === undefined\n ) {\n throw new runtime.RequiredError(\n 'viewMode',\n 'Required parameter requestParameters.viewMode was null or undefined when calling vendorsVendorIdCalendarGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.startDate !== undefined) {\n queryParameters['start_date'] = requestParameters.startDate;\n }\n\n if (requestParameters.endDate !== undefined) {\n queryParameters['end_date'] = requestParameters.endDate;\n }\n\n if (requestParameters.statuses) {\n queryParameters['statuses[]'] = requestParameters.statuses;\n }\n\n if (requestParameters.viewMode !== undefined) {\n queryParameters['view_mode'] = requestParameters.viewMode;\n }\n\n if (requestParameters.ownerIds) {\n queryParameters['owner_ids[]'] = requestParameters.ownerIds;\n }\n\n if (requestParameters.textSearch !== undefined) {\n queryParameters['text_search'] = requestParameters.textSearch;\n }\n\n if (requestParameters.perPage !== undefined) {\n queryParameters['per_page'] = requestParameters.perPage;\n }\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/calendar`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n CalendarItemListFromJSON(jsonValue)\n );\n }\n\n /**\n * Get vendor calendar items\n */\n async vendorsVendorIdCalendarGet(\n requestParameters: VendorsVendorIdCalendarGetRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdCalendarGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor certificates\n */\n async vendorsVendorIdCertificatesGetRaw(\n requestParameters: VendorsVendorIdCertificatesGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdCertificatesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/certificates`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(CertificateModelFromJSON)\n );\n }\n\n /**\n * Get vendor certificates\n */\n async vendorsVendorIdCertificatesGet(\n requestParameters: VendorsVendorIdCertificatesGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdCertificatesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create certificate\n */\n async vendorsVendorIdCertificatesPostRaw(\n requestParameters: VendorsVendorIdCertificatesPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdCertificatesPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.attachment !== undefined) {\n formParams.append('attachment', requestParameters.attachment as any);\n }\n\n if (requestParameters.certificateType !== undefined) {\n formParams.append(\n 'certificate_type',\n requestParameters.certificateType as any\n );\n }\n\n if (requestParameters.expireAt !== undefined) {\n formParams.append('expire_at', requestParameters.expireAt as any);\n }\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/certificates`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n CertificateModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Create certificate\n */\n async vendorsVendorIdCertificatesPost(\n requestParameters: VendorsVendorIdCertificatesPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdCertificatesPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor control categories\n */\n async vendorsVendorIdControlCategoriesGetRaw(\n requestParameters: VendorsVendorIdControlCategoriesGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdControlCategoriesGet.'\n );\n }\n\n if (\n requestParameters.frameworkId === null ||\n requestParameters.frameworkId === undefined\n ) {\n throw new runtime.RequiredError(\n 'frameworkId',\n 'Required parameter requestParameters.frameworkId was null or undefined when calling vendorsVendorIdControlCategoriesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.frameworkId !== undefined) {\n queryParameters['framework_id'] = requestParameters.frameworkId;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/control_categories`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(ControlCategoryExtendedFromJSON)\n );\n }\n\n /**\n * Get vendor control categories\n */\n async vendorsVendorIdControlCategoriesGet(\n requestParameters: VendorsVendorIdControlCategoriesGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdControlCategoriesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor controls\n */\n async vendorsVendorIdControlsGetRaw(\n requestParameters: VendorsVendorIdControlsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdControlsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.frameworkId !== undefined) {\n queryParameters['framework_id'] = requestParameters.frameworkId;\n }\n\n if (requestParameters.queryApplicable !== undefined) {\n queryParameters['query[applicable]'] = requestParameters.queryApplicable;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/controls`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(ControlModelFromJSON)\n );\n }\n\n /**\n * Get vendor controls\n */\n async vendorsVendorIdControlsGet(\n requestParameters: VendorsVendorIdControlsGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdControlsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor control\n */\n async vendorsVendorIdControlsPostRaw(\n requestParameters: VendorsVendorIdControlsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdControlsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdControlsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/controls`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ControlCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ControlExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor control\n */\n async vendorsVendorIdControlsPost(\n requestParameters: VendorsVendorIdControlsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdControlsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create corrective action\n */\n async vendorsVendorIdCorrectiveActionsPostRaw(\n requestParameters: VendorsVendorIdCorrectiveActionsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdCorrectiveActionsPost.'\n );\n }\n\n if (\n requestParameters.correctiveActionName === null ||\n requestParameters.correctiveActionName === undefined\n ) {\n throw new runtime.RequiredError(\n 'correctiveActionName',\n 'Required parameter requestParameters.correctiveActionName was null or undefined when calling vendorsVendorIdCorrectiveActionsPost.'\n );\n }\n\n if (\n requestParameters.correctiveActionDescription === null ||\n requestParameters.correctiveActionDescription === undefined\n ) {\n throw new runtime.RequiredError(\n 'correctiveActionDescription',\n 'Required parameter requestParameters.correctiveActionDescription was null or undefined when calling vendorsVendorIdCorrectiveActionsPost.'\n );\n }\n\n if (\n requestParameters.correctiveActionDateIdentified === null ||\n requestParameters.correctiveActionDateIdentified === undefined\n ) {\n throw new runtime.RequiredError(\n 'correctiveActionDateIdentified',\n 'Required parameter requestParameters.correctiveActionDateIdentified was null or undefined when calling vendorsVendorIdCorrectiveActionsPost.'\n );\n }\n\n if (\n requestParameters.correctiveActionRaisedBy === null ||\n requestParameters.correctiveActionRaisedBy === undefined\n ) {\n throw new runtime.RequiredError(\n 'correctiveActionRaisedBy',\n 'Required parameter requestParameters.correctiveActionRaisedBy was null or undefined when calling vendorsVendorIdCorrectiveActionsPost.'\n );\n }\n\n if (\n requestParameters.correctiveActionRootCause === null ||\n requestParameters.correctiveActionRootCause === undefined\n ) {\n throw new runtime.RequiredError(\n 'correctiveActionRootCause',\n 'Required parameter requestParameters.correctiveActionRootCause was null or undefined when calling vendorsVendorIdCorrectiveActionsPost.'\n );\n }\n\n if (\n requestParameters.correctiveActionActionType === null ||\n requestParameters.correctiveActionActionType === undefined\n ) {\n throw new runtime.RequiredError(\n 'correctiveActionActionType',\n 'Required parameter requestParameters.correctiveActionActionType was null or undefined when calling vendorsVendorIdCorrectiveActionsPost.'\n );\n }\n\n if (\n requestParameters.correctiveActionCorrectiveActions === null ||\n requestParameters.correctiveActionCorrectiveActions === undefined\n ) {\n throw new runtime.RequiredError(\n 'correctiveActionCorrectiveActions',\n 'Required parameter requestParameters.correctiveActionCorrectiveActions was null or undefined when calling vendorsVendorIdCorrectiveActionsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.correctiveActionName !== undefined) {\n formParams.append(\n 'corrective_action[name]',\n requestParameters.correctiveActionName as any\n );\n }\n\n if (requestParameters.correctiveActionDescription !== undefined) {\n formParams.append(\n 'corrective_action[description]',\n requestParameters.correctiveActionDescription as any\n );\n }\n\n if (requestParameters.correctiveActionIdentifier !== undefined) {\n formParams.append(\n 'corrective_action[identifier]',\n requestParameters.correctiveActionIdentifier as any\n );\n }\n\n if (requestParameters.correctiveActionDateIdentified !== undefined) {\n formParams.append(\n 'corrective_action[date_identified]',\n requestParameters.correctiveActionDateIdentified as any\n );\n }\n\n if (requestParameters.correctiveActionRaisedBy !== undefined) {\n formParams.append(\n 'corrective_action[raised_by]',\n requestParameters.correctiveActionRaisedBy as any\n );\n }\n\n if (requestParameters.correctiveActionRootCause !== undefined) {\n formParams.append(\n 'corrective_action[root_cause]',\n requestParameters.correctiveActionRootCause as any\n );\n }\n\n if (requestParameters.correctiveActionOwnerId !== undefined) {\n formParams.append(\n 'corrective_action[owner_id]',\n requestParameters.correctiveActionOwnerId as any\n );\n }\n\n if (requestParameters.correctiveActionUrl !== undefined) {\n formParams.append(\n 'corrective_action[url]',\n requestParameters.correctiveActionUrl as any\n );\n }\n\n if (requestParameters.correctiveActionAttachments) {\n formParams.append(\n 'corrective_action[attachments]',\n requestParameters.correctiveActionAttachments.join(\n runtime.COLLECTION_FORMATS['csv']\n )\n );\n }\n\n if (requestParameters.correctiveActionActionType !== undefined) {\n formParams.append(\n 'corrective_action[action_type]',\n requestParameters.correctiveActionActionType as any\n );\n }\n\n if (requestParameters.correctiveActionCorrectiveActions !== undefined) {\n formParams.append(\n 'corrective_action[corrective_actions]',\n requestParameters.correctiveActionCorrectiveActions as any\n );\n }\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/corrective_actions`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n CorrectiveActionExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create corrective action\n */\n async vendorsVendorIdCorrectiveActionsPost(\n requestParameters: VendorsVendorIdCorrectiveActionsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdCorrectiveActionsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete Data Room entities\n */\n async vendorsVendorIdDataRoomEntitiesDeleteRaw(\n requestParameters: VendorsVendorIdDataRoomEntitiesDeleteRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdDataRoomEntitiesDelete.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdDataRoomEntitiesDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/data_room/entities`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n body: DataRoomEntityDeletePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete Data Room entities\n */\n async vendorsVendorIdDataRoomEntitiesDelete(\n requestParameters: VendorsVendorIdDataRoomEntitiesDeleteRequest\n ): Promise {\n await this.vendorsVendorIdDataRoomEntitiesDeleteRaw(requestParameters);\n }\n\n /**\n * Get Data Room entities accessible by current user\n */\n async vendorsVendorIdDataRoomEntitiesGetRaw(\n requestParameters: VendorsVendorIdDataRoomEntitiesGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdDataRoomEntitiesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/data_room/entities`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(DataRoomEntityModelFromJSON)\n );\n }\n\n /**\n * Get Data Room entities accessible by current user\n */\n async vendorsVendorIdDataRoomEntitiesGet(\n requestParameters: VendorsVendorIdDataRoomEntitiesGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdDataRoomEntitiesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Move Data Room entities\n */\n async vendorsVendorIdDataRoomEntitiesMovePatchRaw(\n requestParameters: VendorsVendorIdDataRoomEntitiesMovePatchRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdDataRoomEntitiesMovePatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdDataRoomEntitiesMovePatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/data_room/entities/move`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: DataRoomEntityMovePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(DataRoomEntityModelFromJSON)\n );\n }\n\n /**\n * Move Data Room entities\n */\n async vendorsVendorIdDataRoomEntitiesMovePatch(\n requestParameters: VendorsVendorIdDataRoomEntitiesMovePatchRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdDataRoomEntitiesMovePatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get Data Room entities using tree view\n */\n async vendorsVendorIdDataRoomEntitiesTreeGetRaw(\n requestParameters: VendorsVendorIdDataRoomEntitiesTreeGetRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdDataRoomEntitiesTreeGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.nodeId !== undefined) {\n queryParameters['node_id'] = requestParameters.nodeId;\n }\n\n if (requestParameters.depth !== undefined) {\n queryParameters['depth'] = requestParameters.depth;\n }\n\n if (requestParameters.type !== undefined) {\n queryParameters['type'] = requestParameters.type;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/data_room/entities/tree`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n DataRoomEntityModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get Data Room entities using tree view\n */\n async vendorsVendorIdDataRoomEntitiesTreeGet(\n requestParameters: VendorsVendorIdDataRoomEntitiesTreeGetRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdDataRoomEntitiesTreeGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get Data Room evidence accessible by current user\n */\n async vendorsVendorIdDataRoomEvidenceGetRaw(\n requestParameters: VendorsVendorIdDataRoomEvidenceGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdDataRoomEvidenceGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/data_room/evidence`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(DataRoomEntityModelFromJSON)\n );\n }\n\n /**\n * Get Data Room evidence accessible by current user\n */\n async vendorsVendorIdDataRoomEvidenceGet(\n requestParameters: VendorsVendorIdDataRoomEvidenceGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdDataRoomEvidenceGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create Data Room file\n */\n async vendorsVendorIdDataRoomFilesPostRaw(\n requestParameters: VendorsVendorIdDataRoomFilesPostRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdDataRoomFilesPost.'\n );\n }\n\n if (\n requestParameters.parentFolderId === null ||\n requestParameters.parentFolderId === undefined\n ) {\n throw new runtime.RequiredError(\n 'parentFolderId',\n 'Required parameter requestParameters.parentFolderId was null or undefined when calling vendorsVendorIdDataRoomFilesPost.'\n );\n }\n\n if (\n requestParameters.files0Attachment === null ||\n requestParameters.files0Attachment === undefined\n ) {\n throw new runtime.RequiredError(\n 'files0Attachment',\n 'Required parameter requestParameters.files0Attachment was null or undefined when calling vendorsVendorIdDataRoomFilesPost.'\n );\n }\n\n if (\n requestParameters.files0Filename === null ||\n requestParameters.files0Filename === undefined\n ) {\n throw new runtime.RequiredError(\n 'files0Filename',\n 'Required parameter requestParameters.files0Filename was null or undefined when calling vendorsVendorIdDataRoomFilesPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.parentFolderId !== undefined) {\n formParams.append(\n 'parent_folder_id',\n requestParameters.parentFolderId as any\n );\n }\n\n if (requestParameters.files0Attachment !== undefined) {\n formParams.append(\n 'files[[0][attachment]',\n requestParameters.files0Attachment as any\n );\n }\n\n if (requestParameters.files0Filename !== undefined) {\n formParams.append(\n 'files[[0][filename]',\n requestParameters.files0Filename as any\n );\n }\n\n if (requestParameters.files0Description !== undefined) {\n formParams.append(\n 'files[[0][description]',\n requestParameters.files0Description as any\n );\n }\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/data_room/files`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(DataRoomEntityModelFromJSON)\n );\n }\n\n /**\n * Create Data Room file\n */\n async vendorsVendorIdDataRoomFilesPost(\n requestParameters: VendorsVendorIdDataRoomFilesPostRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdDataRoomFilesPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create Data Room folder\n */\n async vendorsVendorIdDataRoomFoldersPostRaw(\n requestParameters: VendorsVendorIdDataRoomFoldersPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdDataRoomFoldersPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdDataRoomFoldersPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/data_room/folders`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: DataRoomEntityFolderCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n DataRoomEntityModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Create Data Room folder\n */\n async vendorsVendorIdDataRoomFoldersPost(\n requestParameters: VendorsVendorIdDataRoomFoldersPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdDataRoomFoldersPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create Incident Event\n */\n async vendorsVendorIdIncidentEventsPostRaw(\n requestParameters: VendorsVendorIdIncidentEventsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdIncidentEventsPost.'\n );\n }\n\n if (\n requestParameters.incidentEventName === null ||\n requestParameters.incidentEventName === undefined\n ) {\n throw new runtime.RequiredError(\n 'incidentEventName',\n 'Required parameter requestParameters.incidentEventName was null or undefined when calling vendorsVendorIdIncidentEventsPost.'\n );\n }\n\n if (\n requestParameters.incidentEventDescription === null ||\n requestParameters.incidentEventDescription === undefined\n ) {\n throw new runtime.RequiredError(\n 'incidentEventDescription',\n 'Required parameter requestParameters.incidentEventDescription was null or undefined when calling vendorsVendorIdIncidentEventsPost.'\n );\n }\n\n if (\n requestParameters.incidentEventDateIdentified === null ||\n requestParameters.incidentEventDateIdentified === undefined\n ) {\n throw new runtime.RequiredError(\n 'incidentEventDateIdentified',\n 'Required parameter requestParameters.incidentEventDateIdentified was null or undefined when calling vendorsVendorIdIncidentEventsPost.'\n );\n }\n\n if (\n requestParameters.incidentEventRaisedBy === null ||\n requestParameters.incidentEventRaisedBy === undefined\n ) {\n throw new runtime.RequiredError(\n 'incidentEventRaisedBy',\n 'Required parameter requestParameters.incidentEventRaisedBy was null or undefined when calling vendorsVendorIdIncidentEventsPost.'\n );\n }\n\n if (\n requestParameters.incidentEventRootCause === null ||\n requestParameters.incidentEventRootCause === undefined\n ) {\n throw new runtime.RequiredError(\n 'incidentEventRootCause',\n 'Required parameter requestParameters.incidentEventRootCause was null or undefined when calling vendorsVendorIdIncidentEventsPost.'\n );\n }\n\n if (\n requestParameters.incidentEventPreventativeActions === null ||\n requestParameters.incidentEventPreventativeActions === undefined\n ) {\n throw new runtime.RequiredError(\n 'incidentEventPreventativeActions',\n 'Required parameter requestParameters.incidentEventPreventativeActions was null or undefined when calling vendorsVendorIdIncidentEventsPost.'\n );\n }\n\n if (\n requestParameters.incidentEventActionsTaken === null ||\n requestParameters.incidentEventActionsTaken === undefined\n ) {\n throw new runtime.RequiredError(\n 'incidentEventActionsTaken',\n 'Required parameter requestParameters.incidentEventActionsTaken was null or undefined when calling vendorsVendorIdIncidentEventsPost.'\n );\n }\n\n if (\n requestParameters.incidentEventDataBreach === null ||\n requestParameters.incidentEventDataBreach === undefined\n ) {\n throw new runtime.RequiredError(\n 'incidentEventDataBreach',\n 'Required parameter requestParameters.incidentEventDataBreach was null or undefined when calling vendorsVendorIdIncidentEventsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.incidentEventName !== undefined) {\n formParams.append(\n 'incident_event[name]',\n requestParameters.incidentEventName as any\n );\n }\n\n if (requestParameters.incidentEventDescription !== undefined) {\n formParams.append(\n 'incident_event[description]',\n requestParameters.incidentEventDescription as any\n );\n }\n\n if (requestParameters.incidentEventIdentifier !== undefined) {\n formParams.append(\n 'incident_event[identifier]',\n requestParameters.incidentEventIdentifier as any\n );\n }\n\n if (requestParameters.incidentEventDateIdentified !== undefined) {\n formParams.append(\n 'incident_event[date_identified]',\n requestParameters.incidentEventDateIdentified as any\n );\n }\n\n if (requestParameters.incidentEventRaisedBy !== undefined) {\n formParams.append(\n 'incident_event[raised_by]',\n requestParameters.incidentEventRaisedBy as any\n );\n }\n\n if (requestParameters.incidentEventRootCause !== undefined) {\n formParams.append(\n 'incident_event[root_cause]',\n requestParameters.incidentEventRootCause as any\n );\n }\n\n if (requestParameters.incidentEventOwnerId !== undefined) {\n formParams.append(\n 'incident_event[owner_id]',\n requestParameters.incidentEventOwnerId as any\n );\n }\n\n if (requestParameters.incidentEventUrl !== undefined) {\n formParams.append(\n 'incident_event[url]',\n requestParameters.incidentEventUrl as any\n );\n }\n\n if (requestParameters.incidentEventAttachments) {\n formParams.append(\n 'incident_event[attachments]',\n requestParameters.incidentEventAttachments.join(\n runtime.COLLECTION_FORMATS['csv']\n )\n );\n }\n\n if (requestParameters.incidentEventPreventativeActions !== undefined) {\n formParams.append(\n 'incident_event[preventative_actions]',\n requestParameters.incidentEventPreventativeActions as any\n );\n }\n\n if (requestParameters.incidentEventActionsTaken !== undefined) {\n formParams.append(\n 'incident_event[actions_taken]',\n requestParameters.incidentEventActionsTaken as any\n );\n }\n\n if (requestParameters.incidentEventDataBreach !== undefined) {\n formParams.append(\n 'incident_event[data_breach]',\n requestParameters.incidentEventDataBreach as any\n );\n }\n\n if (requestParameters.incidentEventDataBreachDetails !== undefined) {\n formParams.append(\n 'incident_event[data_breach_details]',\n requestParameters.incidentEventDataBreachDetails as any\n );\n }\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/incident_events`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n IncidentEventExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create Incident Event\n */\n async vendorsVendorIdIncidentEventsPost(\n requestParameters: VendorsVendorIdIncidentEventsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdIncidentEventsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create item creation request\n */\n async vendorsVendorIdItemCreationRequestsPostRaw(\n requestParameters: VendorsVendorIdItemCreationRequestsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdItemCreationRequestsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdItemCreationRequestsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/item_creation_requests`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ItemCreationRequestCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Create item creation request\n */\n async vendorsVendorIdItemCreationRequestsPost(\n requestParameters: VendorsVendorIdItemCreationRequestsPostRequest\n ): Promise {\n await this.vendorsVendorIdItemCreationRequestsPostRaw(requestParameters);\n }\n\n /**\n * Get vendor Legal register\n */\n async vendorsVendorIdLegalRegisterGetRaw(\n requestParameters: VendorsVendorIdLegalRegisterGetRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdLegalRegisterGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/legal_register`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n LegalRegisterModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get vendor Legal register\n */\n async vendorsVendorIdLegalRegisterGet(\n requestParameters: VendorsVendorIdLegalRegisterGetRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdLegalRegisterGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update Legal register\n */\n async vendorsVendorIdLegalRegisterPatchRaw(\n requestParameters: VendorsVendorIdLegalRegisterPatchRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdLegalRegisterPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdLegalRegisterPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/legal_register`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: LegalRegisterUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n LegalRegisterModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Update Legal register\n */\n async vendorsVendorIdLegalRegisterPatch(\n requestParameters: VendorsVendorIdLegalRegisterPatchRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdLegalRegisterPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Add vendor legislations from templates\n */\n async vendorsVendorIdLegislationsAddPostRaw(\n requestParameters: VendorsVendorIdLegislationsAddPostRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdLegislationsAddPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdLegislationsAddPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/legislations/add`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: LegislationAddPayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(LegislationExtendedFromJSON)\n );\n }\n\n /**\n * Add vendor legislations from templates\n */\n async vendorsVendorIdLegislationsAddPost(\n requestParameters: VendorsVendorIdLegislationsAddPostRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdLegislationsAddPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor legislation\n */\n async vendorsVendorIdLegislationsGetRaw(\n requestParameters: VendorsVendorIdLegislationsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdLegislationsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/legislations`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(LegislationModelFromJSON)\n );\n }\n\n /**\n * Get vendor legislation\n */\n async vendorsVendorIdLegislationsGet(\n requestParameters: VendorsVendorIdLegislationsGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdLegislationsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor legislation\n */\n async vendorsVendorIdLegislationsPostRaw(\n requestParameters: VendorsVendorIdLegislationsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdLegislationsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdLegislationsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/legislations`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: LegislationCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n LegislationExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor legislation\n */\n async vendorsVendorIdLegislationsPost(\n requestParameters: VendorsVendorIdLegislationsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdLegislationsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor PESTEL items\n */\n async vendorsVendorIdPestelItemsGetRaw(\n requestParameters: VendorsVendorIdPestelItemsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdPestelItemsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/pestel_items`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(PestelItemModelFromJSON)\n );\n }\n\n /**\n * Get vendor PESTEL items\n */\n async vendorsVendorIdPestelItemsGet(\n requestParameters: VendorsVendorIdPestelItemsGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdPestelItemsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor PESTEL items\n */\n async vendorsVendorIdPestelItemsPostRaw(\n requestParameters: VendorsVendorIdPestelItemsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdPestelItemsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdPestelItemsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/pestel_items`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: PestelItemCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n PestelItemModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor PESTEL items\n */\n async vendorsVendorIdPestelItemsPost(\n requestParameters: VendorsVendorIdPestelItemsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdPestelItemsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor PESTEL register\n */\n async vendorsVendorIdPestelRegisterGetRaw(\n requestParameters: VendorsVendorIdPestelRegisterGetRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdPestelRegisterGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/pestel_register`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n PestelRegisterModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get vendor PESTEL register\n */\n async vendorsVendorIdPestelRegisterGet(\n requestParameters: VendorsVendorIdPestelRegisterGetRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdPestelRegisterGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update PESTEL register\n */\n async vendorsVendorIdPestelRegisterPatchRaw(\n requestParameters: VendorsVendorIdPestelRegisterPatchRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdPestelRegisterPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdPestelRegisterPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/pestel_register`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: PestelRegisterUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n PestelRegisterModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Update PESTEL register\n */\n async vendorsVendorIdPestelRegisterPatch(\n requestParameters: VendorsVendorIdPestelRegisterPatchRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdPestelRegisterPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor reports\n */\n async vendorsVendorIdReportsGetRaw(\n requestParameters: VendorsVendorIdReportsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdReportsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/reports`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(ReportModelFromJSON)\n );\n }\n\n /**\n * Get vendor reports\n */\n async vendorsVendorIdReportsGet(\n requestParameters: VendorsVendorIdReportsGetRequest\n ): Promise> {\n const response = await this.vendorsVendorIdReportsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor report\n */\n async vendorsVendorIdReportsPostRaw(\n requestParameters: VendorsVendorIdReportsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdReportsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdReportsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/reports`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ReportCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ReportModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor report\n */\n async vendorsVendorIdReportsPost(\n requestParameters: VendorsVendorIdReportsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdReportsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Upload vendor report\n */\n async vendorsVendorIdReportsUploadPostRaw(\n requestParameters: VendorsVendorIdReportsUploadPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdReportsUploadPost.'\n );\n }\n\n if (\n requestParameters.reportFile === null ||\n requestParameters.reportFile === undefined\n ) {\n throw new runtime.RequiredError(\n 'reportFile',\n 'Required parameter requestParameters.reportFile was null or undefined when calling vendorsVendorIdReportsUploadPost.'\n );\n }\n\n if (\n requestParameters.reportName === null ||\n requestParameters.reportName === undefined\n ) {\n throw new runtime.RequiredError(\n 'reportName',\n 'Required parameter requestParameters.reportName was null or undefined when calling vendorsVendorIdReportsUploadPost.'\n );\n }\n\n if (\n requestParameters.reportCompletedAt === null ||\n requestParameters.reportCompletedAt === undefined\n ) {\n throw new runtime.RequiredError(\n 'reportCompletedAt',\n 'Required parameter requestParameters.reportCompletedAt was null or undefined when calling vendorsVendorIdReportsUploadPost.'\n );\n }\n\n if (\n requestParameters.reportVersion === null ||\n requestParameters.reportVersion === undefined\n ) {\n throw new runtime.RequiredError(\n 'reportVersion',\n 'Required parameter requestParameters.reportVersion was null or undefined when calling vendorsVendorIdReportsUploadPost.'\n );\n }\n\n if (\n requestParameters.reportOwnerId === null ||\n requestParameters.reportOwnerId === undefined\n ) {\n throw new runtime.RequiredError(\n 'reportOwnerId',\n 'Required parameter requestParameters.reportOwnerId was null or undefined when calling vendorsVendorIdReportsUploadPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.reportFile !== undefined) {\n formParams.append('report[file]', requestParameters.reportFile as any);\n }\n\n if (requestParameters.reportName !== undefined) {\n formParams.append('report[name]', requestParameters.reportName as any);\n }\n\n if (requestParameters.reportCompletedAt !== undefined) {\n formParams.append(\n 'report[completed_at]',\n requestParameters.reportCompletedAt as any\n );\n }\n\n if (requestParameters.reportVersion !== undefined) {\n formParams.append(\n 'report[version]',\n requestParameters.reportVersion as any\n );\n }\n\n if (requestParameters.reportOwnerId !== undefined) {\n formParams.append(\n 'report[owner_id]',\n requestParameters.reportOwnerId as any\n );\n }\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/reports/upload`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ReportModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Upload vendor report\n */\n async vendorsVendorIdReportsUploadPost(\n requestParameters: VendorsVendorIdReportsUploadPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdReportsUploadPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * GET control review_history_items\n */\n async vendorsVendorIdReviewHistoryItemsGetRaw(\n requestParameters: VendorsVendorIdReviewHistoryItemsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdReviewHistoryItemsGet.'\n );\n }\n\n if (\n requestParameters.relatedToId === null ||\n requestParameters.relatedToId === undefined\n ) {\n throw new runtime.RequiredError(\n 'relatedToId',\n 'Required parameter requestParameters.relatedToId was null or undefined when calling vendorsVendorIdReviewHistoryItemsGet.'\n );\n }\n\n if (\n requestParameters.relatedToType === null ||\n requestParameters.relatedToType === undefined\n ) {\n throw new runtime.RequiredError(\n 'relatedToType',\n 'Required parameter requestParameters.relatedToType was null or undefined when calling vendorsVendorIdReviewHistoryItemsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.relatedToId !== undefined) {\n queryParameters['related_to_id'] = requestParameters.relatedToId;\n }\n\n if (requestParameters.relatedToType !== undefined) {\n queryParameters['related_to_type'] = requestParameters.relatedToType;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/review_history_items`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(ReviewHistoryItemModelFromJSON)\n );\n }\n\n /**\n * GET control review_history_items\n */\n async vendorsVendorIdReviewHistoryItemsGet(\n requestParameters: VendorsVendorIdReviewHistoryItemsGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdReviewHistoryItemsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create review history item\n */\n async vendorsVendorIdReviewHistoryItemsPostRaw(\n requestParameters: VendorsVendorIdReviewHistoryItemsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdReviewHistoryItemsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdReviewHistoryItemsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/review_history_items`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: ReviewHistoryItemCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n ReviewHistoryItemModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Create review history item\n */\n async vendorsVendorIdReviewHistoryItemsPost(\n requestParameters: VendorsVendorIdReviewHistoryItemsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdReviewHistoryItemsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor risk reports\n */\n async vendorsVendorIdRiskReportsGetRaw(\n requestParameters: VendorsVendorIdRiskReportsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdRiskReportsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/risk_reports`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(RiskReportModelFromJSON)\n );\n }\n\n /**\n * Get vendor risk reports\n */\n async vendorsVendorIdRiskReportsGet(\n requestParameters: VendorsVendorIdRiskReportsGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdRiskReportsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor risk report\n */\n async vendorsVendorIdRiskReportsPostRaw(\n requestParameters: VendorsVendorIdRiskReportsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdRiskReportsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdRiskReportsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/risk_reports`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: RiskReportCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n RiskReportModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor risk report\n */\n async vendorsVendorIdRiskReportsPost(\n requestParameters: VendorsVendorIdRiskReportsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdRiskReportsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor risks\n */\n async vendorsVendorIdRisksGetRaw(\n requestParameters: VendorsVendorIdRisksGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdRisksGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/risks`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(RiskModelFromJSON)\n );\n }\n\n /**\n * Get vendor risks\n */\n async vendorsVendorIdRisksGet(\n requestParameters: VendorsVendorIdRisksGetRequest\n ): Promise> {\n const response = await this.vendorsVendorIdRisksGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor risk\n */\n async vendorsVendorIdRisksPostRaw(\n requestParameters: VendorsVendorIdRisksPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdRisksPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdRisksPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/risks`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: RiskCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n RiskExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor risk\n */\n async vendorsVendorIdRisksPost(\n requestParameters: VendorsVendorIdRisksPostRequest\n ): Promise {\n const response = await this.vendorsVendorIdRisksPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get search result\n */\n async vendorsVendorIdSearchGetRaw(\n requestParameters: VendorsVendorIdSearchGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdSearchGet.'\n );\n }\n\n if (\n requestParameters.term === null ||\n requestParameters.term === undefined\n ) {\n throw new runtime.RequiredError(\n 'term',\n 'Required parameter requestParameters.term was null or undefined when calling vendorsVendorIdSearchGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.term !== undefined) {\n queryParameters['term'] = requestParameters.term;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/search`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(GlobalSearchItemFromJSON)\n );\n }\n\n /**\n * Get search result\n */\n async vendorsVendorIdSearchGet(\n requestParameters: VendorsVendorIdSearchGetRequest\n ): Promise> {\n const response = await this.vendorsVendorIdSearchGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor tasks\n */\n async vendorsVendorIdTasksGetRaw(\n requestParameters: VendorsVendorIdTasksGetRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdTasksGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.frameworkId !== undefined) {\n queryParameters['framework_id'] = requestParameters.frameworkId;\n }\n\n if (requestParameters.notUsedInFrameworksIds) {\n queryParameters['not_used_in_frameworks_ids[]'] =\n requestParameters.notUsedInFrameworksIds.join(\n runtime.COLLECTION_FORMATS['csv']\n );\n }\n\n if (requestParameters.applicable !== undefined) {\n queryParameters['applicable'] = requestParameters.applicable;\n }\n\n if (requestParameters.includeStats !== undefined) {\n queryParameters['include_stats'] = requestParameters.includeStats;\n }\n\n if (requestParameters.status) {\n queryParameters['status[]'] = requestParameters.status.join(\n runtime.COLLECTION_FORMATS['csv']\n );\n }\n\n if (requestParameters.name !== undefined) {\n queryParameters['name'] = requestParameters.name;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/tasks`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TaskListFromJSON(jsonValue)\n );\n }\n\n /**\n * Get vendor tasks\n */\n async vendorsVendorIdTasksGet(\n requestParameters: VendorsVendorIdTasksGetRequest\n ): Promise {\n const response = await this.vendorsVendorIdTasksGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor task\n */\n async vendorsVendorIdTasksPostRaw(\n requestParameters: VendorsVendorIdTasksPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdTasksPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdTasksPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/tasks`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: TaskCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TaskExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor task\n */\n async vendorsVendorIdTasksPost(\n requestParameters: VendorsVendorIdTasksPostRequest\n ): Promise {\n const response = await this.vendorsVendorIdTasksPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor actions\n */\n async vendorsVendorIdVendorActionsGetRaw(\n requestParameters: VendorsVendorIdVendorActionsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdVendorActionsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.referenceableId !== undefined) {\n queryParameters['referenceable_id'] = requestParameters.referenceableId;\n }\n\n if (requestParameters.referenceableType !== undefined) {\n queryParameters['referenceable_type'] =\n requestParameters.referenceableType;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/vendor_actions`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorActionModelFromJSON)\n );\n }\n\n /**\n * Get vendor actions\n */\n async vendorsVendorIdVendorActionsGet(\n requestParameters: VendorsVendorIdVendorActionsGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdVendorActionsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor action\n */\n async vendorsVendorIdVendorActionsPostRaw(\n requestParameters: VendorsVendorIdVendorActionsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdVendorActionsPost.'\n );\n }\n\n if (\n requestParameters.vendorActionName === null ||\n requestParameters.vendorActionName === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorActionName',\n 'Required parameter requestParameters.vendorActionName was null or undefined when calling vendorsVendorIdVendorActionsPost.'\n );\n }\n\n if (\n requestParameters.vendorActionOwnerId === null ||\n requestParameters.vendorActionOwnerId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorActionOwnerId',\n 'Required parameter requestParameters.vendorActionOwnerId was null or undefined when calling vendorsVendorIdVendorActionsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.vendorActionName !== undefined) {\n formParams.append(\n 'vendor_action[name]',\n requestParameters.vendorActionName as any\n );\n }\n\n if (requestParameters.vendorActionDescription !== undefined) {\n formParams.append(\n 'vendor_action[description]',\n requestParameters.vendorActionDescription as any\n );\n }\n\n if (requestParameters.vendorActionDueDate !== undefined) {\n formParams.append(\n 'vendor_action[due_date]',\n requestParameters.vendorActionDueDate as any\n );\n }\n\n if (requestParameters.vendorActionOwnerId !== undefined) {\n formParams.append(\n 'vendor_action[owner_id]',\n requestParameters.vendorActionOwnerId as any\n );\n }\n\n if (requestParameters.vendorActionUrl !== undefined) {\n formParams.append(\n 'vendor_action[url]',\n requestParameters.vendorActionUrl as any\n );\n }\n\n if (requestParameters.vendorActionActionType !== undefined) {\n formParams.append(\n 'vendor_action[action_type]',\n requestParameters.vendorActionActionType as any\n );\n }\n\n if (requestParameters.vendorActionAttachments) {\n formParams.append(\n 'vendor_action[attachments]',\n requestParameters.vendorActionAttachments.join(\n runtime.COLLECTION_FORMATS['csv']\n )\n );\n }\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/vendor_actions`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorActionExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor action\n */\n async vendorsVendorIdVendorActionsPost(\n requestParameters: VendorsVendorIdVendorActionsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdVendorActionsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the attestations for particular user or document\n */\n async vendorsVendorIdVendorDocumentAttestationsGetRaw(\n requestParameters: VendorsVendorIdVendorDocumentAttestationsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdVendorDocumentAttestationsGet.'\n );\n }\n\n if (\n requestParameters.targetId === null ||\n requestParameters.targetId === undefined\n ) {\n throw new runtime.RequiredError(\n 'targetId',\n 'Required parameter requestParameters.targetId was null or undefined when calling vendorsVendorIdVendorDocumentAttestationsGet.'\n );\n }\n\n if (\n requestParameters.targetType === null ||\n requestParameters.targetType === undefined\n ) {\n throw new runtime.RequiredError(\n 'targetType',\n 'Required parameter requestParameters.targetType was null or undefined when calling vendorsVendorIdVendorDocumentAttestationsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.targetId !== undefined) {\n queryParameters['target_id'] = requestParameters.targetId;\n }\n\n if (requestParameters.targetType !== undefined) {\n queryParameters['target_type'] = requestParameters.targetType;\n }\n\n if (requestParameters.includePossibleAttestations !== undefined) {\n queryParameters['include_possible_attestations'] =\n requestParameters.includePossibleAttestations;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/:vendor_id/vendor_document_attestations`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorDocumentAttestationFromJSON)\n );\n }\n\n /**\n * Get the attestations for particular user or document\n */\n async vendorsVendorIdVendorDocumentAttestationsGet(\n requestParameters: VendorsVendorIdVendorDocumentAttestationsGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdVendorDocumentAttestationsGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Create a new vendor document\n */\n async vendorsVendorIdVendorDocumentsPostRaw(\n requestParameters: VendorsVendorIdVendorDocumentsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdVendorDocumentsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.vendorDocumentDocument !== undefined) {\n formParams.append(\n 'vendor_document[document]',\n requestParameters.vendorDocumentDocument as any\n );\n }\n\n if (requestParameters.vendorDocumentName !== undefined) {\n formParams.append(\n 'vendor_document[name]',\n requestParameters.vendorDocumentName as any\n );\n }\n\n if (requestParameters.vendorDocumentDocumentType !== undefined) {\n formParams.append(\n 'vendor_document[document_type]',\n requestParameters.vendorDocumentDocumentType as any\n );\n }\n\n if (requestParameters.vendorDocumentDescription !== undefined) {\n formParams.append(\n 'vendor_document[description]',\n requestParameters.vendorDocumentDescription as any\n );\n }\n\n if (requestParameters.vendorDocumentPolicyCategoryId !== undefined) {\n formParams.append(\n 'vendor_document[policy_category_id]',\n requestParameters.vendorDocumentPolicyCategoryId as any\n );\n }\n\n if (requestParameters.vendorDocumentFileSizeInBytes !== undefined) {\n formParams.append(\n 'vendor_document[file_size_in_bytes]',\n requestParameters.vendorDocumentFileSizeInBytes as any\n );\n }\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/vendor_documents`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorDocumentExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create a new vendor document\n */\n async vendorsVendorIdVendorDocumentsPost(\n requestParameters: VendorsVendorIdVendorDocumentsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdVendorDocumentsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor events\n */\n async vendorsVendorIdVendorEventsGetRaw(\n requestParameters: VendorsVendorIdVendorEventsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdVendorEventsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/vendor_events`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorEventModelFromJSON)\n );\n }\n\n /**\n * Get vendor events\n */\n async vendorsVendorIdVendorEventsGet(\n requestParameters: VendorsVendorIdVendorEventsGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdVendorEventsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor event\n */\n async vendorsVendorIdVendorEventsPostRaw(\n requestParameters: VendorsVendorIdVendorEventsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdVendorEventsPost.'\n );\n }\n\n if (\n requestParameters.vendorEventName === null ||\n requestParameters.vendorEventName === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorEventName',\n 'Required parameter requestParameters.vendorEventName was null or undefined when calling vendorsVendorIdVendorEventsPost.'\n );\n }\n\n if (\n requestParameters.vendorEventDate === null ||\n requestParameters.vendorEventDate === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorEventDate',\n 'Required parameter requestParameters.vendorEventDate was null or undefined when calling vendorsVendorIdVendorEventsPost.'\n );\n }\n\n if (\n requestParameters.vendorEventEventType === null ||\n requestParameters.vendorEventEventType === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorEventEventType',\n 'Required parameter requestParameters.vendorEventEventType was null or undefined when calling vendorsVendorIdVendorEventsPost.'\n );\n }\n\n if (\n requestParameters.vendorEventOwnerId === null ||\n requestParameters.vendorEventOwnerId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorEventOwnerId',\n 'Required parameter requestParameters.vendorEventOwnerId was null or undefined when calling vendorsVendorIdVendorEventsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.vendorEventName !== undefined) {\n formParams.append(\n 'vendor_event[name]',\n requestParameters.vendorEventName as any\n );\n }\n\n if (requestParameters.vendorEventDescription !== undefined) {\n formParams.append(\n 'vendor_event[description]',\n requestParameters.vendorEventDescription as any\n );\n }\n\n if (requestParameters.vendorEventDate !== undefined) {\n formParams.append(\n 'vendor_event[date]',\n requestParameters.vendorEventDate as any\n );\n }\n\n if (requestParameters.vendorEventEventType !== undefined) {\n formParams.append(\n 'vendor_event[event_type]',\n requestParameters.vendorEventEventType as any\n );\n }\n\n if (requestParameters.vendorEventOwnerId !== undefined) {\n formParams.append(\n 'vendor_event[owner_id]',\n requestParameters.vendorEventOwnerId as any\n );\n }\n\n if (requestParameters.vendorEventAttachments) {\n formParams.append(\n 'vendor_event[attachments]',\n requestParameters.vendorEventAttachments.join(\n runtime.COLLECTION_FORMATS['csv']\n )\n );\n }\n\n if (requestParameters.vendorEventUrl !== undefined) {\n formParams.append(\n 'vendor_event[url]',\n requestParameters.vendorEventUrl as any\n );\n }\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/vendor_events`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorEventExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor event\n */\n async vendorsVendorIdVendorEventsPost(\n requestParameters: VendorsVendorIdVendorEventsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdVendorEventsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Upsert vendor framework requirement\n */\n async vendorsVendorIdVendorFrameworkRequirementsPostRaw(\n requestParameters: VendorsVendorIdVendorFrameworkRequirementsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdVendorFrameworkRequirementsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdVendorFrameworkRequirementsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/vendor_framework_requirements`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: VendorFrameworkRequirementCreatePayloadToJSON(\n requestParameters.body\n ),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorFrameworkRequirementModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Upsert vendor framework requirement\n */\n async vendorsVendorIdVendorFrameworkRequirementsPost(\n requestParameters: VendorsVendorIdVendorFrameworkRequirementsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdVendorFrameworkRequirementsPostRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get vendor integrations\n */\n async vendorsVendorIdVendorIntegrationsGetRaw(\n requestParameters: VendorsVendorIdVendorIntegrationsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdVendorIntegrationsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/vendor_integrations`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorIntegrationModelFromJSON)\n );\n }\n\n /**\n * Get vendor integrations\n */\n async vendorsVendorIdVendorIntegrationsGet(\n requestParameters: VendorsVendorIdVendorIntegrationsGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdVendorIntegrationsGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create vendor integration\n */\n async vendorsVendorIdVendorIntegrationsPostRaw(\n requestParameters: VendorsVendorIdVendorIntegrationsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdVendorIntegrationsPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdVendorIntegrationsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/vendor_integrations`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: VendorIntegrationCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorIntegrationExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create vendor integration\n */\n async vendorsVendorIdVendorIntegrationsPost(\n requestParameters: VendorsVendorIdVendorIntegrationsPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdVendorIntegrationsPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get vendor policies\n */\n async vendorsVendorIdVendorPoliciesGetRaw(\n requestParameters: VendorsVendorIdVendorPoliciesGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdVendorPoliciesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.queryStatus) {\n queryParameters['query[status][]'] = requestParameters.queryStatus;\n }\n\n if (requestParameters.queryType) {\n queryParameters['query[type][]'] = requestParameters.queryType;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/vendor_policies`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorPolicyFromJSON)\n );\n }\n\n /**\n * Get vendor policies\n */\n async vendorsVendorIdVendorPoliciesGet(\n requestParameters: VendorsVendorIdVendorPoliciesGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdVendorPoliciesGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get available vendor supplier categories\n */\n async vendorsVendorIdVendorSuppliersCategoriesGetRaw(\n requestParameters: VendorsVendorIdVendorSuppliersCategoriesGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdVendorSuppliersCategoriesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/vendor_suppliers/categories`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorSupplierCategoryFromJSON)\n );\n }\n\n /**\n * Get available vendor supplier categories\n */\n async vendorsVendorIdVendorSuppliersCategoriesGet(\n requestParameters: VendorsVendorIdVendorSuppliersCategoriesGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdVendorSuppliersCategoriesGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get vendor suppliers\n */\n async vendorsVendorIdVendorSuppliersGetRaw(\n requestParameters: VendorsVendorIdVendorSuppliersGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdVendorSuppliersGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/vendor_suppliers`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(VendorSupplierModelFromJSON)\n );\n }\n\n /**\n * Get vendor suppliers\n */\n async vendorsVendorIdVendorSuppliersGet(\n requestParameters: VendorsVendorIdVendorSuppliersGetRequest\n ): Promise> {\n const response =\n await this.vendorsVendorIdVendorSuppliersGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Create a new vendor supplier\n */\n async vendorsVendorIdVendorSuppliersPostRaw(\n requestParameters: VendorsVendorIdVendorSuppliersPostRequest\n ): Promise> {\n if (\n requestParameters.vendorId === null ||\n requestParameters.vendorId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorId',\n 'Required parameter requestParameters.vendorId was null or undefined when calling vendorsVendorIdVendorSuppliersPost.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling vendorsVendorIdVendorSuppliersPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendors/{vendor_id}/vendor_suppliers`.replace(\n `{${'vendor_id'}}`,\n encodeURIComponent(String(requestParameters.vendorId))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: VendorSupplierPayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n VendorSupplierExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create a new vendor supplier\n */\n async vendorsVendorIdVendorSuppliersPost(\n requestParameters: VendorsVendorIdVendorSuppliersPostRequest\n ): Promise {\n const response =\n await this.vendorsVendorIdVendorSuppliersPostRaw(requestParameters);\n return await response.value();\n }\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ConfigsConfigIdGetConfigIdEnum {\n Currencies = 'currencies',\n Countries = 'countries',\n FinancialEntityTypes = 'financial_entity_types',\n CompetentAuthorities = 'competent_authorities',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum CorrectiveActionsCorrectiveActionIdPatchCorrectiveActionActionTypeEnum {\n NonConformance = 'non_conformance',\n OpportunityForImprovement = 'opportunity_for_improvement',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum CreateRecurringPaymentGetPaymentPeriodEnum {\n Monthly = 'monthly',\n Annually = 'annually',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum PaymentPlansPricingGetPaymentPeriodEnum {\n Annually = 'annually',\n Monthly = 'monthly',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorsIdSharesDeleteShareableTypeEnum {\n Agreement = 'Agreement',\n Assessment = 'Assessment',\n AssessmentResponse = 'AssessmentResponse',\n Audit = 'Audit',\n Checklist = 'Checklist',\n DataRoomEntity = 'DataRoomEntity',\n VendorDocument = 'VendorDocument',\n VendorPolicy = 'VendorPolicy',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorsIdSharesGetShareableTypeEnum {\n Agreement = 'Agreement',\n Assessment = 'Assessment',\n AssessmentResponse = 'AssessmentResponse',\n Audit = 'Audit',\n Checklist = 'Checklist',\n DataRoomEntity = 'DataRoomEntity',\n VendorDocument = 'VendorDocument',\n VendorPolicy = 'VendorPolicy',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorsIdSharesPostShareableTypeEnum {\n Agreement = 'Agreement',\n Assessment = 'Assessment',\n AssessmentResponse = 'AssessmentResponse',\n Audit = 'Audit',\n Checklist = 'Checklist',\n DataRoomEntity = 'DataRoomEntity',\n VendorDocument = 'VendorDocument',\n VendorPolicy = 'VendorPolicy',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorsIdSharesSuggestionsGetShareableTypeEnum {\n Agreement = 'Agreement',\n Assessment = 'Assessment',\n AssessmentResponse = 'AssessmentResponse',\n Audit = 'Audit',\n Checklist = 'Checklist',\n DataRoomEntity = 'DataRoomEntity',\n VendorDocument = 'VendorDocument',\n VendorPolicy = 'VendorPolicy',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorsVendorIdAuditsUploadPostAuditOriginEnum {\n Internal = 'internal',\n Vendor = 'vendor',\n Supplier = 'supplier',\n Surveillance = 'surveillance',\n External = 'external',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorsVendorIdAuditsUploadPostAuditRatingEnum {\n Compliant = 'Compliant',\n ImprovementNeeded = 'Improvement Needed',\n NotCompliant = 'Not Compliant',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorsVendorIdCalendarGetViewModeEnum {\n ActionsAndEvents = 'actions_and_events',\n AuditSchedule = 'audit_schedule',\n IncidentLog = 'incident_log',\n CorrectiveActions = 'corrective_actions',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorsVendorIdCalendarGetStatusesEnum {\n Pending = 'pending',\n Completed = 'completed',\n Overdue = 'overdue',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorsVendorIdCorrectiveActionsPostCorrectiveActionActionTypeEnum {\n NonConformance = 'non_conformance',\n OpportunityForImprovement = 'opportunity_for_improvement',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorsVendorIdReviewHistoryItemsGetRelatedToTypeEnum {\n Control = 'Control',\n LegalRegister = 'LegalRegister',\n PestelRegister = 'PestelRegister',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorsVendorIdVendorDocumentAttestationsGetTargetTypeEnum {\n VendorDocument = 'VendorDocument',\n VendorUser = 'VendorUser',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorsVendorIdVendorPoliciesGetQueryStatusEnum {\n InProgress = 'in_progress',\n Completed = 'completed',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n AgreementModelSignatoriesStats,\n AgreementModelSignatoriesStatsFromJSON,\n AgreementModelSignatoriesStatsFromJSONTyped,\n AgreementModelSignatoriesStatsToJSON,\n AgreementSignatoryModel,\n AgreementSignatoryModelFromJSON,\n AgreementSignatoryModelFromJSONTyped,\n AgreementSignatoryModelToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AgreementModel\n */\nexport interface AgreementModel {\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n status?: AgreementModelStatusEnum;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n summary: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n summaryAsHtml: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n descriptionAsHtml?: string | null;\n /**\n *\n * @type {VendorUser}\n * @memberof AgreementModel\n */\n createdBy?: VendorUser;\n /**\n *\n * @type {VendorUser}\n * @memberof AgreementModel\n */\n owner?: VendorUser;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n version: string | null;\n /**\n *\n * @type {Array}\n * @memberof AgreementModel\n */\n externalSignatoriesNames?: Array;\n /**\n *\n * @type {AgreementModelSignatoriesStats}\n * @memberof AgreementModel\n */\n signatoriesStats?: AgreementModelSignatoriesStats;\n /**\n *\n * @type {boolean}\n * @memberof AgreementModel\n */\n toBeSigned?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof AgreementModel\n */\n shared: boolean;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n agreementType?: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n agreementTemplateName?: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n agreementTemplateId?: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n vendorDocumentId?: string | null;\n /**\n *\n * @type {Array}\n * @memberof AgreementModel\n */\n agreementSignatories?: Array;\n /**\n *\n * @type {Access}\n * @memberof AgreementModel\n */\n access?: Access;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n relativePath?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof AgreementModel\n */\n available?: boolean;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n reviewDate?: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof AgreementModel\n */\n updatedAt: string;\n}\n\nexport function AgreementModelFromJSON(json: any): AgreementModel {\n return AgreementModelFromJSONTyped(json, false);\n}\n\nexport function AgreementModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n status: !exists(json, 'status') ? undefined : json['status'],\n summary: json['summary'],\n summaryAsHtml: json['summary_as_html'],\n description: !exists(json, 'description') ? undefined : json['description'],\n descriptionAsHtml: !exists(json, 'description_as_html')\n ? undefined\n : json['description_as_html'],\n createdBy: !exists(json, 'created_by')\n ? undefined\n : VendorUserFromJSON(json['created_by']),\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n version: json['version'],\n externalSignatoriesNames: !exists(json, 'external_signatories_names')\n ? undefined\n : json['external_signatories_names'],\n signatoriesStats: !exists(json, 'signatories_stats')\n ? undefined\n : AgreementModelSignatoriesStatsFromJSON(json['signatories_stats']),\n toBeSigned: !exists(json, 'to_be_signed')\n ? undefined\n : json['to_be_signed'],\n shared: json['shared'],\n agreementType: !exists(json, 'agreement_type')\n ? undefined\n : json['agreement_type'],\n agreementTemplateName: !exists(json, 'agreement_template_name')\n ? undefined\n : json['agreement_template_name'],\n agreementTemplateId: !exists(json, 'agreement_template_id')\n ? undefined\n : json['agreement_template_id'],\n vendorDocumentId: !exists(json, 'vendor_document_id')\n ? undefined\n : json['vendor_document_id'],\n agreementSignatories: !exists(json, 'agreement_signatories')\n ? undefined\n : (json['agreement_signatories'] as Array).map(\n AgreementSignatoryModelFromJSON\n ),\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n relativePath: !exists(json, 'relative_path')\n ? undefined\n : json['relative_path'],\n available: !exists(json, 'available') ? undefined : json['available'],\n reviewDate: !exists(json, 'review_date') ? undefined : json['review_date'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function AgreementModelToJSON(value?: AgreementModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n status: value.status,\n summary: value.summary,\n summary_as_html: value.summaryAsHtml,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n created_by: VendorUserToJSON(value.createdBy),\n owner: VendorUserToJSON(value.owner),\n version: value.version,\n external_signatories_names: value.externalSignatoriesNames,\n signatories_stats: AgreementModelSignatoriesStatsToJSON(\n value.signatoriesStats\n ),\n to_be_signed: value.toBeSigned,\n shared: value.shared,\n agreement_type: value.agreementType,\n agreement_template_name: value.agreementTemplateName,\n agreement_template_id: value.agreementTemplateId,\n vendor_document_id: value.vendorDocumentId,\n agreement_signatories:\n value.agreementSignatories === undefined\n ? undefined\n : (value.agreementSignatories as Array).map(\n AgreementSignatoryModelToJSON\n ),\n access: AccessToJSON(value.access),\n relative_path: value.relativePath,\n available: value.available,\n review_date: value.reviewDate,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum AgreementModelStatusEnum {\n Draft = 'draft',\n AwaitingSignature = 'awaiting_signature',\n Rejected = 'rejected',\n Signed = 'signed',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n UserDetails,\n UserDetailsFromJSON,\n UserDetailsFromJSONTyped,\n UserDetailsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AgreementSignatoryModel\n */\nexport interface AgreementSignatoryModel {\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryModel\n */\n status: AgreementSignatoryModelStatusEnum;\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryModel\n */\n type: AgreementSignatoryModelTypeEnum;\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryModel\n */\n email: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryModel\n */\n rejectionReason?: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryModel\n */\n updatedAt: string;\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryModel\n */\n companyName?: string;\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryModel\n */\n companyAddress?: string;\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryModel\n */\n companyNumber?: string;\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryModel\n */\n address?: string;\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryModel\n */\n firstName?: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryModel\n */\n lastName?: string | null;\n /**\n *\n * @type {UserDetails}\n * @memberof AgreementSignatoryModel\n */\n user?: UserDetails;\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryModel\n */\n document?: string | null;\n}\n\nexport function AgreementSignatoryModelFromJSON(\n json: any\n): AgreementSignatoryModel {\n return AgreementSignatoryModelFromJSONTyped(json, false);\n}\n\nexport function AgreementSignatoryModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementSignatoryModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n status: json['status'],\n type: json['type'],\n email: json['email'],\n rejectionReason: !exists(json, 'rejection_reason')\n ? undefined\n : json['rejection_reason'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n companyName: !exists(json, 'company_name')\n ? undefined\n : json['company_name'],\n companyAddress: !exists(json, 'company_address')\n ? undefined\n : json['company_address'],\n companyNumber: !exists(json, 'company_number')\n ? undefined\n : json['company_number'],\n address: !exists(json, 'address') ? undefined : json['address'],\n firstName: !exists(json, 'first_name') ? undefined : json['first_name'],\n lastName: !exists(json, 'last_name') ? undefined : json['last_name'],\n user: !exists(json, 'user') ? undefined : UserDetailsFromJSON(json['user']),\n document: !exists(json, 'document') ? undefined : json['document'],\n };\n}\n\nexport function AgreementSignatoryModelToJSON(\n value?: AgreementSignatoryModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n status: value.status,\n type: value.type,\n email: value.email,\n rejection_reason: value.rejectionReason,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n company_name: value.companyName,\n company_address: value.companyAddress,\n company_number: value.companyNumber,\n address: value.address,\n first_name: value.firstName,\n last_name: value.lastName,\n user: UserDetailsToJSON(value.user),\n document: value.document,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum AgreementSignatoryModelStatusEnum {\n AwaitingSignature = 'awaiting_signature',\n Rejected = 'rejected',\n Signed = 'signed',\n SignedOffline = 'signed_offline',\n NotRequired = 'not_required',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum AgreementSignatoryModelTypeEnum {\n ExternalCompany = 'AgreementSignatory::ExternalCompany',\n ExternalIndividual = 'AgreementSignatory::ExternalIndividual',\n Internal = 'AgreementSignatory::Internal',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AssertionFrequency,\n AssertionFrequencyFromJSON,\n AssertionFrequencyFromJSONTyped,\n AssertionFrequencyToJSON,\n AssertionSource,\n AssertionSourceFromJSON,\n AssertionSourceFromJSONTyped,\n AssertionSourceToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssertionModel\n */\nexport interface AssertionModel {\n /**\n *\n * @type {string}\n * @memberof AssertionModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof AssertionModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof AssertionModel\n */\n identifier: string;\n /**\n *\n * @type {boolean}\n * @memberof AssertionModel\n */\n autorun: boolean;\n /**\n *\n * @type {boolean}\n * @memberof AssertionModel\n */\n available?: boolean;\n /**\n *\n * @type {string}\n * @memberof AssertionModel\n */\n type: AssertionModelTypeEnum;\n /**\n *\n * @type {string}\n * @memberof AssertionModel\n */\n description: string | null;\n /**\n *\n * @type {string}\n * @memberof AssertionModel\n */\n status: AssertionModelStatusEnum;\n /**\n *\n * @type {AssertionFrequency}\n * @memberof AssertionModel\n */\n frequency: AssertionFrequency;\n /**\n *\n * @type {AssertionSource}\n * @memberof AssertionModel\n */\n source: AssertionSource;\n /**\n *\n * @type {string}\n * @memberof AssertionModel\n */\n lastRunAt: string | null;\n /**\n *\n * @type {string}\n * @memberof AssertionModel\n */\n nextRunAfter: string | null;\n /**\n *\n * @type {string}\n * @memberof AssertionModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof AssertionModel\n */\n updatedAt: string;\n}\n\nexport function AssertionModelFromJSON(json: any): AssertionModel {\n return AssertionModelFromJSONTyped(json, false);\n}\n\nexport function AssertionModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: json['identifier'],\n autorun: json['autorun'],\n available: !exists(json, 'available') ? undefined : json['available'],\n type: json['type'],\n description: json['description'],\n status: json['status'],\n frequency: AssertionFrequencyFromJSON(json['frequency']),\n source: AssertionSourceFromJSON(json['source']),\n lastRunAt: json['last_run_at'],\n nextRunAfter: json['next_run_after'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function AssertionModelToJSON(value?: AssertionModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n autorun: value.autorun,\n available: value.available,\n type: value.type,\n description: value.description,\n status: value.status,\n frequency: AssertionFrequencyToJSON(value.frequency),\n source: AssertionSourceToJSON(value.source),\n last_run_at: value.lastRunAt,\n next_run_after: value.nextRunAfter,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum AssertionModelTypeEnum {\n Manual = 'Assertion::Manual',\n Automatic = 'Assertion::Automatic',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum AssertionModelStatusEnum {\n Pending = 'pending',\n InProgress = 'in_progress',\n Compliant = 'compliant',\n Failed = 'failed',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n AuditType,\n AuditTypeFromJSON,\n AuditTypeFromJSONTyped,\n AuditTypeToJSON,\n Survey,\n SurveyFromJSON,\n SurveyFromJSONTyped,\n SurveyToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AuditModel\n */\nexport interface AuditModel {\n /**\n *\n * @type {string}\n * @memberof AuditModel\n */\n id: string;\n /**\n *\n * @type {AuditType}\n * @memberof AuditModel\n */\n type?: AuditType | null;\n /**\n *\n * @type {string}\n * @memberof AuditModel\n */\n relativePath?: string | null;\n /**\n *\n * @type {Access}\n * @memberof AuditModel\n */\n access?: Access;\n /**\n *\n * @type {string}\n * @memberof AuditModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof AuditModel\n */\n auditTemplateId?: string | null;\n /**\n *\n * @type {string}\n * @memberof AuditModel\n */\n status?: AuditModelStatusEnum;\n /**\n *\n * @type {string}\n * @memberof AuditModel\n */\n rating?: AuditModelRatingEnum;\n /**\n *\n * @type {VendorUser}\n * @memberof AuditModel\n */\n createdBy?: VendorUser;\n /**\n *\n * @type {VendorUser}\n * @memberof AuditModel\n */\n owner?: VendorUser;\n /**\n *\n * @type {string}\n * @memberof AuditModel\n */\n origin?: string | null;\n /**\n *\n * @type {string}\n * @memberof AuditModel\n */\n vendorDocumentId?: string | null;\n /**\n *\n * @type {Survey}\n * @memberof AuditModel\n */\n survey?: Survey;\n /**\n *\n * @type {string}\n * @memberof AuditModel\n */\n startedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof AuditModel\n */\n completedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof AuditModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof AuditModel\n */\n updatedAt?: string;\n}\n\nexport function AuditModelFromJSON(json: any): AuditModel {\n return AuditModelFromJSONTyped(json, false);\n}\n\nexport function AuditModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AuditModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n type: !exists(json, 'type') ? undefined : AuditTypeFromJSON(json['type']),\n relativePath: !exists(json, 'relative_path')\n ? undefined\n : json['relative_path'],\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n name: json['name'],\n auditTemplateId: !exists(json, 'audit_template_id')\n ? undefined\n : json['audit_template_id'],\n status: !exists(json, 'status') ? undefined : json['status'],\n rating: !exists(json, 'rating') ? undefined : json['rating'],\n createdBy: !exists(json, 'created_by')\n ? undefined\n : VendorUserFromJSON(json['created_by']),\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n origin: !exists(json, 'origin') ? undefined : json['origin'],\n vendorDocumentId: !exists(json, 'vendor_document_id')\n ? undefined\n : json['vendor_document_id'],\n survey: !exists(json, 'survey')\n ? undefined\n : SurveyFromJSON(json['survey']),\n startedAt: !exists(json, 'started_at') ? undefined : json['started_at'],\n completedAt: !exists(json, 'completed_at')\n ? undefined\n : json['completed_at'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function AuditModelToJSON(value?: AuditModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n type: AuditTypeToJSON(value.type),\n relative_path: value.relativePath,\n access: AccessToJSON(value.access),\n name: value.name,\n audit_template_id: value.auditTemplateId,\n status: value.status,\n rating: value.rating,\n created_by: VendorUserToJSON(value.createdBy),\n owner: VendorUserToJSON(value.owner),\n origin: value.origin,\n vendor_document_id: value.vendorDocumentId,\n survey: SurveyToJSON(value.survey),\n started_at: value.startedAt,\n completed_at: value.completedAt,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum AuditModelStatusEnum {\n InProgress = 'in_progress',\n Completed = 'completed',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum AuditModelRatingEnum {\n Compliant = 'Compliant',\n ImprovementNeeded = 'Improvement Needed',\n NotCompliant = 'Not Compliant',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface CertificateModel\n */\nexport interface CertificateModel {\n /**\n *\n * @type {string}\n * @memberof CertificateModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof CertificateModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof CertificateModel\n */\n certificateType: CertificateModelCertificateTypeEnum;\n /**\n *\n * @type {string}\n * @memberof CertificateModel\n */\n createdAt?: string;\n /**\n *\n * @type {Date}\n * @memberof CertificateModel\n */\n expireAt: Date | null;\n /**\n *\n * @type {string}\n * @memberof CertificateModel\n */\n updatedAt?: string;\n}\n\nexport function CertificateModelFromJSON(json: any): CertificateModel {\n return CertificateModelFromJSONTyped(json, false);\n}\n\nexport function CertificateModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): CertificateModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n certificateType: json['certificate_type'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n expireAt: json['expire_at'] === null ? null : new Date(json['expire_at']),\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function CertificateModelToJSON(value?: CertificateModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n certificate_type: value.certificateType,\n created_at: value.createdAt,\n expire_at:\n value.expireAt === null\n ? null\n : value.expireAt.toISOString().substr(0, 10),\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum CertificateModelCertificateTypeEnum {\n Iso27001Certificate = 'iso_27001_certificate',\n Soc2TypeIiReport = 'soc_2_type_ii_report',\n CyberEssentialsCertificate = 'cyber_essentials_certificate',\n CyberEssentialsPlusCertificate = 'cyber_essentials_plus_certificate',\n IcoRegistrationCertificate = 'ico_registration_certificate',\n Iso20252 = 'iso_20252',\n Iso9001 = 'iso_9001',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum PestelItemArea {\n Political = 'political',\n EconomicCommercial = 'economic_commercial',\n Social = 'social',\n Technological = 'technological',\n Environmental = 'environmental',\n Legal = 'legal',\n}\n\nexport function PestelItemAreaFromJSON(json: any): PestelItemArea {\n return PestelItemAreaFromJSONTyped(json, false);\n}\n\nexport function PestelItemAreaFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PestelItemArea {\n return json as PestelItemArea;\n}\n\nexport function PestelItemAreaToJSON(value?: PestelItemArea | null): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum PestelItemLocationType {\n Internal = 'internal',\n External = 'external',\n}\n\nexport function PestelItemLocationTypeFromJSON(\n json: any\n): PestelItemLocationType {\n return PestelItemLocationTypeFromJSONTyped(json, false);\n}\n\nexport function PestelItemLocationTypeFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PestelItemLocationType {\n return json as PestelItemLocationType;\n}\n\nexport function PestelItemLocationTypeToJSON(\n value?: PestelItemLocationType | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ReferenceCreatePayloadReference\n */\nexport interface ReferenceCreatePayloadReference {\n /**\n *\n * @type {string}\n * @memberof ReferenceCreatePayloadReference\n */\n referenceableId: string;\n /**\n *\n * @type {string}\n * @memberof ReferenceCreatePayloadReference\n */\n referenceableType: ReferenceCreatePayloadReferenceReferenceableTypeEnum;\n}\n\nexport function ReferenceCreatePayloadReferenceFromJSON(\n json: any\n): ReferenceCreatePayloadReference {\n return ReferenceCreatePayloadReferenceFromJSONTyped(json, false);\n}\n\nexport function ReferenceCreatePayloadReferenceFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReferenceCreatePayloadReference {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n referenceableId: json['referenceable_id'],\n referenceableType: json['referenceable_type'],\n };\n}\n\nexport function ReferenceCreatePayloadReferenceToJSON(\n value?: ReferenceCreatePayloadReference | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n referenceable_id: value.referenceableId,\n referenceable_type: value.referenceableType,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ReferenceCreatePayloadReferenceReferenceableTypeEnum {\n Risk = 'Risk',\n Control = 'Control',\n LegalRegister = 'LegalRegister',\n PestelRegister = 'PestelRegister',\n Task = 'Task',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ReportCreatePayloadReport\n */\nexport interface ReportCreatePayloadReport {\n /**\n *\n * @type {string}\n * @memberof ReportCreatePayloadReport\n */\n type: string;\n /**\n *\n * @type {string}\n * @memberof ReportCreatePayloadReport\n */\n ownerId: string;\n /**\n *\n * @type {string}\n * @memberof ReportCreatePayloadReport\n */\n versionBump?: ReportCreatePayloadReportVersionBumpEnum;\n /**\n *\n * @type {string}\n * @memberof ReportCreatePayloadReport\n */\n summary?: string | null;\n /**\n *\n * @type {string}\n * @memberof ReportCreatePayloadReport\n */\n framework?: ReportCreatePayloadReportFrameworkEnum;\n /**\n *\n * @type {boolean}\n * @memberof ReportCreatePayloadReport\n */\n includeUnapprovedRisks?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof ReportCreatePayloadReport\n */\n includeIncompleteActions?: boolean;\n}\n\nexport function ReportCreatePayloadReportFromJSON(\n json: any\n): ReportCreatePayloadReport {\n return ReportCreatePayloadReportFromJSONTyped(json, false);\n}\n\nexport function ReportCreatePayloadReportFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReportCreatePayloadReport {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n type: json['type'],\n ownerId: json['owner_id'],\n versionBump: !exists(json, 'version_bump')\n ? undefined\n : json['version_bump'],\n summary: !exists(json, 'summary') ? undefined : json['summary'],\n framework: !exists(json, 'framework') ? undefined : json['framework'],\n includeUnapprovedRisks: !exists(json, 'include_unapproved_risks')\n ? undefined\n : json['include_unapproved_risks'],\n includeIncompleteActions: !exists(json, 'include_incomplete_actions')\n ? undefined\n : json['include_incomplete_actions'],\n };\n}\n\nexport function ReportCreatePayloadReportToJSON(\n value?: ReportCreatePayloadReport | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n type: value.type,\n owner_id: value.ownerId,\n version_bump: value.versionBump,\n summary: value.summary,\n framework: value.framework,\n include_unapproved_risks: value.includeUnapprovedRisks,\n include_incomplete_actions: value.includeIncompleteActions,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ReportCreatePayloadReportVersionBumpEnum {\n Minor = 'minor',\n Major = 'major',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum ReportCreatePayloadReportFrameworkEnum {\n _27001 = 'iso_27001',\n _270012022 = 'iso_27001_2022',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum ReviewStatusEnum {\n Reviewed = 'reviewed',\n AwaitingReview = 'awaiting_review',\n}\n\nexport function ReviewStatusEnumFromJSON(json: any): ReviewStatusEnum {\n return ReviewStatusEnumFromJSONTyped(json, false);\n}\n\nexport function ReviewStatusEnumFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReviewStatusEnum {\n return json as ReviewStatusEnum;\n}\n\nexport function ReviewStatusEnumToJSON(value?: ReviewStatusEnum | null): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum SharedPaymentPeriod {\n Monthly = 'monthly',\n Annually = 'annually',\n}\n\nexport function SharedPaymentPeriodFromJSON(json: any): SharedPaymentPeriod {\n return SharedPaymentPeriodFromJSONTyped(json, false);\n}\n\nexport function SharedPaymentPeriodFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SharedPaymentPeriod {\n return json as SharedPaymentPeriod;\n}\n\nexport function SharedPaymentPeriodToJSON(\n value?: SharedPaymentPeriod | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum VendorEventEventType {\n AgreementReview = 'agreement_review',\n ControlCheckReview = 'control_check_review',\n ControlReview = 'control_review',\n DocumentReview = 'document_review',\n ExternalAudit = 'external_audit',\n IncidentBcpDrSimulation = 'incident_bcp_dr_simulation',\n InternalAudit = 'internal_audit',\n LegalRegisterReview = 'legal_register_review',\n Other = 'other',\n PestelReview = 'pestel_review',\n PolicyReview = 'policy_review',\n RiskRegisterReview = 'risk_register_review',\n SecurityMeeting = 'security_meeting',\n SecurityTraining = 'security_training',\n VendorRegisterReview = 'vendor_register_review',\n AssertionDueDate = 'assertion_due_date',\n NonConformance = 'non_conformance',\n OpportunityForImprovement = 'opportunity_for_improvement',\n IncidentEvent = 'incident_event',\n}\n\nexport function VendorEventEventTypeFromJSON(json: any): VendorEventEventType {\n return VendorEventEventTypeFromJSONTyped(json, false);\n}\n\nexport function VendorEventEventTypeFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorEventEventType {\n return json as VendorEventEventType;\n}\n\nexport function VendorEventEventTypeToJSON(\n value?: VendorEventEventType | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface Access\n */\nexport interface Access {\n /**\n *\n * @type {Array}\n * @memberof Access\n */\n create?: Array;\n /**\n *\n * @type {Array}\n * @memberof Access\n */\n index?: Array;\n /**\n *\n * @type {Array}\n * @memberof Access\n */\n feature?: Array;\n /**\n *\n * @type {boolean}\n * @memberof Access\n */\n show?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof Access\n */\n update?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof Access\n */\n destroy?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof Access\n */\n share?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof Access\n */\n tables?: boolean;\n}\n\nexport function AccessFromJSON(json: any): Access {\n return AccessFromJSONTyped(json, false);\n}\n\nexport function AccessFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Access {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n create: !exists(json, 'create') ? undefined : json['create'],\n index: !exists(json, 'index') ? undefined : json['index'],\n feature: !exists(json, 'feature') ? undefined : json['feature'],\n show: !exists(json, 'show') ? undefined : json['show'],\n update: !exists(json, 'update') ? undefined : json['update'],\n destroy: !exists(json, 'destroy') ? undefined : json['destroy'],\n share: !exists(json, 'share') ? undefined : json['share'],\n tables: !exists(json, 'tables') ? undefined : json['tables'],\n };\n}\n\nexport function AccessToJSON(value?: Access | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n create: value.create,\n index: value.index,\n feature: value.feature,\n show: value.show,\n update: value.update,\n destroy: value.destroy,\n share: value.share,\n tables: value.tables,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AgreementCreatePayloadAgreement,\n AgreementCreatePayloadAgreementFromJSON,\n AgreementCreatePayloadAgreementFromJSONTyped,\n AgreementCreatePayloadAgreementToJSON,\n AgreementCreatePayloadAgreementSignatories,\n AgreementCreatePayloadAgreementSignatoriesFromJSON,\n AgreementCreatePayloadAgreementSignatoriesFromJSONTyped,\n AgreementCreatePayloadAgreementSignatoriesToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AgreementCreatePayload\n */\nexport interface AgreementCreatePayload {\n /**\n *\n * @type {AgreementCreatePayloadAgreement}\n * @memberof AgreementCreatePayload\n */\n agreement: AgreementCreatePayloadAgreement;\n /**\n *\n * @type {Array}\n * @memberof AgreementCreatePayload\n */\n agreementSignatories?: Array;\n}\n\nexport function AgreementCreatePayloadFromJSON(\n json: any\n): AgreementCreatePayload {\n return AgreementCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function AgreementCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n agreement: AgreementCreatePayloadAgreementFromJSON(json['agreement']),\n agreementSignatories: !exists(json, 'agreement_signatories')\n ? undefined\n : (json['agreement_signatories'] as Array).map(\n AgreementCreatePayloadAgreementSignatoriesFromJSON\n ),\n };\n}\n\nexport function AgreementCreatePayloadToJSON(\n value?: AgreementCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n agreement: AgreementCreatePayloadAgreementToJSON(value.agreement),\n agreement_signatories:\n value.agreementSignatories === undefined\n ? undefined\n : (value.agreementSignatories as Array).map(\n AgreementCreatePayloadAgreementSignatoriesToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AgreementCreatePayloadAgreement\n */\nexport interface AgreementCreatePayloadAgreement {\n /**\n *\n * @type {string}\n * @memberof AgreementCreatePayloadAgreement\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof AgreementCreatePayloadAgreement\n */\n agreementTemplateId: string;\n /**\n *\n * @type {string}\n * @memberof AgreementCreatePayloadAgreement\n */\n sourceAgreementId?: string;\n}\n\nexport function AgreementCreatePayloadAgreementFromJSON(\n json: any\n): AgreementCreatePayloadAgreement {\n return AgreementCreatePayloadAgreementFromJSONTyped(json, false);\n}\n\nexport function AgreementCreatePayloadAgreementFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementCreatePayloadAgreement {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n agreementTemplateId: json['agreement_template_id'],\n sourceAgreementId: !exists(json, 'source_agreement_id')\n ? undefined\n : json['source_agreement_id'],\n };\n}\n\nexport function AgreementCreatePayloadAgreementToJSON(\n value?: AgreementCreatePayloadAgreement | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n agreement_template_id: value.agreementTemplateId,\n source_agreement_id: value.sourceAgreementId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AgreementCreatePayloadAgreementSignatories\n */\nexport interface AgreementCreatePayloadAgreementSignatories {\n /**\n *\n * @type {string}\n * @memberof AgreementCreatePayloadAgreementSignatories\n */\n type?: string;\n /**\n *\n * @type {string}\n * @memberof AgreementCreatePayloadAgreementSignatories\n */\n firstName?: string;\n /**\n *\n * @type {string}\n * @memberof AgreementCreatePayloadAgreementSignatories\n */\n lastName?: string;\n /**\n *\n * @type {string}\n * @memberof AgreementCreatePayloadAgreementSignatories\n */\n email?: string;\n /**\n *\n * @type {string}\n * @memberof AgreementCreatePayloadAgreementSignatories\n */\n address?: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementCreatePayloadAgreementSignatories\n */\n companyName?: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementCreatePayloadAgreementSignatories\n */\n companyAddress?: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementCreatePayloadAgreementSignatories\n */\n companyNumber?: string | null;\n}\n\nexport function AgreementCreatePayloadAgreementSignatoriesFromJSON(\n json: any\n): AgreementCreatePayloadAgreementSignatories {\n return AgreementCreatePayloadAgreementSignatoriesFromJSONTyped(json, false);\n}\n\nexport function AgreementCreatePayloadAgreementSignatoriesFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementCreatePayloadAgreementSignatories {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n type: !exists(json, 'type') ? undefined : json['type'],\n firstName: !exists(json, 'first_name') ? undefined : json['first_name'],\n lastName: !exists(json, 'last_name') ? undefined : json['last_name'],\n email: !exists(json, 'email') ? undefined : json['email'],\n address: !exists(json, 'address') ? undefined : json['address'],\n companyName: !exists(json, 'company_name')\n ? undefined\n : json['company_name'],\n companyAddress: !exists(json, 'company_address')\n ? undefined\n : json['company_address'],\n companyNumber: !exists(json, 'company_number')\n ? undefined\n : json['company_number'],\n };\n}\n\nexport function AgreementCreatePayloadAgreementSignatoriesToJSON(\n value?: AgreementCreatePayloadAgreementSignatories | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n type: value.type,\n first_name: value.firstName,\n last_name: value.lastName,\n email: value.email,\n address: value.address,\n company_name: value.companyName,\n company_address: value.companyAddress,\n company_number: value.companyNumber,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n AgreementExtendedAllOf,\n AgreementExtendedAllOfFromJSON,\n AgreementExtendedAllOfFromJSONTyped,\n AgreementExtendedAllOfToJSON,\n AgreementModel,\n AgreementModelFromJSON,\n AgreementModelFromJSONTyped,\n AgreementModelToJSON,\n AgreementModelSignatoriesStats,\n AgreementModelSignatoriesStatsFromJSON,\n AgreementModelSignatoriesStatsFromJSONTyped,\n AgreementModelSignatoriesStatsToJSON,\n AgreementSignatoryModel,\n AgreementSignatoryModelFromJSON,\n AgreementSignatoryModelFromJSONTyped,\n AgreementSignatoryModelToJSON,\n Survey,\n SurveyFromJSON,\n SurveyFromJSONTyped,\n SurveyToJSON,\n UserDetails,\n UserDetailsFromJSON,\n UserDetailsFromJSONTyped,\n UserDetailsToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AgreementExtended\n */\nexport interface AgreementExtended extends AgreementModel {\n /**\n *\n * @type {Survey}\n * @memberof AgreementExtended\n */\n survey: Survey;\n /**\n *\n * @type {UserDetails}\n * @memberof AgreementExtended\n */\n updatedBy?: UserDetails;\n /**\n *\n * @type {string}\n * @memberof AgreementExtended\n */\n content?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof AgreementExtended\n */\n contentIsCustom?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof AgreementExtended\n */\n useBrandingColor?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof AgreementExtended\n */\n useCompanyLogo?: boolean;\n /**\n *\n * @type {Array}\n * @memberof AgreementExtended\n */\n modesAvailable?: Array;\n}\n\nexport function AgreementExtendedFromJSON(json: any): AgreementExtended {\n return AgreementExtendedFromJSONTyped(json, false);\n}\n\nexport function AgreementExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...AgreementModelFromJSONTyped(json, ignoreDiscriminator),\n survey: SurveyFromJSON(json['survey']),\n updatedBy: !exists(json, 'updated_by')\n ? undefined\n : UserDetailsFromJSON(json['updated_by']),\n content: !exists(json, 'content') ? undefined : json['content'],\n contentIsCustom: !exists(json, 'content_is_custom')\n ? undefined\n : json['content_is_custom'],\n useBrandingColor: !exists(json, 'use_branding_color')\n ? undefined\n : json['use_branding_color'],\n useCompanyLogo: !exists(json, 'use_company_logo')\n ? undefined\n : json['use_company_logo'],\n modesAvailable: !exists(json, 'modes_available')\n ? undefined\n : json['modes_available'],\n };\n}\n\nexport function AgreementExtendedToJSON(value?: AgreementExtended | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...AgreementModelToJSON(value),\n survey: SurveyToJSON(value.survey),\n updated_by: UserDetailsToJSON(value.updatedBy),\n content: value.content,\n content_is_custom: value.contentIsCustom,\n use_branding_color: value.useBrandingColor,\n use_company_logo: value.useCompanyLogo,\n modes_available: value.modesAvailable,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum AgreementExtendedModesAvailableEnum {\n Survey = 'survey',\n Preview = 'preview',\n Edit = 'edit',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Survey,\n SurveyFromJSON,\n SurveyFromJSONTyped,\n SurveyToJSON,\n UserDetails,\n UserDetailsFromJSON,\n UserDetailsFromJSONTyped,\n UserDetailsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AgreementExtendedAllOf\n */\nexport interface AgreementExtendedAllOf {\n /**\n *\n * @type {Survey}\n * @memberof AgreementExtendedAllOf\n */\n survey: Survey;\n /**\n *\n * @type {UserDetails}\n * @memberof AgreementExtendedAllOf\n */\n updatedBy?: UserDetails;\n /**\n *\n * @type {string}\n * @memberof AgreementExtendedAllOf\n */\n content?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof AgreementExtendedAllOf\n */\n contentIsCustom?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof AgreementExtendedAllOf\n */\n useBrandingColor?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof AgreementExtendedAllOf\n */\n useCompanyLogo?: boolean;\n /**\n *\n * @type {Array}\n * @memberof AgreementExtendedAllOf\n */\n modesAvailable?: Array;\n}\n\nexport function AgreementExtendedAllOfFromJSON(\n json: any\n): AgreementExtendedAllOf {\n return AgreementExtendedAllOfFromJSONTyped(json, false);\n}\n\nexport function AgreementExtendedAllOfFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementExtendedAllOf {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n survey: SurveyFromJSON(json['survey']),\n updatedBy: !exists(json, 'updated_by')\n ? undefined\n : UserDetailsFromJSON(json['updated_by']),\n content: !exists(json, 'content') ? undefined : json['content'],\n contentIsCustom: !exists(json, 'content_is_custom')\n ? undefined\n : json['content_is_custom'],\n useBrandingColor: !exists(json, 'use_branding_color')\n ? undefined\n : json['use_branding_color'],\n useCompanyLogo: !exists(json, 'use_company_logo')\n ? undefined\n : json['use_company_logo'],\n modesAvailable: !exists(json, 'modes_available')\n ? undefined\n : json['modes_available'],\n };\n}\n\nexport function AgreementExtendedAllOfToJSON(\n value?: AgreementExtendedAllOf | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n survey: SurveyToJSON(value.survey),\n updated_by: UserDetailsToJSON(value.updatedBy),\n content: value.content,\n content_is_custom: value.contentIsCustom,\n use_branding_color: value.useBrandingColor,\n use_company_logo: value.useCompanyLogo,\n modes_available: value.modesAvailable,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum AgreementExtendedAllOfModesAvailableEnum {\n Survey = 'survey',\n Preview = 'preview',\n Edit = 'edit',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AgreementModelSignatoriesStats\n */\nexport interface AgreementModelSignatoriesStats {\n /**\n *\n * @type {number}\n * @memberof AgreementModelSignatoriesStats\n */\n signed?: number;\n /**\n *\n * @type {number}\n * @memberof AgreementModelSignatoriesStats\n */\n total?: number;\n}\n\nexport function AgreementModelSignatoriesStatsFromJSON(\n json: any\n): AgreementModelSignatoriesStats {\n return AgreementModelSignatoriesStatsFromJSONTyped(json, false);\n}\n\nexport function AgreementModelSignatoriesStatsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementModelSignatoriesStats {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n signed: !exists(json, 'signed') ? undefined : json['signed'],\n total: !exists(json, 'total') ? undefined : json['total'],\n };\n}\n\nexport function AgreementModelSignatoriesStatsToJSON(\n value?: AgreementModelSignatoriesStats | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n signed: value.signed,\n total: value.total,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AgreementSendPayload\n */\nexport interface AgreementSendPayload {\n /**\n *\n * @type {Array}\n * @memberof AgreementSendPayload\n */\n signatoriesToNotifyIds?: Array;\n}\n\nexport function AgreementSendPayloadFromJSON(json: any): AgreementSendPayload {\n return AgreementSendPayloadFromJSONTyped(json, false);\n}\n\nexport function AgreementSendPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementSendPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n signatoriesToNotifyIds: !exists(json, 'signatories_to_notify_ids')\n ? undefined\n : json['signatories_to_notify_ids'],\n };\n}\n\nexport function AgreementSendPayloadToJSON(\n value?: AgreementSendPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n signatories_to_notify_ids: value.signatoriesToNotifyIds,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AgreementCreatePayloadAgreementSignatories,\n AgreementCreatePayloadAgreementSignatoriesFromJSON,\n AgreementCreatePayloadAgreementSignatoriesFromJSONTyped,\n AgreementCreatePayloadAgreementSignatoriesToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AgreementSignatoryCreateExternalPayload\n */\nexport interface AgreementSignatoryCreateExternalPayload {\n /**\n *\n * @type {Array}\n * @memberof AgreementSignatoryCreateExternalPayload\n */\n agreementSignatories?: Array;\n}\n\nexport function AgreementSignatoryCreateExternalPayloadFromJSON(\n json: any\n): AgreementSignatoryCreateExternalPayload {\n return AgreementSignatoryCreateExternalPayloadFromJSONTyped(json, false);\n}\n\nexport function AgreementSignatoryCreateExternalPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementSignatoryCreateExternalPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n agreementSignatories: !exists(json, 'agreement_signatories')\n ? undefined\n : (json['agreement_signatories'] as Array).map(\n AgreementCreatePayloadAgreementSignatoriesFromJSON\n ),\n };\n}\n\nexport function AgreementSignatoryCreateExternalPayloadToJSON(\n value?: AgreementSignatoryCreateExternalPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n agreement_signatories:\n value.agreementSignatories === undefined\n ? undefined\n : (value.agreementSignatories as Array).map(\n AgreementCreatePayloadAgreementSignatoriesToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AgreementSignatoryNotifyPayload\n */\nexport interface AgreementSignatoryNotifyPayload {\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryNotifyPayload\n */\n message?: string | null;\n}\n\nexport function AgreementSignatoryNotifyPayloadFromJSON(\n json: any\n): AgreementSignatoryNotifyPayload {\n return AgreementSignatoryNotifyPayloadFromJSONTyped(json, false);\n}\n\nexport function AgreementSignatoryNotifyPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementSignatoryNotifyPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n message: !exists(json, 'message') ? undefined : json['message'],\n };\n}\n\nexport function AgreementSignatoryNotifyPayloadToJSON(\n value?: AgreementSignatoryNotifyPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n message: value.message,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AgreementSignatoryRejectPayload\n */\nexport interface AgreementSignatoryRejectPayload {\n /**\n *\n * @type {string}\n * @memberof AgreementSignatoryRejectPayload\n */\n rejectionReason?: string | null;\n}\n\nexport function AgreementSignatoryRejectPayloadFromJSON(\n json: any\n): AgreementSignatoryRejectPayload {\n return AgreementSignatoryRejectPayloadFromJSONTyped(json, false);\n}\n\nexport function AgreementSignatoryRejectPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementSignatoryRejectPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n rejectionReason: !exists(json, 'rejection_reason')\n ? undefined\n : json['rejection_reason'],\n };\n}\n\nexport function AgreementSignatoryRejectPayloadToJSON(\n value?: AgreementSignatoryRejectPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n rejection_reason: value.rejectionReason,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AgreementSignatoryUpdateInternalPayload\n */\nexport interface AgreementSignatoryUpdateInternalPayload {\n /**\n *\n * @type {Array}\n * @memberof AgreementSignatoryUpdateInternalPayload\n */\n agreementSignatoriesUsersIds: Array;\n}\n\nexport function AgreementSignatoryUpdateInternalPayloadFromJSON(\n json: any\n): AgreementSignatoryUpdateInternalPayload {\n return AgreementSignatoryUpdateInternalPayloadFromJSONTyped(json, false);\n}\n\nexport function AgreementSignatoryUpdateInternalPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementSignatoryUpdateInternalPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n agreementSignatoriesUsersIds: json['agreement_signatories_users_ids'],\n };\n}\n\nexport function AgreementSignatoryUpdateInternalPayloadToJSON(\n value?: AgreementSignatoryUpdateInternalPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n agreement_signatories_users_ids: value.agreementSignatoriesUsersIds,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AgreementTemplateCategoryModel\n */\nexport interface AgreementTemplateCategoryModel {\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateCategoryModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateCategoryModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateCategoryModel\n */\n identifier: string;\n /**\n *\n * @type {number}\n * @memberof AgreementTemplateCategoryModel\n */\n rowOrder: number;\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateCategoryModel\n */\n summary: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateCategoryModel\n */\n summaryAsHtml: string | null;\n}\n\nexport function AgreementTemplateCategoryModelFromJSON(\n json: any\n): AgreementTemplateCategoryModel {\n return AgreementTemplateCategoryModelFromJSONTyped(json, false);\n}\n\nexport function AgreementTemplateCategoryModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementTemplateCategoryModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: json['identifier'],\n rowOrder: json['row_order'],\n summary: json['summary'],\n summaryAsHtml: json['summary_as_html'],\n };\n}\n\nexport function AgreementTemplateCategoryModelToJSON(\n value?: AgreementTemplateCategoryModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n row_order: value.rowOrder,\n summary: value.summary,\n summary_as_html: value.summaryAsHtml,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AgreementTemplateModel\n */\nexport interface AgreementTemplateModel {\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateModel\n */\n agreementType?: string;\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateModel\n */\n agreementTemplateCategoryId: string;\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateModel\n */\n summary: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateModel\n */\n summaryAsHtml: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateModel\n */\n description: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateModel\n */\n descriptionAsHtml: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateModel\n */\n version: string | null;\n /**\n *\n * @type {boolean}\n * @memberof AgreementTemplateModel\n */\n available?: boolean;\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof AgreementTemplateModel\n */\n updatedAt: string;\n}\n\nexport function AgreementTemplateModelFromJSON(\n json: any\n): AgreementTemplateModel {\n return AgreementTemplateModelFromJSONTyped(json, false);\n}\n\nexport function AgreementTemplateModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementTemplateModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n agreementType: !exists(json, 'agreement_type')\n ? undefined\n : json['agreement_type'],\n name: json['name'],\n agreementTemplateCategoryId: json['agreement_template_category_id'],\n summary: json['summary'],\n summaryAsHtml: json['summary_as_html'],\n description: json['description'],\n descriptionAsHtml: json['description_as_html'],\n version: json['version'],\n available: !exists(json, 'available') ? undefined : json['available'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function AgreementTemplateModelToJSON(\n value?: AgreementTemplateModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n agreement_type: value.agreementType,\n name: value.name,\n agreement_template_category_id: value.agreementTemplateCategoryId,\n summary: value.summary,\n summary_as_html: value.summaryAsHtml,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n version: value.version,\n available: value.available,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AgreementUpdatePayload\n */\nexport interface AgreementUpdatePayload {\n /**\n *\n * @type {string}\n * @memberof AgreementUpdatePayload\n */\n name?: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementUpdatePayload\n */\n ownerId?: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementUpdatePayload\n */\n reviewDate?: string | null;\n /**\n *\n * @type {string}\n * @memberof AgreementUpdatePayload\n */\n content?: string;\n /**\n *\n * @type {boolean}\n * @memberof AgreementUpdatePayload\n */\n contentIsCustom?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof AgreementUpdatePayload\n */\n useCompanyLogo?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof AgreementUpdatePayload\n */\n useBrandingColor?: boolean;\n}\n\nexport function AgreementUpdatePayloadFromJSON(\n json: any\n): AgreementUpdatePayload {\n return AgreementUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function AgreementUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n reviewDate: !exists(json, 'review_date') ? undefined : json['review_date'],\n content: !exists(json, 'content') ? undefined : json['content'],\n contentIsCustom: !exists(json, 'content_is_custom')\n ? undefined\n : json['content_is_custom'],\n useCompanyLogo: !exists(json, 'use_company_logo')\n ? undefined\n : json['use_company_logo'],\n useBrandingColor: !exists(json, 'use_branding_color')\n ? undefined\n : json['use_branding_color'],\n };\n}\n\nexport function AgreementUpdatePayloadToJSON(\n value?: AgreementUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n owner_id: value.ownerId,\n review_date: value.reviewDate,\n content: value.content,\n content_is_custom: value.contentIsCustom,\n use_company_logo: value.useCompanyLogo,\n use_branding_color: value.useBrandingColor,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AgreementVersionCreatePayload\n */\nexport interface AgreementVersionCreatePayload {\n /**\n *\n * @type {string}\n * @memberof AgreementVersionCreatePayload\n */\n changeReason?: string;\n /**\n *\n * @type {string}\n * @memberof AgreementVersionCreatePayload\n */\n versionBump: AgreementVersionCreatePayloadVersionBumpEnum;\n}\n\nexport function AgreementVersionCreatePayloadFromJSON(\n json: any\n): AgreementVersionCreatePayload {\n return AgreementVersionCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function AgreementVersionCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AgreementVersionCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n changeReason: !exists(json, 'change_reason')\n ? undefined\n : json['change_reason'],\n versionBump: json['version_bump'],\n };\n}\n\nexport function AgreementVersionCreatePayloadToJSON(\n value?: AgreementVersionCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n change_reason: value.changeReason,\n version_bump: value.versionBump,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum AgreementVersionCreatePayloadVersionBumpEnum {\n Minor = 'minor',\n Major = 'major',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface Answer\n */\nexport interface Answer {\n /**\n *\n * @type {string}\n * @memberof Answer\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof Answer\n */\n createdAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof Answer\n */\n updatedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof Answer\n */\n userName?: string | null;\n /**\n *\n * @type {string}\n * @memberof Answer\n */\n propertyName?: string | null;\n /**\n *\n * @type {string}\n * @memberof Answer\n */\n questionId?: string;\n /**\n *\n * @type {string}\n * @memberof Answer\n */\n questionRowId?: string | null;\n /**\n *\n * @type {string}\n * @memberof Answer\n */\n value?: string;\n /**\n *\n * @type {boolean}\n * @memberof Answer\n */\n other?: boolean;\n /**\n *\n * @type {string}\n * @memberof Answer\n */\n surveyId?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof Answer\n */\n notApplicable?: boolean;\n /**\n *\n * @type {string}\n * @memberof Answer\n */\n note?: string | null;\n /**\n *\n * @type {number}\n * @memberof Answer\n */\n index?: number | null;\n /**\n *\n * @type {string}\n * @memberof Answer\n */\n datatype?: string;\n /**\n *\n * @type {number}\n * @memberof Answer\n */\n rowOrder?: number | null;\n}\n\nexport function AnswerFromJSON(json: any): Answer {\n return AnswerFromJSONTyped(json, false);\n}\n\nexport function AnswerFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Answer {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n userName: !exists(json, 'user_name') ? undefined : json['user_name'],\n propertyName: !exists(json, 'property_name')\n ? undefined\n : json['property_name'],\n questionId: !exists(json, 'question_id') ? undefined : json['question_id'],\n questionRowId: !exists(json, 'question_row_id')\n ? undefined\n : json['question_row_id'],\n value: !exists(json, 'value') ? undefined : json['value'],\n other: !exists(json, 'other') ? undefined : json['other'],\n surveyId: !exists(json, 'survey_id') ? undefined : json['survey_id'],\n notApplicable: !exists(json, 'not_applicable')\n ? undefined\n : json['not_applicable'],\n note: !exists(json, 'note') ? undefined : json['note'],\n index: !exists(json, 'index') ? undefined : json['index'],\n datatype: !exists(json, 'datatype') ? undefined : json['datatype'],\n rowOrder: !exists(json, 'row_order') ? undefined : json['row_order'],\n };\n}\n\nexport function AnswerToJSON(value?: Answer | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n user_name: value.userName,\n property_name: value.propertyName,\n question_id: value.questionId,\n question_row_id: value.questionRowId,\n value: value.value,\n other: value.other,\n survey_id: value.surveyId,\n not_applicable: value.notApplicable,\n note: value.note,\n index: value.index,\n datatype: value.datatype,\n row_order: value.rowOrder,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AnswerDeletePayload\n */\nexport interface AnswerDeletePayload {\n /**\n *\n * @type {Array}\n * @memberof AnswerDeletePayload\n */\n answersIds?: Array;\n}\n\nexport function AnswerDeletePayloadFromJSON(json: any): AnswerDeletePayload {\n return AnswerDeletePayloadFromJSONTyped(json, false);\n}\n\nexport function AnswerDeletePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AnswerDeletePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n answersIds: !exists(json, 'answers_ids') ? undefined : json['answers_ids'],\n };\n}\n\nexport function AnswerDeletePayloadToJSON(\n value?: AnswerDeletePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n answers_ids: value.answersIds,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AssertionCategoryModel\n */\nexport interface AssertionCategoryModel {\n /**\n *\n * @type {string}\n * @memberof AssertionCategoryModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof AssertionCategoryModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof AssertionCategoryModel\n */\n identifier: string;\n}\n\nexport function AssertionCategoryModelFromJSON(\n json: any\n): AssertionCategoryModel {\n return AssertionCategoryModelFromJSONTyped(json, false);\n}\n\nexport function AssertionCategoryModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionCategoryModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: json['identifier'],\n };\n}\n\nexport function AssertionCategoryModelToJSON(\n value?: AssertionCategoryModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AssertionCreatePayloadAssertion,\n AssertionCreatePayloadAssertionFromJSON,\n AssertionCreatePayloadAssertionFromJSONTyped,\n AssertionCreatePayloadAssertionToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssertionCreatePayload\n */\nexport interface AssertionCreatePayload {\n /**\n *\n * @type {AssertionCreatePayloadAssertion}\n * @memberof AssertionCreatePayload\n */\n assertion: AssertionCreatePayloadAssertion;\n}\n\nexport function AssertionCreatePayloadFromJSON(\n json: any\n): AssertionCreatePayload {\n return AssertionCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function AssertionCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n assertion: AssertionCreatePayloadAssertionFromJSON(json['assertion']),\n };\n}\n\nexport function AssertionCreatePayloadToJSON(\n value?: AssertionCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n assertion: AssertionCreatePayloadAssertionToJSON(value.assertion),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AssertionFrequency,\n AssertionFrequencyFromJSON,\n AssertionFrequencyFromJSONTyped,\n AssertionFrequencyToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssertionCreatePayloadAssertion\n */\nexport interface AssertionCreatePayloadAssertion {\n /**\n *\n * @type {string}\n * @memberof AssertionCreatePayloadAssertion\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof AssertionCreatePayloadAssertion\n */\n description: string;\n /**\n *\n * @type {string}\n * @memberof AssertionCreatePayloadAssertion\n */\n ownerId?: string | null;\n /**\n *\n * @type {string}\n * @memberof AssertionCreatePayloadAssertion\n */\n assertionCategoryId: string;\n /**\n *\n * @type {string}\n * @memberof AssertionCreatePayloadAssertion\n */\n taskId: string;\n /**\n *\n * @type {AssertionFrequency}\n * @memberof AssertionCreatePayloadAssertion\n */\n frequency: AssertionFrequency;\n}\n\nexport function AssertionCreatePayloadAssertionFromJSON(\n json: any\n): AssertionCreatePayloadAssertion {\n return AssertionCreatePayloadAssertionFromJSONTyped(json, false);\n}\n\nexport function AssertionCreatePayloadAssertionFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionCreatePayloadAssertion {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: json['name'],\n description: json['description'],\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n assertionCategoryId: json['assertion_category_id'],\n taskId: json['task_id'],\n frequency: AssertionFrequencyFromJSON(json['frequency']),\n };\n}\n\nexport function AssertionCreatePayloadAssertionToJSON(\n value?: AssertionCreatePayloadAssertion | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n description: value.description,\n owner_id: value.ownerId,\n assertion_category_id: value.assertionCategoryId,\n task_id: value.taskId,\n frequency: AssertionFrequencyToJSON(value.frequency),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AssertionCategoryModel,\n AssertionCategoryModelFromJSON,\n AssertionCategoryModelFromJSONTyped,\n AssertionCategoryModelToJSON,\n AssertionExtendedAllOf,\n AssertionExtendedAllOfFromJSON,\n AssertionExtendedAllOfFromJSONTyped,\n AssertionExtendedAllOfToJSON,\n AssertionFrequency,\n AssertionFrequencyFromJSON,\n AssertionFrequencyFromJSONTyped,\n AssertionFrequencyToJSON,\n AssertionModel,\n AssertionModelFromJSON,\n AssertionModelFromJSONTyped,\n AssertionModelToJSON,\n AssertionResultExtended,\n AssertionResultExtendedFromJSON,\n AssertionResultExtendedFromJSONTyped,\n AssertionResultExtendedToJSON,\n AssertionSource,\n AssertionSourceFromJSON,\n AssertionSourceFromJSONTyped,\n AssertionSourceToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssertionExtended\n */\nexport interface AssertionExtended extends AssertionModel {\n /**\n *\n * @type {boolean}\n * @memberof AssertionExtended\n */\n overdue?: boolean;\n /**\n *\n * @type {VendorUser}\n * @memberof AssertionExtended\n */\n owner?: VendorUser;\n /**\n *\n * @type {AssertionCategoryModel}\n * @memberof AssertionExtended\n */\n assertionCategory?: AssertionCategoryModel;\n /**\n *\n * @type {Array}\n * @memberof AssertionExtended\n */\n latestRunResults?: Array;\n}\n\nexport function AssertionExtendedFromJSON(json: any): AssertionExtended {\n return AssertionExtendedFromJSONTyped(json, false);\n}\n\nexport function AssertionExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...AssertionModelFromJSONTyped(json, ignoreDiscriminator),\n overdue: !exists(json, 'overdue') ? undefined : json['overdue'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n assertionCategory: !exists(json, 'assertion_category')\n ? undefined\n : AssertionCategoryModelFromJSON(json['assertion_category']),\n latestRunResults: !exists(json, 'latest_run_results')\n ? undefined\n : (json['latest_run_results'] as Array).map(\n AssertionResultExtendedFromJSON\n ),\n };\n}\n\nexport function AssertionExtendedToJSON(value?: AssertionExtended | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...AssertionModelToJSON(value),\n overdue: value.overdue,\n owner: VendorUserToJSON(value.owner),\n assertion_category: AssertionCategoryModelToJSON(value.assertionCategory),\n latest_run_results:\n value.latestRunResults === undefined\n ? undefined\n : (value.latestRunResults as Array).map(\n AssertionResultExtendedToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum AssertionFrequency {\n Daily = 'daily',\n Weekly = 'weekly',\n Monthly = 'monthly',\n Quarterly = 'quarterly',\n BiAnnually = 'bi_annually',\n Annually = 'annually',\n}\n\nexport function AssertionFrequencyFromJSON(json: any): AssertionFrequency {\n return AssertionFrequencyFromJSONTyped(json, false);\n}\n\nexport function AssertionFrequencyFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionFrequency {\n return json as AssertionFrequency;\n}\n\nexport function AssertionFrequencyToJSON(\n value?: AssertionFrequency | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AssertionResultExcludePayloadAssertionResult,\n AssertionResultExcludePayloadAssertionResultFromJSON,\n AssertionResultExcludePayloadAssertionResultFromJSONTyped,\n AssertionResultExcludePayloadAssertionResultToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssertionResultExcludePayload\n */\nexport interface AssertionResultExcludePayload {\n /**\n *\n * @type {AssertionResultExcludePayloadAssertionResult}\n * @memberof AssertionResultExcludePayload\n */\n assertionResult: AssertionResultExcludePayloadAssertionResult;\n}\n\nexport function AssertionResultExcludePayloadFromJSON(\n json: any\n): AssertionResultExcludePayload {\n return AssertionResultExcludePayloadFromJSONTyped(json, false);\n}\n\nexport function AssertionResultExcludePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionResultExcludePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n assertionResult: AssertionResultExcludePayloadAssertionResultFromJSON(\n json['assertion_result']\n ),\n };\n}\n\nexport function AssertionResultExcludePayloadToJSON(\n value?: AssertionResultExcludePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n assertion_result: AssertionResultExcludePayloadAssertionResultToJSON(\n value.assertionResult\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AssertionResultExcludePayloadAssertionResult\n */\nexport interface AssertionResultExcludePayloadAssertionResult {\n /**\n *\n * @type {string}\n * @memberof AssertionResultExcludePayloadAssertionResult\n */\n reasonForExclusion: string;\n}\n\nexport function AssertionResultExcludePayloadAssertionResultFromJSON(\n json: any\n): AssertionResultExcludePayloadAssertionResult {\n return AssertionResultExcludePayloadAssertionResultFromJSONTyped(json, false);\n}\n\nexport function AssertionResultExcludePayloadAssertionResultFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionResultExcludePayloadAssertionResult {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n reasonForExclusion: json['reason_for_exclusion'],\n };\n}\n\nexport function AssertionResultExcludePayloadAssertionResultToJSON(\n value?: AssertionResultExcludePayloadAssertionResult | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n reason_for_exclusion: value.reasonForExclusion,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AssertionResultExtendedAllOf,\n AssertionResultExtendedAllOfFromJSON,\n AssertionResultExtendedAllOfFromJSONTyped,\n AssertionResultExtendedAllOfToJSON,\n AssertionResultModel,\n AssertionResultModelFromJSON,\n AssertionResultModelFromJSONTyped,\n AssertionResultModelToJSON,\n SharedAttachmentModel,\n SharedAttachmentModelFromJSON,\n SharedAttachmentModelFromJSONTyped,\n SharedAttachmentModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssertionResultExtended\n */\nexport interface AssertionResultExtended extends AssertionResultModel {\n /**\n *\n * @type {Array}\n * @memberof AssertionResultExtended\n */\n evidences?: Array;\n}\n\nexport function AssertionResultExtendedFromJSON(\n json: any\n): AssertionResultExtended {\n return AssertionResultExtendedFromJSONTyped(json, false);\n}\n\nexport function AssertionResultExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionResultExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...AssertionResultModelFromJSONTyped(json, ignoreDiscriminator),\n evidences: !exists(json, 'evidences')\n ? undefined\n : (json['evidences'] as Array).map(SharedAttachmentModelFromJSON),\n };\n}\n\nexport function AssertionResultExtendedToJSON(\n value?: AssertionResultExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...AssertionResultModelToJSON(value),\n evidences:\n value.evidences === undefined\n ? undefined\n : (value.evidences as Array).map(SharedAttachmentModelToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AssertionResultModel\n */\nexport interface AssertionResultModel {\n /**\n *\n * @type {string}\n * @memberof AssertionResultModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof AssertionResultModel\n */\n status: AssertionResultModelStatusEnum;\n /**\n *\n * @type {boolean}\n * @memberof AssertionResultModel\n */\n excluded: boolean;\n /**\n *\n * @type {string}\n * @memberof AssertionResultModel\n */\n key: string;\n /**\n *\n * @type {string}\n * @memberof AssertionResultModel\n */\n comment: string | null;\n /**\n *\n * @type {string}\n * @memberof AssertionResultModel\n */\n payload: string;\n /**\n *\n * @type {string}\n * @memberof AssertionResultModel\n */\n message: string | null;\n /**\n *\n * @type {string}\n * @memberof AssertionResultModel\n */\n reasonForExclusion?: string | null;\n /**\n *\n * @type {string}\n * @memberof AssertionResultModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof AssertionResultModel\n */\n updatedAt: string;\n}\n\nexport function AssertionResultModelFromJSON(json: any): AssertionResultModel {\n return AssertionResultModelFromJSONTyped(json, false);\n}\n\nexport function AssertionResultModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionResultModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n status: json['status'],\n excluded: json['excluded'],\n key: json['key'],\n comment: json['comment'],\n payload: json['payload'],\n message: json['message'],\n reasonForExclusion: !exists(json, 'reason_for_exclusion')\n ? undefined\n : json['reason_for_exclusion'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function AssertionResultModelToJSON(\n value?: AssertionResultModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n status: value.status,\n excluded: value.excluded,\n key: value.key,\n comment: value.comment,\n payload: value.payload,\n message: value.message,\n reason_for_exclusion: value.reasonForExclusion,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum AssertionResultModelStatusEnum {\n Compliant = 'compliant',\n Failed = 'failed',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AssertionCategoryModel,\n AssertionCategoryModelFromJSON,\n AssertionCategoryModelFromJSONTyped,\n AssertionCategoryModelToJSON,\n AssertionResultExtended,\n AssertionResultExtendedFromJSON,\n AssertionResultExtendedFromJSONTyped,\n AssertionResultExtendedToJSON,\n AssertionRunExtendedAllOf,\n AssertionRunExtendedAllOfFromJSON,\n AssertionRunExtendedAllOfFromJSONTyped,\n AssertionRunExtendedAllOfToJSON,\n AssertionRunModel,\n AssertionRunModelFromJSON,\n AssertionRunModelFromJSONTyped,\n AssertionRunModelToJSON,\n AssertionSource,\n AssertionSourceFromJSON,\n AssertionSourceFromJSONTyped,\n AssertionSourceToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssertionRunExtended\n */\nexport interface AssertionRunExtended extends AssertionRunModel {\n /**\n *\n * @type {VendorUser}\n * @memberof AssertionRunExtended\n */\n owner?: VendorUser;\n /**\n *\n * @type {Array}\n * @memberof AssertionRunExtended\n */\n assertionResults?: Array;\n}\n\nexport function AssertionRunExtendedFromJSON(json: any): AssertionRunExtended {\n return AssertionRunExtendedFromJSONTyped(json, false);\n}\n\nexport function AssertionRunExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionRunExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...AssertionRunModelFromJSONTyped(json, ignoreDiscriminator),\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n assertionResults: !exists(json, 'assertion_results')\n ? undefined\n : (json['assertion_results'] as Array).map(\n AssertionResultExtendedFromJSON\n ),\n };\n}\n\nexport function AssertionRunExtendedToJSON(\n value?: AssertionRunExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...AssertionRunModelToJSON(value),\n owner: VendorUserToJSON(value.owner),\n assertion_results:\n value.assertionResults === undefined\n ? undefined\n : (value.assertionResults as Array).map(\n AssertionResultExtendedToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AssertionRunModel,\n AssertionRunModelFromJSON,\n AssertionRunModelFromJSONTyped,\n AssertionRunModelToJSON,\n SharedPaginationMeta,\n SharedPaginationMetaFromJSON,\n SharedPaginationMetaFromJSONTyped,\n SharedPaginationMetaToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssertionRunList\n */\nexport interface AssertionRunList {\n /**\n *\n * @type {Array}\n * @memberof AssertionRunList\n */\n data: Array;\n /**\n *\n * @type {SharedPaginationMeta}\n * @memberof AssertionRunList\n */\n meta: SharedPaginationMeta;\n}\n\nexport function AssertionRunListFromJSON(json: any): AssertionRunList {\n return AssertionRunListFromJSONTyped(json, false);\n}\n\nexport function AssertionRunListFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionRunList {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n data: (json['data'] as Array).map(AssertionRunModelFromJSON),\n meta: SharedPaginationMetaFromJSON(json['meta']),\n };\n}\n\nexport function AssertionRunListToJSON(value?: AssertionRunList | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n data: (value.data as Array).map(AssertionRunModelToJSON),\n meta: SharedPaginationMetaToJSON(value.meta),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AssertionCategoryModel,\n AssertionCategoryModelFromJSON,\n AssertionCategoryModelFromJSONTyped,\n AssertionCategoryModelToJSON,\n AssertionSource,\n AssertionSourceFromJSON,\n AssertionSourceFromJSONTyped,\n AssertionSourceToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssertionRunModel\n */\nexport interface AssertionRunModel {\n /**\n *\n * @type {string}\n * @memberof AssertionRunModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof AssertionRunModel\n */\n mode: AssertionRunModelModeEnum;\n /**\n *\n * @type {AssertionSource}\n * @memberof AssertionRunModel\n */\n source?: AssertionSource;\n /**\n *\n * @type {string}\n * @memberof AssertionRunModel\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof AssertionRunModel\n */\n description: string;\n /**\n *\n * @type {AssertionCategoryModel}\n * @memberof AssertionRunModel\n */\n assertionCategory?: AssertionCategoryModel;\n /**\n *\n * @type {string}\n * @memberof AssertionRunModel\n */\n status: AssertionRunModelStatusEnum;\n /**\n *\n * @type {string}\n * @memberof AssertionRunModel\n */\n startedAt: string;\n /**\n *\n * @type {string}\n * @memberof AssertionRunModel\n */\n finishedAt: string | null;\n /**\n *\n * @type {string}\n * @memberof AssertionRunModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof AssertionRunModel\n */\n updatedAt: string;\n}\n\nexport function AssertionRunModelFromJSON(json: any): AssertionRunModel {\n return AssertionRunModelFromJSONTyped(json, false);\n}\n\nexport function AssertionRunModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionRunModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n mode: json['mode'],\n source: !exists(json, 'source')\n ? undefined\n : AssertionSourceFromJSON(json['source']),\n name: !exists(json, 'name') ? undefined : json['name'],\n description: json['description'],\n assertionCategory: !exists(json, 'assertion_category')\n ? undefined\n : AssertionCategoryModelFromJSON(json['assertion_category']),\n status: json['status'],\n startedAt: json['started_at'],\n finishedAt: json['finished_at'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function AssertionRunModelToJSON(value?: AssertionRunModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n mode: value.mode,\n source: AssertionSourceToJSON(value.source),\n name: value.name,\n description: value.description,\n assertion_category: AssertionCategoryModelToJSON(value.assertionCategory),\n status: value.status,\n started_at: value.startedAt,\n finished_at: value.finishedAt,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum AssertionRunModelModeEnum {\n Manual = 'manual',\n Automatic = 'automatic',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum AssertionRunModelStatusEnum {\n InProgress = 'in_progress',\n Compliant = 'compliant',\n Failed = 'failed',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum AssertionSource {\n Manual = 'manual',\n Adoptech = 'adoptech',\n AwsIam = 'aws_iam',\n GitHub = 'git_hub',\n Veremark = 'veremark',\n}\n\nexport function AssertionSourceFromJSON(json: any): AssertionSource {\n return AssertionSourceFromJSONTyped(json, false);\n}\n\nexport function AssertionSourceFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionSource {\n return json as AssertionSource;\n}\n\nexport function AssertionSourceToJSON(value?: AssertionSource | null): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AssertionUpdatePayloadAssertion,\n AssertionUpdatePayloadAssertionFromJSON,\n AssertionUpdatePayloadAssertionFromJSONTyped,\n AssertionUpdatePayloadAssertionToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssertionUpdatePayload\n */\nexport interface AssertionUpdatePayload {\n /**\n *\n * @type {AssertionUpdatePayloadAssertion}\n * @memberof AssertionUpdatePayload\n */\n assertion?: AssertionUpdatePayloadAssertion;\n}\n\nexport function AssertionUpdatePayloadFromJSON(\n json: any\n): AssertionUpdatePayload {\n return AssertionUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function AssertionUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n assertion: !exists(json, 'assertion')\n ? undefined\n : AssertionUpdatePayloadAssertionFromJSON(json['assertion']),\n };\n}\n\nexport function AssertionUpdatePayloadToJSON(\n value?: AssertionUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n assertion: AssertionUpdatePayloadAssertionToJSON(value.assertion),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AssertionFrequency,\n AssertionFrequencyFromJSON,\n AssertionFrequencyFromJSONTyped,\n AssertionFrequencyToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssertionUpdatePayloadAssertion\n */\nexport interface AssertionUpdatePayloadAssertion {\n /**\n *\n * @type {string}\n * @memberof AssertionUpdatePayloadAssertion\n */\n status?: AssertionUpdatePayloadAssertionStatusEnum;\n /**\n *\n * @type {string}\n * @memberof AssertionUpdatePayloadAssertion\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof AssertionUpdatePayloadAssertion\n */\n description?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof AssertionUpdatePayloadAssertion\n */\n autorun?: boolean;\n /**\n *\n * @type {AssertionFrequency}\n * @memberof AssertionUpdatePayloadAssertion\n */\n frequency?: AssertionFrequency;\n /**\n *\n * @type {string}\n * @memberof AssertionUpdatePayloadAssertion\n */\n ownerId?: string;\n /**\n *\n * @type {string}\n * @memberof AssertionUpdatePayloadAssertion\n */\n assertionCategoryId?: string;\n}\n\nexport function AssertionUpdatePayloadAssertionFromJSON(\n json: any\n): AssertionUpdatePayloadAssertion {\n return AssertionUpdatePayloadAssertionFromJSONTyped(json, false);\n}\n\nexport function AssertionUpdatePayloadAssertionFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssertionUpdatePayloadAssertion {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n status: !exists(json, 'status') ? undefined : json['status'],\n name: !exists(json, 'name') ? undefined : json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n autorun: !exists(json, 'autorun') ? undefined : json['autorun'],\n frequency: !exists(json, 'frequency')\n ? undefined\n : AssertionFrequencyFromJSON(json['frequency']),\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n assertionCategoryId: !exists(json, 'assertion_category_id')\n ? undefined\n : json['assertion_category_id'],\n };\n}\n\nexport function AssertionUpdatePayloadAssertionToJSON(\n value?: AssertionUpdatePayloadAssertion | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n status: value.status,\n name: value.name,\n description: value.description,\n autorun: value.autorun,\n frequency: AssertionFrequencyToJSON(value.frequency),\n owner_id: value.ownerId,\n assertion_category_id: value.assertionCategoryId,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum AssertionUpdatePayloadAssertionStatusEnum {\n Pending = 'pending',\n Compliant = 'compliant',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n AssessmentRecipient,\n AssessmentRecipientFromJSON,\n AssessmentRecipientFromJSONTyped,\n AssessmentRecipientToJSON,\n AssessmentSection,\n AssessmentSectionFromJSON,\n AssessmentSectionFromJSONTyped,\n AssessmentSectionToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface Assessment\n */\nexport interface Assessment {\n /**\n *\n * @type {string}\n * @memberof Assessment\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof Assessment\n */\n relativePath?: string | null;\n /**\n *\n * @type {string}\n * @memberof Assessment\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof Assessment\n */\n vendorId?: string;\n /**\n *\n * @type {string}\n * @memberof Assessment\n */\n vendorName?: string;\n /**\n *\n * @type {Access}\n * @memberof Assessment\n */\n access?: Access;\n /**\n *\n * @type {Array}\n * @memberof Assessment\n */\n assessmentSections?: Array;\n /**\n *\n * @type {Array}\n * @memberof Assessment\n */\n assessmentRecipients?: Array;\n /**\n *\n * @type {string}\n * @memberof Assessment\n */\n status?: string;\n /**\n *\n * @type {number}\n * @memberof Assessment\n */\n responsesRequested?: number;\n /**\n *\n * @type {number}\n * @memberof Assessment\n */\n responsesReceived?: number;\n /**\n *\n * @type {VendorUser}\n * @memberof Assessment\n */\n owner?: VendorUser;\n /**\n *\n * @type {string}\n * @memberof Assessment\n */\n ownerId?: string | null;\n /**\n *\n * @type {string}\n * @memberof Assessment\n */\n createdAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof Assessment\n */\n updatedAt?: string | null;\n}\n\nexport function AssessmentFromJSON(json: any): Assessment {\n return AssessmentFromJSONTyped(json, false);\n}\n\nexport function AssessmentFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Assessment {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n relativePath: !exists(json, 'relative_path')\n ? undefined\n : json['relative_path'],\n name: !exists(json, 'name') ? undefined : json['name'],\n vendorId: !exists(json, 'vendor_id') ? undefined : json['vendor_id'],\n vendorName: !exists(json, 'vendor_name') ? undefined : json['vendor_name'],\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n assessmentSections: !exists(json, 'assessment_sections')\n ? undefined\n : (json['assessment_sections'] as Array).map(\n AssessmentSectionFromJSON\n ),\n assessmentRecipients: !exists(json, 'assessment_recipients')\n ? undefined\n : (json['assessment_recipients'] as Array).map(\n AssessmentRecipientFromJSON\n ),\n status: !exists(json, 'status') ? undefined : json['status'],\n responsesRequested: !exists(json, 'responses_requested')\n ? undefined\n : json['responses_requested'],\n responsesReceived: !exists(json, 'responses_received')\n ? undefined\n : json['responses_received'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function AssessmentToJSON(value?: Assessment | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n relative_path: value.relativePath,\n name: value.name,\n vendor_id: value.vendorId,\n vendor_name: value.vendorName,\n access: AccessToJSON(value.access),\n assessment_sections:\n value.assessmentSections === undefined\n ? undefined\n : (value.assessmentSections as Array).map(AssessmentSectionToJSON),\n assessment_recipients:\n value.assessmentRecipients === undefined\n ? undefined\n : (value.assessmentRecipients as Array).map(\n AssessmentRecipientToJSON\n ),\n status: value.status,\n responses_requested: value.responsesRequested,\n responses_received: value.responsesReceived,\n owner: VendorUserToJSON(value.owner),\n owner_id: value.ownerId,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AssessmentCreatePayload\n */\nexport interface AssessmentCreatePayload {\n /**\n *\n * @type {string}\n * @memberof AssessmentCreatePayload\n */\n assessmentTemplateId: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentCreatePayload\n */\n name: string;\n}\n\nexport function AssessmentCreatePayloadFromJSON(\n json: any\n): AssessmentCreatePayload {\n return AssessmentCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function AssessmentCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssessmentCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n assessmentTemplateId: json['assessment_template_id'],\n name: json['name'],\n };\n}\n\nexport function AssessmentCreatePayloadToJSON(\n value?: AssessmentCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n assessment_template_id: value.assessmentTemplateId,\n name: value.name,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AssessmentDeletePayload\n */\nexport interface AssessmentDeletePayload {\n /**\n *\n * @type {Array}\n * @memberof AssessmentDeletePayload\n */\n notificationRecipients?: Array;\n}\n\nexport function AssessmentDeletePayloadFromJSON(\n json: any\n): AssessmentDeletePayload {\n return AssessmentDeletePayloadFromJSONTyped(json, false);\n}\n\nexport function AssessmentDeletePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssessmentDeletePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n notificationRecipients: !exists(json, 'notification_recipients')\n ? undefined\n : json['notification_recipients'],\n };\n}\n\nexport function AssessmentDeletePayloadToJSON(\n value?: AssessmentDeletePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n notification_recipients: value.notificationRecipients,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AssessmentDownload\n */\nexport interface AssessmentDownload {\n /**\n *\n * @type {string}\n * @memberof AssessmentDownload\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentDownload\n */\n assessmentId?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentDownload\n */\n status?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentDownload\n */\n document?: string | null;\n /**\n *\n * @type {Array}\n * @memberof AssessmentDownload\n */\n assessmentResponseIds?: Array;\n /**\n *\n * @type {string}\n * @memberof AssessmentDownload\n */\n updatedAt?: string | null;\n /**\n *\n * @type {object}\n * @memberof AssessmentDownload\n */\n createdAt?: object;\n}\n\nexport function AssessmentDownloadFromJSON(json: any): AssessmentDownload {\n return AssessmentDownloadFromJSONTyped(json, false);\n}\n\nexport function AssessmentDownloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssessmentDownload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n assessmentId: !exists(json, 'assessment_id')\n ? undefined\n : json['assessment_id'],\n status: !exists(json, 'status') ? undefined : json['status'],\n document: !exists(json, 'document') ? undefined : json['document'],\n assessmentResponseIds: !exists(json, 'assessment_response_ids')\n ? undefined\n : json['assessment_response_ids'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n };\n}\n\nexport function AssessmentDownloadToJSON(\n value?: AssessmentDownload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n assessment_id: value.assessmentId,\n status: value.status,\n document: value.document,\n assessment_response_ids: value.assessmentResponseIds,\n updated_at: value.updatedAt,\n created_at: value.createdAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AssessmentRecipient\n */\nexport interface AssessmentRecipient {\n /**\n *\n * @type {string}\n * @memberof AssessmentRecipient\n */\n assessmentResponseId?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentRecipient\n */\n recipientId?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentRecipient\n */\n email?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentRecipient\n */\n vendorId?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentRecipient\n */\n vendorName?: string;\n}\n\nexport function AssessmentRecipientFromJSON(json: any): AssessmentRecipient {\n return AssessmentRecipientFromJSONTyped(json, false);\n}\n\nexport function AssessmentRecipientFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssessmentRecipient {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n assessmentResponseId: !exists(json, 'assessment_response_id')\n ? undefined\n : json['assessment_response_id'],\n recipientId: !exists(json, 'recipient_id')\n ? undefined\n : json['recipient_id'],\n email: !exists(json, 'email') ? undefined : json['email'],\n vendorId: !exists(json, 'vendor_id') ? undefined : json['vendor_id'],\n vendorName: !exists(json, 'vendor_name') ? undefined : json['vendor_name'],\n };\n}\n\nexport function AssessmentRecipientToJSON(\n value?: AssessmentRecipient | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n assessment_response_id: value.assessmentResponseId,\n recipient_id: value.recipientId,\n email: value.email,\n vendor_id: value.vendorId,\n vendor_name: value.vendorName,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n AssessmentResponseAnswer,\n AssessmentResponseAnswerFromJSON,\n AssessmentResponseAnswerFromJSONTyped,\n AssessmentResponseAnswerToJSON,\n AssessmentSection,\n AssessmentSectionFromJSON,\n AssessmentSectionFromJSONTyped,\n AssessmentSectionToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssessmentResponse\n */\nexport interface AssessmentResponse {\n /**\n *\n * @type {string}\n * @memberof AssessmentResponse\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponse\n */\n relativePath?: string | null;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponse\n */\n assessmentId?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponse\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponse\n */\n vendorId?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponse\n */\n vendorName?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponse\n */\n requestingVendorName?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponse\n */\n status?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponse\n */\n dueDate?: string | null;\n /**\n *\n * @type {Access}\n * @memberof AssessmentResponse\n */\n access?: Access;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponse\n */\n updatedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponse\n */\n createdAt?: string;\n /**\n *\n * @type {Array}\n * @memberof AssessmentResponse\n */\n assessmentSections?: Array;\n /**\n *\n * @type {Array}\n * @memberof AssessmentResponse\n */\n assessmentResponseAnswers?: Array;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponse\n */\n ownerId?: string | null;\n /**\n *\n * @type {VendorUser}\n * @memberof AssessmentResponse\n */\n owner?: VendorUser;\n}\n\nexport function AssessmentResponseFromJSON(json: any): AssessmentResponse {\n return AssessmentResponseFromJSONTyped(json, false);\n}\n\nexport function AssessmentResponseFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssessmentResponse {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n relativePath: !exists(json, 'relative_path')\n ? undefined\n : json['relative_path'],\n assessmentId: !exists(json, 'assessment_id')\n ? undefined\n : json['assessment_id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n vendorId: !exists(json, 'vendor_id') ? undefined : json['vendor_id'],\n vendorName: !exists(json, 'vendor_name') ? undefined : json['vendor_name'],\n requestingVendorName: !exists(json, 'requesting_vendor_name')\n ? undefined\n : json['requesting_vendor_name'],\n status: !exists(json, 'status') ? undefined : json['status'],\n dueDate: !exists(json, 'due_date') ? undefined : json['due_date'],\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n assessmentSections: !exists(json, 'assessment_sections')\n ? undefined\n : (json['assessment_sections'] as Array).map(\n AssessmentSectionFromJSON\n ),\n assessmentResponseAnswers: !exists(json, 'assessment_response_answers')\n ? undefined\n : (json['assessment_response_answers'] as Array).map(\n AssessmentResponseAnswerFromJSON\n ),\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n };\n}\n\nexport function AssessmentResponseToJSON(\n value?: AssessmentResponse | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n relative_path: value.relativePath,\n assessment_id: value.assessmentId,\n name: value.name,\n vendor_id: value.vendorId,\n vendor_name: value.vendorName,\n requesting_vendor_name: value.requestingVendorName,\n status: value.status,\n due_date: value.dueDate,\n access: AccessToJSON(value.access),\n updated_at: value.updatedAt,\n created_at: value.createdAt,\n assessment_sections:\n value.assessmentSections === undefined\n ? undefined\n : (value.assessmentSections as Array).map(AssessmentSectionToJSON),\n assessment_response_answers:\n value.assessmentResponseAnswers === undefined\n ? undefined\n : (value.assessmentResponseAnswers as Array).map(\n AssessmentResponseAnswerToJSON\n ),\n owner_id: value.ownerId,\n owner: VendorUserToJSON(value.owner),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AssessmentResponseAnswerFile,\n AssessmentResponseAnswerFileFromJSON,\n AssessmentResponseAnswerFileFromJSONTyped,\n AssessmentResponseAnswerFileToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssessmentResponseAnswer\n */\nexport interface AssessmentResponseAnswer {\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswer\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswer\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswer\n */\n propertyName?: string;\n /**\n *\n * @type {number}\n * @memberof AssessmentResponseAnswer\n */\n index?: number | null;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswer\n */\n datatype?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswer\n */\n status?: AssessmentResponseAnswerStatusEnum;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswer\n */\n updatedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswer\n */\n updatedBy?: string | null;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswer\n */\n value?: string | null;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswer\n */\n displayValue?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof AssessmentResponseAnswer\n */\n readOnly?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof AssessmentResponseAnswer\n */\n showAuditInfo?: boolean;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswer\n */\n confirmedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswer\n */\n confirmedBy?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof AssessmentResponseAnswer\n */\n isConfirmed?: boolean;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswer\n */\n assessmentResponseId?: string;\n /**\n *\n * @type {Array}\n * @memberof AssessmentResponseAnswer\n */\n assessmentResponseAnswerFiles?: Array;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswer\n */\n sourceType?: AssessmentResponseAnswerSourceTypeEnum;\n}\n\nexport function AssessmentResponseAnswerFromJSON(\n json: any\n): AssessmentResponseAnswer {\n return AssessmentResponseAnswerFromJSONTyped(json, false);\n}\n\nexport function AssessmentResponseAnswerFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssessmentResponseAnswer {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n propertyName: !exists(json, 'propertyName')\n ? undefined\n : json['propertyName'],\n index: !exists(json, 'index') ? undefined : json['index'],\n datatype: !exists(json, 'datatype') ? undefined : json['datatype'],\n status: !exists(json, 'status') ? undefined : json['status'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n updatedBy: !exists(json, 'updated_by') ? undefined : json['updated_by'],\n value: !exists(json, 'value') ? undefined : json['value'],\n displayValue: !exists(json, 'display_value')\n ? undefined\n : json['display_value'],\n readOnly: !exists(json, 'read_only') ? undefined : json['read_only'],\n showAuditInfo: !exists(json, 'show_audit_info')\n ? undefined\n : json['show_audit_info'],\n confirmedAt: !exists(json, 'confirmed_at')\n ? undefined\n : json['confirmed_at'],\n confirmedBy: !exists(json, 'confirmed_by')\n ? undefined\n : json['confirmed_by'],\n isConfirmed: !exists(json, 'is_confirmed')\n ? undefined\n : json['is_confirmed'],\n assessmentResponseId: !exists(json, 'assessment_response_id')\n ? undefined\n : json['assessment_response_id'],\n assessmentResponseAnswerFiles: !exists(\n json,\n 'assessment_response_answer_files'\n )\n ? undefined\n : (json['assessment_response_answer_files'] as Array).map(\n AssessmentResponseAnswerFileFromJSON\n ),\n sourceType: !exists(json, 'source_type') ? undefined : json['source_type'],\n };\n}\n\nexport function AssessmentResponseAnswerToJSON(\n value?: AssessmentResponseAnswer | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n propertyName: value.propertyName,\n index: value.index,\n datatype: value.datatype,\n status: value.status,\n updated_at: value.updatedAt,\n updated_by: value.updatedBy,\n value: value.value,\n display_value: value.displayValue,\n read_only: value.readOnly,\n show_audit_info: value.showAuditInfo,\n confirmed_at: value.confirmedAt,\n confirmed_by: value.confirmedBy,\n is_confirmed: value.isConfirmed,\n assessment_response_id: value.assessmentResponseId,\n assessment_response_answer_files:\n value.assessmentResponseAnswerFiles === undefined\n ? undefined\n : (value.assessmentResponseAnswerFiles as Array).map(\n AssessmentResponseAnswerFileToJSON\n ),\n source_type: value.sourceType,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum AssessmentResponseAnswerStatusEnum {\n Answered = 'answered',\n Unanswered = 'unanswered',\n Confirmed = 'confirmed',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum AssessmentResponseAnswerSourceTypeEnum {\n System = 'system',\n AssessmentResponse = 'assessment_response',\n Prepopulated = 'prepopulated',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AssessmentResponseAnswerFile\n */\nexport interface AssessmentResponseAnswerFile {\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswerFile\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswerFile\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswerFile\n */\n url?: string | null;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswerFile\n */\n document?: string | null;\n /**\n *\n * @type {string}\n * @memberof AssessmentResponseAnswerFile\n */\n contentType?: string | null;\n}\n\nexport function AssessmentResponseAnswerFileFromJSON(\n json: any\n): AssessmentResponseAnswerFile {\n return AssessmentResponseAnswerFileFromJSONTyped(json, false);\n}\n\nexport function AssessmentResponseAnswerFileFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssessmentResponseAnswerFile {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n url: !exists(json, 'url') ? undefined : json['url'],\n document: !exists(json, 'document') ? undefined : json['document'],\n contentType: !exists(json, 'content_type')\n ? undefined\n : json['content_type'],\n };\n}\n\nexport function AssessmentResponseAnswerFileToJSON(\n value?: AssessmentResponseAnswerFile | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n url: value.url,\n document: value.document,\n content_type: value.contentType,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Question,\n QuestionFromJSON,\n QuestionFromJSONTyped,\n QuestionToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssessmentSection\n */\nexport interface AssessmentSection {\n /**\n *\n * @type {string}\n * @memberof AssessmentSection\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentSection\n */\n title?: string;\n /**\n *\n * @type {number}\n * @memberof AssessmentSection\n */\n answered?: number;\n /**\n *\n * @type {number}\n * @memberof AssessmentSection\n */\n unanswered?: number;\n /**\n *\n * @type {number}\n * @memberof AssessmentSection\n */\n progress?: number;\n /**\n *\n * @type {Array}\n * @memberof AssessmentSection\n */\n questions?: Array;\n}\n\nexport function AssessmentSectionFromJSON(json: any): AssessmentSection {\n return AssessmentSectionFromJSONTyped(json, false);\n}\n\nexport function AssessmentSectionFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssessmentSection {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n title: !exists(json, 'title') ? undefined : json['title'],\n answered: !exists(json, 'answered') ? undefined : json['answered'],\n unanswered: !exists(json, 'unanswered') ? undefined : json['unanswered'],\n progress: !exists(json, 'progress') ? undefined : json['progress'],\n questions: !exists(json, 'questions')\n ? undefined\n : (json['questions'] as Array).map(QuestionFromJSON),\n };\n}\n\nexport function AssessmentSectionToJSON(value?: AssessmentSection | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n title: value.title,\n answered: value.answered,\n unanswered: value.unanswered,\n progress: value.progress,\n questions:\n value.questions === undefined\n ? undefined\n : (value.questions as Array).map(QuestionToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AssessmentSection,\n AssessmentSectionFromJSON,\n AssessmentSectionFromJSONTyped,\n AssessmentSectionToJSON,\n AssessmentTemplateExtendedAllOf,\n AssessmentTemplateExtendedAllOfFromJSON,\n AssessmentTemplateExtendedAllOfFromJSONTyped,\n AssessmentTemplateExtendedAllOfToJSON,\n AssessmentTemplateModel,\n AssessmentTemplateModelFromJSON,\n AssessmentTemplateModelFromJSONTyped,\n AssessmentTemplateModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AssessmentTemplateExtended\n */\nexport interface AssessmentTemplateExtended extends AssessmentTemplateModel {\n /**\n *\n * @type {Array}\n * @memberof AssessmentTemplateExtended\n */\n assessmentTemplateSections?: Array;\n}\n\nexport function AssessmentTemplateExtendedFromJSON(\n json: any\n): AssessmentTemplateExtended {\n return AssessmentTemplateExtendedFromJSONTyped(json, false);\n}\n\nexport function AssessmentTemplateExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssessmentTemplateExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...AssessmentTemplateModelFromJSONTyped(json, ignoreDiscriminator),\n assessmentTemplateSections: !exists(json, 'assessment_template_sections')\n ? undefined\n : (json['assessment_template_sections'] as Array).map(\n AssessmentSectionFromJSON\n ),\n };\n}\n\nexport function AssessmentTemplateExtendedToJSON(\n value?: AssessmentTemplateExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...AssessmentTemplateModelToJSON(value),\n assessment_template_sections:\n value.assessmentTemplateSections === undefined\n ? undefined\n : (value.assessmentTemplateSections as Array).map(\n AssessmentSectionToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AssessmentTemplateModel\n */\nexport interface AssessmentTemplateModel {\n /**\n *\n * @type {string}\n * @memberof AssessmentTemplateModel\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentTemplateModel\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof AssessmentTemplateModel\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof AssessmentTemplateModel\n */\n vendorId?: string | null;\n /**\n *\n * @type {string}\n * @memberof AssessmentTemplateModel\n */\n createdAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof AssessmentTemplateModel\n */\n updatedAt?: string | null;\n}\n\nexport function AssessmentTemplateModelFromJSON(\n json: any\n): AssessmentTemplateModel {\n return AssessmentTemplateModelFromJSONTyped(json, false);\n}\n\nexport function AssessmentTemplateModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssessmentTemplateModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n vendorId: !exists(json, 'vendor_id') ? undefined : json['vendor_id'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function AssessmentTemplateModelToJSON(\n value?: AssessmentTemplateModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n description: value.description,\n vendor_id: value.vendorId,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AssessmentUpdatePayload\n */\nexport interface AssessmentUpdatePayload {\n /**\n *\n * @type {string}\n * @memberof AssessmentUpdatePayload\n */\n ownerId?: string | null;\n}\n\nexport function AssessmentUpdatePayloadFromJSON(\n json: any\n): AssessmentUpdatePayload {\n return AssessmentUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function AssessmentUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AssessmentUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n };\n}\n\nexport function AssessmentUpdatePayloadToJSON(\n value?: AssessmentUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n owner_id: value.ownerId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum AttestationFrequencyEnum {\n _5Days = '5 days',\n _10Days = '10 days',\n _15Days = '15 days',\n _20Days = '20 days',\n _30Days = '30 days',\n _60Days = '60 days',\n Monthly = 'monthly',\n Quarterly = 'quarterly',\n Annually = 'annually',\n}\n\nexport function AttestationFrequencyEnumFromJSON(\n json: any\n): AttestationFrequencyEnum {\n return AttestationFrequencyEnumFromJSONTyped(json, false);\n}\n\nexport function AttestationFrequencyEnumFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AttestationFrequencyEnum {\n return json as AttestationFrequencyEnum;\n}\n\nexport function AttestationFrequencyEnumToJSON(\n value?: AttestationFrequencyEnum | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AuditCreatePayloadAudit,\n AuditCreatePayloadAuditFromJSON,\n AuditCreatePayloadAuditFromJSONTyped,\n AuditCreatePayloadAuditToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AuditCreatePayload\n */\nexport interface AuditCreatePayload {\n /**\n *\n * @type {AuditCreatePayloadAudit}\n * @memberof AuditCreatePayload\n */\n audit: AuditCreatePayloadAudit;\n}\n\nexport function AuditCreatePayloadFromJSON(json: any): AuditCreatePayload {\n return AuditCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function AuditCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AuditCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n audit: AuditCreatePayloadAuditFromJSON(json['audit']),\n };\n}\n\nexport function AuditCreatePayloadToJSON(\n value?: AuditCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n audit: AuditCreatePayloadAuditToJSON(value.audit),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AuditCreatePayloadAudit\n */\nexport interface AuditCreatePayloadAudit {\n /**\n *\n * @type {string}\n * @memberof AuditCreatePayloadAudit\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof AuditCreatePayloadAudit\n */\n auditTemplateId: string;\n /**\n *\n * @type {string}\n * @memberof AuditCreatePayloadAudit\n */\n ownerId?: string | null;\n /**\n *\n * @type {string}\n * @memberof AuditCreatePayloadAudit\n */\n startedAt?: string | null;\n /**\n *\n * @type {Array}\n * @memberof AuditCreatePayloadAudit\n */\n questionIds: Array;\n}\n\nexport function AuditCreatePayloadAuditFromJSON(\n json: any\n): AuditCreatePayloadAudit {\n return AuditCreatePayloadAuditFromJSONTyped(json, false);\n}\n\nexport function AuditCreatePayloadAuditFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AuditCreatePayloadAudit {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: json['name'],\n auditTemplateId: json['audit_template_id'],\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n startedAt: !exists(json, 'started_at') ? undefined : json['started_at'],\n questionIds: json['question_ids'],\n };\n}\n\nexport function AuditCreatePayloadAuditToJSON(\n value?: AuditCreatePayloadAudit | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n audit_template_id: value.auditTemplateId,\n owner_id: value.ownerId,\n started_at: value.startedAt,\n question_ids: value.questionIds,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n AuditExtendedAllOf,\n AuditExtendedAllOfFromJSON,\n AuditExtendedAllOfFromJSONTyped,\n AuditExtendedAllOfToJSON,\n AuditModel,\n AuditModelFromJSON,\n AuditModelFromJSONTyped,\n AuditModelToJSON,\n AuditType,\n AuditTypeFromJSON,\n AuditTypeFromJSONTyped,\n AuditTypeToJSON,\n Survey,\n SurveyFromJSON,\n SurveyFromJSONTyped,\n SurveyToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AuditExtended\n */\nexport interface AuditExtended extends AuditModel {\n /**\n *\n * @type {Survey}\n * @memberof AuditExtended\n */\n survey: Survey;\n}\n\nexport function AuditExtendedFromJSON(json: any): AuditExtended {\n return AuditExtendedFromJSONTyped(json, false);\n}\n\nexport function AuditExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AuditExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...AuditModelFromJSONTyped(json, ignoreDiscriminator),\n survey: SurveyFromJSON(json['survey']),\n };\n}\n\nexport function AuditExtendedToJSON(value?: AuditExtended | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...AuditModelToJSON(value),\n survey: SurveyToJSON(value.survey),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AuditReviewHistoryItem\n */\nexport interface AuditReviewHistoryItem {\n /**\n *\n * @type {string}\n * @memberof AuditReviewHistoryItem\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof AuditReviewHistoryItem\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof AuditReviewHistoryItem\n */\n rating: AuditReviewHistoryItemRatingEnum;\n /**\n *\n * @type {string}\n * @memberof AuditReviewHistoryItem\n */\n auditorName: string | null;\n /**\n *\n * @type {string}\n * @memberof AuditReviewHistoryItem\n */\n comments: string | null;\n /**\n *\n * @type {string}\n * @memberof AuditReviewHistoryItem\n */\n updatedAt?: string;\n}\n\nexport function AuditReviewHistoryItemFromJSON(\n json: any\n): AuditReviewHistoryItem {\n return AuditReviewHistoryItemFromJSONTyped(json, false);\n}\n\nexport function AuditReviewHistoryItemFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AuditReviewHistoryItem {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n rating: json['rating'],\n auditorName: json['auditor_name'],\n comments: json['comments'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function AuditReviewHistoryItemToJSON(\n value?: AuditReviewHistoryItem | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n rating: value.rating,\n auditor_name: value.auditorName,\n comments: value.comments,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum AuditReviewHistoryItemRatingEnum {\n Compliant = 'Compliant',\n ImprovementNeeded = 'Improvement Needed',\n NotCompliant = 'Not Compliant',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AuditExtendedAllOf,\n AuditExtendedAllOfFromJSON,\n AuditExtendedAllOfFromJSONTyped,\n AuditExtendedAllOfToJSON,\n AuditTemplateModel,\n AuditTemplateModelFromJSON,\n AuditTemplateModelFromJSONTyped,\n AuditTemplateModelToJSON,\n Survey,\n SurveyFromJSON,\n SurveyFromJSONTyped,\n SurveyToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AuditTemplateExtended\n */\nexport interface AuditTemplateExtended {\n /**\n *\n * @type {string}\n * @memberof AuditTemplateExtended\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof AuditTemplateExtended\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof AuditTemplateExtended\n */\n summary: string;\n /**\n *\n * @type {string}\n * @memberof AuditTemplateExtended\n */\n identifier: string;\n /**\n *\n * @type {number}\n * @memberof AuditTemplateExtended\n */\n rowOrder: number;\n /**\n *\n * @type {string}\n * @memberof AuditTemplateExtended\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof AuditTemplateExtended\n */\n updatedAt?: string;\n /**\n *\n * @type {Survey}\n * @memberof AuditTemplateExtended\n */\n survey: Survey;\n}\n\nexport function AuditTemplateExtendedFromJSON(\n json: any\n): AuditTemplateExtended {\n return AuditTemplateExtendedFromJSONTyped(json, false);\n}\n\nexport function AuditTemplateExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AuditTemplateExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n summary: json['summary'],\n identifier: json['identifier'],\n rowOrder: json['row_order'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n survey: SurveyFromJSON(json['survey']),\n };\n}\n\nexport function AuditTemplateExtendedToJSON(\n value?: AuditTemplateExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n summary: value.summary,\n identifier: value.identifier,\n row_order: value.rowOrder,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n survey: SurveyToJSON(value.survey),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AuditTemplateModel\n */\nexport interface AuditTemplateModel {\n /**\n *\n * @type {string}\n * @memberof AuditTemplateModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof AuditTemplateModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof AuditTemplateModel\n */\n summary: string;\n /**\n *\n * @type {string}\n * @memberof AuditTemplateModel\n */\n identifier: string;\n /**\n *\n * @type {number}\n * @memberof AuditTemplateModel\n */\n rowOrder: number;\n /**\n *\n * @type {string}\n * @memberof AuditTemplateModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof AuditTemplateModel\n */\n updatedAt?: string;\n}\n\nexport function AuditTemplateModelFromJSON(json: any): AuditTemplateModel {\n return AuditTemplateModelFromJSONTyped(json, false);\n}\n\nexport function AuditTemplateModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AuditTemplateModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n summary: json['summary'],\n identifier: json['identifier'],\n rowOrder: json['row_order'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function AuditTemplateModelToJSON(\n value?: AuditTemplateModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n summary: value.summary,\n identifier: value.identifier,\n row_order: value.rowOrder,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum AuditType {\n Generic = 'Audit::Generic',\n Meeting = 'Audit::Meeting',\n}\n\nexport function AuditTypeFromJSON(json: any): AuditType {\n return AuditTypeFromJSONTyped(json, false);\n}\n\nexport function AuditTypeFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AuditType {\n return json as AuditType;\n}\n\nexport function AuditTypeToJSON(value?: AuditType | null): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AuditUpdatePayloadAudit,\n AuditUpdatePayloadAuditFromJSON,\n AuditUpdatePayloadAuditFromJSONTyped,\n AuditUpdatePayloadAuditToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface AuditUpdatePayload\n */\nexport interface AuditUpdatePayload {\n /**\n *\n * @type {AuditUpdatePayloadAudit}\n * @memberof AuditUpdatePayload\n */\n audit: AuditUpdatePayloadAudit;\n}\n\nexport function AuditUpdatePayloadFromJSON(json: any): AuditUpdatePayload {\n return AuditUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function AuditUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AuditUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n audit: AuditUpdatePayloadAuditFromJSON(json['audit']),\n };\n}\n\nexport function AuditUpdatePayloadToJSON(\n value?: AuditUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n audit: AuditUpdatePayloadAuditToJSON(value.audit),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface AuditUpdatePayloadAudit\n */\nexport interface AuditUpdatePayloadAudit {\n /**\n *\n * @type {string}\n * @memberof AuditUpdatePayloadAudit\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof AuditUpdatePayloadAudit\n */\n rating?: AuditUpdatePayloadAuditRatingEnum;\n /**\n *\n * @type {string}\n * @memberof AuditUpdatePayloadAudit\n */\n ownerId?: string | null;\n /**\n *\n * @type {string}\n * @memberof AuditUpdatePayloadAudit\n */\n startedAt?: string | null;\n}\n\nexport function AuditUpdatePayloadAuditFromJSON(\n json: any\n): AuditUpdatePayloadAudit {\n return AuditUpdatePayloadAuditFromJSONTyped(json, false);\n}\n\nexport function AuditUpdatePayloadAuditFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): AuditUpdatePayloadAudit {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n rating: !exists(json, 'rating') ? undefined : json['rating'],\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n startedAt: !exists(json, 'started_at') ? undefined : json['started_at'],\n };\n}\n\nexport function AuditUpdatePayloadAuditToJSON(\n value?: AuditUpdatePayloadAudit | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n rating: value.rating,\n owner_id: value.ownerId,\n started_at: value.startedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum AuditUpdatePayloadAuditRatingEnum {\n Compliant = 'compliant',\n ImprovementNeeded = 'improvement_needed',\n NotCompliant = 'not_compliant',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface BoardMember\n */\nexport interface BoardMember {\n /**\n *\n * @type {string}\n * @memberof BoardMember\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof BoardMember\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof BoardMember\n */\n title?: string;\n /**\n *\n * @type {string}\n * @memberof BoardMember\n */\n joinedOn?: string;\n}\n\nexport function BoardMemberFromJSON(json: any): BoardMember {\n return BoardMemberFromJSONTyped(json, false);\n}\n\nexport function BoardMemberFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): BoardMember {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n title: !exists(json, 'title') ? undefined : json['title'],\n joinedOn: !exists(json, 'joined_on') ? undefined : json['joined_on'],\n };\n}\n\nexport function BoardMemberToJSON(value?: BoardMember | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n title: value.title,\n joined_on: value.joinedOn,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n BusinessFunctionCreatePayloadBusinessFunction,\n BusinessFunctionCreatePayloadBusinessFunctionFromJSON,\n BusinessFunctionCreatePayloadBusinessFunctionFromJSONTyped,\n BusinessFunctionCreatePayloadBusinessFunctionToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface BusinessFunctionCreatePayload\n */\nexport interface BusinessFunctionCreatePayload {\n /**\n *\n * @type {BusinessFunctionCreatePayloadBusinessFunction}\n * @memberof BusinessFunctionCreatePayload\n */\n businessFunction: BusinessFunctionCreatePayloadBusinessFunction;\n}\n\nexport function BusinessFunctionCreatePayloadFromJSON(\n json: any\n): BusinessFunctionCreatePayload {\n return BusinessFunctionCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function BusinessFunctionCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): BusinessFunctionCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n businessFunction: BusinessFunctionCreatePayloadBusinessFunctionFromJSON(\n json['business_function']\n ),\n };\n}\n\nexport function BusinessFunctionCreatePayloadToJSON(\n value?: BusinessFunctionCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n business_function: BusinessFunctionCreatePayloadBusinessFunctionToJSON(\n value.businessFunction\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface BusinessFunctionCreatePayloadBusinessFunction\n */\nexport interface BusinessFunctionCreatePayloadBusinessFunction {\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionCreatePayloadBusinessFunction\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionCreatePayloadBusinessFunction\n */\n functionIdentifier: string;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionCreatePayloadBusinessFunction\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionCreatePayloadBusinessFunction\n */\n functionalTag?: string | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionCreatePayloadBusinessFunction\n */\n impactOfDiscontinuing?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof BusinessFunctionCreatePayloadBusinessFunction\n */\n critical?: boolean | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionCreatePayloadBusinessFunction\n */\n licencedActivity?: string | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionCreatePayloadBusinessFunction\n */\n reasonForImportance?: string | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionCreatePayloadBusinessFunction\n */\n reviewDate?: string | null;\n /**\n *\n * @type {number}\n * @memberof BusinessFunctionCreatePayloadBusinessFunction\n */\n rpoHours?: number | null;\n /**\n *\n * @type {number}\n * @memberof BusinessFunctionCreatePayloadBusinessFunction\n */\n rtoHours?: number | null;\n}\n\nexport function BusinessFunctionCreatePayloadBusinessFunctionFromJSON(\n json: any\n): BusinessFunctionCreatePayloadBusinessFunction {\n return BusinessFunctionCreatePayloadBusinessFunctionFromJSONTyped(\n json,\n false\n );\n}\n\nexport function BusinessFunctionCreatePayloadBusinessFunctionFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): BusinessFunctionCreatePayloadBusinessFunction {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: json['name'],\n functionIdentifier: json['function_identifier'],\n description: !exists(json, 'description') ? undefined : json['description'],\n functionalTag: !exists(json, 'functional_tag')\n ? undefined\n : json['functional_tag'],\n impactOfDiscontinuing: !exists(json, 'impact_of_discontinuing')\n ? undefined\n : json['impact_of_discontinuing'],\n critical: !exists(json, 'critical') ? undefined : json['critical'],\n licencedActivity: !exists(json, 'licenced_activity')\n ? undefined\n : json['licenced_activity'],\n reasonForImportance: !exists(json, 'reason_for_importance')\n ? undefined\n : json['reason_for_importance'],\n reviewDate: !exists(json, 'review_date') ? undefined : json['review_date'],\n rpoHours: !exists(json, 'rpo_hours') ? undefined : json['rpo_hours'],\n rtoHours: !exists(json, 'rto_hours') ? undefined : json['rto_hours'],\n };\n}\n\nexport function BusinessFunctionCreatePayloadBusinessFunctionToJSON(\n value?: BusinessFunctionCreatePayloadBusinessFunction | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n function_identifier: value.functionIdentifier,\n description: value.description,\n functional_tag: value.functionalTag,\n impact_of_discontinuing: value.impactOfDiscontinuing,\n critical: value.critical,\n licenced_activity: value.licencedActivity,\n reason_for_importance: value.reasonForImportance,\n review_date: value.reviewDate,\n rpo_hours: value.rpoHours,\n rto_hours: value.rtoHours,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface BusinessFunctionModel\n */\nexport interface BusinessFunctionModel {\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionModel\n */\n functionIdentifier: string;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionModel\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionModel\n */\n functionalTag?: string | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionModel\n */\n impactOfDiscontinuing?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof BusinessFunctionModel\n */\n critical?: boolean | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionModel\n */\n licencedActivity?: string | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionModel\n */\n licencedActivityName?: string | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionModel\n */\n reasonForImportance?: string | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionModel\n */\n reviewDate?: string | null;\n /**\n *\n * @type {number}\n * @memberof BusinessFunctionModel\n */\n rpoHours?: number | null;\n /**\n *\n * @type {number}\n * @memberof BusinessFunctionModel\n */\n rtoHours?: number | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionModel\n */\n updatedAt?: string;\n}\n\nexport function BusinessFunctionModelFromJSON(\n json: any\n): BusinessFunctionModel {\n return BusinessFunctionModelFromJSONTyped(json, false);\n}\n\nexport function BusinessFunctionModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): BusinessFunctionModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n functionIdentifier: json['function_identifier'],\n description: !exists(json, 'description') ? undefined : json['description'],\n functionalTag: !exists(json, 'functional_tag')\n ? undefined\n : json['functional_tag'],\n impactOfDiscontinuing: !exists(json, 'impact_of_discontinuing')\n ? undefined\n : json['impact_of_discontinuing'],\n critical: !exists(json, 'critical') ? undefined : json['critical'],\n licencedActivity: !exists(json, 'licenced_activity')\n ? undefined\n : json['licenced_activity'],\n licencedActivityName: !exists(json, 'licenced_activity_name')\n ? undefined\n : json['licenced_activity_name'],\n reasonForImportance: !exists(json, 'reason_for_importance')\n ? undefined\n : json['reason_for_importance'],\n reviewDate: !exists(json, 'review_date') ? undefined : json['review_date'],\n rpoHours: !exists(json, 'rpo_hours') ? undefined : json['rpo_hours'],\n rtoHours: !exists(json, 'rto_hours') ? undefined : json['rto_hours'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function BusinessFunctionModelToJSON(\n value?: BusinessFunctionModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n function_identifier: value.functionIdentifier,\n description: value.description,\n functional_tag: value.functionalTag,\n impact_of_discontinuing: value.impactOfDiscontinuing,\n critical: value.critical,\n licenced_activity: value.licencedActivity,\n licenced_activity_name: value.licencedActivityName,\n reason_for_importance: value.reasonForImportance,\n review_date: value.reviewDate,\n rpo_hours: value.rpoHours,\n rto_hours: value.rtoHours,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n BusinessFunctionUpdatePayloadBusinessFunction,\n BusinessFunctionUpdatePayloadBusinessFunctionFromJSON,\n BusinessFunctionUpdatePayloadBusinessFunctionFromJSONTyped,\n BusinessFunctionUpdatePayloadBusinessFunctionToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface BusinessFunctionUpdatePayload\n */\nexport interface BusinessFunctionUpdatePayload {\n /**\n *\n * @type {BusinessFunctionUpdatePayloadBusinessFunction}\n * @memberof BusinessFunctionUpdatePayload\n */\n businessFunction: BusinessFunctionUpdatePayloadBusinessFunction;\n}\n\nexport function BusinessFunctionUpdatePayloadFromJSON(\n json: any\n): BusinessFunctionUpdatePayload {\n return BusinessFunctionUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function BusinessFunctionUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): BusinessFunctionUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n businessFunction: BusinessFunctionUpdatePayloadBusinessFunctionFromJSON(\n json['business_function']\n ),\n };\n}\n\nexport function BusinessFunctionUpdatePayloadToJSON(\n value?: BusinessFunctionUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n business_function: BusinessFunctionUpdatePayloadBusinessFunctionToJSON(\n value.businessFunction\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface BusinessFunctionUpdatePayloadBusinessFunction\n */\nexport interface BusinessFunctionUpdatePayloadBusinessFunction {\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionUpdatePayloadBusinessFunction\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionUpdatePayloadBusinessFunction\n */\n functionIdentifier?: string;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionUpdatePayloadBusinessFunction\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionUpdatePayloadBusinessFunction\n */\n functionalTag?: string | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionUpdatePayloadBusinessFunction\n */\n impactOfDiscontinuing?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof BusinessFunctionUpdatePayloadBusinessFunction\n */\n critical?: boolean | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionUpdatePayloadBusinessFunction\n */\n licencedActivity?: string | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionUpdatePayloadBusinessFunction\n */\n reasonForImportance?: string | null;\n /**\n *\n * @type {string}\n * @memberof BusinessFunctionUpdatePayloadBusinessFunction\n */\n reviewDate?: string | null;\n /**\n *\n * @type {number}\n * @memberof BusinessFunctionUpdatePayloadBusinessFunction\n */\n rpoHours?: number | null;\n /**\n *\n * @type {number}\n * @memberof BusinessFunctionUpdatePayloadBusinessFunction\n */\n rtoHours?: number | null;\n}\n\nexport function BusinessFunctionUpdatePayloadBusinessFunctionFromJSON(\n json: any\n): BusinessFunctionUpdatePayloadBusinessFunction {\n return BusinessFunctionUpdatePayloadBusinessFunctionFromJSONTyped(\n json,\n false\n );\n}\n\nexport function BusinessFunctionUpdatePayloadBusinessFunctionFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): BusinessFunctionUpdatePayloadBusinessFunction {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n functionIdentifier: !exists(json, 'function_identifier')\n ? undefined\n : json['function_identifier'],\n description: !exists(json, 'description') ? undefined : json['description'],\n functionalTag: !exists(json, 'functional_tag')\n ? undefined\n : json['functional_tag'],\n impactOfDiscontinuing: !exists(json, 'impact_of_discontinuing')\n ? undefined\n : json['impact_of_discontinuing'],\n critical: !exists(json, 'critical') ? undefined : json['critical'],\n licencedActivity: !exists(json, 'licenced_activity')\n ? undefined\n : json['licenced_activity'],\n reasonForImportance: !exists(json, 'reason_for_importance')\n ? undefined\n : json['reason_for_importance'],\n reviewDate: !exists(json, 'review_date') ? undefined : json['review_date'],\n rpoHours: !exists(json, 'rpo_hours') ? undefined : json['rpo_hours'],\n rtoHours: !exists(json, 'rto_hours') ? undefined : json['rto_hours'],\n };\n}\n\nexport function BusinessFunctionUpdatePayloadBusinessFunctionToJSON(\n value?: BusinessFunctionUpdatePayloadBusinessFunction | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n function_identifier: value.functionIdentifier,\n description: value.description,\n functional_tag: value.functionalTag,\n impact_of_discontinuing: value.impactOfDiscontinuing,\n critical: value.critical,\n licenced_activity: value.licencedActivity,\n reason_for_importance: value.reasonForImportance,\n review_date: value.reviewDate,\n rpo_hours: value.rpoHours,\n rto_hours: value.rtoHours,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n CalendarItemModel,\n CalendarItemModelFromJSON,\n CalendarItemModelFromJSONTyped,\n CalendarItemModelToJSON,\n SharedPaginationMeta,\n SharedPaginationMetaFromJSON,\n SharedPaginationMetaFromJSONTyped,\n SharedPaginationMetaToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface CalendarItemList\n */\nexport interface CalendarItemList {\n /**\n *\n * @type {Array}\n * @memberof CalendarItemList\n */\n data: Array;\n /**\n *\n * @type {SharedPaginationMeta}\n * @memberof CalendarItemList\n */\n meta: SharedPaginationMeta;\n}\n\nexport function CalendarItemListFromJSON(json: any): CalendarItemList {\n return CalendarItemListFromJSONTyped(json, false);\n}\n\nexport function CalendarItemListFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): CalendarItemList {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n data: (json['data'] as Array).map(CalendarItemModelFromJSON),\n meta: SharedPaginationMetaFromJSON(json['meta']),\n };\n}\n\nexport function CalendarItemListToJSON(value?: CalendarItemList | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n data: (value.data as Array).map(CalendarItemModelToJSON),\n meta: SharedPaginationMetaToJSON(value.meta),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorEventEventType,\n VendorEventEventTypeFromJSON,\n VendorEventEventTypeFromJSONTyped,\n VendorEventEventTypeToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface CalendarItemModel\n */\nexport interface CalendarItemModel {\n /**\n *\n * @type {string}\n * @memberof CalendarItemModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof CalendarItemModel\n */\n type: string;\n /**\n *\n * @type {string}\n * @memberof CalendarItemModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof CalendarItemModel\n */\n description: string | null;\n /**\n *\n * @type {string}\n * @memberof CalendarItemModel\n */\n status: CalendarItemModelStatusEnum;\n /**\n *\n * @type {string}\n * @memberof CalendarItemModel\n */\n date: string;\n /**\n *\n * @type {VendorEventEventType}\n * @memberof CalendarItemModel\n */\n eventType: VendorEventEventType;\n /**\n *\n * @type {VendorUser}\n * @memberof CalendarItemModel\n */\n owner?: VendorUser;\n}\n\nexport function CalendarItemModelFromJSON(json: any): CalendarItemModel {\n return CalendarItemModelFromJSONTyped(json, false);\n}\n\nexport function CalendarItemModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): CalendarItemModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n type: json['type'],\n name: json['name'],\n description: json['description'],\n status: json['status'],\n date: json['date'],\n eventType: VendorEventEventTypeFromJSON(json['event_type']),\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n };\n}\n\nexport function CalendarItemModelToJSON(value?: CalendarItemModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n type: value.type,\n name: value.name,\n description: value.description,\n status: value.status,\n date: value.date,\n event_type: VendorEventEventTypeToJSON(value.eventType),\n owner: VendorUserToJSON(value.owner),\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum CalendarItemModelStatusEnum {\n Pending = 'pending',\n Completed = 'completed',\n Overdue = 'overdue',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n CardBillingDetails,\n CardBillingDetailsFromJSON,\n CardBillingDetailsFromJSONTyped,\n CardBillingDetailsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface Card\n */\nexport interface Card {\n /**\n *\n * @type {string}\n * @memberof Card\n */\n brand?: string | null;\n /**\n *\n * @type {string}\n * @memberof Card\n */\n cardNo?: string;\n /**\n *\n * @type {string}\n * @memberof Card\n */\n expMonth?: string;\n /**\n *\n * @type {string}\n * @memberof Card\n */\n expYear?: string;\n /**\n *\n * @type {string}\n * @memberof Card\n */\n cvc?: string;\n /**\n *\n * @type {CardBillingDetails}\n * @memberof Card\n */\n billingDetails?: CardBillingDetails | null;\n}\n\nexport function CardFromJSON(json: any): Card {\n return CardFromJSONTyped(json, false);\n}\n\nexport function CardFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Card {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n brand: !exists(json, 'brand') ? undefined : json['brand'],\n cardNo: !exists(json, 'card_no') ? undefined : json['card_no'],\n expMonth: !exists(json, 'exp_month') ? undefined : json['exp_month'],\n expYear: !exists(json, 'exp_year') ? undefined : json['exp_year'],\n cvc: !exists(json, 'cvc') ? undefined : json['cvc'],\n billingDetails: !exists(json, 'billing_details')\n ? undefined\n : CardBillingDetailsFromJSON(json['billing_details']),\n };\n}\n\nexport function CardToJSON(value?: Card | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n brand: value.brand,\n card_no: value.cardNo,\n exp_month: value.expMonth,\n exp_year: value.expYear,\n cvc: value.cvc,\n billing_details: CardBillingDetailsToJSON(value.billingDetails),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n CardBillingDetailsAddress,\n CardBillingDetailsAddressFromJSON,\n CardBillingDetailsAddressFromJSONTyped,\n CardBillingDetailsAddressToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface CardBillingDetails\n */\nexport interface CardBillingDetails {\n /**\n *\n * @type {string}\n * @memberof CardBillingDetails\n */\n name?: string;\n /**\n *\n * @type {CardBillingDetailsAddress}\n * @memberof CardBillingDetails\n */\n address?: CardBillingDetailsAddress;\n}\n\nexport function CardBillingDetailsFromJSON(json: any): CardBillingDetails {\n return CardBillingDetailsFromJSONTyped(json, false);\n}\n\nexport function CardBillingDetailsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): CardBillingDetails {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n address: !exists(json, 'address')\n ? undefined\n : CardBillingDetailsAddressFromJSON(json['address']),\n };\n}\n\nexport function CardBillingDetailsToJSON(\n value?: CardBillingDetails | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n address: CardBillingDetailsAddressToJSON(value.address),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface CardBillingDetailsAddress\n */\nexport interface CardBillingDetailsAddress {\n /**\n *\n * @type {string}\n * @memberof CardBillingDetailsAddress\n */\n city?: string;\n /**\n *\n * @type {string}\n * @memberof CardBillingDetailsAddress\n */\n country?: string;\n /**\n *\n * @type {string}\n * @memberof CardBillingDetailsAddress\n */\n line1?: string;\n /**\n *\n * @type {string}\n * @memberof CardBillingDetailsAddress\n */\n line2?: string;\n /**\n *\n * @type {string}\n * @memberof CardBillingDetailsAddress\n */\n postalCode?: string;\n /**\n *\n * @type {string}\n * @memberof CardBillingDetailsAddress\n */\n state?: string;\n}\n\nexport function CardBillingDetailsAddressFromJSON(\n json: any\n): CardBillingDetailsAddress {\n return CardBillingDetailsAddressFromJSONTyped(json, false);\n}\n\nexport function CardBillingDetailsAddressFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): CardBillingDetailsAddress {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n city: !exists(json, 'city') ? undefined : json['city'],\n country: !exists(json, 'country') ? undefined : json['country'],\n line1: !exists(json, 'line1') ? undefined : json['line1'],\n line2: !exists(json, 'line2') ? undefined : json['line2'],\n postalCode: !exists(json, 'postal_code') ? undefined : json['postal_code'],\n state: !exists(json, 'state') ? undefined : json['state'],\n };\n}\n\nexport function CardBillingDetailsAddressToJSON(\n value?: CardBillingDetailsAddress | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n city: value.city,\n country: value.country,\n line1: value.line1,\n line2: value.line2,\n postal_code: value.postalCode,\n state: value.state,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n AnswerSetResponseCounts,\n AnswerSetResponseCountsFromJSON,\n AnswerSetResponseCountsFromJSONTyped,\n AnswerSetResponseCountsToJSON,\n Question,\n QuestionFromJSON,\n QuestionFromJSONTyped,\n QuestionToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface Category\n */\nexport interface Category {\n /**\n *\n * @type {string}\n * @memberof Category\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof Category\n */\n name?: string;\n /**\n *\n * @type {AnswerSetResponseCounts}\n * @memberof Category\n */\n responseCounts?: AnswerSetResponseCounts;\n /**\n *\n * @type {string}\n * @memberof Category\n */\n status?: CategoryStatusEnum;\n /**\n *\n * @type {string}\n * @memberof Category\n */\n statusText?: string;\n /**\n *\n * @type {Array}\n * @memberof Category\n */\n questions?: Array;\n}\n\nexport function CategoryFromJSON(json: any): Category {\n return CategoryFromJSONTyped(json, false);\n}\n\nexport function CategoryFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Category {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n responseCounts: !exists(json, 'response_counts')\n ? undefined\n : AnswerSetResponseCountsFromJSON(json['response_counts']),\n status: !exists(json, 'status') ? undefined : json['status'],\n statusText: !exists(json, 'status_text') ? undefined : json['status_text'],\n questions: !exists(json, 'questions')\n ? undefined\n : (json['questions'] as Array).map(QuestionFromJSON),\n };\n}\n\nexport function CategoryToJSON(value?: Category | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n response_counts: AnswerSetResponseCountsToJSON(value.responseCounts),\n status: value.status,\n status_text: value.statusText,\n questions:\n value.questions === undefined\n ? undefined\n : (value.questions as Array).map(QuestionToJSON),\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum CategoryStatusEnum {\n InProgress = 'in_progress',\n Completed = 'completed',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ChatWidgetLogin\n */\nexport interface ChatWidgetLogin {\n /**\n *\n * @type {string}\n * @memberof ChatWidgetLogin\n */\n token?: string | null;\n}\n\nexport function ChatWidgetLoginFromJSON(json: any): ChatWidgetLogin {\n return ChatWidgetLoginFromJSONTyped(json, false);\n}\n\nexport function ChatWidgetLoginFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChatWidgetLogin {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n token: !exists(json, 'token') ? undefined : json['token'],\n };\n}\n\nexport function ChatWidgetLoginToJSON(value?: ChatWidgetLogin | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n token: value.token,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n ChecklistCheckable,\n ChecklistCheckableFromJSON,\n ChecklistCheckableFromJSONTyped,\n ChecklistCheckableToJSON,\n ChecklistItemsGroups,\n ChecklistItemsGroupsFromJSON,\n ChecklistItemsGroupsFromJSONTyped,\n ChecklistItemsGroupsToJSON,\n Survey,\n SurveyFromJSON,\n SurveyFromJSONTyped,\n SurveyToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface Checklist\n */\nexport interface Checklist {\n /**\n *\n * @type {string}\n * @memberof Checklist\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof Checklist\n */\n relativePath?: string | null;\n /**\n *\n * @type {string}\n * @memberof Checklist\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof Checklist\n */\n status: ChecklistStatusEnum;\n /**\n *\n * @type {Access}\n * @memberof Checklist\n */\n access?: Access;\n /**\n *\n * @type {string}\n * @memberof Checklist\n */\n checkableId?: string | null;\n /**\n *\n * @type {Array}\n * @memberof Checklist\n */\n itemsGroups: Array;\n /**\n *\n * @type {string}\n * @memberof Checklist\n */\n checkableType?: ChecklistCheckableTypeEnum;\n /**\n *\n * @type {ChecklistCheckable}\n * @memberof Checklist\n */\n checkable?: ChecklistCheckable | null;\n /**\n *\n * @type {boolean}\n * @memberof Checklist\n */\n common: boolean;\n /**\n *\n * @type {string}\n * @memberof Checklist\n */\n placement: ChecklistPlacementEnum;\n /**\n *\n * @type {boolean}\n * @memberof Checklist\n */\n visibleInLists: boolean;\n /**\n *\n * @type {string}\n * @memberof Checklist\n */\n summary?: string | null;\n /**\n *\n * @type {string}\n * @memberof Checklist\n */\n summaryAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof Checklist\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof Checklist\n */\n descriptionAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof Checklist\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof Checklist\n */\n updatedAt: string;\n /**\n *\n * @type {Survey}\n * @memberof Checklist\n */\n survey?: Survey;\n}\n\nexport function ChecklistFromJSON(json: any): Checklist {\n return ChecklistFromJSONTyped(json, false);\n}\n\nexport function ChecklistFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Checklist {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n relativePath: !exists(json, 'relative_path')\n ? undefined\n : json['relative_path'],\n name: json['name'],\n status: json['status'],\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n checkableId: !exists(json, 'checkable_id')\n ? undefined\n : json['checkable_id'],\n itemsGroups: (json['items_groups'] as Array).map(\n ChecklistItemsGroupsFromJSON\n ),\n checkableType: !exists(json, 'checkable_type')\n ? undefined\n : json['checkable_type'],\n checkable: !exists(json, 'checkable')\n ? undefined\n : ChecklistCheckableFromJSON(json['checkable']),\n common: json['common'],\n placement: json['placement'],\n visibleInLists: json['visible_in_lists'],\n summary: !exists(json, 'summary') ? undefined : json['summary'],\n summaryAsHtml: !exists(json, 'summary_as_html')\n ? undefined\n : json['summary_as_html'],\n description: !exists(json, 'description') ? undefined : json['description'],\n descriptionAsHtml: !exists(json, 'description_as_html')\n ? undefined\n : json['description_as_html'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n survey: !exists(json, 'survey')\n ? undefined\n : SurveyFromJSON(json['survey']),\n };\n}\n\nexport function ChecklistToJSON(value?: Checklist | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n relative_path: value.relativePath,\n name: value.name,\n status: value.status,\n access: AccessToJSON(value.access),\n checkable_id: value.checkableId,\n items_groups: (value.itemsGroups as Array).map(\n ChecklistItemsGroupsToJSON\n ),\n checkable_type: value.checkableType,\n checkable: ChecklistCheckableToJSON(value.checkable),\n common: value.common,\n placement: value.placement,\n visible_in_lists: value.visibleInLists,\n summary: value.summary,\n summary_as_html: value.summaryAsHtml,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n survey: SurveyToJSON(value.survey),\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ChecklistStatusEnum {\n InProgress = 'in_progress',\n Completed = 'completed',\n Closed = 'closed',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum ChecklistCheckableTypeEnum {\n VendorUser = 'VendorUser',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum ChecklistPlacementEnum {\n Sidebar = 'sidebar',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ChecklistChangedStatusPayload\n */\nexport interface ChecklistChangedStatusPayload {\n /**\n *\n * @type {string}\n * @memberof ChecklistChangedStatusPayload\n */\n status: ChecklistChangedStatusPayloadStatusEnum;\n}\n\nexport function ChecklistChangedStatusPayloadFromJSON(\n json: any\n): ChecklistChangedStatusPayload {\n return ChecklistChangedStatusPayloadFromJSONTyped(json, false);\n}\n\nexport function ChecklistChangedStatusPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistChangedStatusPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n status: json['status'],\n };\n}\n\nexport function ChecklistChangedStatusPayloadToJSON(\n value?: ChecklistChangedStatusPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n status: value.status,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ChecklistChangedStatusPayloadStatusEnum {\n Completed = 'completed',\n InProgress = 'in_progress',\n Closed = 'closed',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ChecklistCheckable\n */\nexport interface ChecklistCheckable {\n /**\n *\n * @type {string}\n * @memberof ChecklistCheckable\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistCheckable\n */\n type: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistCheckable\n */\n displayName: string;\n}\n\nexport function ChecklistCheckableFromJSON(json: any): ChecklistCheckable {\n return ChecklistCheckableFromJSONTyped(json, false);\n}\n\nexport function ChecklistCheckableFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistCheckable {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n type: json['type'],\n displayName: json['display_name'],\n };\n}\n\nexport function ChecklistCheckableToJSON(\n value?: ChecklistCheckable | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n type: value.type,\n display_name: value.displayName,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ChecklistCreatePayloadChecklist,\n ChecklistCreatePayloadChecklistFromJSON,\n ChecklistCreatePayloadChecklistFromJSONTyped,\n ChecklistCreatePayloadChecklistToJSON,\n ChecklistCreatePayloadChecklistUsers,\n ChecklistCreatePayloadChecklistUsersFromJSON,\n ChecklistCreatePayloadChecklistUsersFromJSONTyped,\n ChecklistCreatePayloadChecklistUsersToJSON,\n ChecklistCreatePayloadQuestions,\n ChecklistCreatePayloadQuestionsFromJSON,\n ChecklistCreatePayloadQuestionsFromJSONTyped,\n ChecklistCreatePayloadQuestionsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ChecklistCreatePayload\n */\nexport interface ChecklistCreatePayload {\n /**\n *\n * @type {ChecklistCreatePayloadChecklist}\n * @memberof ChecklistCreatePayload\n */\n checklist?: ChecklistCreatePayloadChecklist;\n /**\n *\n * @type {Array}\n * @memberof ChecklistCreatePayload\n */\n questions?: Array;\n /**\n *\n * @type {Array}\n * @memberof ChecklistCreatePayload\n */\n checklistUsers?: Array;\n /**\n *\n * @type {string}\n * @memberof ChecklistCreatePayload\n */\n message?: string;\n}\n\nexport function ChecklistCreatePayloadFromJSON(\n json: any\n): ChecklistCreatePayload {\n return ChecklistCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function ChecklistCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n checklist: !exists(json, 'checklist')\n ? undefined\n : ChecklistCreatePayloadChecklistFromJSON(json['checklist']),\n questions: !exists(json, 'questions')\n ? undefined\n : (json['questions'] as Array).map(\n ChecklistCreatePayloadQuestionsFromJSON\n ),\n checklistUsers: !exists(json, 'checklist_users')\n ? undefined\n : (json['checklist_users'] as Array).map(\n ChecklistCreatePayloadChecklistUsersFromJSON\n ),\n message: !exists(json, 'message') ? undefined : json['message'],\n };\n}\n\nexport function ChecklistCreatePayloadToJSON(\n value?: ChecklistCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n checklist: ChecklistCreatePayloadChecklistToJSON(value.checklist),\n questions:\n value.questions === undefined\n ? undefined\n : (value.questions as Array).map(\n ChecklistCreatePayloadQuestionsToJSON\n ),\n checklist_users:\n value.checklistUsers === undefined\n ? undefined\n : (value.checklistUsers as Array).map(\n ChecklistCreatePayloadChecklistUsersToJSON\n ),\n message: value.message,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ChecklistCreatePayloadChecklist\n */\nexport interface ChecklistCreatePayloadChecklist {\n /**\n *\n * @type {string}\n * @memberof ChecklistCreatePayloadChecklist\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistCreatePayloadChecklist\n */\n placement?: string | null;\n /**\n *\n * @type {string}\n * @memberof ChecklistCreatePayloadChecklist\n */\n relatedTo?: ChecklistCreatePayloadChecklistRelatedToEnum;\n /**\n *\n * @type {string}\n * @memberof ChecklistCreatePayloadChecklist\n */\n checkableId?: string | null;\n /**\n *\n * @type {string}\n * @memberof ChecklistCreatePayloadChecklist\n */\n checkableType?: ChecklistCreatePayloadChecklistCheckableTypeEnum;\n /**\n *\n * @type {boolean}\n * @memberof ChecklistCreatePayloadChecklist\n */\n common?: boolean;\n}\n\nexport function ChecklistCreatePayloadChecklistFromJSON(\n json: any\n): ChecklistCreatePayloadChecklist {\n return ChecklistCreatePayloadChecklistFromJSONTyped(json, false);\n}\n\nexport function ChecklistCreatePayloadChecklistFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistCreatePayloadChecklist {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: json['name'],\n placement: !exists(json, 'placement') ? undefined : json['placement'],\n relatedTo: !exists(json, 'related_to') ? undefined : json['related_to'],\n checkableId: !exists(json, 'checkable_id')\n ? undefined\n : json['checkable_id'],\n checkableType: !exists(json, 'checkable_type')\n ? undefined\n : json['checkable_type'],\n common: !exists(json, 'common') ? undefined : json['common'],\n };\n}\n\nexport function ChecklistCreatePayloadChecklistToJSON(\n value?: ChecklistCreatePayloadChecklist | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n placement: value.placement,\n related_to: value.relatedTo,\n checkable_id: value.checkableId,\n checkable_type: value.checkableType,\n common: value.common,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ChecklistCreatePayloadChecklistRelatedToEnum {\n VendorUser = 'vendor_user',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum ChecklistCreatePayloadChecklistCheckableTypeEnum {\n VendorUser = 'VendorUser',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ChecklistCreatePayloadChecklistUsers\n */\nexport interface ChecklistCreatePayloadChecklistUsers {\n /**\n *\n * @type {string}\n * @memberof ChecklistCreatePayloadChecklistUsers\n */\n vendorUserId: string;\n /**\n *\n * @type {boolean}\n * @memberof ChecklistCreatePayloadChecklistUsers\n */\n responsible?: boolean;\n}\n\nexport function ChecklistCreatePayloadChecklistUsersFromJSON(\n json: any\n): ChecklistCreatePayloadChecklistUsers {\n return ChecklistCreatePayloadChecklistUsersFromJSONTyped(json, false);\n}\n\nexport function ChecklistCreatePayloadChecklistUsersFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistCreatePayloadChecklistUsers {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n vendorUserId: json['vendor_user_id'],\n responsible: !exists(json, 'responsible') ? undefined : json['responsible'],\n };\n}\n\nexport function ChecklistCreatePayloadChecklistUsersToJSON(\n value?: ChecklistCreatePayloadChecklistUsers | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n vendor_user_id: value.vendorUserId,\n responsible: value.responsible,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ChecklistCreatePayloadQuestions\n */\nexport interface ChecklistCreatePayloadQuestions {\n /**\n *\n * @type {string}\n * @memberof ChecklistCreatePayloadQuestions\n */\n questionId?: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistCreatePayloadQuestions\n */\n questionText?: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistCreatePayloadQuestions\n */\n explanatoryText?: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistCreatePayloadQuestions\n */\n questionGroupId: string;\n}\n\nexport function ChecklistCreatePayloadQuestionsFromJSON(\n json: any\n): ChecklistCreatePayloadQuestions {\n return ChecklistCreatePayloadQuestionsFromJSONTyped(json, false);\n}\n\nexport function ChecklistCreatePayloadQuestionsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistCreatePayloadQuestions {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n questionId: !exists(json, 'question_id') ? undefined : json['question_id'],\n questionText: !exists(json, 'question_text')\n ? undefined\n : json['question_text'],\n explanatoryText: !exists(json, 'explanatory_text')\n ? undefined\n : json['explanatory_text'],\n questionGroupId: json['question_group_id'],\n };\n}\n\nexport function ChecklistCreatePayloadQuestionsToJSON(\n value?: ChecklistCreatePayloadQuestions | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n question_id: value.questionId,\n question_text: value.questionText,\n explanatory_text: value.explanatoryText,\n question_group_id: value.questionGroupId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n Checklist,\n ChecklistFromJSON,\n ChecklistFromJSONTyped,\n ChecklistToJSON,\n ChecklistCheckable,\n ChecklistCheckableFromJSON,\n ChecklistCheckableFromJSONTyped,\n ChecklistCheckableToJSON,\n ChecklistExtendedAllOf,\n ChecklistExtendedAllOfFromJSON,\n ChecklistExtendedAllOfFromJSONTyped,\n ChecklistExtendedAllOfToJSON,\n ChecklistExtendedAllOfChecklistVendorUsers,\n ChecklistExtendedAllOfChecklistVendorUsersFromJSON,\n ChecklistExtendedAllOfChecklistVendorUsersFromJSONTyped,\n ChecklistExtendedAllOfChecklistVendorUsersToJSON,\n ChecklistItemsGroups,\n ChecklistItemsGroupsFromJSON,\n ChecklistItemsGroupsFromJSONTyped,\n ChecklistItemsGroupsToJSON,\n Survey,\n SurveyFromJSON,\n SurveyFromJSONTyped,\n SurveyToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ChecklistExtended\n */\nexport interface ChecklistExtended extends Checklist {\n /**\n *\n * @type {string}\n * @memberof ChecklistExtended\n */\n relatedTo: ChecklistExtendedRelatedToEnum;\n /**\n *\n * @type {Array}\n * @memberof ChecklistExtended\n */\n itemsGroups: Array;\n /**\n *\n * @type {Array}\n * @memberof ChecklistExtended\n */\n checklistVendorUsers: Array;\n}\n\nexport function ChecklistExtendedFromJSON(json: any): ChecklistExtended {\n return ChecklistExtendedFromJSONTyped(json, false);\n}\n\nexport function ChecklistExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...ChecklistFromJSONTyped(json, ignoreDiscriminator),\n relatedTo: json['related_to'],\n itemsGroups: (json['items_groups'] as Array).map(\n ChecklistItemsGroupsFromJSON\n ),\n checklistVendorUsers: (json['checklist_vendor_users'] as Array).map(\n ChecklistExtendedAllOfChecklistVendorUsersFromJSON\n ),\n };\n}\n\nexport function ChecklistExtendedToJSON(value?: ChecklistExtended | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...ChecklistToJSON(value),\n related_to: value.relatedTo,\n items_groups: (value.itemsGroups as Array).map(\n ChecklistItemsGroupsToJSON\n ),\n checklist_vendor_users: (value.checklistVendorUsers as Array).map(\n ChecklistExtendedAllOfChecklistVendorUsersToJSON\n ),\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ChecklistExtendedRelatedToEnum {\n VendorUser = 'vendor_user',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ChecklistExtendedAllOfChecklistVendorUsers\n */\nexport interface ChecklistExtendedAllOfChecklistVendorUsers {\n /**\n *\n * @type {string}\n * @memberof ChecklistExtendedAllOfChecklistVendorUsers\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistExtendedAllOfChecklistVendorUsers\n */\n email?: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistExtendedAllOfChecklistVendorUsers\n */\n fullName?: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistExtendedAllOfChecklistVendorUsers\n */\n vendorUserId?: string;\n /**\n *\n * @type {boolean}\n * @memberof ChecklistExtendedAllOfChecklistVendorUsers\n */\n responsible?: boolean;\n /**\n *\n * @type {string}\n * @memberof ChecklistExtendedAllOfChecklistVendorUsers\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistExtendedAllOfChecklistVendorUsers\n */\n updatedAt?: string;\n}\n\nexport function ChecklistExtendedAllOfChecklistVendorUsersFromJSON(\n json: any\n): ChecklistExtendedAllOfChecklistVendorUsers {\n return ChecklistExtendedAllOfChecklistVendorUsersFromJSONTyped(json, false);\n}\n\nexport function ChecklistExtendedAllOfChecklistVendorUsersFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistExtendedAllOfChecklistVendorUsers {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n email: !exists(json, 'email') ? undefined : json['email'],\n fullName: !exists(json, 'full_name') ? undefined : json['full_name'],\n vendorUserId: !exists(json, 'vendor_user_id')\n ? undefined\n : json['vendor_user_id'],\n responsible: !exists(json, 'responsible') ? undefined : json['responsible'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function ChecklistExtendedAllOfChecklistVendorUsersToJSON(\n value?: ChecklistExtendedAllOfChecklistVendorUsers | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n email: value.email,\n full_name: value.fullName,\n vendor_user_id: value.vendorUserId,\n responsible: value.responsible,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ChecklistItem\n */\nexport interface ChecklistItem {\n /**\n *\n * @type {string}\n * @memberof ChecklistItem\n */\n questionId: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistItem\n */\n questionText: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistItem\n */\n questionTextAsHtml?: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistItem\n */\n explanatoryText: string | null;\n /**\n *\n * @type {string}\n * @memberof ChecklistItem\n */\n explanatoryTextAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof ChecklistItem\n */\n datatype: string;\n /**\n *\n * @type {number}\n * @memberof ChecklistItem\n */\n answerId: number | null;\n /**\n *\n * @type {boolean}\n * @memberof ChecklistItem\n */\n answerValue: boolean;\n /**\n *\n * @type {boolean}\n * @memberof ChecklistItem\n */\n answerNotApplicable?: boolean;\n /**\n *\n * @type {string}\n * @memberof ChecklistItem\n */\n answerNote?: string | null;\n /**\n *\n * @type {string}\n * @memberof ChecklistItem\n */\n propertyName: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistItem\n */\n answerUserName?: string | null;\n /**\n *\n * @type {string}\n * @memberof ChecklistItem\n */\n answerUpdatedAt?: string | null;\n /**\n *\n * @type {number}\n * @memberof ChecklistItem\n */\n rowOrder?: number | null;\n}\n\nexport function ChecklistItemFromJSON(json: any): ChecklistItem {\n return ChecklistItemFromJSONTyped(json, false);\n}\n\nexport function ChecklistItemFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistItem {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n questionId: json['question_id'],\n questionText: json['question_text'],\n questionTextAsHtml: !exists(json, 'question_text_as_html')\n ? undefined\n : json['question_text_as_html'],\n explanatoryText: json['explanatory_text'],\n explanatoryTextAsHtml: !exists(json, 'explanatory_text_as_html')\n ? undefined\n : json['explanatory_text_as_html'],\n datatype: json['datatype'],\n answerId: json['answer_id'],\n answerValue: json['answer_value'],\n answerNotApplicable: !exists(json, 'answer_not_applicable')\n ? undefined\n : json['answer_not_applicable'],\n answerNote: !exists(json, 'answer_note') ? undefined : json['answer_note'],\n propertyName: json['property_name'],\n answerUserName: !exists(json, 'answer_user_name')\n ? undefined\n : json['answer_user_name'],\n answerUpdatedAt: !exists(json, 'answer_updated_at')\n ? undefined\n : json['answer_updated_at'],\n rowOrder: !exists(json, 'row_order') ? undefined : json['row_order'],\n };\n}\n\nexport function ChecklistItemToJSON(value?: ChecklistItem | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n question_id: value.questionId,\n question_text: value.questionText,\n question_text_as_html: value.questionTextAsHtml,\n explanatory_text: value.explanatoryText,\n explanatory_text_as_html: value.explanatoryTextAsHtml,\n datatype: value.datatype,\n answer_id: value.answerId,\n answer_value: value.answerValue,\n answer_not_applicable: value.answerNotApplicable,\n answer_note: value.answerNote,\n property_name: value.propertyName,\n answer_user_name: value.answerUserName,\n answer_updated_at: value.answerUpdatedAt,\n row_order: value.rowOrder,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ChecklistItem,\n ChecklistItemFromJSON,\n ChecklistItemFromJSONTyped,\n ChecklistItemToJSON,\n Progress,\n ProgressFromJSON,\n ProgressFromJSONTyped,\n ProgressToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ChecklistItemsGroups\n */\nexport interface ChecklistItemsGroups {\n /**\n *\n * @type {string}\n * @memberof ChecklistItemsGroups\n */\n questionGroupId?: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistItemsGroups\n */\n questionGroupName?: string;\n /**\n *\n * @type {Progress}\n * @memberof ChecklistItemsGroups\n */\n progress?: Progress;\n /**\n *\n * @type {Array}\n * @memberof ChecklistItemsGroups\n */\n items?: Array;\n}\n\nexport function ChecklistItemsGroupsFromJSON(json: any): ChecklistItemsGroups {\n return ChecklistItemsGroupsFromJSONTyped(json, false);\n}\n\nexport function ChecklistItemsGroupsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistItemsGroups {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n questionGroupId: !exists(json, 'question_group_id')\n ? undefined\n : json['question_group_id'],\n questionGroupName: !exists(json, 'question_group_name')\n ? undefined\n : json['question_group_name'],\n progress: !exists(json, 'progress')\n ? undefined\n : ProgressFromJSON(json['progress']),\n items: !exists(json, 'items')\n ? undefined\n : (json['items'] as Array).map(ChecklistItemFromJSON),\n };\n}\n\nexport function ChecklistItemsGroupsToJSON(\n value?: ChecklistItemsGroups | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n question_group_id: value.questionGroupId,\n question_group_name: value.questionGroupName,\n progress: ProgressToJSON(value.progress),\n items:\n value.items === undefined\n ? undefined\n : (value.items as Array).map(ChecklistItemToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n Survey,\n SurveyFromJSON,\n SurveyFromJSONTyped,\n SurveyToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ChecklistTemplate\n */\nexport interface ChecklistTemplate {\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplate\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplate\n */\n name: string;\n /**\n *\n * @type {Access}\n * @memberof ChecklistTemplate\n */\n access?: Access;\n /**\n *\n * @type {boolean}\n * @memberof ChecklistTemplate\n */\n common: boolean;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplate\n */\n relatedTo?: ChecklistTemplateRelatedToEnum;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplate\n */\n summary?: string | null;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplate\n */\n summaryAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplate\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplate\n */\n descriptionAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplate\n */\n version: string | null;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplate\n */\n versionBump: ChecklistTemplateVersionBumpEnum;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplate\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplate\n */\n updatedAt: string;\n /**\n *\n * @type {Survey}\n * @memberof ChecklistTemplate\n */\n survey?: Survey;\n}\n\nexport function ChecklistTemplateFromJSON(json: any): ChecklistTemplate {\n return ChecklistTemplateFromJSONTyped(json, false);\n}\n\nexport function ChecklistTemplateFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistTemplate {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n common: json['common'],\n relatedTo: !exists(json, 'related_to') ? undefined : json['related_to'],\n summary: !exists(json, 'summary') ? undefined : json['summary'],\n summaryAsHtml: !exists(json, 'summary_as_html')\n ? undefined\n : json['summary_as_html'],\n description: !exists(json, 'description') ? undefined : json['description'],\n descriptionAsHtml: !exists(json, 'description_as_html')\n ? undefined\n : json['description_as_html'],\n version: json['version'],\n versionBump: json['version_bump'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n survey: !exists(json, 'survey')\n ? undefined\n : SurveyFromJSON(json['survey']),\n };\n}\n\nexport function ChecklistTemplateToJSON(value?: ChecklistTemplate | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n access: AccessToJSON(value.access),\n common: value.common,\n related_to: value.relatedTo,\n summary: value.summary,\n summary_as_html: value.summaryAsHtml,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n version: value.version,\n version_bump: value.versionBump,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n survey: SurveyToJSON(value.survey),\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ChecklistTemplateRelatedToEnum {\n VendorUser = 'vendor_user',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum ChecklistTemplateVersionBumpEnum {\n Minor = 'minor',\n Major = 'major',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ChecklistTemplateCreatePayloadChecklistTemplate,\n ChecklistTemplateCreatePayloadChecklistTemplateFromJSON,\n ChecklistTemplateCreatePayloadChecklistTemplateFromJSONTyped,\n ChecklistTemplateCreatePayloadChecklistTemplateToJSON,\n ChecklistTemplateCreatePayloadQuestions,\n ChecklistTemplateCreatePayloadQuestionsFromJSON,\n ChecklistTemplateCreatePayloadQuestionsFromJSONTyped,\n ChecklistTemplateCreatePayloadQuestionsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ChecklistTemplateCreatePayload\n */\nexport interface ChecklistTemplateCreatePayload {\n /**\n *\n * @type {ChecklistTemplateCreatePayloadChecklistTemplate}\n * @memberof ChecklistTemplateCreatePayload\n */\n checklistTemplate?: ChecklistTemplateCreatePayloadChecklistTemplate;\n /**\n *\n * @type {Array}\n * @memberof ChecklistTemplateCreatePayload\n */\n questions?: Array;\n}\n\nexport function ChecklistTemplateCreatePayloadFromJSON(\n json: any\n): ChecklistTemplateCreatePayload {\n return ChecklistTemplateCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function ChecklistTemplateCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistTemplateCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n checklistTemplate: !exists(json, 'checklist_template')\n ? undefined\n : ChecklistTemplateCreatePayloadChecklistTemplateFromJSON(\n json['checklist_template']\n ),\n questions: !exists(json, 'questions')\n ? undefined\n : (json['questions'] as Array).map(\n ChecklistTemplateCreatePayloadQuestionsFromJSON\n ),\n };\n}\n\nexport function ChecklistTemplateCreatePayloadToJSON(\n value?: ChecklistTemplateCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n checklist_template: ChecklistTemplateCreatePayloadChecklistTemplateToJSON(\n value.checklistTemplate\n ),\n questions:\n value.questions === undefined\n ? undefined\n : (value.questions as Array).map(\n ChecklistTemplateCreatePayloadQuestionsToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ChecklistTemplateCreatePayloadChecklistTemplate\n */\nexport interface ChecklistTemplateCreatePayloadChecklistTemplate {\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateCreatePayloadChecklistTemplate\n */\n name: string;\n /**\n *\n * @type {boolean}\n * @memberof ChecklistTemplateCreatePayloadChecklistTemplate\n */\n common?: boolean;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateCreatePayloadChecklistTemplate\n */\n relatedTo?: ChecklistTemplateCreatePayloadChecklistTemplateRelatedToEnum;\n}\n\nexport function ChecklistTemplateCreatePayloadChecklistTemplateFromJSON(\n json: any\n): ChecklistTemplateCreatePayloadChecklistTemplate {\n return ChecklistTemplateCreatePayloadChecklistTemplateFromJSONTyped(\n json,\n false\n );\n}\n\nexport function ChecklistTemplateCreatePayloadChecklistTemplateFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistTemplateCreatePayloadChecklistTemplate {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: json['name'],\n common: !exists(json, 'common') ? undefined : json['common'],\n relatedTo: !exists(json, 'related_to') ? undefined : json['related_to'],\n };\n}\n\nexport function ChecklistTemplateCreatePayloadChecklistTemplateToJSON(\n value?: ChecklistTemplateCreatePayloadChecklistTemplate | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n common: value.common,\n related_to: value.relatedTo,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ChecklistTemplateCreatePayloadChecklistTemplateRelatedToEnum {\n VendorUser = 'vendor_user',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ChecklistTemplateCreatePayloadQuestions\n */\nexport interface ChecklistTemplateCreatePayloadQuestions {\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateCreatePayloadQuestions\n */\n questionId?: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateCreatePayloadQuestions\n */\n questionText?: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateCreatePayloadQuestions\n */\n explanatoryText?: string | null;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateCreatePayloadQuestions\n */\n questionGroupId: string;\n}\n\nexport function ChecklistTemplateCreatePayloadQuestionsFromJSON(\n json: any\n): ChecklistTemplateCreatePayloadQuestions {\n return ChecklistTemplateCreatePayloadQuestionsFromJSONTyped(json, false);\n}\n\nexport function ChecklistTemplateCreatePayloadQuestionsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistTemplateCreatePayloadQuestions {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n questionId: !exists(json, 'question_id') ? undefined : json['question_id'],\n questionText: !exists(json, 'question_text')\n ? undefined\n : json['question_text'],\n explanatoryText: !exists(json, 'explanatory_text')\n ? undefined\n : json['explanatory_text'],\n questionGroupId: json['question_group_id'],\n };\n}\n\nexport function ChecklistTemplateCreatePayloadQuestionsToJSON(\n value?: ChecklistTemplateCreatePayloadQuestions | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n question_id: value.questionId,\n question_text: value.questionText,\n explanatory_text: value.explanatoryText,\n question_group_id: value.questionGroupId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n ChecklistTemplate,\n ChecklistTemplateFromJSON,\n ChecklistTemplateFromJSONTyped,\n ChecklistTemplateToJSON,\n ChecklistTemplateExtendedAllOf,\n ChecklistTemplateExtendedAllOfFromJSON,\n ChecklistTemplateExtendedAllOfFromJSONTyped,\n ChecklistTemplateExtendedAllOfToJSON,\n ChecklistTemplateExtendedAllOfItemsGroups,\n ChecklistTemplateExtendedAllOfItemsGroupsFromJSON,\n ChecklistTemplateExtendedAllOfItemsGroupsFromJSONTyped,\n ChecklistTemplateExtendedAllOfItemsGroupsToJSON,\n Survey,\n SurveyFromJSON,\n SurveyFromJSONTyped,\n SurveyToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ChecklistTemplateExtended\n */\nexport interface ChecklistTemplateExtended extends ChecklistTemplate {\n /**\n *\n * @type {Array}\n * @memberof ChecklistTemplateExtended\n */\n itemsGroups: Array;\n}\n\nexport function ChecklistTemplateExtendedFromJSON(\n json: any\n): ChecklistTemplateExtended {\n return ChecklistTemplateExtendedFromJSONTyped(json, false);\n}\n\nexport function ChecklistTemplateExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistTemplateExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...ChecklistTemplateFromJSONTyped(json, ignoreDiscriminator),\n itemsGroups: (json['items_groups'] as Array).map(\n ChecklistTemplateExtendedAllOfItemsGroupsFromJSON\n ),\n };\n}\n\nexport function ChecklistTemplateExtendedToJSON(\n value?: ChecklistTemplateExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...ChecklistTemplateToJSON(value),\n items_groups: (value.itemsGroups as Array).map(\n ChecklistTemplateExtendedAllOfItemsGroupsToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ChecklistTemplateItem,\n ChecklistTemplateItemFromJSON,\n ChecklistTemplateItemFromJSONTyped,\n ChecklistTemplateItemToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ChecklistTemplateExtendedAllOfItemsGroups\n */\nexport interface ChecklistTemplateExtendedAllOfItemsGroups {\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateExtendedAllOfItemsGroups\n */\n questionGroupId?: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateExtendedAllOfItemsGroups\n */\n questionGroupName?: string;\n /**\n *\n * @type {Array}\n * @memberof ChecklistTemplateExtendedAllOfItemsGroups\n */\n items?: Array;\n}\n\nexport function ChecklistTemplateExtendedAllOfItemsGroupsFromJSON(\n json: any\n): ChecklistTemplateExtendedAllOfItemsGroups {\n return ChecklistTemplateExtendedAllOfItemsGroupsFromJSONTyped(json, false);\n}\n\nexport function ChecklistTemplateExtendedAllOfItemsGroupsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistTemplateExtendedAllOfItemsGroups {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n questionGroupId: !exists(json, 'question_group_id')\n ? undefined\n : json['question_group_id'],\n questionGroupName: !exists(json, 'question_group_name')\n ? undefined\n : json['question_group_name'],\n items: !exists(json, 'items')\n ? undefined\n : (json['items'] as Array).map(ChecklistTemplateItemFromJSON),\n };\n}\n\nexport function ChecklistTemplateExtendedAllOfItemsGroupsToJSON(\n value?: ChecklistTemplateExtendedAllOfItemsGroups | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n question_group_id: value.questionGroupId,\n question_group_name: value.questionGroupName,\n items:\n value.items === undefined\n ? undefined\n : (value.items as Array).map(ChecklistTemplateItemToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ChecklistTemplateItem\n */\nexport interface ChecklistTemplateItem {\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateItem\n */\n questionId: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateItem\n */\n questionText: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateItem\n */\n questionTextAsHtml?: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateItem\n */\n explanatoryText: string | null;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateItem\n */\n explanatoryTextAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateItem\n */\n datatype: string;\n /**\n *\n * @type {number}\n * @memberof ChecklistTemplateItem\n */\n rowOrder?: number | null;\n}\n\nexport function ChecklistTemplateItemFromJSON(\n json: any\n): ChecklistTemplateItem {\n return ChecklistTemplateItemFromJSONTyped(json, false);\n}\n\nexport function ChecklistTemplateItemFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistTemplateItem {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n questionId: json['question_id'],\n questionText: json['question_text'],\n questionTextAsHtml: !exists(json, 'question_text_as_html')\n ? undefined\n : json['question_text_as_html'],\n explanatoryText: json['explanatory_text'],\n explanatoryTextAsHtml: !exists(json, 'explanatory_text_as_html')\n ? undefined\n : json['explanatory_text_as_html'],\n datatype: json['datatype'],\n rowOrder: !exists(json, 'row_order') ? undefined : json['row_order'],\n };\n}\n\nexport function ChecklistTemplateItemToJSON(\n value?: ChecklistTemplateItem | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n question_id: value.questionId,\n question_text: value.questionText,\n question_text_as_html: value.questionTextAsHtml,\n explanatory_text: value.explanatoryText,\n explanatory_text_as_html: value.explanatoryTextAsHtml,\n datatype: value.datatype,\n row_order: value.rowOrder,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ChecklistTemplateUpdatePayload\n */\nexport interface ChecklistTemplateUpdatePayload {\n /**\n *\n * @type {string}\n * @memberof ChecklistTemplateUpdatePayload\n */\n name?: string;\n}\n\nexport function ChecklistTemplateUpdatePayloadFromJSON(\n json: any\n): ChecklistTemplateUpdatePayload {\n return ChecklistTemplateUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function ChecklistTemplateUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistTemplateUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n };\n}\n\nexport function ChecklistTemplateUpdatePayloadToJSON(\n value?: ChecklistTemplateUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ChecklistUpdatePayload\n */\nexport interface ChecklistUpdatePayload {\n /**\n *\n * @type {string}\n * @memberof ChecklistUpdatePayload\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof ChecklistUpdatePayload\n */\n placement?: ChecklistUpdatePayloadPlacementEnum;\n}\n\nexport function ChecklistUpdatePayloadFromJSON(\n json: any\n): ChecklistUpdatePayload {\n return ChecklistUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function ChecklistUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ChecklistUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n placement: !exists(json, 'placement') ? undefined : json['placement'],\n };\n}\n\nexport function ChecklistUpdatePayloadToJSON(\n value?: ChecklistUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n placement: value.placement,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ChecklistUpdatePayloadPlacementEnum {\n Sidebar = 'sidebar',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n BoardMember,\n BoardMemberFromJSON,\n BoardMemberFromJSONTyped,\n BoardMemberToJSON,\n CompanyIdentifierModel,\n CompanyIdentifierModelFromJSON,\n CompanyIdentifierModelFromJSONTyped,\n CompanyIdentifierModelToJSON,\n CompanySector,\n CompanySectorFromJSON,\n CompanySectorFromJSONTyped,\n CompanySectorToJSON,\n Office,\n OfficeFromJSON,\n OfficeFromJSONTyped,\n OfficeToJSON,\n OfficerRole,\n OfficerRoleFromJSON,\n OfficerRoleFromJSONTyped,\n OfficerRoleToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface Company\n */\nexport interface Company {\n /**\n *\n * @type {string}\n * @memberof Company\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof Company\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof Company\n */\n legalName?: string | null;\n /**\n *\n * @type {string}\n * @memberof Company\n */\n tradeName?: string | null;\n /**\n *\n * @type {string}\n * @memberof Company\n */\n countryOfIncorporation?: string | null;\n /**\n *\n * @type {string}\n * @memberof Company\n */\n countryOfIncorporationName?: string | null;\n /**\n *\n * @type {string}\n * @memberof Company\n */\n registeredAddress?: string | null;\n /**\n *\n * @type {string}\n * @memberof Company\n */\n primaryIdentifier?: string | null;\n /**\n *\n * @type {Array}\n * @memberof Company\n */\n companyIdentifiers?: Array;\n /**\n *\n * @type {Array}\n * @memberof Company\n */\n offices?: Array;\n /**\n *\n * @type {Array}\n * @memberof Company\n */\n officerRoles?: Array;\n /**\n *\n * @type {Array}\n * @memberof Company\n */\n boardMembers?: Array;\n /**\n *\n * @type {Array}\n * @memberof Company\n */\n companySectors?: Array;\n /**\n *\n * @type {string}\n * @memberof Company\n */\n companyType?: string | null;\n /**\n *\n * @type {string}\n * @memberof Company\n */\n companyTypeDescription?: string | null;\n /**\n *\n * @type {string}\n * @memberof Company\n */\n incorporatedOn?: string | null;\n /**\n *\n * @type {string}\n * @memberof Company\n */\n latestAnnualReturnOn?: string | null;\n /**\n *\n * @type {string}\n * @memberof Company\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof Company\n */\n updatedAt?: string;\n}\n\nexport function CompanyFromJSON(json: any): Company {\n return CompanyFromJSONTyped(json, false);\n}\n\nexport function CompanyFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Company {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n legalName: !exists(json, 'legal_name') ? undefined : json['legal_name'],\n tradeName: !exists(json, 'trade_name') ? undefined : json['trade_name'],\n countryOfIncorporation: !exists(json, 'country_of_incorporation')\n ? undefined\n : json['country_of_incorporation'],\n countryOfIncorporationName: !exists(json, 'country_of_incorporation_name')\n ? undefined\n : json['country_of_incorporation_name'],\n registeredAddress: !exists(json, 'registered_address')\n ? undefined\n : json['registered_address'],\n primaryIdentifier: !exists(json, 'primary_identifier')\n ? undefined\n : json['primary_identifier'],\n companyIdentifiers: !exists(json, 'company_identifiers')\n ? undefined\n : (json['company_identifiers'] as Array).map(\n CompanyIdentifierModelFromJSON\n ),\n offices: !exists(json, 'offices')\n ? undefined\n : (json['offices'] as Array).map(OfficeFromJSON),\n officerRoles: !exists(json, 'officer_roles')\n ? undefined\n : (json['officer_roles'] as Array).map(OfficerRoleFromJSON),\n boardMembers: !exists(json, 'board_members')\n ? undefined\n : (json['board_members'] as Array).map(BoardMemberFromJSON),\n companySectors: !exists(json, 'company_sectors')\n ? undefined\n : (json['company_sectors'] as Array).map(CompanySectorFromJSON),\n companyType: !exists(json, 'company_type')\n ? undefined\n : json['company_type'],\n companyTypeDescription: !exists(json, 'company_type_description')\n ? undefined\n : json['company_type_description'],\n incorporatedOn: !exists(json, 'incorporated_on')\n ? undefined\n : json['incorporated_on'],\n latestAnnualReturnOn: !exists(json, 'latest_annual_return_on')\n ? undefined\n : json['latest_annual_return_on'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function CompanyToJSON(value?: Company | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n legal_name: value.legalName,\n trade_name: value.tradeName,\n country_of_incorporation: value.countryOfIncorporation,\n country_of_incorporation_name: value.countryOfIncorporationName,\n registered_address: value.registeredAddress,\n primary_identifier: value.primaryIdentifier,\n company_identifiers:\n value.companyIdentifiers === undefined\n ? undefined\n : (value.companyIdentifiers as Array).map(\n CompanyIdentifierModelToJSON\n ),\n offices:\n value.offices === undefined\n ? undefined\n : (value.offices as Array).map(OfficeToJSON),\n officer_roles:\n value.officerRoles === undefined\n ? undefined\n : (value.officerRoles as Array).map(OfficerRoleToJSON),\n board_members:\n value.boardMembers === undefined\n ? undefined\n : (value.boardMembers as Array).map(BoardMemberToJSON),\n company_sectors:\n value.companySectors === undefined\n ? undefined\n : (value.companySectors as Array).map(CompanySectorToJSON),\n company_type: value.companyType,\n company_type_description: value.companyTypeDescription,\n incorporated_on: value.incorporatedOn,\n latest_annual_return_on: value.latestAnnualReturnOn,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n BoardMember,\n BoardMemberFromJSON,\n BoardMemberFromJSONTyped,\n BoardMemberToJSON,\n Company,\n CompanyFromJSON,\n CompanyFromJSONTyped,\n CompanyToJSON,\n CompanyExtendedAllOf,\n CompanyExtendedAllOfFromJSON,\n CompanyExtendedAllOfFromJSONTyped,\n CompanyExtendedAllOfToJSON,\n CompanyIdentifierModel,\n CompanyIdentifierModelFromJSON,\n CompanyIdentifierModelFromJSONTyped,\n CompanyIdentifierModelToJSON,\n CompanySector,\n CompanySectorFromJSON,\n CompanySectorFromJSONTyped,\n CompanySectorToJSON,\n Office,\n OfficeFromJSON,\n OfficeFromJSONTyped,\n OfficeToJSON,\n OfficerRole,\n OfficerRoleFromJSON,\n OfficerRoleFromJSONTyped,\n OfficerRoleToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface CompanyExtended\n */\nexport interface CompanyExtended extends Company {\n /**\n *\n * @type {boolean}\n * @memberof CompanyExtended\n */\n preferTradingName?: boolean | null;\n /**\n *\n * @type {string}\n * @memberof CompanyExtended\n */\n brandingColor?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyExtended\n */\n workforceModel?: CompanyExtendedWorkforceModelEnum;\n /**\n *\n * @type {string}\n * @memberof CompanyExtended\n */\n businessSummary?: string | null;\n /**\n *\n * @type {Array}\n * @memberof CompanyExtended\n */\n visiblePolicyFrameworkReferences?: Array;\n /**\n *\n * @type {string}\n * @memberof CompanyExtended\n */\n legalEntityIdentifier?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyExtended\n */\n currencyCode?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyExtended\n */\n financialEntityType?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyExtended\n */\n financialEntityName?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyExtended\n */\n competentAuthority?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyExtended\n */\n competentAuthorityName?: string | null;\n}\n\nexport function CompanyExtendedFromJSON(json: any): CompanyExtended {\n return CompanyExtendedFromJSONTyped(json, false);\n}\n\nexport function CompanyExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): CompanyExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...CompanyFromJSONTyped(json, ignoreDiscriminator),\n preferTradingName: !exists(json, 'prefer_trading_name')\n ? undefined\n : json['prefer_trading_name'],\n brandingColor: !exists(json, 'branding_color')\n ? undefined\n : json['branding_color'],\n workforceModel: !exists(json, 'workforce_model')\n ? undefined\n : json['workforce_model'],\n businessSummary: !exists(json, 'business_summary')\n ? undefined\n : json['business_summary'],\n visiblePolicyFrameworkReferences: !exists(\n json,\n 'visible_policy_framework_references'\n )\n ? undefined\n : json['visible_policy_framework_references'],\n legalEntityIdentifier: !exists(json, 'legal_entity_identifier')\n ? undefined\n : json['legal_entity_identifier'],\n currencyCode: !exists(json, 'currency_code')\n ? undefined\n : json['currency_code'],\n financialEntityType: !exists(json, 'financial_entity_type')\n ? undefined\n : json['financial_entity_type'],\n financialEntityName: !exists(json, 'financial_entity_name')\n ? undefined\n : json['financial_entity_name'],\n competentAuthority: !exists(json, 'competent_authority')\n ? undefined\n : json['competent_authority'],\n competentAuthorityName: !exists(json, 'competent_authority_name')\n ? undefined\n : json['competent_authority_name'],\n };\n}\n\nexport function CompanyExtendedToJSON(value?: CompanyExtended | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...CompanyToJSON(value),\n prefer_trading_name: value.preferTradingName,\n branding_color: value.brandingColor,\n workforce_model: value.workforceModel,\n business_summary: value.businessSummary,\n visible_policy_framework_references: value.visiblePolicyFrameworkReferences,\n legal_entity_identifier: value.legalEntityIdentifier,\n currency_code: value.currencyCode,\n financial_entity_type: value.financialEntityType,\n financial_entity_name: value.financialEntityName,\n competent_authority: value.competentAuthority,\n competent_authority_name: value.competentAuthorityName,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum CompanyExtendedWorkforceModelEnum {\n Distributed = 'distributed',\n Hybrid = 'hybrid',\n Office = 'office',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum CompanyExtendedVisiblePolicyFrameworkReferencesEnum {\n All = 'all',\n Iso27001 = 'iso_27001',\n Iso270012022 = 'iso_27001_2022',\n Soc2 = 'soc_2',\n CyberEssentials = 'cyber_essentials',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface CompanyIdentifierCreatePayload\n */\nexport interface CompanyIdentifierCreatePayload {\n /**\n *\n * @type {string}\n * @memberof CompanyIdentifierCreatePayload\n */\n identifier: string;\n /**\n *\n * @type {string}\n * @memberof CompanyIdentifierCreatePayload\n */\n type: CompanyIdentifierCreatePayloadTypeEnum;\n}\n\nexport function CompanyIdentifierCreatePayloadFromJSON(\n json: any\n): CompanyIdentifierCreatePayload {\n return CompanyIdentifierCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function CompanyIdentifierCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): CompanyIdentifierCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n identifier: json['identifier'],\n type: json['type'],\n };\n}\n\nexport function CompanyIdentifierCreatePayloadToJSON(\n value?: CompanyIdentifierCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n identifier: value.identifier,\n type: value.type,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum CompanyIdentifierCreatePayloadTypeEnum {\n Ukcrn = 'CompanyIdentifier::Ukcrn',\n Ein = 'CompanyIdentifier::Ein',\n Srn = 'CompanyIdentifier::Srn',\n Siren = 'CompanyIdentifier::Siren',\n Siret = 'CompanyIdentifier::Siret',\n Other = 'CompanyIdentifier::Other',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface CompanyIdentifierModel\n */\nexport interface CompanyIdentifierModel {\n /**\n *\n * @type {string}\n * @memberof CompanyIdentifierModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof CompanyIdentifierModel\n */\n identifier: string;\n /**\n *\n * @type {string}\n * @memberof CompanyIdentifierModel\n */\n type: CompanyIdentifierModelTypeEnum;\n /**\n *\n * @type {string}\n * @memberof CompanyIdentifierModel\n */\n displayName: string;\n /**\n *\n * @type {string}\n * @memberof CompanyIdentifierModel\n */\n country: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyIdentifierModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof CompanyIdentifierModel\n */\n updatedAt?: string;\n}\n\nexport function CompanyIdentifierModelFromJSON(\n json: any\n): CompanyIdentifierModel {\n return CompanyIdentifierModelFromJSONTyped(json, false);\n}\n\nexport function CompanyIdentifierModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): CompanyIdentifierModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n identifier: json['identifier'],\n type: json['type'],\n displayName: json['display_name'],\n country: json['country'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function CompanyIdentifierModelToJSON(\n value?: CompanyIdentifierModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n identifier: value.identifier,\n type: value.type,\n display_name: value.displayName,\n country: value.country,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum CompanyIdentifierModelTypeEnum {\n Ukcrn = 'CompanyIdentifier::Ukcrn',\n Ein = 'CompanyIdentifier::Ein',\n Srn = 'CompanyIdentifier::Srn',\n Siren = 'CompanyIdentifier::Siren',\n Siret = 'CompanyIdentifier::Siret',\n Other = 'CompanyIdentifier::Other',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface CompanyIdentifierType\n */\nexport interface CompanyIdentifierType {\n /**\n *\n * @type {string}\n * @memberof CompanyIdentifierType\n */\n type: CompanyIdentifierTypeTypeEnum;\n /**\n *\n * @type {string}\n * @memberof CompanyIdentifierType\n */\n displayName: string;\n /**\n *\n * @type {string}\n * @memberof CompanyIdentifierType\n */\n country: string | null;\n}\n\nexport function CompanyIdentifierTypeFromJSON(\n json: any\n): CompanyIdentifierType {\n return CompanyIdentifierTypeFromJSONTyped(json, false);\n}\n\nexport function CompanyIdentifierTypeFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): CompanyIdentifierType {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n type: json['type'],\n displayName: json['display_name'],\n country: json['country'],\n };\n}\n\nexport function CompanyIdentifierTypeToJSON(\n value?: CompanyIdentifierType | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n type: value.type,\n display_name: value.displayName,\n country: value.country,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum CompanyIdentifierTypeTypeEnum {\n Ukcrn = 'CompanyIdentifier::Ukcrn',\n Ein = 'CompanyIdentifier::Ein',\n Srn = 'CompanyIdentifier::Srn',\n Siren = 'CompanyIdentifier::Siren',\n Siret = 'CompanyIdentifier::Siret',\n Other = 'CompanyIdentifier::Other',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface CompanyIdentifierUpdatePayload\n */\nexport interface CompanyIdentifierUpdatePayload {\n /**\n *\n * @type {string}\n * @memberof CompanyIdentifierUpdatePayload\n */\n identifier?: string;\n}\n\nexport function CompanyIdentifierUpdatePayloadFromJSON(\n json: any\n): CompanyIdentifierUpdatePayload {\n return CompanyIdentifierUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function CompanyIdentifierUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): CompanyIdentifierUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n identifier: !exists(json, 'identifier') ? undefined : json['identifier'],\n };\n}\n\nexport function CompanyIdentifierUpdatePayloadToJSON(\n value?: CompanyIdentifierUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n identifier: value.identifier,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface CompanySector\n */\nexport interface CompanySector {\n /**\n *\n * @type {string}\n * @memberof CompanySector\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof CompanySector\n */\n source?: string;\n /**\n *\n * @type {string}\n * @memberof CompanySector\n */\n code?: string;\n /**\n *\n * @type {string}\n * @memberof CompanySector\n */\n description?: string;\n}\n\nexport function CompanySectorFromJSON(json: any): CompanySector {\n return CompanySectorFromJSONTyped(json, false);\n}\n\nexport function CompanySectorFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): CompanySector {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n source: !exists(json, 'source') ? undefined : json['source'],\n code: !exists(json, 'code') ? undefined : json['code'],\n description: !exists(json, 'description') ? undefined : json['description'],\n };\n}\n\nexport function CompanySectorToJSON(value?: CompanySector | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n source: value.source,\n code: value.code,\n description: value.description,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n CompanyIdentifierModel,\n CompanyIdentifierModelFromJSON,\n CompanyIdentifierModelFromJSONTyped,\n CompanyIdentifierModelToJSON,\n Office,\n OfficeFromJSON,\n OfficeFromJSONTyped,\n OfficeToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface CompanyUpdatePayload\n */\nexport interface CompanyUpdatePayload {\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n legalName?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n tradeName?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n registeredAddress?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n primaryIdentifier?: string | null;\n /**\n *\n * @type {Array}\n * @memberof CompanyUpdatePayload\n */\n companyIdentifiers?: Array;\n /**\n *\n * @type {Array}\n * @memberof CompanyUpdatePayload\n */\n offices?: Array;\n /**\n *\n * @type {boolean}\n * @memberof CompanyUpdatePayload\n */\n preferTradingName?: boolean | null;\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n brandingColor?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n workforceModel?: CompanyUpdatePayloadWorkforceModelEnum;\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n businessSummary?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n companyType?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n incorporatedOn?: string;\n /**\n *\n * @type {Array}\n * @memberof CompanyUpdatePayload\n */\n visiblePolicyFrameworkReferences?: Array;\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n legalEntityIdentifier?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n currencyCode?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n financialEntityType?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n financialEntityName?: string | null;\n /**\n *\n * @type {string}\n * @memberof CompanyUpdatePayload\n */\n competentAuthority?: string | null;\n}\n\nexport function CompanyUpdatePayloadFromJSON(json: any): CompanyUpdatePayload {\n return CompanyUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function CompanyUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): CompanyUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n legalName: !exists(json, 'legal_name') ? undefined : json['legal_name'],\n tradeName: !exists(json, 'trade_name') ? undefined : json['trade_name'],\n registeredAddress: !exists(json, 'registered_address')\n ? undefined\n : json['registered_address'],\n primaryIdentifier: !exists(json, 'primary_identifier')\n ? undefined\n : json['primary_identifier'],\n companyIdentifiers: !exists(json, 'company_identifiers')\n ? undefined\n : (json['company_identifiers'] as Array).map(\n CompanyIdentifierModelFromJSON\n ),\n offices: !exists(json, 'offices')\n ? undefined\n : (json['offices'] as Array).map(OfficeFromJSON),\n preferTradingName: !exists(json, 'prefer_trading_name')\n ? undefined\n : json['prefer_trading_name'],\n brandingColor: !exists(json, 'branding_color')\n ? undefined\n : json['branding_color'],\n workforceModel: !exists(json, 'workforce_model')\n ? undefined\n : json['workforce_model'],\n businessSummary: !exists(json, 'business_summary')\n ? undefined\n : json['business_summary'],\n companyType: !exists(json, 'company_type')\n ? undefined\n : json['company_type'],\n incorporatedOn: !exists(json, 'incorporated_on')\n ? undefined\n : json['incorporated_on'],\n visiblePolicyFrameworkReferences: !exists(\n json,\n 'visible_policy_framework_references'\n )\n ? undefined\n : json['visible_policy_framework_references'],\n legalEntityIdentifier: !exists(json, 'legal_entity_identifier')\n ? undefined\n : json['legal_entity_identifier'],\n currencyCode: !exists(json, 'currency_code')\n ? undefined\n : json['currency_code'],\n financialEntityType: !exists(json, 'financial_entity_type')\n ? undefined\n : json['financial_entity_type'],\n financialEntityName: !exists(json, 'financial_entity_name')\n ? undefined\n : json['financial_entity_name'],\n competentAuthority: !exists(json, 'competent_authority')\n ? undefined\n : json['competent_authority'],\n };\n}\n\nexport function CompanyUpdatePayloadToJSON(\n value?: CompanyUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n legal_name: value.legalName,\n trade_name: value.tradeName,\n registered_address: value.registeredAddress,\n primary_identifier: value.primaryIdentifier,\n company_identifiers:\n value.companyIdentifiers === undefined\n ? undefined\n : (value.companyIdentifiers as Array).map(\n CompanyIdentifierModelToJSON\n ),\n offices:\n value.offices === undefined\n ? undefined\n : (value.offices as Array).map(OfficeToJSON),\n prefer_trading_name: value.preferTradingName,\n branding_color: value.brandingColor,\n workforce_model: value.workforceModel,\n business_summary: value.businessSummary,\n company_type: value.companyType,\n incorporated_on: value.incorporatedOn,\n visible_policy_framework_references: value.visiblePolicyFrameworkReferences,\n legal_entity_identifier: value.legalEntityIdentifier,\n currency_code: value.currencyCode,\n financial_entity_type: value.financialEntityType,\n financial_entity_name: value.financialEntityName,\n competent_authority: value.competentAuthority,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum CompanyUpdatePayloadWorkforceModelEnum {\n Distributed = 'distributed',\n Hybrid = 'hybrid',\n Office = 'office',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum CompanyUpdatePayloadVisiblePolicyFrameworkReferencesEnum {\n All = 'all',\n Iso27001 = 'iso_27001',\n Iso270012022 = 'iso_27001_2022',\n Soc2 = 'soc_2',\n CyberEssentials = 'cyber_essentials',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ControlCategoryExtendedAllOf,\n ControlCategoryExtendedAllOfFromJSON,\n ControlCategoryExtendedAllOfFromJSONTyped,\n ControlCategoryExtendedAllOfToJSON,\n ControlCategoryModel,\n ControlCategoryModelFromJSON,\n ControlCategoryModelFromJSONTyped,\n ControlCategoryModelToJSON,\n ControlExtended,\n ControlExtendedFromJSON,\n ControlExtendedFromJSONTyped,\n ControlExtendedToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ControlCategoryExtended\n */\nexport interface ControlCategoryExtended extends ControlCategoryModel {\n /**\n *\n * @type {Array}\n * @memberof ControlCategoryExtended\n */\n controls: Array;\n}\n\nexport function ControlCategoryExtendedFromJSON(\n json: any\n): ControlCategoryExtended {\n return ControlCategoryExtendedFromJSONTyped(json, false);\n}\n\nexport function ControlCategoryExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlCategoryExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...ControlCategoryModelFromJSONTyped(json, ignoreDiscriminator),\n controls: (json['controls'] as Array).map(ControlExtendedFromJSON),\n };\n}\n\nexport function ControlCategoryExtendedToJSON(\n value?: ControlCategoryExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...ControlCategoryModelToJSON(value),\n controls: (value.controls as Array).map(ControlExtendedToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ControlCategoryModel\n */\nexport interface ControlCategoryModel {\n /**\n *\n * @type {string}\n * @memberof ControlCategoryModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof ControlCategoryModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof ControlCategoryModel\n */\n identifier?: string;\n /**\n *\n * @type {string}\n * @memberof ControlCategoryModel\n */\n description: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlCategoryModel\n */\n descriptionAsHtml: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlCategoryModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof ControlCategoryModel\n */\n updatedAt: string;\n}\n\nexport function ControlCategoryModelFromJSON(json: any): ControlCategoryModel {\n return ControlCategoryModelFromJSONTyped(json, false);\n}\n\nexport function ControlCategoryModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlCategoryModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: !exists(json, 'identifier') ? undefined : json['identifier'],\n description: json['description'],\n descriptionAsHtml: json['description_as_html'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function ControlCategoryModelToJSON(\n value?: ControlCategoryModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ControlCategoryTemplateExtendedAllOf,\n ControlCategoryTemplateExtendedAllOfFromJSON,\n ControlCategoryTemplateExtendedAllOfFromJSONTyped,\n ControlCategoryTemplateExtendedAllOfToJSON,\n ControlCategoryTemplateModel,\n ControlCategoryTemplateModelFromJSON,\n ControlCategoryTemplateModelFromJSONTyped,\n ControlCategoryTemplateModelToJSON,\n ControlTemplateExtended,\n ControlTemplateExtendedFromJSON,\n ControlTemplateExtendedFromJSONTyped,\n ControlTemplateExtendedToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ControlCategoryTemplateExtended\n */\nexport interface ControlCategoryTemplateExtended\n extends ControlCategoryTemplateModel {\n /**\n *\n * @type {Array}\n * @memberof ControlCategoryTemplateExtended\n */\n controlTemplates: Array;\n}\n\nexport function ControlCategoryTemplateExtendedFromJSON(\n json: any\n): ControlCategoryTemplateExtended {\n return ControlCategoryTemplateExtendedFromJSONTyped(json, false);\n}\n\nexport function ControlCategoryTemplateExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlCategoryTemplateExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...ControlCategoryTemplateModelFromJSONTyped(json, ignoreDiscriminator),\n controlTemplates: (json['control_templates'] as Array).map(\n ControlTemplateExtendedFromJSON\n ),\n };\n}\n\nexport function ControlCategoryTemplateExtendedToJSON(\n value?: ControlCategoryTemplateExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...ControlCategoryTemplateModelToJSON(value),\n control_templates: (value.controlTemplates as Array).map(\n ControlTemplateExtendedToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ControlCategoryTemplateModel\n */\nexport interface ControlCategoryTemplateModel {\n /**\n *\n * @type {string}\n * @memberof ControlCategoryTemplateModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof ControlCategoryTemplateModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof ControlCategoryTemplateModel\n */\n identifier?: string;\n /**\n *\n * @type {string}\n * @memberof ControlCategoryTemplateModel\n */\n description: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlCategoryTemplateModel\n */\n descriptionAsHtml: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlCategoryTemplateModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof ControlCategoryTemplateModel\n */\n updatedAt: string;\n}\n\nexport function ControlCategoryTemplateModelFromJSON(\n json: any\n): ControlCategoryTemplateModel {\n return ControlCategoryTemplateModelFromJSONTyped(json, false);\n}\n\nexport function ControlCategoryTemplateModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlCategoryTemplateModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: !exists(json, 'identifier') ? undefined : json['identifier'],\n description: json['description'],\n descriptionAsHtml: json['description_as_html'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function ControlCategoryTemplateModelToJSON(\n value?: ControlCategoryTemplateModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ControlCreatePayloadControl,\n ControlCreatePayloadControlFromJSON,\n ControlCreatePayloadControlFromJSONTyped,\n ControlCreatePayloadControlToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ControlCreatePayload\n */\nexport interface ControlCreatePayload {\n /**\n *\n * @type {ControlCreatePayloadControl}\n * @memberof ControlCreatePayload\n */\n control: ControlCreatePayloadControl;\n}\n\nexport function ControlCreatePayloadFromJSON(json: any): ControlCreatePayload {\n return ControlCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function ControlCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n control: ControlCreatePayloadControlFromJSON(json['control']),\n };\n}\n\nexport function ControlCreatePayloadToJSON(\n value?: ControlCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n control: ControlCreatePayloadControlToJSON(value.control),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ControlCreatePayloadControlFrameworksRelations,\n ControlCreatePayloadControlFrameworksRelationsFromJSON,\n ControlCreatePayloadControlFrameworksRelationsFromJSONTyped,\n ControlCreatePayloadControlFrameworksRelationsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ControlCreatePayloadControl\n */\nexport interface ControlCreatePayloadControl {\n /**\n *\n * @type {string}\n * @memberof ControlCreatePayloadControl\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof ControlCreatePayloadControl\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlCreatePayloadControl\n */\n treatmentPlan?: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlCreatePayloadControl\n */\n assigneeId?: string | null;\n /**\n *\n * @type {Array}\n * @memberof ControlCreatePayloadControl\n */\n tasksIds: Array;\n /**\n *\n * @type {Array}\n * @memberof ControlCreatePayloadControl\n */\n policyCodes?: Array;\n /**\n *\n * @type {Array}\n * @memberof ControlCreatePayloadControl\n */\n vendorPolicyIds?: Array;\n /**\n *\n * @type {Array}\n * @memberof ControlCreatePayloadControl\n */\n frameworksRelations: Array;\n}\n\nexport function ControlCreatePayloadControlFromJSON(\n json: any\n): ControlCreatePayloadControl {\n return ControlCreatePayloadControlFromJSONTyped(json, false);\n}\n\nexport function ControlCreatePayloadControlFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlCreatePayloadControl {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n treatmentPlan: !exists(json, 'treatment_plan')\n ? undefined\n : json['treatment_plan'],\n assigneeId: !exists(json, 'assignee_id') ? undefined : json['assignee_id'],\n tasksIds: json['tasks_ids'],\n policyCodes: !exists(json, 'policy_codes')\n ? undefined\n : json['policy_codes'],\n vendorPolicyIds: !exists(json, 'vendor_policy_ids')\n ? undefined\n : json['vendor_policy_ids'],\n frameworksRelations: (json['frameworks_relations'] as Array).map(\n ControlCreatePayloadControlFrameworksRelationsFromJSON\n ),\n };\n}\n\nexport function ControlCreatePayloadControlToJSON(\n value?: ControlCreatePayloadControl | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n description: value.description,\n treatment_plan: value.treatmentPlan,\n assignee_id: value.assigneeId,\n tasks_ids: value.tasksIds,\n policy_codes: value.policyCodes,\n vendor_policy_ids: value.vendorPolicyIds,\n frameworks_relations: (value.frameworksRelations as Array).map(\n ControlCreatePayloadControlFrameworksRelationsToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ControlCreatePayloadControlFrameworksRelations\n */\nexport interface ControlCreatePayloadControlFrameworksRelations {\n /**\n *\n * @type {string}\n * @memberof ControlCreatePayloadControlFrameworksRelations\n */\n annexRef?: string;\n /**\n *\n * @type {string}\n * @memberof ControlCreatePayloadControlFrameworksRelations\n */\n controlCategoryId?: string;\n}\n\nexport function ControlCreatePayloadControlFrameworksRelationsFromJSON(\n json: any\n): ControlCreatePayloadControlFrameworksRelations {\n return ControlCreatePayloadControlFrameworksRelationsFromJSONTyped(\n json,\n false\n );\n}\n\nexport function ControlCreatePayloadControlFrameworksRelationsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlCreatePayloadControlFrameworksRelations {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n annexRef: !exists(json, 'annex_ref') ? undefined : json['annex_ref'],\n controlCategoryId: !exists(json, 'control_category_id')\n ? undefined\n : json['control_category_id'],\n };\n}\n\nexport function ControlCreatePayloadControlFrameworksRelationsToJSON(\n value?: ControlCreatePayloadControlFrameworksRelations | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n annex_ref: value.annexRef,\n control_category_id: value.controlCategoryId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n ControlExtendedAllOf,\n ControlExtendedAllOfFromJSON,\n ControlExtendedAllOfFromJSONTyped,\n ControlExtendedAllOfToJSON,\n ControlModel,\n ControlModelFromJSON,\n ControlModelFromJSONTyped,\n ControlModelToJSON,\n ControlRiskModel,\n ControlRiskModelFromJSON,\n ControlRiskModelFromJSONTyped,\n ControlRiskModelToJSON,\n FrameworkRelation,\n FrameworkRelationFromJSON,\n FrameworkRelationFromJSONTyped,\n FrameworkRelationToJSON,\n Policy,\n PolicyFromJSON,\n PolicyFromJSONTyped,\n PolicyToJSON,\n ReviewHistoryItemModel,\n ReviewHistoryItemModelFromJSON,\n ReviewHistoryItemModelFromJSONTyped,\n ReviewHistoryItemModelToJSON,\n ReviewStatusEnum,\n ReviewStatusEnumFromJSON,\n ReviewStatusEnumFromJSONTyped,\n ReviewStatusEnumToJSON,\n TaskModel,\n TaskModelFromJSON,\n TaskModelFromJSONTyped,\n TaskModelToJSON,\n VendorPolicy,\n VendorPolicyFromJSON,\n VendorPolicyFromJSONTyped,\n VendorPolicyToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ControlExtended\n */\nexport interface ControlExtended extends ControlModel {\n /**\n *\n * @type {Access}\n * @memberof ControlExtended\n */\n access?: Access;\n /**\n *\n * @type {ReviewHistoryItemModel}\n * @memberof ControlExtended\n */\n lastReview?: ReviewHistoryItemModel;\n /**\n *\n * @type {Array}\n * @memberof ControlExtended\n */\n policies?: Array;\n /**\n *\n * @type {Array}\n * @memberof ControlExtended\n */\n vendorPolicies?: Array;\n /**\n *\n * @type {Array}\n * @memberof ControlExtended\n */\n risks?: Array;\n /**\n *\n * @type {Array}\n * @memberof ControlExtended\n */\n tasks?: Array;\n}\n\nexport function ControlExtendedFromJSON(json: any): ControlExtended {\n return ControlExtendedFromJSONTyped(json, false);\n}\n\nexport function ControlExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...ControlModelFromJSONTyped(json, ignoreDiscriminator),\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n lastReview: !exists(json, 'last_review')\n ? undefined\n : ReviewHistoryItemModelFromJSON(json['last_review']),\n policies: !exists(json, 'policies')\n ? undefined\n : (json['policies'] as Array).map(PolicyFromJSON),\n vendorPolicies: !exists(json, 'vendor_policies')\n ? undefined\n : (json['vendor_policies'] as Array).map(VendorPolicyFromJSON),\n risks: !exists(json, 'risks')\n ? undefined\n : (json['risks'] as Array).map(ControlRiskModelFromJSON),\n tasks: !exists(json, 'tasks')\n ? undefined\n : (json['tasks'] as Array).map(TaskModelFromJSON),\n };\n}\n\nexport function ControlExtendedToJSON(value?: ControlExtended | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...ControlModelToJSON(value),\n access: AccessToJSON(value.access),\n last_review: ReviewHistoryItemModelToJSON(value.lastReview),\n policies:\n value.policies === undefined\n ? undefined\n : (value.policies as Array).map(PolicyToJSON),\n vendor_policies:\n value.vendorPolicies === undefined\n ? undefined\n : (value.vendorPolicies as Array).map(VendorPolicyToJSON),\n risks:\n value.risks === undefined\n ? undefined\n : (value.risks as Array).map(ControlRiskModelToJSON),\n tasks:\n value.tasks === undefined\n ? undefined\n : (value.tasks as Array).map(TaskModelToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n FrameworkRelation,\n FrameworkRelationFromJSON,\n FrameworkRelationFromJSONTyped,\n FrameworkRelationToJSON,\n ReviewStatusEnum,\n ReviewStatusEnumFromJSON,\n ReviewStatusEnumFromJSONTyped,\n ReviewStatusEnumToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ControlModel\n */\nexport interface ControlModel {\n /**\n *\n * @type {string}\n * @memberof ControlModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof ControlModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof ControlModel\n */\n identifier?: string;\n /**\n *\n * @type {string}\n * @memberof ControlModel\n */\n description: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlModel\n */\n descriptionAsHtml: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlModel\n */\n treatmentPlan?: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlModel\n */\n treatmentPlanAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlModel\n */\n reasonForExclusion?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof ControlModel\n */\n applicable: boolean;\n /**\n *\n * @type {boolean}\n * @memberof ControlModel\n */\n custom?: boolean;\n /**\n *\n * @type {string}\n * @memberof ControlModel\n */\n status?: ControlModelStatusEnum;\n /**\n *\n * @type {VendorUser}\n * @memberof ControlModel\n */\n assignee?: VendorUser;\n /**\n *\n * @type {Array}\n * @memberof ControlModel\n */\n frameworksRelations?: Array;\n /**\n *\n * @type {ReviewStatusEnum}\n * @memberof ControlModel\n */\n reviewStatus?: ReviewStatusEnum;\n /**\n *\n * @type {boolean}\n * @memberof ControlModel\n */\n reviewOverdue?: boolean;\n /**\n *\n * @type {string}\n * @memberof ControlModel\n */\n nextReviewDate?: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlModel\n */\n helpArticleUrl?: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof ControlModel\n */\n updatedAt: string;\n}\n\nexport function ControlModelFromJSON(json: any): ControlModel {\n return ControlModelFromJSONTyped(json, false);\n}\n\nexport function ControlModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: !exists(json, 'identifier') ? undefined : json['identifier'],\n description: json['description'],\n descriptionAsHtml: json['description_as_html'],\n treatmentPlan: !exists(json, 'treatment_plan')\n ? undefined\n : json['treatment_plan'],\n treatmentPlanAsHtml: !exists(json, 'treatment_plan_as_html')\n ? undefined\n : json['treatment_plan_as_html'],\n reasonForExclusion: !exists(json, 'reason_for_exclusion')\n ? undefined\n : json['reason_for_exclusion'],\n applicable: json['applicable'],\n custom: !exists(json, 'custom') ? undefined : json['custom'],\n status: !exists(json, 'status') ? undefined : json['status'],\n assignee: !exists(json, 'assignee')\n ? undefined\n : VendorUserFromJSON(json['assignee']),\n frameworksRelations: !exists(json, 'frameworks_relations')\n ? undefined\n : (json['frameworks_relations'] as Array).map(\n FrameworkRelationFromJSON\n ),\n reviewStatus: !exists(json, 'review_status')\n ? undefined\n : ReviewStatusEnumFromJSON(json['review_status']),\n reviewOverdue: !exists(json, 'review_overdue')\n ? undefined\n : json['review_overdue'],\n nextReviewDate: !exists(json, 'next_review_date')\n ? undefined\n : json['next_review_date'],\n helpArticleUrl: !exists(json, 'help_article_url')\n ? undefined\n : json['help_article_url'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function ControlModelToJSON(value?: ControlModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n treatment_plan: value.treatmentPlan,\n treatment_plan_as_html: value.treatmentPlanAsHtml,\n reason_for_exclusion: value.reasonForExclusion,\n applicable: value.applicable,\n custom: value.custom,\n status: value.status,\n assignee: VendorUserToJSON(value.assignee),\n frameworks_relations:\n value.frameworksRelations === undefined\n ? undefined\n : (value.frameworksRelations as Array).map(\n FrameworkRelationToJSON\n ),\n review_status: ReviewStatusEnumToJSON(value.reviewStatus),\n review_overdue: value.reviewOverdue,\n next_review_date: value.nextReviewDate,\n help_article_url: value.helpArticleUrl,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ControlModelStatusEnum {\n Pending = 'pending',\n Failed = 'failed',\n Compliant = 'compliant',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum ControlReviewFrequencyEnum {\n _1Month = '1 month',\n _3Months = '3 months',\n _6Months = '6 months',\n _9Months = '9 months',\n _12Months = '12 months',\n _18Months = '18 months',\n _24Months = '24 months',\n}\n\nexport function ControlReviewFrequencyEnumFromJSON(\n json: any\n): ControlReviewFrequencyEnum {\n return ControlReviewFrequencyEnumFromJSONTyped(json, false);\n}\n\nexport function ControlReviewFrequencyEnumFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlReviewFrequencyEnum {\n return json as ControlReviewFrequencyEnum;\n}\n\nexport function ControlReviewFrequencyEnumToJSON(\n value?: ControlReviewFrequencyEnum | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ControlRiskModel\n */\nexport interface ControlRiskModel {\n /**\n *\n * @type {string}\n * @memberof ControlRiskModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof ControlRiskModel\n */\n name: string;\n}\n\nexport function ControlRiskModelFromJSON(json: any): ControlRiskModel {\n return ControlRiskModelFromJSONTyped(json, false);\n}\n\nexport function ControlRiskModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlRiskModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n };\n}\n\nexport function ControlRiskModelToJSON(value?: ControlRiskModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ControlTemplateExtendedAllOf,\n ControlTemplateExtendedAllOfFromJSON,\n ControlTemplateExtendedAllOfFromJSONTyped,\n ControlTemplateExtendedAllOfToJSON,\n ControlTemplateModel,\n ControlTemplateModelFromJSON,\n ControlTemplateModelFromJSONTyped,\n ControlTemplateModelToJSON,\n TaskTemplateModel,\n TaskTemplateModelFromJSON,\n TaskTemplateModelFromJSONTyped,\n TaskTemplateModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ControlTemplateExtended\n */\nexport interface ControlTemplateExtended extends ControlTemplateModel {\n /**\n *\n * @type {Array}\n * @memberof ControlTemplateExtended\n */\n taskTemplates: Array;\n}\n\nexport function ControlTemplateExtendedFromJSON(\n json: any\n): ControlTemplateExtended {\n return ControlTemplateExtendedFromJSONTyped(json, false);\n}\n\nexport function ControlTemplateExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlTemplateExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...ControlTemplateModelFromJSONTyped(json, ignoreDiscriminator),\n taskTemplates: (json['task_templates'] as Array).map(\n TaskTemplateModelFromJSON\n ),\n };\n}\n\nexport function ControlTemplateExtendedToJSON(\n value?: ControlTemplateExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...ControlTemplateModelToJSON(value),\n task_templates: (value.taskTemplates as Array).map(\n TaskTemplateModelToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ControlTemplateModel\n */\nexport interface ControlTemplateModel {\n /**\n *\n * @type {string}\n * @memberof ControlTemplateModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof ControlTemplateModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof ControlTemplateModel\n */\n identifier?: string;\n /**\n *\n * @type {string}\n * @memberof ControlTemplateModel\n */\n description: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlTemplateModel\n */\n descriptionAsHtml: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlTemplateModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof ControlTemplateModel\n */\n updatedAt: string;\n}\n\nexport function ControlTemplateModelFromJSON(json: any): ControlTemplateModel {\n return ControlTemplateModelFromJSONTyped(json, false);\n}\n\nexport function ControlTemplateModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlTemplateModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: !exists(json, 'identifier') ? undefined : json['identifier'],\n description: json['description'],\n descriptionAsHtml: json['description_as_html'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function ControlTemplateModelToJSON(\n value?: ControlTemplateModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ControlUpdatePayloadControl,\n ControlUpdatePayloadControlFromJSON,\n ControlUpdatePayloadControlFromJSONTyped,\n ControlUpdatePayloadControlToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ControlUpdatePayload\n */\nexport interface ControlUpdatePayload {\n /**\n *\n * @type {ControlUpdatePayloadControl}\n * @memberof ControlUpdatePayload\n */\n control?: ControlUpdatePayloadControl;\n}\n\nexport function ControlUpdatePayloadFromJSON(json: any): ControlUpdatePayload {\n return ControlUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function ControlUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n control: !exists(json, 'control')\n ? undefined\n : ControlUpdatePayloadControlFromJSON(json['control']),\n };\n}\n\nexport function ControlUpdatePayloadToJSON(\n value?: ControlUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n control: ControlUpdatePayloadControlToJSON(value.control),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ControlCreatePayloadControlFrameworksRelations,\n ControlCreatePayloadControlFrameworksRelationsFromJSON,\n ControlCreatePayloadControlFrameworksRelationsFromJSONTyped,\n ControlCreatePayloadControlFrameworksRelationsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ControlUpdatePayloadControl\n */\nexport interface ControlUpdatePayloadControl {\n /**\n *\n * @type {string}\n * @memberof ControlUpdatePayloadControl\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlUpdatePayloadControl\n */\n treatmentPlan?: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlUpdatePayloadControl\n */\n assigneeId?: string | null;\n /**\n *\n * @type {string}\n * @memberof ControlUpdatePayloadControl\n */\n nextReviewDate?: string | null;\n /**\n *\n * @type {Array}\n * @memberof ControlUpdatePayloadControl\n */\n tasksIds: Array;\n /**\n *\n * @type {Array}\n * @memberof ControlUpdatePayloadControl\n */\n policyCodes?: Array;\n /**\n *\n * @type {Array}\n * @memberof ControlUpdatePayloadControl\n */\n vendorPolicyIds?: Array;\n /**\n *\n * @type {Array}\n * @memberof ControlUpdatePayloadControl\n */\n frameworksRelations: Array;\n}\n\nexport function ControlUpdatePayloadControlFromJSON(\n json: any\n): ControlUpdatePayloadControl {\n return ControlUpdatePayloadControlFromJSONTyped(json, false);\n}\n\nexport function ControlUpdatePayloadControlFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlUpdatePayloadControl {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n description: !exists(json, 'description') ? undefined : json['description'],\n treatmentPlan: !exists(json, 'treatment_plan')\n ? undefined\n : json['treatment_plan'],\n assigneeId: !exists(json, 'assignee_id') ? undefined : json['assignee_id'],\n nextReviewDate: !exists(json, 'next_review_date')\n ? undefined\n : json['next_review_date'],\n tasksIds: json['tasks_ids'],\n policyCodes: !exists(json, 'policy_codes')\n ? undefined\n : json['policy_codes'],\n vendorPolicyIds: !exists(json, 'vendor_policy_ids')\n ? undefined\n : json['vendor_policy_ids'],\n frameworksRelations: (json['frameworks_relations'] as Array).map(\n ControlCreatePayloadControlFrameworksRelationsFromJSON\n ),\n };\n}\n\nexport function ControlUpdatePayloadControlToJSON(\n value?: ControlUpdatePayloadControl | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n description: value.description,\n treatment_plan: value.treatmentPlan,\n assignee_id: value.assigneeId,\n next_review_date: value.nextReviewDate,\n tasks_ids: value.tasksIds,\n policy_codes: value.policyCodes,\n vendor_policy_ids: value.vendorPolicyIds,\n frameworks_relations: (value.frameworksRelations as Array).map(\n ControlCreatePayloadControlFrameworksRelationsToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ControlUpdateStatusPayloadControl,\n ControlUpdateStatusPayloadControlFromJSON,\n ControlUpdateStatusPayloadControlFromJSONTyped,\n ControlUpdateStatusPayloadControlToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ControlUpdateStatusPayload\n */\nexport interface ControlUpdateStatusPayload {\n /**\n *\n * @type {ControlUpdateStatusPayloadControl}\n * @memberof ControlUpdateStatusPayload\n */\n control?: ControlUpdateStatusPayloadControl;\n}\n\nexport function ControlUpdateStatusPayloadFromJSON(\n json: any\n): ControlUpdateStatusPayload {\n return ControlUpdateStatusPayloadFromJSONTyped(json, false);\n}\n\nexport function ControlUpdateStatusPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlUpdateStatusPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n control: !exists(json, 'control')\n ? undefined\n : ControlUpdateStatusPayloadControlFromJSON(json['control']),\n };\n}\n\nexport function ControlUpdateStatusPayloadToJSON(\n value?: ControlUpdateStatusPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n control: ControlUpdateStatusPayloadControlToJSON(value.control),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ControlUpdateStatusPayloadControl\n */\nexport interface ControlUpdateStatusPayloadControl {\n /**\n *\n * @type {boolean}\n * @memberof ControlUpdateStatusPayloadControl\n */\n applicable: boolean;\n /**\n *\n * @type {string}\n * @memberof ControlUpdateStatusPayloadControl\n */\n reasonForExclusion?: string | null;\n}\n\nexport function ControlUpdateStatusPayloadControlFromJSON(\n json: any\n): ControlUpdateStatusPayloadControl {\n return ControlUpdateStatusPayloadControlFromJSONTyped(json, false);\n}\n\nexport function ControlUpdateStatusPayloadControlFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ControlUpdateStatusPayloadControl {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n applicable: json['applicable'],\n reasonForExclusion: !exists(json, 'reason_for_exclusion')\n ? undefined\n : json['reason_for_exclusion'],\n };\n}\n\nexport function ControlUpdateStatusPayloadControlToJSON(\n value?: ControlUpdateStatusPayloadControl | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n applicable: value.applicable,\n reason_for_exclusion: value.reasonForExclusion,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n CorrectiveActionExtendedAllOf,\n CorrectiveActionExtendedAllOfFromJSON,\n CorrectiveActionExtendedAllOfFromJSONTyped,\n CorrectiveActionExtendedAllOfToJSON,\n CorrectiveActionModel,\n CorrectiveActionModelFromJSON,\n CorrectiveActionModelFromJSONTyped,\n CorrectiveActionModelToJSON,\n SharedAttachmentModel,\n SharedAttachmentModelFromJSON,\n SharedAttachmentModelFromJSONTyped,\n SharedAttachmentModelToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface CorrectiveActionExtended\n */\nexport interface CorrectiveActionExtended extends CorrectiveActionModel {\n /**\n *\n * @type {Array}\n * @memberof CorrectiveActionExtended\n */\n attachments?: Array;\n}\n\nexport function CorrectiveActionExtendedFromJSON(\n json: any\n): CorrectiveActionExtended {\n return CorrectiveActionExtendedFromJSONTyped(json, false);\n}\n\nexport function CorrectiveActionExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): CorrectiveActionExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...CorrectiveActionModelFromJSONTyped(json, ignoreDiscriminator),\n attachments: !exists(json, 'attachments')\n ? undefined\n : (json['attachments'] as Array).map(SharedAttachmentModelFromJSON),\n };\n}\n\nexport function CorrectiveActionExtendedToJSON(\n value?: CorrectiveActionExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...CorrectiveActionModelToJSON(value),\n attachments:\n value.attachments === undefined\n ? undefined\n : (value.attachments as Array).map(SharedAttachmentModelToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface CorrectiveActionModel\n */\nexport interface CorrectiveActionModel {\n /**\n *\n * @type {string}\n * @memberof CorrectiveActionModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof CorrectiveActionModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof CorrectiveActionModel\n */\n description: string;\n /**\n *\n * @type {string}\n * @memberof CorrectiveActionModel\n */\n identifier: string;\n /**\n *\n * @type {string}\n * @memberof CorrectiveActionModel\n */\n correctiveActions: string;\n /**\n *\n * @type {string}\n * @memberof CorrectiveActionModel\n */\n rootCause: string;\n /**\n *\n * @type {string}\n * @memberof CorrectiveActionModel\n */\n raisedBy: string;\n /**\n *\n * @type {VendorUser}\n * @memberof CorrectiveActionModel\n */\n owner: VendorUser;\n /**\n *\n * @type {string}\n * @memberof CorrectiveActionModel\n */\n actionType: CorrectiveActionModelActionTypeEnum;\n /**\n *\n * @type {boolean}\n * @memberof CorrectiveActionModel\n */\n completed?: boolean;\n /**\n *\n * @type {string}\n * @memberof CorrectiveActionModel\n */\n url?: string | null;\n /**\n *\n * @type {string}\n * @memberof CorrectiveActionModel\n */\n dateIdentified: string;\n /**\n *\n * @type {string}\n * @memberof CorrectiveActionModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof CorrectiveActionModel\n */\n updatedAt?: string;\n}\n\nexport function CorrectiveActionModelFromJSON(\n json: any\n): CorrectiveActionModel {\n return CorrectiveActionModelFromJSONTyped(json, false);\n}\n\nexport function CorrectiveActionModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): CorrectiveActionModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n description: json['description'],\n identifier: json['identifier'],\n correctiveActions: json['corrective_actions'],\n rootCause: json['root_cause'],\n raisedBy: json['raised_by'],\n owner: VendorUserFromJSON(json['owner']),\n actionType: json['action_type'],\n completed: !exists(json, 'completed') ? undefined : json['completed'],\n url: !exists(json, 'url') ? undefined : json['url'],\n dateIdentified: json['date_identified'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function CorrectiveActionModelToJSON(\n value?: CorrectiveActionModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n description: value.description,\n identifier: value.identifier,\n corrective_actions: value.correctiveActions,\n root_cause: value.rootCause,\n raised_by: value.raisedBy,\n owner: VendorUserToJSON(value.owner),\n action_type: value.actionType,\n completed: value.completed,\n url: value.url,\n date_identified: value.dateIdentified,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum CorrectiveActionModelActionTypeEnum {\n NonConformance = 'non_conformance',\n OpportunityForImprovement = 'opportunity_for_improvement',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n DashboardSummaryWidgets,\n DashboardSummaryWidgetsFromJSON,\n DashboardSummaryWidgetsFromJSONTyped,\n DashboardSummaryWidgetsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface DashboardSummary\n */\nexport interface DashboardSummary {\n /**\n *\n * @type {Array}\n * @memberof DashboardSummary\n */\n widgets?: Array;\n}\n\nexport function DashboardSummaryFromJSON(json: any): DashboardSummary {\n return DashboardSummaryFromJSONTyped(json, false);\n}\n\nexport function DashboardSummaryFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): DashboardSummary {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n widgets: !exists(json, 'widgets')\n ? undefined\n : (json['widgets'] as Array).map(DashboardSummaryWidgetsFromJSON),\n };\n}\n\nexport function DashboardSummaryToJSON(value?: DashboardSummary | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n widgets:\n value.widgets === undefined\n ? undefined\n : (value.widgets as Array).map(DashboardSummaryWidgetsToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface DashboardSummaryData\n */\nexport interface DashboardSummaryData {\n /**\n *\n * @type {string}\n * @memberof DashboardSummaryData\n */\n label?: string;\n /**\n *\n * @type {string}\n * @memberof DashboardSummaryData\n */\n value?: string;\n}\n\nexport function DashboardSummaryDataFromJSON(json: any): DashboardSummaryData {\n return DashboardSummaryDataFromJSONTyped(json, false);\n}\n\nexport function DashboardSummaryDataFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): DashboardSummaryData {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n label: !exists(json, 'label') ? undefined : json['label'],\n value: !exists(json, 'value') ? undefined : json['value'],\n };\n}\n\nexport function DashboardSummaryDataToJSON(\n value?: DashboardSummaryData | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n label: value.label,\n value: value.value,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n DashboardSummaryData,\n DashboardSummaryDataFromJSON,\n DashboardSummaryDataFromJSONTyped,\n DashboardSummaryDataToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface DashboardSummaryWidgets\n */\nexport interface DashboardSummaryWidgets {\n /**\n *\n * @type {string}\n * @memberof DashboardSummaryWidgets\n */\n title?: string;\n /**\n *\n * @type {string}\n * @memberof DashboardSummaryWidgets\n */\n widgetId?: DashboardSummaryWidgetsWidgetIdEnum;\n /**\n *\n * @type {Array}\n * @memberof DashboardSummaryWidgets\n */\n data?: Array;\n}\n\nexport function DashboardSummaryWidgetsFromJSON(\n json: any\n): DashboardSummaryWidgets {\n return DashboardSummaryWidgetsFromJSONTyped(json, false);\n}\n\nexport function DashboardSummaryWidgetsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): DashboardSummaryWidgets {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n title: !exists(json, 'title') ? undefined : json['title'],\n widgetId: !exists(json, 'widget_id') ? undefined : json['widget_id'],\n data: !exists(json, 'data')\n ? undefined\n : (json['data'] as Array).map(DashboardSummaryDataFromJSON),\n };\n}\n\nexport function DashboardSummaryWidgetsToJSON(\n value?: DashboardSummaryWidgets | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n title: value.title,\n widget_id: value.widgetId,\n data:\n value.data === undefined\n ? undefined\n : (value.data as Array).map(DashboardSummaryDataToJSON),\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum DashboardSummaryWidgetsWidgetIdEnum {\n PoliciesSummary = 'vendor_policies_summary',\n MyPoliciesSummary = 'vendor_my_policies_summary',\n AgreementsSummary = 'vendor_agreements_summary',\n MyAgreementsSummary = 'vendor_my_agreements_summary',\n AssessmentsSummary = 'vendor_assessments_summary',\n ControlsSummary = 'vendor_controls_summary',\n MyControlsSummary = 'vendor_my_controls_summary',\n TasksSummary = 'vendor_tasks_summary',\n MyTasksSummary = 'vendor_my_tasks_summary',\n UsersSummary = 'vendor_users_summary',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface DataRoomEntityDeletePayload\n */\nexport interface DataRoomEntityDeletePayload {\n /**\n *\n * @type {Array}\n * @memberof DataRoomEntityDeletePayload\n */\n entitiesIds: Array;\n}\n\nexport function DataRoomEntityDeletePayloadFromJSON(\n json: any\n): DataRoomEntityDeletePayload {\n return DataRoomEntityDeletePayloadFromJSONTyped(json, false);\n}\n\nexport function DataRoomEntityDeletePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): DataRoomEntityDeletePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n entitiesIds: json['entities_ids'],\n };\n}\n\nexport function DataRoomEntityDeletePayloadToJSON(\n value?: DataRoomEntityDeletePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n entities_ids: value.entitiesIds,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n DataRoomEntityFolderCreatePayloadFolder,\n DataRoomEntityFolderCreatePayloadFolderFromJSON,\n DataRoomEntityFolderCreatePayloadFolderFromJSONTyped,\n DataRoomEntityFolderCreatePayloadFolderToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface DataRoomEntityFolderCreatePayload\n */\nexport interface DataRoomEntityFolderCreatePayload {\n /**\n *\n * @type {DataRoomEntityFolderCreatePayloadFolder}\n * @memberof DataRoomEntityFolderCreatePayload\n */\n folder: DataRoomEntityFolderCreatePayloadFolder;\n}\n\nexport function DataRoomEntityFolderCreatePayloadFromJSON(\n json: any\n): DataRoomEntityFolderCreatePayload {\n return DataRoomEntityFolderCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function DataRoomEntityFolderCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): DataRoomEntityFolderCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n folder: DataRoomEntityFolderCreatePayloadFolderFromJSON(json['folder']),\n };\n}\n\nexport function DataRoomEntityFolderCreatePayloadToJSON(\n value?: DataRoomEntityFolderCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n folder: DataRoomEntityFolderCreatePayloadFolderToJSON(value.folder),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface DataRoomEntityFolderCreatePayloadFolder\n */\nexport interface DataRoomEntityFolderCreatePayloadFolder {\n /**\n *\n * @type {string}\n * @memberof DataRoomEntityFolderCreatePayloadFolder\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof DataRoomEntityFolderCreatePayloadFolder\n */\n parentFolderId: string;\n}\n\nexport function DataRoomEntityFolderCreatePayloadFolderFromJSON(\n json: any\n): DataRoomEntityFolderCreatePayloadFolder {\n return DataRoomEntityFolderCreatePayloadFolderFromJSONTyped(json, false);\n}\n\nexport function DataRoomEntityFolderCreatePayloadFolderFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): DataRoomEntityFolderCreatePayloadFolder {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: json['name'],\n parentFolderId: json['parent_folder_id'],\n };\n}\n\nexport function DataRoomEntityFolderCreatePayloadFolderToJSON(\n value?: DataRoomEntityFolderCreatePayloadFolder | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n parent_folder_id: value.parentFolderId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n UserDetails,\n UserDetailsFromJSON,\n UserDetailsFromJSONTyped,\n UserDetailsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface DataRoomEntityModel\n */\nexport interface DataRoomEntityModel {\n /**\n *\n * @type {string}\n * @memberof DataRoomEntityModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof DataRoomEntityModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof DataRoomEntityModel\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof DataRoomEntityModel\n */\n type: DataRoomEntityModelTypeEnum;\n /**\n *\n * @type {string}\n * @memberof DataRoomEntityModel\n */\n fileType: string | null;\n /**\n *\n * @type {number}\n * @memberof DataRoomEntityModel\n */\n fileSize?: number | null;\n /**\n *\n * @type {string}\n * @memberof DataRoomEntityModel\n */\n filePath: string;\n /**\n *\n * @type {Access}\n * @memberof DataRoomEntityModel\n */\n access?: Access;\n /**\n *\n * @type {string}\n * @memberof DataRoomEntityModel\n */\n attachmentUrl?: string;\n /**\n *\n * @type {UserDetails}\n * @memberof DataRoomEntityModel\n */\n creator?: UserDetails;\n /**\n *\n * @type {Array}\n * @memberof DataRoomEntityModel\n */\n children: Array;\n /**\n *\n * @type {string}\n * @memberof DataRoomEntityModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof DataRoomEntityModel\n */\n updatedAt: string;\n}\n\nexport function DataRoomEntityModelFromJSON(json: any): DataRoomEntityModel {\n return DataRoomEntityModelFromJSONTyped(json, false);\n}\n\nexport function DataRoomEntityModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): DataRoomEntityModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n type: json['type'],\n fileType: json['file_type'],\n fileSize: !exists(json, 'file_size') ? undefined : json['file_size'],\n filePath: json['file_path'],\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n attachmentUrl: !exists(json, 'attachment_url')\n ? undefined\n : json['attachment_url'],\n creator: !exists(json, 'creator')\n ? undefined\n : UserDetailsFromJSON(json['creator']),\n children: (json['children'] as Array).map(DataRoomEntityModelFromJSON),\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function DataRoomEntityModelToJSON(\n value?: DataRoomEntityModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n description: value.description,\n type: value.type,\n file_type: value.fileType,\n file_size: value.fileSize,\n file_path: value.filePath,\n access: AccessToJSON(value.access),\n attachment_url: value.attachmentUrl,\n creator: UserDetailsToJSON(value.creator),\n children: (value.children as Array).map(DataRoomEntityModelToJSON),\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum DataRoomEntityModelTypeEnum {\n File = 'DataRoomEntity::File',\n Folder = 'DataRoomEntity::Folder',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface DataRoomEntityMovePayload\n */\nexport interface DataRoomEntityMovePayload {\n /**\n *\n * @type {Array}\n * @memberof DataRoomEntityMovePayload\n */\n entitiesIds: Array;\n /**\n *\n * @type {string}\n * @memberof DataRoomEntityMovePayload\n */\n parentEntityId: string;\n}\n\nexport function DataRoomEntityMovePayloadFromJSON(\n json: any\n): DataRoomEntityMovePayload {\n return DataRoomEntityMovePayloadFromJSONTyped(json, false);\n}\n\nexport function DataRoomEntityMovePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): DataRoomEntityMovePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n entitiesIds: json['entities_ids'],\n parentEntityId: json['parent_entity_id'],\n };\n}\n\nexport function DataRoomEntityMovePayloadToJSON(\n value?: DataRoomEntityMovePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n entities_ids: value.entitiesIds,\n parent_entity_id: value.parentEntityId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n DataRoomEntityUpdatePayloadEntity,\n DataRoomEntityUpdatePayloadEntityFromJSON,\n DataRoomEntityUpdatePayloadEntityFromJSONTyped,\n DataRoomEntityUpdatePayloadEntityToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface DataRoomEntityUpdatePayload\n */\nexport interface DataRoomEntityUpdatePayload {\n /**\n *\n * @type {DataRoomEntityUpdatePayloadEntity}\n * @memberof DataRoomEntityUpdatePayload\n */\n entity: DataRoomEntityUpdatePayloadEntity;\n}\n\nexport function DataRoomEntityUpdatePayloadFromJSON(\n json: any\n): DataRoomEntityUpdatePayload {\n return DataRoomEntityUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function DataRoomEntityUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): DataRoomEntityUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n entity: DataRoomEntityUpdatePayloadEntityFromJSON(json['entity']),\n };\n}\n\nexport function DataRoomEntityUpdatePayloadToJSON(\n value?: DataRoomEntityUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n entity: DataRoomEntityUpdatePayloadEntityToJSON(value.entity),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface DataRoomEntityUpdatePayloadEntity\n */\nexport interface DataRoomEntityUpdatePayloadEntity {\n /**\n *\n * @type {string}\n * @memberof DataRoomEntityUpdatePayloadEntity\n */\n filename?: string;\n /**\n *\n * @type {string}\n * @memberof DataRoomEntityUpdatePayloadEntity\n */\n description?: string | null;\n}\n\nexport function DataRoomEntityUpdatePayloadEntityFromJSON(\n json: any\n): DataRoomEntityUpdatePayloadEntity {\n return DataRoomEntityUpdatePayloadEntityFromJSONTyped(json, false);\n}\n\nexport function DataRoomEntityUpdatePayloadEntityFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): DataRoomEntityUpdatePayloadEntity {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n filename: !exists(json, 'filename') ? undefined : json['filename'],\n description: !exists(json, 'description') ? undefined : json['description'],\n };\n}\n\nexport function DataRoomEntityUpdatePayloadEntityToJSON(\n value?: DataRoomEntityUpdatePayloadEntity | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n filename: value.filename,\n description: value.description,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface EmailArray\n */\nexport interface EmailArray {\n /**\n *\n * @type {Array}\n * @memberof EmailArray\n */\n addresses?: Array;\n /**\n *\n * @type {Array}\n * @memberof EmailArray\n */\n invalid?: Array;\n}\n\nexport function EmailArrayFromJSON(json: any): EmailArray {\n return EmailArrayFromJSONTyped(json, false);\n}\n\nexport function EmailArrayFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): EmailArray {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n addresses: !exists(json, 'addresses') ? undefined : json['addresses'],\n invalid: !exists(json, 'invalid') ? undefined : json['invalid'],\n };\n}\n\nexport function EmailArrayToJSON(value?: EmailArray | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n addresses: value.addresses,\n invalid: value.invalid,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface EmailText\n */\nexport interface EmailText {\n /**\n *\n * @type {string}\n * @memberof EmailText\n */\n text?: string;\n}\n\nexport function EmailTextFromJSON(json: any): EmailText {\n return EmailTextFromJSONTyped(json, false);\n}\n\nexport function EmailTextFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): EmailText {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n text: !exists(json, 'text') ? undefined : json['text'],\n };\n}\n\nexport function EmailTextToJSON(value?: EmailText | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n text: value.text,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ErrorResponseErrors\n */\nexport interface ErrorResponseErrors {\n /**\n *\n * @type {string}\n * @memberof ErrorResponseErrors\n */\n base?: string;\n}\n\nexport function ErrorResponseErrorsFromJSON(json: any): ErrorResponseErrors {\n return ErrorResponseErrorsFromJSONTyped(json, false);\n}\n\nexport function ErrorResponseErrorsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ErrorResponseErrors {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n base: !exists(json, 'base') ? undefined : json['base'],\n };\n}\n\nexport function ErrorResponseErrorsToJSON(\n value?: ErrorResponseErrors | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n base: value.base,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface EscrowAccount\n */\nexport interface EscrowAccount {\n /**\n *\n * @type {string}\n * @memberof EscrowAccount\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof EscrowAccount\n */\n accountNumber: string | null;\n /**\n *\n * @type {string}\n * @memberof EscrowAccount\n */\n accountType: string;\n /**\n *\n * @type {string}\n * @memberof EscrowAccount\n */\n status: EscrowAccountStatusEnum;\n /**\n *\n * @type {string}\n * @memberof EscrowAccount\n */\n name: string | null;\n /**\n *\n * @type {string}\n * @memberof EscrowAccount\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof EscrowAccount\n */\n bucketName: string | null;\n /**\n *\n * @type {string}\n * @memberof EscrowAccount\n */\n accessKey: string | null;\n /**\n *\n * @type {string}\n * @memberof EscrowAccount\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof EscrowAccount\n */\n updatedAt: string;\n}\n\nexport function EscrowAccountFromJSON(json: any): EscrowAccount {\n return EscrowAccountFromJSONTyped(json, false);\n}\n\nexport function EscrowAccountFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): EscrowAccount {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n accountNumber: json['account_number'],\n accountType: json['account_type'],\n status: json['status'],\n name: json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n bucketName: json['bucket_name'],\n accessKey: json['access_key'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function EscrowAccountToJSON(value?: EscrowAccount | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n account_number: value.accountNumber,\n account_type: value.accountType,\n status: value.status,\n name: value.name,\n description: value.description,\n bucket_name: value.bucketName,\n access_key: value.accessKey,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum EscrowAccountStatusEnum {\n Created = 'created',\n Linked = 'linked',\n Deleted = 'deleted',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n UserDetails,\n UserDetailsFromJSON,\n UserDetailsFromJSONTyped,\n UserDetailsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface EvidenceModel\n */\nexport interface EvidenceModel {\n /**\n *\n * @type {string}\n * @memberof EvidenceModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof EvidenceModel\n */\n description: string;\n /**\n *\n * @type {string}\n * @memberof EvidenceModel\n */\n attachmentUrl?: string;\n /**\n *\n * @type {UserDetails}\n * @memberof EvidenceModel\n */\n provider: UserDetails;\n /**\n *\n * @type {string}\n * @memberof EvidenceModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof EvidenceModel\n */\n updatedAt: string;\n}\n\nexport function EvidenceModelFromJSON(json: any): EvidenceModel {\n return EvidenceModelFromJSONTyped(json, false);\n}\n\nexport function EvidenceModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): EvidenceModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n description: json['description'],\n attachmentUrl: !exists(json, 'attachment_url')\n ? undefined\n : json['attachment_url'],\n provider: UserDetailsFromJSON(json['provider']),\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function EvidenceModelToJSON(value?: EvidenceModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n description: value.description,\n attachment_url: value.attachmentUrl,\n provider: UserDetailsToJSON(value.provider),\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ExternalShare\n */\nexport interface ExternalShare {\n /**\n *\n * @type {string}\n * @memberof ExternalShare\n */\n user?: string | null;\n /**\n *\n * @type {string}\n * @memberof ExternalShare\n */\n emailAddresses?: string | null;\n /**\n *\n * @type {string}\n * @memberof ExternalShare\n */\n subject?: string;\n /**\n *\n * @type {string}\n * @memberof ExternalShare\n */\n message?: string | null;\n /**\n *\n * @type {string}\n * @memberof ExternalShare\n */\n deadline?: string | null;\n}\n\nexport function ExternalShareFromJSON(json: any): ExternalShare {\n return ExternalShareFromJSONTyped(json, false);\n}\n\nexport function ExternalShareFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ExternalShare {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n user: !exists(json, 'user') ? undefined : json['user'],\n emailAddresses: !exists(json, 'email_addresses')\n ? undefined\n : json['email_addresses'],\n subject: !exists(json, 'subject') ? undefined : json['subject'],\n message: !exists(json, 'message') ? undefined : json['message'],\n deadline: !exists(json, 'deadline') ? undefined : json['deadline'],\n };\n}\n\nexport function ExternalShareToJSON(value?: ExternalShare | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n user: value.user,\n email_addresses: value.emailAddresses,\n subject: value.subject,\n message: value.message,\n deadline: value.deadline,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface FrameworkExportEvidencePayload\n */\nexport interface FrameworkExportEvidencePayload {\n /**\n *\n * @type {string}\n * @memberof FrameworkExportEvidencePayload\n */\n startDate: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkExportEvidencePayload\n */\n endDate: string;\n}\n\nexport function FrameworkExportEvidencePayloadFromJSON(\n json: any\n): FrameworkExportEvidencePayload {\n return FrameworkExportEvidencePayloadFromJSONTyped(json, false);\n}\n\nexport function FrameworkExportEvidencePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkExportEvidencePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n startDate: json['start_date'],\n endDate: json['end_date'],\n };\n}\n\nexport function FrameworkExportEvidencePayloadToJSON(\n value?: FrameworkExportEvidencePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n start_date: value.startDate,\n end_date: value.endDate,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ControlCategoryExtended,\n ControlCategoryExtendedFromJSON,\n ControlCategoryExtendedFromJSONTyped,\n ControlCategoryExtendedToJSON,\n FrameworkExtendedAllOf,\n FrameworkExtendedAllOfFromJSON,\n FrameworkExtendedAllOfFromJSONTyped,\n FrameworkExtendedAllOfToJSON,\n FrameworkModel,\n FrameworkModelFromJSON,\n FrameworkModelFromJSONTyped,\n FrameworkModelToJSON,\n FrameworkModelStats,\n FrameworkModelStatsFromJSON,\n FrameworkModelStatsFromJSONTyped,\n FrameworkModelStatsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface FrameworkExtended\n */\nexport interface FrameworkExtended extends FrameworkModel {\n /**\n *\n * @type {Array}\n * @memberof FrameworkExtended\n */\n controlCategories: Array;\n}\n\nexport function FrameworkExtendedFromJSON(json: any): FrameworkExtended {\n return FrameworkExtendedFromJSONTyped(json, false);\n}\n\nexport function FrameworkExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...FrameworkModelFromJSONTyped(json, ignoreDiscriminator),\n controlCategories: (json['control_categories'] as Array).map(\n ControlCategoryExtendedFromJSON\n ),\n };\n}\n\nexport function FrameworkExtendedToJSON(value?: FrameworkExtended | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...FrameworkModelToJSON(value),\n control_categories: (value.controlCategories as Array).map(\n ControlCategoryExtendedToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface FrameworkGuidanceModel\n */\nexport interface FrameworkGuidanceModel {\n /**\n *\n * @type {string}\n * @memberof FrameworkGuidanceModel\n */\n content: string;\n}\n\nexport function FrameworkGuidanceModelFromJSON(\n json: any\n): FrameworkGuidanceModel {\n return FrameworkGuidanceModelFromJSONTyped(json, false);\n}\n\nexport function FrameworkGuidanceModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkGuidanceModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n content: json['content'],\n };\n}\n\nexport function FrameworkGuidanceModelToJSON(\n value?: FrameworkGuidanceModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n content: value.content,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n FrameworkModelStats,\n FrameworkModelStatsFromJSON,\n FrameworkModelStatsFromJSONTyped,\n FrameworkModelStatsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface FrameworkModel\n */\nexport interface FrameworkModel {\n /**\n *\n * @type {string}\n * @memberof FrameworkModel\n */\n id: string | null;\n /**\n *\n * @type {string}\n * @memberof FrameworkModel\n */\n frameworkTemplateId?: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkModel\n */\n identifier?: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkModel\n */\n description: string | null;\n /**\n *\n * @type {string}\n * @memberof FrameworkModel\n */\n descriptionAsHtml: string | null;\n /**\n *\n * @type {number}\n * @memberof FrameworkModel\n */\n rowOrder: number | null;\n /**\n *\n * @type {string}\n * @memberof FrameworkModel\n */\n availability?: FrameworkModelAvailabilityEnum;\n /**\n *\n * @type {FrameworkModelStats}\n * @memberof FrameworkModel\n */\n stats?: FrameworkModelStats;\n /**\n *\n * @type {string}\n * @memberof FrameworkModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkModel\n */\n updatedAt: string;\n}\n\nexport function FrameworkModelFromJSON(json: any): FrameworkModel {\n return FrameworkModelFromJSONTyped(json, false);\n}\n\nexport function FrameworkModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n frameworkTemplateId: !exists(json, 'framework_template_id')\n ? undefined\n : json['framework_template_id'],\n name: json['name'],\n identifier: !exists(json, 'identifier') ? undefined : json['identifier'],\n description: json['description'],\n descriptionAsHtml: json['description_as_html'],\n rowOrder: json['row_order'],\n availability: !exists(json, 'availability')\n ? undefined\n : json['availability'],\n stats: !exists(json, 'stats')\n ? undefined\n : FrameworkModelStatsFromJSON(json['stats']),\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function FrameworkModelToJSON(value?: FrameworkModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n framework_template_id: value.frameworkTemplateId,\n name: value.name,\n identifier: value.identifier,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n row_order: value.rowOrder,\n availability: value.availability,\n stats: FrameworkModelStatsToJSON(value.stats),\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum FrameworkModelAvailabilityEnum {\n Existing = 'existing',\n Requested = 'requested',\n AvailableForActivation = 'available_for_activation',\n AvailableForQuotation = 'available_for_quotation',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n FrameworkModelStatsControls,\n FrameworkModelStatsControlsFromJSON,\n FrameworkModelStatsControlsFromJSONTyped,\n FrameworkModelStatsControlsToJSON,\n FrameworkModelStatsPolicies,\n FrameworkModelStatsPoliciesFromJSON,\n FrameworkModelStatsPoliciesFromJSONTyped,\n FrameworkModelStatsPoliciesToJSON,\n FrameworkModelStatsRequirements,\n FrameworkModelStatsRequirementsFromJSON,\n FrameworkModelStatsRequirementsFromJSONTyped,\n FrameworkModelStatsRequirementsToJSON,\n FrameworkModelStatsTasks,\n FrameworkModelStatsTasksFromJSON,\n FrameworkModelStatsTasksFromJSONTyped,\n FrameworkModelStatsTasksToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface FrameworkModelStats\n */\nexport interface FrameworkModelStats {\n /**\n *\n * @type {FrameworkModelStatsPolicies}\n * @memberof FrameworkModelStats\n */\n policies?: FrameworkModelStatsPolicies;\n /**\n *\n * @type {FrameworkModelStatsTasks}\n * @memberof FrameworkModelStats\n */\n tasks?: FrameworkModelStatsTasks;\n /**\n *\n * @type {FrameworkModelStatsControls}\n * @memberof FrameworkModelStats\n */\n controls?: FrameworkModelStatsControls;\n /**\n *\n * @type {FrameworkModelStatsRequirements}\n * @memberof FrameworkModelStats\n */\n requirements?: FrameworkModelStatsRequirements;\n}\n\nexport function FrameworkModelStatsFromJSON(json: any): FrameworkModelStats {\n return FrameworkModelStatsFromJSONTyped(json, false);\n}\n\nexport function FrameworkModelStatsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkModelStats {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n policies: !exists(json, 'policies')\n ? undefined\n : FrameworkModelStatsPoliciesFromJSON(json['policies']),\n tasks: !exists(json, 'tasks')\n ? undefined\n : FrameworkModelStatsTasksFromJSON(json['tasks']),\n controls: !exists(json, 'controls')\n ? undefined\n : FrameworkModelStatsControlsFromJSON(json['controls']),\n requirements: !exists(json, 'requirements')\n ? undefined\n : FrameworkModelStatsRequirementsFromJSON(json['requirements']),\n };\n}\n\nexport function FrameworkModelStatsToJSON(\n value?: FrameworkModelStats | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n policies: FrameworkModelStatsPoliciesToJSON(value.policies),\n tasks: FrameworkModelStatsTasksToJSON(value.tasks),\n controls: FrameworkModelStatsControlsToJSON(value.controls),\n requirements: FrameworkModelStatsRequirementsToJSON(value.requirements),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface FrameworkModelStatsControls\n */\nexport interface FrameworkModelStatsControls {\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsControls\n */\n count?: number;\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsControls\n */\n compliant?: number;\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsControls\n */\n progress?: number;\n}\n\nexport function FrameworkModelStatsControlsFromJSON(\n json: any\n): FrameworkModelStatsControls {\n return FrameworkModelStatsControlsFromJSONTyped(json, false);\n}\n\nexport function FrameworkModelStatsControlsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkModelStatsControls {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n count: !exists(json, 'count') ? undefined : json['count'],\n compliant: !exists(json, 'compliant') ? undefined : json['compliant'],\n progress: !exists(json, 'progress') ? undefined : json['progress'],\n };\n}\n\nexport function FrameworkModelStatsControlsToJSON(\n value?: FrameworkModelStatsControls | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n count: value.count,\n compliant: value.compliant,\n progress: value.progress,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface FrameworkModelStatsPolicies\n */\nexport interface FrameworkModelStatsPolicies {\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsPolicies\n */\n count?: number;\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsPolicies\n */\n progress?: number;\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsPolicies\n */\n live?: number;\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsPolicies\n */\n requestedToApprove?: number;\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsPolicies\n */\n requestedToRead?: number;\n}\n\nexport function FrameworkModelStatsPoliciesFromJSON(\n json: any\n): FrameworkModelStatsPolicies {\n return FrameworkModelStatsPoliciesFromJSONTyped(json, false);\n}\n\nexport function FrameworkModelStatsPoliciesFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkModelStatsPolicies {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n count: !exists(json, 'count') ? undefined : json['count'],\n progress: !exists(json, 'progress') ? undefined : json['progress'],\n live: !exists(json, 'live') ? undefined : json['live'],\n requestedToApprove: !exists(json, 'requested_to_approve')\n ? undefined\n : json['requested_to_approve'],\n requestedToRead: !exists(json, 'requested_to_read')\n ? undefined\n : json['requested_to_read'],\n };\n}\n\nexport function FrameworkModelStatsPoliciesToJSON(\n value?: FrameworkModelStatsPolicies | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n count: value.count,\n progress: value.progress,\n live: value.live,\n requested_to_approve: value.requestedToApprove,\n requested_to_read: value.requestedToRead,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface FrameworkModelStatsRequirements\n */\nexport interface FrameworkModelStatsRequirements {\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsRequirements\n */\n count?: number;\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsRequirements\n */\n progress?: number;\n}\n\nexport function FrameworkModelStatsRequirementsFromJSON(\n json: any\n): FrameworkModelStatsRequirements {\n return FrameworkModelStatsRequirementsFromJSONTyped(json, false);\n}\n\nexport function FrameworkModelStatsRequirementsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkModelStatsRequirements {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n count: !exists(json, 'count') ? undefined : json['count'],\n progress: !exists(json, 'progress') ? undefined : json['progress'],\n };\n}\n\nexport function FrameworkModelStatsRequirementsToJSON(\n value?: FrameworkModelStatsRequirements | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n count: value.count,\n progress: value.progress,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface FrameworkModelStatsTasks\n */\nexport interface FrameworkModelStatsTasks {\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsTasks\n */\n count?: number;\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsTasks\n */\n progress?: number;\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsTasks\n */\n compliant?: number;\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsTasks\n */\n failed?: number;\n /**\n *\n * @type {number}\n * @memberof FrameworkModelStatsTasks\n */\n pending?: number;\n}\n\nexport function FrameworkModelStatsTasksFromJSON(\n json: any\n): FrameworkModelStatsTasks {\n return FrameworkModelStatsTasksFromJSONTyped(json, false);\n}\n\nexport function FrameworkModelStatsTasksFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkModelStatsTasks {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n count: !exists(json, 'count') ? undefined : json['count'],\n progress: !exists(json, 'progress') ? undefined : json['progress'],\n compliant: !exists(json, 'compliant') ? undefined : json['compliant'],\n failed: !exists(json, 'failed') ? undefined : json['failed'],\n pending: !exists(json, 'pending') ? undefined : json['pending'],\n };\n}\n\nexport function FrameworkModelStatsTasksToJSON(\n value?: FrameworkModelStatsTasks | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n count: value.count,\n progress: value.progress,\n compliant: value.compliant,\n failed: value.failed,\n pending: value.pending,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n FrameworkRelationControlCategory,\n FrameworkRelationControlCategoryFromJSON,\n FrameworkRelationControlCategoryFromJSONTyped,\n FrameworkRelationControlCategoryToJSON,\n FrameworkRelationFramework,\n FrameworkRelationFrameworkFromJSON,\n FrameworkRelationFrameworkFromJSONTyped,\n FrameworkRelationFrameworkToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface FrameworkRelation\n */\nexport interface FrameworkRelation {\n /**\n *\n * @type {FrameworkRelationFramework}\n * @memberof FrameworkRelation\n */\n framework?: FrameworkRelationFramework;\n /**\n *\n * @type {FrameworkRelationControlCategory}\n * @memberof FrameworkRelation\n */\n controlCategory?: FrameworkRelationControlCategory;\n /**\n *\n * @type {FrameworkRelationControlCategory}\n * @memberof FrameworkRelation\n */\n control?: FrameworkRelationControlCategory;\n /**\n *\n * @type {string}\n * @memberof FrameworkRelation\n */\n annexRef?: string | null;\n}\n\nexport function FrameworkRelationFromJSON(json: any): FrameworkRelation {\n return FrameworkRelationFromJSONTyped(json, false);\n}\n\nexport function FrameworkRelationFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkRelation {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n framework: !exists(json, 'framework')\n ? undefined\n : FrameworkRelationFrameworkFromJSON(json['framework']),\n controlCategory: !exists(json, 'control_category')\n ? undefined\n : FrameworkRelationControlCategoryFromJSON(json['control_category']),\n control: !exists(json, 'control')\n ? undefined\n : FrameworkRelationControlCategoryFromJSON(json['control']),\n annexRef: !exists(json, 'annex_ref') ? undefined : json['annex_ref'],\n };\n}\n\nexport function FrameworkRelationToJSON(value?: FrameworkRelation | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n framework: FrameworkRelationFrameworkToJSON(value.framework),\n control_category: FrameworkRelationControlCategoryToJSON(\n value.controlCategory\n ),\n control: FrameworkRelationControlCategoryToJSON(value.control),\n annex_ref: value.annexRef,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface FrameworkRelationControlCategory\n */\nexport interface FrameworkRelationControlCategory {\n /**\n *\n * @type {string}\n * @memberof FrameworkRelationControlCategory\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkRelationControlCategory\n */\n name?: string;\n}\n\nexport function FrameworkRelationControlCategoryFromJSON(\n json: any\n): FrameworkRelationControlCategory {\n return FrameworkRelationControlCategoryFromJSONTyped(json, false);\n}\n\nexport function FrameworkRelationControlCategoryFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkRelationControlCategory {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n };\n}\n\nexport function FrameworkRelationControlCategoryToJSON(\n value?: FrameworkRelationControlCategory | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface FrameworkRelationFramework\n */\nexport interface FrameworkRelationFramework {\n /**\n *\n * @type {string}\n * @memberof FrameworkRelationFramework\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkRelationFramework\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkRelationFramework\n */\n identifier?: string;\n}\n\nexport function FrameworkRelationFrameworkFromJSON(\n json: any\n): FrameworkRelationFramework {\n return FrameworkRelationFrameworkFromJSONTyped(json, false);\n}\n\nexport function FrameworkRelationFrameworkFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkRelationFramework {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n identifier: !exists(json, 'identifier') ? undefined : json['identifier'],\n };\n}\n\nexport function FrameworkRelationFrameworkToJSON(\n value?: FrameworkRelationFramework | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n FrameworkRequirementCategoryExtendedAllOf,\n FrameworkRequirementCategoryExtendedAllOfFromJSON,\n FrameworkRequirementCategoryExtendedAllOfFromJSONTyped,\n FrameworkRequirementCategoryExtendedAllOfToJSON,\n FrameworkRequirementCategoryModel,\n FrameworkRequirementCategoryModelFromJSON,\n FrameworkRequirementCategoryModelFromJSONTyped,\n FrameworkRequirementCategoryModelToJSON,\n FrameworkRequirementExtended,\n FrameworkRequirementExtendedFromJSON,\n FrameworkRequirementExtendedFromJSONTyped,\n FrameworkRequirementExtendedToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface FrameworkRequirementCategoryExtended\n */\nexport interface FrameworkRequirementCategoryExtended\n extends FrameworkRequirementCategoryModel {\n /**\n *\n * @type {Array}\n * @memberof FrameworkRequirementCategoryExtended\n */\n frameworkRequirements: Array;\n}\n\nexport function FrameworkRequirementCategoryExtendedFromJSON(\n json: any\n): FrameworkRequirementCategoryExtended {\n return FrameworkRequirementCategoryExtendedFromJSONTyped(json, false);\n}\n\nexport function FrameworkRequirementCategoryExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkRequirementCategoryExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...FrameworkRequirementCategoryModelFromJSONTyped(\n json,\n ignoreDiscriminator\n ),\n frameworkRequirements: (json['framework_requirements'] as Array).map(\n FrameworkRequirementExtendedFromJSON\n ),\n };\n}\n\nexport function FrameworkRequirementCategoryExtendedToJSON(\n value?: FrameworkRequirementCategoryExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...FrameworkRequirementCategoryModelToJSON(value),\n framework_requirements: (value.frameworkRequirements as Array).map(\n FrameworkRequirementExtendedToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface FrameworkRequirementCategoryModel\n */\nexport interface FrameworkRequirementCategoryModel {\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementCategoryModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementCategoryModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementCategoryModel\n */\n identifier: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementCategoryModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementCategoryModel\n */\n updatedAt: string;\n}\n\nexport function FrameworkRequirementCategoryModelFromJSON(\n json: any\n): FrameworkRequirementCategoryModel {\n return FrameworkRequirementCategoryModelFromJSONTyped(json, false);\n}\n\nexport function FrameworkRequirementCategoryModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkRequirementCategoryModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: json['identifier'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function FrameworkRequirementCategoryModelToJSON(\n value?: FrameworkRequirementCategoryModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n FrameworkRequirementExtendedAllOf,\n FrameworkRequirementExtendedAllOfFromJSON,\n FrameworkRequirementExtendedAllOfFromJSONTyped,\n FrameworkRequirementExtendedAllOfToJSON,\n FrameworkRequirementModel,\n FrameworkRequirementModelFromJSON,\n FrameworkRequirementModelFromJSONTyped,\n FrameworkRequirementModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface FrameworkRequirementExtended\n */\nexport interface FrameworkRequirementExtended\n extends FrameworkRequirementModel {\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementExtended\n */\n status: FrameworkRequirementExtendedStatusEnum;\n}\n\nexport function FrameworkRequirementExtendedFromJSON(\n json: any\n): FrameworkRequirementExtended {\n return FrameworkRequirementExtendedFromJSONTyped(json, false);\n}\n\nexport function FrameworkRequirementExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkRequirementExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...FrameworkRequirementModelFromJSONTyped(json, ignoreDiscriminator),\n status: json['status'],\n };\n}\n\nexport function FrameworkRequirementExtendedToJSON(\n value?: FrameworkRequirementExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...FrameworkRequirementModelToJSON(value),\n status: value.status,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum FrameworkRequirementExtendedStatusEnum {\n Completed = 'completed',\n Pending = 'pending',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface FrameworkRequirementModel\n */\nexport interface FrameworkRequirementModel {\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementModel\n */\n vendorFrameworkRequirementId: string | null;\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementModel\n */\n type: FrameworkRequirementModelTypeEnum;\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementModel\n */\n identifier?: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementModel\n */\n description: string | null;\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementModel\n */\n descriptionAsHtml: string | null;\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementModel\n */\n guidanceIdentifier?: string | null;\n /**\n *\n * @type {number}\n * @memberof FrameworkRequirementModel\n */\n progressPoints: number;\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkRequirementModel\n */\n updatedAt: string;\n}\n\nexport function FrameworkRequirementModelFromJSON(\n json: any\n): FrameworkRequirementModel {\n return FrameworkRequirementModelFromJSONTyped(json, false);\n}\n\nexport function FrameworkRequirementModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkRequirementModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n vendorFrameworkRequirementId: json['vendor_framework_requirement_id'],\n name: json['name'],\n type: json['type'],\n identifier: !exists(json, 'identifier') ? undefined : json['identifier'],\n description: json['description'],\n descriptionAsHtml: json['description_as_html'],\n guidanceIdentifier: !exists(json, 'guidance_identifier')\n ? undefined\n : json['guidance_identifier'],\n progressPoints: json['progress_points'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function FrameworkRequirementModelToJSON(\n value?: FrameworkRequirementModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n vendor_framework_requirement_id: value.vendorFrameworkRequirementId,\n name: value.name,\n type: value.type,\n identifier: value.identifier,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n guidance_identifier: value.guidanceIdentifier,\n progress_points: value.progressPoints,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum FrameworkRequirementModelTypeEnum {\n Manual = 'FrameworkRequirement::Manual',\n SendMessage = 'FrameworkRequirement::SendMessage',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ControlCategoryTemplateExtended,\n ControlCategoryTemplateExtendedFromJSON,\n ControlCategoryTemplateExtendedFromJSONTyped,\n ControlCategoryTemplateExtendedToJSON,\n FrameworkTemplateExtendedAllOf,\n FrameworkTemplateExtendedAllOfFromJSON,\n FrameworkTemplateExtendedAllOfFromJSONTyped,\n FrameworkTemplateExtendedAllOfToJSON,\n FrameworkTemplateModel,\n FrameworkTemplateModelFromJSON,\n FrameworkTemplateModelFromJSONTyped,\n FrameworkTemplateModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface FrameworkTemplateExtended\n */\nexport interface FrameworkTemplateExtended extends FrameworkTemplateModel {\n /**\n *\n * @type {Array}\n * @memberof FrameworkTemplateExtended\n */\n controlCategoryTemplates: Array;\n}\n\nexport function FrameworkTemplateExtendedFromJSON(\n json: any\n): FrameworkTemplateExtended {\n return FrameworkTemplateExtendedFromJSONTyped(json, false);\n}\n\nexport function FrameworkTemplateExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkTemplateExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...FrameworkTemplateModelFromJSONTyped(json, ignoreDiscriminator),\n controlCategoryTemplates: (\n json['control_category_templates'] as Array\n ).map(ControlCategoryTemplateExtendedFromJSON),\n };\n}\n\nexport function FrameworkTemplateExtendedToJSON(\n value?: FrameworkTemplateExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...FrameworkTemplateModelToJSON(value),\n control_category_templates: (\n value.controlCategoryTemplates as Array\n ).map(ControlCategoryTemplateExtendedToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface FrameworkTemplateModel\n */\nexport interface FrameworkTemplateModel {\n /**\n *\n * @type {string}\n * @memberof FrameworkTemplateModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkTemplateModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkTemplateModel\n */\n identifier?: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkTemplateModel\n */\n description: string | null;\n /**\n *\n * @type {string}\n * @memberof FrameworkTemplateModel\n */\n descriptionAsHtml: string | null;\n /**\n *\n * @type {number}\n * @memberof FrameworkTemplateModel\n */\n rowOrder: number | null;\n /**\n *\n * @type {string}\n * @memberof FrameworkTemplateModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof FrameworkTemplateModel\n */\n updatedAt: string;\n}\n\nexport function FrameworkTemplateModelFromJSON(\n json: any\n): FrameworkTemplateModel {\n return FrameworkTemplateModelFromJSONTyped(json, false);\n}\n\nexport function FrameworkTemplateModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): FrameworkTemplateModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: !exists(json, 'identifier') ? undefined : json['identifier'],\n description: json['description'],\n descriptionAsHtml: json['description_as_html'],\n rowOrder: json['row_order'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function FrameworkTemplateModelToJSON(\n value?: FrameworkTemplateModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n row_order: value.rowOrder,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface GlobalSearchItem\n */\nexport interface GlobalSearchItem {\n /**\n *\n * @type {string}\n * @memberof GlobalSearchItem\n */\n searchableId: string;\n /**\n *\n * @type {string}\n * @memberof GlobalSearchItem\n */\n searchableType: string;\n /**\n *\n * @type {string}\n * @memberof GlobalSearchItem\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof GlobalSearchItem\n */\n url: string;\n}\n\nexport function GlobalSearchItemFromJSON(json: any): GlobalSearchItem {\n return GlobalSearchItemFromJSONTyped(json, false);\n}\n\nexport function GlobalSearchItemFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): GlobalSearchItem {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n searchableId: json['searchable_id'],\n searchableType: json['searchable_type'],\n name: json['name'],\n url: json['url'],\n };\n}\n\nexport function GlobalSearchItemToJSON(value?: GlobalSearchItem | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n searchable_id: value.searchableId,\n searchable_type: value.searchableType,\n name: value.name,\n url: value.url,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ImageUrls,\n ImageUrlsFromJSON,\n ImageUrlsFromJSONTyped,\n ImageUrlsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface Image\n */\nexport interface Image {\n /**\n *\n * @type {string}\n * @memberof Image\n */\n filename: string | null;\n /**\n *\n * @type {ImageUrls}\n * @memberof Image\n */\n urls: ImageUrls;\n}\n\nexport function ImageFromJSON(json: any): Image {\n return ImageFromJSONTyped(json, false);\n}\n\nexport function ImageFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Image {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n filename: json['filename'],\n urls: ImageUrlsFromJSON(json['urls']),\n };\n}\n\nexport function ImageToJSON(value?: Image | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n filename: value.filename,\n urls: ImageUrlsToJSON(value.urls),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ImageUrls\n */\nexport interface ImageUrls {\n /**\n *\n * @type {string}\n * @memberof ImageUrls\n */\n full: string | null;\n /**\n *\n * @type {string}\n * @memberof ImageUrls\n */\n thumb?: string | null;\n}\n\nexport function ImageUrlsFromJSON(json: any): ImageUrls {\n return ImageUrlsFromJSONTyped(json, false);\n}\n\nexport function ImageUrlsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ImageUrls {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n full: json['full'],\n thumb: !exists(json, 'thumb') ? undefined : json['thumb'],\n };\n}\n\nexport function ImageUrlsToJSON(value?: ImageUrls | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n full: value.full,\n thumb: value.thumb,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n CorrectiveActionExtendedAllOf,\n CorrectiveActionExtendedAllOfFromJSON,\n CorrectiveActionExtendedAllOfFromJSONTyped,\n CorrectiveActionExtendedAllOfToJSON,\n IncidentEventModel,\n IncidentEventModelFromJSON,\n IncidentEventModelFromJSONTyped,\n IncidentEventModelToJSON,\n SharedAttachmentModel,\n SharedAttachmentModelFromJSON,\n SharedAttachmentModelFromJSONTyped,\n SharedAttachmentModelToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface IncidentEventExtended\n */\nexport interface IncidentEventExtended {\n /**\n *\n * @type {string}\n * @memberof IncidentEventExtended\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof IncidentEventExtended\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof IncidentEventExtended\n */\n description: string;\n /**\n *\n * @type {string}\n * @memberof IncidentEventExtended\n */\n identifier: string;\n /**\n *\n * @type {string}\n * @memberof IncidentEventExtended\n */\n rootCause: string;\n /**\n *\n * @type {string}\n * @memberof IncidentEventExtended\n */\n raisedBy: string;\n /**\n *\n * @type {VendorUser}\n * @memberof IncidentEventExtended\n */\n owner: VendorUser;\n /**\n *\n * @type {string}\n * @memberof IncidentEventExtended\n */\n actionsTaken: string;\n /**\n *\n * @type {string}\n * @memberof IncidentEventExtended\n */\n preventativeActions: string;\n /**\n *\n * @type {boolean}\n * @memberof IncidentEventExtended\n */\n completed: boolean;\n /**\n *\n * @type {boolean}\n * @memberof IncidentEventExtended\n */\n dataBreach: boolean;\n /**\n *\n * @type {string}\n * @memberof IncidentEventExtended\n */\n dataBreachDetails: string | null;\n /**\n *\n * @type {string}\n * @memberof IncidentEventExtended\n */\n dateIdentified: string;\n /**\n *\n * @type {string}\n * @memberof IncidentEventExtended\n */\n url?: string | null;\n /**\n *\n * @type {string}\n * @memberof IncidentEventExtended\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof IncidentEventExtended\n */\n updatedAt?: string;\n /**\n *\n * @type {Array}\n * @memberof IncidentEventExtended\n */\n attachments?: Array;\n}\n\nexport function IncidentEventExtendedFromJSON(\n json: any\n): IncidentEventExtended {\n return IncidentEventExtendedFromJSONTyped(json, false);\n}\n\nexport function IncidentEventExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): IncidentEventExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n description: json['description'],\n identifier: json['identifier'],\n rootCause: json['root_cause'],\n raisedBy: json['raised_by'],\n owner: VendorUserFromJSON(json['owner']),\n actionsTaken: json['actions_taken'],\n preventativeActions: json['preventative_actions'],\n completed: json['completed'],\n dataBreach: json['data_breach'],\n dataBreachDetails: json['data_breach_details'],\n dateIdentified: json['date_identified'],\n url: !exists(json, 'url') ? undefined : json['url'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n attachments: !exists(json, 'attachments')\n ? undefined\n : (json['attachments'] as Array).map(SharedAttachmentModelFromJSON),\n };\n}\n\nexport function IncidentEventExtendedToJSON(\n value?: IncidentEventExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n description: value.description,\n identifier: value.identifier,\n root_cause: value.rootCause,\n raised_by: value.raisedBy,\n owner: VendorUserToJSON(value.owner),\n actions_taken: value.actionsTaken,\n preventative_actions: value.preventativeActions,\n completed: value.completed,\n data_breach: value.dataBreach,\n data_breach_details: value.dataBreachDetails,\n date_identified: value.dateIdentified,\n url: value.url,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n attachments:\n value.attachments === undefined\n ? undefined\n : (value.attachments as Array).map(SharedAttachmentModelToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport { Answer, AnswerFromJSON, AnswerFromJSONTyped, AnswerToJSON } from './';\n\n/**\n *\n * @export\n * @interface InlineObject\n */\nexport interface InlineObject {\n /**\n *\n * @type {Array}\n * @memberof InlineObject\n */\n answers?: Array;\n}\n\nexport function InlineObjectFromJSON(json: any): InlineObject {\n return InlineObjectFromJSONTyped(json, false);\n}\n\nexport function InlineObjectFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): InlineObject {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n answers: !exists(json, 'answers')\n ? undefined\n : (json['answers'] as Array).map(AnswerFromJSON),\n };\n}\n\nexport function InlineObjectToJSON(value?: InlineObject | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n answers:\n value.answers === undefined\n ? undefined\n : (value.answers as Array).map(AnswerToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface Invoice\n */\nexport interface Invoice {\n /**\n *\n * @type {string}\n * @memberof Invoice\n */\n number?: string;\n /**\n *\n * @type {string}\n * @memberof Invoice\n */\n description?: string;\n /**\n *\n * @type {string}\n * @memberof Invoice\n */\n invoiceUrl?: string;\n /**\n *\n * @type {string}\n * @memberof Invoice\n */\n invoicePdf?: string;\n /**\n *\n * @type {number}\n * @memberof Invoice\n */\n amount?: number;\n /**\n *\n * @type {string}\n * @memberof Invoice\n */\n currency?: string;\n /**\n *\n * @type {string}\n * @memberof Invoice\n */\n createdAt?: string;\n}\n\nexport function InvoiceFromJSON(json: any): Invoice {\n return InvoiceFromJSONTyped(json, false);\n}\n\nexport function InvoiceFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Invoice {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n number: !exists(json, 'number') ? undefined : json['number'],\n description: !exists(json, 'description') ? undefined : json['description'],\n invoiceUrl: !exists(json, 'invoice_url') ? undefined : json['invoice_url'],\n invoicePdf: !exists(json, 'invoice_pdf') ? undefined : json['invoice_pdf'],\n amount: !exists(json, 'amount') ? undefined : json['amount'],\n currency: !exists(json, 'currency') ? undefined : json['currency'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n };\n}\n\nexport function InvoiceToJSON(value?: Invoice | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n number: value.number,\n description: value.description,\n invoice_url: value.invoiceUrl,\n invoice_pdf: value.invoicePdf,\n amount: value.amount,\n currency: value.currency,\n created_at: value.createdAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ItemCreationRequestCreatePayloadItemCreationRequest,\n ItemCreationRequestCreatePayloadItemCreationRequestFromJSON,\n ItemCreationRequestCreatePayloadItemCreationRequestFromJSONTyped,\n ItemCreationRequestCreatePayloadItemCreationRequestToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ItemCreationRequestCreatePayload\n */\nexport interface ItemCreationRequestCreatePayload {\n /**\n *\n * @type {ItemCreationRequestCreatePayloadItemCreationRequest}\n * @memberof ItemCreationRequestCreatePayload\n */\n itemCreationRequest: ItemCreationRequestCreatePayloadItemCreationRequest;\n}\n\nexport function ItemCreationRequestCreatePayloadFromJSON(\n json: any\n): ItemCreationRequestCreatePayload {\n return ItemCreationRequestCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function ItemCreationRequestCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ItemCreationRequestCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n itemCreationRequest:\n ItemCreationRequestCreatePayloadItemCreationRequestFromJSON(\n json['item_creation_request']\n ),\n };\n}\n\nexport function ItemCreationRequestCreatePayloadToJSON(\n value?: ItemCreationRequestCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n item_creation_request:\n ItemCreationRequestCreatePayloadItemCreationRequestToJSON(\n value.itemCreationRequest\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ItemCreationRequestCreatePayloadItemCreationRequest\n */\nexport interface ItemCreationRequestCreatePayloadItemCreationRequest {\n /**\n *\n * @type {string}\n * @memberof ItemCreationRequestCreatePayloadItemCreationRequest\n */\n templateId: string;\n /**\n *\n * @type {string}\n * @memberof ItemCreationRequestCreatePayloadItemCreationRequest\n */\n templateType: string;\n}\n\nexport function ItemCreationRequestCreatePayloadItemCreationRequestFromJSON(\n json: any\n): ItemCreationRequestCreatePayloadItemCreationRequest {\n return ItemCreationRequestCreatePayloadItemCreationRequestFromJSONTyped(\n json,\n false\n );\n}\n\nexport function ItemCreationRequestCreatePayloadItemCreationRequestFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ItemCreationRequestCreatePayloadItemCreationRequest {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n templateId: json['template_id'],\n templateType: json['template_type'],\n };\n}\n\nexport function ItemCreationRequestCreatePayloadItemCreationRequestToJSON(\n value?: ItemCreationRequestCreatePayloadItemCreationRequest | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n template_id: value.templateId,\n template_type: value.templateType,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface JurisdictionModel\n */\nexport interface JurisdictionModel {\n /**\n *\n * @type {string}\n * @memberof JurisdictionModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof JurisdictionModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof JurisdictionModel\n */\n identifier: string;\n}\n\nexport function JurisdictionModelFromJSON(json: any): JurisdictionModel {\n return JurisdictionModelFromJSONTyped(json, false);\n}\n\nexport function JurisdictionModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): JurisdictionModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: json['identifier'],\n };\n}\n\nexport function JurisdictionModelToJSON(value?: JurisdictionModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n LegalRegisterModelStats,\n LegalRegisterModelStatsFromJSON,\n LegalRegisterModelStatsFromJSONTyped,\n LegalRegisterModelStatsToJSON,\n ReviewFrequencyEnum,\n ReviewFrequencyEnumFromJSON,\n ReviewFrequencyEnumFromJSONTyped,\n ReviewFrequencyEnumToJSON,\n ReviewStatusEnum,\n ReviewStatusEnumFromJSON,\n ReviewStatusEnumFromJSONTyped,\n ReviewStatusEnumToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface LegalRegisterModel\n */\nexport interface LegalRegisterModel {\n /**\n *\n * @type {string}\n * @memberof LegalRegisterModel\n */\n id: string;\n /**\n *\n * @type {VendorUser}\n * @memberof LegalRegisterModel\n */\n owner?: VendorUser;\n /**\n *\n * @type {ReviewFrequencyEnum}\n * @memberof LegalRegisterModel\n */\n reviewFrequency?: ReviewFrequencyEnum;\n /**\n *\n * @type {ReviewStatusEnum}\n * @memberof LegalRegisterModel\n */\n reviewStatus?: ReviewStatusEnum;\n /**\n *\n * @type {boolean}\n * @memberof LegalRegisterModel\n */\n reviewOverdue?: boolean;\n /**\n *\n * @type {string}\n * @memberof LegalRegisterModel\n */\n nextReviewDate?: string | null;\n /**\n *\n * @type {string}\n * @memberof LegalRegisterModel\n */\n lastReviewedAt?: string | null;\n /**\n *\n * @type {LegalRegisterModelStats}\n * @memberof LegalRegisterModel\n */\n stats?: LegalRegisterModelStats;\n}\n\nexport function LegalRegisterModelFromJSON(json: any): LegalRegisterModel {\n return LegalRegisterModelFromJSONTyped(json, false);\n}\n\nexport function LegalRegisterModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): LegalRegisterModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n reviewFrequency: !exists(json, 'review_frequency')\n ? undefined\n : ReviewFrequencyEnumFromJSON(json['review_frequency']),\n reviewStatus: !exists(json, 'review_status')\n ? undefined\n : ReviewStatusEnumFromJSON(json['review_status']),\n reviewOverdue: !exists(json, 'review_overdue')\n ? undefined\n : json['review_overdue'],\n nextReviewDate: !exists(json, 'next_review_date')\n ? undefined\n : json['next_review_date'],\n lastReviewedAt: !exists(json, 'last_reviewed_at')\n ? undefined\n : json['last_reviewed_at'],\n stats: !exists(json, 'stats')\n ? undefined\n : LegalRegisterModelStatsFromJSON(json['stats']),\n };\n}\n\nexport function LegalRegisterModelToJSON(\n value?: LegalRegisterModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n owner: VendorUserToJSON(value.owner),\n review_frequency: ReviewFrequencyEnumToJSON(value.reviewFrequency),\n review_status: ReviewStatusEnumToJSON(value.reviewStatus),\n review_overdue: value.reviewOverdue,\n next_review_date: value.nextReviewDate,\n last_reviewed_at: value.lastReviewedAt,\n stats: LegalRegisterModelStatsToJSON(value.stats),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface LegalRegisterModelStats\n */\nexport interface LegalRegisterModelStats {\n /**\n *\n * @type {number}\n * @memberof LegalRegisterModelStats\n */\n legislationsCount?: number;\n /**\n *\n * @type {number}\n * @memberof LegalRegisterModelStats\n */\n actionsCount?: number;\n}\n\nexport function LegalRegisterModelStatsFromJSON(\n json: any\n): LegalRegisterModelStats {\n return LegalRegisterModelStatsFromJSONTyped(json, false);\n}\n\nexport function LegalRegisterModelStatsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): LegalRegisterModelStats {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n legislationsCount: !exists(json, 'legislations_count')\n ? undefined\n : json['legislations_count'],\n actionsCount: !exists(json, 'actions_count')\n ? undefined\n : json['actions_count'],\n };\n}\n\nexport function LegalRegisterModelStatsToJSON(\n value?: LegalRegisterModelStats | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n legislations_count: value.legislationsCount,\n actions_count: value.actionsCount,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ReviewFrequencyEnum,\n ReviewFrequencyEnumFromJSON,\n ReviewFrequencyEnumFromJSONTyped,\n ReviewFrequencyEnumToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface LegalRegisterUpdatePayload\n */\nexport interface LegalRegisterUpdatePayload {\n /**\n *\n * @type {string}\n * @memberof LegalRegisterUpdatePayload\n */\n ownerId?: string | null;\n /**\n *\n * @type {string}\n * @memberof LegalRegisterUpdatePayload\n */\n nextReviewDate?: string;\n /**\n *\n * @type {ReviewFrequencyEnum}\n * @memberof LegalRegisterUpdatePayload\n */\n reviewFrequency?: ReviewFrequencyEnum;\n}\n\nexport function LegalRegisterUpdatePayloadFromJSON(\n json: any\n): LegalRegisterUpdatePayload {\n return LegalRegisterUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function LegalRegisterUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): LegalRegisterUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n nextReviewDate: !exists(json, 'next_review_date')\n ? undefined\n : json['next_review_date'],\n reviewFrequency: !exists(json, 'review_frequency')\n ? undefined\n : ReviewFrequencyEnumFromJSON(json['review_frequency']),\n };\n}\n\nexport function LegalRegisterUpdatePayloadToJSON(\n value?: LegalRegisterUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n owner_id: value.ownerId,\n next_review_date: value.nextReviewDate,\n review_frequency: ReviewFrequencyEnumToJSON(value.reviewFrequency),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface LegislationAddPayload\n */\nexport interface LegislationAddPayload {\n /**\n *\n * @type {Array}\n * @memberof LegislationAddPayload\n */\n legislationTemplateIds: Array;\n}\n\nexport function LegislationAddPayloadFromJSON(\n json: any\n): LegislationAddPayload {\n return LegislationAddPayloadFromJSONTyped(json, false);\n}\n\nexport function LegislationAddPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): LegislationAddPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n legislationTemplateIds: json['legislation_template_ids'],\n };\n}\n\nexport function LegislationAddPayloadToJSON(\n value?: LegislationAddPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n legislation_template_ids: value.legislationTemplateIds,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface LegislationClassificationModel\n */\nexport interface LegislationClassificationModel {\n /**\n *\n * @type {string}\n * @memberof LegislationClassificationModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof LegislationClassificationModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof LegislationClassificationModel\n */\n identifier: string;\n}\n\nexport function LegislationClassificationModelFromJSON(\n json: any\n): LegislationClassificationModel {\n return LegislationClassificationModelFromJSONTyped(json, false);\n}\n\nexport function LegislationClassificationModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): LegislationClassificationModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: json['identifier'],\n };\n}\n\nexport function LegislationClassificationModelToJSON(\n value?: LegislationClassificationModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n LegislationCreatePayloadLegislation,\n LegislationCreatePayloadLegislationFromJSON,\n LegislationCreatePayloadLegislationFromJSONTyped,\n LegislationCreatePayloadLegislationToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface LegislationCreatePayload\n */\nexport interface LegislationCreatePayload {\n /**\n *\n * @type {LegislationCreatePayloadLegislation}\n * @memberof LegislationCreatePayload\n */\n legislation: LegislationCreatePayloadLegislation;\n}\n\nexport function LegislationCreatePayloadFromJSON(\n json: any\n): LegislationCreatePayload {\n return LegislationCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function LegislationCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): LegislationCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n legislation: LegislationCreatePayloadLegislationFromJSON(\n json['legislation']\n ),\n };\n}\n\nexport function LegislationCreatePayloadToJSON(\n value?: LegislationCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n legislation: LegislationCreatePayloadLegislationToJSON(value.legislation),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedLegislationRecurring,\n SharedLegislationRecurringFromJSON,\n SharedLegislationRecurringFromJSONTyped,\n SharedLegislationRecurringToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface LegislationCreatePayloadLegislation\n */\nexport interface LegislationCreatePayloadLegislation {\n /**\n *\n * @type {string}\n * @memberof LegislationCreatePayloadLegislation\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof LegislationCreatePayloadLegislation\n */\n summary: string;\n /**\n *\n * @type {string}\n * @memberof LegislationCreatePayloadLegislation\n */\n description: string;\n /**\n *\n * @type {string}\n * @memberof LegislationCreatePayloadLegislation\n */\n descriptionUrl: string | null;\n /**\n *\n * @type {string}\n * @memberof LegislationCreatePayloadLegislation\n */\n explanationOfCompliance: string | null;\n /**\n *\n * @type {SharedLegislationRecurring}\n * @memberof LegislationCreatePayloadLegislation\n */\n recurring: SharedLegislationRecurring;\n /**\n *\n * @type {string}\n * @memberof LegislationCreatePayloadLegislation\n */\n legislationClassificationId: string;\n /**\n *\n * @type {string}\n * @memberof LegislationCreatePayloadLegislation\n */\n jurisdictionId: string;\n}\n\nexport function LegislationCreatePayloadLegislationFromJSON(\n json: any\n): LegislationCreatePayloadLegislation {\n return LegislationCreatePayloadLegislationFromJSONTyped(json, false);\n}\n\nexport function LegislationCreatePayloadLegislationFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): LegislationCreatePayloadLegislation {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: json['name'],\n summary: json['summary'],\n description: json['description'],\n descriptionUrl: json['description_url'],\n explanationOfCompliance: json['explanation_of_compliance'],\n recurring: SharedLegislationRecurringFromJSON(json['recurring']),\n legislationClassificationId: json['legislation_classification_id'],\n jurisdictionId: json['jurisdiction_id'],\n };\n}\n\nexport function LegislationCreatePayloadLegislationToJSON(\n value?: LegislationCreatePayloadLegislation | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n summary: value.summary,\n description: value.description,\n description_url: value.descriptionUrl,\n explanation_of_compliance: value.explanationOfCompliance,\n recurring: SharedLegislationRecurringToJSON(value.recurring),\n legislation_classification_id: value.legislationClassificationId,\n jurisdiction_id: value.jurisdictionId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n JurisdictionModel,\n JurisdictionModelFromJSON,\n JurisdictionModelFromJSONTyped,\n JurisdictionModelToJSON,\n LegislationClassificationModel,\n LegislationClassificationModelFromJSON,\n LegislationClassificationModelFromJSONTyped,\n LegislationClassificationModelToJSON,\n LegislationExtendedAllOf,\n LegislationExtendedAllOfFromJSON,\n LegislationExtendedAllOfFromJSONTyped,\n LegislationExtendedAllOfToJSON,\n LegislationModel,\n LegislationModelFromJSON,\n LegislationModelFromJSONTyped,\n LegislationModelToJSON,\n LegislationReviewModel,\n LegislationReviewModelFromJSON,\n LegislationReviewModelFromJSONTyped,\n LegislationReviewModelToJSON,\n SharedLegislationRecurring,\n SharedLegislationRecurringFromJSON,\n SharedLegislationRecurringFromJSONTyped,\n SharedLegislationRecurringToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface LegislationExtended\n */\nexport interface LegislationExtended extends LegislationModel {\n /**\n *\n * @type {Array}\n * @memberof LegislationExtended\n */\n legislationReviews: Array;\n}\n\nexport function LegislationExtendedFromJSON(json: any): LegislationExtended {\n return LegislationExtendedFromJSONTyped(json, false);\n}\n\nexport function LegislationExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): LegislationExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...LegislationModelFromJSONTyped(json, ignoreDiscriminator),\n legislationReviews: (json['legislation_reviews'] as Array).map(\n LegislationReviewModelFromJSON\n ),\n };\n}\n\nexport function LegislationExtendedToJSON(\n value?: LegislationExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...LegislationModelToJSON(value),\n legislation_reviews: (value.legislationReviews as Array).map(\n LegislationReviewModelToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n JurisdictionModel,\n JurisdictionModelFromJSON,\n JurisdictionModelFromJSONTyped,\n JurisdictionModelToJSON,\n LegislationClassificationModel,\n LegislationClassificationModelFromJSON,\n LegislationClassificationModelFromJSONTyped,\n LegislationClassificationModelToJSON,\n SharedLegislationRecurring,\n SharedLegislationRecurringFromJSON,\n SharedLegislationRecurringFromJSONTyped,\n SharedLegislationRecurringToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface LegislationModel\n */\nexport interface LegislationModel {\n /**\n *\n * @type {string}\n * @memberof LegislationModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof LegislationModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof LegislationModel\n */\n identifier: string;\n /**\n *\n * @type {string}\n * @memberof LegislationModel\n */\n summary?: string;\n /**\n *\n * @type {string}\n * @memberof LegislationModel\n */\n description?: string;\n /**\n *\n * @type {string}\n * @memberof LegislationModel\n */\n descriptionUrl?: string | null;\n /**\n *\n * @type {string}\n * @memberof LegislationModel\n */\n explanationOfCompliance?: string | null;\n /**\n *\n * @type {string}\n * @memberof LegislationModel\n */\n legislationTemplateId?: string | null;\n /**\n *\n * @type {SharedLegislationRecurring}\n * @memberof LegislationModel\n */\n recurring?: SharedLegislationRecurring;\n /**\n *\n * @type {JurisdictionModel}\n * @memberof LegislationModel\n */\n jurisdiction?: JurisdictionModel;\n /**\n *\n * @type {LegislationClassificationModel}\n * @memberof LegislationModel\n */\n legislationClassification?: LegislationClassificationModel;\n /**\n *\n * @type {string}\n * @memberof LegislationModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof LegislationModel\n */\n updatedAt?: string;\n}\n\nexport function LegislationModelFromJSON(json: any): LegislationModel {\n return LegislationModelFromJSONTyped(json, false);\n}\n\nexport function LegislationModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): LegislationModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: json['identifier'],\n summary: !exists(json, 'summary') ? undefined : json['summary'],\n description: !exists(json, 'description') ? undefined : json['description'],\n descriptionUrl: !exists(json, 'description_url')\n ? undefined\n : json['description_url'],\n explanationOfCompliance: !exists(json, 'explanation_of_compliance')\n ? undefined\n : json['explanation_of_compliance'],\n legislationTemplateId: !exists(json, 'legislation_template_id')\n ? undefined\n : json['legislation_template_id'],\n recurring: !exists(json, 'recurring')\n ? undefined\n : SharedLegislationRecurringFromJSON(json['recurring']),\n jurisdiction: !exists(json, 'jurisdiction')\n ? undefined\n : JurisdictionModelFromJSON(json['jurisdiction']),\n legislationClassification: !exists(json, 'legislation_classification')\n ? undefined\n : LegislationClassificationModelFromJSON(\n json['legislation_classification']\n ),\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function LegislationModelToJSON(value?: LegislationModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n summary: value.summary,\n description: value.description,\n description_url: value.descriptionUrl,\n explanation_of_compliance: value.explanationOfCompliance,\n legislation_template_id: value.legislationTemplateId,\n recurring: SharedLegislationRecurringToJSON(value.recurring),\n jurisdiction: JurisdictionModelToJSON(value.jurisdiction),\n legislation_classification: LegislationClassificationModelToJSON(\n value.legislationClassification\n ),\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n UserDetails,\n UserDetailsFromJSON,\n UserDetailsFromJSONTyped,\n UserDetailsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface LegislationReviewModel\n */\nexport interface LegislationReviewModel {\n /**\n *\n * @type {string}\n * @memberof LegislationReviewModel\n */\n id: string;\n /**\n *\n * @type {UserDetails}\n * @memberof LegislationReviewModel\n */\n user: UserDetails;\n /**\n *\n * @type {string}\n * @memberof LegislationReviewModel\n */\n reviewDate: string | null;\n /**\n *\n * @type {string}\n * @memberof LegislationReviewModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof LegislationReviewModel\n */\n updatedAt?: string;\n}\n\nexport function LegislationReviewModelFromJSON(\n json: any\n): LegislationReviewModel {\n return LegislationReviewModelFromJSONTyped(json, false);\n}\n\nexport function LegislationReviewModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): LegislationReviewModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n user: UserDetailsFromJSON(json['user']),\n reviewDate: json['review_date'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function LegislationReviewModelToJSON(\n value?: LegislationReviewModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n user: UserDetailsToJSON(value.user),\n review_date: value.reviewDate,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n JurisdictionModel,\n JurisdictionModelFromJSON,\n JurisdictionModelFromJSONTyped,\n JurisdictionModelToJSON,\n LegislationClassificationModel,\n LegislationClassificationModelFromJSON,\n LegislationClassificationModelFromJSONTyped,\n LegislationClassificationModelToJSON,\n SharedLegislationRecurring,\n SharedLegislationRecurringFromJSON,\n SharedLegislationRecurringFromJSONTyped,\n SharedLegislationRecurringToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface LegislationTemplateModel\n */\nexport interface LegislationTemplateModel {\n /**\n *\n * @type {string}\n * @memberof LegislationTemplateModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof LegislationTemplateModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof LegislationTemplateModel\n */\n identifier: string;\n /**\n *\n * @type {string}\n * @memberof LegislationTemplateModel\n */\n summary?: string;\n /**\n *\n * @type {string}\n * @memberof LegislationTemplateModel\n */\n description?: string;\n /**\n *\n * @type {string}\n * @memberof LegislationTemplateModel\n */\n descriptionUrl?: string | null;\n /**\n *\n * @type {string}\n * @memberof LegislationTemplateModel\n */\n explanationOfCompliance?: string | null;\n /**\n *\n * @type {SharedLegislationRecurring}\n * @memberof LegislationTemplateModel\n */\n recurring?: SharedLegislationRecurring;\n /**\n *\n * @type {JurisdictionModel}\n * @memberof LegislationTemplateModel\n */\n jurisdiction?: JurisdictionModel;\n /**\n *\n * @type {LegislationClassificationModel}\n * @memberof LegislationTemplateModel\n */\n legislationClassification?: LegislationClassificationModel;\n}\n\nexport function LegislationTemplateModelFromJSON(\n json: any\n): LegislationTemplateModel {\n return LegislationTemplateModelFromJSONTyped(json, false);\n}\n\nexport function LegislationTemplateModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): LegislationTemplateModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: json['identifier'],\n summary: !exists(json, 'summary') ? undefined : json['summary'],\n description: !exists(json, 'description') ? undefined : json['description'],\n descriptionUrl: !exists(json, 'description_url')\n ? undefined\n : json['description_url'],\n explanationOfCompliance: !exists(json, 'explanation_of_compliance')\n ? undefined\n : json['explanation_of_compliance'],\n recurring: !exists(json, 'recurring')\n ? undefined\n : SharedLegislationRecurringFromJSON(json['recurring']),\n jurisdiction: !exists(json, 'jurisdiction')\n ? undefined\n : JurisdictionModelFromJSON(json['jurisdiction']),\n legislationClassification: !exists(json, 'legislation_classification')\n ? undefined\n : LegislationClassificationModelFromJSON(\n json['legislation_classification']\n ),\n };\n}\n\nexport function LegislationTemplateModelToJSON(\n value?: LegislationTemplateModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n summary: value.summary,\n description: value.description,\n description_url: value.descriptionUrl,\n explanation_of_compliance: value.explanationOfCompliance,\n recurring: SharedLegislationRecurringToJSON(value.recurring),\n jurisdiction: JurisdictionModelToJSON(value.jurisdiction),\n legislation_classification: LegislationClassificationModelToJSON(\n value.legislationClassification\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n LegislationUpdatePayloadLegislationReviews,\n LegislationUpdatePayloadLegislationReviewsFromJSON,\n LegislationUpdatePayloadLegislationReviewsFromJSONTyped,\n LegislationUpdatePayloadLegislationReviewsToJSON,\n SharedLegislationRecurring,\n SharedLegislationRecurringFromJSON,\n SharedLegislationRecurringFromJSONTyped,\n SharedLegislationRecurringToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface LegislationUpdatePayload\n */\nexport interface LegislationUpdatePayload {\n /**\n *\n * @type {string}\n * @memberof LegislationUpdatePayload\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof LegislationUpdatePayload\n */\n legislationClassificationId?: string;\n /**\n *\n * @type {string}\n * @memberof LegislationUpdatePayload\n */\n summary?: string;\n /**\n *\n * @type {string}\n * @memberof LegislationUpdatePayload\n */\n jurisdictionId?: string;\n /**\n *\n * @type {string}\n * @memberof LegislationUpdatePayload\n */\n descriptionUrl?: string | null;\n /**\n *\n * @type {SharedLegislationRecurring}\n * @memberof LegislationUpdatePayload\n */\n recurring?: SharedLegislationRecurring;\n /**\n *\n * @type {string}\n * @memberof LegislationUpdatePayload\n */\n explanationOfCompliance?: string | null;\n /**\n *\n * @type {Array}\n * @memberof LegislationUpdatePayload\n */\n legislationReviews?: Array;\n /**\n *\n * @type {string}\n * @memberof LegislationUpdatePayload\n */\n description?: string;\n}\n\nexport function LegislationUpdatePayloadFromJSON(\n json: any\n): LegislationUpdatePayload {\n return LegislationUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function LegislationUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): LegislationUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n legislationClassificationId: !exists(json, 'legislation_classification_id')\n ? undefined\n : json['legislation_classification_id'],\n summary: !exists(json, 'summary') ? undefined : json['summary'],\n jurisdictionId: !exists(json, 'jurisdiction_id')\n ? undefined\n : json['jurisdiction_id'],\n descriptionUrl: !exists(json, 'description_url')\n ? undefined\n : json['description_url'],\n recurring: !exists(json, 'recurring')\n ? undefined\n : SharedLegislationRecurringFromJSON(json['recurring']),\n explanationOfCompliance: !exists(json, 'explanation_of_compliance')\n ? undefined\n : json['explanation_of_compliance'],\n legislationReviews: !exists(json, 'legislation_reviews')\n ? undefined\n : (json['legislation_reviews'] as Array).map(\n LegislationUpdatePayloadLegislationReviewsFromJSON\n ),\n description: !exists(json, 'description') ? undefined : json['description'],\n };\n}\n\nexport function LegislationUpdatePayloadToJSON(\n value?: LegislationUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n legislation_classification_id: value.legislationClassificationId,\n summary: value.summary,\n jurisdiction_id: value.jurisdictionId,\n description_url: value.descriptionUrl,\n recurring: SharedLegislationRecurringToJSON(value.recurring),\n explanation_of_compliance: value.explanationOfCompliance,\n legislation_reviews:\n value.legislationReviews === undefined\n ? undefined\n : (value.legislationReviews as Array).map(\n LegislationUpdatePayloadLegislationReviewsToJSON\n ),\n description: value.description,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface LegislationUpdatePayloadLegislationReviews\n */\nexport interface LegislationUpdatePayloadLegislationReviews {\n /**\n *\n * @type {string}\n * @memberof LegislationUpdatePayloadLegislationReviews\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof LegislationUpdatePayloadLegislationReviews\n */\n userId: string;\n /**\n *\n * @type {string}\n * @memberof LegislationUpdatePayloadLegislationReviews\n */\n reviewDate: string;\n}\n\nexport function LegislationUpdatePayloadLegislationReviewsFromJSON(\n json: any\n): LegislationUpdatePayloadLegislationReviews {\n return LegislationUpdatePayloadLegislationReviewsFromJSONTyped(json, false);\n}\n\nexport function LegislationUpdatePayloadLegislationReviewsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): LegislationUpdatePayloadLegislationReviews {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n userId: json['user_id'],\n reviewDate: json['review_date'],\n };\n}\n\nexport function LegislationUpdatePayloadLegislationReviewsToJSON(\n value?: LegislationUpdatePayloadLegislationReviews | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n user_id: value.userId,\n review_date: value.reviewDate,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface MessageResponse\n */\nexport interface MessageResponse {\n /**\n *\n * @type {Array}\n * @memberof MessageResponse\n */\n messages: Array;\n}\n\nexport function MessageResponseFromJSON(json: any): MessageResponse {\n return MessageResponseFromJSONTyped(json, false);\n}\n\nexport function MessageResponseFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): MessageResponse {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n messages: json['messages'],\n };\n}\n\nexport function MessageResponseToJSON(value?: MessageResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n messages: value.messages,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n MultipleShareShares,\n MultipleShareSharesFromJSON,\n MultipleShareSharesFromJSONTyped,\n MultipleShareSharesToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface MultipleShare\n */\nexport interface MultipleShare {\n /**\n *\n * @type {string}\n * @memberof MultipleShare\n */\n message?: string | null;\n /**\n *\n * @type {Array}\n * @memberof MultipleShare\n */\n shares: Array;\n}\n\nexport function MultipleShareFromJSON(json: any): MultipleShare {\n return MultipleShareFromJSONTyped(json, false);\n}\n\nexport function MultipleShareFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): MultipleShare {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n message: !exists(json, 'message') ? undefined : json['message'],\n shares: (json['shares'] as Array).map(MultipleShareSharesFromJSON),\n };\n}\n\nexport function MultipleShareToJSON(value?: MultipleShare | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n message: value.message,\n shares: (value.shares as Array).map(MultipleShareSharesToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface MultipleShareDelete\n */\nexport interface MultipleShareDelete {\n /**\n *\n * @type {Array}\n * @memberof MultipleShareDelete\n */\n emails: Array;\n}\n\nexport function MultipleShareDeleteFromJSON(json: any): MultipleShareDelete {\n return MultipleShareDeleteFromJSONTyped(json, false);\n}\n\nexport function MultipleShareDeleteFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): MultipleShareDelete {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n emails: json['emails'],\n };\n}\n\nexport function MultipleShareDeleteToJSON(\n value?: MultipleShareDelete | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n emails: value.emails,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ShareAccessLevel,\n ShareAccessLevelFromJSON,\n ShareAccessLevelFromJSONTyped,\n ShareAccessLevelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface MultipleShareShares\n */\nexport interface MultipleShareShares {\n /**\n *\n * @type {string}\n * @memberof MultipleShareShares\n */\n email?: string;\n /**\n *\n * @type {ShareAccessLevel}\n * @memberof MultipleShareShares\n */\n accessLevel?: ShareAccessLevel;\n}\n\nexport function MultipleShareSharesFromJSON(json: any): MultipleShareShares {\n return MultipleShareSharesFromJSONTyped(json, false);\n}\n\nexport function MultipleShareSharesFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): MultipleShareShares {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n email: !exists(json, 'email') ? undefined : json['email'],\n accessLevel: !exists(json, 'access_level')\n ? undefined\n : ShareAccessLevelFromJSON(json['access_level']),\n };\n}\n\nexport function MultipleShareSharesToJSON(\n value?: MultipleShareShares | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n email: value.email,\n access_level: ShareAccessLevelToJSON(value.accessLevel),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n NotificationModel,\n NotificationModelFromJSON,\n NotificationModelFromJSONTyped,\n NotificationModelToJSON,\n SharedPaginationMeta,\n SharedPaginationMetaFromJSON,\n SharedPaginationMetaFromJSONTyped,\n SharedPaginationMetaToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface NotificationList\n */\nexport interface NotificationList {\n /**\n *\n * @type {Array}\n * @memberof NotificationList\n */\n data: Array;\n /**\n *\n * @type {SharedPaginationMeta}\n * @memberof NotificationList\n */\n meta: SharedPaginationMeta;\n}\n\nexport function NotificationListFromJSON(json: any): NotificationList {\n return NotificationListFromJSONTyped(json, false);\n}\n\nexport function NotificationListFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): NotificationList {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n data: (json['data'] as Array).map(NotificationModelFromJSON),\n meta: SharedPaginationMetaFromJSON(json['meta']),\n };\n}\n\nexport function NotificationListToJSON(value?: NotificationList | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n data: (value.data as Array).map(NotificationModelToJSON),\n meta: SharedPaginationMetaToJSON(value.meta),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface NotificationModel\n */\nexport interface NotificationModel {\n /**\n *\n * @type {string}\n * @memberof NotificationModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof NotificationModel\n */\n htmlMessage: string;\n /**\n *\n * @type {string}\n * @memberof NotificationModel\n */\n relatedToId: string | null;\n /**\n *\n * @type {string}\n * @memberof NotificationModel\n */\n relatedToType: string | null;\n /**\n *\n * @type {string}\n * @memberof NotificationModel\n */\n relatedToPath?: string | null;\n /**\n *\n * @type {string}\n * @memberof NotificationModel\n */\n createdAt: string;\n}\n\nexport function NotificationModelFromJSON(json: any): NotificationModel {\n return NotificationModelFromJSONTyped(json, false);\n}\n\nexport function NotificationModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): NotificationModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n htmlMessage: json['html_message'],\n relatedToId: json['related_to_id'],\n relatedToType: json['related_to_type'],\n relatedToPath: !exists(json, 'related_to_path')\n ? undefined\n : json['related_to_path'],\n createdAt: json['created_at'],\n };\n}\n\nexport function NotificationModelToJSON(value?: NotificationModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n html_message: value.htmlMessage,\n related_to_id: value.relatedToId,\n related_to_type: value.relatedToType,\n related_to_path: value.relatedToPath,\n created_at: value.createdAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface Office\n */\nexport interface Office {\n /**\n *\n * @type {string}\n * @memberof Office\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof Office\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof Office\n */\n purpose?: string | null;\n /**\n *\n * @type {string}\n * @memberof Office\n */\n address1?: string;\n /**\n *\n * @type {string}\n * @memberof Office\n */\n address2?: string;\n /**\n *\n * @type {string}\n * @memberof Office\n */\n city?: string | null;\n /**\n *\n * @type {string}\n * @memberof Office\n */\n state?: string | null;\n /**\n *\n * @type {string}\n * @memberof Office\n */\n postCode?: string | null;\n /**\n *\n * @type {string}\n * @memberof Office\n */\n country?: string | null;\n /**\n *\n * @type {string}\n * @memberof Office\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof Office\n */\n updatedAt?: string;\n /**\n *\n * @type {boolean}\n * @memberof Office\n */\n editable?: boolean;\n}\n\nexport function OfficeFromJSON(json: any): Office {\n return OfficeFromJSONTyped(json, false);\n}\n\nexport function OfficeFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Office {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n purpose: !exists(json, 'purpose') ? undefined : json['purpose'],\n address1: !exists(json, 'address_1') ? undefined : json['address_1'],\n address2: !exists(json, 'address_2') ? undefined : json['address_2'],\n city: !exists(json, 'city') ? undefined : json['city'],\n state: !exists(json, 'state') ? undefined : json['state'],\n postCode: !exists(json, 'post_code') ? undefined : json['post_code'],\n country: !exists(json, 'country') ? undefined : json['country'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n editable: !exists(json, 'editable') ? undefined : json['editable'],\n };\n}\n\nexport function OfficeToJSON(value?: Office | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n purpose: value.purpose,\n address_1: value.address1,\n address_2: value.address2,\n city: value.city,\n state: value.state,\n post_code: value.postCode,\n country: value.country,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n editable: value.editable,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface Officer\n */\nexport interface Officer {\n /**\n *\n * @type {string}\n * @memberof Officer\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof Officer\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof Officer\n */\n role?: string;\n /**\n *\n * @type {string}\n * @memberof Officer\n */\n status?: string;\n /**\n *\n * @type {string}\n * @memberof Officer\n */\n address?: string | null;\n /**\n *\n * @type {string}\n * @memberof Officer\n */\n dateOfBirth?: string | null;\n /**\n *\n * @type {string}\n * @memberof Officer\n */\n nationality?: string | null;\n /**\n *\n * @type {string}\n * @memberof Officer\n */\n countryOfResidence?: string | null;\n /**\n *\n * @type {string}\n * @memberof Officer\n */\n occupation?: string | null;\n /**\n *\n * @type {string}\n * @memberof Officer\n */\n appointedOn?: string | null;\n /**\n *\n * @type {string}\n * @memberof Officer\n */\n ceasedOn?: string | null;\n}\n\nexport function OfficerFromJSON(json: any): Officer {\n return OfficerFromJSONTyped(json, false);\n}\n\nexport function OfficerFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Officer {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n role: !exists(json, 'role') ? undefined : json['role'],\n status: !exists(json, 'status') ? undefined : json['status'],\n address: !exists(json, 'address') ? undefined : json['address'],\n dateOfBirth: !exists(json, 'date_of_birth')\n ? undefined\n : json['date_of_birth'],\n nationality: !exists(json, 'nationality') ? undefined : json['nationality'],\n countryOfResidence: !exists(json, 'country_of_residence')\n ? undefined\n : json['country_of_residence'],\n occupation: !exists(json, 'occupation') ? undefined : json['occupation'],\n appointedOn: !exists(json, 'appointed_on')\n ? undefined\n : json['appointed_on'],\n ceasedOn: !exists(json, 'ceased_on') ? undefined : json['ceased_on'],\n };\n}\n\nexport function OfficerToJSON(value?: Officer | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n role: value.role,\n status: value.status,\n address: value.address,\n date_of_birth: value.dateOfBirth,\n nationality: value.nationality,\n country_of_residence: value.countryOfResidence,\n occupation: value.occupation,\n appointed_on: value.appointedOn,\n ceased_on: value.ceasedOn,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Officer,\n OfficerFromJSON,\n OfficerFromJSONTyped,\n OfficerToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface OfficerRole\n */\nexport interface OfficerRole {\n /**\n *\n * @type {string}\n * @memberof OfficerRole\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof OfficerRole\n */\n name?: string;\n /**\n *\n * @type {Array}\n * @memberof OfficerRole\n */\n officers?: Array;\n}\n\nexport function OfficerRoleFromJSON(json: any): OfficerRole {\n return OfficerRoleFromJSONTyped(json, false);\n}\n\nexport function OfficerRoleFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): OfficerRole {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n officers: !exists(json, 'officers')\n ? undefined\n : (json['officers'] as Array).map(OfficerFromJSON),\n };\n}\n\nexport function OfficerRoleToJSON(value?: OfficerRole | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n officers:\n value.officers === undefined\n ? undefined\n : (value.officers as Array).map(OfficerToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n PaymentMethodBillingDetails,\n PaymentMethodBillingDetailsFromJSON,\n PaymentMethodBillingDetailsFromJSONTyped,\n PaymentMethodBillingDetailsToJSON,\n PaymentMethodCard,\n PaymentMethodCardFromJSON,\n PaymentMethodCardFromJSONTyped,\n PaymentMethodCardToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface PaymentMethod\n */\nexport interface PaymentMethod {\n /**\n *\n * @type {string}\n * @memberof PaymentMethod\n */\n id?: string;\n /**\n *\n * @type {PaymentMethodBillingDetails}\n * @memberof PaymentMethod\n */\n billingDetails?: PaymentMethodBillingDetails | null;\n /**\n *\n * @type {PaymentMethodCard}\n * @memberof PaymentMethod\n */\n card?: PaymentMethodCard;\n}\n\nexport function PaymentMethodFromJSON(json: any): PaymentMethod {\n return PaymentMethodFromJSONTyped(json, false);\n}\n\nexport function PaymentMethodFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PaymentMethod {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n billingDetails: !exists(json, 'billing_details')\n ? undefined\n : PaymentMethodBillingDetailsFromJSON(json['billing_details']),\n card: !exists(json, 'card')\n ? undefined\n : PaymentMethodCardFromJSON(json['card']),\n };\n}\n\nexport function PaymentMethodToJSON(value?: PaymentMethod | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n billing_details: PaymentMethodBillingDetailsToJSON(value.billingDetails),\n card: PaymentMethodCardToJSON(value.card),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n PaymentMethodBillingDetailsAddress,\n PaymentMethodBillingDetailsAddressFromJSON,\n PaymentMethodBillingDetailsAddressFromJSONTyped,\n PaymentMethodBillingDetailsAddressToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface PaymentMethodBillingDetails\n */\nexport interface PaymentMethodBillingDetails {\n /**\n *\n * @type {string}\n * @memberof PaymentMethodBillingDetails\n */\n name?: string;\n /**\n *\n * @type {PaymentMethodBillingDetailsAddress}\n * @memberof PaymentMethodBillingDetails\n */\n address?: PaymentMethodBillingDetailsAddress;\n /**\n *\n * @type {string}\n * @memberof PaymentMethodBillingDetails\n */\n email?: string | null;\n /**\n *\n * @type {string}\n * @memberof PaymentMethodBillingDetails\n */\n phone?: string | null;\n}\n\nexport function PaymentMethodBillingDetailsFromJSON(\n json: any\n): PaymentMethodBillingDetails {\n return PaymentMethodBillingDetailsFromJSONTyped(json, false);\n}\n\nexport function PaymentMethodBillingDetailsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PaymentMethodBillingDetails {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n address: !exists(json, 'address')\n ? undefined\n : PaymentMethodBillingDetailsAddressFromJSON(json['address']),\n email: !exists(json, 'email') ? undefined : json['email'],\n phone: !exists(json, 'phone') ? undefined : json['phone'],\n };\n}\n\nexport function PaymentMethodBillingDetailsToJSON(\n value?: PaymentMethodBillingDetails | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n address: PaymentMethodBillingDetailsAddressToJSON(value.address),\n email: value.email,\n phone: value.phone,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface PaymentMethodBillingDetailsAddress\n */\nexport interface PaymentMethodBillingDetailsAddress {\n /**\n *\n * @type {string}\n * @memberof PaymentMethodBillingDetailsAddress\n */\n city?: string;\n /**\n *\n * @type {string}\n * @memberof PaymentMethodBillingDetailsAddress\n */\n country?: string;\n /**\n *\n * @type {string}\n * @memberof PaymentMethodBillingDetailsAddress\n */\n line1?: string;\n /**\n *\n * @type {string}\n * @memberof PaymentMethodBillingDetailsAddress\n */\n line2?: string | null;\n /**\n *\n * @type {string}\n * @memberof PaymentMethodBillingDetailsAddress\n */\n postalCode?: string;\n /**\n *\n * @type {string}\n * @memberof PaymentMethodBillingDetailsAddress\n */\n state?: string | null;\n}\n\nexport function PaymentMethodBillingDetailsAddressFromJSON(\n json: any\n): PaymentMethodBillingDetailsAddress {\n return PaymentMethodBillingDetailsAddressFromJSONTyped(json, false);\n}\n\nexport function PaymentMethodBillingDetailsAddressFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PaymentMethodBillingDetailsAddress {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n city: !exists(json, 'city') ? undefined : json['city'],\n country: !exists(json, 'country') ? undefined : json['country'],\n line1: !exists(json, 'line1') ? undefined : json['line1'],\n line2: !exists(json, 'line2') ? undefined : json['line2'],\n postalCode: !exists(json, 'postal_code') ? undefined : json['postal_code'],\n state: !exists(json, 'state') ? undefined : json['state'],\n };\n}\n\nexport function PaymentMethodBillingDetailsAddressToJSON(\n value?: PaymentMethodBillingDetailsAddress | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n city: value.city,\n country: value.country,\n line1: value.line1,\n line2: value.line2,\n postal_code: value.postalCode,\n state: value.state,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface PaymentMethodCard\n */\nexport interface PaymentMethodCard {\n /**\n *\n * @type {string}\n * @memberof PaymentMethodCard\n */\n brand?: string;\n /**\n *\n * @type {string}\n * @memberof PaymentMethodCard\n */\n last4?: string;\n /**\n *\n * @type {string}\n * @memberof PaymentMethodCard\n */\n expMonth?: string;\n /**\n *\n * @type {string}\n * @memberof PaymentMethodCard\n */\n expYear?: string;\n /**\n *\n * @type {boolean}\n * @memberof PaymentMethodCard\n */\n isDefault?: boolean | null;\n}\n\nexport function PaymentMethodCardFromJSON(json: any): PaymentMethodCard {\n return PaymentMethodCardFromJSONTyped(json, false);\n}\n\nexport function PaymentMethodCardFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PaymentMethodCard {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n brand: !exists(json, 'brand') ? undefined : json['brand'],\n last4: !exists(json, 'last4') ? undefined : json['last4'],\n expMonth: !exists(json, 'exp_month') ? undefined : json['exp_month'],\n expYear: !exists(json, 'exp_year') ? undefined : json['exp_year'],\n isDefault: !exists(json, 'is_default') ? undefined : json['is_default'],\n };\n}\n\nexport function PaymentMethodCardToJSON(value?: PaymentMethodCard | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n brand: value.brand,\n last4: value.last4,\n exp_month: value.expMonth,\n exp_year: value.expYear,\n is_default: value.isDefault,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface PaymentMethodUpdatePayload\n */\nexport interface PaymentMethodUpdatePayload {\n /**\n *\n * @type {string}\n * @memberof PaymentMethodUpdatePayload\n */\n expYear?: string;\n /**\n *\n * @type {string}\n * @memberof PaymentMethodUpdatePayload\n */\n expMonth?: string;\n}\n\nexport function PaymentMethodUpdatePayloadFromJSON(\n json: any\n): PaymentMethodUpdatePayload {\n return PaymentMethodUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function PaymentMethodUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PaymentMethodUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n expYear: !exists(json, 'exp_year') ? undefined : json['exp_year'],\n expMonth: !exists(json, 'exp_month') ? undefined : json['exp_month'],\n };\n}\n\nexport function PaymentMethodUpdatePayloadToJSON(\n value?: PaymentMethodUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n exp_year: value.expYear,\n exp_month: value.expMonth,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface PaymentPlan\n */\nexport interface PaymentPlan {\n /**\n *\n * @type {string}\n * @memberof PaymentPlan\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof PaymentPlan\n */\n name?: string;\n /**\n *\n * @type {number}\n * @memberof PaymentPlan\n */\n rank?: number;\n /**\n *\n * @type {string}\n * @memberof PaymentPlan\n */\n internalName?: string;\n /**\n *\n * @type {number}\n * @memberof PaymentPlan\n */\n usersLimit?: number;\n /**\n *\n * @type {number}\n * @memberof PaymentPlan\n */\n monthlyPrice?: number;\n /**\n *\n * @type {number}\n * @memberof PaymentPlan\n */\n annuallyPrice?: number;\n /**\n *\n * @type {string}\n * @memberof PaymentPlan\n */\n stripeMonthlyPriceId?: string;\n /**\n *\n * @type {string}\n * @memberof PaymentPlan\n */\n stripeAnnuallyPriceId?: string;\n /**\n *\n * @type {string}\n * @memberof PaymentPlan\n */\n summary?: string | null;\n /**\n *\n * @type {string}\n * @memberof PaymentPlan\n */\n subheader?: string | null;\n /**\n *\n * @type {string}\n * @memberof PaymentPlan\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof PaymentPlan\n */\n descriptionAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof PaymentPlan\n */\n productId?: string;\n}\n\nexport function PaymentPlanFromJSON(json: any): PaymentPlan {\n return PaymentPlanFromJSONTyped(json, false);\n}\n\nexport function PaymentPlanFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PaymentPlan {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n rank: !exists(json, 'rank') ? undefined : json['rank'],\n internalName: !exists(json, 'internal_name')\n ? undefined\n : json['internal_name'],\n usersLimit: !exists(json, 'users_limit') ? undefined : json['users_limit'],\n monthlyPrice: !exists(json, 'monthly_price')\n ? undefined\n : json['monthly_price'],\n annuallyPrice: !exists(json, 'annually_price')\n ? undefined\n : json['annually_price'],\n stripeMonthlyPriceId: !exists(json, 'stripe_monthly_price_id')\n ? undefined\n : json['stripe_monthly_price_id'],\n stripeAnnuallyPriceId: !exists(json, 'stripe_annually_price_id')\n ? undefined\n : json['stripe_annually_price_id'],\n summary: !exists(json, 'summary') ? undefined : json['summary'],\n subheader: !exists(json, 'subheader') ? undefined : json['subheader'],\n description: !exists(json, 'description') ? undefined : json['description'],\n descriptionAsHtml: !exists(json, 'description_as_html')\n ? undefined\n : json['description_as_html'],\n productId: !exists(json, 'product_id') ? undefined : json['product_id'],\n };\n}\n\nexport function PaymentPlanToJSON(value?: PaymentPlan | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n rank: value.rank,\n internal_name: value.internalName,\n users_limit: value.usersLimit,\n monthly_price: value.monthlyPrice,\n annually_price: value.annuallyPrice,\n stripe_monthly_price_id: value.stripeMonthlyPriceId,\n stripe_annually_price_id: value.stripeAnnuallyPriceId,\n summary: value.summary,\n subheader: value.subheader,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n product_id: value.productId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface PaymentPlanPrice\n */\nexport interface PaymentPlanPrice {\n /**\n *\n * @type {string}\n * @memberof PaymentPlanPrice\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof PaymentPlanPrice\n */\n internalName: string;\n /**\n *\n * @type {number}\n * @memberof PaymentPlanPrice\n */\n price: number;\n}\n\nexport function PaymentPlanPriceFromJSON(json: any): PaymentPlanPrice {\n return PaymentPlanPriceFromJSONTyped(json, false);\n}\n\nexport function PaymentPlanPriceFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PaymentPlanPrice {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n internalName: json['internal_name'],\n price: json['price'],\n };\n}\n\nexport function PaymentPlanPriceToJSON(value?: PaymentPlanPrice | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n internal_name: value.internalName,\n price: value.price,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedMaxUsersAmount,\n SharedMaxUsersAmountFromJSON,\n SharedMaxUsersAmountFromJSONTyped,\n SharedMaxUsersAmountToJSON,\n SharedPaymentPeriod,\n SharedPaymentPeriodFromJSON,\n SharedPaymentPeriodFromJSONTyped,\n SharedPaymentPeriodToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface PaymentPlanVendorCheckoutCreatePayload\n */\nexport interface PaymentPlanVendorCheckoutCreatePayload {\n /**\n *\n * @type {string}\n * @memberof PaymentPlanVendorCheckoutCreatePayload\n */\n planId: string;\n /**\n *\n * @type {string}\n * @memberof PaymentPlanVendorCheckoutCreatePayload\n */\n vendorId: string;\n /**\n *\n * @type {string}\n * @memberof PaymentPlanVendorCheckoutCreatePayload\n */\n productId?: string;\n /**\n *\n * @type {SharedMaxUsersAmount}\n * @memberof PaymentPlanVendorCheckoutCreatePayload\n */\n usersLimit?: SharedMaxUsersAmount;\n /**\n *\n * @type {SharedPaymentPeriod}\n * @memberof PaymentPlanVendorCheckoutCreatePayload\n */\n paymentPeriod: SharedPaymentPeriod;\n /**\n *\n * @type {string}\n * @memberof PaymentPlanVendorCheckoutCreatePayload\n */\n purchasableId?: string;\n /**\n *\n * @type {string}\n * @memberof PaymentPlanVendorCheckoutCreatePayload\n */\n purchasableType?: string;\n}\n\nexport function PaymentPlanVendorCheckoutCreatePayloadFromJSON(\n json: any\n): PaymentPlanVendorCheckoutCreatePayload {\n return PaymentPlanVendorCheckoutCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function PaymentPlanVendorCheckoutCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PaymentPlanVendorCheckoutCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n planId: json['plan_id'],\n vendorId: json['vendor_id'],\n productId: !exists(json, 'product_id') ? undefined : json['product_id'],\n usersLimit: !exists(json, 'users_limit')\n ? undefined\n : SharedMaxUsersAmountFromJSON(json['users_limit']),\n paymentPeriod: SharedPaymentPeriodFromJSON(json['payment_period']),\n purchasableId: !exists(json, 'purchasable_id')\n ? undefined\n : json['purchasable_id'],\n purchasableType: !exists(json, 'purchasable_type')\n ? undefined\n : json['purchasable_type'],\n };\n}\n\nexport function PaymentPlanVendorCheckoutCreatePayloadToJSON(\n value?: PaymentPlanVendorCheckoutCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n plan_id: value.planId,\n vendor_id: value.vendorId,\n product_id: value.productId,\n users_limit: SharedMaxUsersAmountToJSON(value.usersLimit),\n payment_period: SharedPaymentPeriodToJSON(value.paymentPeriod),\n purchasable_id: value.purchasableId,\n purchasable_type: value.purchasableType,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface PaymentPlanVendorCheckoutModel\n */\nexport interface PaymentPlanVendorCheckoutModel {\n /**\n *\n * @type {string}\n * @memberof PaymentPlanVendorCheckoutModel\n */\n sessionId: string;\n /**\n *\n * @type {string}\n * @memberof PaymentPlanVendorCheckoutModel\n */\n stripeKey: string;\n}\n\nexport function PaymentPlanVendorCheckoutModelFromJSON(\n json: any\n): PaymentPlanVendorCheckoutModel {\n return PaymentPlanVendorCheckoutModelFromJSONTyped(json, false);\n}\n\nexport function PaymentPlanVendorCheckoutModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PaymentPlanVendorCheckoutModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n sessionId: json['sessionId'],\n stripeKey: json['stripe_key'],\n };\n}\n\nexport function PaymentPlanVendorCheckoutModelToJSON(\n value?: PaymentPlanVendorCheckoutModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n sessionId: value.sessionId,\n stripe_key: value.stripeKey,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n PestelItemCreatePayloadPestelItem,\n PestelItemCreatePayloadPestelItemFromJSON,\n PestelItemCreatePayloadPestelItemFromJSONTyped,\n PestelItemCreatePayloadPestelItemToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface PestelItemCreatePayload\n */\nexport interface PestelItemCreatePayload {\n /**\n *\n * @type {PestelItemCreatePayloadPestelItem}\n * @memberof PestelItemCreatePayload\n */\n pestelItem: PestelItemCreatePayloadPestelItem;\n}\n\nexport function PestelItemCreatePayloadFromJSON(\n json: any\n): PestelItemCreatePayload {\n return PestelItemCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function PestelItemCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PestelItemCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n pestelItem: PestelItemCreatePayloadPestelItemFromJSON(json['pestel_item']),\n };\n}\n\nexport function PestelItemCreatePayloadToJSON(\n value?: PestelItemCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n pestel_item: PestelItemCreatePayloadPestelItemToJSON(value.pestelItem),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n PestelItemArea,\n PestelItemAreaFromJSON,\n PestelItemAreaFromJSONTyped,\n PestelItemAreaToJSON,\n PestelItemItemType,\n PestelItemItemTypeFromJSON,\n PestelItemItemTypeFromJSONTyped,\n PestelItemItemTypeToJSON,\n PestelItemLocationType,\n PestelItemLocationTypeFromJSON,\n PestelItemLocationTypeFromJSONTyped,\n PestelItemLocationTypeToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface PestelItemCreatePayloadPestelItem\n */\nexport interface PestelItemCreatePayloadPestelItem {\n /**\n *\n * @type {string}\n * @memberof PestelItemCreatePayloadPestelItem\n */\n description: string;\n /**\n *\n * @type {PestelItemArea}\n * @memberof PestelItemCreatePayloadPestelItem\n */\n area: PestelItemArea;\n /**\n *\n * @type {PestelItemItemType}\n * @memberof PestelItemCreatePayloadPestelItem\n */\n itemType: PestelItemItemType;\n /**\n *\n * @type {PestelItemLocationType}\n * @memberof PestelItemCreatePayloadPestelItem\n */\n locationType: PestelItemLocationType;\n /**\n *\n * @type {number}\n * @memberof PestelItemCreatePayloadPestelItem\n */\n consequence: number;\n /**\n *\n * @type {number}\n * @memberof PestelItemCreatePayloadPestelItem\n */\n likelihood: number;\n /**\n *\n * @type {string}\n * @memberof PestelItemCreatePayloadPestelItem\n */\n mitigationFactors?: string | null;\n /**\n *\n * @type {string}\n * @memberof PestelItemCreatePayloadPestelItem\n */\n comment?: string | null;\n}\n\nexport function PestelItemCreatePayloadPestelItemFromJSON(\n json: any\n): PestelItemCreatePayloadPestelItem {\n return PestelItemCreatePayloadPestelItemFromJSONTyped(json, false);\n}\n\nexport function PestelItemCreatePayloadPestelItemFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PestelItemCreatePayloadPestelItem {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n description: json['description'],\n area: PestelItemAreaFromJSON(json['area']),\n itemType: PestelItemItemTypeFromJSON(json['item_type']),\n locationType: PestelItemLocationTypeFromJSON(json['location_type']),\n consequence: json['consequence'],\n likelihood: json['likelihood'],\n mitigationFactors: !exists(json, 'mitigation_factors')\n ? undefined\n : json['mitigation_factors'],\n comment: !exists(json, 'comment') ? undefined : json['comment'],\n };\n}\n\nexport function PestelItemCreatePayloadPestelItemToJSON(\n value?: PestelItemCreatePayloadPestelItem | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n description: value.description,\n area: PestelItemAreaToJSON(value.area),\n item_type: PestelItemItemTypeToJSON(value.itemType),\n location_type: PestelItemLocationTypeToJSON(value.locationType),\n consequence: value.consequence,\n likelihood: value.likelihood,\n mitigation_factors: value.mitigationFactors,\n comment: value.comment,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum PestelItemItemType {\n Risk = 'risk',\n Opportunity = 'opportunity',\n}\n\nexport function PestelItemItemTypeFromJSON(json: any): PestelItemItemType {\n return PestelItemItemTypeFromJSONTyped(json, false);\n}\n\nexport function PestelItemItemTypeFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PestelItemItemType {\n return json as PestelItemItemType;\n}\n\nexport function PestelItemItemTypeToJSON(\n value?: PestelItemItemType | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n PestelItemArea,\n PestelItemAreaFromJSON,\n PestelItemAreaFromJSONTyped,\n PestelItemAreaToJSON,\n PestelItemItemType,\n PestelItemItemTypeFromJSON,\n PestelItemItemTypeFromJSONTyped,\n PestelItemItemTypeToJSON,\n PestelItemLocationType,\n PestelItemLocationTypeFromJSON,\n PestelItemLocationTypeFromJSONTyped,\n PestelItemLocationTypeToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface PestelItemModel\n */\nexport interface PestelItemModel {\n /**\n *\n * @type {string}\n * @memberof PestelItemModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof PestelItemModel\n */\n description: string;\n /**\n *\n * @type {PestelItemArea}\n * @memberof PestelItemModel\n */\n area?: PestelItemArea;\n /**\n *\n * @type {PestelItemItemType}\n * @memberof PestelItemModel\n */\n itemType?: PestelItemItemType;\n /**\n *\n * @type {PestelItemLocationType}\n * @memberof PestelItemModel\n */\n locationType?: PestelItemLocationType;\n /**\n *\n * @type {number}\n * @memberof PestelItemModel\n */\n consequence?: number;\n /**\n *\n * @type {number}\n * @memberof PestelItemModel\n */\n likelihood?: number;\n /**\n *\n * @type {string}\n * @memberof PestelItemModel\n */\n mitigationFactors?: string | null;\n /**\n *\n * @type {string}\n * @memberof PestelItemModel\n */\n comment?: string | null;\n /**\n *\n * @type {string}\n * @memberof PestelItemModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof PestelItemModel\n */\n updatedAt?: string;\n}\n\nexport function PestelItemModelFromJSON(json: any): PestelItemModel {\n return PestelItemModelFromJSONTyped(json, false);\n}\n\nexport function PestelItemModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PestelItemModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n description: json['description'],\n area: !exists(json, 'area')\n ? undefined\n : PestelItemAreaFromJSON(json['area']),\n itemType: !exists(json, 'item_type')\n ? undefined\n : PestelItemItemTypeFromJSON(json['item_type']),\n locationType: !exists(json, 'location_type')\n ? undefined\n : PestelItemLocationTypeFromJSON(json['location_type']),\n consequence: !exists(json, 'consequence') ? undefined : json['consequence'],\n likelihood: !exists(json, 'likelihood') ? undefined : json['likelihood'],\n mitigationFactors: !exists(json, 'mitigation_factors')\n ? undefined\n : json['mitigation_factors'],\n comment: !exists(json, 'comment') ? undefined : json['comment'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function PestelItemModelToJSON(value?: PestelItemModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n description: value.description,\n area: PestelItemAreaToJSON(value.area),\n item_type: PestelItemItemTypeToJSON(value.itemType),\n location_type: PestelItemLocationTypeToJSON(value.locationType),\n consequence: value.consequence,\n likelihood: value.likelihood,\n mitigation_factors: value.mitigationFactors,\n comment: value.comment,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n PestelItemArea,\n PestelItemAreaFromJSON,\n PestelItemAreaFromJSONTyped,\n PestelItemAreaToJSON,\n PestelItemItemType,\n PestelItemItemTypeFromJSON,\n PestelItemItemTypeFromJSONTyped,\n PestelItemItemTypeToJSON,\n PestelItemLocationType,\n PestelItemLocationTypeFromJSON,\n PestelItemLocationTypeFromJSONTyped,\n PestelItemLocationTypeToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface PestelItemUpdatePayload\n */\nexport interface PestelItemUpdatePayload {\n /**\n *\n * @type {string}\n * @memberof PestelItemUpdatePayload\n */\n description?: string;\n /**\n *\n * @type {PestelItemArea}\n * @memberof PestelItemUpdatePayload\n */\n area?: PestelItemArea;\n /**\n *\n * @type {PestelItemItemType}\n * @memberof PestelItemUpdatePayload\n */\n itemType?: PestelItemItemType;\n /**\n *\n * @type {PestelItemLocationType}\n * @memberof PestelItemUpdatePayload\n */\n locationType?: PestelItemLocationType;\n /**\n *\n * @type {number}\n * @memberof PestelItemUpdatePayload\n */\n consequence?: number;\n /**\n *\n * @type {number}\n * @memberof PestelItemUpdatePayload\n */\n likelihood?: number;\n /**\n *\n * @type {string}\n * @memberof PestelItemUpdatePayload\n */\n mitigationFactors?: string | null;\n /**\n *\n * @type {string}\n * @memberof PestelItemUpdatePayload\n */\n comment?: string | null;\n}\n\nexport function PestelItemUpdatePayloadFromJSON(\n json: any\n): PestelItemUpdatePayload {\n return PestelItemUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function PestelItemUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PestelItemUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n description: !exists(json, 'description') ? undefined : json['description'],\n area: !exists(json, 'area')\n ? undefined\n : PestelItemAreaFromJSON(json['area']),\n itemType: !exists(json, 'item_type')\n ? undefined\n : PestelItemItemTypeFromJSON(json['item_type']),\n locationType: !exists(json, 'location_type')\n ? undefined\n : PestelItemLocationTypeFromJSON(json['location_type']),\n consequence: !exists(json, 'consequence') ? undefined : json['consequence'],\n likelihood: !exists(json, 'likelihood') ? undefined : json['likelihood'],\n mitigationFactors: !exists(json, 'mitigation_factors')\n ? undefined\n : json['mitigation_factors'],\n comment: !exists(json, 'comment') ? undefined : json['comment'],\n };\n}\n\nexport function PestelItemUpdatePayloadToJSON(\n value?: PestelItemUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n description: value.description,\n area: PestelItemAreaToJSON(value.area),\n item_type: PestelItemItemTypeToJSON(value.itemType),\n location_type: PestelItemLocationTypeToJSON(value.locationType),\n consequence: value.consequence,\n likelihood: value.likelihood,\n mitigation_factors: value.mitigationFactors,\n comment: value.comment,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n PestelRegisterModelStats,\n PestelRegisterModelStatsFromJSON,\n PestelRegisterModelStatsFromJSONTyped,\n PestelRegisterModelStatsToJSON,\n ReviewFrequencyEnum,\n ReviewFrequencyEnumFromJSON,\n ReviewFrequencyEnumFromJSONTyped,\n ReviewFrequencyEnumToJSON,\n ReviewStatusEnum,\n ReviewStatusEnumFromJSON,\n ReviewStatusEnumFromJSONTyped,\n ReviewStatusEnumToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface PestelRegisterModel\n */\nexport interface PestelRegisterModel {\n /**\n *\n * @type {string}\n * @memberof PestelRegisterModel\n */\n id: string;\n /**\n *\n * @type {VendorUser}\n * @memberof PestelRegisterModel\n */\n owner?: VendorUser;\n /**\n *\n * @type {ReviewFrequencyEnum}\n * @memberof PestelRegisterModel\n */\n reviewFrequency?: ReviewFrequencyEnum;\n /**\n *\n * @type {ReviewStatusEnum}\n * @memberof PestelRegisterModel\n */\n reviewStatus?: ReviewStatusEnum;\n /**\n *\n * @type {boolean}\n * @memberof PestelRegisterModel\n */\n reviewOverdue?: boolean;\n /**\n *\n * @type {string}\n * @memberof PestelRegisterModel\n */\n nextReviewDate?: string | null;\n /**\n *\n * @type {string}\n * @memberof PestelRegisterModel\n */\n lastReviewedAt?: string | null;\n /**\n *\n * @type {PestelRegisterModelStats}\n * @memberof PestelRegisterModel\n */\n stats?: PestelRegisterModelStats;\n}\n\nexport function PestelRegisterModelFromJSON(json: any): PestelRegisterModel {\n return PestelRegisterModelFromJSONTyped(json, false);\n}\n\nexport function PestelRegisterModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PestelRegisterModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n reviewFrequency: !exists(json, 'review_frequency')\n ? undefined\n : ReviewFrequencyEnumFromJSON(json['review_frequency']),\n reviewStatus: !exists(json, 'review_status')\n ? undefined\n : ReviewStatusEnumFromJSON(json['review_status']),\n reviewOverdue: !exists(json, 'review_overdue')\n ? undefined\n : json['review_overdue'],\n nextReviewDate: !exists(json, 'next_review_date')\n ? undefined\n : json['next_review_date'],\n lastReviewedAt: !exists(json, 'last_reviewed_at')\n ? undefined\n : json['last_reviewed_at'],\n stats: !exists(json, 'stats')\n ? undefined\n : PestelRegisterModelStatsFromJSON(json['stats']),\n };\n}\n\nexport function PestelRegisterModelToJSON(\n value?: PestelRegisterModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n owner: VendorUserToJSON(value.owner),\n review_frequency: ReviewFrequencyEnumToJSON(value.reviewFrequency),\n review_status: ReviewStatusEnumToJSON(value.reviewStatus),\n review_overdue: value.reviewOverdue,\n next_review_date: value.nextReviewDate,\n last_reviewed_at: value.lastReviewedAt,\n stats: PestelRegisterModelStatsToJSON(value.stats),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface PestelRegisterModelStats\n */\nexport interface PestelRegisterModelStats {\n /**\n *\n * @type {number}\n * @memberof PestelRegisterModelStats\n */\n pestelItemsCount?: number;\n /**\n *\n * @type {number}\n * @memberof PestelRegisterModelStats\n */\n actionsCount?: number;\n}\n\nexport function PestelRegisterModelStatsFromJSON(\n json: any\n): PestelRegisterModelStats {\n return PestelRegisterModelStatsFromJSONTyped(json, false);\n}\n\nexport function PestelRegisterModelStatsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PestelRegisterModelStats {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n pestelItemsCount: !exists(json, 'pestel_items_count')\n ? undefined\n : json['pestel_items_count'],\n actionsCount: !exists(json, 'actions_count')\n ? undefined\n : json['actions_count'],\n };\n}\n\nexport function PestelRegisterModelStatsToJSON(\n value?: PestelRegisterModelStats | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n pestel_items_count: value.pestelItemsCount,\n actions_count: value.actionsCount,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ReviewFrequencyEnum,\n ReviewFrequencyEnumFromJSON,\n ReviewFrequencyEnumFromJSONTyped,\n ReviewFrequencyEnumToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface PestelRegisterUpdatePayload\n */\nexport interface PestelRegisterUpdatePayload {\n /**\n *\n * @type {string}\n * @memberof PestelRegisterUpdatePayload\n */\n ownerId?: string | null;\n /**\n *\n * @type {string}\n * @memberof PestelRegisterUpdatePayload\n */\n nextReviewDate?: string;\n /**\n *\n * @type {ReviewFrequencyEnum}\n * @memberof PestelRegisterUpdatePayload\n */\n reviewFrequency?: ReviewFrequencyEnum;\n}\n\nexport function PestelRegisterUpdatePayloadFromJSON(\n json: any\n): PestelRegisterUpdatePayload {\n return PestelRegisterUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function PestelRegisterUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PestelRegisterUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n nextReviewDate: !exists(json, 'next_review_date')\n ? undefined\n : json['next_review_date'],\n reviewFrequency: !exists(json, 'review_frequency')\n ? undefined\n : ReviewFrequencyEnumFromJSON(json['review_frequency']),\n };\n}\n\nexport function PestelRegisterUpdatePayloadToJSON(\n value?: PestelRegisterUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n owner_id: value.ownerId,\n next_review_date: value.nextReviewDate,\n review_frequency: ReviewFrequencyEnumToJSON(value.reviewFrequency),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface Policy\n */\nexport interface Policy {\n /**\n *\n * @type {string}\n * @memberof Policy\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof Policy\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof Policy\n */\n code?: string;\n /**\n *\n * @type {string}\n * @memberof Policy\n */\n categoryName?: string;\n /**\n *\n * @type {string}\n * @memberof Policy\n */\n productName?: string;\n /**\n *\n * @type {string}\n * @memberof Policy\n */\n summary?: string | null;\n /**\n *\n * @type {string}\n * @memberof Policy\n */\n summaryAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof Policy\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof Policy\n */\n descriptionAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof Policy\n */\n requiredPlan?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof Policy\n */\n vendorPolicyExists?: boolean;\n}\n\nexport function PolicyFromJSON(json: any): Policy {\n return PolicyFromJSONTyped(json, false);\n}\n\nexport function PolicyFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Policy {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n code: !exists(json, 'code') ? undefined : json['code'],\n categoryName: !exists(json, 'category_name')\n ? undefined\n : json['category_name'],\n productName: !exists(json, 'product_name')\n ? undefined\n : json['product_name'],\n summary: !exists(json, 'summary') ? undefined : json['summary'],\n summaryAsHtml: !exists(json, 'summary_as_html')\n ? undefined\n : json['summary_as_html'],\n description: !exists(json, 'description') ? undefined : json['description'],\n descriptionAsHtml: !exists(json, 'description_as_html')\n ? undefined\n : json['description_as_html'],\n requiredPlan: !exists(json, 'required_plan')\n ? undefined\n : json['required_plan'],\n vendorPolicyExists: !exists(json, 'vendor_policy_exists')\n ? undefined\n : json['vendor_policy_exists'],\n };\n}\n\nexport function PolicyToJSON(value?: Policy | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n code: value.code,\n category_name: value.categoryName,\n product_name: value.productName,\n summary: value.summary,\n summary_as_html: value.summaryAsHtml,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n required_plan: value.requiredPlan,\n vendor_policy_exists: value.vendorPolicyExists,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface PolicyCategory\n */\nexport interface PolicyCategory {\n /**\n *\n * @type {string}\n * @memberof PolicyCategory\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof PolicyCategory\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof PolicyCategory\n */\n identifier?: string;\n /**\n *\n * @type {string}\n * @memberof PolicyCategory\n */\n summary?: string | null;\n /**\n *\n * @type {string}\n * @memberof PolicyCategory\n */\n summaryAsHtml?: string | null;\n}\n\nexport function PolicyCategoryFromJSON(json: any): PolicyCategory {\n return PolicyCategoryFromJSONTyped(json, false);\n}\n\nexport function PolicyCategoryFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PolicyCategory {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n identifier: !exists(json, 'identifier') ? undefined : json['identifier'],\n summary: !exists(json, 'summary') ? undefined : json['summary'],\n summaryAsHtml: !exists(json, 'summary_as_html')\n ? undefined\n : json['summary_as_html'],\n };\n}\n\nexport function PolicyCategoryToJSON(value?: PolicyCategory | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n summary: value.summary,\n summary_as_html: value.summaryAsHtml,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface PreviousAnswer\n */\nexport interface PreviousAnswer {\n /**\n *\n * @type {string}\n * @memberof PreviousAnswer\n */\n value?: string;\n /**\n *\n * @type {boolean}\n * @memberof PreviousAnswer\n */\n other?: boolean;\n /**\n *\n * @type {string}\n * @memberof PreviousAnswer\n */\n updatedBy?: string | null;\n /**\n *\n * @type {string}\n * @memberof PreviousAnswer\n */\n updatedAt?: string;\n}\n\nexport function PreviousAnswerFromJSON(json: any): PreviousAnswer {\n return PreviousAnswerFromJSONTyped(json, false);\n}\n\nexport function PreviousAnswerFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): PreviousAnswer {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n value: !exists(json, 'value') ? undefined : json['value'],\n other: !exists(json, 'other') ? undefined : json['other'],\n updatedBy: !exists(json, 'updated_by') ? undefined : json['updated_by'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function PreviousAnswerToJSON(value?: PreviousAnswer | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n value: value.value,\n other: value.other,\n updated_by: value.updatedBy,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface Product\n */\nexport interface Product {\n /**\n *\n * @type {string}\n * @memberof Product\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof Product\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof Product\n */\n internalName?: string;\n /**\n *\n * @type {number}\n * @memberof Product\n */\n price?: number;\n /**\n *\n * @type {string}\n * @memberof Product\n */\n stripePriceId?: string;\n}\n\nexport function ProductFromJSON(json: any): Product {\n return ProductFromJSONTyped(json, false);\n}\n\nexport function ProductFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Product {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n internalName: !exists(json, 'internal_name')\n ? undefined\n : json['internal_name'],\n price: !exists(json, 'price') ? undefined : json['price'],\n stripePriceId: !exists(json, 'stripe_price_id')\n ? undefined\n : json['stripe_price_id'],\n };\n}\n\nexport function ProductToJSON(value?: Product | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n internal_name: value.internalName,\n price: value.price,\n stripe_price_id: value.stripePriceId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface Progress\n */\nexport interface Progress {\n /**\n *\n * @type {number}\n * @memberof Progress\n */\n answered: number;\n /**\n *\n * @type {number}\n * @memberof Progress\n */\n unanswered: number;\n /**\n *\n * @type {number}\n * @memberof Progress\n */\n percents: number;\n}\n\nexport function ProgressFromJSON(json: any): Progress {\n return ProgressFromJSONTyped(json, false);\n}\n\nexport function ProgressFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Progress {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n answered: json['answered'],\n unanswered: json['unanswered'],\n percents: json['percents'],\n };\n}\n\nexport function ProgressToJSON(value?: Progress | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n answered: value.answered,\n unanswered: value.unanswered,\n percents: value.percents,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Answer,\n AnswerFromJSON,\n AnswerFromJSONTyped,\n AnswerToJSON,\n ControlModel,\n ControlModelFromJSON,\n ControlModelFromJSONTyped,\n ControlModelToJSON,\n PreviousAnswer,\n PreviousAnswerFromJSON,\n PreviousAnswerFromJSONTyped,\n PreviousAnswerToJSON,\n QuestionColumn,\n QuestionColumnFromJSON,\n QuestionColumnFromJSONTyped,\n QuestionColumnToJSON,\n QuestionRow,\n QuestionRowFromJSON,\n QuestionRowFromJSONTyped,\n QuestionRowToJSON,\n QuestionTable,\n QuestionTableFromJSON,\n QuestionTableFromJSONTyped,\n QuestionTableToJSON,\n QuestionVisibilityCondition,\n QuestionVisibilityConditionFromJSON,\n QuestionVisibilityConditionFromJSONTyped,\n QuestionVisibilityConditionToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface Question\n */\nexport interface Question {\n /**\n *\n * @type {string}\n * @memberof Question\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof Question\n */\n questionText?: string;\n /**\n *\n * @type {string}\n * @memberof Question\n */\n questionTextAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof Question\n */\n explanatoryText?: string | null;\n /**\n *\n * @type {string}\n * @memberof Question\n */\n explanatoryTextAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof Question\n */\n datatype?: QuestionDatatypeEnum;\n /**\n *\n * @type {string}\n * @memberof Question\n */\n layout?: QuestionLayoutEnum;\n /**\n *\n * @type {string}\n * @memberof Question\n */\n objectType?: QuestionObjectTypeEnum;\n /**\n *\n * @type {string}\n * @memberof Question\n */\n tableType?: QuestionTableTypeEnum;\n /**\n *\n * @type {Array}\n * @memberof Question\n */\n questionRows?: Array | null;\n /**\n *\n * @type {Array}\n * @memberof Question\n */\n questionColumns?: Array | null;\n /**\n *\n * @type {QuestionVisibilityCondition}\n * @memberof Question\n */\n visibilityCondition?: QuestionVisibilityCondition;\n /**\n *\n * @type {boolean}\n * @memberof Question\n */\n other?: boolean | null;\n /**\n *\n * @type {string}\n * @memberof Question\n */\n otherLayout?: QuestionOtherLayoutEnum;\n /**\n *\n * @type {string}\n * @memberof Question\n */\n otherDatatype?: QuestionOtherDatatypeEnum;\n /**\n *\n * @type {boolean}\n * @memberof Question\n */\n allowAttachment?: boolean;\n /**\n *\n * @type {string}\n * @memberof Question\n */\n name?: string | null;\n /**\n *\n * @type {string}\n * @memberof Question\n */\n propertyName?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof Question\n */\n primary?: boolean;\n /**\n *\n * @type {PreviousAnswer}\n * @memberof Question\n */\n previousAnswer?: PreviousAnswer;\n /**\n *\n * @type {Answer}\n * @memberof Question\n */\n answer?: Answer;\n /**\n *\n * @type {string}\n * @memberof Question\n */\n showWhen?: string | null;\n /**\n *\n * @type {QuestionTable}\n * @memberof Question\n */\n table?: QuestionTable;\n /**\n *\n * @type {ControlModel}\n * @memberof Question\n */\n control?: ControlModel;\n /**\n *\n * @type {string}\n * @memberof Question\n */\n annexRef?: string | null;\n}\n\nexport function QuestionFromJSON(json: any): Question {\n return QuestionFromJSONTyped(json, false);\n}\n\nexport function QuestionFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Question {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n questionText: !exists(json, 'question_text')\n ? undefined\n : json['question_text'],\n questionTextAsHtml: !exists(json, 'question_text_as_html')\n ? undefined\n : json['question_text_as_html'],\n explanatoryText: !exists(json, 'explanatory_text')\n ? undefined\n : json['explanatory_text'],\n explanatoryTextAsHtml: !exists(json, 'explanatory_text_as_html')\n ? undefined\n : json['explanatory_text_as_html'],\n datatype: !exists(json, 'datatype') ? undefined : json['datatype'],\n layout: !exists(json, 'layout') ? undefined : json['layout'],\n objectType: !exists(json, 'object_type') ? undefined : json['object_type'],\n tableType: !exists(json, 'table_type') ? undefined : json['table_type'],\n questionRows: !exists(json, 'question_rows')\n ? undefined\n : json['question_rows'] === null\n ? null\n : (json['question_rows'] as Array).map(QuestionRowFromJSON),\n questionColumns: !exists(json, 'question_columns')\n ? undefined\n : json['question_columns'] === null\n ? null\n : (json['question_columns'] as Array).map(QuestionColumnFromJSON),\n visibilityCondition: !exists(json, 'visibility_condition')\n ? undefined\n : QuestionVisibilityConditionFromJSON(json['visibility_condition']),\n other: !exists(json, 'other') ? undefined : json['other'],\n otherLayout: !exists(json, 'other_layout')\n ? undefined\n : json['other_layout'],\n otherDatatype: !exists(json, 'other_datatype')\n ? undefined\n : json['other_datatype'],\n allowAttachment: !exists(json, 'allow_attachment')\n ? undefined\n : json['allow_attachment'],\n name: !exists(json, 'name') ? undefined : json['name'],\n propertyName: !exists(json, 'property_name')\n ? undefined\n : json['property_name'],\n primary: !exists(json, 'primary') ? undefined : json['primary'],\n previousAnswer: !exists(json, 'previous_answer')\n ? undefined\n : PreviousAnswerFromJSON(json['previous_answer']),\n answer: !exists(json, 'answer')\n ? undefined\n : AnswerFromJSON(json['answer']),\n showWhen: !exists(json, 'show_when') ? undefined : json['show_when'],\n table: !exists(json, 'table')\n ? undefined\n : QuestionTableFromJSON(json['table']),\n control: !exists(json, 'control')\n ? undefined\n : ControlModelFromJSON(json['control']),\n annexRef: !exists(json, 'annex_ref') ? undefined : json['annex_ref'],\n };\n}\n\nexport function QuestionToJSON(value?: Question | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n question_text: value.questionText,\n question_text_as_html: value.questionTextAsHtml,\n explanatory_text: value.explanatoryText,\n explanatory_text_as_html: value.explanatoryTextAsHtml,\n datatype: value.datatype,\n layout: value.layout,\n object_type: value.objectType,\n table_type: value.tableType,\n question_rows:\n value.questionRows === undefined\n ? undefined\n : value.questionRows === null\n ? null\n : (value.questionRows as Array).map(QuestionRowToJSON),\n question_columns:\n value.questionColumns === undefined\n ? undefined\n : value.questionColumns === null\n ? null\n : (value.questionColumns as Array).map(QuestionColumnToJSON),\n visibility_condition: QuestionVisibilityConditionToJSON(\n value.visibilityCondition\n ),\n other: value.other,\n other_layout: value.otherLayout,\n other_datatype: value.otherDatatype,\n allow_attachment: value.allowAttachment,\n name: value.name,\n property_name: value.propertyName,\n primary: value.primary,\n previous_answer: PreviousAnswerToJSON(value.previousAnswer),\n answer: AnswerToJSON(value.answer),\n show_when: value.showWhen,\n table: QuestionTableToJSON(value.table),\n control: ControlModelToJSON(value.control),\n annex_ref: value.annexRef,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum QuestionDatatypeEnum {\n String = 'string',\n Integer = 'integer',\n Float = 'float',\n Date = 'date',\n Boolean = 'boolean',\n NoData = 'no_data',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum QuestionLayoutEnum {\n TextField = 'text_field',\n TextArea = 'text_area',\n NumberField = 'number_field',\n RadioButtons = 'radio_buttons',\n CheckBoxes = 'check_boxes',\n RadioGrid = 'radio_grid',\n EmailField = 'email_field',\n SingleSelect = 'single_select',\n MultiSelect = 'multi_select',\n TableLayout = 'table_layout',\n DateField = 'date_field',\n FileSelect = 'file_select',\n AuditReviewTableLayout = 'audit_review_table_layout',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum QuestionObjectTypeEnum {\n VendorUser = 'vendor_user',\n VendorTeam = 'vendor_team',\n Office = 'office',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum QuestionTableTypeEnum {\n Country = 'country',\n Month = 'month',\n UsState = 'us_state',\n OrganisationType = 'organisation_type',\n FundingStage = 'funding_stage',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum QuestionOtherLayoutEnum {\n Field = 'text_field',\n Area = 'text_area',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum QuestionOtherDatatypeEnum {\n String = 'string',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface QuestionColumn\n */\nexport interface QuestionColumn {\n /**\n *\n * @type {string}\n * @memberof QuestionColumn\n */\n columnText?: string;\n /**\n *\n * @type {string}\n * @memberof QuestionColumn\n */\n columnValue?: string;\n /**\n *\n * @type {boolean}\n * @memberof QuestionColumn\n */\n primary?: boolean;\n}\n\nexport function QuestionColumnFromJSON(json: any): QuestionColumn {\n return QuestionColumnFromJSONTyped(json, false);\n}\n\nexport function QuestionColumnFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): QuestionColumn {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n columnText: !exists(json, 'column_text') ? undefined : json['column_text'],\n columnValue: !exists(json, 'column_value')\n ? undefined\n : json['column_value'],\n primary: !exists(json, 'primary') ? undefined : json['primary'],\n };\n}\n\nexport function QuestionColumnToJSON(value?: QuestionColumn | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n column_text: value.columnText,\n column_value: value.columnValue,\n primary: value.primary,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Progress,\n ProgressFromJSON,\n ProgressFromJSONTyped,\n ProgressToJSON,\n Question,\n QuestionFromJSON,\n QuestionFromJSONTyped,\n QuestionToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface QuestionGroup\n */\nexport interface QuestionGroup {\n /**\n *\n * @type {string}\n * @memberof QuestionGroup\n */\n questionGroupId: string;\n /**\n *\n * @type {string}\n * @memberof QuestionGroup\n */\n questionGroupName: string;\n /**\n *\n * @type {Progress}\n * @memberof QuestionGroup\n */\n progress: Progress;\n /**\n *\n * @type {Array}\n * @memberof QuestionGroup\n */\n questions: Array;\n}\n\nexport function QuestionGroupFromJSON(json: any): QuestionGroup {\n return QuestionGroupFromJSONTyped(json, false);\n}\n\nexport function QuestionGroupFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): QuestionGroup {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n questionGroupId: json['question_group_id'],\n questionGroupName: json['question_group_name'],\n progress: ProgressFromJSON(json['progress']),\n questions: (json['questions'] as Array).map(QuestionFromJSON),\n };\n}\n\nexport function QuestionGroupToJSON(value?: QuestionGroup | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n question_group_id: value.questionGroupId,\n question_group_name: value.questionGroupName,\n progress: ProgressToJSON(value.progress),\n questions: (value.questions as Array).map(QuestionToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Answer,\n AnswerFromJSON,\n AnswerFromJSONTyped,\n AnswerToJSON,\n PreviousAnswer,\n PreviousAnswerFromJSON,\n PreviousAnswerFromJSONTyped,\n PreviousAnswerToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface QuestionRow\n */\nexport interface QuestionRow {\n /**\n *\n * @type {string}\n * @memberof QuestionRow\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof QuestionRow\n */\n rowText?: string;\n /**\n *\n * @type {string}\n * @memberof QuestionRow\n */\n rowTextRight?: string | null;\n /**\n *\n * @type {string}\n * @memberof QuestionRow\n */\n propertyName?: string | null;\n /**\n *\n * @type {string}\n * @memberof QuestionRow\n */\n name?: string | null;\n /**\n *\n * @type {PreviousAnswer}\n * @memberof QuestionRow\n */\n previousAnswer?: PreviousAnswer;\n /**\n *\n * @type {Answer}\n * @memberof QuestionRow\n */\n answer?: Answer;\n}\n\nexport function QuestionRowFromJSON(json: any): QuestionRow {\n return QuestionRowFromJSONTyped(json, false);\n}\n\nexport function QuestionRowFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): QuestionRow {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n rowText: !exists(json, 'row_text') ? undefined : json['row_text'],\n rowTextRight: !exists(json, 'row_text_right')\n ? undefined\n : json['row_text_right'],\n propertyName: !exists(json, 'property_name')\n ? undefined\n : json['property_name'],\n name: !exists(json, 'name') ? undefined : json['name'],\n previousAnswer: !exists(json, 'previous_answer')\n ? undefined\n : PreviousAnswerFromJSON(json['previous_answer']),\n answer: !exists(json, 'answer')\n ? undefined\n : AnswerFromJSON(json['answer']),\n };\n}\n\nexport function QuestionRowToJSON(value?: QuestionRow | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n row_text: value.rowText,\n row_text_right: value.rowTextRight,\n property_name: value.propertyName,\n name: value.name,\n previous_answer: PreviousAnswerToJSON(value.previousAnswer),\n answer: AnswerToJSON(value.answer),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Answer,\n AnswerFromJSON,\n AnswerFromJSONTyped,\n AnswerToJSON,\n Question,\n QuestionFromJSON,\n QuestionFromJSONTyped,\n QuestionToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface QuestionTable\n */\nexport interface QuestionTable {\n /**\n *\n * @type {Array}\n * @memberof QuestionTable\n */\n questions?: Array;\n /**\n *\n * @type {Array>}\n * @memberof QuestionTable\n */\n answers?: Array>;\n}\n\nexport function QuestionTableFromJSON(json: any): QuestionTable {\n return QuestionTableFromJSONTyped(json, false);\n}\n\nexport function QuestionTableFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): QuestionTable {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n questions: !exists(json, 'questions')\n ? undefined\n : (json['questions'] as Array).map(QuestionFromJSON),\n answers: !exists(json, 'answers') ? undefined : json['answers'],\n };\n}\n\nexport function QuestionTableToJSON(value?: QuestionTable | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n questions:\n value.questions === undefined\n ? undefined\n : (value.questions as Array).map(QuestionToJSON),\n answers: value.answers,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface QuestionVisibilityCondition\n */\nexport interface QuestionVisibilityCondition {\n /**\n *\n * @type {string}\n * @memberof QuestionVisibilityCondition\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof QuestionVisibilityCondition\n */\n operation?: QuestionVisibilityConditionOperationEnum;\n /**\n *\n * @type {string}\n * @memberof QuestionVisibilityCondition\n */\n value?: string;\n}\n\nexport function QuestionVisibilityConditionFromJSON(\n json: any\n): QuestionVisibilityCondition {\n return QuestionVisibilityConditionFromJSONTyped(json, false);\n}\n\nexport function QuestionVisibilityConditionFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): QuestionVisibilityCondition {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n operation: !exists(json, 'operation') ? undefined : json['operation'],\n value: !exists(json, 'value') ? undefined : json['value'],\n };\n}\n\nexport function QuestionVisibilityConditionToJSON(\n value?: QuestionVisibilityCondition | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n operation: value.operation,\n value: value.value,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum QuestionVisibilityConditionOperationEnum {\n Eq = 'eq',\n Ne = 'ne',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedPaymentPeriod,\n SharedPaymentPeriodFromJSON,\n SharedPaymentPeriodFromJSONTyped,\n SharedPaymentPeriodToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface RecurringPaymentCheckoutCreatePayload\n */\nexport interface RecurringPaymentCheckoutCreatePayload {\n /**\n *\n * @type {string}\n * @memberof RecurringPaymentCheckoutCreatePayload\n */\n productId: string;\n /**\n *\n * @type {string}\n * @memberof RecurringPaymentCheckoutCreatePayload\n */\n vendorId: string;\n /**\n *\n * @type {string}\n * @memberof RecurringPaymentCheckoutCreatePayload\n */\n purchasableId: string;\n /**\n *\n * @type {string}\n * @memberof RecurringPaymentCheckoutCreatePayload\n */\n purchasableType: string;\n /**\n *\n * @type {SharedPaymentPeriod}\n * @memberof RecurringPaymentCheckoutCreatePayload\n */\n paymentPeriod: SharedPaymentPeriod;\n}\n\nexport function RecurringPaymentCheckoutCreatePayloadFromJSON(\n json: any\n): RecurringPaymentCheckoutCreatePayload {\n return RecurringPaymentCheckoutCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function RecurringPaymentCheckoutCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RecurringPaymentCheckoutCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n productId: json['product_id'],\n vendorId: json['vendor_id'],\n purchasableId: json['purchasable_id'],\n purchasableType: json['purchasable_type'],\n paymentPeriod: SharedPaymentPeriodFromJSON(json['payment_period']),\n };\n}\n\nexport function RecurringPaymentCheckoutCreatePayloadToJSON(\n value?: RecurringPaymentCheckoutCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n product_id: value.productId,\n vendor_id: value.vendorId,\n purchasable_id: value.purchasableId,\n purchasable_type: value.purchasableType,\n payment_period: SharedPaymentPeriodToJSON(value.paymentPeriod),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface RecurringPaymentCheckoutModel\n */\nexport interface RecurringPaymentCheckoutModel {\n /**\n *\n * @type {string}\n * @memberof RecurringPaymentCheckoutModel\n */\n sessionId: string;\n /**\n *\n * @type {string}\n * @memberof RecurringPaymentCheckoutModel\n */\n stripeKey: string;\n}\n\nexport function RecurringPaymentCheckoutModelFromJSON(\n json: any\n): RecurringPaymentCheckoutModel {\n return RecurringPaymentCheckoutModelFromJSONTyped(json, false);\n}\n\nexport function RecurringPaymentCheckoutModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RecurringPaymentCheckoutModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n sessionId: json['sessionId'],\n stripeKey: json['stripe_key'],\n };\n}\n\nexport function RecurringPaymentCheckoutModelToJSON(\n value?: RecurringPaymentCheckoutModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n sessionId: value.sessionId,\n stripe_key: value.stripeKey,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface RecurringProduct\n */\nexport interface RecurringProduct {\n /**\n *\n * @type {string}\n * @memberof RecurringProduct\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof RecurringProduct\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof RecurringProduct\n */\n internalName?: string;\n /**\n *\n * @type {number}\n * @memberof RecurringProduct\n */\n monthlyPrice?: number;\n /**\n *\n * @type {number}\n * @memberof RecurringProduct\n */\n annuallyPrice?: number;\n /**\n *\n * @type {string}\n * @memberof RecurringProduct\n */\n stripeMonthlyPriceId?: string;\n /**\n *\n * @type {string}\n * @memberof RecurringProduct\n */\n stripeAnnuallyPriceId?: string;\n /**\n *\n * @type {string}\n * @memberof RecurringProduct\n */\n summary?: string;\n /**\n *\n * @type {string}\n * @memberof RecurringProduct\n */\n description?: string;\n /**\n *\n * @type {string}\n * @memberof RecurringProduct\n */\n descriptionAsHtml?: string;\n}\n\nexport function RecurringProductFromJSON(json: any): RecurringProduct {\n return RecurringProductFromJSONTyped(json, false);\n}\n\nexport function RecurringProductFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RecurringProduct {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n internalName: !exists(json, 'internal_name')\n ? undefined\n : json['internal_name'],\n monthlyPrice: !exists(json, 'monthly_price')\n ? undefined\n : json['monthly_price'],\n annuallyPrice: !exists(json, 'annually_price')\n ? undefined\n : json['annually_price'],\n stripeMonthlyPriceId: !exists(json, 'stripe_monthly_price_id')\n ? undefined\n : json['stripe_monthly_price_id'],\n stripeAnnuallyPriceId: !exists(json, 'stripe_annually_price_id')\n ? undefined\n : json['stripe_annually_price_id'],\n summary: !exists(json, 'summary') ? undefined : json['summary'],\n description: !exists(json, 'description') ? undefined : json['description'],\n descriptionAsHtml: !exists(json, 'description_as_html')\n ? undefined\n : json['description_as_html'],\n };\n}\n\nexport function RecurringProductToJSON(value?: RecurringProduct | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n internal_name: value.internalName,\n monthly_price: value.monthlyPrice,\n annually_price: value.annuallyPrice,\n stripe_monthly_price_id: value.stripeMonthlyPriceId,\n stripe_annually_price_id: value.stripeAnnuallyPriceId,\n summary: value.summary,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ReferenceCreatePayloadReference,\n ReferenceCreatePayloadReferenceFromJSON,\n ReferenceCreatePayloadReferenceFromJSONTyped,\n ReferenceCreatePayloadReferenceToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ReferenceCreatePayload\n */\nexport interface ReferenceCreatePayload {\n /**\n *\n * @type {ReferenceCreatePayloadReference}\n * @memberof ReferenceCreatePayload\n */\n reference: ReferenceCreatePayloadReference;\n}\n\nexport function ReferenceCreatePayloadFromJSON(\n json: any\n): ReferenceCreatePayload {\n return ReferenceCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function ReferenceCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReferenceCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n reference: ReferenceCreatePayloadReferenceFromJSON(json['reference']),\n };\n}\n\nexport function ReferenceCreatePayloadToJSON(\n value?: ReferenceCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n reference: ReferenceCreatePayloadReferenceToJSON(value.reference),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface RegisteredCompany\n */\nexport interface RegisteredCompany {\n /**\n *\n * @type {string}\n * @memberof RegisteredCompany\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof RegisteredCompany\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof RegisteredCompany\n */\n identifier?: string;\n /**\n *\n * @type {string}\n * @memberof RegisteredCompany\n */\n dateOfIncorporation?: string;\n /**\n *\n * @type {string}\n * @memberof RegisteredCompany\n */\n registeredAddress?: string;\n /**\n *\n * @type {string}\n * @memberof RegisteredCompany\n */\n country?: string;\n /**\n *\n * @type {string}\n * @memberof RegisteredCompany\n */\n identifierType?: string;\n}\n\nexport function RegisteredCompanyFromJSON(json: any): RegisteredCompany {\n return RegisteredCompanyFromJSONTyped(json, false);\n}\n\nexport function RegisteredCompanyFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RegisteredCompany {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n identifier: !exists(json, 'identifier') ? undefined : json['identifier'],\n dateOfIncorporation: !exists(json, 'date_of_incorporation')\n ? undefined\n : json['date_of_incorporation'],\n registeredAddress: !exists(json, 'registered_address')\n ? undefined\n : json['registered_address'],\n country: !exists(json, 'country') ? undefined : json['country'],\n identifierType: !exists(json, 'identifier_type')\n ? undefined\n : json['identifier_type'],\n };\n}\n\nexport function RegisteredCompanyToJSON(value?: RegisteredCompany | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n date_of_incorporation: value.dateOfIncorporation,\n registered_address: value.registeredAddress,\n country: value.country,\n identifier_type: value.identifierType,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ReminderCreatePayloadReminder,\n ReminderCreatePayloadReminderFromJSON,\n ReminderCreatePayloadReminderFromJSONTyped,\n ReminderCreatePayloadReminderToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ReminderCreatePayload\n */\nexport interface ReminderCreatePayload {\n /**\n *\n * @type {ReminderCreatePayloadReminder}\n * @memberof ReminderCreatePayload\n */\n reminder: ReminderCreatePayloadReminder;\n}\n\nexport function ReminderCreatePayloadFromJSON(\n json: any\n): ReminderCreatePayload {\n return ReminderCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function ReminderCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReminderCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n reminder: ReminderCreatePayloadReminderFromJSON(json['reminder']),\n };\n}\n\nexport function ReminderCreatePayloadToJSON(\n value?: ReminderCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n reminder: ReminderCreatePayloadReminderToJSON(value.reminder),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ReminderCreatePayloadReminder\n */\nexport interface ReminderCreatePayloadReminder {\n /**\n *\n * @type {string}\n * @memberof ReminderCreatePayloadReminder\n */\n type: ReminderCreatePayloadReminderTypeEnum;\n /**\n *\n * @type {string}\n * @memberof ReminderCreatePayloadReminder\n */\n relatedToId: string | null;\n /**\n *\n * @type {string}\n * @memberof ReminderCreatePayloadReminder\n */\n relatedToType: ReminderCreatePayloadReminderRelatedToTypeEnum;\n /**\n *\n * @type {string}\n * @memberof ReminderCreatePayloadReminder\n */\n remindAt: string;\n}\n\nexport function ReminderCreatePayloadReminderFromJSON(\n json: any\n): ReminderCreatePayloadReminder {\n return ReminderCreatePayloadReminderFromJSONTyped(json, false);\n}\n\nexport function ReminderCreatePayloadReminderFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReminderCreatePayloadReminder {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n type: json['type'],\n relatedToId: json['related_to_id'],\n relatedToType: json['related_to_type'],\n remindAt: json['remind_at'],\n };\n}\n\nexport function ReminderCreatePayloadReminderToJSON(\n value?: ReminderCreatePayloadReminder | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n type: value.type,\n related_to_id: value.relatedToId,\n related_to_type: value.relatedToType,\n remind_at: value.remindAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ReminderCreatePayloadReminderTypeEnum {\n ReminderReview = 'Reminder::Review',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum ReminderCreatePayloadReminderRelatedToTypeEnum {\n VendorDocument = 'VendorDocument',\n VendorPolicy = 'VendorPolicy',\n Agreement = 'Agreement',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ReminderModel,\n ReminderModelFromJSON,\n ReminderModelFromJSONTyped,\n ReminderModelToJSON,\n SharedPaginationMeta,\n SharedPaginationMetaFromJSON,\n SharedPaginationMetaFromJSONTyped,\n SharedPaginationMetaToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ReminderList\n */\nexport interface ReminderList {\n /**\n *\n * @type {Array}\n * @memberof ReminderList\n */\n data: Array;\n /**\n *\n * @type {SharedPaginationMeta}\n * @memberof ReminderList\n */\n meta: SharedPaginationMeta;\n}\n\nexport function ReminderListFromJSON(json: any): ReminderList {\n return ReminderListFromJSONTyped(json, false);\n}\n\nexport function ReminderListFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReminderList {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n data: (json['data'] as Array).map(ReminderModelFromJSON),\n meta: SharedPaginationMetaFromJSON(json['meta']),\n };\n}\n\nexport function ReminderListToJSON(value?: ReminderList | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n data: (value.data as Array).map(ReminderModelToJSON),\n meta: SharedPaginationMetaToJSON(value.meta),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ReminderModel\n */\nexport interface ReminderModel {\n /**\n *\n * @type {string}\n * @memberof ReminderModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof ReminderModel\n */\n type: ReminderModelTypeEnum;\n /**\n *\n * @type {string}\n * @memberof ReminderModel\n */\n relatedToId: string | null;\n /**\n *\n * @type {string}\n * @memberof ReminderModel\n */\n relatedToType: ReminderModelRelatedToTypeEnum;\n /**\n *\n * @type {string}\n * @memberof ReminderModel\n */\n recipientId?: string;\n /**\n *\n * @type {string}\n * @memberof ReminderModel\n */\n remindAt: string;\n /**\n *\n * @type {string}\n * @memberof ReminderModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof ReminderModel\n */\n updatedAt?: string;\n}\n\nexport function ReminderModelFromJSON(json: any): ReminderModel {\n return ReminderModelFromJSONTyped(json, false);\n}\n\nexport function ReminderModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReminderModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n type: json['type'],\n relatedToId: json['related_to_id'],\n relatedToType: json['related_to_type'],\n recipientId: !exists(json, 'recipient_id')\n ? undefined\n : json['recipient_id'],\n remindAt: json['remind_at'],\n createdAt: json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function ReminderModelToJSON(value?: ReminderModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n type: value.type,\n related_to_id: value.relatedToId,\n related_to_type: value.relatedToType,\n recipient_id: value.recipientId,\n remind_at: value.remindAt,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ReminderModelTypeEnum {\n ReminderReview = 'Reminder::Review',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum ReminderModelRelatedToTypeEnum {\n VendorPolicy = 'VendorPolicy',\n Agreement = 'Agreement',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ReminderUpdatePayloadReminder,\n ReminderUpdatePayloadReminderFromJSON,\n ReminderUpdatePayloadReminderFromJSONTyped,\n ReminderUpdatePayloadReminderToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ReminderUpdatePayload\n */\nexport interface ReminderUpdatePayload {\n /**\n *\n * @type {ReminderUpdatePayloadReminder}\n * @memberof ReminderUpdatePayload\n */\n reminder: ReminderUpdatePayloadReminder;\n}\n\nexport function ReminderUpdatePayloadFromJSON(\n json: any\n): ReminderUpdatePayload {\n return ReminderUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function ReminderUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReminderUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n reminder: ReminderUpdatePayloadReminderFromJSON(json['reminder']),\n };\n}\n\nexport function ReminderUpdatePayloadToJSON(\n value?: ReminderUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n reminder: ReminderUpdatePayloadReminderToJSON(value.reminder),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ReminderUpdatePayloadReminder\n */\nexport interface ReminderUpdatePayloadReminder {\n /**\n *\n * @type {string}\n * @memberof ReminderUpdatePayloadReminder\n */\n remindAt?: string;\n}\n\nexport function ReminderUpdatePayloadReminderFromJSON(\n json: any\n): ReminderUpdatePayloadReminder {\n return ReminderUpdatePayloadReminderFromJSONTyped(json, false);\n}\n\nexport function ReminderUpdatePayloadReminderFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReminderUpdatePayloadReminder {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n remindAt: !exists(json, 'remind_at') ? undefined : json['remind_at'],\n };\n}\n\nexport function ReminderUpdatePayloadReminderToJSON(\n value?: ReminderUpdatePayloadReminder | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n remind_at: value.remindAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ReportCreatePayloadReport,\n ReportCreatePayloadReportFromJSON,\n ReportCreatePayloadReportFromJSONTyped,\n ReportCreatePayloadReportToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ReportCreatePayload\n */\nexport interface ReportCreatePayload {\n /**\n *\n * @type {ReportCreatePayloadReport}\n * @memberof ReportCreatePayload\n */\n report: ReportCreatePayloadReport;\n}\n\nexport function ReportCreatePayloadFromJSON(json: any): ReportCreatePayload {\n return ReportCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function ReportCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReportCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n report: ReportCreatePayloadReportFromJSON(json['report']),\n };\n}\n\nexport function ReportCreatePayloadToJSON(\n value?: ReportCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n report: ReportCreatePayloadReportToJSON(value.report),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ReportModel\n */\nexport interface ReportModel {\n /**\n *\n * @type {string}\n * @memberof ReportModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof ReportModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof ReportModel\n */\n type: ReportModelTypeEnum;\n /**\n *\n * @type {VendorUser}\n * @memberof ReportModel\n */\n owner?: VendorUser;\n /**\n *\n * @type {string}\n * @memberof ReportModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof ReportModel\n */\n updatedAt?: string;\n}\n\nexport function ReportModelFromJSON(json: any): ReportModel {\n return ReportModelFromJSONTyped(json, false);\n}\n\nexport function ReportModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReportModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n type: json['type'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function ReportModelToJSON(value?: ReportModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n type: value.type,\n owner: VendorUserToJSON(value.owner),\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ReportModelTypeEnum {\n LegalRegister = 'Report::LegalRegister',\n PestelRegister = 'Report::PestelRegister',\n RiskRegister = 'Report::RiskRegister',\n StatementOfApplicability = 'Report::StatementOfApplicability',\n StatementOfApplicabilitySummary = 'Report::StatementOfApplicabilitySummary',\n VendorRegister = 'Report::VendorRegister',\n Uploaded = 'Report::Uploaded',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum ReviewFrequencyEnum {\n _1Month = '1 month',\n _3Months = '3 months',\n _6Months = '6 months',\n _9Months = '9 months',\n _12Months = '12 months',\n}\n\nexport function ReviewFrequencyEnumFromJSON(json: any): ReviewFrequencyEnum {\n return ReviewFrequencyEnumFromJSONTyped(json, false);\n}\n\nexport function ReviewFrequencyEnumFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReviewFrequencyEnum {\n return json as ReviewFrequencyEnum;\n}\n\nexport function ReviewFrequencyEnumToJSON(\n value?: ReviewFrequencyEnum | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ReviewHistoryItemCreatePayloadReviewHistoryItem,\n ReviewHistoryItemCreatePayloadReviewHistoryItemFromJSON,\n ReviewHistoryItemCreatePayloadReviewHistoryItemFromJSONTyped,\n ReviewHistoryItemCreatePayloadReviewHistoryItemToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ReviewHistoryItemCreatePayload\n */\nexport interface ReviewHistoryItemCreatePayload {\n /**\n *\n * @type {ReviewHistoryItemCreatePayloadReviewHistoryItem}\n * @memberof ReviewHistoryItemCreatePayload\n */\n reviewHistoryItem: ReviewHistoryItemCreatePayloadReviewHistoryItem;\n}\n\nexport function ReviewHistoryItemCreatePayloadFromJSON(\n json: any\n): ReviewHistoryItemCreatePayload {\n return ReviewHistoryItemCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function ReviewHistoryItemCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReviewHistoryItemCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n reviewHistoryItem: ReviewHistoryItemCreatePayloadReviewHistoryItemFromJSON(\n json['review_history_item']\n ),\n };\n}\n\nexport function ReviewHistoryItemCreatePayloadToJSON(\n value?: ReviewHistoryItemCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n review_history_item: ReviewHistoryItemCreatePayloadReviewHistoryItemToJSON(\n value.reviewHistoryItem\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ControlReviewFrequencyEnum,\n ControlReviewFrequencyEnumFromJSON,\n ControlReviewFrequencyEnumFromJSONTyped,\n ControlReviewFrequencyEnumToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ReviewHistoryItemCreatePayloadReviewHistoryItem\n */\nexport interface ReviewHistoryItemCreatePayloadReviewHistoryItem {\n /**\n *\n * @type {string}\n * @memberof ReviewHistoryItemCreatePayloadReviewHistoryItem\n */\n relatedToId: string;\n /**\n *\n * @type {string}\n * @memberof ReviewHistoryItemCreatePayloadReviewHistoryItem\n */\n relatedToType: ReviewHistoryItemCreatePayloadReviewHistoryItemRelatedToTypeEnum;\n /**\n *\n * @type {ControlReviewFrequencyEnum}\n * @memberof ReviewHistoryItemCreatePayloadReviewHistoryItem\n */\n reviewFrequency: ControlReviewFrequencyEnum;\n /**\n *\n * @type {string}\n * @memberof ReviewHistoryItemCreatePayloadReviewHistoryItem\n */\n reviewComment?: string | null;\n}\n\nexport function ReviewHistoryItemCreatePayloadReviewHistoryItemFromJSON(\n json: any\n): ReviewHistoryItemCreatePayloadReviewHistoryItem {\n return ReviewHistoryItemCreatePayloadReviewHistoryItemFromJSONTyped(\n json,\n false\n );\n}\n\nexport function ReviewHistoryItemCreatePayloadReviewHistoryItemFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReviewHistoryItemCreatePayloadReviewHistoryItem {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n relatedToId: json['related_to_id'],\n relatedToType: json['related_to_type'],\n reviewFrequency: ControlReviewFrequencyEnumFromJSON(\n json['review_frequency']\n ),\n reviewComment: !exists(json, 'review_comment')\n ? undefined\n : json['review_comment'],\n };\n}\n\nexport function ReviewHistoryItemCreatePayloadReviewHistoryItemToJSON(\n value?: ReviewHistoryItemCreatePayloadReviewHistoryItem | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n related_to_id: value.relatedToId,\n related_to_type: value.relatedToType,\n review_frequency: ControlReviewFrequencyEnumToJSON(value.reviewFrequency),\n review_comment: value.reviewComment,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ReviewHistoryItemCreatePayloadReviewHistoryItemRelatedToTypeEnum {\n Control = 'Control',\n LegalRegister = 'LegalRegister',\n PestelRegister = 'PestelRegister',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ReviewHistoryItemModel\n */\nexport interface ReviewHistoryItemModel {\n /**\n *\n * @type {string}\n * @memberof ReviewHistoryItemModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof ReviewHistoryItemModel\n */\n comment: string | null;\n /**\n *\n * @type {VendorUser}\n * @memberof ReviewHistoryItemModel\n */\n owner?: VendorUser;\n /**\n *\n * @type {string}\n * @memberof ReviewHistoryItemModel\n */\n createdAt: string;\n}\n\nexport function ReviewHistoryItemModelFromJSON(\n json: any\n): ReviewHistoryItemModel {\n return ReviewHistoryItemModelFromJSONTyped(json, false);\n}\n\nexport function ReviewHistoryItemModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ReviewHistoryItemModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n comment: json['comment'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n createdAt: json['created_at'],\n };\n}\n\nexport function ReviewHistoryItemModelToJSON(\n value?: ReviewHistoryItemModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n comment: value.comment,\n owner: VendorUserToJSON(value.owner),\n created_at: value.createdAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n RiskCategoryModelRiskStats,\n RiskCategoryModelRiskStatsFromJSON,\n RiskCategoryModelRiskStatsFromJSONTyped,\n RiskCategoryModelRiskStatsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface RiskCategoryModel\n */\nexport interface RiskCategoryModel {\n /**\n *\n * @type {string}\n * @memberof RiskCategoryModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof RiskCategoryModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof RiskCategoryModel\n */\n description: string;\n /**\n *\n * @type {string}\n * @memberof RiskCategoryModel\n */\n identifier: string;\n /**\n *\n * @type {string}\n * @memberof RiskCategoryModel\n */\n createdAt?: string;\n /**\n *\n * @type {number}\n * @memberof RiskCategoryModel\n */\n rowOrder: number;\n /**\n *\n * @type {string}\n * @memberof RiskCategoryModel\n */\n updatedAt?: string;\n /**\n *\n * @type {RiskCategoryModelRiskStats}\n * @memberof RiskCategoryModel\n */\n riskStats?: RiskCategoryModelRiskStats;\n}\n\nexport function RiskCategoryModelFromJSON(json: any): RiskCategoryModel {\n return RiskCategoryModelFromJSONTyped(json, false);\n}\n\nexport function RiskCategoryModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RiskCategoryModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n description: json['description'],\n identifier: json['identifier'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n rowOrder: json['row_order'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n riskStats: !exists(json, 'risk_stats')\n ? undefined\n : RiskCategoryModelRiskStatsFromJSON(json['risk_stats']),\n };\n}\n\nexport function RiskCategoryModelToJSON(value?: RiskCategoryModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n description: value.description,\n identifier: value.identifier,\n created_at: value.createdAt,\n row_order: value.rowOrder,\n updated_at: value.updatedAt,\n risk_stats: RiskCategoryModelRiskStatsToJSON(value.riskStats),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface RiskCategoryModelRiskStats\n */\nexport interface RiskCategoryModelRiskStats {\n /**\n *\n * @type {number}\n * @memberof RiskCategoryModelRiskStats\n */\n actual?: number;\n /**\n *\n * @type {number}\n * @memberof RiskCategoryModelRiskStats\n */\n total?: number;\n}\n\nexport function RiskCategoryModelRiskStatsFromJSON(\n json: any\n): RiskCategoryModelRiskStats {\n return RiskCategoryModelRiskStatsFromJSONTyped(json, false);\n}\n\nexport function RiskCategoryModelRiskStatsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RiskCategoryModelRiskStats {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n actual: !exists(json, 'actual') ? undefined : json['actual'],\n total: !exists(json, 'total') ? undefined : json['total'],\n };\n}\n\nexport function RiskCategoryModelRiskStatsToJSON(\n value?: RiskCategoryModelRiskStats | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n actual: value.actual,\n total: value.total,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n RiskCreatePayloadRisk,\n RiskCreatePayloadRiskFromJSON,\n RiskCreatePayloadRiskFromJSONTyped,\n RiskCreatePayloadRiskToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface RiskCreatePayload\n */\nexport interface RiskCreatePayload {\n /**\n *\n * @type {RiskCreatePayloadRisk}\n * @memberof RiskCreatePayload\n */\n risk: RiskCreatePayloadRisk;\n}\n\nexport function RiskCreatePayloadFromJSON(json: any): RiskCreatePayload {\n return RiskCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function RiskCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RiskCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n risk: RiskCreatePayloadRiskFromJSON(json['risk']),\n };\n}\n\nexport function RiskCreatePayloadToJSON(value?: RiskCreatePayload | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n risk: RiskCreatePayloadRiskToJSON(value.risk),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface RiskCreatePayloadRisk\n */\nexport interface RiskCreatePayloadRisk {\n /**\n *\n * @type {string}\n * @memberof RiskCreatePayloadRisk\n */\n riskTemplateId?: string;\n /**\n *\n * @type {string}\n * @memberof RiskCreatePayloadRisk\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof RiskCreatePayloadRisk\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof RiskCreatePayloadRisk\n */\n riskCategoryId?: string;\n}\n\nexport function RiskCreatePayloadRiskFromJSON(\n json: any\n): RiskCreatePayloadRisk {\n return RiskCreatePayloadRiskFromJSONTyped(json, false);\n}\n\nexport function RiskCreatePayloadRiskFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RiskCreatePayloadRisk {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n riskTemplateId: !exists(json, 'risk_template_id')\n ? undefined\n : json['risk_template_id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n riskCategoryId: !exists(json, 'risk_category_id')\n ? undefined\n : json['risk_category_id'],\n };\n}\n\nexport function RiskCreatePayloadRiskToJSON(\n value?: RiskCreatePayloadRisk | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n risk_template_id: value.riskTemplateId,\n name: value.name,\n description: value.description,\n risk_category_id: value.riskCategoryId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n ControlExtended,\n ControlExtendedFromJSON,\n ControlExtendedFromJSONTyped,\n ControlExtendedToJSON,\n RiskExtendedAllOf,\n RiskExtendedAllOfFromJSON,\n RiskExtendedAllOfFromJSONTyped,\n RiskExtendedAllOfToJSON,\n RiskModel,\n RiskModelFromJSON,\n RiskModelFromJSONTyped,\n RiskModelToJSON,\n RiskModelActionStats,\n RiskModelActionStatsFromJSON,\n RiskModelActionStatsFromJSONTyped,\n RiskModelActionStatsToJSON,\n VendorActionModel,\n VendorActionModelFromJSON,\n VendorActionModelFromJSONTyped,\n VendorActionModelToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface RiskExtended\n */\nexport interface RiskExtended extends RiskModel {\n /**\n *\n * @type {Access}\n * @memberof RiskExtended\n */\n access?: Access;\n /**\n *\n * @type {Array}\n * @memberof RiskExtended\n */\n controls?: Array;\n /**\n *\n * @type {Array}\n * @memberof RiskExtended\n */\n vendorActions?: Array;\n}\n\nexport function RiskExtendedFromJSON(json: any): RiskExtended {\n return RiskExtendedFromJSONTyped(json, false);\n}\n\nexport function RiskExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RiskExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...RiskModelFromJSONTyped(json, ignoreDiscriminator),\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n controls: !exists(json, 'controls')\n ? undefined\n : (json['controls'] as Array).map(ControlExtendedFromJSON),\n vendorActions: !exists(json, 'vendor_actions')\n ? undefined\n : (json['vendor_actions'] as Array).map(VendorActionModelFromJSON),\n };\n}\n\nexport function RiskExtendedToJSON(value?: RiskExtended | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...RiskModelToJSON(value),\n access: AccessToJSON(value.access),\n controls:\n value.controls === undefined\n ? undefined\n : (value.controls as Array).map(ControlExtendedToJSON),\n vendor_actions:\n value.vendorActions === undefined\n ? undefined\n : (value.vendorActions as Array).map(VendorActionModelToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n RiskModelActionStats,\n RiskModelActionStatsFromJSON,\n RiskModelActionStatsFromJSONTyped,\n RiskModelActionStatsToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface RiskModel\n */\nexport interface RiskModel {\n /**\n *\n * @type {string}\n * @memberof RiskModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof RiskModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof RiskModel\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof RiskModel\n */\n riskTemplateId?: string | null;\n /**\n *\n * @type {string}\n * @memberof RiskModel\n */\n riskCategoryId: string;\n /**\n *\n * @type {string}\n * @memberof RiskModel\n */\n status?: RiskModelStatusEnum;\n /**\n *\n * @type {string}\n * @memberof RiskModel\n */\n treatmentStrategy?: RiskModelTreatmentStrategyEnum;\n /**\n *\n * @type {VendorUser}\n * @memberof RiskModel\n */\n owner?: VendorUser;\n /**\n *\n * @type {number}\n * @memberof RiskModel\n */\n inherentRisk?: number | null;\n /**\n *\n * @type {number}\n * @memberof RiskModel\n */\n inherentRiskConsequence?: number | null;\n /**\n *\n * @type {number}\n * @memberof RiskModel\n */\n inherentRiskLikelihood?: number | null;\n /**\n *\n * @type {string}\n * @memberof RiskModel\n */\n inherentRiskComment?: string | null;\n /**\n *\n * @type {number}\n * @memberof RiskModel\n */\n residualRisk?: number | null;\n /**\n *\n * @type {number}\n * @memberof RiskModel\n */\n residualRiskConsequence?: number | null;\n /**\n *\n * @type {number}\n * @memberof RiskModel\n */\n residualRiskLikelihood?: number | null;\n /**\n *\n * @type {string}\n * @memberof RiskModel\n */\n residualRiskComment?: string | null;\n /**\n *\n * @type {string}\n * @memberof RiskModel\n */\n treatmentExplanation?: string | null;\n /**\n *\n * @type {RiskModelActionStats}\n * @memberof RiskModel\n */\n actionStats?: RiskModelActionStats;\n /**\n *\n * @type {RiskModelActionStats}\n * @memberof RiskModel\n */\n checkStats?: RiskModelActionStats;\n /**\n *\n * @type {Array}\n * @memberof RiskModel\n */\n informationSecurityProperties?: Array;\n /**\n *\n * @type {string}\n * @memberof RiskModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof RiskModel\n */\n updatedAt?: string;\n}\n\nexport function RiskModelFromJSON(json: any): RiskModel {\n return RiskModelFromJSONTyped(json, false);\n}\n\nexport function RiskModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RiskModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n riskTemplateId: !exists(json, 'risk_template_id')\n ? undefined\n : json['risk_template_id'],\n riskCategoryId: json['risk_category_id'],\n status: !exists(json, 'status') ? undefined : json['status'],\n treatmentStrategy: !exists(json, 'treatment_strategy')\n ? undefined\n : json['treatment_strategy'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n inherentRisk: !exists(json, 'inherent_risk')\n ? undefined\n : json['inherent_risk'],\n inherentRiskConsequence: !exists(json, 'inherent_risk_consequence')\n ? undefined\n : json['inherent_risk_consequence'],\n inherentRiskLikelihood: !exists(json, 'inherent_risk_likelihood')\n ? undefined\n : json['inherent_risk_likelihood'],\n inherentRiskComment: !exists(json, 'inherent_risk_comment')\n ? undefined\n : json['inherent_risk_comment'],\n residualRisk: !exists(json, 'residual_risk')\n ? undefined\n : json['residual_risk'],\n residualRiskConsequence: !exists(json, 'residual_risk_consequence')\n ? undefined\n : json['residual_risk_consequence'],\n residualRiskLikelihood: !exists(json, 'residual_risk_likelihood')\n ? undefined\n : json['residual_risk_likelihood'],\n residualRiskComment: !exists(json, 'residual_risk_comment')\n ? undefined\n : json['residual_risk_comment'],\n treatmentExplanation: !exists(json, 'treatment_explanation')\n ? undefined\n : json['treatment_explanation'],\n actionStats: !exists(json, 'action_stats')\n ? undefined\n : RiskModelActionStatsFromJSON(json['action_stats']),\n checkStats: !exists(json, 'check_stats')\n ? undefined\n : RiskModelActionStatsFromJSON(json['check_stats']),\n informationSecurityProperties: !exists(\n json,\n 'information_security_properties'\n )\n ? undefined\n : json['information_security_properties'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function RiskModelToJSON(value?: RiskModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n description: value.description,\n risk_template_id: value.riskTemplateId,\n risk_category_id: value.riskCategoryId,\n status: value.status,\n treatment_strategy: value.treatmentStrategy,\n owner: VendorUserToJSON(value.owner),\n inherent_risk: value.inherentRisk,\n inherent_risk_consequence: value.inherentRiskConsequence,\n inherent_risk_likelihood: value.inherentRiskLikelihood,\n inherent_risk_comment: value.inherentRiskComment,\n residual_risk: value.residualRisk,\n residual_risk_consequence: value.residualRiskConsequence,\n residual_risk_likelihood: value.residualRiskLikelihood,\n residual_risk_comment: value.residualRiskComment,\n treatment_explanation: value.treatmentExplanation,\n action_stats: RiskModelActionStatsToJSON(value.actionStats),\n check_stats: RiskModelActionStatsToJSON(value.checkStats),\n information_security_properties: value.informationSecurityProperties,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum RiskModelStatusEnum {\n ReviewPending = 'review_pending',\n Approved = 'approved',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum RiskModelTreatmentStrategyEnum {\n Modify = 'modify',\n Share = 'share',\n Avoid = 'avoid',\n Retain = 'retain',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum RiskModelInformationSecurityPropertiesEnum {\n Confidentiality = 'confidentiality',\n Integrity = 'integrity',\n Availability = 'availability',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface RiskModelActionStats\n */\nexport interface RiskModelActionStats {\n /**\n *\n * @type {number}\n * @memberof RiskModelActionStats\n */\n completed?: number;\n /**\n *\n * @type {number}\n * @memberof RiskModelActionStats\n */\n total?: number;\n}\n\nexport function RiskModelActionStatsFromJSON(json: any): RiskModelActionStats {\n return RiskModelActionStatsFromJSONTyped(json, false);\n}\n\nexport function RiskModelActionStatsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RiskModelActionStats {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n completed: !exists(json, 'completed') ? undefined : json['completed'],\n total: !exists(json, 'total') ? undefined : json['total'],\n };\n}\n\nexport function RiskModelActionStatsToJSON(\n value?: RiskModelActionStats | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n completed: value.completed,\n total: value.total,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n RiskReportCreatePayloadRiskReport,\n RiskReportCreatePayloadRiskReportFromJSON,\n RiskReportCreatePayloadRiskReportFromJSONTyped,\n RiskReportCreatePayloadRiskReportToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface RiskReportCreatePayload\n */\nexport interface RiskReportCreatePayload {\n /**\n *\n * @type {RiskReportCreatePayloadRiskReport}\n * @memberof RiskReportCreatePayload\n */\n riskReport: RiskReportCreatePayloadRiskReport;\n}\n\nexport function RiskReportCreatePayloadFromJSON(\n json: any\n): RiskReportCreatePayload {\n return RiskReportCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function RiskReportCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RiskReportCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n riskReport: RiskReportCreatePayloadRiskReportFromJSON(json['risk_report']),\n };\n}\n\nexport function RiskReportCreatePayloadToJSON(\n value?: RiskReportCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n risk_report: RiskReportCreatePayloadRiskReportToJSON(value.riskReport),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface RiskReportCreatePayloadRiskReport\n */\nexport interface RiskReportCreatePayloadRiskReport {\n /**\n *\n * @type {boolean}\n * @memberof RiskReportCreatePayloadRiskReport\n */\n includeUnapprovedRisks?: boolean;\n /**\n *\n * @type {string}\n * @memberof RiskReportCreatePayloadRiskReport\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof RiskReportCreatePayloadRiskReport\n */\n summary?: string | null;\n /**\n *\n * @type {string}\n * @memberof RiskReportCreatePayloadRiskReport\n */\n ownerId?: string;\n}\n\nexport function RiskReportCreatePayloadRiskReportFromJSON(\n json: any\n): RiskReportCreatePayloadRiskReport {\n return RiskReportCreatePayloadRiskReportFromJSONTyped(json, false);\n}\n\nexport function RiskReportCreatePayloadRiskReportFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RiskReportCreatePayloadRiskReport {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n includeUnapprovedRisks: !exists(json, 'include_unapproved_risks')\n ? undefined\n : json['include_unapproved_risks'],\n name: !exists(json, 'name') ? undefined : json['name'],\n summary: !exists(json, 'summary') ? undefined : json['summary'],\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n };\n}\n\nexport function RiskReportCreatePayloadRiskReportToJSON(\n value?: RiskReportCreatePayloadRiskReport | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n include_unapproved_risks: value.includeUnapprovedRisks,\n name: value.name,\n summary: value.summary,\n owner_id: value.ownerId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface RiskReportModel\n */\nexport interface RiskReportModel {\n /**\n *\n * @type {string}\n * @memberof RiskReportModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof RiskReportModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof RiskReportModel\n */\n summary?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof RiskReportModel\n */\n includeUnapprovedRisks?: boolean;\n /**\n *\n * @type {VendorUser}\n * @memberof RiskReportModel\n */\n owner?: VendorUser;\n /**\n *\n * @type {string}\n * @memberof RiskReportModel\n */\n vendorDocumentId?: string | null;\n /**\n *\n * @type {string}\n * @memberof RiskReportModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof RiskReportModel\n */\n updatedAt?: string;\n}\n\nexport function RiskReportModelFromJSON(json: any): RiskReportModel {\n return RiskReportModelFromJSONTyped(json, false);\n}\n\nexport function RiskReportModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RiskReportModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n summary: !exists(json, 'summary') ? undefined : json['summary'],\n includeUnapprovedRisks: !exists(json, 'include_unapproved_risks')\n ? undefined\n : json['include_unapproved_risks'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n vendorDocumentId: !exists(json, 'vendor_document_id')\n ? undefined\n : json['vendor_document_id'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function RiskReportModelToJSON(value?: RiskReportModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n summary: value.summary,\n include_unapproved_risks: value.includeUnapprovedRisks,\n owner: VendorUserToJSON(value.owner),\n vendor_document_id: value.vendorDocumentId,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface RiskTemplateModel\n */\nexport interface RiskTemplateModel {\n /**\n *\n * @type {string}\n * @memberof RiskTemplateModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof RiskTemplateModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof RiskTemplateModel\n */\n description: string | null;\n /**\n *\n * @type {string}\n * @memberof RiskTemplateModel\n */\n identifier: string;\n /**\n *\n * @type {string}\n * @memberof RiskTemplateModel\n */\n riskCategoryId: string;\n /**\n *\n * @type {string}\n * @memberof RiskTemplateModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof RiskTemplateModel\n */\n updatedAt?: string;\n}\n\nexport function RiskTemplateModelFromJSON(json: any): RiskTemplateModel {\n return RiskTemplateModelFromJSONTyped(json, false);\n}\n\nexport function RiskTemplateModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RiskTemplateModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n description: json['description'],\n identifier: json['identifier'],\n riskCategoryId: json['risk_category_id'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function RiskTemplateModelToJSON(value?: RiskTemplateModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n description: value.description,\n identifier: value.identifier,\n risk_category_id: value.riskCategoryId,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n RiskUpdatePayloadRisk,\n RiskUpdatePayloadRiskFromJSON,\n RiskUpdatePayloadRiskFromJSONTyped,\n RiskUpdatePayloadRiskToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface RiskUpdatePayload\n */\nexport interface RiskUpdatePayload {\n /**\n *\n * @type {RiskUpdatePayloadRisk}\n * @memberof RiskUpdatePayload\n */\n risk: RiskUpdatePayloadRisk;\n}\n\nexport function RiskUpdatePayloadFromJSON(json: any): RiskUpdatePayload {\n return RiskUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function RiskUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RiskUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n risk: RiskUpdatePayloadRiskFromJSON(json['risk']),\n };\n}\n\nexport function RiskUpdatePayloadToJSON(value?: RiskUpdatePayload | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n risk: RiskUpdatePayloadRiskToJSON(value.risk),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface RiskUpdatePayloadRisk\n */\nexport interface RiskUpdatePayloadRisk {\n /**\n *\n * @type {string}\n * @memberof RiskUpdatePayloadRisk\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof RiskUpdatePayloadRisk\n */\n ownerId?: string | null;\n /**\n *\n * @type {string}\n * @memberof RiskUpdatePayloadRisk\n */\n treatmentStrategy?: string | null;\n /**\n *\n * @type {string}\n * @memberof RiskUpdatePayloadRisk\n */\n treatmentExplanation?: string | null;\n /**\n *\n * @type {number}\n * @memberof RiskUpdatePayloadRisk\n */\n inherentRiskLikelihood?: number | null;\n /**\n *\n * @type {number}\n * @memberof RiskUpdatePayloadRisk\n */\n inherentRiskConsequence?: number | null;\n /**\n *\n * @type {string}\n * @memberof RiskUpdatePayloadRisk\n */\n inherentRiskComment?: string | null;\n /**\n *\n * @type {number}\n * @memberof RiskUpdatePayloadRisk\n */\n residualRiskLikelihood?: number | null;\n /**\n *\n * @type {number}\n * @memberof RiskUpdatePayloadRisk\n */\n residualRiskConsequence?: number | null;\n /**\n *\n * @type {string}\n * @memberof RiskUpdatePayloadRisk\n */\n residualRiskComment?: string | null;\n /**\n *\n * @type {Array}\n * @memberof RiskUpdatePayloadRisk\n */\n informationSecurityProperties?: Array;\n}\n\nexport function RiskUpdatePayloadRiskFromJSON(\n json: any\n): RiskUpdatePayloadRisk {\n return RiskUpdatePayloadRiskFromJSONTyped(json, false);\n}\n\nexport function RiskUpdatePayloadRiskFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): RiskUpdatePayloadRisk {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n treatmentStrategy: !exists(json, 'treatment_strategy')\n ? undefined\n : json['treatment_strategy'],\n treatmentExplanation: !exists(json, 'treatment_explanation')\n ? undefined\n : json['treatment_explanation'],\n inherentRiskLikelihood: !exists(json, 'inherent_risk_likelihood')\n ? undefined\n : json['inherent_risk_likelihood'],\n inherentRiskConsequence: !exists(json, 'inherent_risk_consequence')\n ? undefined\n : json['inherent_risk_consequence'],\n inherentRiskComment: !exists(json, 'inherent_risk_comment')\n ? undefined\n : json['inherent_risk_comment'],\n residualRiskLikelihood: !exists(json, 'residual_risk_likelihood')\n ? undefined\n : json['residual_risk_likelihood'],\n residualRiskConsequence: !exists(json, 'residual_risk_consequence')\n ? undefined\n : json['residual_risk_consequence'],\n residualRiskComment: !exists(json, 'residual_risk_comment')\n ? undefined\n : json['residual_risk_comment'],\n informationSecurityProperties: !exists(\n json,\n 'information_security_properties'\n )\n ? undefined\n : json['information_security_properties'],\n };\n}\n\nexport function RiskUpdatePayloadRiskToJSON(\n value?: RiskUpdatePayloadRisk | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n owner_id: value.ownerId,\n treatment_strategy: value.treatmentStrategy,\n treatment_explanation: value.treatmentExplanation,\n inherent_risk_likelihood: value.inherentRiskLikelihood,\n inherent_risk_consequence: value.inherentRiskConsequence,\n inherent_risk_comment: value.inherentRiskComment,\n residual_risk_likelihood: value.residualRiskLikelihood,\n residual_risk_consequence: value.residualRiskConsequence,\n residual_risk_comment: value.residualRiskComment,\n information_security_properties: value.informationSecurityProperties,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum RiskUpdatePayloadRiskInformationSecurityPropertiesEnum {\n Confidentiality = 'confidentiality',\n Integrity = 'integrity',\n Availability = 'availability',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum ShareAccessLevel {\n Viewer = 'viewer',\n Contributor = 'contributor',\n Manager = 'manager',\n}\n\nexport function ShareAccessLevelFromJSON(json: any): ShareAccessLevel {\n return ShareAccessLevelFromJSONTyped(json, false);\n}\n\nexport function ShareAccessLevelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ShareAccessLevel {\n return json as ShareAccessLevel;\n}\n\nexport function ShareAccessLevelToJSON(value?: ShareAccessLevel | null): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ShareAccessLevel,\n ShareAccessLevelFromJSON,\n ShareAccessLevelFromJSONTyped,\n ShareAccessLevelToJSON,\n UserDetails,\n UserDetailsFromJSON,\n UserDetailsFromJSONTyped,\n UserDetailsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ShareReceiver\n */\nexport interface ShareReceiver {\n /**\n *\n * @type {UserDetails}\n * @memberof ShareReceiver\n */\n receiver: UserDetails;\n /**\n *\n * @type {ShareAccessLevel}\n * @memberof ShareReceiver\n */\n accessLevel: ShareAccessLevel;\n}\n\nexport function ShareReceiverFromJSON(json: any): ShareReceiver {\n return ShareReceiverFromJSONTyped(json, false);\n}\n\nexport function ShareReceiverFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ShareReceiver {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n receiver: UserDetailsFromJSON(json['receiver']),\n accessLevel: ShareAccessLevelFromJSON(json['access_level']),\n };\n}\n\nexport function ShareReceiverToJSON(value?: ShareReceiver | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n receiver: UserDetailsToJSON(value.receiver),\n access_level: ShareAccessLevelToJSON(value.accessLevel),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ShareSuggestionListData,\n ShareSuggestionListDataFromJSON,\n ShareSuggestionListDataFromJSONTyped,\n ShareSuggestionListDataToJSON,\n ShareSuggestionListMeta,\n ShareSuggestionListMetaFromJSON,\n ShareSuggestionListMetaFromJSONTyped,\n ShareSuggestionListMetaToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ShareSuggestionList\n */\nexport interface ShareSuggestionList {\n /**\n *\n * @type {Array}\n * @memberof ShareSuggestionList\n */\n data: Array;\n /**\n *\n * @type {ShareSuggestionListMeta}\n * @memberof ShareSuggestionList\n */\n meta: ShareSuggestionListMeta;\n}\n\nexport function ShareSuggestionListFromJSON(json: any): ShareSuggestionList {\n return ShareSuggestionListFromJSONTyped(json, false);\n}\n\nexport function ShareSuggestionListFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ShareSuggestionList {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n data: (json['data'] as Array).map(ShareSuggestionListDataFromJSON),\n meta: ShareSuggestionListMetaFromJSON(json['meta']),\n };\n}\n\nexport function ShareSuggestionListToJSON(\n value?: ShareSuggestionList | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n data: (value.data as Array).map(ShareSuggestionListDataToJSON),\n meta: ShareSuggestionListMetaToJSON(value.meta),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n UserDetails,\n UserDetailsFromJSON,\n UserDetailsFromJSONTyped,\n UserDetailsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface ShareSuggestionListData\n */\nexport interface ShareSuggestionListData {\n /**\n *\n * @type {UserDetails}\n * @memberof ShareSuggestionListData\n */\n user?: UserDetails;\n}\n\nexport function ShareSuggestionListDataFromJSON(\n json: any\n): ShareSuggestionListData {\n return ShareSuggestionListDataFromJSONTyped(json, false);\n}\n\nexport function ShareSuggestionListDataFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ShareSuggestionListData {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n user: !exists(json, 'user') ? undefined : UserDetailsFromJSON(json['user']),\n };\n}\n\nexport function ShareSuggestionListDataToJSON(\n value?: ShareSuggestionListData | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n user: UserDetailsToJSON(value.user),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ShareSuggestionListMeta\n */\nexport interface ShareSuggestionListMeta {\n /**\n *\n * @type {number}\n * @memberof ShareSuggestionListMeta\n */\n totalPages?: number | null;\n /**\n *\n * @type {number}\n * @memberof ShareSuggestionListMeta\n */\n totalEntries?: number | null;\n /**\n *\n * @type {number}\n * @memberof ShareSuggestionListMeta\n */\n perPage?: number | null;\n /**\n *\n * @type {number}\n * @memberof ShareSuggestionListMeta\n */\n page?: number;\n}\n\nexport function ShareSuggestionListMetaFromJSON(\n json: any\n): ShareSuggestionListMeta {\n return ShareSuggestionListMetaFromJSONTyped(json, false);\n}\n\nexport function ShareSuggestionListMetaFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ShareSuggestionListMeta {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n totalPages: !exists(json, 'total_pages') ? undefined : json['total_pages'],\n totalEntries: !exists(json, 'total_entries')\n ? undefined\n : json['total_entries'],\n perPage: !exists(json, 'per_page') ? undefined : json['per_page'],\n page: !exists(json, 'page') ? undefined : json['page'],\n };\n}\n\nexport function ShareSuggestionListMetaToJSON(\n value?: ShareSuggestionListMeta | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n total_pages: value.totalPages,\n total_entries: value.totalEntries,\n per_page: value.perPage,\n page: value.page,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum ShareableType {\n Agreement = 'Agreement',\n Assessment = 'Assessment',\n AssessmentResponse = 'AssessmentResponse',\n Audit = 'Audit',\n Checklist = 'Checklist',\n ChecklistTemplate = 'ChecklistTemplate',\n DataRoomEntity = 'DataRoomEntity',\n VendorDocument = 'VendorDocument',\n VendorPolicy = 'VendorPolicy',\n}\n\nexport function ShareableTypeFromJSON(json: any): ShareableType {\n return ShareableTypeFromJSONTyped(json, false);\n}\n\nexport function ShareableTypeFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ShareableType {\n return json as ShareableType;\n}\n\nexport function ShareableTypeToJSON(value?: ShareableType | null): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface SharedAttachmentModel\n */\nexport interface SharedAttachmentModel {\n /**\n *\n * @type {number}\n * @memberof SharedAttachmentModel\n */\n id: number;\n /**\n *\n * @type {string}\n * @memberof SharedAttachmentModel\n */\n filename: string;\n /**\n *\n * @type {string}\n * @memberof SharedAttachmentModel\n */\n contentType: string;\n /**\n *\n * @type {string}\n * @memberof SharedAttachmentModel\n */\n url?: string;\n}\n\nexport function SharedAttachmentModelFromJSON(\n json: any\n): SharedAttachmentModel {\n return SharedAttachmentModelFromJSONTyped(json, false);\n}\n\nexport function SharedAttachmentModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SharedAttachmentModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n filename: json['filename'],\n contentType: json['content_type'],\n url: !exists(json, 'url') ? undefined : json['url'],\n };\n}\n\nexport function SharedAttachmentModelToJSON(\n value?: SharedAttachmentModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n filename: value.filename,\n content_type: value.contentType,\n url: value.url,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ShareSuggestionListMeta,\n ShareSuggestionListMetaFromJSON,\n ShareSuggestionListMetaFromJSONTyped,\n ShareSuggestionListMetaToJSON,\n SharedDocumentListData,\n SharedDocumentListDataFromJSON,\n SharedDocumentListDataFromJSONTyped,\n SharedDocumentListDataToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface SharedDocumentList\n */\nexport interface SharedDocumentList {\n /**\n *\n * @type {Array}\n * @memberof SharedDocumentList\n */\n data: Array;\n /**\n *\n * @type {ShareSuggestionListMeta}\n * @memberof SharedDocumentList\n */\n meta: ShareSuggestionListMeta;\n}\n\nexport function SharedDocumentListFromJSON(json: any): SharedDocumentList {\n return SharedDocumentListFromJSONTyped(json, false);\n}\n\nexport function SharedDocumentListFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SharedDocumentList {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n data: (json['data'] as Array).map(SharedDocumentListDataFromJSON),\n meta: ShareSuggestionListMetaFromJSON(json['meta']),\n };\n}\n\nexport function SharedDocumentListToJSON(\n value?: SharedDocumentList | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n data: (value.data as Array).map(SharedDocumentListDataToJSON),\n meta: ShareSuggestionListMetaToJSON(value.meta),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n UserDetails,\n UserDetailsFromJSON,\n UserDetailsFromJSONTyped,\n UserDetailsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface SharedDocumentListData\n */\nexport interface SharedDocumentListData {\n /**\n *\n * @type {string}\n * @memberof SharedDocumentListData\n */\n title?: string;\n /**\n *\n * @type {string}\n * @memberof SharedDocumentListData\n */\n type?: string;\n /**\n *\n * @type {string}\n * @memberof SharedDocumentListData\n */\n link?: string | null;\n /**\n *\n * @type {UserDetails}\n * @memberof SharedDocumentListData\n */\n sharedBy?: UserDetails;\n /**\n *\n * @type {string}\n * @memberof SharedDocumentListData\n */\n sharedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof SharedDocumentListData\n */\n accessLevel?: SharedDocumentListDataAccessLevelEnum;\n}\n\nexport function SharedDocumentListDataFromJSON(\n json: any\n): SharedDocumentListData {\n return SharedDocumentListDataFromJSONTyped(json, false);\n}\n\nexport function SharedDocumentListDataFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SharedDocumentListData {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n title: !exists(json, 'title') ? undefined : json['title'],\n type: !exists(json, 'type') ? undefined : json['type'],\n link: !exists(json, 'link') ? undefined : json['link'],\n sharedBy: !exists(json, 'shared_by')\n ? undefined\n : UserDetailsFromJSON(json['shared_by']),\n sharedAt: !exists(json, 'shared_at') ? undefined : json['shared_at'],\n accessLevel: !exists(json, 'access_level')\n ? undefined\n : json['access_level'],\n };\n}\n\nexport function SharedDocumentListDataToJSON(\n value?: SharedDocumentListData | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n title: value.title,\n type: value.type,\n link: value.link,\n shared_by: UserDetailsToJSON(value.sharedBy),\n shared_at: value.sharedAt,\n access_level: value.accessLevel,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum SharedDocumentListDataAccessLevelEnum {\n Viewer = 'viewer',\n Contributor = 'contributor',\n Manager = 'manager',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum SharedEmploymentStatus {\n Null = 'null',\n Pending = 'pending',\n Current = 'current',\n Leaving = 'leaving',\n Left = 'left',\n}\n\nexport function SharedEmploymentStatusFromJSON(\n json: any\n): SharedEmploymentStatus {\n return SharedEmploymentStatusFromJSONTyped(json, false);\n}\n\nexport function SharedEmploymentStatusFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SharedEmploymentStatus {\n return json as SharedEmploymentStatus;\n}\n\nexport function SharedEmploymentStatusToJSON(\n value?: SharedEmploymentStatus | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum SharedLegislationRecurring {\n Quarterly = 'quarterly',\n Annually = 'annually',\n BiAnnually = 'bi_annually',\n}\n\nexport function SharedLegislationRecurringFromJSON(\n json: any\n): SharedLegislationRecurring {\n return SharedLegislationRecurringFromJSONTyped(json, false);\n}\n\nexport function SharedLegislationRecurringFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SharedLegislationRecurring {\n return json as SharedLegislationRecurring;\n}\n\nexport function SharedLegislationRecurringToJSON(\n value?: SharedLegislationRecurring | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum SharedMaxUsersAmount {\n NUMBER_9 = 9,\n NUMBER_19 = 19,\n NUMBER_49 = 49,\n NUMBER_99 = 99,\n NUMBER_249 = 249,\n}\n\nexport function SharedMaxUsersAmountFromJSON(json: any): SharedMaxUsersAmount {\n return SharedMaxUsersAmountFromJSONTyped(json, false);\n}\n\nexport function SharedMaxUsersAmountFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SharedMaxUsersAmount {\n return json as SharedMaxUsersAmount;\n}\n\nexport function SharedMaxUsersAmountToJSON(\n value?: SharedMaxUsersAmount | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface SharedPaginationMeta\n */\nexport interface SharedPaginationMeta {\n /**\n *\n * @type {number}\n * @memberof SharedPaginationMeta\n */\n totalPages: number;\n /**\n *\n * @type {number}\n * @memberof SharedPaginationMeta\n */\n totalEntries: number;\n /**\n *\n * @type {number}\n * @memberof SharedPaginationMeta\n */\n perPage: number;\n /**\n *\n * @type {number}\n * @memberof SharedPaginationMeta\n */\n page: number;\n}\n\nexport function SharedPaginationMetaFromJSON(json: any): SharedPaginationMeta {\n return SharedPaginationMetaFromJSONTyped(json, false);\n}\n\nexport function SharedPaginationMetaFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SharedPaginationMeta {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n totalPages: json['total_pages'],\n totalEntries: json['total_entries'],\n perPage: json['per_page'],\n page: json['page'],\n };\n}\n\nexport function SharedPaginationMetaToJSON(\n value?: SharedPaginationMeta | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n total_pages: value.totalPages,\n total_entries: value.totalEntries,\n per_page: value.perPage,\n page: value.page,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum SharedTaskRecurring {\n NonRecurring = 'non_recurring',\n Weekly = 'weekly',\n Monthly = 'monthly',\n Quarterly = 'quarterly',\n BiAnnually = 'bi_annually',\n Annually = 'annually',\n Other = 'other',\n}\n\nexport function SharedTaskRecurringFromJSON(json: any): SharedTaskRecurring {\n return SharedTaskRecurringFromJSONTyped(json, false);\n}\n\nexport function SharedTaskRecurringFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SharedTaskRecurring {\n return json as SharedTaskRecurring;\n}\n\nexport function SharedTaskRecurringToJSON(\n value?: SharedTaskRecurring | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum SharedUserType {\n Null = 'null',\n Employee = 'employee',\n Consultant = 'consultant',\n Stakeholder = 'stakeholder',\n Guest = 'guest',\n SystemUser = 'system_user',\n}\n\nexport function SharedUserTypeFromJSON(json: any): SharedUserType {\n return SharedUserTypeFromJSONTyped(json, false);\n}\n\nexport function SharedUserTypeFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SharedUserType {\n return json as SharedUserType;\n}\n\nexport function SharedUserTypeToJSON(value?: SharedUserType | null): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum SharedVendorUserStatus {\n Null = 'null',\n Invited = 'invited',\n Active = 'active',\n Deleted = 'deleted',\n}\n\nexport function SharedVendorUserStatusFromJSON(\n json: any\n): SharedVendorUserStatus {\n return SharedVendorUserStatusFromJSONTyped(json, false);\n}\n\nexport function SharedVendorUserStatusFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SharedVendorUserStatus {\n return json as SharedVendorUserStatus;\n}\n\nexport function SharedVendorUserStatusToJSON(\n value?: SharedVendorUserStatus | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ShareSuggestionListMeta,\n ShareSuggestionListMetaFromJSON,\n ShareSuggestionListMetaFromJSONTyped,\n ShareSuggestionListMetaToJSON,\n SharesListData,\n SharesListDataFromJSON,\n SharesListDataFromJSONTyped,\n SharesListDataToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface SharesList\n */\nexport interface SharesList {\n /**\n *\n * @type {Array}\n * @memberof SharesList\n */\n data: Array;\n /**\n *\n * @type {ShareSuggestionListMeta}\n * @memberof SharesList\n */\n meta: ShareSuggestionListMeta;\n}\n\nexport function SharesListFromJSON(json: any): SharesList {\n return SharesListFromJSONTyped(json, false);\n}\n\nexport function SharesListFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SharesList {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n data: (json['data'] as Array).map(SharesListDataFromJSON),\n meta: ShareSuggestionListMetaFromJSON(json['meta']),\n };\n}\n\nexport function SharesListToJSON(value?: SharesList | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n data: (value.data as Array).map(SharesListDataToJSON),\n meta: ShareSuggestionListMetaToJSON(value.meta),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n UserDetails,\n UserDetailsFromJSON,\n UserDetailsFromJSONTyped,\n UserDetailsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface SharesListData\n */\nexport interface SharesListData {\n /**\n *\n * @type {UserDetails}\n * @memberof SharesListData\n */\n user?: UserDetails;\n /**\n *\n * @type {UserDetails}\n * @memberof SharesListData\n */\n sharedBy?: UserDetails;\n /**\n *\n * @type {string}\n * @memberof SharesListData\n */\n sharedAt?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof SharesListData\n */\n directShare?: boolean;\n /**\n *\n * @type {string}\n * @memberof SharesListData\n */\n accessLevel?: SharesListDataAccessLevelEnum;\n /**\n *\n * @type {Array}\n * @memberof SharesListData\n */\n possibleAccessLevels?: Array;\n}\n\nexport function SharesListDataFromJSON(json: any): SharesListData {\n return SharesListDataFromJSONTyped(json, false);\n}\n\nexport function SharesListDataFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SharesListData {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n user: !exists(json, 'user') ? undefined : UserDetailsFromJSON(json['user']),\n sharedBy: !exists(json, 'shared_by')\n ? undefined\n : UserDetailsFromJSON(json['shared_by']),\n sharedAt: !exists(json, 'shared_at') ? undefined : json['shared_at'],\n directShare: !exists(json, 'direct_share')\n ? undefined\n : json['direct_share'],\n accessLevel: !exists(json, 'access_level')\n ? undefined\n : json['access_level'],\n possibleAccessLevels: !exists(json, 'possible_access_levels')\n ? undefined\n : json['possible_access_levels'],\n };\n}\n\nexport function SharesListDataToJSON(value?: SharesListData | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n user: UserDetailsToJSON(value.user),\n shared_by: UserDetailsToJSON(value.sharedBy),\n shared_at: value.sharedAt,\n direct_share: value.directShare,\n access_level: value.accessLevel,\n possible_access_levels: value.possibleAccessLevels,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum SharesListDataAccessLevelEnum {\n Viewer = 'viewer',\n Contributor = 'contributor',\n Manager = 'manager',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum SharesListDataPossibleAccessLevelsEnum {\n Viewer = 'viewer',\n Contributor = 'contributor',\n Manager = 'manager',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedPaymentPeriod,\n SharedPaymentPeriodFromJSON,\n SharedPaymentPeriodFromJSONTyped,\n SharedPaymentPeriodToJSON,\n SubscriptionInvoices,\n SubscriptionInvoicesFromJSON,\n SubscriptionInvoicesFromJSONTyped,\n SubscriptionInvoicesToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface Subscription\n */\nexport interface Subscription {\n /**\n *\n * @type {string}\n * @memberof Subscription\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof Subscription\n */\n paymentPlanId?: string;\n /**\n *\n * @type {string}\n * @memberof Subscription\n */\n vendorId?: string;\n /**\n *\n * @type {string}\n * @memberof Subscription\n */\n userId?: string;\n /**\n *\n * @type {boolean}\n * @memberof Subscription\n */\n isActive?: boolean;\n /**\n *\n * @type {string}\n * @memberof Subscription\n */\n startDate?: string;\n /**\n *\n * @type {string}\n * @memberof Subscription\n */\n endDate?: string;\n /**\n *\n * @type {string}\n * @memberof Subscription\n */\n cancelledAt?: string | null;\n /**\n *\n * @type {number}\n * @memberof Subscription\n */\n usersLimit?: number;\n /**\n *\n * @type {number}\n * @memberof Subscription\n */\n price?: number;\n /**\n *\n * @type {SharedPaymentPeriod}\n * @memberof Subscription\n */\n paymentPeriod?: SharedPaymentPeriod;\n /**\n *\n * @type {Array}\n * @memberof Subscription\n */\n invoices?: Array;\n}\n\nexport function SubscriptionFromJSON(json: any): Subscription {\n return SubscriptionFromJSONTyped(json, false);\n}\n\nexport function SubscriptionFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Subscription {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n paymentPlanId: !exists(json, 'payment_plan_id')\n ? undefined\n : json['payment_plan_id'],\n vendorId: !exists(json, 'vendor_id') ? undefined : json['vendor_id'],\n userId: !exists(json, 'user_id') ? undefined : json['user_id'],\n isActive: !exists(json, 'is_active') ? undefined : json['is_active'],\n startDate: !exists(json, 'start_date') ? undefined : json['start_date'],\n endDate: !exists(json, 'end_date') ? undefined : json['end_date'],\n cancelledAt: !exists(json, 'cancelled_at')\n ? undefined\n : json['cancelled_at'],\n usersLimit: !exists(json, 'users_limit') ? undefined : json['users_limit'],\n price: !exists(json, 'price') ? undefined : json['price'],\n paymentPeriod: !exists(json, 'payment_period')\n ? undefined\n : SharedPaymentPeriodFromJSON(json['payment_period']),\n invoices: !exists(json, 'invoices')\n ? undefined\n : (json['invoices'] as Array).map(SubscriptionInvoicesFromJSON),\n };\n}\n\nexport function SubscriptionToJSON(value?: Subscription | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n payment_plan_id: value.paymentPlanId,\n vendor_id: value.vendorId,\n user_id: value.userId,\n is_active: value.isActive,\n start_date: value.startDate,\n end_date: value.endDate,\n cancelled_at: value.cancelledAt,\n users_limit: value.usersLimit,\n price: value.price,\n payment_period: SharedPaymentPeriodToJSON(value.paymentPeriod),\n invoices:\n value.invoices === undefined\n ? undefined\n : (value.invoices as Array).map(SubscriptionInvoicesToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface SubscriptionInvoices\n */\nexport interface SubscriptionInvoices {\n /**\n *\n * @type {string}\n * @memberof SubscriptionInvoices\n */\n number?: string;\n /**\n *\n * @type {string}\n * @memberof SubscriptionInvoices\n */\n description?: string;\n /**\n *\n * @type {string}\n * @memberof SubscriptionInvoices\n */\n invoiceUrl?: string;\n /**\n *\n * @type {string}\n * @memberof SubscriptionInvoices\n */\n invoicePdf?: string;\n /**\n *\n * @type {number}\n * @memberof SubscriptionInvoices\n */\n amount?: number;\n /**\n *\n * @type {string}\n * @memberof SubscriptionInvoices\n */\n currency?: string;\n /**\n *\n * @type {string}\n * @memberof SubscriptionInvoices\n */\n createdAt?: string;\n}\n\nexport function SubscriptionInvoicesFromJSON(json: any): SubscriptionInvoices {\n return SubscriptionInvoicesFromJSONTyped(json, false);\n}\n\nexport function SubscriptionInvoicesFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SubscriptionInvoices {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n number: !exists(json, 'number') ? undefined : json['number'],\n description: !exists(json, 'description') ? undefined : json['description'],\n invoiceUrl: !exists(json, 'invoice_url') ? undefined : json['invoice_url'],\n invoicePdf: !exists(json, 'invoice_pdf') ? undefined : json['invoice_pdf'],\n amount: !exists(json, 'amount') ? undefined : json['amount'],\n currency: !exists(json, 'currency') ? undefined : json['currency'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n };\n}\n\nexport function SubscriptionInvoicesToJSON(\n value?: SubscriptionInvoices | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n number: value.number,\n description: value.description,\n invoice_url: value.invoiceUrl,\n invoice_pdf: value.invoicePdf,\n amount: value.amount,\n currency: value.currency,\n created_at: value.createdAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedMaxUsersAmount,\n SharedMaxUsersAmountFromJSON,\n SharedMaxUsersAmountFromJSONTyped,\n SharedMaxUsersAmountToJSON,\n SharedPaymentPeriod,\n SharedPaymentPeriodFromJSON,\n SharedPaymentPeriodFromJSONTyped,\n SharedPaymentPeriodToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface SubscriptionUpdatePayload\n */\nexport interface SubscriptionUpdatePayload {\n /**\n *\n * @type {string}\n * @memberof SubscriptionUpdatePayload\n */\n paymentPlanId: string;\n /**\n *\n * @type {SharedMaxUsersAmount}\n * @memberof SubscriptionUpdatePayload\n */\n usersLimit?: SharedMaxUsersAmount;\n /**\n *\n * @type {SharedPaymentPeriod}\n * @memberof SubscriptionUpdatePayload\n */\n paymentPeriod: SharedPaymentPeriod;\n}\n\nexport function SubscriptionUpdatePayloadFromJSON(\n json: any\n): SubscriptionUpdatePayload {\n return SubscriptionUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function SubscriptionUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SubscriptionUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n paymentPlanId: json['payment_plan_id'],\n usersLimit: !exists(json, 'users_limit')\n ? undefined\n : SharedMaxUsersAmountFromJSON(json['users_limit']),\n paymentPeriod: SharedPaymentPeriodFromJSON(json['payment_period']),\n };\n}\n\nexport function SubscriptionUpdatePayloadToJSON(\n value?: SubscriptionUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n payment_plan_id: value.paymentPlanId,\n users_limit: SharedMaxUsersAmountToJSON(value.usersLimit),\n payment_period: SharedPaymentPeriodToJSON(value.paymentPeriod),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n QuestionGroup,\n QuestionGroupFromJSON,\n QuestionGroupFromJSONTyped,\n QuestionGroupToJSON,\n SurveyClause,\n SurveyClauseFromJSON,\n SurveyClauseFromJSONTyped,\n SurveyClauseToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface Survey\n */\nexport interface Survey {\n /**\n *\n * @type {string}\n * @memberof Survey\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof Survey\n */\n status: SurveyStatusEnum;\n /**\n *\n * @type {Array}\n * @memberof Survey\n */\n surveyClauses?: Array;\n /**\n *\n * @type {string}\n * @memberof Survey\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof Survey\n */\n updatedAt?: string;\n /**\n *\n * @type {Array}\n * @memberof Survey\n */\n questionGroups?: Array;\n}\n\nexport function SurveyFromJSON(json: any): Survey {\n return SurveyFromJSONTyped(json, false);\n}\n\nexport function SurveyFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Survey {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n status: json['status'],\n surveyClauses: !exists(json, 'survey_clauses')\n ? undefined\n : (json['survey_clauses'] as Array).map(SurveyClauseFromJSON),\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n questionGroups: !exists(json, 'question_groups')\n ? undefined\n : (json['question_groups'] as Array).map(QuestionGroupFromJSON),\n };\n}\n\nexport function SurveyToJSON(value?: Survey | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n status: value.status,\n survey_clauses:\n value.surveyClauses === undefined\n ? undefined\n : (value.surveyClauses as Array).map(SurveyClauseToJSON),\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n question_groups:\n value.questionGroups === undefined\n ? undefined\n : (value.questionGroups as Array).map(QuestionGroupToJSON),\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum SurveyStatusEnum {\n InProgress = 'in_progress',\n Completed = 'completed',\n Closed = 'closed',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Question,\n QuestionFromJSON,\n QuestionFromJSONTyped,\n QuestionToJSON,\n UserDetails,\n UserDetailsFromJSON,\n UserDetailsFromJSONTyped,\n UserDetailsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface SurveyClause\n */\nexport interface SurveyClause {\n /**\n *\n * @type {string}\n * @memberof SurveyClause\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof SurveyClause\n */\n title: string;\n /**\n *\n * @type {number}\n * @memberof SurveyClause\n */\n rowOrder?: number | null;\n /**\n *\n * @type {boolean}\n * @memberof SurveyClause\n */\n leaveOut: boolean;\n /**\n *\n * @type {Array}\n * @memberof SurveyClause\n */\n questions?: Array;\n /**\n *\n * @type {UserDetails}\n * @memberof SurveyClause\n */\n updatedBy?: UserDetails;\n /**\n *\n * @type {boolean}\n * @memberof SurveyClause\n */\n dynamic?: boolean;\n /**\n *\n * @type {string}\n * @memberof SurveyClause\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof SurveyClause\n */\n updatedAt?: string;\n}\n\nexport function SurveyClauseFromJSON(json: any): SurveyClause {\n return SurveyClauseFromJSONTyped(json, false);\n}\n\nexport function SurveyClauseFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SurveyClause {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n title: json['title'],\n rowOrder: !exists(json, 'row_order') ? undefined : json['row_order'],\n leaveOut: json['leave_out'],\n questions: !exists(json, 'questions')\n ? undefined\n : (json['questions'] as Array).map(QuestionFromJSON),\n updatedBy: !exists(json, 'updated_by')\n ? undefined\n : UserDetailsFromJSON(json['updated_by']),\n dynamic: !exists(json, 'dynamic') ? undefined : json['dynamic'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function SurveyClauseToJSON(value?: SurveyClause | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n title: value.title,\n row_order: value.rowOrder,\n leave_out: value.leaveOut,\n questions:\n value.questions === undefined\n ? undefined\n : (value.questions as Array).map(QuestionToJSON),\n updated_by: UserDetailsToJSON(value.updatedBy),\n dynamic: value.dynamic,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface SurveyClauseUpdatePayload\n */\nexport interface SurveyClauseUpdatePayload {\n /**\n *\n * @type {string}\n * @memberof SurveyClauseUpdatePayload\n */\n renderedText?: string;\n /**\n *\n * @type {boolean}\n * @memberof SurveyClauseUpdatePayload\n */\n useCustomText?: boolean;\n}\n\nexport function SurveyClauseUpdatePayloadFromJSON(\n json: any\n): SurveyClauseUpdatePayload {\n return SurveyClauseUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function SurveyClauseUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SurveyClauseUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n renderedText: !exists(json, 'rendered_text')\n ? undefined\n : json['rendered_text'],\n useCustomText: !exists(json, 'use_custom_text')\n ? undefined\n : json['use_custom_text'],\n };\n}\n\nexport function SurveyClauseUpdatePayloadToJSON(\n value?: SurveyClauseUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n rendered_text: value.renderedText,\n use_custom_text: value.useCustomText,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TableColumn,\n TableColumnFromJSON,\n TableColumnFromJSONTyped,\n TableColumnToJSON,\n TableRow,\n TableRowFromJSON,\n TableRowFromJSONTyped,\n TableRowToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface Table\n */\nexport interface Table {\n /**\n *\n * @type {Array}\n * @memberof Table\n */\n columns?: Array;\n /**\n *\n * @type {Array}\n * @memberof Table\n */\n rows?: Array;\n}\n\nexport function TableFromJSON(json: any): Table {\n return TableFromJSONTyped(json, false);\n}\n\nexport function TableFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Table {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n columns: !exists(json, 'columns')\n ? undefined\n : (json['columns'] as Array).map(TableColumnFromJSON),\n rows: !exists(json, 'rows')\n ? undefined\n : (json['rows'] as Array).map(TableRowFromJSON),\n };\n}\n\nexport function TableToJSON(value?: Table | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n columns:\n value.columns === undefined\n ? undefined\n : (value.columns as Array).map(TableColumnToJSON),\n rows:\n value.rows === undefined\n ? undefined\n : (value.rows as Array).map(TableRowToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TableColumn\n */\nexport interface TableColumn {\n /**\n *\n * @type {string}\n * @memberof TableColumn\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof TableColumn\n */\n type?: string;\n /**\n *\n * @type {string}\n * @memberof TableColumn\n */\n format?: string | null;\n}\n\nexport function TableColumnFromJSON(json: any): TableColumn {\n return TableColumnFromJSONTyped(json, false);\n}\n\nexport function TableColumnFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TableColumn {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n type: !exists(json, 'type') ? undefined : json['type'],\n format: !exists(json, 'format') ? undefined : json['format'],\n };\n}\n\nexport function TableColumnToJSON(value?: TableColumn | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n type: value.type,\n format: value.format,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TableRow\n */\nexport interface TableRow {\n /**\n *\n * @type {string}\n * @memberof TableRow\n */\n value?: string;\n /**\n *\n * @type {Array}\n * @memberof TableRow\n */\n cells?: Array;\n}\n\nexport function TableRowFromJSON(json: any): TableRow {\n return TableRowFromJSONTyped(json, false);\n}\n\nexport function TableRowFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TableRow {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n value: !exists(json, 'value') ? undefined : json['value'],\n cells: !exists(json, 'cells') ? undefined : json['cells'],\n };\n}\n\nexport function TableRowToJSON(value?: TableRow | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n value: value.value,\n cells: value.cells,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TaskAvailableAssertionsPayload\n */\nexport interface TaskAvailableAssertionsPayload {\n /**\n *\n * @type {Array}\n * @memberof TaskAvailableAssertionsPayload\n */\n availableAssertionIds?: Array;\n}\n\nexport function TaskAvailableAssertionsPayloadFromJSON(\n json: any\n): TaskAvailableAssertionsPayload {\n return TaskAvailableAssertionsPayloadFromJSONTyped(json, false);\n}\n\nexport function TaskAvailableAssertionsPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TaskAvailableAssertionsPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n availableAssertionIds: !exists(json, 'available_assertion_ids')\n ? undefined\n : json['available_assertion_ids'],\n };\n}\n\nexport function TaskAvailableAssertionsPayloadToJSON(\n value?: TaskAvailableAssertionsPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n available_assertion_ids: value.availableAssertionIds,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TaskCreatePayloadTask,\n TaskCreatePayloadTaskFromJSON,\n TaskCreatePayloadTaskFromJSONTyped,\n TaskCreatePayloadTaskToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TaskCreatePayload\n */\nexport interface TaskCreatePayload {\n /**\n *\n * @type {TaskCreatePayloadTask}\n * @memberof TaskCreatePayload\n */\n task: TaskCreatePayloadTask;\n}\n\nexport function TaskCreatePayloadFromJSON(json: any): TaskCreatePayload {\n return TaskCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function TaskCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TaskCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n task: TaskCreatePayloadTaskFromJSON(json['task']),\n };\n}\n\nexport function TaskCreatePayloadToJSON(value?: TaskCreatePayload | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n task: TaskCreatePayloadTaskToJSON(value.task),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedTaskRecurring,\n SharedTaskRecurringFromJSON,\n SharedTaskRecurringFromJSONTyped,\n SharedTaskRecurringToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TaskCreatePayloadTask\n */\nexport interface TaskCreatePayloadTask {\n /**\n *\n * @type {string}\n * @memberof TaskCreatePayloadTask\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof TaskCreatePayloadTask\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof TaskCreatePayloadTask\n */\n assigneeId?: string | null;\n /**\n *\n * @type {string}\n * @memberof TaskCreatePayloadTask\n */\n reviewDate?: string | null;\n /**\n *\n * @type {SharedTaskRecurring}\n * @memberof TaskCreatePayloadTask\n */\n recurring?: SharedTaskRecurring;\n}\n\nexport function TaskCreatePayloadTaskFromJSON(\n json: any\n): TaskCreatePayloadTask {\n return TaskCreatePayloadTaskFromJSONTyped(json, false);\n}\n\nexport function TaskCreatePayloadTaskFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TaskCreatePayloadTask {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n assigneeId: !exists(json, 'assignee_id') ? undefined : json['assignee_id'],\n reviewDate: !exists(json, 'review_date') ? undefined : json['review_date'],\n recurring: !exists(json, 'recurring')\n ? undefined\n : SharedTaskRecurringFromJSON(json['recurring']),\n };\n}\n\nexport function TaskCreatePayloadTaskToJSON(\n value?: TaskCreatePayloadTask | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n description: value.description,\n assignee_id: value.assigneeId,\n review_date: value.reviewDate,\n recurring: SharedTaskRecurringToJSON(value.recurring),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n AssertionExtended,\n AssertionExtendedFromJSON,\n AssertionExtendedFromJSONTyped,\n AssertionExtendedToJSON,\n ControlModel,\n ControlModelFromJSON,\n ControlModelFromJSONTyped,\n ControlModelToJSON,\n EvidenceModel,\n EvidenceModelFromJSON,\n EvidenceModelFromJSONTyped,\n EvidenceModelToJSON,\n SharedTaskRecurring,\n SharedTaskRecurringFromJSON,\n SharedTaskRecurringFromJSONTyped,\n SharedTaskRecurringToJSON,\n TaskExtendedAllOf,\n TaskExtendedAllOfFromJSON,\n TaskExtendedAllOfFromJSONTyped,\n TaskExtendedAllOfToJSON,\n TaskModel,\n TaskModelFromJSON,\n TaskModelFromJSONTyped,\n TaskModelToJSON,\n VendorActionModel,\n VendorActionModelFromJSON,\n VendorActionModelFromJSONTyped,\n VendorActionModelToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TaskExtended\n */\nexport interface TaskExtended extends TaskModel {\n /**\n *\n * @type {Access}\n * @memberof TaskExtended\n */\n access?: Access;\n /**\n *\n * @type {Array}\n * @memberof TaskExtended\n */\n controls?: Array;\n /**\n *\n * @type {Array}\n * @memberof TaskExtended\n */\n evidences?: Array;\n /**\n *\n * @type {Array}\n * @memberof TaskExtended\n */\n assertions?: Array;\n /**\n *\n * @type {Array}\n * @memberof TaskExtended\n */\n vendorActions?: Array;\n}\n\nexport function TaskExtendedFromJSON(json: any): TaskExtended {\n return TaskExtendedFromJSONTyped(json, false);\n}\n\nexport function TaskExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TaskExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...TaskModelFromJSONTyped(json, ignoreDiscriminator),\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n controls: !exists(json, 'controls')\n ? undefined\n : (json['controls'] as Array).map(ControlModelFromJSON),\n evidences: !exists(json, 'evidences')\n ? undefined\n : (json['evidences'] as Array).map(EvidenceModelFromJSON),\n assertions: !exists(json, 'assertions')\n ? undefined\n : (json['assertions'] as Array).map(AssertionExtendedFromJSON),\n vendorActions: !exists(json, 'vendor_actions')\n ? undefined\n : (json['vendor_actions'] as Array).map(VendorActionModelFromJSON),\n };\n}\n\nexport function TaskExtendedToJSON(value?: TaskExtended | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...TaskModelToJSON(value),\n access: AccessToJSON(value.access),\n controls:\n value.controls === undefined\n ? undefined\n : (value.controls as Array).map(ControlModelToJSON),\n evidences:\n value.evidences === undefined\n ? undefined\n : (value.evidences as Array).map(EvidenceModelToJSON),\n assertions:\n value.assertions === undefined\n ? undefined\n : (value.assertions as Array).map(AssertionExtendedToJSON),\n vendor_actions:\n value.vendorActions === undefined\n ? undefined\n : (value.vendorActions as Array).map(VendorActionModelToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TaskListMeta,\n TaskListMetaFromJSON,\n TaskListMetaFromJSONTyped,\n TaskListMetaToJSON,\n TaskModel,\n TaskModelFromJSON,\n TaskModelFromJSONTyped,\n TaskModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TaskList\n */\nexport interface TaskList {\n /**\n *\n * @type {Array}\n * @memberof TaskList\n */\n tasks?: Array;\n /**\n *\n * @type {TaskListMeta}\n * @memberof TaskList\n */\n meta?: TaskListMeta;\n}\n\nexport function TaskListFromJSON(json: any): TaskList {\n return TaskListFromJSONTyped(json, false);\n}\n\nexport function TaskListFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TaskList {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n tasks: !exists(json, 'tasks')\n ? undefined\n : (json['tasks'] as Array).map(TaskModelFromJSON),\n meta: !exists(json, 'meta')\n ? undefined\n : TaskListMetaFromJSON(json['meta']),\n };\n}\n\nexport function TaskListToJSON(value?: TaskList | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n tasks:\n value.tasks === undefined\n ? undefined\n : (value.tasks as Array).map(TaskModelToJSON),\n meta: TaskListMetaToJSON(value.meta),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TaskListMetaStats,\n TaskListMetaStatsFromJSON,\n TaskListMetaStatsFromJSONTyped,\n TaskListMetaStatsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TaskListMeta\n */\nexport interface TaskListMeta {\n /**\n *\n * @type {TaskListMetaStats}\n * @memberof TaskListMeta\n */\n stats?: TaskListMetaStats;\n}\n\nexport function TaskListMetaFromJSON(json: any): TaskListMeta {\n return TaskListMetaFromJSONTyped(json, false);\n}\n\nexport function TaskListMetaFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TaskListMeta {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n stats: !exists(json, 'stats')\n ? undefined\n : TaskListMetaStatsFromJSON(json['stats']),\n };\n}\n\nexport function TaskListMetaToJSON(value?: TaskListMeta | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n stats: TaskListMetaStatsToJSON(value.stats),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TaskListMetaStats\n */\nexport interface TaskListMetaStats {\n /**\n *\n * @type {number}\n * @memberof TaskListMetaStats\n */\n tasksTotal?: number;\n /**\n *\n * @type {number}\n * @memberof TaskListMetaStats\n */\n testsTotal?: number;\n /**\n *\n * @type {number}\n * @memberof TaskListMetaStats\n */\n testsPassing?: number;\n /**\n *\n * @type {number}\n * @memberof TaskListMetaStats\n */\n testsFailing?: number;\n /**\n *\n * @type {number}\n * @memberof TaskListMetaStats\n */\n testsPending?: number;\n}\n\nexport function TaskListMetaStatsFromJSON(json: any): TaskListMetaStats {\n return TaskListMetaStatsFromJSONTyped(json, false);\n}\n\nexport function TaskListMetaStatsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TaskListMetaStats {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n tasksTotal: !exists(json, 'tasks_total') ? undefined : json['tasks_total'],\n testsTotal: !exists(json, 'tests_total') ? undefined : json['tests_total'],\n testsPassing: !exists(json, 'tests_passing')\n ? undefined\n : json['tests_passing'],\n testsFailing: !exists(json, 'tests_failing')\n ? undefined\n : json['tests_failing'],\n testsPending: !exists(json, 'tests_pending')\n ? undefined\n : json['tests_pending'],\n };\n}\n\nexport function TaskListMetaStatsToJSON(value?: TaskListMetaStats | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n tasks_total: value.tasksTotal,\n tests_total: value.testsTotal,\n tests_passing: value.testsPassing,\n tests_failing: value.testsFailing,\n tests_pending: value.testsPending,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedTaskRecurring,\n SharedTaskRecurringFromJSON,\n SharedTaskRecurringFromJSONTyped,\n SharedTaskRecurringToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TaskModel\n */\nexport interface TaskModel {\n /**\n *\n * @type {string}\n * @memberof TaskModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof TaskModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof TaskModel\n */\n identifier?: string;\n /**\n *\n * @type {string}\n * @memberof TaskModel\n */\n status?: TaskModelStatusEnum;\n /**\n *\n * @type {string}\n * @memberof TaskModel\n */\n description: string | null;\n /**\n *\n * @type {boolean}\n * @memberof TaskModel\n */\n custom?: boolean;\n /**\n *\n * @type {string}\n * @memberof TaskModel\n */\n descriptionAsHtml: string | null;\n /**\n *\n * @type {VendorUser}\n * @memberof TaskModel\n */\n assignee?: VendorUser;\n /**\n *\n * @type {string}\n * @memberof TaskModel\n */\n reviewDate?: string | null;\n /**\n *\n * @type {SharedTaskRecurring}\n * @memberof TaskModel\n */\n recurring?: SharedTaskRecurring;\n /**\n *\n * @type {string}\n * @memberof TaskModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof TaskModel\n */\n updatedAt: string;\n}\n\nexport function TaskModelFromJSON(json: any): TaskModel {\n return TaskModelFromJSONTyped(json, false);\n}\n\nexport function TaskModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TaskModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: !exists(json, 'identifier') ? undefined : json['identifier'],\n status: !exists(json, 'status') ? undefined : json['status'],\n description: json['description'],\n custom: !exists(json, 'custom') ? undefined : json['custom'],\n descriptionAsHtml: json['description_as_html'],\n assignee: !exists(json, 'assignee')\n ? undefined\n : VendorUserFromJSON(json['assignee']),\n reviewDate: !exists(json, 'review_date') ? undefined : json['review_date'],\n recurring: !exists(json, 'recurring')\n ? undefined\n : SharedTaskRecurringFromJSON(json['recurring']),\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function TaskModelToJSON(value?: TaskModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n status: value.status,\n description: value.description,\n custom: value.custom,\n description_as_html: value.descriptionAsHtml,\n assignee: VendorUserToJSON(value.assignee),\n review_date: value.reviewDate,\n recurring: SharedTaskRecurringToJSON(value.recurring),\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum TaskModelStatusEnum {\n Pending = 'pending',\n Compliant = 'compliant',\n Failed = 'failed',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedTaskRecurring,\n SharedTaskRecurringFromJSON,\n SharedTaskRecurringFromJSONTyped,\n SharedTaskRecurringToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TaskTemplateModel\n */\nexport interface TaskTemplateModel {\n /**\n *\n * @type {string}\n * @memberof TaskTemplateModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof TaskTemplateModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof TaskTemplateModel\n */\n identifier?: string;\n /**\n *\n * @type {string}\n * @memberof TaskTemplateModel\n */\n description: string | null;\n /**\n *\n * @type {string}\n * @memberof TaskTemplateModel\n */\n descriptionAsHtml: string | null;\n /**\n *\n * @type {SharedTaskRecurring}\n * @memberof TaskTemplateModel\n */\n recurring?: SharedTaskRecurring;\n /**\n *\n * @type {string}\n * @memberof TaskTemplateModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof TaskTemplateModel\n */\n updatedAt: string;\n}\n\nexport function TaskTemplateModelFromJSON(json: any): TaskTemplateModel {\n return TaskTemplateModelFromJSONTyped(json, false);\n}\n\nexport function TaskTemplateModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TaskTemplateModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: !exists(json, 'identifier') ? undefined : json['identifier'],\n description: json['description'],\n descriptionAsHtml: json['description_as_html'],\n recurring: !exists(json, 'recurring')\n ? undefined\n : SharedTaskRecurringFromJSON(json['recurring']),\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function TaskTemplateModelToJSON(value?: TaskTemplateModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n recurring: SharedTaskRecurringToJSON(value.recurring),\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TaskUpdatePayloadTask,\n TaskUpdatePayloadTaskFromJSON,\n TaskUpdatePayloadTaskFromJSONTyped,\n TaskUpdatePayloadTaskToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TaskUpdatePayload\n */\nexport interface TaskUpdatePayload {\n /**\n *\n * @type {TaskUpdatePayloadTask}\n * @memberof TaskUpdatePayload\n */\n task?: TaskUpdatePayloadTask;\n}\n\nexport function TaskUpdatePayloadFromJSON(json: any): TaskUpdatePayload {\n return TaskUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function TaskUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TaskUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n task: !exists(json, 'task')\n ? undefined\n : TaskUpdatePayloadTaskFromJSON(json['task']),\n };\n}\n\nexport function TaskUpdatePayloadToJSON(value?: TaskUpdatePayload | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n task: TaskUpdatePayloadTaskToJSON(value.task),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedTaskRecurring,\n SharedTaskRecurringFromJSON,\n SharedTaskRecurringFromJSONTyped,\n SharedTaskRecurringToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TaskUpdatePayloadTask\n */\nexport interface TaskUpdatePayloadTask {\n /**\n *\n * @type {string}\n * @memberof TaskUpdatePayloadTask\n */\n description?: string | null;\n /**\n *\n * @type {SharedTaskRecurring}\n * @memberof TaskUpdatePayloadTask\n */\n recurring?: SharedTaskRecurring;\n /**\n *\n * @type {string}\n * @memberof TaskUpdatePayloadTask\n */\n assigneeId?: string | null;\n /**\n *\n * @type {string}\n * @memberof TaskUpdatePayloadTask\n */\n name?: string | null;\n /**\n *\n * @type {string}\n * @memberof TaskUpdatePayloadTask\n */\n reviewDate?: string | null;\n}\n\nexport function TaskUpdatePayloadTaskFromJSON(\n json: any\n): TaskUpdatePayloadTask {\n return TaskUpdatePayloadTaskFromJSONTyped(json, false);\n}\n\nexport function TaskUpdatePayloadTaskFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TaskUpdatePayloadTask {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n description: !exists(json, 'description') ? undefined : json['description'],\n recurring: !exists(json, 'recurring')\n ? undefined\n : SharedTaskRecurringFromJSON(json['recurring']),\n assigneeId: !exists(json, 'assignee_id') ? undefined : json['assignee_id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n reviewDate: !exists(json, 'review_date') ? undefined : json['review_date'],\n };\n}\n\nexport function TaskUpdatePayloadTaskToJSON(\n value?: TaskUpdatePayloadTask | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n description: value.description,\n recurring: SharedTaskRecurringToJSON(value.recurring),\n assignee_id: value.assigneeId,\n name: value.name,\n review_date: value.reviewDate,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TwoFactorRequestOtpPayload\n */\nexport interface TwoFactorRequestOtpPayload {\n /**\n *\n * @type {string}\n * @memberof TwoFactorRequestOtpPayload\n */\n qrCode: string;\n /**\n *\n * @type {boolean}\n * @memberof TwoFactorRequestOtpPayload\n */\n mfaAlreadyEnabled: boolean;\n}\n\nexport function TwoFactorRequestOtpPayloadFromJSON(\n json: any\n): TwoFactorRequestOtpPayload {\n return TwoFactorRequestOtpPayloadFromJSONTyped(json, false);\n}\n\nexport function TwoFactorRequestOtpPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TwoFactorRequestOtpPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n qrCode: json['qr_code'],\n mfaAlreadyEnabled: json['mfa_already_enabled'],\n };\n}\n\nexport function TwoFactorRequestOtpPayloadToJSON(\n value?: TwoFactorRequestOtpPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n qr_code: value.qrCode,\n mfa_already_enabled: value.mfaAlreadyEnabled,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TwoFactorSmsRequestPayload\n */\nexport interface TwoFactorSmsRequestPayload {\n /**\n *\n * @type {string}\n * @memberof TwoFactorSmsRequestPayload\n */\n email: string;\n}\n\nexport function TwoFactorSmsRequestPayloadFromJSON(\n json: any\n): TwoFactorSmsRequestPayload {\n return TwoFactorSmsRequestPayloadFromJSONTyped(json, false);\n}\n\nexport function TwoFactorSmsRequestPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TwoFactorSmsRequestPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n email: json['email'],\n };\n}\n\nexport function TwoFactorSmsRequestPayloadToJSON(\n value?: TwoFactorSmsRequestPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n email: value.email,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TwoFactorVerifyOtpPayloadMfa,\n TwoFactorVerifyOtpPayloadMfaFromJSON,\n TwoFactorVerifyOtpPayloadMfaFromJSONTyped,\n TwoFactorVerifyOtpPayloadMfaToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TwoFactorVerifyOtpPayload\n */\nexport interface TwoFactorVerifyOtpPayload {\n /**\n *\n * @type {TwoFactorVerifyOtpPayloadMfa}\n * @memberof TwoFactorVerifyOtpPayload\n */\n mfa?: TwoFactorVerifyOtpPayloadMfa;\n}\n\nexport function TwoFactorVerifyOtpPayloadFromJSON(\n json: any\n): TwoFactorVerifyOtpPayload {\n return TwoFactorVerifyOtpPayloadFromJSONTyped(json, false);\n}\n\nexport function TwoFactorVerifyOtpPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TwoFactorVerifyOtpPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n mfa: !exists(json, 'mfa')\n ? undefined\n : TwoFactorVerifyOtpPayloadMfaFromJSON(json['mfa']),\n };\n}\n\nexport function TwoFactorVerifyOtpPayloadToJSON(\n value?: TwoFactorVerifyOtpPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n mfa: TwoFactorVerifyOtpPayloadMfaToJSON(value.mfa),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TwoFactorVerifyOtpPayloadMfa\n */\nexport interface TwoFactorVerifyOtpPayloadMfa {\n /**\n *\n * @type {string}\n * @memberof TwoFactorVerifyOtpPayloadMfa\n */\n email: string;\n /**\n *\n * @type {string}\n * @memberof TwoFactorVerifyOtpPayloadMfa\n */\n password: string;\n /**\n *\n * @type {string}\n * @memberof TwoFactorVerifyOtpPayloadMfa\n */\n otpAttempt: string;\n}\n\nexport function TwoFactorVerifyOtpPayloadMfaFromJSON(\n json: any\n): TwoFactorVerifyOtpPayloadMfa {\n return TwoFactorVerifyOtpPayloadMfaFromJSONTyped(json, false);\n}\n\nexport function TwoFactorVerifyOtpPayloadMfaFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TwoFactorVerifyOtpPayloadMfa {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n email: json['email'],\n password: json['password'],\n otpAttempt: json['otp_attempt'],\n };\n}\n\nexport function TwoFactorVerifyOtpPayloadMfaToJSON(\n value?: TwoFactorVerifyOtpPayloadMfa | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n email: value.email,\n password: value.password,\n otp_attempt: value.otpAttempt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TwoFactorVerifyOtpSetupPayload\n */\nexport interface TwoFactorVerifyOtpSetupPayload {\n /**\n *\n * @type {string}\n * @memberof TwoFactorVerifyOtpSetupPayload\n */\n otpAttempt: string;\n}\n\nexport function TwoFactorVerifyOtpSetupPayloadFromJSON(\n json: any\n): TwoFactorVerifyOtpSetupPayload {\n return TwoFactorVerifyOtpSetupPayloadFromJSONTyped(json, false);\n}\n\nexport function TwoFactorVerifyOtpSetupPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TwoFactorVerifyOtpSetupPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n otpAttempt: json['otp_attempt'],\n };\n}\n\nexport function TwoFactorVerifyOtpSetupPayloadToJSON(\n value?: TwoFactorVerifyOtpSetupPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n otp_attempt: value.otpAttempt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TwoFactorVerifyOtpSetupResponse\n */\nexport interface TwoFactorVerifyOtpSetupResponse {\n /**\n *\n * @type {Array}\n * @memberof TwoFactorVerifyOtpSetupResponse\n */\n backupCodes: Array;\n}\n\nexport function TwoFactorVerifyOtpSetupResponseFromJSON(\n json: any\n): TwoFactorVerifyOtpSetupResponse {\n return TwoFactorVerifyOtpSetupResponseFromJSONTyped(json, false);\n}\n\nexport function TwoFactorVerifyOtpSetupResponseFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TwoFactorVerifyOtpSetupResponse {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n backupCodes: json['backup_codes'],\n };\n}\n\nexport function TwoFactorVerifyOtpSetupResponseToJSON(\n value?: TwoFactorVerifyOtpSetupResponse | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n backup_codes: value.backupCodes,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TwoFactorVerifyTokenPayloadObj,\n TwoFactorVerifyTokenPayloadObjFromJSON,\n TwoFactorVerifyTokenPayloadObjFromJSONTyped,\n TwoFactorVerifyTokenPayloadObjToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TwoFactorVerifyTokenPayload\n */\nexport interface TwoFactorVerifyTokenPayload {\n /**\n *\n * @type {TwoFactorVerifyTokenPayloadObj}\n * @memberof TwoFactorVerifyTokenPayload\n */\n obj?: TwoFactorVerifyTokenPayloadObj;\n}\n\nexport function TwoFactorVerifyTokenPayloadFromJSON(\n json: any\n): TwoFactorVerifyTokenPayload {\n return TwoFactorVerifyTokenPayloadFromJSONTyped(json, false);\n}\n\nexport function TwoFactorVerifyTokenPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TwoFactorVerifyTokenPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n obj: !exists(json, 'obj')\n ? undefined\n : TwoFactorVerifyTokenPayloadObjFromJSON(json['obj']),\n };\n}\n\nexport function TwoFactorVerifyTokenPayloadToJSON(\n value?: TwoFactorVerifyTokenPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n obj: TwoFactorVerifyTokenPayloadObjToJSON(value.obj),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TwoFactorVerifyTokenPayloadObj\n */\nexport interface TwoFactorVerifyTokenPayloadObj {\n /**\n *\n * @type {string}\n * @memberof TwoFactorVerifyTokenPayloadObj\n */\n email: string;\n /**\n *\n * @type {string}\n * @memberof TwoFactorVerifyTokenPayloadObj\n */\n token: string;\n}\n\nexport function TwoFactorVerifyTokenPayloadObjFromJSON(\n json: any\n): TwoFactorVerifyTokenPayloadObj {\n return TwoFactorVerifyTokenPayloadObjFromJSONTyped(json, false);\n}\n\nexport function TwoFactorVerifyTokenPayloadObjFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TwoFactorVerifyTokenPayloadObj {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n email: json['email'],\n token: json['token'],\n };\n}\n\nexport function TwoFactorVerifyTokenPayloadObjToJSON(\n value?: TwoFactorVerifyTokenPayloadObj | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n email: value.email,\n token: value.token,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface UserDetails\n */\nexport interface UserDetails {\n /**\n *\n * @type {string}\n * @memberof UserDetails\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof UserDetails\n */\n email?: string;\n /**\n *\n * @type {string}\n * @memberof UserDetails\n */\n firstName?: string | null;\n /**\n *\n * @type {string}\n * @memberof UserDetails\n */\n lastName?: string | null;\n /**\n *\n * @type {string}\n * @memberof UserDetails\n */\n fullName?: string | null;\n /**\n *\n * @type {string}\n * @memberof UserDetails\n */\n phone?: string | null;\n /**\n *\n * @type {string}\n * @memberof UserDetails\n */\n mobile?: string | null;\n /**\n *\n * @type {string}\n * @memberof UserDetails\n */\n authyUserid?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof UserDetails\n */\n authyEnabled?: boolean | null;\n}\n\nexport function UserDetailsFromJSON(json: any): UserDetails {\n return UserDetailsFromJSONTyped(json, false);\n}\n\nexport function UserDetailsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): UserDetails {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n email: !exists(json, 'email') ? undefined : json['email'],\n firstName: !exists(json, 'first_name') ? undefined : json['first_name'],\n lastName: !exists(json, 'last_name') ? undefined : json['last_name'],\n fullName: !exists(json, 'full_name') ? undefined : json['full_name'],\n phone: !exists(json, 'phone') ? undefined : json['phone'],\n mobile: !exists(json, 'mobile') ? undefined : json['mobile'],\n authyUserid: !exists(json, 'authy_userid')\n ? undefined\n : json['authy_userid'],\n authyEnabled: !exists(json, 'authy_enabled')\n ? undefined\n : json['authy_enabled'],\n };\n}\n\nexport function UserDetailsToJSON(value?: UserDetails | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n email: value.email,\n first_name: value.firstName,\n last_name: value.lastName,\n full_name: value.fullName,\n phone: value.phone,\n mobile: value.mobile,\n authy_userid: value.authyUserid,\n authy_enabled: value.authyEnabled,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface UserForgotPassword\n */\nexport interface UserForgotPassword {\n /**\n *\n * @type {string}\n * @memberof UserForgotPassword\n */\n email?: string;\n}\n\nexport function UserForgotPasswordFromJSON(json: any): UserForgotPassword {\n return UserForgotPasswordFromJSONTyped(json, false);\n}\n\nexport function UserForgotPasswordFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): UserForgotPassword {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n email: !exists(json, 'email') ? undefined : json['email'],\n };\n}\n\nexport function UserForgotPasswordToJSON(\n value?: UserForgotPassword | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n email: value.email,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface UserInvitation\n */\nexport interface UserInvitation {\n /**\n *\n * @type {string}\n * @memberof UserInvitation\n */\n email?: string;\n /**\n *\n * @type {string}\n * @memberof UserInvitation\n */\n firstName?: string | null;\n /**\n *\n * @type {string}\n * @memberof UserInvitation\n */\n lastName?: string | null;\n /**\n *\n * @type {string}\n * @memberof UserInvitation\n */\n position?: string | null;\n /**\n *\n * @type {string}\n * @memberof UserInvitation\n */\n vendorId?: string | null;\n /**\n *\n * @type {string}\n * @memberof UserInvitation\n */\n clientId?: string | null;\n /**\n *\n * @type {string}\n * @memberof UserInvitation\n */\n invitationMessage?: string | null;\n}\n\nexport function UserInvitationFromJSON(json: any): UserInvitation {\n return UserInvitationFromJSONTyped(json, false);\n}\n\nexport function UserInvitationFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): UserInvitation {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n email: !exists(json, 'email') ? undefined : json['email'],\n firstName: !exists(json, 'first_name') ? undefined : json['first_name'],\n lastName: !exists(json, 'last_name') ? undefined : json['last_name'],\n position: !exists(json, 'position') ? undefined : json['position'],\n vendorId: !exists(json, 'vendor_id') ? undefined : json['vendor_id'],\n clientId: !exists(json, 'client_id') ? undefined : json['client_id'],\n invitationMessage: !exists(json, 'invitation_message')\n ? undefined\n : json['invitation_message'],\n };\n}\n\nexport function UserInvitationToJSON(value?: UserInvitation | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n email: value.email,\n first_name: value.firstName,\n last_name: value.lastName,\n position: value.position,\n vendor_id: value.vendorId,\n client_id: value.clientId,\n invitation_message: value.invitationMessage,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface UserPassword\n */\nexport interface UserPassword {\n /**\n *\n * @type {string}\n * @memberof UserPassword\n */\n password?: string;\n /**\n *\n * @type {string}\n * @memberof UserPassword\n */\n passwordConfirmation?: string;\n /**\n *\n * @type {string}\n * @memberof UserPassword\n */\n currentPassword?: string | null;\n}\n\nexport function UserPasswordFromJSON(json: any): UserPassword {\n return UserPasswordFromJSONTyped(json, false);\n}\n\nexport function UserPasswordFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): UserPassword {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n password: !exists(json, 'password') ? undefined : json['password'],\n passwordConfirmation: !exists(json, 'password_confirmation')\n ? undefined\n : json['password_confirmation'],\n currentPassword: !exists(json, 'current_password')\n ? undefined\n : json['current_password'],\n };\n}\n\nexport function UserPasswordToJSON(value?: UserPassword | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n password: value.password,\n password_confirmation: value.passwordConfirmation,\n current_password: value.currentPassword,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface UserResetPassword\n */\nexport interface UserResetPassword {\n /**\n *\n * @type {string}\n * @memberof UserResetPassword\n */\n resetPasswordToken?: string;\n /**\n *\n * @type {string}\n * @memberof UserResetPassword\n */\n password?: string;\n /**\n *\n * @type {string}\n * @memberof UserResetPassword\n */\n passwordConfirmation?: string;\n}\n\nexport function UserResetPasswordFromJSON(json: any): UserResetPassword {\n return UserResetPasswordFromJSONTyped(json, false);\n}\n\nexport function UserResetPasswordFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): UserResetPassword {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n resetPasswordToken: !exists(json, 'reset_password_token')\n ? undefined\n : json['reset_password_token'],\n password: !exists(json, 'password') ? undefined : json['password'],\n passwordConfirmation: !exists(json, 'password_confirmation')\n ? undefined\n : json['password_confirmation'],\n };\n}\n\nexport function UserResetPasswordToJSON(value?: UserResetPassword | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n reset_password_token: value.resetPasswordToken,\n password: value.password,\n password_confirmation: value.passwordConfirmation,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface UserSignIn\n */\nexport interface UserSignIn {\n /**\n *\n * @type {string}\n * @memberof UserSignIn\n */\n email?: string;\n /**\n *\n * @type {string}\n * @memberof UserSignIn\n */\n password?: string;\n}\n\nexport function UserSignInFromJSON(json: any): UserSignIn {\n return UserSignInFromJSONTyped(json, false);\n}\n\nexport function UserSignInFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): UserSignIn {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n email: !exists(json, 'email') ? undefined : json['email'],\n password: !exists(json, 'password') ? undefined : json['password'],\n };\n}\n\nexport function UserSignInToJSON(value?: UserSignIn | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n email: value.email,\n password: value.password,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface UserSignUp\n */\nexport interface UserSignUp {\n /**\n *\n * @type {string}\n * @memberof UserSignUp\n */\n email?: string;\n /**\n *\n * @type {string}\n * @memberof UserSignUp\n */\n password?: string;\n /**\n *\n * @type {string}\n * @memberof UserSignUp\n */\n passwordConfirmation?: string;\n}\n\nexport function UserSignUpFromJSON(json: any): UserSignUp {\n return UserSignUpFromJSONTyped(json, false);\n}\n\nexport function UserSignUpFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): UserSignUp {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n email: !exists(json, 'email') ? undefined : json['email'],\n password: !exists(json, 'password') ? undefined : json['password'],\n passwordConfirmation: !exists(json, 'password_confirmation')\n ? undefined\n : json['password_confirmation'],\n };\n}\n\nexport function UserSignUpToJSON(value?: UserSignUp | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n email: value.email,\n password: value.password,\n password_confirmation: value.passwordConfirmation,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorAccess,\n VendorAccessFromJSON,\n VendorAccessFromJSONTyped,\n VendorAccessToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface Vendor\n */\nexport interface Vendor {\n /**\n *\n * @type {string}\n * @memberof Vendor\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof Vendor\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof Vendor\n */\n website?: string | null;\n /**\n *\n * @type {string}\n * @memberof Vendor\n */\n domain?: string | null;\n /**\n *\n * @type {string}\n * @memberof Vendor\n */\n linkedin?: string | null;\n /**\n *\n * @type {string}\n * @memberof Vendor\n */\n twitter?: string | null;\n /**\n *\n * @type {VendorAccess}\n * @memberof Vendor\n */\n access?: VendorAccess;\n /**\n *\n * @type {string}\n * @memberof Vendor\n */\n accessGroupId?: string | null;\n /**\n *\n * @type {string}\n * @memberof Vendor\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof Vendor\n */\n updatedAt?: string;\n}\n\nexport function VendorFromJSON(json: any): Vendor {\n return VendorFromJSONTyped(json, false);\n}\n\nexport function VendorFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Vendor {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n website: !exists(json, 'website') ? undefined : json['website'],\n domain: !exists(json, 'domain') ? undefined : json['domain'],\n linkedin: !exists(json, 'linkedin') ? undefined : json['linkedin'],\n twitter: !exists(json, 'twitter') ? undefined : json['twitter'],\n access: !exists(json, 'access')\n ? undefined\n : VendorAccessFromJSON(json['access']),\n accessGroupId: !exists(json, 'access_group_id')\n ? undefined\n : json['access_group_id'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function VendorToJSON(value?: Vendor | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n website: value.website,\n domain: value.domain,\n linkedin: value.linkedin,\n twitter: value.twitter,\n access: VendorAccessToJSON(value.access),\n access_group_id: value.accessGroupId,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorAccess\n */\nexport interface VendorAccess {\n /**\n *\n * @type {Array}\n * @memberof VendorAccess\n */\n create?: Array;\n /**\n *\n * @type {Array}\n * @memberof VendorAccess\n */\n index?: Array;\n /**\n *\n * @type {Array}\n * @memberof VendorAccess\n */\n feature?: Array;\n /**\n *\n * @type {boolean}\n * @memberof VendorAccess\n */\n show?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorAccess\n */\n update?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorAccess\n */\n destroy?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorAccess\n */\n share?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorAccess\n */\n tables?: boolean;\n}\n\nexport function VendorAccessFromJSON(json: any): VendorAccess {\n return VendorAccessFromJSONTyped(json, false);\n}\n\nexport function VendorAccessFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorAccess {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n create: !exists(json, 'create') ? undefined : json['create'],\n index: !exists(json, 'index') ? undefined : json['index'],\n feature: !exists(json, 'feature') ? undefined : json['feature'],\n show: !exists(json, 'show') ? undefined : json['show'],\n update: !exists(json, 'update') ? undefined : json['update'],\n destroy: !exists(json, 'destroy') ? undefined : json['destroy'],\n share: !exists(json, 'share') ? undefined : json['share'],\n tables: !exists(json, 'tables') ? undefined : json['tables'],\n };\n}\n\nexport function VendorAccessToJSON(value?: VendorAccess | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n create: value.create,\n index: value.index,\n feature: value.feature,\n show: value.show,\n update: value.update,\n destroy: value.destroy,\n share: value.share,\n tables: value.tables,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorAccessFeatureEnum {\n VendorDashboard = 'vendor_dashboard',\n UserDashboard = 'user_dashboard',\n CompanyDashboard = 'company_dashboard',\n Company = 'company',\n CompanyManage = 'company_manage',\n Frameworks = 'frameworks',\n FrameworksManage = 'frameworks_manage',\n Controls = 'controls',\n ControlsCreate = 'controls_create',\n ControlsUpdate = 'controls_update',\n Tasks = 'tasks',\n TasksCreate = 'tasks_create',\n TasksUpdate = 'tasks_update',\n CompanyDocuments = 'company_documents',\n Checklists = 'checklists',\n ChecklistsManage = 'checklists_manage',\n Agreements = 'agreements',\n AgreementsManage = 'agreements_manage',\n People = 'people',\n PeopleManage = 'people_manage',\n LegalRegister = 'legal_register',\n LegalRegisterManage = 'legal_register_manage',\n VendorRegister = 'vendor_register',\n VendorRegisterManage = 'vendor_register_manage',\n Pestel = 'pestel',\n PestelManage = 'pestel_manage',\n Escrow = 'escrow',\n Audits = 'audits',\n AuditsManage = 'audits_manage',\n RiskRegister = 'risk_register',\n RiskRegisterCreate = 'risk_register_create',\n RiskRegisterUpdate = 'risk_register_update',\n Calendar = 'calendar',\n CalendarManage = 'calendar_manage',\n Reports = 'reports',\n ReportsManage = 'reports_manage',\n DataroomRootTreeManage = 'dataroom_root_tree_manage',\n DataroomControlEvidenceManage = 'dataroom_control_evidence_manage',\n Assessments = 'assessments',\n Integrations = 'integrations',\n Trusthub = 'trusthub',\n Dashboard = 'dashboard',\n VendorsCreate = 'vendors_create',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n CorrectiveActionExtendedAllOf,\n CorrectiveActionExtendedAllOfFromJSON,\n CorrectiveActionExtendedAllOfFromJSONTyped,\n CorrectiveActionExtendedAllOfToJSON,\n SharedAttachmentModel,\n SharedAttachmentModelFromJSON,\n SharedAttachmentModelFromJSONTyped,\n SharedAttachmentModelToJSON,\n VendorActionModel,\n VendorActionModelFromJSON,\n VendorActionModelFromJSONTyped,\n VendorActionModelToJSON,\n VendorEventEventType,\n VendorEventEventTypeFromJSON,\n VendorEventEventTypeFromJSONTyped,\n VendorEventEventTypeToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorActionExtended\n */\nexport interface VendorActionExtended {\n /**\n *\n * @type {string}\n * @memberof VendorActionExtended\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof VendorActionExtended\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof VendorActionExtended\n */\n description?: string | null;\n /**\n *\n * @type {VendorUser}\n * @memberof VendorActionExtended\n */\n owner?: VendorUser;\n /**\n *\n * @type {VendorEventEventType}\n * @memberof VendorActionExtended\n */\n actionType?: VendorEventEventType;\n /**\n *\n * @type {boolean}\n * @memberof VendorActionExtended\n */\n completed?: boolean;\n /**\n *\n * @type {string}\n * @memberof VendorActionExtended\n */\n url?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorActionExtended\n */\n status?: VendorActionExtendedStatusEnum;\n /**\n *\n * @type {string}\n * @memberof VendorActionExtended\n */\n dueDate?: string;\n /**\n *\n * @type {string}\n * @memberof VendorActionExtended\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof VendorActionExtended\n */\n updatedAt?: string;\n /**\n *\n * @type {Array}\n * @memberof VendorActionExtended\n */\n attachments?: Array;\n}\n\nexport function VendorActionExtendedFromJSON(json: any): VendorActionExtended {\n return VendorActionExtendedFromJSONTyped(json, false);\n}\n\nexport function VendorActionExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorActionExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n actionType: !exists(json, 'action_type')\n ? undefined\n : VendorEventEventTypeFromJSON(json['action_type']),\n completed: !exists(json, 'completed') ? undefined : json['completed'],\n url: !exists(json, 'url') ? undefined : json['url'],\n status: !exists(json, 'status') ? undefined : json['status'],\n dueDate: !exists(json, 'due_date') ? undefined : json['due_date'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n attachments: !exists(json, 'attachments')\n ? undefined\n : (json['attachments'] as Array).map(SharedAttachmentModelFromJSON),\n };\n}\n\nexport function VendorActionExtendedToJSON(\n value?: VendorActionExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n description: value.description,\n owner: VendorUserToJSON(value.owner),\n action_type: VendorEventEventTypeToJSON(value.actionType),\n completed: value.completed,\n url: value.url,\n status: value.status,\n due_date: value.dueDate,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n attachments:\n value.attachments === undefined\n ? undefined\n : (value.attachments as Array).map(SharedAttachmentModelToJSON),\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorActionExtendedStatusEnum {\n Pending = 'pending',\n Completed = 'completed',\n Overdue = 'overdue',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorEventEventType,\n VendorEventEventTypeFromJSON,\n VendorEventEventTypeFromJSONTyped,\n VendorEventEventTypeToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorActionModel\n */\nexport interface VendorActionModel {\n /**\n *\n * @type {string}\n * @memberof VendorActionModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof VendorActionModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof VendorActionModel\n */\n description?: string | null;\n /**\n *\n * @type {VendorUser}\n * @memberof VendorActionModel\n */\n owner?: VendorUser;\n /**\n *\n * @type {VendorEventEventType}\n * @memberof VendorActionModel\n */\n actionType?: VendorEventEventType;\n /**\n *\n * @type {boolean}\n * @memberof VendorActionModel\n */\n completed?: boolean;\n /**\n *\n * @type {string}\n * @memberof VendorActionModel\n */\n url?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorActionModel\n */\n status?: VendorActionModelStatusEnum;\n /**\n *\n * @type {string}\n * @memberof VendorActionModel\n */\n dueDate?: string;\n /**\n *\n * @type {string}\n * @memberof VendorActionModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof VendorActionModel\n */\n updatedAt?: string;\n}\n\nexport function VendorActionModelFromJSON(json: any): VendorActionModel {\n return VendorActionModelFromJSONTyped(json, false);\n}\n\nexport function VendorActionModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorActionModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n actionType: !exists(json, 'action_type')\n ? undefined\n : VendorEventEventTypeFromJSON(json['action_type']),\n completed: !exists(json, 'completed') ? undefined : json['completed'],\n url: !exists(json, 'url') ? undefined : json['url'],\n status: !exists(json, 'status') ? undefined : json['status'],\n dueDate: !exists(json, 'due_date') ? undefined : json['due_date'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function VendorActionModelToJSON(value?: VendorActionModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n description: value.description,\n owner: VendorUserToJSON(value.owner),\n action_type: VendorEventEventTypeToJSON(value.actionType),\n completed: value.completed,\n url: value.url,\n status: value.status,\n due_date: value.dueDate,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorActionModelStatusEnum {\n Pending = 'pending',\n Completed = 'completed',\n Overdue = 'overdue',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n Company,\n CompanyFromJSON,\n CompanyFromJSONTyped,\n CompanyToJSON,\n VendorDetailsCounts,\n VendorDetailsCountsFromJSON,\n VendorDetailsCountsFromJSONTyped,\n VendorDetailsCountsToJSON,\n VendorDetailsRegisters,\n VendorDetailsRegistersFromJSON,\n VendorDetailsRegistersFromJSONTyped,\n VendorDetailsRegistersToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorDetails\n */\nexport interface VendorDetails {\n /**\n *\n * @type {string}\n * @memberof VendorDetails\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof VendorDetails\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof VendorDetails\n */\n website?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDetails\n */\n domain?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDetails\n */\n linkedin?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDetails\n */\n twitter?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDetails\n */\n accessGroupId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDetails\n */\n serviceProviderId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDetails\n */\n customLogoUrl?: string | null;\n /**\n *\n * @type {Access}\n * @memberof VendorDetails\n */\n access?: Access;\n /**\n *\n * @type {Array}\n * @memberof VendorDetails\n */\n companies?: Array;\n /**\n *\n * @type {VendorDetailsCounts}\n * @memberof VendorDetails\n */\n counts?: VendorDetailsCounts;\n /**\n *\n * @type {VendorDetailsRegisters}\n * @memberof VendorDetails\n */\n registers?: VendorDetailsRegisters;\n /**\n *\n * @type {string}\n * @memberof VendorDetails\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof VendorDetails\n */\n updatedAt?: string;\n}\n\nexport function VendorDetailsFromJSON(json: any): VendorDetails {\n return VendorDetailsFromJSONTyped(json, false);\n}\n\nexport function VendorDetailsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorDetails {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n website: !exists(json, 'website') ? undefined : json['website'],\n domain: !exists(json, 'domain') ? undefined : json['domain'],\n linkedin: !exists(json, 'linkedin') ? undefined : json['linkedin'],\n twitter: !exists(json, 'twitter') ? undefined : json['twitter'],\n accessGroupId: !exists(json, 'access_group_id')\n ? undefined\n : json['access_group_id'],\n serviceProviderId: !exists(json, 'service_provider_id')\n ? undefined\n : json['service_provider_id'],\n customLogoUrl: !exists(json, 'custom_logo_url')\n ? undefined\n : json['custom_logo_url'],\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n companies: !exists(json, 'companies')\n ? undefined\n : (json['companies'] as Array).map(CompanyFromJSON),\n counts: !exists(json, 'counts')\n ? undefined\n : VendorDetailsCountsFromJSON(json['counts']),\n registers: !exists(json, 'registers')\n ? undefined\n : VendorDetailsRegistersFromJSON(json['registers']),\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function VendorDetailsToJSON(value?: VendorDetails | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n website: value.website,\n domain: value.domain,\n linkedin: value.linkedin,\n twitter: value.twitter,\n access_group_id: value.accessGroupId,\n service_provider_id: value.serviceProviderId,\n custom_logo_url: value.customLogoUrl,\n access: AccessToJSON(value.access),\n companies:\n value.companies === undefined\n ? undefined\n : (value.companies as Array).map(CompanyToJSON),\n counts: VendorDetailsCountsToJSON(value.counts),\n registers: VendorDetailsRegistersToJSON(value.registers),\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorDetailsCounts\n */\nexport interface VendorDetailsCounts {\n /**\n *\n * @type {number}\n * @memberof VendorDetailsCounts\n */\n answerSets?: number;\n /**\n *\n * @type {number}\n * @memberof VendorDetailsCounts\n */\n corporatePolicies?: number;\n /**\n *\n * @type {number}\n * @memberof VendorDetailsCounts\n */\n industryCertifications?: number;\n}\n\nexport function VendorDetailsCountsFromJSON(json: any): VendorDetailsCounts {\n return VendorDetailsCountsFromJSONTyped(json, false);\n}\n\nexport function VendorDetailsCountsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorDetailsCounts {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n answerSets: !exists(json, 'answer_sets') ? undefined : json['answer_sets'],\n corporatePolicies: !exists(json, 'corporate_policies')\n ? undefined\n : json['corporate_policies'],\n industryCertifications: !exists(json, 'industry_certifications')\n ? undefined\n : json['industry_certifications'],\n };\n}\n\nexport function VendorDetailsCountsToJSON(\n value?: VendorDetailsCounts | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n answer_sets: value.answerSets,\n corporate_policies: value.corporatePolicies,\n industry_certifications: value.industryCertifications,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorDetailsRegisters\n */\nexport interface VendorDetailsRegisters {\n /**\n *\n * @type {string}\n * @memberof VendorDetailsRegisters\n */\n legalRegisterId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDetailsRegisters\n */\n pestelRegisterId?: string | null;\n}\n\nexport function VendorDetailsRegistersFromJSON(\n json: any\n): VendorDetailsRegisters {\n return VendorDetailsRegistersFromJSONTyped(json, false);\n}\n\nexport function VendorDetailsRegistersFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorDetailsRegisters {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n legalRegisterId: !exists(json, 'legal_register_id')\n ? undefined\n : json['legal_register_id'],\n pestelRegisterId: !exists(json, 'pestel_register_id')\n ? undefined\n : json['pestel_register_id'],\n };\n}\n\nexport function VendorDetailsRegistersToJSON(\n value?: VendorDetailsRegisters | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n legal_register_id: value.legalRegisterId,\n pestel_register_id: value.pestelRegisterId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n AttestationFrequencyEnum,\n AttestationFrequencyEnumFromJSON,\n AttestationFrequencyEnumFromJSONTyped,\n AttestationFrequencyEnumToJSON,\n ReviewFrequencyEnum,\n ReviewFrequencyEnumFromJSON,\n ReviewFrequencyEnumFromJSONTyped,\n ReviewFrequencyEnumToJSON,\n VendorDocumentApproval,\n VendorDocumentApprovalFromJSON,\n VendorDocumentApprovalFromJSONTyped,\n VendorDocumentApprovalToJSON,\n VendorDocumentApprovalStats,\n VendorDocumentApprovalStatsFromJSON,\n VendorDocumentApprovalStatsFromJSONTyped,\n VendorDocumentApprovalStatsToJSON,\n VendorDocumentAttestation,\n VendorDocumentAttestationFromJSON,\n VendorDocumentAttestationFromJSONTyped,\n VendorDocumentAttestationToJSON,\n VendorDocumentAttestationStats,\n VendorDocumentAttestationStatsFromJSON,\n VendorDocumentAttestationStatsFromJSONTyped,\n VendorDocumentAttestationStatsToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorDocument\n */\nexport interface VendorDocument {\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n id?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n relativePath?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n vendorId?: string;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n policyId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n policyCategoryId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n status?: VendorDocumentStatusEnum;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n documentType?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n documentableId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n version?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof VendorDocument\n */\n live?: boolean | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n versionBump?: VendorDocumentVersionBumpEnum;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n changeReason?: string;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n approvalMessage?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof VendorDocument\n */\n needToAttest?: boolean | null;\n /**\n *\n * @type {AttestationFrequencyEnum}\n * @memberof VendorDocument\n */\n attestationFrequency?: AttestationFrequencyEnum;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n attestationMessage?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n attestationDueAt?: string | null;\n /**\n *\n * @type {VendorDocumentAttestation}\n * @memberof VendorDocument\n */\n vendorDocumentAttestation?: VendorDocumentAttestation;\n /**\n *\n * @type {VendorDocumentApproval}\n * @memberof VendorDocument\n */\n vendorDocumentApproval?: VendorDocumentApproval;\n /**\n *\n * @type {Access}\n * @memberof VendorDocument\n */\n access?: Access;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n accessGroupId?: string | null;\n /**\n *\n * @type {VendorUser}\n * @memberof VendorDocument\n */\n owner?: VendorUser;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n ownerId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n createdAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n updatedAt?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof VendorDocument\n */\n archived?: boolean | null;\n /**\n *\n * @type {ReviewFrequencyEnum}\n * @memberof VendorDocument\n */\n reviewFrequency?: ReviewFrequencyEnum;\n /**\n *\n * @type {string}\n * @memberof VendorDocument\n */\n nextReviewDate?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof VendorDocument\n */\n reviewOverdue?: boolean | null;\n /**\n *\n * @type {VendorDocumentApprovalStats}\n * @memberof VendorDocument\n */\n approvalStats?: VendorDocumentApprovalStats;\n /**\n *\n * @type {VendorDocumentAttestationStats}\n * @memberof VendorDocument\n */\n attestationStats?: VendorDocumentAttestationStats;\n}\n\nexport function VendorDocumentFromJSON(json: any): VendorDocument {\n return VendorDocumentFromJSONTyped(json, false);\n}\n\nexport function VendorDocumentFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorDocument {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n relativePath: !exists(json, 'relative_path')\n ? undefined\n : json['relative_path'],\n vendorId: !exists(json, 'vendor_id') ? undefined : json['vendor_id'],\n policyId: !exists(json, 'policy_id') ? undefined : json['policy_id'],\n policyCategoryId: !exists(json, 'policy_category_id')\n ? undefined\n : json['policy_category_id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n status: !exists(json, 'status') ? undefined : json['status'],\n description: !exists(json, 'description') ? undefined : json['description'],\n documentType: !exists(json, 'document_type')\n ? undefined\n : json['document_type'],\n documentableId: !exists(json, 'documentable_id')\n ? undefined\n : json['documentable_id'],\n version: !exists(json, 'version') ? undefined : json['version'],\n live: !exists(json, 'live') ? undefined : json['live'],\n versionBump: !exists(json, 'version_bump')\n ? undefined\n : json['version_bump'],\n changeReason: !exists(json, 'change_reason')\n ? undefined\n : json['change_reason'],\n approvalMessage: !exists(json, 'approval_message')\n ? undefined\n : json['approval_message'],\n needToAttest: !exists(json, 'need_to_attest')\n ? undefined\n : json['need_to_attest'],\n attestationFrequency: !exists(json, 'attestation_frequency')\n ? undefined\n : AttestationFrequencyEnumFromJSON(json['attestation_frequency']),\n attestationMessage: !exists(json, 'attestation_message')\n ? undefined\n : json['attestation_message'],\n attestationDueAt: !exists(json, 'attestation_due_at')\n ? undefined\n : json['attestation_due_at'],\n vendorDocumentAttestation: !exists(json, 'vendor_document_attestation')\n ? undefined\n : VendorDocumentAttestationFromJSON(json['vendor_document_attestation']),\n vendorDocumentApproval: !exists(json, 'vendor_document_approval')\n ? undefined\n : VendorDocumentApprovalFromJSON(json['vendor_document_approval']),\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n accessGroupId: !exists(json, 'access_group_id')\n ? undefined\n : json['access_group_id'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n archived: !exists(json, 'archived') ? undefined : json['archived'],\n reviewFrequency: !exists(json, 'review_frequency')\n ? undefined\n : ReviewFrequencyEnumFromJSON(json['review_frequency']),\n nextReviewDate: !exists(json, 'next_review_date')\n ? undefined\n : json['next_review_date'],\n reviewOverdue: !exists(json, 'review_overdue')\n ? undefined\n : json['review_overdue'],\n approvalStats: !exists(json, 'approval_stats')\n ? undefined\n : VendorDocumentApprovalStatsFromJSON(json['approval_stats']),\n attestationStats: !exists(json, 'attestation_stats')\n ? undefined\n : VendorDocumentAttestationStatsFromJSON(json['attestation_stats']),\n };\n}\n\nexport function VendorDocumentToJSON(value?: VendorDocument | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n relative_path: value.relativePath,\n vendor_id: value.vendorId,\n policy_id: value.policyId,\n policy_category_id: value.policyCategoryId,\n name: value.name,\n status: value.status,\n description: value.description,\n document_type: value.documentType,\n documentable_id: value.documentableId,\n version: value.version,\n live: value.live,\n version_bump: value.versionBump,\n change_reason: value.changeReason,\n approval_message: value.approvalMessage,\n need_to_attest: value.needToAttest,\n attestation_frequency: AttestationFrequencyEnumToJSON(\n value.attestationFrequency\n ),\n attestation_message: value.attestationMessage,\n attestation_due_at: value.attestationDueAt,\n vendor_document_attestation: VendorDocumentAttestationToJSON(\n value.vendorDocumentAttestation\n ),\n vendor_document_approval: VendorDocumentApprovalToJSON(\n value.vendorDocumentApproval\n ),\n access: AccessToJSON(value.access),\n access_group_id: value.accessGroupId,\n owner: VendorUserToJSON(value.owner),\n owner_id: value.ownerId,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n archived: value.archived,\n review_frequency: ReviewFrequencyEnumToJSON(value.reviewFrequency),\n next_review_date: value.nextReviewDate,\n review_overdue: value.reviewOverdue,\n approval_stats: VendorDocumentApprovalStatsToJSON(value.approvalStats),\n attestation_stats: VendorDocumentAttestationStatsToJSON(\n value.attestationStats\n ),\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorDocumentStatusEnum {\n Approval = 'approval',\n Attestation = 'attestation',\n Complete = 'complete',\n Rejected = 'rejected',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorDocumentVersionBumpEnum {\n Minor = 'minor',\n Major = 'major',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorDocumentApproval\n */\nexport interface VendorDocumentApproval {\n /**\n *\n * @type {string}\n * @memberof VendorDocumentApproval\n */\n id?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentApproval\n */\n vendorUserId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentApproval\n */\n fullName?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentApproval\n */\n email?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof VendorDocumentApproval\n */\n required?: boolean | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentApproval\n */\n lastApprovedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentApproval\n */\n status?: VendorDocumentApprovalStatusEnum;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentApproval\n */\n rejectionReason?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentApproval\n */\n rejectedAt?: string | null;\n}\n\nexport function VendorDocumentApprovalFromJSON(\n json: any\n): VendorDocumentApproval {\n return VendorDocumentApprovalFromJSONTyped(json, false);\n}\n\nexport function VendorDocumentApprovalFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorDocumentApproval {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n vendorUserId: !exists(json, 'vendor_user_id')\n ? undefined\n : json['vendor_user_id'],\n fullName: !exists(json, 'full_name') ? undefined : json['full_name'],\n email: !exists(json, 'email') ? undefined : json['email'],\n required: !exists(json, 'required') ? undefined : json['required'],\n lastApprovedAt: !exists(json, 'last_approved_at')\n ? undefined\n : json['last_approved_at'],\n status: !exists(json, 'status') ? undefined : json['status'],\n rejectionReason: !exists(json, 'rejection_reason')\n ? undefined\n : json['rejection_reason'],\n rejectedAt: !exists(json, 'rejected_at') ? undefined : json['rejected_at'],\n };\n}\n\nexport function VendorDocumentApprovalToJSON(\n value?: VendorDocumentApproval | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n vendor_user_id: value.vendorUserId,\n full_name: value.fullName,\n email: value.email,\n required: value.required,\n last_approved_at: value.lastApprovedAt,\n status: value.status,\n rejection_reason: value.rejectionReason,\n rejected_at: value.rejectedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorDocumentApprovalStatusEnum {\n WasNotRequested = 'was_not_requested',\n Requested = 'requested',\n Current = 'current',\n Rejected = 'rejected',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorDocumentApprovalReject\n */\nexport interface VendorDocumentApprovalReject {\n /**\n *\n * @type {string}\n * @memberof VendorDocumentApprovalReject\n */\n rejectionReason?: string | null;\n}\n\nexport function VendorDocumentApprovalRejectFromJSON(\n json: any\n): VendorDocumentApprovalReject {\n return VendorDocumentApprovalRejectFromJSONTyped(json, false);\n}\n\nexport function VendorDocumentApprovalRejectFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorDocumentApprovalReject {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n rejectionReason: !exists(json, 'rejection_reason')\n ? undefined\n : json['rejection_reason'],\n };\n}\n\nexport function VendorDocumentApprovalRejectToJSON(\n value?: VendorDocumentApprovalReject | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n rejection_reason: value.rejectionReason,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorDocumentApprovalStats\n */\nexport interface VendorDocumentApprovalStats {\n /**\n *\n * @type {number}\n * @memberof VendorDocumentApprovalStats\n */\n approved?: number;\n /**\n *\n * @type {number}\n * @memberof VendorDocumentApprovalStats\n */\n total?: number;\n}\n\nexport function VendorDocumentApprovalStatsFromJSON(\n json: any\n): VendorDocumentApprovalStats {\n return VendorDocumentApprovalStatsFromJSONTyped(json, false);\n}\n\nexport function VendorDocumentApprovalStatsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorDocumentApprovalStats {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n approved: !exists(json, 'approved') ? undefined : json['approved'],\n total: !exists(json, 'total') ? undefined : json['total'],\n };\n}\n\nexport function VendorDocumentApprovalStatsToJSON(\n value?: VendorDocumentApprovalStats | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n approved: value.approved,\n total: value.total,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorDocumentAttestation\n */\nexport interface VendorDocumentAttestation {\n /**\n *\n * @type {string}\n * @memberof VendorDocumentAttestation\n */\n id?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentAttestation\n */\n documentName?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentAttestation\n */\n vendorUserId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentAttestation\n */\n fullName?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentAttestation\n */\n email?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof VendorDocumentAttestation\n */\n required?: boolean | null;\n /**\n *\n * @type {boolean}\n * @memberof VendorDocumentAttestation\n */\n sendEmailNotification?: boolean | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentAttestation\n */\n status?: VendorDocumentAttestationStatusEnum;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentAttestation\n */\n lastAttestedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentAttestation\n */\n attestationDueAt?: string | null;\n}\n\nexport function VendorDocumentAttestationFromJSON(\n json: any\n): VendorDocumentAttestation {\n return VendorDocumentAttestationFromJSONTyped(json, false);\n}\n\nexport function VendorDocumentAttestationFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorDocumentAttestation {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n documentName: !exists(json, 'document_name')\n ? undefined\n : json['document_name'],\n vendorUserId: !exists(json, 'vendor_user_id')\n ? undefined\n : json['vendor_user_id'],\n fullName: !exists(json, 'full_name') ? undefined : json['full_name'],\n email: !exists(json, 'email') ? undefined : json['email'],\n required: !exists(json, 'required') ? undefined : json['required'],\n sendEmailNotification: !exists(json, 'send_email_notification')\n ? undefined\n : json['send_email_notification'],\n status: !exists(json, 'status') ? undefined : json['status'],\n lastAttestedAt: !exists(json, 'last_attested_at')\n ? undefined\n : json['last_attested_at'],\n attestationDueAt: !exists(json, 'attestation_due_at')\n ? undefined\n : json['attestation_due_at'],\n };\n}\n\nexport function VendorDocumentAttestationToJSON(\n value?: VendorDocumentAttestation | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n document_name: value.documentName,\n vendor_user_id: value.vendorUserId,\n full_name: value.fullName,\n email: value.email,\n required: value.required,\n send_email_notification: value.sendEmailNotification,\n status: value.status,\n last_attested_at: value.lastAttestedAt,\n attestation_due_at: value.attestationDueAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorDocumentAttestationStatusEnum {\n WasNotRequested = 'was_not_requested',\n Requested = 'requested',\n Current = 'current',\n Imminent = 'imminent',\n Overdue = 'overdue',\n Expired = 'expired',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorDocumentAttestationStats\n */\nexport interface VendorDocumentAttestationStats {\n /**\n *\n * @type {number}\n * @memberof VendorDocumentAttestationStats\n */\n attested?: number;\n /**\n *\n * @type {number}\n * @memberof VendorDocumentAttestationStats\n */\n total?: number;\n}\n\nexport function VendorDocumentAttestationStatsFromJSON(\n json: any\n): VendorDocumentAttestationStats {\n return VendorDocumentAttestationStatsFromJSONTyped(json, false);\n}\n\nexport function VendorDocumentAttestationStatsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorDocumentAttestationStats {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n attested: !exists(json, 'attested') ? undefined : json['attested'],\n total: !exists(json, 'total') ? undefined : json['total'],\n };\n}\n\nexport function VendorDocumentAttestationStatsToJSON(\n value?: VendorDocumentAttestationStats | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n attested: value.attested,\n total: value.total,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorDocumentAttestationsGroupUpdatePayload\n */\nexport interface VendorDocumentAttestationsGroupUpdatePayload {\n /**\n *\n * @type {Array}\n * @memberof VendorDocumentAttestationsGroupUpdatePayload\n */\n groupIds?: Array;\n}\n\nexport function VendorDocumentAttestationsGroupUpdatePayloadFromJSON(\n json: any\n): VendorDocumentAttestationsGroupUpdatePayload {\n return VendorDocumentAttestationsGroupUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function VendorDocumentAttestationsGroupUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorDocumentAttestationsGroupUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n groupIds: !exists(json, 'group_ids') ? undefined : json['group_ids'],\n };\n}\n\nexport function VendorDocumentAttestationsGroupUpdatePayloadToJSON(\n value?: VendorDocumentAttestationsGroupUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n group_ids: value.groupIds,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n AttestationFrequencyEnum,\n AttestationFrequencyEnumFromJSON,\n AttestationFrequencyEnumFromJSONTyped,\n AttestationFrequencyEnumToJSON,\n ReviewFrequencyEnum,\n ReviewFrequencyEnumFromJSON,\n ReviewFrequencyEnumFromJSONTyped,\n ReviewFrequencyEnumToJSON,\n VendorDocument,\n VendorDocumentFromJSON,\n VendorDocumentFromJSONTyped,\n VendorDocumentToJSON,\n VendorDocumentApproval,\n VendorDocumentApprovalFromJSON,\n VendorDocumentApprovalFromJSONTyped,\n VendorDocumentApprovalToJSON,\n VendorDocumentApprovalStats,\n VendorDocumentApprovalStatsFromJSON,\n VendorDocumentApprovalStatsFromJSONTyped,\n VendorDocumentApprovalStatsToJSON,\n VendorDocumentAttestation,\n VendorDocumentAttestationFromJSON,\n VendorDocumentAttestationFromJSONTyped,\n VendorDocumentAttestationToJSON,\n VendorDocumentAttestationStats,\n VendorDocumentAttestationStatsFromJSON,\n VendorDocumentAttestationStatsFromJSONTyped,\n VendorDocumentAttestationStatsToJSON,\n VendorDocumentDownloadAllOf,\n VendorDocumentDownloadAllOfFromJSON,\n VendorDocumentDownloadAllOfFromJSONTyped,\n VendorDocumentDownloadAllOfToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorDocumentDownload\n */\nexport interface VendorDocumentDownload extends VendorDocument {\n /**\n *\n * @type {string}\n * @memberof VendorDocumentDownload\n */\n document: string | null;\n /**\n *\n * @type {number}\n * @memberof VendorDocumentDownload\n */\n fileSizeInBytes: number | null;\n}\n\nexport function VendorDocumentDownloadFromJSON(\n json: any\n): VendorDocumentDownload {\n return VendorDocumentDownloadFromJSONTyped(json, false);\n}\n\nexport function VendorDocumentDownloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorDocumentDownload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...VendorDocumentFromJSONTyped(json, ignoreDiscriminator),\n document: json['document'],\n fileSizeInBytes: json['file_size_in_bytes'],\n };\n}\n\nexport function VendorDocumentDownloadToJSON(\n value?: VendorDocumentDownload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...VendorDocumentToJSON(value),\n document: value.document,\n file_size_in_bytes: value.fileSizeInBytes,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n AttestationFrequencyEnum,\n AttestationFrequencyEnumFromJSON,\n AttestationFrequencyEnumFromJSONTyped,\n AttestationFrequencyEnumToJSON,\n ReviewFrequencyEnum,\n ReviewFrequencyEnumFromJSON,\n ReviewFrequencyEnumFromJSONTyped,\n ReviewFrequencyEnumToJSON,\n VendorDocument,\n VendorDocumentFromJSON,\n VendorDocumentFromJSONTyped,\n VendorDocumentToJSON,\n VendorDocumentApproval,\n VendorDocumentApprovalFromJSON,\n VendorDocumentApprovalFromJSONTyped,\n VendorDocumentApprovalToJSON,\n VendorDocumentApprovalStats,\n VendorDocumentApprovalStatsFromJSON,\n VendorDocumentApprovalStatsFromJSONTyped,\n VendorDocumentApprovalStatsToJSON,\n VendorDocumentAttestation,\n VendorDocumentAttestationFromJSON,\n VendorDocumentAttestationFromJSONTyped,\n VendorDocumentAttestationToJSON,\n VendorDocumentAttestationStats,\n VendorDocumentAttestationStatsFromJSON,\n VendorDocumentAttestationStatsFromJSONTyped,\n VendorDocumentAttestationStatsToJSON,\n VendorDocumentExtendedAllOf,\n VendorDocumentExtendedAllOfFromJSON,\n VendorDocumentExtendedAllOfFromJSONTyped,\n VendorDocumentExtendedAllOfToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorDocumentExtended\n */\nexport interface VendorDocumentExtended extends VendorDocument {\n /**\n *\n * @type {string}\n * @memberof VendorDocumentExtended\n */\n createdBy?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorDocumentExtended\n */\n updatedBy?: string | null;\n}\n\nexport function VendorDocumentExtendedFromJSON(\n json: any\n): VendorDocumentExtended {\n return VendorDocumentExtendedFromJSONTyped(json, false);\n}\n\nexport function VendorDocumentExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorDocumentExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...VendorDocumentFromJSONTyped(json, ignoreDiscriminator),\n createdBy: !exists(json, 'created_by') ? undefined : json['created_by'],\n updatedBy: !exists(json, 'updated_by') ? undefined : json['updated_by'],\n };\n}\n\nexport function VendorDocumentExtendedToJSON(\n value?: VendorDocumentExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...VendorDocumentToJSON(value),\n created_by: value.createdBy,\n updated_by: value.updatedBy,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n AttestationFrequencyEnum,\n AttestationFrequencyEnumFromJSON,\n AttestationFrequencyEnumFromJSONTyped,\n AttestationFrequencyEnumToJSON,\n ReviewFrequencyEnum,\n ReviewFrequencyEnumFromJSON,\n ReviewFrequencyEnumFromJSONTyped,\n ReviewFrequencyEnumToJSON,\n VendorDocument,\n VendorDocumentFromJSON,\n VendorDocumentFromJSONTyped,\n VendorDocumentToJSON,\n VendorDocumentApproval,\n VendorDocumentApprovalFromJSON,\n VendorDocumentApprovalFromJSONTyped,\n VendorDocumentApprovalToJSON,\n VendorDocumentApprovalStats,\n VendorDocumentApprovalStatsFromJSON,\n VendorDocumentApprovalStatsFromJSONTyped,\n VendorDocumentApprovalStatsToJSON,\n VendorDocumentAttestation,\n VendorDocumentAttestationFromJSON,\n VendorDocumentAttestationFromJSONTyped,\n VendorDocumentAttestationToJSON,\n VendorDocumentAttestationStats,\n VendorDocumentAttestationStatsFromJSON,\n VendorDocumentAttestationStatsFromJSONTyped,\n VendorDocumentAttestationStatsToJSON,\n VendorDocumentUpdatePayloadAllOf,\n VendorDocumentUpdatePayloadAllOfFromJSON,\n VendorDocumentUpdatePayloadAllOfFromJSONTyped,\n VendorDocumentUpdatePayloadAllOfToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorDocumentUpdatePayload\n */\nexport interface VendorDocumentUpdatePayload extends VendorDocument {\n /**\n *\n * @type {Array}\n * @memberof VendorDocumentUpdatePayload\n */\n vendorDocumentAttestations?: Array;\n /**\n *\n * @type {Array}\n * @memberof VendorDocumentUpdatePayload\n */\n vendorDocumentApprovals?: Array;\n}\n\nexport function VendorDocumentUpdatePayloadFromJSON(\n json: any\n): VendorDocumentUpdatePayload {\n return VendorDocumentUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function VendorDocumentUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorDocumentUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...VendorDocumentFromJSONTyped(json, ignoreDiscriminator),\n vendorDocumentAttestations: !exists(json, 'vendor_document_attestations')\n ? undefined\n : (json['vendor_document_attestations'] as Array).map(\n VendorDocumentAttestationFromJSON\n ),\n vendorDocumentApprovals: !exists(json, 'vendor_document_approvals')\n ? undefined\n : (json['vendor_document_approvals'] as Array).map(\n VendorDocumentApprovalFromJSON\n ),\n };\n}\n\nexport function VendorDocumentUpdatePayloadToJSON(\n value?: VendorDocumentUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...VendorDocumentToJSON(value),\n vendor_document_attestations:\n value.vendorDocumentAttestations === undefined\n ? undefined\n : (value.vendorDocumentAttestations as Array).map(\n VendorDocumentAttestationToJSON\n ),\n vendor_document_approvals:\n value.vendorDocumentApprovals === undefined\n ? undefined\n : (value.vendorDocumentApprovals as Array).map(\n VendorDocumentApprovalToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n CorrectiveActionExtendedAllOf,\n CorrectiveActionExtendedAllOfFromJSON,\n CorrectiveActionExtendedAllOfFromJSONTyped,\n CorrectiveActionExtendedAllOfToJSON,\n SharedAttachmentModel,\n SharedAttachmentModelFromJSON,\n SharedAttachmentModelFromJSONTyped,\n SharedAttachmentModelToJSON,\n VendorEventEventType,\n VendorEventEventTypeFromJSON,\n VendorEventEventTypeFromJSONTyped,\n VendorEventEventTypeToJSON,\n VendorEventModel,\n VendorEventModelFromJSON,\n VendorEventModelFromJSONTyped,\n VendorEventModelToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorEventExtended\n */\nexport interface VendorEventExtended {\n /**\n *\n * @type {string}\n * @memberof VendorEventExtended\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof VendorEventExtended\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof VendorEventExtended\n */\n description?: string | null;\n /**\n *\n * @type {VendorUser}\n * @memberof VendorEventExtended\n */\n owner?: VendorUser;\n /**\n *\n * @type {VendorEventEventType}\n * @memberof VendorEventExtended\n */\n eventType: VendorEventEventType;\n /**\n *\n * @type {string}\n * @memberof VendorEventExtended\n */\n status?: VendorEventExtendedStatusEnum;\n /**\n *\n * @type {string}\n * @memberof VendorEventExtended\n */\n date?: string;\n /**\n *\n * @type {boolean}\n * @memberof VendorEventExtended\n */\n editable?: boolean;\n /**\n *\n * @type {string}\n * @memberof VendorEventExtended\n */\n url?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorEventExtended\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof VendorEventExtended\n */\n updatedAt?: string;\n /**\n *\n * @type {Array}\n * @memberof VendorEventExtended\n */\n attachments?: Array;\n}\n\nexport function VendorEventExtendedFromJSON(json: any): VendorEventExtended {\n return VendorEventExtendedFromJSONTyped(json, false);\n}\n\nexport function VendorEventExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorEventExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n eventType: VendorEventEventTypeFromJSON(json['event_type']),\n status: !exists(json, 'status') ? undefined : json['status'],\n date: !exists(json, 'date') ? undefined : json['date'],\n editable: !exists(json, 'editable') ? undefined : json['editable'],\n url: !exists(json, 'url') ? undefined : json['url'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n attachments: !exists(json, 'attachments')\n ? undefined\n : (json['attachments'] as Array).map(SharedAttachmentModelFromJSON),\n };\n}\n\nexport function VendorEventExtendedToJSON(\n value?: VendorEventExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n description: value.description,\n owner: VendorUserToJSON(value.owner),\n event_type: VendorEventEventTypeToJSON(value.eventType),\n status: value.status,\n date: value.date,\n editable: value.editable,\n url: value.url,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n attachments:\n value.attachments === undefined\n ? undefined\n : (value.attachments as Array).map(SharedAttachmentModelToJSON),\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorEventExtendedStatusEnum {\n Pending = 'pending',\n Overdue = 'overdue',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorEventEventType,\n VendorEventEventTypeFromJSON,\n VendorEventEventTypeFromJSONTyped,\n VendorEventEventTypeToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorEventModel\n */\nexport interface VendorEventModel {\n /**\n *\n * @type {string}\n * @memberof VendorEventModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof VendorEventModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof VendorEventModel\n */\n description?: string | null;\n /**\n *\n * @type {VendorUser}\n * @memberof VendorEventModel\n */\n owner?: VendorUser;\n /**\n *\n * @type {VendorEventEventType}\n * @memberof VendorEventModel\n */\n eventType: VendorEventEventType;\n /**\n *\n * @type {string}\n * @memberof VendorEventModel\n */\n status?: VendorEventModelStatusEnum;\n /**\n *\n * @type {string}\n * @memberof VendorEventModel\n */\n date?: string;\n /**\n *\n * @type {boolean}\n * @memberof VendorEventModel\n */\n editable?: boolean;\n /**\n *\n * @type {string}\n * @memberof VendorEventModel\n */\n url?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorEventModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof VendorEventModel\n */\n updatedAt?: string;\n}\n\nexport function VendorEventModelFromJSON(json: any): VendorEventModel {\n return VendorEventModelFromJSONTyped(json, false);\n}\n\nexport function VendorEventModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorEventModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n eventType: VendorEventEventTypeFromJSON(json['event_type']),\n status: !exists(json, 'status') ? undefined : json['status'],\n date: !exists(json, 'date') ? undefined : json['date'],\n editable: !exists(json, 'editable') ? undefined : json['editable'],\n url: !exists(json, 'url') ? undefined : json['url'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function VendorEventModelToJSON(value?: VendorEventModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n description: value.description,\n owner: VendorUserToJSON(value.owner),\n event_type: VendorEventEventTypeToJSON(value.eventType),\n status: value.status,\n date: value.date,\n editable: value.editable,\n url: value.url,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorEventModelStatusEnum {\n Pending = 'pending',\n Overdue = 'overdue',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirement,\n VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirementFromJSON,\n VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirementFromJSONTyped,\n VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirementToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorFrameworkRequirementCreatePayload\n */\nexport interface VendorFrameworkRequirementCreatePayload {\n /**\n *\n * @type {VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirement}\n * @memberof VendorFrameworkRequirementCreatePayload\n */\n vendorFrameworkRequirement: VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirement;\n}\n\nexport function VendorFrameworkRequirementCreatePayloadFromJSON(\n json: any\n): VendorFrameworkRequirementCreatePayload {\n return VendorFrameworkRequirementCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function VendorFrameworkRequirementCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorFrameworkRequirementCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n vendorFrameworkRequirement:\n VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirementFromJSON(\n json['vendor_framework_requirement']\n ),\n };\n}\n\nexport function VendorFrameworkRequirementCreatePayloadToJSON(\n value?: VendorFrameworkRequirementCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n vendor_framework_requirement:\n VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirementToJSON(\n value.vendorFrameworkRequirement\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirement\n */\nexport interface VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirement {\n /**\n *\n * @type {string}\n * @memberof VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirement\n */\n frameworkRequirementId?: string;\n}\n\nexport function VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirementFromJSON(\n json: any\n): VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirement {\n return VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirementFromJSONTyped(\n json,\n false\n );\n}\n\nexport function VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirementFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirement {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n frameworkRequirementId: !exists(json, 'framework_requirement_id')\n ? undefined\n : json['framework_requirement_id'],\n };\n}\n\nexport function VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirementToJSON(\n value?: VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirement | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n framework_requirement_id: value.frameworkRequirementId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorFrameworkRequirementModel\n */\nexport interface VendorFrameworkRequirementModel {\n /**\n *\n * @type {string}\n * @memberof VendorFrameworkRequirementModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof VendorFrameworkRequirementModel\n */\n frameworkRequirementId: string;\n /**\n *\n * @type {string}\n * @memberof VendorFrameworkRequirementModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof VendorFrameworkRequirementModel\n */\n updatedAt: string;\n}\n\nexport function VendorFrameworkRequirementModelFromJSON(\n json: any\n): VendorFrameworkRequirementModel {\n return VendorFrameworkRequirementModelFromJSONTyped(json, false);\n}\n\nexport function VendorFrameworkRequirementModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorFrameworkRequirementModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n frameworkRequirementId: json['framework_requirement_id'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function VendorFrameworkRequirementModelToJSON(\n value?: VendorFrameworkRequirementModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n framework_requirement_id: value.frameworkRequirementId,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorIntegrationCreatePayloadVendorIntegration,\n VendorIntegrationCreatePayloadVendorIntegrationFromJSON,\n VendorIntegrationCreatePayloadVendorIntegrationFromJSONTyped,\n VendorIntegrationCreatePayloadVendorIntegrationToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorIntegrationCreatePayload\n */\nexport interface VendorIntegrationCreatePayload {\n /**\n *\n * @type {VendorIntegrationCreatePayloadVendorIntegration}\n * @memberof VendorIntegrationCreatePayload\n */\n vendorIntegration: VendorIntegrationCreatePayloadVendorIntegration;\n}\n\nexport function VendorIntegrationCreatePayloadFromJSON(\n json: any\n): VendorIntegrationCreatePayload {\n return VendorIntegrationCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function VendorIntegrationCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorIntegrationCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n vendorIntegration: VendorIntegrationCreatePayloadVendorIntegrationFromJSON(\n json['vendor_integration']\n ),\n };\n}\n\nexport function VendorIntegrationCreatePayloadToJSON(\n value?: VendorIntegrationCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n vendor_integration: VendorIntegrationCreatePayloadVendorIntegrationToJSON(\n value.vendorIntegration\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorIntegrationCreatePayloadVendorIntegration\n */\nexport interface VendorIntegrationCreatePayloadVendorIntegration {\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationCreatePayloadVendorIntegration\n */\n type?: VendorIntegrationCreatePayloadVendorIntegrationTypeEnum;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationCreatePayloadVendorIntegration\n */\n apiKey?: string;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationCreatePayloadVendorIntegration\n */\n apiSecret?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationCreatePayloadVendorIntegration\n */\n region?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationCreatePayloadVendorIntegration\n */\n detectorId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationCreatePayloadVendorIntegration\n */\n tenant?: string | null;\n}\n\nexport function VendorIntegrationCreatePayloadVendorIntegrationFromJSON(\n json: any\n): VendorIntegrationCreatePayloadVendorIntegration {\n return VendorIntegrationCreatePayloadVendorIntegrationFromJSONTyped(\n json,\n false\n );\n}\n\nexport function VendorIntegrationCreatePayloadVendorIntegrationFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorIntegrationCreatePayloadVendorIntegration {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n type: !exists(json, 'type') ? undefined : json['type'],\n apiKey: !exists(json, 'api_key') ? undefined : json['api_key'],\n apiSecret: !exists(json, 'api_secret') ? undefined : json['api_secret'],\n region: !exists(json, 'region') ? undefined : json['region'],\n detectorId: !exists(json, 'detector_id') ? undefined : json['detector_id'],\n tenant: !exists(json, 'tenant') ? undefined : json['tenant'],\n };\n}\n\nexport function VendorIntegrationCreatePayloadVendorIntegrationToJSON(\n value?: VendorIntegrationCreatePayloadVendorIntegration | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n type: value.type,\n api_key: value.apiKey,\n api_secret: value.apiSecret,\n region: value.region,\n detector_id: value.detectorId,\n tenant: value.tenant,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorIntegrationCreatePayloadVendorIntegrationTypeEnum {\n GitHub = 'git_hub',\n Veremark = 'veremark',\n Azure = 'azure',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorIntegrationModel,\n VendorIntegrationModelFromJSON,\n VendorIntegrationModelFromJSONTyped,\n VendorIntegrationModelToJSON,\n VendorIntegrationSetting,\n VendorIntegrationSettingFromJSON,\n VendorIntegrationSettingFromJSONTyped,\n VendorIntegrationSettingToJSON,\n VendorIntegrationSyncModel,\n VendorIntegrationSyncModelFromJSON,\n VendorIntegrationSyncModelFromJSONTyped,\n VendorIntegrationSyncModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorIntegrationExtended\n */\nexport interface VendorIntegrationExtended extends VendorIntegrationModel {}\n\nexport function VendorIntegrationExtendedFromJSON(\n json: any\n): VendorIntegrationExtended {\n return VendorIntegrationExtendedFromJSONTyped(json, false);\n}\n\nexport function VendorIntegrationExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorIntegrationExtended {\n return json;\n}\n\nexport function VendorIntegrationExtendedToJSON(\n value?: VendorIntegrationExtended | null\n): any {\n return value;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorIntegrationSetting,\n VendorIntegrationSettingFromJSON,\n VendorIntegrationSettingFromJSONTyped,\n VendorIntegrationSettingToJSON,\n VendorIntegrationSyncModel,\n VendorIntegrationSyncModelFromJSON,\n VendorIntegrationSyncModelFromJSONTyped,\n VendorIntegrationSyncModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorIntegrationModel\n */\nexport interface VendorIntegrationModel {\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationModel\n */\n id?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationModel\n */\n type?: string;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationModel\n */\n status?: VendorIntegrationModelStatusEnum;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationModel\n */\n learnMore?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationModel\n */\n learnMoreAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationModel\n */\n serviceStatus?: VendorIntegrationModelServiceStatusEnum;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationModel\n */\n serviceMessage?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationModel\n */\n authorizationMethod?: VendorIntegrationModelAuthorizationMethodEnum;\n /**\n *\n * @type {Array}\n * @memberof VendorIntegrationModel\n */\n settings?: Array;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationModel\n */\n authorizeUrl?: string | null;\n /**\n *\n * @type {Array}\n * @memberof VendorIntegrationModel\n */\n vendorIntegrationSyncs?: Array;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationModel\n */\n updatedAt?: string;\n}\n\nexport function VendorIntegrationModelFromJSON(\n json: any\n): VendorIntegrationModel {\n return VendorIntegrationModelFromJSONTyped(json, false);\n}\n\nexport function VendorIntegrationModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorIntegrationModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: json['name'],\n type: !exists(json, 'type') ? undefined : json['type'],\n status: !exists(json, 'status') ? undefined : json['status'],\n learnMore: !exists(json, 'learn_more') ? undefined : json['learn_more'],\n learnMoreAsHtml: !exists(json, 'learn_more_as_html')\n ? undefined\n : json['learn_more_as_html'],\n serviceStatus: !exists(json, 'service_status')\n ? undefined\n : json['service_status'],\n serviceMessage: !exists(json, 'service_message')\n ? undefined\n : json['service_message'],\n authorizationMethod: !exists(json, 'authorization_method')\n ? undefined\n : json['authorization_method'],\n settings: !exists(json, 'settings')\n ? undefined\n : (json['settings'] as Array).map(VendorIntegrationSettingFromJSON),\n authorizeUrl: !exists(json, 'authorize_url')\n ? undefined\n : json['authorize_url'],\n vendorIntegrationSyncs: !exists(json, 'vendor_integration_syncs')\n ? undefined\n : (json['vendor_integration_syncs'] as Array).map(\n VendorIntegrationSyncModelFromJSON\n ),\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function VendorIntegrationModelToJSON(\n value?: VendorIntegrationModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n type: value.type,\n status: value.status,\n learn_more: value.learnMore,\n learn_more_as_html: value.learnMoreAsHtml,\n service_status: value.serviceStatus,\n service_message: value.serviceMessage,\n authorization_method: value.authorizationMethod,\n settings:\n value.settings === undefined\n ? undefined\n : (value.settings as Array).map(VendorIntegrationSettingToJSON),\n authorize_url: value.authorizeUrl,\n vendor_integration_syncs:\n value.vendorIntegrationSyncs === undefined\n ? undefined\n : (value.vendorIntegrationSyncs as Array).map(\n VendorIntegrationSyncModelToJSON\n ),\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorIntegrationModelStatusEnum {\n Active = 'active',\n Inactive = 'inactive',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorIntegrationModelServiceStatusEnum {\n Ok = 'ok',\n Error = 'error',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorIntegrationModelAuthorizationMethodEnum {\n Oauth = 'oauth',\n ApiKey = 'api_key',\n ApiKeyWithSecret = 'api_key_with_secret',\n AppInstall = 'app_install',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorIntegrationSetting\n */\nexport interface VendorIntegrationSetting {\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationSetting\n */\n key: string;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationSetting\n */\n name?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationSetting\n */\n datatype?: VendorIntegrationSettingDatatypeEnum;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationSetting\n */\n value?: string | null;\n}\n\nexport function VendorIntegrationSettingFromJSON(\n json: any\n): VendorIntegrationSetting {\n return VendorIntegrationSettingFromJSONTyped(json, false);\n}\n\nexport function VendorIntegrationSettingFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorIntegrationSetting {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n key: json['key'],\n name: !exists(json, 'name') ? undefined : json['name'],\n datatype: !exists(json, 'datatype') ? undefined : json['datatype'],\n value: !exists(json, 'value') ? undefined : json['value'],\n };\n}\n\nexport function VendorIntegrationSettingToJSON(\n value?: VendorIntegrationSetting | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n key: value.key,\n name: value.name,\n datatype: value.datatype,\n value: value.value,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorIntegrationSettingDatatypeEnum {\n String = 'string',\n Password = 'password',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorIntegrationSyncCreatePayloadVendorIntegrationSync,\n VendorIntegrationSyncCreatePayloadVendorIntegrationSyncFromJSON,\n VendorIntegrationSyncCreatePayloadVendorIntegrationSyncFromJSONTyped,\n VendorIntegrationSyncCreatePayloadVendorIntegrationSyncToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorIntegrationSyncCreatePayload\n */\nexport interface VendorIntegrationSyncCreatePayload {\n /**\n *\n * @type {VendorIntegrationSyncCreatePayloadVendorIntegrationSync}\n * @memberof VendorIntegrationSyncCreatePayload\n */\n vendorIntegrationSync: VendorIntegrationSyncCreatePayloadVendorIntegrationSync;\n}\n\nexport function VendorIntegrationSyncCreatePayloadFromJSON(\n json: any\n): VendorIntegrationSyncCreatePayload {\n return VendorIntegrationSyncCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function VendorIntegrationSyncCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorIntegrationSyncCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n vendorIntegrationSync:\n VendorIntegrationSyncCreatePayloadVendorIntegrationSyncFromJSON(\n json['vendor_integration_sync']\n ),\n };\n}\n\nexport function VendorIntegrationSyncCreatePayloadToJSON(\n value?: VendorIntegrationSyncCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n vendor_integration_sync:\n VendorIntegrationSyncCreatePayloadVendorIntegrationSyncToJSON(\n value.vendorIntegrationSync\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorIntegrationSyncCreatePayloadVendorIntegrationSync\n */\nexport interface VendorIntegrationSyncCreatePayloadVendorIntegrationSync {\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationSyncCreatePayloadVendorIntegrationSync\n */\n direction?: VendorIntegrationSyncCreatePayloadVendorIntegrationSyncDirectionEnum;\n /**\n *\n * @type {boolean}\n * @memberof VendorIntegrationSyncCreatePayloadVendorIntegrationSync\n */\n daily?: boolean;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationSyncCreatePayloadVendorIntegrationSync\n */\n subtype?: string;\n}\n\nexport function VendorIntegrationSyncCreatePayloadVendorIntegrationSyncFromJSON(\n json: any\n): VendorIntegrationSyncCreatePayloadVendorIntegrationSync {\n return VendorIntegrationSyncCreatePayloadVendorIntegrationSyncFromJSONTyped(\n json,\n false\n );\n}\n\nexport function VendorIntegrationSyncCreatePayloadVendorIntegrationSyncFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorIntegrationSyncCreatePayloadVendorIntegrationSync {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n direction: !exists(json, 'direction') ? undefined : json['direction'],\n daily: !exists(json, 'daily') ? undefined : json['daily'],\n subtype: !exists(json, 'subtype') ? undefined : json['subtype'],\n };\n}\n\nexport function VendorIntegrationSyncCreatePayloadVendorIntegrationSyncToJSON(\n value?: VendorIntegrationSyncCreatePayloadVendorIntegrationSync | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n direction: value.direction,\n daily: value.daily,\n subtype: value.subtype,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorIntegrationSyncCreatePayloadVendorIntegrationSyncDirectionEnum {\n Incoming = 'incoming',\n Outgoing = 'outgoing',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ErrorResponseErrors,\n ErrorResponseErrorsFromJSON,\n ErrorResponseErrorsFromJSONTyped,\n ErrorResponseErrorsToJSON,\n VendorIntegrationSyncModel,\n VendorIntegrationSyncModelFromJSON,\n VendorIntegrationSyncModelFromJSONTyped,\n VendorIntegrationSyncModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorIntegrationSyncExtended\n */\nexport interface VendorIntegrationSyncExtended\n extends VendorIntegrationSyncModel {}\n\nexport function VendorIntegrationSyncExtendedFromJSON(\n json: any\n): VendorIntegrationSyncExtended {\n return VendorIntegrationSyncExtendedFromJSONTyped(json, false);\n}\n\nexport function VendorIntegrationSyncExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorIntegrationSyncExtended {\n return json;\n}\n\nexport function VendorIntegrationSyncExtendedToJSON(\n value?: VendorIntegrationSyncExtended | null\n): any {\n return value;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ErrorResponseErrors,\n ErrorResponseErrorsFromJSON,\n ErrorResponseErrorsFromJSONTyped,\n ErrorResponseErrorsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorIntegrationSyncModel\n */\nexport interface VendorIntegrationSyncModel {\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationSyncModel\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationSyncModel\n */\n direction: VendorIntegrationSyncModelDirectionEnum;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationSyncModel\n */\n subtype: string;\n /**\n *\n * @type {boolean}\n * @memberof VendorIntegrationSyncModel\n */\n daily: boolean;\n /**\n *\n * @type {ErrorResponseErrors}\n * @memberof VendorIntegrationSyncModel\n */\n payload?: ErrorResponseErrors;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationSyncModel\n */\n state: VendorIntegrationSyncModelStateEnum;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationSyncModel\n */\n lastSyncedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationSyncModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationSyncModel\n */\n updatedAt?: string;\n}\n\nexport function VendorIntegrationSyncModelFromJSON(\n json: any\n): VendorIntegrationSyncModel {\n return VendorIntegrationSyncModelFromJSONTyped(json, false);\n}\n\nexport function VendorIntegrationSyncModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorIntegrationSyncModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n direction: json['direction'],\n subtype: json['subtype'],\n daily: json['daily'],\n payload: !exists(json, 'payload')\n ? undefined\n : ErrorResponseErrorsFromJSON(json['payload']),\n state: json['state'],\n lastSyncedAt: !exists(json, 'last_synced_at')\n ? undefined\n : json['last_synced_at'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function VendorIntegrationSyncModelToJSON(\n value?: VendorIntegrationSyncModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n direction: value.direction,\n subtype: value.subtype,\n daily: value.daily,\n payload: ErrorResponseErrorsToJSON(value.payload),\n state: value.state,\n last_synced_at: value.lastSyncedAt,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorIntegrationSyncModelDirectionEnum {\n Incoming = 'incoming',\n Outgoing = 'outgoing',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorIntegrationSyncModelStateEnum {\n Idle = 'idle',\n InProgress = 'in_progress',\n Failed = 'failed',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorIntegrationUpdatePayloadVendorIntegration,\n VendorIntegrationUpdatePayloadVendorIntegrationFromJSON,\n VendorIntegrationUpdatePayloadVendorIntegrationFromJSONTyped,\n VendorIntegrationUpdatePayloadVendorIntegrationToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorIntegrationUpdatePayload\n */\nexport interface VendorIntegrationUpdatePayload {\n /**\n *\n * @type {VendorIntegrationUpdatePayloadVendorIntegration}\n * @memberof VendorIntegrationUpdatePayload\n */\n vendorIntegration: VendorIntegrationUpdatePayloadVendorIntegration;\n}\n\nexport function VendorIntegrationUpdatePayloadFromJSON(\n json: any\n): VendorIntegrationUpdatePayload {\n return VendorIntegrationUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function VendorIntegrationUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorIntegrationUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n vendorIntegration: VendorIntegrationUpdatePayloadVendorIntegrationFromJSON(\n json['vendor_integration']\n ),\n };\n}\n\nexport function VendorIntegrationUpdatePayloadToJSON(\n value?: VendorIntegrationUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n vendor_integration: VendorIntegrationUpdatePayloadVendorIntegrationToJSON(\n value.vendorIntegration\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorIntegrationUpdatePayloadVendorIntegration\n */\nexport interface VendorIntegrationUpdatePayloadVendorIntegration {\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationUpdatePayloadVendorIntegration\n */\n apiKey?: string;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationUpdatePayloadVendorIntegration\n */\n apiSecret?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationUpdatePayloadVendorIntegration\n */\n region?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationUpdatePayloadVendorIntegration\n */\n detectorId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorIntegrationUpdatePayloadVendorIntegration\n */\n tenant?: string | null;\n}\n\nexport function VendorIntegrationUpdatePayloadVendorIntegrationFromJSON(\n json: any\n): VendorIntegrationUpdatePayloadVendorIntegration {\n return VendorIntegrationUpdatePayloadVendorIntegrationFromJSONTyped(\n json,\n false\n );\n}\n\nexport function VendorIntegrationUpdatePayloadVendorIntegrationFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorIntegrationUpdatePayloadVendorIntegration {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n apiKey: !exists(json, 'api_key') ? undefined : json['api_key'],\n apiSecret: !exists(json, 'api_secret') ? undefined : json['api_secret'],\n region: !exists(json, 'region') ? undefined : json['region'],\n detectorId: !exists(json, 'detector_id') ? undefined : json['detector_id'],\n tenant: !exists(json, 'tenant') ? undefined : json['tenant'],\n };\n}\n\nexport function VendorIntegrationUpdatePayloadVendorIntegrationToJSON(\n value?: VendorIntegrationUpdatePayloadVendorIntegration | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n api_key: value.apiKey,\n api_secret: value.apiSecret,\n region: value.region,\n detector_id: value.detectorId,\n tenant: value.tenant,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n FrameworkRelation,\n FrameworkRelationFromJSON,\n FrameworkRelationFromJSONTyped,\n FrameworkRelationToJSON,\n ReviewFrequencyEnum,\n ReviewFrequencyEnumFromJSON,\n ReviewFrequencyEnumFromJSONTyped,\n ReviewFrequencyEnumToJSON,\n VendorPolicyAnswer,\n VendorPolicyAnswerFromJSON,\n VendorPolicyAnswerFromJSONTyped,\n VendorPolicyAnswerToJSON,\n VendorPolicyClause,\n VendorPolicyClauseFromJSON,\n VendorPolicyClauseFromJSONTyped,\n VendorPolicyClauseToJSON,\n VendorPolicyType,\n VendorPolicyTypeFromJSON,\n VendorPolicyTypeFromJSONTyped,\n VendorPolicyTypeToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorPolicy\n */\nexport interface VendorPolicy {\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n id?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n relativePath?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n policyId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n vendorId?: string;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n name?: string;\n /**\n *\n * @type {VendorPolicyType}\n * @memberof VendorPolicy\n */\n type?: VendorPolicyType | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n categoryName?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n summary?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n summaryAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n descriptionAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n source?: string;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n status?: VendorPolicyStatusEnum;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n version?: string;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n versionBump?: VendorPolicyVersionBumpEnum;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n changeReason?: string;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n document?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n vendorDocumentId?: string | null;\n /**\n *\n * @type {Array}\n * @memberof VendorPolicy\n */\n vendorPolicyClauses?: Array;\n /**\n *\n * @type {Array}\n * @memberof VendorPolicy\n */\n vendorPolicyAnswers?: Array;\n /**\n *\n * @type {number}\n * @memberof VendorPolicy\n */\n progress?: number | null;\n /**\n *\n * @type {Access}\n * @memberof VendorPolicy\n */\n access?: Access;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n accessGroupId?: string | null;\n /**\n *\n * @type {VendorUser}\n * @memberof VendorPolicy\n */\n owner?: VendorUser;\n /**\n *\n * @type {boolean}\n * @memberof VendorPolicy\n */\n available?: boolean;\n /**\n *\n * @type {ReviewFrequencyEnum}\n * @memberof VendorPolicy\n */\n reviewFrequency?: ReviewFrequencyEnum;\n /**\n *\n * @type {Array}\n * @memberof VendorPolicy\n */\n frameworksRelations?: Array;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n createdAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n updatedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicy\n */\n updatedBy?: string | null;\n}\n\nexport function VendorPolicyFromJSON(json: any): VendorPolicy {\n return VendorPolicyFromJSONTyped(json, false);\n}\n\nexport function VendorPolicyFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorPolicy {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n relativePath: !exists(json, 'relative_path')\n ? undefined\n : json['relative_path'],\n policyId: !exists(json, 'policy_id') ? undefined : json['policy_id'],\n vendorId: !exists(json, 'vendor_id') ? undefined : json['vendor_id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n type: !exists(json, 'type')\n ? undefined\n : VendorPolicyTypeFromJSON(json['type']),\n categoryName: !exists(json, 'category_name')\n ? undefined\n : json['category_name'],\n summary: !exists(json, 'summary') ? undefined : json['summary'],\n summaryAsHtml: !exists(json, 'summary_as_html')\n ? undefined\n : json['summary_as_html'],\n description: !exists(json, 'description') ? undefined : json['description'],\n descriptionAsHtml: !exists(json, 'description_as_html')\n ? undefined\n : json['description_as_html'],\n source: !exists(json, 'source') ? undefined : json['source'],\n status: !exists(json, 'status') ? undefined : json['status'],\n version: !exists(json, 'version') ? undefined : json['version'],\n versionBump: !exists(json, 'version_bump')\n ? undefined\n : json['version_bump'],\n changeReason: !exists(json, 'change_reason')\n ? undefined\n : json['change_reason'],\n document: !exists(json, 'document') ? undefined : json['document'],\n vendorDocumentId: !exists(json, 'vendor_document_id')\n ? undefined\n : json['vendor_document_id'],\n vendorPolicyClauses: !exists(json, 'vendor_policy_clauses')\n ? undefined\n : (json['vendor_policy_clauses'] as Array).map(\n VendorPolicyClauseFromJSON\n ),\n vendorPolicyAnswers: !exists(json, 'vendor_policy_answers')\n ? undefined\n : (json['vendor_policy_answers'] as Array).map(\n VendorPolicyAnswerFromJSON\n ),\n progress: !exists(json, 'progress') ? undefined : json['progress'],\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n accessGroupId: !exists(json, 'access_group_id')\n ? undefined\n : json['access_group_id'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n available: !exists(json, 'available') ? undefined : json['available'],\n reviewFrequency: !exists(json, 'review_frequency')\n ? undefined\n : ReviewFrequencyEnumFromJSON(json['review_frequency']),\n frameworksRelations: !exists(json, 'frameworks_relations')\n ? undefined\n : (json['frameworks_relations'] as Array).map(\n FrameworkRelationFromJSON\n ),\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n updatedBy: !exists(json, 'updated_by') ? undefined : json['updated_by'],\n };\n}\n\nexport function VendorPolicyToJSON(value?: VendorPolicy | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n relative_path: value.relativePath,\n policy_id: value.policyId,\n vendor_id: value.vendorId,\n name: value.name,\n type: VendorPolicyTypeToJSON(value.type),\n category_name: value.categoryName,\n summary: value.summary,\n summary_as_html: value.summaryAsHtml,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n source: value.source,\n status: value.status,\n version: value.version,\n version_bump: value.versionBump,\n change_reason: value.changeReason,\n document: value.document,\n vendor_document_id: value.vendorDocumentId,\n vendor_policy_clauses:\n value.vendorPolicyClauses === undefined\n ? undefined\n : (value.vendorPolicyClauses as Array).map(\n VendorPolicyClauseToJSON\n ),\n vendor_policy_answers:\n value.vendorPolicyAnswers === undefined\n ? undefined\n : (value.vendorPolicyAnswers as Array).map(\n VendorPolicyAnswerToJSON\n ),\n progress: value.progress,\n access: AccessToJSON(value.access),\n access_group_id: value.accessGroupId,\n owner: VendorUserToJSON(value.owner),\n available: value.available,\n review_frequency: ReviewFrequencyEnumToJSON(value.reviewFrequency),\n frameworks_relations:\n value.frameworksRelations === undefined\n ? undefined\n : (value.frameworksRelations as Array).map(\n FrameworkRelationToJSON\n ),\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n updated_by: value.updatedBy,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorPolicyStatusEnum {\n Available = 'available',\n Completed = 'completed',\n InProgress = 'in_progress',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorPolicyVersionBumpEnum {\n Minor = 'minor',\n Major = 'major',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorPolicyAnswerClosestQuestion,\n VendorPolicyAnswerClosestQuestionFromJSON,\n VendorPolicyAnswerClosestQuestionFromJSONTyped,\n VendorPolicyAnswerClosestQuestionToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorPolicyAnswer\n */\nexport interface VendorPolicyAnswer {\n /**\n *\n * @type {string}\n * @memberof VendorPolicyAnswer\n */\n propertyName?: string;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyAnswer\n */\n updatedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyAnswer\n */\n updatedBy?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyAnswer\n */\n value?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyAnswer\n */\n displayValue?: string | null;\n /**\n *\n * @type {VendorPolicyAnswerClosestQuestion}\n * @memberof VendorPolicyAnswer\n */\n closestQuestion?: VendorPolicyAnswerClosestQuestion;\n /**\n *\n * @type {number}\n * @memberof VendorPolicyAnswer\n */\n index?: number | null;\n}\n\nexport function VendorPolicyAnswerFromJSON(json: any): VendorPolicyAnswer {\n return VendorPolicyAnswerFromJSONTyped(json, false);\n}\n\nexport function VendorPolicyAnswerFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorPolicyAnswer {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n propertyName: !exists(json, 'property_name')\n ? undefined\n : json['property_name'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n updatedBy: !exists(json, 'updated_by') ? undefined : json['updated_by'],\n value: !exists(json, 'value') ? undefined : json['value'],\n displayValue: !exists(json, 'display_value')\n ? undefined\n : json['display_value'],\n closestQuestion: !exists(json, 'closest_question')\n ? undefined\n : VendorPolicyAnswerClosestQuestionFromJSON(json['closest_question']),\n index: !exists(json, 'index') ? undefined : json['index'],\n };\n}\n\nexport function VendorPolicyAnswerToJSON(\n value?: VendorPolicyAnswer | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n property_name: value.propertyName,\n updated_at: value.updatedAt,\n updated_by: value.updatedBy,\n value: value.value,\n display_value: value.displayValue,\n closest_question: VendorPolicyAnswerClosestQuestionToJSON(\n value.closestQuestion\n ),\n index: value.index,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorPolicyAnswerClosestQuestion\n */\nexport interface VendorPolicyAnswerClosestQuestion {\n /**\n *\n * @type {string}\n * @memberof VendorPolicyAnswerClosestQuestion\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyAnswerClosestQuestion\n */\n layout?: string;\n}\n\nexport function VendorPolicyAnswerClosestQuestionFromJSON(\n json: any\n): VendorPolicyAnswerClosestQuestion {\n return VendorPolicyAnswerClosestQuestionFromJSONTyped(json, false);\n}\n\nexport function VendorPolicyAnswerClosestQuestionFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorPolicyAnswerClosestQuestion {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n layout: !exists(json, 'layout') ? undefined : json['layout'],\n };\n}\n\nexport function VendorPolicyAnswerClosestQuestionToJSON(\n value?: VendorPolicyAnswerClosestQuestion | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n layout: value.layout,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Question,\n QuestionFromJSON,\n QuestionFromJSONTyped,\n QuestionToJSON,\n VendorPolicyDetails,\n VendorPolicyDetailsFromJSON,\n VendorPolicyDetailsFromJSONTyped,\n VendorPolicyDetailsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorPolicyClause\n */\nexport interface VendorPolicyClause {\n /**\n *\n * @type {string}\n * @memberof VendorPolicyClause\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyClause\n */\n vendorPolicyId?: string;\n /**\n *\n * @type {VendorPolicyDetails}\n * @memberof VendorPolicyClause\n */\n vendorPolicy?: VendorPolicyDetails;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyClause\n */\n policyClauseId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyClause\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyClause\n */\n clauseText?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof VendorPolicyClause\n */\n clauseTextIsCustom?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorPolicyClause\n */\n leaveOut?: boolean;\n /**\n *\n * @type {Array}\n * @memberof VendorPolicyClause\n */\n questions?: Array;\n /**\n *\n * @type {boolean}\n * @memberof VendorPolicyClause\n */\n allowCustomText?: boolean;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyClause\n */\n createdAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyClause\n */\n updatedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyClause\n */\n updatedBy?: string | null;\n}\n\nexport function VendorPolicyClauseFromJSON(json: any): VendorPolicyClause {\n return VendorPolicyClauseFromJSONTyped(json, false);\n}\n\nexport function VendorPolicyClauseFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorPolicyClause {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n vendorPolicyId: !exists(json, 'vendor_policy_id')\n ? undefined\n : json['vendor_policy_id'],\n vendorPolicy: !exists(json, 'vendor_policy')\n ? undefined\n : VendorPolicyDetailsFromJSON(json['vendor_policy']),\n policyClauseId: !exists(json, 'policy_clause_id')\n ? undefined\n : json['policy_clause_id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n clauseText: !exists(json, 'clause_text') ? undefined : json['clause_text'],\n clauseTextIsCustom: !exists(json, 'clause_text_is_custom')\n ? undefined\n : json['clause_text_is_custom'],\n leaveOut: !exists(json, 'leave_out') ? undefined : json['leave_out'],\n questions: !exists(json, 'questions')\n ? undefined\n : (json['questions'] as Array).map(QuestionFromJSON),\n allowCustomText: !exists(json, 'allow_custom_text')\n ? undefined\n : json['allow_custom_text'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n updatedBy: !exists(json, 'updated_by') ? undefined : json['updated_by'],\n };\n}\n\nexport function VendorPolicyClauseToJSON(\n value?: VendorPolicyClause | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n vendor_policy_id: value.vendorPolicyId,\n vendor_policy: VendorPolicyDetailsToJSON(value.vendorPolicy),\n policy_clause_id: value.policyClauseId,\n name: value.name,\n clause_text: value.clauseText,\n clause_text_is_custom: value.clauseTextIsCustom,\n leave_out: value.leaveOut,\n questions:\n value.questions === undefined\n ? undefined\n : (value.questions as Array).map(QuestionToJSON),\n allow_custom_text: value.allowCustomText,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n updated_by: value.updatedBy,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n FrameworkRelation,\n FrameworkRelationFromJSON,\n FrameworkRelationFromJSONTyped,\n FrameworkRelationToJSON,\n ReviewFrequencyEnum,\n ReviewFrequencyEnumFromJSON,\n ReviewFrequencyEnumFromJSONTyped,\n ReviewFrequencyEnumToJSON,\n VendorPolicyAnswer,\n VendorPolicyAnswerFromJSON,\n VendorPolicyAnswerFromJSONTyped,\n VendorPolicyAnswerToJSON,\n VendorPolicyClause,\n VendorPolicyClauseFromJSON,\n VendorPolicyClauseFromJSONTyped,\n VendorPolicyClauseToJSON,\n VendorPolicyType,\n VendorPolicyTypeFromJSON,\n VendorPolicyTypeFromJSONTyped,\n VendorPolicyTypeToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorPolicyDetails\n */\nexport interface VendorPolicyDetails {\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n id?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n relativePath?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n policyId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n vendorId?: string;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n name?: string;\n /**\n *\n * @type {VendorPolicyType}\n * @memberof VendorPolicyDetails\n */\n type?: VendorPolicyType | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n categoryName?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n summary?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n summaryAsHtml?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n descriptionAsHtml?: string | null;\n /**\n *\n * @type {number}\n * @memberof VendorPolicyDetails\n */\n answered?: number;\n /**\n *\n * @type {number}\n * @memberof VendorPolicyDetails\n */\n unanswered?: number;\n /**\n *\n * @type {number}\n * @memberof VendorPolicyDetails\n */\n progress?: number | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n source?: string;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n status?: VendorPolicyDetailsStatusEnum;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n version?: string;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n versionBump?: VendorPolicyDetailsVersionBumpEnum;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n changeReason?: string;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n document?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n vendorDocumentId?: string | null;\n /**\n *\n * @type {Array}\n * @memberof VendorPolicyDetails\n */\n vendorPolicyClauses?: Array;\n /**\n *\n * @type {Array}\n * @memberof VendorPolicyDetails\n */\n vendorPolicyAnswers?: Array;\n /**\n *\n * @type {Access}\n * @memberof VendorPolicyDetails\n */\n access?: Access;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n accessGroupId?: string | null;\n /**\n *\n * @type {VendorUser}\n * @memberof VendorPolicyDetails\n */\n owner?: VendorUser;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n ownerId?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof VendorPolicyDetails\n */\n available?: boolean;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n reviewDate?: string | null;\n /**\n *\n * @type {ReviewFrequencyEnum}\n * @memberof VendorPolicyDetails\n */\n reviewFrequency?: ReviewFrequencyEnum;\n /**\n *\n * @type {Array}\n * @memberof VendorPolicyDetails\n */\n frameworksRelations?: Array;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n createdAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n updatedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyDetails\n */\n updatedBy?: string | null;\n}\n\nexport function VendorPolicyDetailsFromJSON(json: any): VendorPolicyDetails {\n return VendorPolicyDetailsFromJSONTyped(json, false);\n}\n\nexport function VendorPolicyDetailsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorPolicyDetails {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n relativePath: !exists(json, 'relative_path')\n ? undefined\n : json['relative_path'],\n policyId: !exists(json, 'policy_id') ? undefined : json['policy_id'],\n vendorId: !exists(json, 'vendor_id') ? undefined : json['vendor_id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n type: !exists(json, 'type')\n ? undefined\n : VendorPolicyTypeFromJSON(json['type']),\n categoryName: !exists(json, 'category_name')\n ? undefined\n : json['category_name'],\n summary: !exists(json, 'summary') ? undefined : json['summary'],\n summaryAsHtml: !exists(json, 'summary_as_html')\n ? undefined\n : json['summary_as_html'],\n description: !exists(json, 'description') ? undefined : json['description'],\n descriptionAsHtml: !exists(json, 'description_as_html')\n ? undefined\n : json['description_as_html'],\n answered: !exists(json, 'answered') ? undefined : json['answered'],\n unanswered: !exists(json, 'unanswered') ? undefined : json['unanswered'],\n progress: !exists(json, 'progress') ? undefined : json['progress'],\n source: !exists(json, 'source') ? undefined : json['source'],\n status: !exists(json, 'status') ? undefined : json['status'],\n version: !exists(json, 'version') ? undefined : json['version'],\n versionBump: !exists(json, 'version_bump')\n ? undefined\n : json['version_bump'],\n changeReason: !exists(json, 'change_reason')\n ? undefined\n : json['change_reason'],\n document: !exists(json, 'document') ? undefined : json['document'],\n vendorDocumentId: !exists(json, 'vendor_document_id')\n ? undefined\n : json['vendor_document_id'],\n vendorPolicyClauses: !exists(json, 'vendor_policy_clauses')\n ? undefined\n : (json['vendor_policy_clauses'] as Array).map(\n VendorPolicyClauseFromJSON\n ),\n vendorPolicyAnswers: !exists(json, 'vendor_policy_answers')\n ? undefined\n : (json['vendor_policy_answers'] as Array).map(\n VendorPolicyAnswerFromJSON\n ),\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n accessGroupId: !exists(json, 'access_group_id')\n ? undefined\n : json['access_group_id'],\n owner: !exists(json, 'owner')\n ? undefined\n : VendorUserFromJSON(json['owner']),\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n available: !exists(json, 'available') ? undefined : json['available'],\n reviewDate: !exists(json, 'review_date') ? undefined : json['review_date'],\n reviewFrequency: !exists(json, 'review_frequency')\n ? undefined\n : ReviewFrequencyEnumFromJSON(json['review_frequency']),\n frameworksRelations: !exists(json, 'frameworks_relations')\n ? undefined\n : (json['frameworks_relations'] as Array).map(\n FrameworkRelationFromJSON\n ),\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n updatedBy: !exists(json, 'updated_by') ? undefined : json['updated_by'],\n };\n}\n\nexport function VendorPolicyDetailsToJSON(\n value?: VendorPolicyDetails | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n relative_path: value.relativePath,\n policy_id: value.policyId,\n vendor_id: value.vendorId,\n name: value.name,\n type: VendorPolicyTypeToJSON(value.type),\n category_name: value.categoryName,\n summary: value.summary,\n summary_as_html: value.summaryAsHtml,\n description: value.description,\n description_as_html: value.descriptionAsHtml,\n answered: value.answered,\n unanswered: value.unanswered,\n progress: value.progress,\n source: value.source,\n status: value.status,\n version: value.version,\n version_bump: value.versionBump,\n change_reason: value.changeReason,\n document: value.document,\n vendor_document_id: value.vendorDocumentId,\n vendor_policy_clauses:\n value.vendorPolicyClauses === undefined\n ? undefined\n : (value.vendorPolicyClauses as Array).map(\n VendorPolicyClauseToJSON\n ),\n vendor_policy_answers:\n value.vendorPolicyAnswers === undefined\n ? undefined\n : (value.vendorPolicyAnswers as Array).map(\n VendorPolicyAnswerToJSON\n ),\n access: AccessToJSON(value.access),\n access_group_id: value.accessGroupId,\n owner: VendorUserToJSON(value.owner),\n owner_id: value.ownerId,\n available: value.available,\n review_date: value.reviewDate,\n review_frequency: ReviewFrequencyEnumToJSON(value.reviewFrequency),\n frameworks_relations:\n value.frameworksRelations === undefined\n ? undefined\n : (value.frameworksRelations as Array).map(\n FrameworkRelationToJSON\n ),\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n updated_by: value.updatedBy,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorPolicyDetailsStatusEnum {\n Available = 'available',\n Completed = 'completed',\n InProgress = 'in_progress',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorPolicyDetailsVersionBumpEnum {\n Minor = 'minor',\n Major = 'major',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorPolicyProgress\n */\nexport interface VendorPolicyProgress {\n /**\n *\n * @type {number}\n * @memberof VendorPolicyProgress\n */\n progress?: number;\n}\n\nexport function VendorPolicyProgressFromJSON(json: any): VendorPolicyProgress {\n return VendorPolicyProgressFromJSONTyped(json, false);\n}\n\nexport function VendorPolicyProgressFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorPolicyProgress {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n progress: !exists(json, 'progress') ? undefined : json['progress'],\n };\n}\n\nexport function VendorPolicyProgressToJSON(\n value?: VendorPolicyProgress | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n progress: value.progress,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorPolicyPublish\n */\nexport interface VendorPolicyPublish {\n /**\n *\n * @type {string}\n * @memberof VendorPolicyPublish\n */\n id?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyPublish\n */\n versionBump?: VendorPolicyPublishVersionBumpEnum;\n /**\n *\n * @type {string}\n * @memberof VendorPolicyPublish\n */\n changeReason?: string;\n}\n\nexport function VendorPolicyPublishFromJSON(json: any): VendorPolicyPublish {\n return VendorPolicyPublishFromJSONTyped(json, false);\n}\n\nexport function VendorPolicyPublishFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorPolicyPublish {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n versionBump: !exists(json, 'version_bump')\n ? undefined\n : json['version_bump'],\n changeReason: !exists(json, 'change_reason')\n ? undefined\n : json['change_reason'],\n };\n}\n\nexport function VendorPolicyPublishToJSON(\n value?: VendorPolicyPublish | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n version_bump: value.versionBump,\n change_reason: value.changeReason,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorPolicyPublishVersionBumpEnum {\n Minor = 'minor',\n Major = 'major',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum VendorPolicyType {\n Generic = 'VendorPolicy::Generic',\n Uploaded = 'VendorPolicy::Uploaded',\n}\n\nexport function VendorPolicyTypeFromJSON(json: any): VendorPolicyType {\n return VendorPolicyTypeFromJSONTyped(json, false);\n}\n\nexport function VendorPolicyTypeFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorPolicyType {\n return json as VendorPolicyType;\n}\n\nexport function VendorPolicyTypeToJSON(value?: VendorPolicyType | null): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorProductIndexFeatures,\n VendorProductIndexFeaturesFromJSON,\n VendorProductIndexFeaturesFromJSONTyped,\n VendorProductIndexFeaturesToJSON,\n VendorProductModel,\n VendorProductModelFromJSON,\n VendorProductModelFromJSONTyped,\n VendorProductModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorProductIndex\n */\nexport interface VendorProductIndex {\n /**\n *\n * @type {Array}\n * @memberof VendorProductIndex\n */\n policies?: Array;\n /**\n *\n * @type {Array}\n * @memberof VendorProductIndex\n */\n agreementTemplates?: Array;\n /**\n *\n * @type {VendorProductIndexFeatures}\n * @memberof VendorProductIndex\n */\n features?: VendorProductIndexFeatures;\n}\n\nexport function VendorProductIndexFromJSON(json: any): VendorProductIndex {\n return VendorProductIndexFromJSONTyped(json, false);\n}\n\nexport function VendorProductIndexFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorProductIndex {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n policies: !exists(json, 'policies')\n ? undefined\n : (json['policies'] as Array).map(VendorProductModelFromJSON),\n agreementTemplates: !exists(json, 'agreement_templates')\n ? undefined\n : (json['agreement_templates'] as Array).map(\n VendorProductModelFromJSON\n ),\n features: !exists(json, 'features')\n ? undefined\n : VendorProductIndexFeaturesFromJSON(json['features']),\n };\n}\n\nexport function VendorProductIndexToJSON(\n value?: VendorProductIndex | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n policies:\n value.policies === undefined\n ? undefined\n : (value.policies as Array).map(VendorProductModelToJSON),\n agreement_templates:\n value.agreementTemplates === undefined\n ? undefined\n : (value.agreementTemplates as Array).map(\n VendorProductModelToJSON\n ),\n features: VendorProductIndexFeaturesToJSON(value.features),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorProductIndexFeatures\n */\nexport interface VendorProductIndexFeatures {\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n policies?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n agreements?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n vendorRegister?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n legalRegister?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n pestel?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n audits?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n assessments?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n checklists?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n complianceFrameworks?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n controls?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n tasks?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n dataRoom?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n riskRegister?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n calendar?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n people?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n escrow?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n profile?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n companyDocuments?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n reports?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n integrations?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductIndexFeatures\n */\n dashboard?: boolean;\n}\n\nexport function VendorProductIndexFeaturesFromJSON(\n json: any\n): VendorProductIndexFeatures {\n return VendorProductIndexFeaturesFromJSONTyped(json, false);\n}\n\nexport function VendorProductIndexFeaturesFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorProductIndexFeatures {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n policies: !exists(json, 'policies') ? undefined : json['policies'],\n agreements: !exists(json, 'agreements') ? undefined : json['agreements'],\n vendorRegister: !exists(json, 'vendor_register')\n ? undefined\n : json['vendor_register'],\n legalRegister: !exists(json, 'legal_register')\n ? undefined\n : json['legal_register'],\n pestel: !exists(json, 'pestel') ? undefined : json['pestel'],\n audits: !exists(json, 'audits') ? undefined : json['audits'],\n assessments: !exists(json, 'assessments') ? undefined : json['assessments'],\n checklists: !exists(json, 'checklists') ? undefined : json['checklists'],\n complianceFrameworks: !exists(json, 'compliance_frameworks')\n ? undefined\n : json['compliance_frameworks'],\n controls: !exists(json, 'controls') ? undefined : json['controls'],\n tasks: !exists(json, 'tasks') ? undefined : json['tasks'],\n dataRoom: !exists(json, 'data_room') ? undefined : json['data_room'],\n riskRegister: !exists(json, 'risk_register')\n ? undefined\n : json['risk_register'],\n calendar: !exists(json, 'calendar') ? undefined : json['calendar'],\n people: !exists(json, 'people') ? undefined : json['people'],\n escrow: !exists(json, 'escrow') ? undefined : json['escrow'],\n profile: !exists(json, 'profile') ? undefined : json['profile'],\n companyDocuments: !exists(json, 'company_documents')\n ? undefined\n : json['company_documents'],\n reports: !exists(json, 'reports') ? undefined : json['reports'],\n integrations: !exists(json, 'integrations')\n ? undefined\n : json['integrations'],\n dashboard: !exists(json, 'dashboard') ? undefined : json['dashboard'],\n };\n}\n\nexport function VendorProductIndexFeaturesToJSON(\n value?: VendorProductIndexFeatures | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n policies: value.policies,\n agreements: value.agreements,\n vendor_register: value.vendorRegister,\n legal_register: value.legalRegister,\n pestel: value.pestel,\n audits: value.audits,\n assessments: value.assessments,\n checklists: value.checklists,\n compliance_frameworks: value.complianceFrameworks,\n controls: value.controls,\n tasks: value.tasks,\n data_room: value.dataRoom,\n risk_register: value.riskRegister,\n calendar: value.calendar,\n people: value.people,\n escrow: value.escrow,\n profile: value.profile,\n company_documents: value.companyDocuments,\n reports: value.reports,\n integrations: value.integrations,\n dashboard: value.dashboard,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n PaymentPlan,\n PaymentPlanFromJSON,\n PaymentPlanFromJSONTyped,\n PaymentPlanToJSON,\n Product,\n ProductFromJSON,\n ProductFromJSONTyped,\n ProductToJSON,\n RecurringProduct,\n RecurringProductFromJSON,\n RecurringProductFromJSONTyped,\n RecurringProductToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorProductModel\n */\nexport interface VendorProductModel {\n /**\n *\n * @type {string}\n * @memberof VendorProductModel\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof VendorProductModel\n */\n identifier?: string;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductModel\n */\n available?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductModel\n */\n response?: boolean;\n /**\n *\n * @type {string}\n * @memberof VendorProductModel\n */\n errorCode?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorProductModel\n */\n errorText?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorProductModel\n */\n policyId?: string;\n /**\n *\n * @type {string}\n * @memberof VendorProductModel\n */\n purchasableId?: string;\n /**\n *\n * @type {string}\n * @memberof VendorProductModel\n */\n purchasableType?: string;\n /**\n *\n * @type {PaymentPlan}\n * @memberof VendorProductModel\n */\n minimumPlan?: PaymentPlan;\n /**\n *\n * @type {boolean}\n * @memberof VendorProductModel\n */\n paymentProductAvailable?: boolean;\n /**\n *\n * @type {RecurringProduct}\n * @memberof VendorProductModel\n */\n paymentProduct?: RecurringProduct;\n /**\n *\n * @type {Product}\n * @memberof VendorProductModel\n */\n singlePurchase?: Product;\n}\n\nexport function VendorProductModelFromJSON(json: any): VendorProductModel {\n return VendorProductModelFromJSONTyped(json, false);\n}\n\nexport function VendorProductModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorProductModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n identifier: !exists(json, 'identifier') ? undefined : json['identifier'],\n available: !exists(json, 'available') ? undefined : json['available'],\n response: !exists(json, 'response') ? undefined : json['response'],\n errorCode: !exists(json, 'error_code') ? undefined : json['error_code'],\n errorText: !exists(json, 'error_text') ? undefined : json['error_text'],\n policyId: !exists(json, 'policy_id') ? undefined : json['policy_id'],\n purchasableId: !exists(json, 'purchasable_id')\n ? undefined\n : json['purchasable_id'],\n purchasableType: !exists(json, 'purchasable_type')\n ? undefined\n : json['purchasable_type'],\n minimumPlan: !exists(json, 'minimum_plan')\n ? undefined\n : PaymentPlanFromJSON(json['minimum_plan']),\n paymentProductAvailable: !exists(json, 'payment_product_available')\n ? undefined\n : json['payment_product_available'],\n paymentProduct: !exists(json, 'payment_product')\n ? undefined\n : RecurringProductFromJSON(json['payment_product']),\n singlePurchase: !exists(json, 'single_purchase')\n ? undefined\n : ProductFromJSON(json['single_purchase']),\n };\n}\n\nexport function VendorProductModelToJSON(\n value?: VendorProductModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n identifier: value.identifier,\n available: value.available,\n response: value.response,\n error_code: value.errorCode,\n error_text: value.errorText,\n policy_id: value.policyId,\n purchasable_id: value.purchasableId,\n purchasable_type: value.purchasableType,\n minimum_plan: PaymentPlanToJSON(value.minimumPlan),\n payment_product_available: value.paymentProductAvailable,\n payment_product: RecurringProductToJSON(value.paymentProduct),\n single_purchase: ProductToJSON(value.singlePurchase),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum VendorSupplierAccessControl {\n Sso = 'sso',\n _2fa = '2fa',\n Password = 'password',\n NotApplicable = 'not_applicable',\n}\n\nexport function VendorSupplierAccessControlFromJSON(\n json: any\n): VendorSupplierAccessControl {\n return VendorSupplierAccessControlFromJSONTyped(json, false);\n}\n\nexport function VendorSupplierAccessControlFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorSupplierAccessControl {\n return json as VendorSupplierAccessControl;\n}\n\nexport function VendorSupplierAccessControlToJSON(\n value?: VendorSupplierAccessControl | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorSupplierCategory\n */\nexport interface VendorSupplierCategory {\n /**\n *\n * @type {string}\n * @memberof VendorSupplierCategory\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierCategory\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierCategory\n */\n identifier: string;\n}\n\nexport function VendorSupplierCategoryFromJSON(\n json: any\n): VendorSupplierCategory {\n return VendorSupplierCategoryFromJSONTyped(json, false);\n}\n\nexport function VendorSupplierCategoryFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorSupplierCategory {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n identifier: json['identifier'],\n };\n}\n\nexport function VendorSupplierCategoryToJSON(\n value?: VendorSupplierCategory | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n identifier: value.identifier,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedTaskRecurring,\n SharedTaskRecurringFromJSON,\n SharedTaskRecurringFromJSONTyped,\n SharedTaskRecurringToJSON,\n VendorSupplierAccessControl,\n VendorSupplierAccessControlFromJSON,\n VendorSupplierAccessControlFromJSONTyped,\n VendorSupplierAccessControlToJSON,\n VendorSupplierExtendedAllOf,\n VendorSupplierExtendedAllOfFromJSON,\n VendorSupplierExtendedAllOfFromJSONTyped,\n VendorSupplierExtendedAllOfToJSON,\n VendorSupplierModel,\n VendorSupplierModelFromJSON,\n VendorSupplierModelFromJSONTyped,\n VendorSupplierModelToJSON,\n VendorSupplierStatus,\n VendorSupplierStatusFromJSON,\n VendorSupplierStatusFromJSONTyped,\n VendorSupplierStatusToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorSupplierExtended\n */\nexport interface VendorSupplierExtended extends VendorSupplierModel {\n /**\n *\n * @type {string}\n * @memberof VendorSupplierExtended\n */\n vendorSupplierCategoryId: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierExtended\n */\n contractRenewalDate?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierExtended\n */\n contractId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierExtended\n */\n contractDescription?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierExtended\n */\n contactEmail?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierExtended\n */\n contactName?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierExtended\n */\n contactPhone?: string | null;\n /**\n *\n * @type {Array}\n * @memberof VendorSupplierExtended\n */\n certifications?: Array | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierExtended\n */\n criticalDependencies?: string | null;\n}\n\nexport function VendorSupplierExtendedFromJSON(\n json: any\n): VendorSupplierExtended {\n return VendorSupplierExtendedFromJSONTyped(json, false);\n}\n\nexport function VendorSupplierExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorSupplierExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...VendorSupplierModelFromJSONTyped(json, ignoreDiscriminator),\n vendorSupplierCategoryId: json['vendor_supplier_category_id'],\n contractRenewalDate: !exists(json, 'contract_renewal_date')\n ? undefined\n : json['contract_renewal_date'],\n contractId: !exists(json, 'contract_id') ? undefined : json['contract_id'],\n contractDescription: !exists(json, 'contract_description')\n ? undefined\n : json['contract_description'],\n contactEmail: !exists(json, 'contact_email')\n ? undefined\n : json['contact_email'],\n contactName: !exists(json, 'contact_name')\n ? undefined\n : json['contact_name'],\n contactPhone: !exists(json, 'contact_phone')\n ? undefined\n : json['contact_phone'],\n certifications: !exists(json, 'certifications')\n ? undefined\n : json['certifications'],\n criticalDependencies: !exists(json, 'critical_dependencies')\n ? undefined\n : json['critical_dependencies'],\n };\n}\n\nexport function VendorSupplierExtendedToJSON(\n value?: VendorSupplierExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...VendorSupplierModelToJSON(value),\n vendor_supplier_category_id: value.vendorSupplierCategoryId,\n contract_renewal_date: value.contractRenewalDate,\n contract_id: value.contractId,\n contract_description: value.contractDescription,\n contact_email: value.contactEmail,\n contact_name: value.contactName,\n contact_phone: value.contactPhone,\n certifications: value.certifications,\n critical_dependencies: value.criticalDependencies,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedTaskRecurring,\n SharedTaskRecurringFromJSON,\n SharedTaskRecurringFromJSONTyped,\n SharedTaskRecurringToJSON,\n VendorSupplierAccessControl,\n VendorSupplierAccessControlFromJSON,\n VendorSupplierAccessControlFromJSONTyped,\n VendorSupplierAccessControlToJSON,\n VendorSupplierStatus,\n VendorSupplierStatusFromJSON,\n VendorSupplierStatusFromJSONTyped,\n VendorSupplierStatusToJSON,\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorSupplierModel\n */\nexport interface VendorSupplierModel {\n /**\n *\n * @type {string}\n * @memberof VendorSupplierModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierModel\n */\n name: string;\n /**\n *\n * @type {VendorSupplierStatus}\n * @memberof VendorSupplierModel\n */\n status: VendorSupplierStatus;\n /**\n *\n * @type {VendorUser}\n * @memberof VendorSupplierModel\n */\n owner: VendorUser;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierModel\n */\n reviewDate: string | null;\n /**\n *\n * @type {SharedTaskRecurring}\n * @memberof VendorSupplierModel\n */\n contractRecurring: SharedTaskRecurring;\n /**\n *\n * @type {number}\n * @memberof VendorSupplierModel\n */\n riskProfile: number;\n /**\n *\n * @type {VendorSupplierAccessControl}\n * @memberof VendorSupplierModel\n */\n accessControl: VendorSupplierAccessControl;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierModel\n */\n continuityPlan?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierModel\n */\n updatedAt: string;\n}\n\nexport function VendorSupplierModelFromJSON(json: any): VendorSupplierModel {\n return VendorSupplierModelFromJSONTyped(json, false);\n}\n\nexport function VendorSupplierModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorSupplierModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n status: VendorSupplierStatusFromJSON(json['status']),\n owner: VendorUserFromJSON(json['owner']),\n reviewDate: json['review_date'],\n contractRecurring: SharedTaskRecurringFromJSON(json['contract_recurring']),\n riskProfile: json['risk_profile'],\n accessControl: VendorSupplierAccessControlFromJSON(json['access_control']),\n continuityPlan: !exists(json, 'continuity_plan')\n ? undefined\n : json['continuity_plan'],\n createdAt: json['created_at'],\n updatedAt: json['updated_at'],\n };\n}\n\nexport function VendorSupplierModelToJSON(\n value?: VendorSupplierModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n status: VendorSupplierStatusToJSON(value.status),\n owner: VendorUserToJSON(value.owner),\n review_date: value.reviewDate,\n contract_recurring: SharedTaskRecurringToJSON(value.contractRecurring),\n risk_profile: value.riskProfile,\n access_control: VendorSupplierAccessControlToJSON(value.accessControl),\n continuity_plan: value.continuityPlan,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedTaskRecurring,\n SharedTaskRecurringFromJSON,\n SharedTaskRecurringFromJSONTyped,\n SharedTaskRecurringToJSON,\n VendorSupplierAccessControl,\n VendorSupplierAccessControlFromJSON,\n VendorSupplierAccessControlFromJSONTyped,\n VendorSupplierAccessControlToJSON,\n VendorSupplierStatus,\n VendorSupplierStatusFromJSON,\n VendorSupplierStatusFromJSONTyped,\n VendorSupplierStatusToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorSupplierPayload\n */\nexport interface VendorSupplierPayload {\n /**\n *\n * @type {string}\n * @memberof VendorSupplierPayload\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierPayload\n */\n ownerId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierPayload\n */\n reviewDate?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierPayload\n */\n vendorSupplierCategoryId: string;\n /**\n *\n * @type {VendorSupplierStatus}\n * @memberof VendorSupplierPayload\n */\n status?: VendorSupplierStatus;\n /**\n *\n * @type {SharedTaskRecurring}\n * @memberof VendorSupplierPayload\n */\n contractRecurring?: SharedTaskRecurring;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierPayload\n */\n contractRenewalDate?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierPayload\n */\n contractId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierPayload\n */\n contractDescription?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierPayload\n */\n contactEmail?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierPayload\n */\n contactName?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierPayload\n */\n contactPhone?: string | null;\n /**\n *\n * @type {number}\n * @memberof VendorSupplierPayload\n */\n riskProfile?: number;\n /**\n *\n * @type {VendorSupplierAccessControl}\n * @memberof VendorSupplierPayload\n */\n accessControl?: VendorSupplierAccessControl;\n /**\n *\n * @type {Array}\n * @memberof VendorSupplierPayload\n */\n certifications?: Array | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierPayload\n */\n criticalDependencies?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorSupplierPayload\n */\n continuityPlan?: string | null;\n}\n\nexport function VendorSupplierPayloadFromJSON(\n json: any\n): VendorSupplierPayload {\n return VendorSupplierPayloadFromJSONTyped(json, false);\n}\n\nexport function VendorSupplierPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorSupplierPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: json['name'],\n ownerId: !exists(json, 'owner_id') ? undefined : json['owner_id'],\n reviewDate: !exists(json, 'review_date') ? undefined : json['review_date'],\n vendorSupplierCategoryId: json['vendor_supplier_category_id'],\n status: !exists(json, 'status')\n ? undefined\n : VendorSupplierStatusFromJSON(json['status']),\n contractRecurring: !exists(json, 'contract_recurring')\n ? undefined\n : SharedTaskRecurringFromJSON(json['contract_recurring']),\n contractRenewalDate: !exists(json, 'contract_renewal_date')\n ? undefined\n : json['contract_renewal_date'],\n contractId: !exists(json, 'contract_id') ? undefined : json['contract_id'],\n contractDescription: !exists(json, 'contract_description')\n ? undefined\n : json['contract_description'],\n contactEmail: !exists(json, 'contact_email')\n ? undefined\n : json['contact_email'],\n contactName: !exists(json, 'contact_name')\n ? undefined\n : json['contact_name'],\n contactPhone: !exists(json, 'contact_phone')\n ? undefined\n : json['contact_phone'],\n riskProfile: !exists(json, 'risk_profile')\n ? undefined\n : json['risk_profile'],\n accessControl: !exists(json, 'access_control')\n ? undefined\n : VendorSupplierAccessControlFromJSON(json['access_control']),\n certifications: !exists(json, 'certifications')\n ? undefined\n : json['certifications'],\n criticalDependencies: !exists(json, 'critical_dependencies')\n ? undefined\n : json['critical_dependencies'],\n continuityPlan: !exists(json, 'continuity_plan')\n ? undefined\n : json['continuity_plan'],\n };\n}\n\nexport function VendorSupplierPayloadToJSON(\n value?: VendorSupplierPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n owner_id: value.ownerId,\n review_date: value.reviewDate,\n vendor_supplier_category_id: value.vendorSupplierCategoryId,\n status: VendorSupplierStatusToJSON(value.status),\n contract_recurring: SharedTaskRecurringToJSON(value.contractRecurring),\n contract_renewal_date: value.contractRenewalDate,\n contract_id: value.contractId,\n contract_description: value.contractDescription,\n contact_email: value.contactEmail,\n contact_name: value.contactName,\n contact_phone: value.contactPhone,\n risk_profile: value.riskProfile,\n access_control: VendorSupplierAccessControlToJSON(value.accessControl),\n certifications: value.certifications,\n critical_dependencies: value.criticalDependencies,\n continuity_plan: value.continuityPlan,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum VendorSupplierStatus {\n Active = 'active',\n Inactive = 'inactive',\n}\n\nexport function VendorSupplierStatusFromJSON(json: any): VendorSupplierStatus {\n return VendorSupplierStatusFromJSONTyped(json, false);\n}\n\nexport function VendorSupplierStatusFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorSupplierStatus {\n return json as VendorSupplierStatus;\n}\n\nexport function VendorSupplierStatusToJSON(\n value?: VendorSupplierStatus | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorUser,\n VendorUserFromJSON,\n VendorUserFromJSONTyped,\n VendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorTeamModel\n */\nexport interface VendorTeamModel {\n /**\n *\n * @type {string}\n * @memberof VendorTeamModel\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof VendorTeamModel\n */\n vendorId?: string;\n /**\n *\n * @type {string}\n * @memberof VendorTeamModel\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof VendorTeamModel\n */\n description?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorTeamModel\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof VendorTeamModel\n */\n updatedAt?: string;\n /**\n *\n * @type {Array}\n * @memberof VendorTeamModel\n */\n vendorUsers?: Array;\n}\n\nexport function VendorTeamModelFromJSON(json: any): VendorTeamModel {\n return VendorTeamModelFromJSONTyped(json, false);\n}\n\nexport function VendorTeamModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorTeamModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n vendorId: !exists(json, 'vendor_id') ? undefined : json['vendor_id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n vendorUsers: !exists(json, 'vendor_users')\n ? undefined\n : (json['vendor_users'] as Array).map(VendorUserFromJSON),\n };\n}\n\nexport function VendorTeamModelToJSON(value?: VendorTeamModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n vendor_id: value.vendorId,\n name: value.name,\n description: value.description,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n vendor_users:\n value.vendorUsers === undefined\n ? undefined\n : (value.vendorUsers as Array).map(VendorUserToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorTeamUpsertPayloadVendorTeams,\n VendorTeamUpsertPayloadVendorTeamsFromJSON,\n VendorTeamUpsertPayloadVendorTeamsFromJSONTyped,\n VendorTeamUpsertPayloadVendorTeamsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorTeamUpsertPayload\n */\nexport interface VendorTeamUpsertPayload {\n /**\n *\n * @type {Array}\n * @memberof VendorTeamUpsertPayload\n */\n vendorTeams?: Array;\n}\n\nexport function VendorTeamUpsertPayloadFromJSON(\n json: any\n): VendorTeamUpsertPayload {\n return VendorTeamUpsertPayloadFromJSONTyped(json, false);\n}\n\nexport function VendorTeamUpsertPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorTeamUpsertPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n vendorTeams: !exists(json, 'vendor_teams')\n ? undefined\n : (json['vendor_teams'] as Array).map(\n VendorTeamUpsertPayloadVendorTeamsFromJSON\n ),\n };\n}\n\nexport function VendorTeamUpsertPayloadToJSON(\n value?: VendorTeamUpsertPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n vendor_teams:\n value.vendorTeams === undefined\n ? undefined\n : (value.vendorTeams as Array).map(\n VendorTeamUpsertPayloadVendorTeamsToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorTeamUpsertPayloadVendorTeams\n */\nexport interface VendorTeamUpsertPayloadVendorTeams {\n /**\n *\n * @type {string}\n * @memberof VendorTeamUpsertPayloadVendorTeams\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof VendorTeamUpsertPayloadVendorTeams\n */\n name: string;\n}\n\nexport function VendorTeamUpsertPayloadVendorTeamsFromJSON(\n json: any\n): VendorTeamUpsertPayloadVendorTeams {\n return VendorTeamUpsertPayloadVendorTeamsFromJSONTyped(json, false);\n}\n\nexport function VendorTeamUpsertPayloadVendorTeamsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorTeamUpsertPayloadVendorTeams {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n name: json['name'],\n };\n}\n\nexport function VendorTeamUpsertPayloadVendorTeamsToJSON(\n value?: VendorTeamUpsertPayloadVendorTeams | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorTreeNodeModel\n */\nexport interface VendorTreeNodeModel {\n /**\n *\n * @type {string}\n * @memberof VendorTreeNodeModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof VendorTreeNodeModel\n */\n name: string;\n /**\n *\n * @type {Array}\n * @memberof VendorTreeNodeModel\n */\n children: Array;\n}\n\nexport function VendorTreeNodeModelFromJSON(json: any): VendorTreeNodeModel {\n return VendorTreeNodeModelFromJSONTyped(json, false);\n}\n\nexport function VendorTreeNodeModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorTreeNodeModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n children: (json['children'] as Array).map(VendorTreeNodeModelFromJSON),\n };\n}\n\nexport function VendorTreeNodeModelToJSON(\n value?: VendorTreeNodeModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n children: (value.children as Array).map(VendorTreeNodeModelToJSON),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n Access,\n AccessFromJSON,\n AccessFromJSONTyped,\n AccessToJSON,\n SharedEmploymentStatus,\n SharedEmploymentStatusFromJSON,\n SharedEmploymentStatusFromJSONTyped,\n SharedEmploymentStatusToJSON,\n SharedUserType,\n SharedUserTypeFromJSON,\n SharedUserTypeFromJSONTyped,\n SharedUserTypeToJSON,\n SharedVendorUserStatus,\n SharedVendorUserStatusFromJSON,\n SharedVendorUserStatusFromJSONTyped,\n SharedVendorUserStatusToJSON,\n VendorTeamModel,\n VendorTeamModelFromJSON,\n VendorTeamModelFromJSONTyped,\n VendorTeamModelToJSON,\n VendorUserComplianceStats,\n VendorUserComplianceStatsFromJSON,\n VendorUserComplianceStatsFromJSONTyped,\n VendorUserComplianceStatsToJSON,\n VendorUserExternalIdentifier,\n VendorUserExternalIdentifierFromJSON,\n VendorUserExternalIdentifierFromJSONTyped,\n VendorUserExternalIdentifierToJSON,\n VendorUserRoles,\n VendorUserRolesFromJSON,\n VendorUserRolesFromJSONTyped,\n VendorUserRolesToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorUser\n */\nexport interface VendorUser {\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n vendorId?: string;\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n userId?: string;\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n email?: string;\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n firstName?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n lastName?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n fullName?: string | null;\n /**\n *\n * @type {SharedVendorUserStatus}\n * @memberof VendorUser\n */\n status?: SharedVendorUserStatus | null;\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n position?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n accessLevel?: string | null;\n /**\n *\n * @type {Access}\n * @memberof VendorUser\n */\n access?: Access;\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n accessGroupId?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n lastInvitedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n createdAt?: string;\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n updatedAt?: string;\n /**\n *\n * @type {Array}\n * @memberof VendorUser\n */\n roles?: Array;\n /**\n *\n * @type {Array}\n * @memberof VendorUser\n */\n externalIdentifiers?: Array;\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n employmentStartedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorUser\n */\n employmentEndedAt?: string | null;\n /**\n *\n * @type {SharedUserType}\n * @memberof VendorUser\n */\n userType?: SharedUserType | null;\n /**\n *\n * @type {SharedEmploymentStatus}\n * @memberof VendorUser\n */\n employmentStatus?: SharedEmploymentStatus | null;\n /**\n *\n * @type {VendorUser}\n * @memberof VendorUser\n */\n lineManager?: VendorUser;\n /**\n *\n * @type {Array}\n * @memberof VendorUser\n */\n vendorTeams?: Array;\n /**\n *\n * @type {VendorUserComplianceStats}\n * @memberof VendorUser\n */\n complianceStats?: VendorUserComplianceStats;\n}\n\nexport function VendorUserFromJSON(json: any): VendorUser {\n return VendorUserFromJSONTyped(json, false);\n}\n\nexport function VendorUserFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorUser {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n vendorId: !exists(json, 'vendor_id') ? undefined : json['vendor_id'],\n userId: !exists(json, 'user_id') ? undefined : json['user_id'],\n email: !exists(json, 'email') ? undefined : json['email'],\n firstName: !exists(json, 'first_name') ? undefined : json['first_name'],\n lastName: !exists(json, 'last_name') ? undefined : json['last_name'],\n fullName: !exists(json, 'full_name') ? undefined : json['full_name'],\n status: !exists(json, 'status')\n ? undefined\n : SharedVendorUserStatusFromJSON(json['status']),\n position: !exists(json, 'position') ? undefined : json['position'],\n accessLevel: !exists(json, 'access_level')\n ? undefined\n : json['access_level'],\n access: !exists(json, 'access')\n ? undefined\n : AccessFromJSON(json['access']),\n accessGroupId: !exists(json, 'access_group_id')\n ? undefined\n : json['access_group_id'],\n lastInvitedAt: !exists(json, 'last_invited_at')\n ? undefined\n : json['last_invited_at'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n roles: !exists(json, 'roles')\n ? undefined\n : (json['roles'] as Array).map(VendorUserRolesFromJSON),\n externalIdentifiers: !exists(json, 'external_identifiers')\n ? undefined\n : (json['external_identifiers'] as Array).map(\n VendorUserExternalIdentifierFromJSON\n ),\n employmentStartedAt: !exists(json, 'employment_started_at')\n ? undefined\n : json['employment_started_at'],\n employmentEndedAt: !exists(json, 'employment_ended_at')\n ? undefined\n : json['employment_ended_at'],\n userType: !exists(json, 'user_type')\n ? undefined\n : SharedUserTypeFromJSON(json['user_type']),\n employmentStatus: !exists(json, 'employment_status')\n ? undefined\n : SharedEmploymentStatusFromJSON(json['employment_status']),\n lineManager: !exists(json, 'line_manager')\n ? undefined\n : VendorUserFromJSON(json['line_manager']),\n vendorTeams: !exists(json, 'vendor_teams')\n ? undefined\n : (json['vendor_teams'] as Array).map(VendorTeamModelFromJSON),\n complianceStats: !exists(json, 'compliance_stats')\n ? undefined\n : VendorUserComplianceStatsFromJSON(json['compliance_stats']),\n };\n}\n\nexport function VendorUserToJSON(value?: VendorUser | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n vendor_id: value.vendorId,\n user_id: value.userId,\n email: value.email,\n first_name: value.firstName,\n last_name: value.lastName,\n full_name: value.fullName,\n status: SharedVendorUserStatusToJSON(value.status),\n position: value.position,\n access_level: value.accessLevel,\n access: AccessToJSON(value.access),\n access_group_id: value.accessGroupId,\n last_invited_at: value.lastInvitedAt,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n roles:\n value.roles === undefined\n ? undefined\n : (value.roles as Array).map(VendorUserRolesToJSON),\n external_identifiers:\n value.externalIdentifiers === undefined\n ? undefined\n : (value.externalIdentifiers as Array).map(\n VendorUserExternalIdentifierToJSON\n ),\n employment_started_at: value.employmentStartedAt,\n employment_ended_at: value.employmentEndedAt,\n user_type: SharedUserTypeToJSON(value.userType),\n employment_status: SharedEmploymentStatusToJSON(value.employmentStatus),\n line_manager: VendorUserToJSON(value.lineManager),\n vendor_teams:\n value.vendorTeams === undefined\n ? undefined\n : (value.vendorTeams as Array).map(VendorTeamModelToJSON),\n compliance_stats: VendorUserComplianceStatsToJSON(value.complianceStats),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorUserComplianceStats\n */\nexport interface VendorUserComplianceStats {\n /**\n *\n * @type {boolean}\n * @memberof VendorUserComplianceStats\n */\n overall?: boolean;\n /**\n *\n * @type {boolean}\n * @memberof VendorUserComplianceStats\n */\n policies?: boolean;\n}\n\nexport function VendorUserComplianceStatsFromJSON(\n json: any\n): VendorUserComplianceStats {\n return VendorUserComplianceStatsFromJSONTyped(json, false);\n}\n\nexport function VendorUserComplianceStatsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorUserComplianceStats {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n overall: !exists(json, 'overall') ? undefined : json['overall'],\n policies: !exists(json, 'policies') ? undefined : json['policies'],\n };\n}\n\nexport function VendorUserComplianceStatsToJSON(\n value?: VendorUserComplianceStats | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n overall: value.overall,\n policies: value.policies,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorUserCreatePayloadVendorUsers,\n VendorUserCreatePayloadVendorUsersFromJSON,\n VendorUserCreatePayloadVendorUsersFromJSONTyped,\n VendorUserCreatePayloadVendorUsersToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorUserCreatePayload\n */\nexport interface VendorUserCreatePayload {\n /**\n *\n * @type {Array}\n * @memberof VendorUserCreatePayload\n */\n vendorUsers: Array;\n}\n\nexport function VendorUserCreatePayloadFromJSON(\n json: any\n): VendorUserCreatePayload {\n return VendorUserCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function VendorUserCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorUserCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n vendorUsers: (json['vendor_users'] as Array).map(\n VendorUserCreatePayloadVendorUsersFromJSON\n ),\n };\n}\n\nexport function VendorUserCreatePayloadToJSON(\n value?: VendorUserCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n vendor_users: (value.vendorUsers as Array).map(\n VendorUserCreatePayloadVendorUsersToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedEmploymentStatus,\n SharedEmploymentStatusFromJSON,\n SharedEmploymentStatusFromJSONTyped,\n SharedEmploymentStatusToJSON,\n SharedUserType,\n SharedUserTypeFromJSON,\n SharedUserTypeFromJSONTyped,\n SharedUserTypeToJSON,\n VendorUserExternalIdentifier,\n VendorUserExternalIdentifierFromJSON,\n VendorUserExternalIdentifierFromJSONTyped,\n VendorUserExternalIdentifierToJSON,\n VendorUserRoles,\n VendorUserRolesFromJSON,\n VendorUserRolesFromJSONTyped,\n VendorUserRolesToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorUserCreatePayloadVendorUsers\n */\nexport interface VendorUserCreatePayloadVendorUsers {\n /**\n *\n * @type {string}\n * @memberof VendorUserCreatePayloadVendorUsers\n */\n email: string;\n /**\n *\n * @type {string}\n * @memberof VendorUserCreatePayloadVendorUsers\n */\n firstName?: string;\n /**\n *\n * @type {string}\n * @memberof VendorUserCreatePayloadVendorUsers\n */\n lastName?: string;\n /**\n *\n * @type {string}\n * @memberof VendorUserCreatePayloadVendorUsers\n */\n position?: string;\n /**\n *\n * @type {Array}\n * @memberof VendorUserCreatePayloadVendorUsers\n */\n roles?: Array;\n /**\n *\n * @type {SharedUserType}\n * @memberof VendorUserCreatePayloadVendorUsers\n */\n userType?: SharedUserType | null;\n /**\n *\n * @type {Array}\n * @memberof VendorUserCreatePayloadVendorUsers\n */\n externalIdentifiers?: Array;\n /**\n *\n * @type {string}\n * @memberof VendorUserCreatePayloadVendorUsers\n */\n employmentStartedAt?: string;\n /**\n *\n * @type {SharedEmploymentStatus}\n * @memberof VendorUserCreatePayloadVendorUsers\n */\n employmentStatus?: SharedEmploymentStatus | null;\n /**\n *\n * @type {string}\n * @memberof VendorUserCreatePayloadVendorUsers\n */\n employmentEndedAt?: string;\n /**\n *\n * @type {string}\n * @memberof VendorUserCreatePayloadVendorUsers\n */\n lineManagerId?: string;\n /**\n *\n * @type {Array}\n * @memberof VendorUserCreatePayloadVendorUsers\n */\n vendorTeamsIds?: Array;\n}\n\nexport function VendorUserCreatePayloadVendorUsersFromJSON(\n json: any\n): VendorUserCreatePayloadVendorUsers {\n return VendorUserCreatePayloadVendorUsersFromJSONTyped(json, false);\n}\n\nexport function VendorUserCreatePayloadVendorUsersFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorUserCreatePayloadVendorUsers {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n email: json['email'],\n firstName: !exists(json, 'first_name') ? undefined : json['first_name'],\n lastName: !exists(json, 'last_name') ? undefined : json['last_name'],\n position: !exists(json, 'position') ? undefined : json['position'],\n roles: !exists(json, 'roles')\n ? undefined\n : (json['roles'] as Array).map(VendorUserRolesFromJSON),\n userType: !exists(json, 'user_type')\n ? undefined\n : SharedUserTypeFromJSON(json['user_type']),\n externalIdentifiers: !exists(json, 'external_identifiers')\n ? undefined\n : (json['external_identifiers'] as Array).map(\n VendorUserExternalIdentifierFromJSON\n ),\n employmentStartedAt: !exists(json, 'employment_started_at')\n ? undefined\n : json['employment_started_at'],\n employmentStatus: !exists(json, 'employment_status')\n ? undefined\n : SharedEmploymentStatusFromJSON(json['employment_status']),\n employmentEndedAt: !exists(json, 'employment_ended_at')\n ? undefined\n : json['employment_ended_at'],\n lineManagerId: !exists(json, 'line_manager_id')\n ? undefined\n : json['line_manager_id'],\n vendorTeamsIds: !exists(json, 'vendor_teams_ids')\n ? undefined\n : json['vendor_teams_ids'],\n };\n}\n\nexport function VendorUserCreatePayloadVendorUsersToJSON(\n value?: VendorUserCreatePayloadVendorUsers | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n email: value.email,\n first_name: value.firstName,\n last_name: value.lastName,\n position: value.position,\n roles:\n value.roles === undefined\n ? undefined\n : (value.roles as Array).map(VendorUserRolesToJSON),\n user_type: SharedUserTypeToJSON(value.userType),\n external_identifiers:\n value.externalIdentifiers === undefined\n ? undefined\n : (value.externalIdentifiers as Array).map(\n VendorUserExternalIdentifierToJSON\n ),\n employment_started_at: value.employmentStartedAt,\n employment_status: SharedEmploymentStatusToJSON(value.employmentStatus),\n employment_ended_at: value.employmentEndedAt,\n line_manager_id: value.lineManagerId,\n vendor_teams_ids: value.vendorTeamsIds,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorUserExternalIdentifier\n */\nexport interface VendorUserExternalIdentifier {\n /**\n *\n * @type {string}\n * @memberof VendorUserExternalIdentifier\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof VendorUserExternalIdentifier\n */\n value?: string;\n}\n\nexport function VendorUserExternalIdentifierFromJSON(\n json: any\n): VendorUserExternalIdentifier {\n return VendorUserExternalIdentifierFromJSONTyped(json, false);\n}\n\nexport function VendorUserExternalIdentifierFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorUserExternalIdentifier {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n value: !exists(json, 'value') ? undefined : json['value'],\n };\n}\n\nexport function VendorUserExternalIdentifierToJSON(\n value?: VendorUserExternalIdentifier | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n value: value.value,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum VendorUserRoles {\n Employee = 'employee',\n AssessmentManager = 'assessment_manager',\n PolicyEditor = 'policy_editor',\n Signatory = 'signatory',\n Admin = 'admin',\n Auditor = 'auditor',\n SecurityManager = 'security_manager',\n SecurityEditor = 'security_editor',\n ExternalConsultant = 'external_consultant',\n TrusthubAdmin = 'trusthub_admin',\n}\n\nexport function VendorUserRolesFromJSON(json: any): VendorUserRoles {\n return VendorUserRolesFromJSONTyped(json, false);\n}\n\nexport function VendorUserRolesFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorUserRoles {\n return json as VendorUserRoles;\n}\n\nexport function VendorUserRolesToJSON(value?: VendorUserRoles | null): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum VendorUserStatus {\n Invited = 'invited',\n Active = 'active',\n Deleted = 'deleted',\n}\n\nexport function VendorUserStatusFromJSON(json: any): VendorUserStatus {\n return VendorUserStatusFromJSONTyped(json, false);\n}\n\nexport function VendorUserStatusFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorUserStatus {\n return json as VendorUserStatus;\n}\n\nexport function VendorUserStatusToJSON(value?: VendorUserStatus | null): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n VendorUserUpdatePayloadVendorUser,\n VendorUserUpdatePayloadVendorUserFromJSON,\n VendorUserUpdatePayloadVendorUserFromJSONTyped,\n VendorUserUpdatePayloadVendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorUserUpdatePayload\n */\nexport interface VendorUserUpdatePayload {\n /**\n *\n * @type {VendorUserUpdatePayloadVendorUser}\n * @memberof VendorUserUpdatePayload\n */\n vendorUser: VendorUserUpdatePayloadVendorUser;\n}\n\nexport function VendorUserUpdatePayloadFromJSON(\n json: any\n): VendorUserUpdatePayload {\n return VendorUserUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function VendorUserUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorUserUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n vendorUser: VendorUserUpdatePayloadVendorUserFromJSON(json['vendor_user']),\n };\n}\n\nexport function VendorUserUpdatePayloadToJSON(\n value?: VendorUserUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n vendor_user: VendorUserUpdatePayloadVendorUserToJSON(value.vendorUser),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedEmploymentStatus,\n SharedEmploymentStatusFromJSON,\n SharedEmploymentStatusFromJSONTyped,\n SharedEmploymentStatusToJSON,\n SharedUserType,\n SharedUserTypeFromJSON,\n SharedUserTypeFromJSONTyped,\n SharedUserTypeToJSON,\n VendorUserExternalIdentifier,\n VendorUserExternalIdentifierFromJSON,\n VendorUserExternalIdentifierFromJSONTyped,\n VendorUserExternalIdentifierToJSON,\n VendorUserRoles,\n VendorUserRolesFromJSON,\n VendorUserRolesFromJSONTyped,\n VendorUserRolesToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorUserUpdatePayloadVendorUser\n */\nexport interface VendorUserUpdatePayloadVendorUser {\n /**\n *\n * @type {string}\n * @memberof VendorUserUpdatePayloadVendorUser\n */\n firstName?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorUserUpdatePayloadVendorUser\n */\n lastName?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorUserUpdatePayloadVendorUser\n */\n position?: string | null;\n /**\n *\n * @type {Array}\n * @memberof VendorUserUpdatePayloadVendorUser\n */\n roles?: Array;\n /**\n *\n * @type {SharedUserType}\n * @memberof VendorUserUpdatePayloadVendorUser\n */\n userType?: SharedUserType | null;\n /**\n *\n * @type {Array}\n * @memberof VendorUserUpdatePayloadVendorUser\n */\n externalIdentifiers?: Array;\n /**\n *\n * @type {string}\n * @memberof VendorUserUpdatePayloadVendorUser\n */\n employmentStartedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof VendorUserUpdatePayloadVendorUser\n */\n employmentEndedAt?: string | null;\n /**\n *\n * @type {SharedEmploymentStatus}\n * @memberof VendorUserUpdatePayloadVendorUser\n */\n employmentStatus?: SharedEmploymentStatus | null;\n /**\n *\n * @type {string}\n * @memberof VendorUserUpdatePayloadVendorUser\n */\n lineManagerId?: string | null;\n /**\n *\n * @type {Array}\n * @memberof VendorUserUpdatePayloadVendorUser\n */\n vendorTeamsIds?: Array;\n}\n\nexport function VendorUserUpdatePayloadVendorUserFromJSON(\n json: any\n): VendorUserUpdatePayloadVendorUser {\n return VendorUserUpdatePayloadVendorUserFromJSONTyped(json, false);\n}\n\nexport function VendorUserUpdatePayloadVendorUserFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorUserUpdatePayloadVendorUser {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n firstName: !exists(json, 'first_name') ? undefined : json['first_name'],\n lastName: !exists(json, 'last_name') ? undefined : json['last_name'],\n position: !exists(json, 'position') ? undefined : json['position'],\n roles: !exists(json, 'roles')\n ? undefined\n : (json['roles'] as Array).map(VendorUserRolesFromJSON),\n userType: !exists(json, 'user_type')\n ? undefined\n : SharedUserTypeFromJSON(json['user_type']),\n externalIdentifiers: !exists(json, 'external_identifiers')\n ? undefined\n : (json['external_identifiers'] as Array).map(\n VendorUserExternalIdentifierFromJSON\n ),\n employmentStartedAt: !exists(json, 'employment_started_at')\n ? undefined\n : json['employment_started_at'],\n employmentEndedAt: !exists(json, 'employment_ended_at')\n ? undefined\n : json['employment_ended_at'],\n employmentStatus: !exists(json, 'employment_status')\n ? undefined\n : SharedEmploymentStatusFromJSON(json['employment_status']),\n lineManagerId: !exists(json, 'line_manager_id')\n ? undefined\n : json['line_manager_id'],\n vendorTeamsIds: !exists(json, 'vendor_teams_ids')\n ? undefined\n : json['vendor_teams_ids'],\n };\n}\n\nexport function VendorUserUpdatePayloadVendorUserToJSON(\n value?: VendorUserUpdatePayloadVendorUser | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n first_name: value.firstName,\n last_name: value.lastName,\n position: value.position,\n roles:\n value.roles === undefined\n ? undefined\n : (value.roles as Array).map(VendorUserRolesToJSON),\n user_type: SharedUserTypeToJSON(value.userType),\n external_identifiers:\n value.externalIdentifiers === undefined\n ? undefined\n : (value.externalIdentifiers as Array).map(\n VendorUserExternalIdentifierToJSON\n ),\n employment_started_at: value.employmentStartedAt,\n employment_ended_at: value.employmentEndedAt,\n employment_status: SharedEmploymentStatusToJSON(value.employmentStatus),\n line_manager_id: value.lineManagerId,\n vendor_teams_ids: value.vendorTeamsIds,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n CompanyIdentifierCreatePayload,\n CompanyIdentifierCreatePayloadFromJSON,\n CompanyIdentifierCreatePayloadFromJSONTyped,\n CompanyIdentifierCreatePayloadToJSON,\n Vendor,\n VendorFromJSON,\n VendorFromJSONTyped,\n VendorToJSON,\n VendorsCreatePayloadCompany,\n VendorsCreatePayloadCompanyFromJSON,\n VendorsCreatePayloadCompanyFromJSONTyped,\n VendorsCreatePayloadCompanyToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface VendorsCreatePayload\n */\nexport interface VendorsCreatePayload {\n /**\n *\n * @type {Vendor}\n * @memberof VendorsCreatePayload\n */\n vendor: Vendor;\n /**\n *\n * @type {VendorsCreatePayloadCompany}\n * @memberof VendorsCreatePayload\n */\n company: VendorsCreatePayloadCompany;\n /**\n *\n * @type {Array}\n * @memberof VendorsCreatePayload\n */\n companyIdentifiers: Array;\n}\n\nexport function VendorsCreatePayloadFromJSON(json: any): VendorsCreatePayload {\n return VendorsCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function VendorsCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorsCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n vendor: VendorFromJSON(json['vendor']),\n company: VendorsCreatePayloadCompanyFromJSON(json['company']),\n companyIdentifiers: (json['company_identifiers'] as Array).map(\n CompanyIdentifierCreatePayloadFromJSON\n ),\n };\n}\n\nexport function VendorsCreatePayloadToJSON(\n value?: VendorsCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n vendor: VendorToJSON(value.vendor),\n company: VendorsCreatePayloadCompanyToJSON(value.company),\n company_identifiers: (value.companyIdentifiers as Array).map(\n CompanyIdentifierCreatePayloadToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface VendorsCreatePayloadCompany\n */\nexport interface VendorsCreatePayloadCompany {\n /**\n *\n * @type {string}\n * @memberof VendorsCreatePayloadCompany\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof VendorsCreatePayloadCompany\n */\n legalName?: string;\n /**\n *\n * @type {string}\n * @memberof VendorsCreatePayloadCompany\n */\n countryOfIncorporation?: string;\n /**\n *\n * @type {string}\n * @memberof VendorsCreatePayloadCompany\n */\n registeredAddress?: string;\n}\n\nexport function VendorsCreatePayloadCompanyFromJSON(\n json: any\n): VendorsCreatePayloadCompany {\n return VendorsCreatePayloadCompanyFromJSONTyped(json, false);\n}\n\nexport function VendorsCreatePayloadCompanyFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): VendorsCreatePayloadCompany {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n legalName: !exists(json, 'legal_name') ? undefined : json['legal_name'],\n countryOfIncorporation: !exists(json, 'country_of_incorporation')\n ? undefined\n : json['country_of_incorporation'],\n registeredAddress: !exists(json, 'registered_address')\n ? undefined\n : json['registered_address'],\n };\n}\n\nexport function VendorsCreatePayloadCompanyToJSON(\n value?: VendorsCreatePayloadCompany | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n legal_name: value.legalName,\n country_of_incorporation: value.countryOfIncorporation,\n registered_address: value.registeredAddress,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport const BASE_PATH = 'http://localhost/api/v1'.replace(/\\/+$/, '');\n\nconst isBlob = (value: any) =>\n typeof Blob !== 'undefined' && value instanceof Blob;\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n private middleware: Middleware[];\n\n constructor(protected configuration = new Configuration()) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware(this: T, ...middlewares: Middleware[]) {\n const next = this.clone();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware(\n this: T,\n ...preMiddlewares: Array\n ) {\n const middlewares = preMiddlewares.map(pre => ({ pre }));\n return this.withMiddleware(...middlewares);\n }\n\n withPostMiddleware(\n this: T,\n ...postMiddlewares: Array\n ) {\n const middlewares = postMiddlewares.map(post => ({ post }));\n return this.withMiddleware(...middlewares);\n }\n\n protected async request(context: RequestOpts): Promise {\n const { url, init } = this.createFetchParams(context);\n const response = await this.fetchApi(url, init);\n if (response.status >= 200 && response.status < 300) {\n return response;\n }\n throw response;\n }\n\n private createFetchParams(context: RequestOpts) {\n let url = this.configuration.basePath + context.path;\n if (\n context.query !== undefined &&\n Object.keys(context.query).length !== 0\n ) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n const body =\n context.body instanceof FormData ||\n context.body instanceof URLSearchParams ||\n isBlob(context.body)\n ? context.body\n : JSON.stringify(context.body);\n\n const headers = Object.assign(\n {},\n this.configuration.headers,\n context.headers\n );\n const init = {\n method: context.method,\n headers: headers,\n body,\n credentials: this.configuration.credentials,\n };\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams =\n (await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n })) || fetchParams;\n }\n }\n let response = await this.configuration.fetchApi(\n fetchParams.url,\n fetchParams.init\n );\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response =\n (await middleware.post({\n fetch: this.fetchApi,\n url,\n init,\n response: response.clone(),\n })) || response;\n }\n }\n return response;\n };\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n}\n\nexport class RequiredError extends Error {\n name: 'RequiredError' = 'RequiredError';\n constructor(\n public field: string,\n msg?: string\n ) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: ',',\n ssv: ' ',\n tsv: '\\t',\n pipes: '|',\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | ((name: string) => string); // parameter for apiKey security\n accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n get basePath(): string {\n return this.configuration.basePath != null\n ? this.configuration.basePath\n : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI {\n return this.configuration.fetchApi || window.fetch.bind(window);\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name: string, scopes?: string[]) => string) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function'\n ? accessToken\n : () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport type Json = any;\nexport type HTTPMethod =\n | 'GET'\n | 'POST'\n | 'PUT'\n | 'PATCH'\n | 'DELETE'\n | 'OPTIONS';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = {\n [key: string]:\n | string\n | number\n | null\n | boolean\n | Array\n | HTTPQuery;\n};\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type ModelPropertyNaming =\n | 'camelCase'\n | 'snake_case'\n | 'PascalCase'\n | 'original';\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => {\n const fullKey = prefix + (prefix.length ? `[${key}]` : key);\n const value = params[key];\n if (value instanceof Array) {\n const multiValue = value\n .map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n })\n .filter(part => part.length > 0)\n .join('&');\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n return Object.keys(data).reduce(\n (acc, key) => ({ ...acc, [key]: fn(data[key]) }),\n {}\n );\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise;\n post?(context: ResponseContext): Promise;\n}\n\nexport interface ApiResponse {\n raw: Response;\n value(): Promise;\n}\n\nexport interface ResponseTransformer {\n (json: any): T;\n}\n\nexport class JSONApiResponse {\n constructor(\n public raw: Response,\n private transformer: ResponseTransformer = (jsonValue: any) => jsonValue\n ) {}\n\n async value(): Promise {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise {\n return await this.raw.blob();\n }\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise {\n return await this.raw.text();\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport * as runtime from '../runtime';\nimport {\n ErrorResponse,\n ErrorResponseFromJSON,\n ErrorResponseToJSON,\n TrusthubAccessRequestApprovePayload,\n TrusthubAccessRequestApprovePayloadFromJSON,\n TrusthubAccessRequestApprovePayloadToJSON,\n TrusthubAccessRequestCreatePayload,\n TrusthubAccessRequestCreatePayloadFromJSON,\n TrusthubAccessRequestCreatePayloadToJSON,\n TrusthubAccessRequestModel,\n TrusthubAccessRequestModelFromJSON,\n TrusthubAccessRequestModelToJSON,\n TrusthubCategoryModel,\n TrusthubCategoryModelFromJSON,\n TrusthubCategoryModelToJSON,\n TrusthubCompanyCreatePayload,\n TrusthubCompanyCreatePayloadFromJSON,\n TrusthubCompanyCreatePayloadToJSON,\n TrusthubCompanyExtended,\n TrusthubCompanyExtendedFromJSON,\n TrusthubCompanyExtendedToJSON,\n TrusthubCompanyModel,\n TrusthubCompanyModelFromJSON,\n TrusthubCompanyModelToJSON,\n TrusthubCompanyStatus,\n TrusthubCompanyStatusFromJSON,\n TrusthubCompanyStatusToJSON,\n TrusthubCompanyUpdatePayload,\n TrusthubCompanyUpdatePayloadFromJSON,\n TrusthubCompanyUpdatePayloadToJSON,\n TrusthubDocumentPermissionModel,\n TrusthubDocumentPermissionModelFromJSON,\n TrusthubDocumentPermissionModelToJSON,\n TrusthubInvitationCreatePayload,\n TrusthubInvitationCreatePayloadFromJSON,\n TrusthubInvitationCreatePayloadToJSON,\n TrusthubInvitationModel,\n TrusthubInvitationModelFromJSON,\n TrusthubInvitationModelToJSON,\n TrusthubInvitationUpdatePayload,\n TrusthubInvitationUpdatePayloadFromJSON,\n TrusthubInvitationUpdatePayloadToJSON,\n TrusthubSectionModel,\n TrusthubSectionModelFromJSON,\n TrusthubSectionModelToJSON,\n TrusthubSectionUpdatePayload,\n TrusthubSectionUpdatePayloadFromJSON,\n TrusthubSectionUpdatePayloadToJSON,\n TrusthubSettingsModel,\n TrusthubSettingsModelFromJSON,\n TrusthubSettingsModelToJSON,\n TrusthubUserModel,\n TrusthubUserModelFromJSON,\n TrusthubUserModelToJSON,\n TrusthubUserPasswordForgotPayload,\n TrusthubUserPasswordForgotPayloadFromJSON,\n TrusthubUserPasswordForgotPayloadToJSON,\n TrusthubUserPasswordResetPayload,\n TrusthubUserPasswordResetPayloadFromJSON,\n TrusthubUserPasswordResetPayloadToJSON,\n TrusthubUserSignInPayload,\n TrusthubUserSignInPayloadFromJSON,\n TrusthubUserSignInPayloadToJSON,\n TrusthubUserSignUpPayload,\n TrusthubUserSignUpPayloadFromJSON,\n TrusthubUserSignUpPayloadToJSON,\n TrusthubVendorUserActivityList,\n TrusthubVendorUserActivityListFromJSON,\n TrusthubVendorUserActivityListToJSON,\n TrusthubVendorUserCreatePayload,\n TrusthubVendorUserCreatePayloadFromJSON,\n TrusthubVendorUserCreatePayloadToJSON,\n TrusthubVendorUserExtended,\n TrusthubVendorUserExtendedFromJSON,\n TrusthubVendorUserExtendedToJSON,\n TrusthubVendorUserModel,\n TrusthubVendorUserModelFromJSON,\n TrusthubVendorUserModelToJSON,\n TrusthubVendorUserUpdatePayload,\n TrusthubVendorUserUpdatePayloadFromJSON,\n TrusthubVendorUserUpdatePayloadToJSON,\n} from '../models';\n\nexport interface AccessRequestsAccessRequestIdApprovePatchRequest {\n accessRequestId: string;\n body?: TrusthubAccessRequestApprovePayload;\n}\n\nexport interface AccessRequestsAccessRequestIdDenyPatchRequest {\n accessRequestId: string;\n notify?: boolean;\n comment?: string;\n}\n\nexport interface AccessRequestsAccessRequestIdGetRequest {\n accessRequestId: string;\n}\n\nexport interface CompaniesCompanyIdDeleteRequest {\n companyId: string;\n}\n\nexport interface CompaniesCompanyIdGetRequest {\n companyId: string;\n}\n\nexport interface CompaniesCompanyIdPatchRequest {\n companyId: string;\n body?: TrusthubCompanyUpdatePayload;\n}\n\nexport interface DocumentPermissionsDocumentPermissionIdDeleteRequest {\n documentPermissionId: string;\n}\n\nexport interface DocumentsDocumentIdDownloadGetRequest {\n documentId: string;\n}\n\nexport interface SectionsSectionIdGetRequest {\n sectionId: string;\n includeTemplates?: boolean;\n}\n\nexport interface SectionsSectionIdPatchRequest {\n sectionId: string;\n body: TrusthubSectionUpdatePayload;\n}\n\nexport interface UsersConfirmationGetRequest {\n confirmationToken: string;\n vendorDomain: string;\n}\n\nexport interface UsersInvitationPatchRequest {\n body: TrusthubInvitationUpdatePayload;\n}\n\nexport interface UsersInvitationPostRequest {\n body: TrusthubInvitationCreatePayload;\n}\n\nexport interface UsersInvitationsIdGetRequest {\n id: string;\n}\n\nexport interface UsersPasswordPatchRequest {\n body?: TrusthubUserPasswordResetPayload;\n}\n\nexport interface UsersPasswordPostRequest {\n body?: TrusthubUserPasswordForgotPayload;\n}\n\nexport interface UsersPostRequest {\n body: TrusthubUserSignUpPayload;\n}\n\nexport interface UsersSignInPostRequest {\n body?: TrusthubUserSignInPayload;\n}\n\nexport interface VendorTrusthubsVendorIdOrDomainAccessRequestsGetRequest {\n vendorIdOrDomain: string;\n statuses?: Array;\n perPage?: string;\n page?: string;\n}\n\nexport interface VendorTrusthubsVendorIdOrDomainAccessRequestsPostRequest {\n vendorIdOrDomain: string;\n body?: TrusthubAccessRequestCreatePayload;\n}\n\nexport interface VendorTrusthubsVendorIdOrDomainCategoriesGetRequest {\n vendorIdOrDomain: string;\n}\n\nexport interface VendorTrusthubsVendorIdOrDomainCompaniesGetRequest {\n vendorIdOrDomain: string;\n statuses?: Array;\n perPage?: string;\n page?: string;\n}\n\nexport interface VendorTrusthubsVendorIdOrDomainCompaniesPostRequest {\n vendorIdOrDomain: string;\n body?: TrusthubCompanyCreatePayload;\n}\n\nexport interface VendorTrusthubsVendorIdOrDomainSectionsGetRequest {\n vendorIdOrDomain: string;\n trusthubVendorUserId?: string;\n includeInvisible?: boolean;\n}\n\nexport interface VendorTrusthubsVendorIdOrDomainSettingsGetRequest {\n vendorIdOrDomain: string;\n}\n\nexport interface VendorTrusthubsVendorIdOrDomainSettingsPatchRequest {\n vendorIdOrDomain: string;\n logo?: Blob;\n favicon?: Blob;\n name?: string;\n description?: string;\n domain?: string;\n email?: string;\n brandingColor?: string;\n published?: boolean;\n useColourGradient?: boolean;\n}\n\nexport interface VendorTrusthubsVendorIdOrDomainVendorUsersActivityGetRequest {\n vendorIdOrDomain: string;\n trusthubVendorUserId?: string;\n perPage?: string;\n page?: string;\n}\n\nexport interface VendorTrusthubsVendorIdOrDomainVendorUsersGetRequest {\n vendorIdOrDomain: string;\n trusthubCompanyId?: string;\n perPage?: string;\n page?: string;\n onlyAdmin?: boolean;\n}\n\nexport interface VendorTrusthubsVendorIdOrDomainVendorUsersPostRequest {\n vendorIdOrDomain: string;\n body?: TrusthubVendorUserCreatePayload;\n}\n\nexport interface VendorTrusthubsVendorTrusthubIdCurrentVendorUserDetailsGetRequest {\n vendorTrusthubId: string;\n}\n\nexport interface VendorUsersVendorUserIdDocumentPermissionsGetRequest {\n vendorUserId: string;\n}\n\nexport interface VendorUsersVendorUserIdGetRequest {\n vendorUserId: string;\n}\n\nexport interface VendorUsersVendorUserIdPatchRequest {\n vendorUserId: string;\n body?: TrusthubVendorUserUpdatePayload;\n}\n\n/**\n * no description\n */\nexport class DefaultApi extends runtime.BaseAPI {\n /**\n * Approve Trusthub access request\n */\n async accessRequestsAccessRequestIdApprovePatchRaw(\n requestParameters: AccessRequestsAccessRequestIdApprovePatchRequest\n ): Promise> {\n if (\n requestParameters.accessRequestId === null ||\n requestParameters.accessRequestId === undefined\n ) {\n throw new runtime.RequiredError(\n 'accessRequestId',\n 'Required parameter requestParameters.accessRequestId was null or undefined when calling accessRequestsAccessRequestIdApprovePatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/access_requests/{access_request_id}/approve`.replace(\n `{${'access_request_id'}}`,\n encodeURIComponent(String(requestParameters.accessRequestId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: TrusthubAccessRequestApprovePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubAccessRequestModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Approve Trusthub access request\n */\n async accessRequestsAccessRequestIdApprovePatch(\n requestParameters: AccessRequestsAccessRequestIdApprovePatchRequest\n ): Promise {\n const response =\n await this.accessRequestsAccessRequestIdApprovePatchRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Deny Trusthub access request\n */\n async accessRequestsAccessRequestIdDenyPatchRaw(\n requestParameters: AccessRequestsAccessRequestIdDenyPatchRequest\n ): Promise> {\n if (\n requestParameters.accessRequestId === null ||\n requestParameters.accessRequestId === undefined\n ) {\n throw new runtime.RequiredError(\n 'accessRequestId',\n 'Required parameter requestParameters.accessRequestId was null or undefined when calling accessRequestsAccessRequestIdDenyPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.notify !== undefined) {\n queryParameters['notify'] = requestParameters.notify;\n }\n\n if (requestParameters.comment !== undefined) {\n queryParameters['comment'] = requestParameters.comment;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/access_requests/{access_request_id}/deny`.replace(\n `{${'access_request_id'}}`,\n encodeURIComponent(String(requestParameters.accessRequestId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubAccessRequestModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Deny Trusthub access request\n */\n async accessRequestsAccessRequestIdDenyPatch(\n requestParameters: AccessRequestsAccessRequestIdDenyPatchRequest\n ): Promise {\n const response =\n await this.accessRequestsAccessRequestIdDenyPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get Trusthub access request\n */\n async accessRequestsAccessRequestIdGetRaw(\n requestParameters: AccessRequestsAccessRequestIdGetRequest\n ): Promise> {\n if (\n requestParameters.accessRequestId === null ||\n requestParameters.accessRequestId === undefined\n ) {\n throw new runtime.RequiredError(\n 'accessRequestId',\n 'Required parameter requestParameters.accessRequestId was null or undefined when calling accessRequestsAccessRequestIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/access_requests/{access_request_id}`.replace(\n `{${'access_request_id'}}`,\n encodeURIComponent(String(requestParameters.accessRequestId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubAccessRequestModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get Trusthub access request\n */\n async accessRequestsAccessRequestIdGet(\n requestParameters: AccessRequestsAccessRequestIdGetRequest\n ): Promise {\n const response =\n await this.accessRequestsAccessRequestIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete Trusthub company\n */\n async companiesCompanyIdDeleteRaw(\n requestParameters: CompaniesCompanyIdDeleteRequest\n ): Promise> {\n if (\n requestParameters.companyId === null ||\n requestParameters.companyId === undefined\n ) {\n throw new runtime.RequiredError(\n 'companyId',\n 'Required parameter requestParameters.companyId was null or undefined when calling companiesCompanyIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/companies/{company_id}`.replace(\n `{${'company_id'}}`,\n encodeURIComponent(String(requestParameters.companyId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete Trusthub company\n */\n async companiesCompanyIdDelete(\n requestParameters: CompaniesCompanyIdDeleteRequest\n ): Promise {\n await this.companiesCompanyIdDeleteRaw(requestParameters);\n }\n\n /**\n * Get Trusthub company\n */\n async companiesCompanyIdGetRaw(\n requestParameters: CompaniesCompanyIdGetRequest\n ): Promise> {\n if (\n requestParameters.companyId === null ||\n requestParameters.companyId === undefined\n ) {\n throw new runtime.RequiredError(\n 'companyId',\n 'Required parameter requestParameters.companyId was null or undefined when calling companiesCompanyIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/companies/{company_id}`.replace(\n `{${'company_id'}}`,\n encodeURIComponent(String(requestParameters.companyId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubCompanyExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get Trusthub company\n */\n async companiesCompanyIdGet(\n requestParameters: CompaniesCompanyIdGetRequest\n ): Promise {\n const response = await this.companiesCompanyIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update Trusthub company\n */\n async companiesCompanyIdPatchRaw(\n requestParameters: CompaniesCompanyIdPatchRequest\n ): Promise> {\n if (\n requestParameters.companyId === null ||\n requestParameters.companyId === undefined\n ) {\n throw new runtime.RequiredError(\n 'companyId',\n 'Required parameter requestParameters.companyId was null or undefined when calling companiesCompanyIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/companies/{company_id}`.replace(\n `{${'company_id'}}`,\n encodeURIComponent(String(requestParameters.companyId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: TrusthubCompanyUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubCompanyExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Update Trusthub company\n */\n async companiesCompanyIdPatch(\n requestParameters: CompaniesCompanyIdPatchRequest\n ): Promise {\n const response = await this.companiesCompanyIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Delete Trusthub vendor user document permission\n */\n async documentPermissionsDocumentPermissionIdDeleteRaw(\n requestParameters: DocumentPermissionsDocumentPermissionIdDeleteRequest\n ): Promise> {\n if (\n requestParameters.documentPermissionId === null ||\n requestParameters.documentPermissionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'documentPermissionId',\n 'Required parameter requestParameters.documentPermissionId was null or undefined when calling documentPermissionsDocumentPermissionIdDelete.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/document_permissions/{document_permission_id}`.replace(\n `{${'document_permission_id'}}`,\n encodeURIComponent(String(requestParameters.documentPermissionId))\n ),\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Delete Trusthub vendor user document permission\n */\n async documentPermissionsDocumentPermissionIdDelete(\n requestParameters: DocumentPermissionsDocumentPermissionIdDeleteRequest\n ): Promise {\n await this.documentPermissionsDocumentPermissionIdDeleteRaw(\n requestParameters\n );\n }\n\n /**\n * Get Trusthub document pdf\n */\n async documentsDocumentIdDownloadGetRaw(\n requestParameters: DocumentsDocumentIdDownloadGetRequest\n ): Promise> {\n if (\n requestParameters.documentId === null ||\n requestParameters.documentId === undefined\n ) {\n throw new runtime.RequiredError(\n 'documentId',\n 'Required parameter requestParameters.documentId was null or undefined when calling documentsDocumentIdDownloadGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/documents/{document_id}/download`.replace(\n `{${'document_id'}}`,\n encodeURIComponent(String(requestParameters.documentId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Get Trusthub document pdf\n */\n async documentsDocumentIdDownloadGet(\n requestParameters: DocumentsDocumentIdDownloadGetRequest\n ): Promise {\n await this.documentsDocumentIdDownloadGetRaw(requestParameters);\n }\n\n /**\n * Get vendor Trusthub sections\n */\n async sectionsSectionIdGetRaw(\n requestParameters: SectionsSectionIdGetRequest\n ): Promise> {\n if (\n requestParameters.sectionId === null ||\n requestParameters.sectionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'sectionId',\n 'Required parameter requestParameters.sectionId was null or undefined when calling sectionsSectionIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.includeTemplates !== undefined) {\n queryParameters['include_templates'] = requestParameters.includeTemplates;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/sections/{section_id}`.replace(\n `{${'section_id'}}`,\n encodeURIComponent(String(requestParameters.sectionId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubSectionModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get vendor Trusthub sections\n */\n async sectionsSectionIdGet(\n requestParameters: SectionsSectionIdGetRequest\n ): Promise {\n const response = await this.sectionsSectionIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Update Trusthub section\n */\n async sectionsSectionIdPatchRaw(\n requestParameters: SectionsSectionIdPatchRequest\n ): Promise> {\n if (\n requestParameters.sectionId === null ||\n requestParameters.sectionId === undefined\n ) {\n throw new runtime.RequiredError(\n 'sectionId',\n 'Required parameter requestParameters.sectionId was null or undefined when calling sectionsSectionIdPatch.'\n );\n }\n\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling sectionsSectionIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/sections/{section_id}`.replace(\n `{${'section_id'}}`,\n encodeURIComponent(String(requestParameters.sectionId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: TrusthubSectionUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubSectionModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Update Trusthub section\n */\n async sectionsSectionIdPatch(\n requestParameters: SectionsSectionIdPatchRequest\n ): Promise {\n const response = await this.sectionsSectionIdPatchRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Get the details of the current user\n */\n async userDetailsGetRaw(): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/user_details`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubUserModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the details of the current user\n */\n async userDetailsGet(): Promise {\n const response = await this.userDetailsGetRaw();\n return await response.value();\n }\n\n /**\n * Confirm Trusthub User\n */\n async usersConfirmationGetRaw(\n requestParameters: UsersConfirmationGetRequest\n ): Promise> {\n if (\n requestParameters.confirmationToken === null ||\n requestParameters.confirmationToken === undefined\n ) {\n throw new runtime.RequiredError(\n 'confirmationToken',\n 'Required parameter requestParameters.confirmationToken was null or undefined when calling usersConfirmationGet.'\n );\n }\n\n if (\n requestParameters.vendorDomain === null ||\n requestParameters.vendorDomain === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorDomain',\n 'Required parameter requestParameters.vendorDomain was null or undefined when calling usersConfirmationGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.confirmationToken !== undefined) {\n queryParameters['confirmation_token'] =\n requestParameters.confirmationToken;\n }\n\n if (requestParameters.vendorDomain !== undefined) {\n queryParameters['vendor_domain'] = requestParameters.vendorDomain;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/users/confirmation`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Confirm Trusthub User\n */\n async usersConfirmationGet(\n requestParameters: UsersConfirmationGetRequest\n ): Promise {\n await this.usersConfirmationGetRaw(requestParameters);\n }\n\n /**\n * Update Trusthub invitation\n */\n async usersInvitationPatchRaw(\n requestParameters: UsersInvitationPatchRequest\n ): Promise> {\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling usersInvitationPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users/invitation`,\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: TrusthubInvitationUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Update Trusthub invitation\n */\n async usersInvitationPatch(\n requestParameters: UsersInvitationPatchRequest\n ): Promise {\n await this.usersInvitationPatchRaw(requestParameters);\n }\n\n /**\n * Create Trusthub invitation\n */\n async usersInvitationPostRaw(\n requestParameters: UsersInvitationPostRequest\n ): Promise> {\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling usersInvitationPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users/invitation`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: TrusthubInvitationCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Create Trusthub invitation\n */\n async usersInvitationPost(\n requestParameters: UsersInvitationPostRequest\n ): Promise {\n await this.usersInvitationPostRaw(requestParameters);\n }\n\n /**\n * Get Trusthub invitation\n */\n async usersInvitationsIdGetRaw(\n requestParameters: UsersInvitationsIdGetRequest\n ): Promise> {\n if (requestParameters.id === null || requestParameters.id === undefined) {\n throw new runtime.RequiredError(\n 'id',\n 'Required parameter requestParameters.id was null or undefined when calling usersInvitationsIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/users/invitations/{id}`.replace(\n `{${'id'}}`,\n encodeURIComponent(String(requestParameters.id))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubInvitationModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get Trusthub invitation\n */\n async usersInvitationsIdGet(\n requestParameters: UsersInvitationsIdGetRequest\n ): Promise {\n const response = await this.usersInvitationsIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Set new password\n */\n async usersPasswordPatchRaw(\n requestParameters: UsersPasswordPatchRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users/password`,\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: TrusthubUserPasswordResetPayloadToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Set new password\n */\n async usersPasswordPatch(\n requestParameters: UsersPasswordPatchRequest\n ): Promise {\n await this.usersPasswordPatchRaw(requestParameters);\n }\n\n /**\n * Forgot my password\n */\n async usersPasswordPostRaw(\n requestParameters: UsersPasswordPostRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users/password`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: TrusthubUserPasswordForgotPayloadToJSON(requestParameters.body),\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Forgot my password\n */\n async usersPasswordPost(\n requestParameters: UsersPasswordPostRequest\n ): Promise {\n await this.usersPasswordPostRaw(requestParameters);\n }\n\n /**\n * Sign up to the platform\n */\n async usersPostRaw(\n requestParameters: UsersPostRequest\n ): Promise> {\n if (\n requestParameters.body === null ||\n requestParameters.body === undefined\n ) {\n throw new runtime.RequiredError(\n 'body',\n 'Required parameter requestParameters.body was null or undefined when calling usersPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: TrusthubUserSignUpPayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubUserModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Sign up to the platform\n */\n async usersPost(\n requestParameters: UsersPostRequest\n ): Promise {\n const response = await this.usersPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Sign in to the platform\n */\n async usersSignInPostRaw(\n requestParameters: UsersSignInPostRequest\n ): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/users/sign_in`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: TrusthubUserSignInPayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubUserModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Sign in to the platform\n */\n async usersSignInPost(\n requestParameters: UsersSignInPostRequest\n ): Promise {\n const response = await this.usersSignInPostRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * Sign out of the platform\n */\n async usersSignOutDeleteRaw(): Promise> {\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/users/sign_out`,\n method: 'DELETE',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.VoidApiResponse(response);\n }\n\n /**\n * Sign out of the platform\n */\n async usersSignOutDelete(): Promise {\n await this.usersSignOutDeleteRaw();\n }\n\n /**\n * Get Trusthub access requests\n */\n async vendorTrusthubsVendorIdOrDomainAccessRequestsGetRaw(\n requestParameters: VendorTrusthubsVendorIdOrDomainAccessRequestsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorIdOrDomain === null ||\n requestParameters.vendorIdOrDomain === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIdOrDomain',\n 'Required parameter requestParameters.vendorIdOrDomain was null or undefined when calling vendorTrusthubsVendorIdOrDomainAccessRequestsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.statuses) {\n queryParameters['statuses[]'] = requestParameters.statuses;\n }\n\n if (requestParameters.perPage !== undefined) {\n queryParameters['per_page'] = requestParameters.perPage;\n }\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_trusthubs/{vendor_id_or_domain}/access_requests`.replace(\n `{${'vendor_id_or_domain'}}`,\n encodeURIComponent(String(requestParameters.vendorIdOrDomain))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(TrusthubAccessRequestModelFromJSON)\n );\n }\n\n /**\n * Get Trusthub access requests\n */\n async vendorTrusthubsVendorIdOrDomainAccessRequestsGet(\n requestParameters: VendorTrusthubsVendorIdOrDomainAccessRequestsGetRequest\n ): Promise> {\n const response =\n await this.vendorTrusthubsVendorIdOrDomainAccessRequestsGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Create Trusthub access request\n */\n async vendorTrusthubsVendorIdOrDomainAccessRequestsPostRaw(\n requestParameters: VendorTrusthubsVendorIdOrDomainAccessRequestsPostRequest\n ): Promise> {\n if (\n requestParameters.vendorIdOrDomain === null ||\n requestParameters.vendorIdOrDomain === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIdOrDomain',\n 'Required parameter requestParameters.vendorIdOrDomain was null or undefined when calling vendorTrusthubsVendorIdOrDomainAccessRequestsPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_trusthubs/{vendor_id_or_domain}/access_requests`.replace(\n `{${'vendor_id_or_domain'}}`,\n encodeURIComponent(String(requestParameters.vendorIdOrDomain))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: TrusthubAccessRequestCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubAccessRequestModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Create Trusthub access request\n */\n async vendorTrusthubsVendorIdOrDomainAccessRequestsPost(\n requestParameters: VendorTrusthubsVendorIdOrDomainAccessRequestsPostRequest\n ): Promise {\n const response =\n await this.vendorTrusthubsVendorIdOrDomainAccessRequestsPostRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get vendor Trusthub categories\n */\n async vendorTrusthubsVendorIdOrDomainCategoriesGetRaw(\n requestParameters: VendorTrusthubsVendorIdOrDomainCategoriesGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorIdOrDomain === null ||\n requestParameters.vendorIdOrDomain === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIdOrDomain',\n 'Required parameter requestParameters.vendorIdOrDomain was null or undefined when calling vendorTrusthubsVendorIdOrDomainCategoriesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_trusthubs/{vendor_id_or_domain}/categories`.replace(\n `{${'vendor_id_or_domain'}}`,\n encodeURIComponent(String(requestParameters.vendorIdOrDomain))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(TrusthubCategoryModelFromJSON)\n );\n }\n\n /**\n * Get vendor Trusthub categories\n */\n async vendorTrusthubsVendorIdOrDomainCategoriesGet(\n requestParameters: VendorTrusthubsVendorIdOrDomainCategoriesGetRequest\n ): Promise> {\n const response =\n await this.vendorTrusthubsVendorIdOrDomainCategoriesGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get Trusthub companies\n */\n async vendorTrusthubsVendorIdOrDomainCompaniesGetRaw(\n requestParameters: VendorTrusthubsVendorIdOrDomainCompaniesGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorIdOrDomain === null ||\n requestParameters.vendorIdOrDomain === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIdOrDomain',\n 'Required parameter requestParameters.vendorIdOrDomain was null or undefined when calling vendorTrusthubsVendorIdOrDomainCompaniesGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.statuses) {\n queryParameters['statuses[]'] = requestParameters.statuses;\n }\n\n if (requestParameters.perPage !== undefined) {\n queryParameters['per_page'] = requestParameters.perPage;\n }\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_trusthubs/{vendor_id_or_domain}/companies`.replace(\n `{${'vendor_id_or_domain'}}`,\n encodeURIComponent(String(requestParameters.vendorIdOrDomain))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(TrusthubCompanyModelFromJSON)\n );\n }\n\n /**\n * Get Trusthub companies\n */\n async vendorTrusthubsVendorIdOrDomainCompaniesGet(\n requestParameters: VendorTrusthubsVendorIdOrDomainCompaniesGetRequest\n ): Promise> {\n const response =\n await this.vendorTrusthubsVendorIdOrDomainCompaniesGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Create Trusthub company\n */\n async vendorTrusthubsVendorIdOrDomainCompaniesPostRaw(\n requestParameters: VendorTrusthubsVendorIdOrDomainCompaniesPostRequest\n ): Promise> {\n if (\n requestParameters.vendorIdOrDomain === null ||\n requestParameters.vendorIdOrDomain === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIdOrDomain',\n 'Required parameter requestParameters.vendorIdOrDomain was null or undefined when calling vendorTrusthubsVendorIdOrDomainCompaniesPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_trusthubs/{vendor_id_or_domain}/companies`.replace(\n `{${'vendor_id_or_domain'}}`,\n encodeURIComponent(String(requestParameters.vendorIdOrDomain))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: TrusthubCompanyCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubCompanyExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create Trusthub company\n */\n async vendorTrusthubsVendorIdOrDomainCompaniesPost(\n requestParameters: VendorTrusthubsVendorIdOrDomainCompaniesPostRequest\n ): Promise {\n const response =\n await this.vendorTrusthubsVendorIdOrDomainCompaniesPostRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get vendor Trusthub sections\n */\n async vendorTrusthubsVendorIdOrDomainSectionsGetRaw(\n requestParameters: VendorTrusthubsVendorIdOrDomainSectionsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorIdOrDomain === null ||\n requestParameters.vendorIdOrDomain === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIdOrDomain',\n 'Required parameter requestParameters.vendorIdOrDomain was null or undefined when calling vendorTrusthubsVendorIdOrDomainSectionsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.trusthubVendorUserId !== undefined) {\n queryParameters['trusthub_vendor_user_id'] =\n requestParameters.trusthubVendorUserId;\n }\n\n if (requestParameters.includeInvisible !== undefined) {\n queryParameters['include_invisible'] = requestParameters.includeInvisible;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_trusthubs/{vendor_id_or_domain}/sections`.replace(\n `{${'vendor_id_or_domain'}}`,\n encodeURIComponent(String(requestParameters.vendorIdOrDomain))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(TrusthubSectionModelFromJSON)\n );\n }\n\n /**\n * Get vendor Trusthub sections\n */\n async vendorTrusthubsVendorIdOrDomainSectionsGet(\n requestParameters: VendorTrusthubsVendorIdOrDomainSectionsGetRequest\n ): Promise> {\n const response =\n await this.vendorTrusthubsVendorIdOrDomainSectionsGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get vendor Trusthub settings\n */\n async vendorTrusthubsVendorIdOrDomainSettingsGetRaw(\n requestParameters: VendorTrusthubsVendorIdOrDomainSettingsGetRequest\n ): Promise> {\n if (\n requestParameters.vendorIdOrDomain === null ||\n requestParameters.vendorIdOrDomain === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIdOrDomain',\n 'Required parameter requestParameters.vendorIdOrDomain was null or undefined when calling vendorTrusthubsVendorIdOrDomainSettingsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_trusthubs/{vendor_id_or_domain}/settings`.replace(\n `{${'vendor_id_or_domain'}}`,\n encodeURIComponent(String(requestParameters.vendorIdOrDomain))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubSettingsModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get vendor Trusthub settings\n */\n async vendorTrusthubsVendorIdOrDomainSettingsGet(\n requestParameters: VendorTrusthubsVendorIdOrDomainSettingsGetRequest\n ): Promise {\n const response =\n await this.vendorTrusthubsVendorIdOrDomainSettingsGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Update vendor Trusthub settings\n */\n async vendorTrusthubsVendorIdOrDomainSettingsPatchRaw(\n requestParameters: VendorTrusthubsVendorIdOrDomainSettingsPatchRequest\n ): Promise> {\n if (\n requestParameters.vendorIdOrDomain === null ||\n requestParameters.vendorIdOrDomain === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIdOrDomain',\n 'Required parameter requestParameters.vendorIdOrDomain was null or undefined when calling vendorTrusthubsVendorIdOrDomainSettingsPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const consumes: runtime.Consume[] = [\n { contentType: 'multipart/form-data' },\n ];\n // @ts-ignore: canConsumeForm may be unused\n const canConsumeForm = runtime.canConsumeForm(consumes);\n\n let formParams: { append(param: string, value: any): any };\n let useForm = false;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n // use FormData to transmit files using content-type \"multipart/form-data\"\n useForm = canConsumeForm;\n if (useForm) {\n formParams = new FormData();\n } else {\n formParams = new URLSearchParams();\n }\n\n if (requestParameters.logo !== undefined) {\n formParams.append('logo', requestParameters.logo as any);\n }\n\n if (requestParameters.favicon !== undefined) {\n formParams.append('favicon', requestParameters.favicon as any);\n }\n\n if (requestParameters.name !== undefined) {\n formParams.append('name', requestParameters.name as any);\n }\n\n if (requestParameters.description !== undefined) {\n formParams.append('description', requestParameters.description as any);\n }\n\n if (requestParameters.domain !== undefined) {\n formParams.append('domain', requestParameters.domain as any);\n }\n\n if (requestParameters.email !== undefined) {\n formParams.append('email', requestParameters.email as any);\n }\n\n if (requestParameters.brandingColor !== undefined) {\n formParams.append(\n 'branding_color',\n requestParameters.brandingColor as any\n );\n }\n\n if (requestParameters.published !== undefined) {\n formParams.append('published', requestParameters.published as any);\n }\n\n if (requestParameters.useColourGradient !== undefined) {\n formParams.append(\n 'use_colour_gradient',\n requestParameters.useColourGradient as any\n );\n }\n\n const response = await this.request({\n path: `/vendor_trusthubs/{vendor_id_or_domain}/settings`.replace(\n `{${'vendor_id_or_domain'}}`,\n encodeURIComponent(String(requestParameters.vendorIdOrDomain))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: formParams,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubSettingsModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Update vendor Trusthub settings\n */\n async vendorTrusthubsVendorIdOrDomainSettingsPatch(\n requestParameters: VendorTrusthubsVendorIdOrDomainSettingsPatchRequest\n ): Promise {\n const response =\n await this.vendorTrusthubsVendorIdOrDomainSettingsPatchRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get Trusthub vendor user activity\n */\n async vendorTrusthubsVendorIdOrDomainVendorUsersActivityGetRaw(\n requestParameters: VendorTrusthubsVendorIdOrDomainVendorUsersActivityGetRequest\n ): Promise> {\n if (\n requestParameters.vendorIdOrDomain === null ||\n requestParameters.vendorIdOrDomain === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIdOrDomain',\n 'Required parameter requestParameters.vendorIdOrDomain was null or undefined when calling vendorTrusthubsVendorIdOrDomainVendorUsersActivityGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.trusthubVendorUserId !== undefined) {\n queryParameters['trusthub_vendor_user_id'] =\n requestParameters.trusthubVendorUserId;\n }\n\n if (requestParameters.perPage !== undefined) {\n queryParameters['per_page'] = requestParameters.perPage;\n }\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_trusthubs/{vendor_id_or_domain}/vendor_users/activity`.replace(\n `{${'vendor_id_or_domain'}}`,\n encodeURIComponent(String(requestParameters.vendorIdOrDomain))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubVendorUserActivityListFromJSON(jsonValue)\n );\n }\n\n /**\n * Get Trusthub vendor user activity\n */\n async vendorTrusthubsVendorIdOrDomainVendorUsersActivityGet(\n requestParameters: VendorTrusthubsVendorIdOrDomainVendorUsersActivityGetRequest\n ): Promise {\n const response =\n await this.vendorTrusthubsVendorIdOrDomainVendorUsersActivityGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get Trusthub vendor users\n */\n async vendorTrusthubsVendorIdOrDomainVendorUsersGetRaw(\n requestParameters: VendorTrusthubsVendorIdOrDomainVendorUsersGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorIdOrDomain === null ||\n requestParameters.vendorIdOrDomain === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIdOrDomain',\n 'Required parameter requestParameters.vendorIdOrDomain was null or undefined when calling vendorTrusthubsVendorIdOrDomainVendorUsersGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n if (requestParameters.trusthubCompanyId !== undefined) {\n queryParameters['trusthub_company_id'] =\n requestParameters.trusthubCompanyId;\n }\n\n if (requestParameters.perPage !== undefined) {\n queryParameters['per_page'] = requestParameters.perPage;\n }\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.onlyAdmin !== undefined) {\n queryParameters['only_admin'] = requestParameters.onlyAdmin;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_trusthubs/{vendor_id_or_domain}/vendor_users`.replace(\n `{${'vendor_id_or_domain'}}`,\n encodeURIComponent(String(requestParameters.vendorIdOrDomain))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(TrusthubVendorUserModelFromJSON)\n );\n }\n\n /**\n * Get Trusthub vendor users\n */\n async vendorTrusthubsVendorIdOrDomainVendorUsersGet(\n requestParameters: VendorTrusthubsVendorIdOrDomainVendorUsersGetRequest\n ): Promise> {\n const response =\n await this.vendorTrusthubsVendorIdOrDomainVendorUsersGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Create Trusthub vendor user\n */\n async vendorTrusthubsVendorIdOrDomainVendorUsersPostRaw(\n requestParameters: VendorTrusthubsVendorIdOrDomainVendorUsersPostRequest\n ): Promise> {\n if (\n requestParameters.vendorIdOrDomain === null ||\n requestParameters.vendorIdOrDomain === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorIdOrDomain',\n 'Required parameter requestParameters.vendorIdOrDomain was null or undefined when calling vendorTrusthubsVendorIdOrDomainVendorUsersPost.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_trusthubs/{vendor_id_or_domain}/vendor_users`.replace(\n `{${'vendor_id_or_domain'}}`,\n encodeURIComponent(String(requestParameters.vendorIdOrDomain))\n ),\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: TrusthubVendorUserCreatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubVendorUserExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Create Trusthub vendor user\n */\n async vendorTrusthubsVendorIdOrDomainVendorUsersPost(\n requestParameters: VendorTrusthubsVendorIdOrDomainVendorUsersPostRequest\n ): Promise {\n const response =\n await this.vendorTrusthubsVendorIdOrDomainVendorUsersPostRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get the details of the current vendor user\n */\n async vendorTrusthubsVendorTrusthubIdCurrentVendorUserDetailsGetRaw(\n requestParameters: VendorTrusthubsVendorTrusthubIdCurrentVendorUserDetailsGetRequest\n ): Promise> {\n if (\n requestParameters.vendorTrusthubId === null ||\n requestParameters.vendorTrusthubId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorTrusthubId',\n 'Required parameter requestParameters.vendorTrusthubId was null or undefined when calling vendorTrusthubsVendorTrusthubIdCurrentVendorUserDetailsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_trusthubs/{vendor_trusthub_id}/current_vendor_user_details`.replace(\n `{${'vendor_trusthub_id'}}`,\n encodeURIComponent(String(requestParameters.vendorTrusthubId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubVendorUserModelFromJSON(jsonValue)\n );\n }\n\n /**\n * Get the details of the current vendor user\n */\n async vendorTrusthubsVendorTrusthubIdCurrentVendorUserDetailsGet(\n requestParameters: VendorTrusthubsVendorTrusthubIdCurrentVendorUserDetailsGetRequest\n ): Promise {\n const response =\n await this.vendorTrusthubsVendorTrusthubIdCurrentVendorUserDetailsGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get Trusthub vendor user document permissions\n */\n async vendorUsersVendorUserIdDocumentPermissionsGetRaw(\n requestParameters: VendorUsersVendorUserIdDocumentPermissionsGetRequest\n ): Promise>> {\n if (\n requestParameters.vendorUserId === null ||\n requestParameters.vendorUserId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorUserId',\n 'Required parameter requestParameters.vendorUserId was null or undefined when calling vendorUsersVendorUserIdDocumentPermissionsGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_users/{vendor_user_id}/document_permissions`.replace(\n `{${'vendor_user_id'}}`,\n encodeURIComponent(String(requestParameters.vendorUserId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n jsonValue.map(TrusthubDocumentPermissionModelFromJSON)\n );\n }\n\n /**\n * Get Trusthub vendor user document permissions\n */\n async vendorUsersVendorUserIdDocumentPermissionsGet(\n requestParameters: VendorUsersVendorUserIdDocumentPermissionsGetRequest\n ): Promise> {\n const response =\n await this.vendorUsersVendorUserIdDocumentPermissionsGetRaw(\n requestParameters\n );\n return await response.value();\n }\n\n /**\n * Get Trusthub vendor user\n */\n async vendorUsersVendorUserIdGetRaw(\n requestParameters: VendorUsersVendorUserIdGetRequest\n ): Promise> {\n if (\n requestParameters.vendorUserId === null ||\n requestParameters.vendorUserId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorUserId',\n 'Required parameter requestParameters.vendorUserId was null or undefined when calling vendorUsersVendorUserIdGet.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vendor_users/{vendor_user_id}`.replace(\n `{${'vendor_user_id'}}`,\n encodeURIComponent(String(requestParameters.vendorUserId))\n ),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubVendorUserExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * Get Trusthub vendor user\n */\n async vendorUsersVendorUserIdGet(\n requestParameters: VendorUsersVendorUserIdGetRequest\n ): Promise {\n const response =\n await this.vendorUsersVendorUserIdGetRaw(requestParameters);\n return await response.value();\n }\n\n /**\n * update Trusthub vendor user\n */\n async vendorUsersVendorUserIdPatchRaw(\n requestParameters: VendorUsersVendorUserIdPatchRequest\n ): Promise> {\n if (\n requestParameters.vendorUserId === null ||\n requestParameters.vendorUserId === undefined\n ) {\n throw new runtime.RequiredError(\n 'vendorUserId',\n 'Required parameter requestParameters.vendorUserId was null or undefined when calling vendorUsersVendorUserIdPatch.'\n );\n }\n\n const queryParameters: runtime.HTTPQuery = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/vendor_users/{vendor_user_id}`.replace(\n `{${'vendor_user_id'}}`,\n encodeURIComponent(String(requestParameters.vendorUserId))\n ),\n method: 'PATCH',\n headers: headerParameters,\n query: queryParameters,\n body: TrusthubVendorUserUpdatePayloadToJSON(requestParameters.body),\n });\n\n return new runtime.JSONApiResponse(response, jsonValue =>\n TrusthubVendorUserExtendedFromJSON(jsonValue)\n );\n }\n\n /**\n * update Trusthub vendor user\n */\n async vendorUsersVendorUserIdPatch(\n requestParameters: VendorUsersVendorUserIdPatchRequest\n ): Promise {\n const response =\n await this.vendorUsersVendorUserIdPatchRaw(requestParameters);\n return await response.value();\n }\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum VendorTrusthubsVendorIdOrDomainAccessRequestsGetStatusesEnum {\n Pending = 'pending',\n Approved = 'approved',\n Denied = 'denied',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n ImageUrls,\n ImageUrlsFromJSON,\n ImageUrlsFromJSONTyped,\n ImageUrlsToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface Image\n */\nexport interface Image {\n /**\n *\n * @type {string}\n * @memberof Image\n */\n filename: string | null;\n /**\n *\n * @type {ImageUrls}\n * @memberof Image\n */\n urls: ImageUrls;\n}\n\nexport function ImageFromJSON(json: any): Image {\n return ImageFromJSONTyped(json, false);\n}\n\nexport function ImageFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): Image {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n filename: json['filename'],\n urls: ImageUrlsFromJSON(json['urls']),\n };\n}\n\nexport function ImageToJSON(value?: Image | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n filename: value.filename,\n urls: ImageUrlsToJSON(value.urls),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface ImageUrls\n */\nexport interface ImageUrls {\n /**\n *\n * @type {string}\n * @memberof ImageUrls\n */\n full: string | null;\n /**\n *\n * @type {string}\n * @memberof ImageUrls\n */\n thumb?: string | null;\n}\n\nexport function ImageUrlsFromJSON(json: any): ImageUrls {\n return ImageUrlsFromJSONTyped(json, false);\n}\n\nexport function ImageUrlsFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): ImageUrls {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n full: json['full'],\n thumb: !exists(json, 'thumb') ? undefined : json['thumb'],\n };\n}\n\nexport function ImageUrlsToJSON(value?: ImageUrls | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n full: value.full,\n thumb: value.thumb,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface SharedPaginationMeta\n */\nexport interface SharedPaginationMeta {\n /**\n *\n * @type {number}\n * @memberof SharedPaginationMeta\n */\n totalPages: number;\n /**\n *\n * @type {number}\n * @memberof SharedPaginationMeta\n */\n totalEntries: number;\n /**\n *\n * @type {number}\n * @memberof SharedPaginationMeta\n */\n perPage: number;\n /**\n *\n * @type {number}\n * @memberof SharedPaginationMeta\n */\n page: number;\n}\n\nexport function SharedPaginationMetaFromJSON(json: any): SharedPaginationMeta {\n return SharedPaginationMetaFromJSONTyped(json, false);\n}\n\nexport function SharedPaginationMetaFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): SharedPaginationMeta {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n totalPages: json['total_pages'],\n totalEntries: json['total_entries'],\n perPage: json['per_page'],\n page: json['page'],\n };\n}\n\nexport function SharedPaginationMetaToJSON(\n value?: SharedPaginationMeta | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n total_pages: value.totalPages,\n total_entries: value.totalEntries,\n per_page: value.perPage,\n page: value.page,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubAccessRequestApprovePayloadTrusthubAccessRequest,\n TrusthubAccessRequestApprovePayloadTrusthubAccessRequestFromJSON,\n TrusthubAccessRequestApprovePayloadTrusthubAccessRequestFromJSONTyped,\n TrusthubAccessRequestApprovePayloadTrusthubAccessRequestToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubAccessRequestApprovePayload\n */\nexport interface TrusthubAccessRequestApprovePayload {\n /**\n *\n * @type {TrusthubAccessRequestApprovePayloadTrusthubAccessRequest}\n * @memberof TrusthubAccessRequestApprovePayload\n */\n trusthubAccessRequest: TrusthubAccessRequestApprovePayloadTrusthubAccessRequest;\n}\n\nexport function TrusthubAccessRequestApprovePayloadFromJSON(\n json: any\n): TrusthubAccessRequestApprovePayload {\n return TrusthubAccessRequestApprovePayloadFromJSONTyped(json, false);\n}\n\nexport function TrusthubAccessRequestApprovePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubAccessRequestApprovePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubAccessRequest:\n TrusthubAccessRequestApprovePayloadTrusthubAccessRequestFromJSON(\n json['trusthub_access_request']\n ),\n };\n}\n\nexport function TrusthubAccessRequestApprovePayloadToJSON(\n value?: TrusthubAccessRequestApprovePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_access_request:\n TrusthubAccessRequestApprovePayloadTrusthubAccessRequestToJSON(\n value.trusthubAccessRequest\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TrusthubAccessRequestApprovePayloadTrusthubAccessRequest\n */\nexport interface TrusthubAccessRequestApprovePayloadTrusthubAccessRequest {\n /**\n *\n * @type {Array}\n * @memberof TrusthubAccessRequestApprovePayloadTrusthubAccessRequest\n */\n documentToApproveIds?: Array;\n}\n\nexport function TrusthubAccessRequestApprovePayloadTrusthubAccessRequestFromJSON(\n json: any\n): TrusthubAccessRequestApprovePayloadTrusthubAccessRequest {\n return TrusthubAccessRequestApprovePayloadTrusthubAccessRequestFromJSONTyped(\n json,\n false\n );\n}\n\nexport function TrusthubAccessRequestApprovePayloadTrusthubAccessRequestFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubAccessRequestApprovePayloadTrusthubAccessRequest {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n documentToApproveIds: !exists(json, 'document_to_approve_ids')\n ? undefined\n : json['document_to_approve_ids'],\n };\n}\n\nexport function TrusthubAccessRequestApprovePayloadTrusthubAccessRequestToJSON(\n value?: TrusthubAccessRequestApprovePayloadTrusthubAccessRequest | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n document_to_approve_ids: value.documentToApproveIds,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubAccessRequestCreatePayloadTrusthubAccessRequest,\n TrusthubAccessRequestCreatePayloadTrusthubAccessRequestFromJSON,\n TrusthubAccessRequestCreatePayloadTrusthubAccessRequestFromJSONTyped,\n TrusthubAccessRequestCreatePayloadTrusthubAccessRequestToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubAccessRequestCreatePayload\n */\nexport interface TrusthubAccessRequestCreatePayload {\n /**\n *\n * @type {TrusthubAccessRequestCreatePayloadTrusthubAccessRequest}\n * @memberof TrusthubAccessRequestCreatePayload\n */\n trusthubAccessRequest: TrusthubAccessRequestCreatePayloadTrusthubAccessRequest;\n}\n\nexport function TrusthubAccessRequestCreatePayloadFromJSON(\n json: any\n): TrusthubAccessRequestCreatePayload {\n return TrusthubAccessRequestCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function TrusthubAccessRequestCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubAccessRequestCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubAccessRequest:\n TrusthubAccessRequestCreatePayloadTrusthubAccessRequestFromJSON(\n json['trusthub_access_request']\n ),\n };\n}\n\nexport function TrusthubAccessRequestCreatePayloadToJSON(\n value?: TrusthubAccessRequestCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_access_request:\n TrusthubAccessRequestCreatePayloadTrusthubAccessRequestToJSON(\n value.trusthubAccessRequest\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TrusthubAccessRequestCreatePayloadTrusthubAccessRequest\n */\nexport interface TrusthubAccessRequestCreatePayloadTrusthubAccessRequest {\n /**\n *\n * @type {string}\n * @memberof TrusthubAccessRequestCreatePayloadTrusthubAccessRequest\n */\n trusthubVendorUserId?: string;\n /**\n *\n * @type {Array}\n * @memberof TrusthubAccessRequestCreatePayloadTrusthubAccessRequest\n */\n trusthubDocumentIds?: Array;\n}\n\nexport function TrusthubAccessRequestCreatePayloadTrusthubAccessRequestFromJSON(\n json: any\n): TrusthubAccessRequestCreatePayloadTrusthubAccessRequest {\n return TrusthubAccessRequestCreatePayloadTrusthubAccessRequestFromJSONTyped(\n json,\n false\n );\n}\n\nexport function TrusthubAccessRequestCreatePayloadTrusthubAccessRequestFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubAccessRequestCreatePayloadTrusthubAccessRequest {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubVendorUserId: !exists(json, 'trusthub_vendor_user_id')\n ? undefined\n : json['trusthub_vendor_user_id'],\n trusthubDocumentIds: !exists(json, 'trusthub_document_ids')\n ? undefined\n : json['trusthub_document_ids'],\n };\n}\n\nexport function TrusthubAccessRequestCreatePayloadTrusthubAccessRequestToJSON(\n value?: TrusthubAccessRequestCreatePayloadTrusthubAccessRequest | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_vendor_user_id: value.trusthubVendorUserId,\n trusthub_document_ids: value.trusthubDocumentIds,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubDocumentModel,\n TrusthubDocumentModelFromJSON,\n TrusthubDocumentModelFromJSONTyped,\n TrusthubDocumentModelToJSON,\n TrusthubSharedStatus,\n TrusthubSharedStatusFromJSON,\n TrusthubSharedStatusFromJSONTyped,\n TrusthubSharedStatusToJSON,\n TrusthubVendorUserModel,\n TrusthubVendorUserModelFromJSON,\n TrusthubVendorUserModelFromJSONTyped,\n TrusthubVendorUserModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubAccessRequestModel\n */\nexport interface TrusthubAccessRequestModel {\n /**\n *\n * @type {string}\n * @memberof TrusthubAccessRequestModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubAccessRequestModel\n */\n createdAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubAccessRequestModel\n */\n updatedAt?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof TrusthubAccessRequestModel\n */\n all?: boolean;\n /**\n *\n * @type {TrusthubSharedStatus}\n * @memberof TrusthubAccessRequestModel\n */\n status: TrusthubSharedStatus;\n /**\n *\n * @type {TrusthubVendorUserModel}\n * @memberof TrusthubAccessRequestModel\n */\n trusthubVendorUser?: TrusthubVendorUserModel;\n /**\n *\n * @type {TrusthubVendorUserModel}\n * @memberof TrusthubAccessRequestModel\n */\n createdBy?: TrusthubVendorUserModel;\n /**\n *\n * @type {Array}\n * @memberof TrusthubAccessRequestModel\n */\n trusthubDocuments?: Array;\n}\n\nexport function TrusthubAccessRequestModelFromJSON(\n json: any\n): TrusthubAccessRequestModel {\n return TrusthubAccessRequestModelFromJSONTyped(json, false);\n}\n\nexport function TrusthubAccessRequestModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubAccessRequestModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n all: !exists(json, 'all') ? undefined : json['all'],\n status: TrusthubSharedStatusFromJSON(json['status']),\n trusthubVendorUser: !exists(json, 'trusthub_vendor_user')\n ? undefined\n : TrusthubVendorUserModelFromJSON(json['trusthub_vendor_user']),\n createdBy: !exists(json, 'created_by')\n ? undefined\n : TrusthubVendorUserModelFromJSON(json['created_by']),\n trusthubDocuments: !exists(json, 'trusthub_documents')\n ? undefined\n : (json['trusthub_documents'] as Array).map(\n TrusthubDocumentModelFromJSON\n ),\n };\n}\n\nexport function TrusthubAccessRequestModelToJSON(\n value?: TrusthubAccessRequestModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n all: value.all,\n status: TrusthubSharedStatusToJSON(value.status),\n trusthub_vendor_user: TrusthubVendorUserModelToJSON(\n value.trusthubVendorUser\n ),\n created_by: TrusthubVendorUserModelToJSON(value.createdBy),\n trusthub_documents:\n value.trusthubDocuments === undefined\n ? undefined\n : (value.trusthubDocuments as Array).map(\n TrusthubDocumentModelToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubCategorySectionIdentifier,\n TrusthubCategorySectionIdentifierFromJSON,\n TrusthubCategorySectionIdentifierFromJSONTyped,\n TrusthubCategorySectionIdentifierToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubCategoryModel\n */\nexport interface TrusthubCategoryModel {\n /**\n *\n * @type {string}\n * @memberof TrusthubCategoryModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubCategoryModel\n */\n createdAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubCategoryModel\n */\n updatedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubCategoryModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubCategoryModel\n */\n identifier: string;\n /**\n *\n * @type {number}\n * @memberof TrusthubCategoryModel\n */\n rowOrder: number | null;\n /**\n *\n * @type {TrusthubCategorySectionIdentifier}\n * @memberof TrusthubCategoryModel\n */\n sectionIdentifier: TrusthubCategorySectionIdentifier;\n}\n\nexport function TrusthubCategoryModelFromJSON(\n json: any\n): TrusthubCategoryModel {\n return TrusthubCategoryModelFromJSONTyped(json, false);\n}\n\nexport function TrusthubCategoryModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubCategoryModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n name: json['name'],\n identifier: json['identifier'],\n rowOrder: json['row_order'],\n sectionIdentifier: TrusthubCategorySectionIdentifierFromJSON(\n json['section_identifier']\n ),\n };\n}\n\nexport function TrusthubCategoryModelToJSON(\n value?: TrusthubCategoryModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n name: value.name,\n identifier: value.identifier,\n row_order: value.rowOrder,\n section_identifier: TrusthubCategorySectionIdentifierToJSON(\n value.sectionIdentifier\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum TrusthubCategorySectionIdentifier {\n EnvironmentalSocialAndGovernance = 'environmental_social_and_governance',\n Compliance = 'compliance',\n Certificates = 'certificates',\n Policies = 'policies',\n Reports = 'reports',\n Controls = 'controls',\n}\n\nexport function TrusthubCategorySectionIdentifierFromJSON(\n json: any\n): TrusthubCategorySectionIdentifier {\n return TrusthubCategorySectionIdentifierFromJSONTyped(json, false);\n}\n\nexport function TrusthubCategorySectionIdentifierFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubCategorySectionIdentifier {\n return json as TrusthubCategorySectionIdentifier;\n}\n\nexport function TrusthubCategorySectionIdentifierToJSON(\n value?: TrusthubCategorySectionIdentifier | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubCompanyCreatePayloadTrusthubCompany,\n TrusthubCompanyCreatePayloadTrusthubCompanyFromJSON,\n TrusthubCompanyCreatePayloadTrusthubCompanyFromJSONTyped,\n TrusthubCompanyCreatePayloadTrusthubCompanyToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubCompanyCreatePayload\n */\nexport interface TrusthubCompanyCreatePayload {\n /**\n *\n * @type {TrusthubCompanyCreatePayloadTrusthubCompany}\n * @memberof TrusthubCompanyCreatePayload\n */\n trusthubCompany: TrusthubCompanyCreatePayloadTrusthubCompany;\n}\n\nexport function TrusthubCompanyCreatePayloadFromJSON(\n json: any\n): TrusthubCompanyCreatePayload {\n return TrusthubCompanyCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function TrusthubCompanyCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubCompanyCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubCompany: TrusthubCompanyCreatePayloadTrusthubCompanyFromJSON(\n json['trusthub_company']\n ),\n };\n}\n\nexport function TrusthubCompanyCreatePayloadToJSON(\n value?: TrusthubCompanyCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_company: TrusthubCompanyCreatePayloadTrusthubCompanyToJSON(\n value.trusthubCompany\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubCompanyStatus,\n TrusthubCompanyStatusFromJSON,\n TrusthubCompanyStatusFromJSONTyped,\n TrusthubCompanyStatusToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubCompanyCreatePayloadTrusthubCompany\n */\nexport interface TrusthubCompanyCreatePayloadTrusthubCompany {\n /**\n *\n * @type {string}\n * @memberof TrusthubCompanyCreatePayloadTrusthubCompany\n */\n name: string;\n /**\n *\n * @type {TrusthubCompanyStatus}\n * @memberof TrusthubCompanyCreatePayloadTrusthubCompany\n */\n status?: TrusthubCompanyStatus;\n /**\n *\n * @type {Array}\n * @memberof TrusthubCompanyCreatePayloadTrusthubCompany\n */\n relationshipOwnerIds?: Array;\n}\n\nexport function TrusthubCompanyCreatePayloadTrusthubCompanyFromJSON(\n json: any\n): TrusthubCompanyCreatePayloadTrusthubCompany {\n return TrusthubCompanyCreatePayloadTrusthubCompanyFromJSONTyped(json, false);\n}\n\nexport function TrusthubCompanyCreatePayloadTrusthubCompanyFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubCompanyCreatePayloadTrusthubCompany {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: json['name'],\n status: !exists(json, 'status')\n ? undefined\n : TrusthubCompanyStatusFromJSON(json['status']),\n relationshipOwnerIds: !exists(json, 'relationship_owner_ids')\n ? undefined\n : json['relationship_owner_ids'],\n };\n}\n\nexport function TrusthubCompanyCreatePayloadTrusthubCompanyToJSON(\n value?: TrusthubCompanyCreatePayloadTrusthubCompany | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n status: TrusthubCompanyStatusToJSON(value.status),\n relationship_owner_ids: value.relationshipOwnerIds,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubCompanyExtendedAllOf,\n TrusthubCompanyExtendedAllOfFromJSON,\n TrusthubCompanyExtendedAllOfFromJSONTyped,\n TrusthubCompanyExtendedAllOfToJSON,\n TrusthubCompanyModel,\n TrusthubCompanyModelFromJSON,\n TrusthubCompanyModelFromJSONTyped,\n TrusthubCompanyModelToJSON,\n TrusthubCompanyStatus,\n TrusthubCompanyStatusFromJSON,\n TrusthubCompanyStatusFromJSONTyped,\n TrusthubCompanyStatusToJSON,\n TrusthubVendorUserModel,\n TrusthubVendorUserModelFromJSON,\n TrusthubVendorUserModelFromJSONTyped,\n TrusthubVendorUserModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubCompanyExtended\n */\nexport interface TrusthubCompanyExtended extends TrusthubCompanyModel {\n /**\n *\n * @type {Array}\n * @memberof TrusthubCompanyExtended\n */\n trusthubVendorUsers?: Array;\n}\n\nexport function TrusthubCompanyExtendedFromJSON(\n json: any\n): TrusthubCompanyExtended {\n return TrusthubCompanyExtendedFromJSONTyped(json, false);\n}\n\nexport function TrusthubCompanyExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubCompanyExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...TrusthubCompanyModelFromJSONTyped(json, ignoreDiscriminator),\n trusthubVendorUsers: !exists(json, 'trusthub_vendor_users')\n ? undefined\n : (json['trusthub_vendor_users'] as Array).map(\n TrusthubVendorUserModelFromJSON\n ),\n };\n}\n\nexport function TrusthubCompanyExtendedToJSON(\n value?: TrusthubCompanyExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...TrusthubCompanyModelToJSON(value),\n trusthub_vendor_users:\n value.trusthubVendorUsers === undefined\n ? undefined\n : (value.trusthubVendorUsers as Array).map(\n TrusthubVendorUserModelToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubCompanyStatus,\n TrusthubCompanyStatusFromJSON,\n TrusthubCompanyStatusFromJSONTyped,\n TrusthubCompanyStatusToJSON,\n TrusthubVendorUserModel,\n TrusthubVendorUserModelFromJSON,\n TrusthubVendorUserModelFromJSONTyped,\n TrusthubVendorUserModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubCompanyModel\n */\nexport interface TrusthubCompanyModel {\n /**\n *\n * @type {string}\n * @memberof TrusthubCompanyModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubCompanyModel\n */\n name: string;\n /**\n *\n * @type {TrusthubCompanyStatus}\n * @memberof TrusthubCompanyModel\n */\n status: TrusthubCompanyStatus;\n /**\n *\n * @type {Array}\n * @memberof TrusthubCompanyModel\n */\n relationshipOwners?: Array;\n /**\n *\n * @type {TrusthubVendorUserModel}\n * @memberof TrusthubCompanyModel\n */\n createdBy?: TrusthubVendorUserModel;\n /**\n *\n * @type {TrusthubVendorUserModel}\n * @memberof TrusthubCompanyModel\n */\n approvedBy?: TrusthubVendorUserModel;\n /**\n *\n * @type {string}\n * @memberof TrusthubCompanyModel\n */\n approvedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubCompanyModel\n */\n createdAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubCompanyModel\n */\n updatedAt?: string | null;\n}\n\nexport function TrusthubCompanyModelFromJSON(json: any): TrusthubCompanyModel {\n return TrusthubCompanyModelFromJSONTyped(json, false);\n}\n\nexport function TrusthubCompanyModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubCompanyModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n status: TrusthubCompanyStatusFromJSON(json['status']),\n relationshipOwners: !exists(json, 'relationship_owners')\n ? undefined\n : (json['relationship_owners'] as Array).map(\n TrusthubVendorUserModelFromJSON\n ),\n createdBy: !exists(json, 'created_by')\n ? undefined\n : TrusthubVendorUserModelFromJSON(json['created_by']),\n approvedBy: !exists(json, 'approved_by')\n ? undefined\n : TrusthubVendorUserModelFromJSON(json['approved_by']),\n approvedAt: !exists(json, 'approved_at') ? undefined : json['approved_at'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function TrusthubCompanyModelToJSON(\n value?: TrusthubCompanyModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n status: TrusthubCompanyStatusToJSON(value.status),\n relationship_owners:\n value.relationshipOwners === undefined\n ? undefined\n : (value.relationshipOwners as Array).map(\n TrusthubVendorUserModelToJSON\n ),\n created_by: TrusthubVendorUserModelToJSON(value.createdBy),\n approved_by: TrusthubVendorUserModelToJSON(value.approvedBy),\n approved_at: value.approvedAt,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum TrusthubCompanyStatus {\n WaitingForNda = 'waiting_for_nda',\n Approved = 'approved',\n Suspended = 'suspended',\n}\n\nexport function TrusthubCompanyStatusFromJSON(\n json: any\n): TrusthubCompanyStatus {\n return TrusthubCompanyStatusFromJSONTyped(json, false);\n}\n\nexport function TrusthubCompanyStatusFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubCompanyStatus {\n return json as TrusthubCompanyStatus;\n}\n\nexport function TrusthubCompanyStatusToJSON(\n value?: TrusthubCompanyStatus | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubCompanyUpdatePayloadTrusthubCompany,\n TrusthubCompanyUpdatePayloadTrusthubCompanyFromJSON,\n TrusthubCompanyUpdatePayloadTrusthubCompanyFromJSONTyped,\n TrusthubCompanyUpdatePayloadTrusthubCompanyToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubCompanyUpdatePayload\n */\nexport interface TrusthubCompanyUpdatePayload {\n /**\n *\n * @type {TrusthubCompanyUpdatePayloadTrusthubCompany}\n * @memberof TrusthubCompanyUpdatePayload\n */\n trusthubCompany: TrusthubCompanyUpdatePayloadTrusthubCompany;\n}\n\nexport function TrusthubCompanyUpdatePayloadFromJSON(\n json: any\n): TrusthubCompanyUpdatePayload {\n return TrusthubCompanyUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function TrusthubCompanyUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubCompanyUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubCompany: TrusthubCompanyUpdatePayloadTrusthubCompanyFromJSON(\n json['trusthub_company']\n ),\n };\n}\n\nexport function TrusthubCompanyUpdatePayloadToJSON(\n value?: TrusthubCompanyUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_company: TrusthubCompanyUpdatePayloadTrusthubCompanyToJSON(\n value.trusthubCompany\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubCompanyStatus,\n TrusthubCompanyStatusFromJSON,\n TrusthubCompanyStatusFromJSONTyped,\n TrusthubCompanyStatusToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubCompanyUpdatePayloadTrusthubCompany\n */\nexport interface TrusthubCompanyUpdatePayloadTrusthubCompany {\n /**\n *\n * @type {string}\n * @memberof TrusthubCompanyUpdatePayloadTrusthubCompany\n */\n name?: string;\n /**\n *\n * @type {TrusthubCompanyStatus}\n * @memberof TrusthubCompanyUpdatePayloadTrusthubCompany\n */\n status?: TrusthubCompanyStatus;\n /**\n *\n * @type {Array}\n * @memberof TrusthubCompanyUpdatePayloadTrusthubCompany\n */\n relationshipOwnerIds?: Array;\n}\n\nexport function TrusthubCompanyUpdatePayloadTrusthubCompanyFromJSON(\n json: any\n): TrusthubCompanyUpdatePayloadTrusthubCompany {\n return TrusthubCompanyUpdatePayloadTrusthubCompanyFromJSONTyped(json, false);\n}\n\nexport function TrusthubCompanyUpdatePayloadTrusthubCompanyFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubCompanyUpdatePayloadTrusthubCompany {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n status: !exists(json, 'status')\n ? undefined\n : TrusthubCompanyStatusFromJSON(json['status']),\n relationshipOwnerIds: !exists(json, 'relationship_owner_ids')\n ? undefined\n : json['relationship_owner_ids'],\n };\n}\n\nexport function TrusthubCompanyUpdatePayloadTrusthubCompanyToJSON(\n value?: TrusthubCompanyUpdatePayloadTrusthubCompany | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n status: TrusthubCompanyStatusToJSON(value.status),\n relationship_owner_ids: value.relationshipOwnerIds,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubDocumentExtendedAllOf,\n TrusthubDocumentExtendedAllOfFromJSON,\n TrusthubDocumentExtendedAllOfFromJSONTyped,\n TrusthubDocumentExtendedAllOfToJSON,\n TrusthubDocumentModel,\n TrusthubDocumentModelFromJSON,\n TrusthubDocumentModelFromJSONTyped,\n TrusthubDocumentModelToJSON,\n TrusthubDocumentModelExtra,\n TrusthubDocumentModelExtraFromJSON,\n TrusthubDocumentModelExtraFromJSONTyped,\n TrusthubDocumentModelExtraToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubDocumentExtended\n */\nexport interface TrusthubDocumentExtended extends TrusthubDocumentModel {\n /**\n *\n * @type {boolean}\n * @memberof TrusthubDocumentExtended\n */\n requested: boolean;\n}\n\nexport function TrusthubDocumentExtendedFromJSON(\n json: any\n): TrusthubDocumentExtended {\n return TrusthubDocumentExtendedFromJSONTyped(json, false);\n}\n\nexport function TrusthubDocumentExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubDocumentExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...TrusthubDocumentModelFromJSONTyped(json, ignoreDiscriminator),\n requested: json['requested'],\n };\n}\n\nexport function TrusthubDocumentExtendedToJSON(\n value?: TrusthubDocumentExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...TrusthubDocumentModelToJSON(value),\n requested: value.requested,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubDocumentModelExtra,\n TrusthubDocumentModelExtraFromJSON,\n TrusthubDocumentModelExtraFromJSONTyped,\n TrusthubDocumentModelExtraToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubDocumentModel\n */\nexport interface TrusthubDocumentModel {\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentModel\n */\n createdAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentModel\n */\n updatedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentModel\n */\n description?: string | null;\n /**\n *\n * @type {number}\n * @memberof TrusthubDocumentModel\n */\n rowOrder?: number | null;\n /**\n *\n * @type {boolean}\n * @memberof TrusthubDocumentModel\n */\n restricted?: boolean;\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentModel\n */\n visibility: TrusthubDocumentModelVisibilityEnum;\n /**\n *\n * @type {TrusthubDocumentModelExtra}\n * @memberof TrusthubDocumentModel\n */\n extra?: TrusthubDocumentModelExtra | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentModel\n */\n documentId: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentModel\n */\n documentType: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentModel\n */\n trusthubCategoryId: string | null;\n}\n\nexport function TrusthubDocumentModelFromJSON(\n json: any\n): TrusthubDocumentModel {\n return TrusthubDocumentModelFromJSONTyped(json, false);\n}\n\nexport function TrusthubDocumentModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubDocumentModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n name: json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n rowOrder: !exists(json, 'row_order') ? undefined : json['row_order'],\n restricted: !exists(json, 'restricted') ? undefined : json['restricted'],\n visibility: json['visibility'],\n extra: !exists(json, 'extra')\n ? undefined\n : TrusthubDocumentModelExtraFromJSON(json['extra']),\n documentId: json['document_id'],\n documentType: json['document_type'],\n trusthubCategoryId: json['trusthub_category_id'],\n };\n}\n\nexport function TrusthubDocumentModelToJSON(\n value?: TrusthubDocumentModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n name: value.name,\n description: value.description,\n row_order: value.rowOrder,\n restricted: value.restricted,\n visibility: value.visibility,\n extra: TrusthubDocumentModelExtraToJSON(value.extra),\n document_id: value.documentId,\n document_type: value.documentType,\n trusthub_category_id: value.trusthubCategoryId,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum TrusthubDocumentModelVisibilityEnum {\n Public = 'public',\n PrivateUnlocked = 'private_unlocked',\n PrivateLocked = 'private_locked',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TrusthubDocumentModelExtra\n */\nexport interface TrusthubDocumentModelExtra {\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentModelExtra\n */\n controlStatus?: TrusthubDocumentModelExtraControlStatusEnum;\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentModelExtra\n */\n frameworkName?: string | null;\n}\n\nexport function TrusthubDocumentModelExtraFromJSON(\n json: any\n): TrusthubDocumentModelExtra {\n return TrusthubDocumentModelExtraFromJSONTyped(json, false);\n}\n\nexport function TrusthubDocumentModelExtraFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubDocumentModelExtra {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n controlStatus: !exists(json, 'control_status')\n ? undefined\n : json['control_status'],\n frameworkName: !exists(json, 'framework_name')\n ? undefined\n : json['framework_name'],\n };\n}\n\nexport function TrusthubDocumentModelExtraToJSON(\n value?: TrusthubDocumentModelExtra | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n control_status: value.controlStatus,\n framework_name: value.frameworkName,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum TrusthubDocumentModelExtraControlStatusEnum {\n Pending = 'pending',\n Failed = 'failed',\n Compliant = 'compliant',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TrusthubDocumentPermissionModel\n */\nexport interface TrusthubDocumentPermissionModel {\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentPermissionModel\n */\n id: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentPermissionModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentPermissionModel\n */\n documentType: TrusthubDocumentPermissionModelDocumentTypeEnum;\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentPermissionModel\n */\n status: TrusthubDocumentPermissionModelStatusEnum;\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentPermissionModel\n */\n createdAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubDocumentPermissionModel\n */\n updatedAt?: string | null;\n}\n\nexport function TrusthubDocumentPermissionModelFromJSON(\n json: any\n): TrusthubDocumentPermissionModel {\n return TrusthubDocumentPermissionModelFromJSONTyped(json, false);\n}\n\nexport function TrusthubDocumentPermissionModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubDocumentPermissionModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n documentType: json['document_type'],\n status: json['status'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n };\n}\n\nexport function TrusthubDocumentPermissionModelToJSON(\n value?: TrusthubDocumentPermissionModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n document_type: value.documentType,\n status: value.status,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum TrusthubDocumentPermissionModelDocumentTypeEnum {\n VendorDocument = 'VendorDocument',\n Certificate = 'Certificate',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum TrusthubDocumentPermissionModelStatusEnum {\n Pending = 'pending',\n Approved = 'approved',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubInvitationCreatePayloadTrusthubUser,\n TrusthubInvitationCreatePayloadTrusthubUserFromJSON,\n TrusthubInvitationCreatePayloadTrusthubUserFromJSONTyped,\n TrusthubInvitationCreatePayloadTrusthubUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubInvitationCreatePayload\n */\nexport interface TrusthubInvitationCreatePayload {\n /**\n *\n * @type {TrusthubInvitationCreatePayloadTrusthubUser}\n * @memberof TrusthubInvitationCreatePayload\n */\n trusthubUser: TrusthubInvitationCreatePayloadTrusthubUser;\n}\n\nexport function TrusthubInvitationCreatePayloadFromJSON(\n json: any\n): TrusthubInvitationCreatePayload {\n return TrusthubInvitationCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function TrusthubInvitationCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubInvitationCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubUser: TrusthubInvitationCreatePayloadTrusthubUserFromJSON(\n json['trusthub_user']\n ),\n };\n}\n\nexport function TrusthubInvitationCreatePayloadToJSON(\n value?: TrusthubInvitationCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_user: TrusthubInvitationCreatePayloadTrusthubUserToJSON(\n value.trusthubUser\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TrusthubInvitationCreatePayloadTrusthubUser\n */\nexport interface TrusthubInvitationCreatePayloadTrusthubUser {\n /**\n *\n * @type {string}\n * @memberof TrusthubInvitationCreatePayloadTrusthubUser\n */\n email?: string;\n /**\n *\n * @type {number}\n * @memberof TrusthubInvitationCreatePayloadTrusthubUser\n */\n vendorTrusthubId?: number;\n /**\n *\n * @type {string}\n * @memberof TrusthubInvitationCreatePayloadTrusthubUser\n */\n domain?: string;\n}\n\nexport function TrusthubInvitationCreatePayloadTrusthubUserFromJSON(\n json: any\n): TrusthubInvitationCreatePayloadTrusthubUser {\n return TrusthubInvitationCreatePayloadTrusthubUserFromJSONTyped(json, false);\n}\n\nexport function TrusthubInvitationCreatePayloadTrusthubUserFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubInvitationCreatePayloadTrusthubUser {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n email: !exists(json, 'email') ? undefined : json['email'],\n vendorTrusthubId: !exists(json, 'vendor_trusthub_id')\n ? undefined\n : json['vendor_trusthub_id'],\n domain: !exists(json, 'domain') ? undefined : json['domain'],\n };\n}\n\nexport function TrusthubInvitationCreatePayloadTrusthubUserToJSON(\n value?: TrusthubInvitationCreatePayloadTrusthubUser | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n email: value.email,\n vendor_trusthub_id: value.vendorTrusthubId,\n domain: value.domain,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TrusthubInvitationModel\n */\nexport interface TrusthubInvitationModel {\n /**\n *\n * @type {string}\n * @memberof TrusthubInvitationModel\n */\n email?: string;\n}\n\nexport function TrusthubInvitationModelFromJSON(\n json: any\n): TrusthubInvitationModel {\n return TrusthubInvitationModelFromJSONTyped(json, false);\n}\n\nexport function TrusthubInvitationModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubInvitationModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n email: !exists(json, 'email') ? undefined : json['email'],\n };\n}\n\nexport function TrusthubInvitationModelToJSON(\n value?: TrusthubInvitationModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n email: value.email,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubInvitationUpdatePayloadTrusthubUser,\n TrusthubInvitationUpdatePayloadTrusthubUserFromJSON,\n TrusthubInvitationUpdatePayloadTrusthubUserFromJSONTyped,\n TrusthubInvitationUpdatePayloadTrusthubUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubInvitationUpdatePayload\n */\nexport interface TrusthubInvitationUpdatePayload {\n /**\n *\n * @type {TrusthubInvitationUpdatePayloadTrusthubUser}\n * @memberof TrusthubInvitationUpdatePayload\n */\n trusthubUser: TrusthubInvitationUpdatePayloadTrusthubUser;\n}\n\nexport function TrusthubInvitationUpdatePayloadFromJSON(\n json: any\n): TrusthubInvitationUpdatePayload {\n return TrusthubInvitationUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function TrusthubInvitationUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubInvitationUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubUser: TrusthubInvitationUpdatePayloadTrusthubUserFromJSON(\n json['trusthub_user']\n ),\n };\n}\n\nexport function TrusthubInvitationUpdatePayloadToJSON(\n value?: TrusthubInvitationUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_user: TrusthubInvitationUpdatePayloadTrusthubUserToJSON(\n value.trusthubUser\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TrusthubInvitationUpdatePayloadTrusthubUser\n */\nexport interface TrusthubInvitationUpdatePayloadTrusthubUser {\n /**\n *\n * @type {string}\n * @memberof TrusthubInvitationUpdatePayloadTrusthubUser\n */\n invitationToken?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubInvitationUpdatePayloadTrusthubUser\n */\n password?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubInvitationUpdatePayloadTrusthubUser\n */\n passwordConfirmation?: string;\n}\n\nexport function TrusthubInvitationUpdatePayloadTrusthubUserFromJSON(\n json: any\n): TrusthubInvitationUpdatePayloadTrusthubUser {\n return TrusthubInvitationUpdatePayloadTrusthubUserFromJSONTyped(json, false);\n}\n\nexport function TrusthubInvitationUpdatePayloadTrusthubUserFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubInvitationUpdatePayloadTrusthubUser {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n invitationToken: !exists(json, 'invitation_token')\n ? undefined\n : json['invitation_token'],\n password: !exists(json, 'password') ? undefined : json['password'],\n passwordConfirmation: !exists(json, 'password_confirmation')\n ? undefined\n : json['password_confirmation'],\n };\n}\n\nexport function TrusthubInvitationUpdatePayloadTrusthubUserToJSON(\n value?: TrusthubInvitationUpdatePayloadTrusthubUser | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n invitation_token: value.invitationToken,\n password: value.password,\n password_confirmation: value.passwordConfirmation,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubDocumentExtended,\n TrusthubDocumentExtendedFromJSON,\n TrusthubDocumentExtendedFromJSONTyped,\n TrusthubDocumentExtendedToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubSectionModel\n */\nexport interface TrusthubSectionModel {\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionModel\n */\n createdAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionModel\n */\n updatedAt?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionModel\n */\n identifier: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionModel\n */\n description: string | null;\n /**\n *\n * @type {boolean}\n * @memberof TrusthubSectionModel\n */\n required: boolean;\n /**\n *\n * @type {boolean}\n * @memberof TrusthubSectionModel\n */\n visible: boolean;\n /**\n *\n * @type {number}\n * @memberof TrusthubSectionModel\n */\n rowOrder?: number | null;\n /**\n *\n * @type {Array}\n * @memberof TrusthubSectionModel\n */\n trusthubDocuments?: Array;\n}\n\nexport function TrusthubSectionModelFromJSON(json: any): TrusthubSectionModel {\n return TrusthubSectionModelFromJSONTyped(json, false);\n}\n\nexport function TrusthubSectionModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubSectionModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n createdAt: !exists(json, 'created_at') ? undefined : json['created_at'],\n updatedAt: !exists(json, 'updated_at') ? undefined : json['updated_at'],\n name: json['name'],\n identifier: json['identifier'],\n description: json['description'],\n required: json['required'],\n visible: json['visible'],\n rowOrder: !exists(json, 'row_order') ? undefined : json['row_order'],\n trusthubDocuments: !exists(json, 'trusthub_documents')\n ? undefined\n : (json['trusthub_documents'] as Array).map(\n TrusthubDocumentExtendedFromJSON\n ),\n };\n}\n\nexport function TrusthubSectionModelToJSON(\n value?: TrusthubSectionModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n created_at: value.createdAt,\n updated_at: value.updatedAt,\n name: value.name,\n identifier: value.identifier,\n description: value.description,\n required: value.required,\n visible: value.visible,\n row_order: value.rowOrder,\n trusthub_documents:\n value.trusthubDocuments === undefined\n ? undefined\n : (value.trusthubDocuments as Array).map(\n TrusthubDocumentExtendedToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubSectionUpdatePayloadTrusthubSection,\n TrusthubSectionUpdatePayloadTrusthubSectionFromJSON,\n TrusthubSectionUpdatePayloadTrusthubSectionFromJSONTyped,\n TrusthubSectionUpdatePayloadTrusthubSectionToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubSectionUpdatePayload\n */\nexport interface TrusthubSectionUpdatePayload {\n /**\n *\n * @type {TrusthubSectionUpdatePayloadTrusthubSection}\n * @memberof TrusthubSectionUpdatePayload\n */\n trusthubSection: TrusthubSectionUpdatePayloadTrusthubSection;\n}\n\nexport function TrusthubSectionUpdatePayloadFromJSON(\n json: any\n): TrusthubSectionUpdatePayload {\n return TrusthubSectionUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function TrusthubSectionUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubSectionUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubSection: TrusthubSectionUpdatePayloadTrusthubSectionFromJSON(\n json['trusthub_section']\n ),\n };\n}\n\nexport function TrusthubSectionUpdatePayloadToJSON(\n value?: TrusthubSectionUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_section: TrusthubSectionUpdatePayloadTrusthubSectionToJSON(\n value.trusthubSection\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes,\n TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesFromJSON,\n TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesFromJSONTyped,\n TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubSectionUpdatePayloadTrusthubSection\n */\nexport interface TrusthubSectionUpdatePayloadTrusthubSection {\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionUpdatePayloadTrusthubSection\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionUpdatePayloadTrusthubSection\n */\n description?: string | null;\n /**\n *\n * @type {boolean}\n * @memberof TrusthubSectionUpdatePayloadTrusthubSection\n */\n visible?: boolean;\n /**\n *\n * @type {Array}\n * @memberof TrusthubSectionUpdatePayloadTrusthubSection\n */\n trusthubDocumentsAttributes?: Array;\n}\n\nexport function TrusthubSectionUpdatePayloadTrusthubSectionFromJSON(\n json: any\n): TrusthubSectionUpdatePayloadTrusthubSection {\n return TrusthubSectionUpdatePayloadTrusthubSectionFromJSONTyped(json, false);\n}\n\nexport function TrusthubSectionUpdatePayloadTrusthubSectionFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubSectionUpdatePayloadTrusthubSection {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n name: !exists(json, 'name') ? undefined : json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n visible: !exists(json, 'visible') ? undefined : json['visible'],\n trusthubDocumentsAttributes: !exists(json, 'trusthub_documents_attributes')\n ? undefined\n : (json['trusthub_documents_attributes'] as Array).map(\n TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesFromJSON\n ),\n };\n}\n\nexport function TrusthubSectionUpdatePayloadTrusthubSectionToJSON(\n value?: TrusthubSectionUpdatePayloadTrusthubSection | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n name: value.name,\n description: value.description,\n visible: value.visible,\n trusthub_documents_attributes:\n value.trusthubDocumentsAttributes === undefined\n ? undefined\n : (value.trusthubDocumentsAttributes as Array).map(\n TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesToJSON\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes\n */\nexport interface TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes {\n /**\n *\n * @type {boolean}\n * @memberof TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes\n */\n destroy?: boolean;\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes\n */\n name?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes\n */\n description?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes\n */\n documentId?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes\n */\n documentType?: TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesDocumentTypeEnum;\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes\n */\n trusthubCategoryId?: string | null;\n /**\n *\n * @type {number}\n * @memberof TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes\n */\n rowOrderPosition?: number | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes\n */\n visibility?: TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesVisibilityEnum;\n}\n\nexport function TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesFromJSON(\n json: any\n): TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes {\n return TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesFromJSONTyped(\n json,\n false\n );\n}\n\nexport function TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n destroy: !exists(json, '_destroy') ? undefined : json['_destroy'],\n id: !exists(json, 'id') ? undefined : json['id'],\n name: !exists(json, 'name') ? undefined : json['name'],\n description: !exists(json, 'description') ? undefined : json['description'],\n documentId: !exists(json, 'document_id') ? undefined : json['document_id'],\n documentType: !exists(json, 'document_type')\n ? undefined\n : json['document_type'],\n trusthubCategoryId: !exists(json, 'trusthub_category_id')\n ? undefined\n : json['trusthub_category_id'],\n rowOrderPosition: !exists(json, 'row_order_position')\n ? undefined\n : json['row_order_position'],\n visibility: !exists(json, 'visibility') ? undefined : json['visibility'],\n };\n}\n\nexport function TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesToJSON(\n value?: TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributes | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n _destroy: value.destroy,\n id: value.id,\n name: value.name,\n description: value.description,\n document_id: value.documentId,\n document_type: value.documentType,\n trusthub_category_id: value.trusthubCategoryId,\n row_order_position: value.rowOrderPosition,\n visibility: value.visibility,\n };\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesDocumentTypeEnum {\n VendorDocument = 'VendorDocument',\n Certificate = 'Certificate',\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesVisibilityEnum {\n Public = 'public',\n PrivateUnlocked = 'private_unlocked',\n PrivateLocked = 'private_locked',\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport { Image, ImageFromJSON, ImageFromJSONTyped, ImageToJSON } from './';\n\n/**\n *\n * @export\n * @interface TrusthubSettingsModel\n */\nexport interface TrusthubSettingsModel {\n /**\n *\n * @type {string}\n * @memberof TrusthubSettingsModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubSettingsModel\n */\n name: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubSettingsModel\n */\n domain: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubSettingsModel\n */\n email: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubSettingsModel\n */\n description: string | null;\n /**\n *\n * @type {boolean}\n * @memberof TrusthubSettingsModel\n */\n published: boolean;\n /**\n *\n * @type {boolean}\n * @memberof TrusthubSettingsModel\n */\n useColourGradient?: boolean;\n /**\n *\n * @type {string}\n * @memberof TrusthubSettingsModel\n */\n brandingColor: string | null;\n /**\n *\n * @type {Image}\n * @memberof TrusthubSettingsModel\n */\n logo: Image;\n /**\n *\n * @type {Image}\n * @memberof TrusthubSettingsModel\n */\n favicon: Image;\n}\n\nexport function TrusthubSettingsModelFromJSON(\n json: any\n): TrusthubSettingsModel {\n return TrusthubSettingsModelFromJSONTyped(json, false);\n}\n\nexport function TrusthubSettingsModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubSettingsModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n name: json['name'],\n domain: json['domain'],\n email: json['email'],\n description: json['description'],\n published: json['published'],\n useColourGradient: !exists(json, 'use_colour_gradient')\n ? undefined\n : json['use_colour_gradient'],\n brandingColor: json['branding_color'],\n logo: ImageFromJSON(json['logo']),\n favicon: ImageFromJSON(json['favicon']),\n };\n}\n\nexport function TrusthubSettingsModelToJSON(\n value?: TrusthubSettingsModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n name: value.name,\n domain: value.domain,\n email: value.email,\n description: value.description,\n published: value.published,\n use_colour_gradient: value.useColourGradient,\n branding_color: value.brandingColor,\n logo: ImageToJSON(value.logo),\n favicon: ImageToJSON(value.favicon),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum TrusthubSharedStatus {\n Pending = 'pending',\n Approved = 'approved',\n Denied = 'denied',\n}\n\nexport function TrusthubSharedStatusFromJSON(json: any): TrusthubSharedStatus {\n return TrusthubSharedStatusFromJSONTyped(json, false);\n}\n\nexport function TrusthubSharedStatusFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubSharedStatus {\n return json as TrusthubSharedStatus;\n}\n\nexport function TrusthubSharedStatusToJSON(\n value?: TrusthubSharedStatus | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TrusthubUserModel\n */\nexport interface TrusthubUserModel {\n /**\n *\n * @type {string}\n * @memberof TrusthubUserModel\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubUserModel\n */\n email?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubUserModel\n */\n firstName?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubUserModel\n */\n lastName?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubUserModel\n */\n fullName?: string | null;\n}\n\nexport function TrusthubUserModelFromJSON(json: any): TrusthubUserModel {\n return TrusthubUserModelFromJSONTyped(json, false);\n}\n\nexport function TrusthubUserModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubUserModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n email: !exists(json, 'email') ? undefined : json['email'],\n firstName: !exists(json, 'first_name') ? undefined : json['first_name'],\n lastName: !exists(json, 'last_name') ? undefined : json['last_name'],\n fullName: !exists(json, 'full_name') ? undefined : json['full_name'],\n };\n}\n\nexport function TrusthubUserModelToJSON(value?: TrusthubUserModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n email: value.email,\n first_name: value.firstName,\n last_name: value.lastName,\n full_name: value.fullName,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubUserPasswordForgotPayloadTrusthubUser,\n TrusthubUserPasswordForgotPayloadTrusthubUserFromJSON,\n TrusthubUserPasswordForgotPayloadTrusthubUserFromJSONTyped,\n TrusthubUserPasswordForgotPayloadTrusthubUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubUserPasswordForgotPayload\n */\nexport interface TrusthubUserPasswordForgotPayload {\n /**\n *\n * @type {TrusthubUserPasswordForgotPayloadTrusthubUser}\n * @memberof TrusthubUserPasswordForgotPayload\n */\n trusthubUser: TrusthubUserPasswordForgotPayloadTrusthubUser;\n}\n\nexport function TrusthubUserPasswordForgotPayloadFromJSON(\n json: any\n): TrusthubUserPasswordForgotPayload {\n return TrusthubUserPasswordForgotPayloadFromJSONTyped(json, false);\n}\n\nexport function TrusthubUserPasswordForgotPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubUserPasswordForgotPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubUser: TrusthubUserPasswordForgotPayloadTrusthubUserFromJSON(\n json['trusthub_user']\n ),\n };\n}\n\nexport function TrusthubUserPasswordForgotPayloadToJSON(\n value?: TrusthubUserPasswordForgotPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_user: TrusthubUserPasswordForgotPayloadTrusthubUserToJSON(\n value.trusthubUser\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TrusthubUserPasswordForgotPayloadTrusthubUser\n */\nexport interface TrusthubUserPasswordForgotPayloadTrusthubUser {\n /**\n *\n * @type {string}\n * @memberof TrusthubUserPasswordForgotPayloadTrusthubUser\n */\n email: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubUserPasswordForgotPayloadTrusthubUser\n */\n domain: string;\n}\n\nexport function TrusthubUserPasswordForgotPayloadTrusthubUserFromJSON(\n json: any\n): TrusthubUserPasswordForgotPayloadTrusthubUser {\n return TrusthubUserPasswordForgotPayloadTrusthubUserFromJSONTyped(\n json,\n false\n );\n}\n\nexport function TrusthubUserPasswordForgotPayloadTrusthubUserFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubUserPasswordForgotPayloadTrusthubUser {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n email: json['email'],\n domain: json['domain'],\n };\n}\n\nexport function TrusthubUserPasswordForgotPayloadTrusthubUserToJSON(\n value?: TrusthubUserPasswordForgotPayloadTrusthubUser | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n email: value.email,\n domain: value.domain,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubUserPasswordResetPayloadTrusthubUser,\n TrusthubUserPasswordResetPayloadTrusthubUserFromJSON,\n TrusthubUserPasswordResetPayloadTrusthubUserFromJSONTyped,\n TrusthubUserPasswordResetPayloadTrusthubUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubUserPasswordResetPayload\n */\nexport interface TrusthubUserPasswordResetPayload {\n /**\n *\n * @type {TrusthubUserPasswordResetPayloadTrusthubUser}\n * @memberof TrusthubUserPasswordResetPayload\n */\n trusthubUser: TrusthubUserPasswordResetPayloadTrusthubUser;\n}\n\nexport function TrusthubUserPasswordResetPayloadFromJSON(\n json: any\n): TrusthubUserPasswordResetPayload {\n return TrusthubUserPasswordResetPayloadFromJSONTyped(json, false);\n}\n\nexport function TrusthubUserPasswordResetPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubUserPasswordResetPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubUser: TrusthubUserPasswordResetPayloadTrusthubUserFromJSON(\n json['trusthub_user']\n ),\n };\n}\n\nexport function TrusthubUserPasswordResetPayloadToJSON(\n value?: TrusthubUserPasswordResetPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_user: TrusthubUserPasswordResetPayloadTrusthubUserToJSON(\n value.trusthubUser\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TrusthubUserPasswordResetPayloadTrusthubUser\n */\nexport interface TrusthubUserPasswordResetPayloadTrusthubUser {\n /**\n *\n * @type {string}\n * @memberof TrusthubUserPasswordResetPayloadTrusthubUser\n */\n resetPasswordToken: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubUserPasswordResetPayloadTrusthubUser\n */\n password: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubUserPasswordResetPayloadTrusthubUser\n */\n passwordConfirmation: string;\n}\n\nexport function TrusthubUserPasswordResetPayloadTrusthubUserFromJSON(\n json: any\n): TrusthubUserPasswordResetPayloadTrusthubUser {\n return TrusthubUserPasswordResetPayloadTrusthubUserFromJSONTyped(json, false);\n}\n\nexport function TrusthubUserPasswordResetPayloadTrusthubUserFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubUserPasswordResetPayloadTrusthubUser {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n resetPasswordToken: json['reset_password_token'],\n password: json['password'],\n passwordConfirmation: json['password_confirmation'],\n };\n}\n\nexport function TrusthubUserPasswordResetPayloadTrusthubUserToJSON(\n value?: TrusthubUserPasswordResetPayloadTrusthubUser | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n reset_password_token: value.resetPasswordToken,\n password: value.password,\n password_confirmation: value.passwordConfirmation,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubUserSignInPayloadTrusthubUser,\n TrusthubUserSignInPayloadTrusthubUserFromJSON,\n TrusthubUserSignInPayloadTrusthubUserFromJSONTyped,\n TrusthubUserSignInPayloadTrusthubUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubUserSignInPayload\n */\nexport interface TrusthubUserSignInPayload {\n /**\n *\n * @type {TrusthubUserSignInPayloadTrusthubUser}\n * @memberof TrusthubUserSignInPayload\n */\n trusthubUser: TrusthubUserSignInPayloadTrusthubUser;\n}\n\nexport function TrusthubUserSignInPayloadFromJSON(\n json: any\n): TrusthubUserSignInPayload {\n return TrusthubUserSignInPayloadFromJSONTyped(json, false);\n}\n\nexport function TrusthubUserSignInPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubUserSignInPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubUser: TrusthubUserSignInPayloadTrusthubUserFromJSON(\n json['trusthub_user']\n ),\n };\n}\n\nexport function TrusthubUserSignInPayloadToJSON(\n value?: TrusthubUserSignInPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_user: TrusthubUserSignInPayloadTrusthubUserToJSON(\n value.trusthubUser\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TrusthubUserSignInPayloadTrusthubUser\n */\nexport interface TrusthubUserSignInPayloadTrusthubUser {\n /**\n *\n * @type {string}\n * @memberof TrusthubUserSignInPayloadTrusthubUser\n */\n email: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubUserSignInPayloadTrusthubUser\n */\n password: string;\n}\n\nexport function TrusthubUserSignInPayloadTrusthubUserFromJSON(\n json: any\n): TrusthubUserSignInPayloadTrusthubUser {\n return TrusthubUserSignInPayloadTrusthubUserFromJSONTyped(json, false);\n}\n\nexport function TrusthubUserSignInPayloadTrusthubUserFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubUserSignInPayloadTrusthubUser {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n email: json['email'],\n password: json['password'],\n };\n}\n\nexport function TrusthubUserSignInPayloadTrusthubUserToJSON(\n value?: TrusthubUserSignInPayloadTrusthubUser | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n email: value.email,\n password: value.password,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubUserSignUpPayloadTrusthubUser,\n TrusthubUserSignUpPayloadTrusthubUserFromJSON,\n TrusthubUserSignUpPayloadTrusthubUserFromJSONTyped,\n TrusthubUserSignUpPayloadTrusthubUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubUserSignUpPayload\n */\nexport interface TrusthubUserSignUpPayload {\n /**\n *\n * @type {TrusthubUserSignUpPayloadTrusthubUser}\n * @memberof TrusthubUserSignUpPayload\n */\n trusthubUser: TrusthubUserSignUpPayloadTrusthubUser;\n}\n\nexport function TrusthubUserSignUpPayloadFromJSON(\n json: any\n): TrusthubUserSignUpPayload {\n return TrusthubUserSignUpPayloadFromJSONTyped(json, false);\n}\n\nexport function TrusthubUserSignUpPayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubUserSignUpPayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubUser: TrusthubUserSignUpPayloadTrusthubUserFromJSON(\n json['trusthub_user']\n ),\n };\n}\n\nexport function TrusthubUserSignUpPayloadToJSON(\n value?: TrusthubUserSignUpPayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_user: TrusthubUserSignUpPayloadTrusthubUserToJSON(\n value.trusthubUser\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TrusthubUserSignUpPayloadTrusthubUser\n */\nexport interface TrusthubUserSignUpPayloadTrusthubUser {\n /**\n *\n * @type {string}\n * @memberof TrusthubUserSignUpPayloadTrusthubUser\n */\n firstName?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubUserSignUpPayloadTrusthubUser\n */\n lastName?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubUserSignUpPayloadTrusthubUser\n */\n email: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubUserSignUpPayloadTrusthubUser\n */\n password: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubUserSignUpPayloadTrusthubUser\n */\n passwordConfirmation?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubUserSignUpPayloadTrusthubUser\n */\n domain: string;\n}\n\nexport function TrusthubUserSignUpPayloadTrusthubUserFromJSON(\n json: any\n): TrusthubUserSignUpPayloadTrusthubUser {\n return TrusthubUserSignUpPayloadTrusthubUserFromJSONTyped(json, false);\n}\n\nexport function TrusthubUserSignUpPayloadTrusthubUserFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubUserSignUpPayloadTrusthubUser {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n firstName: !exists(json, 'first_name') ? undefined : json['first_name'],\n lastName: !exists(json, 'last_name') ? undefined : json['last_name'],\n email: json['email'],\n password: json['password'],\n passwordConfirmation: !exists(json, 'password_confirmation')\n ? undefined\n : json['password_confirmation'],\n domain: json['domain'],\n };\n}\n\nexport function TrusthubUserSignUpPayloadTrusthubUserToJSON(\n value?: TrusthubUserSignUpPayloadTrusthubUser | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n first_name: value.firstName,\n last_name: value.lastName,\n email: value.email,\n password: value.password,\n password_confirmation: value.passwordConfirmation,\n domain: value.domain,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n SharedPaginationMeta,\n SharedPaginationMetaFromJSON,\n SharedPaginationMetaFromJSONTyped,\n SharedPaginationMetaToJSON,\n TrusthubVendorUserActivityModel,\n TrusthubVendorUserActivityModelFromJSON,\n TrusthubVendorUserActivityModelFromJSONTyped,\n TrusthubVendorUserActivityModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubVendorUserActivityList\n */\nexport interface TrusthubVendorUserActivityList {\n /**\n *\n * @type {Array}\n * @memberof TrusthubVendorUserActivityList\n */\n data: Array;\n /**\n *\n * @type {SharedPaginationMeta}\n * @memberof TrusthubVendorUserActivityList\n */\n meta: SharedPaginationMeta;\n}\n\nexport function TrusthubVendorUserActivityListFromJSON(\n json: any\n): TrusthubVendorUserActivityList {\n return TrusthubVendorUserActivityListFromJSONTyped(json, false);\n}\n\nexport function TrusthubVendorUserActivityListFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubVendorUserActivityList {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n data: (json['data'] as Array).map(\n TrusthubVendorUserActivityModelFromJSON\n ),\n meta: SharedPaginationMetaFromJSON(json['meta']),\n };\n}\n\nexport function TrusthubVendorUserActivityListToJSON(\n value?: TrusthubVendorUserActivityList | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n data: (value.data as Array).map(TrusthubVendorUserActivityModelToJSON),\n meta: SharedPaginationMetaToJSON(value.meta),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubVendorUserModel,\n TrusthubVendorUserModelFromJSON,\n TrusthubVendorUserModelFromJSONTyped,\n TrusthubVendorUserModelToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubVendorUserActivityModel\n */\nexport interface TrusthubVendorUserActivityModel {\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserActivityModel\n */\n id: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserActivityModel\n */\n createdAt: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserActivityModel\n */\n name: string;\n /**\n *\n * @type {TrusthubVendorUserModel}\n * @memberof TrusthubVendorUserActivityModel\n */\n trusthubVendorUser?: TrusthubVendorUserModel;\n}\n\nexport function TrusthubVendorUserActivityModelFromJSON(\n json: any\n): TrusthubVendorUserActivityModel {\n return TrusthubVendorUserActivityModelFromJSONTyped(json, false);\n}\n\nexport function TrusthubVendorUserActivityModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubVendorUserActivityModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: json['id'],\n createdAt: json['created_at'],\n name: json['name'],\n trusthubVendorUser: !exists(json, 'trusthub_vendor_user')\n ? undefined\n : TrusthubVendorUserModelFromJSON(json['trusthub_vendor_user']),\n };\n}\n\nexport function TrusthubVendorUserActivityModelToJSON(\n value?: TrusthubVendorUserActivityModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n created_at: value.createdAt,\n name: value.name,\n trusthub_vendor_user: TrusthubVendorUserModelToJSON(\n value.trusthubVendorUser\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubVendorUserCreatePayloadTrusthubVendorUser,\n TrusthubVendorUserCreatePayloadTrusthubVendorUserFromJSON,\n TrusthubVendorUserCreatePayloadTrusthubVendorUserFromJSONTyped,\n TrusthubVendorUserCreatePayloadTrusthubVendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubVendorUserCreatePayload\n */\nexport interface TrusthubVendorUserCreatePayload {\n /**\n *\n * @type {TrusthubVendorUserCreatePayloadTrusthubVendorUser}\n * @memberof TrusthubVendorUserCreatePayload\n */\n trusthubVendorUser: TrusthubVendorUserCreatePayloadTrusthubVendorUser;\n}\n\nexport function TrusthubVendorUserCreatePayloadFromJSON(\n json: any\n): TrusthubVendorUserCreatePayload {\n return TrusthubVendorUserCreatePayloadFromJSONTyped(json, false);\n}\n\nexport function TrusthubVendorUserCreatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubVendorUserCreatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubVendorUser:\n TrusthubVendorUserCreatePayloadTrusthubVendorUserFromJSON(\n json['trusthub_vendor_user']\n ),\n };\n}\n\nexport function TrusthubVendorUserCreatePayloadToJSON(\n value?: TrusthubVendorUserCreatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_vendor_user:\n TrusthubVendorUserCreatePayloadTrusthubVendorUserToJSON(\n value.trusthubVendorUser\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n *\n * @export\n * @interface TrusthubVendorUserCreatePayloadTrusthubVendorUser\n */\nexport interface TrusthubVendorUserCreatePayloadTrusthubVendorUser {\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserCreatePayloadTrusthubVendorUser\n */\n email: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserCreatePayloadTrusthubVendorUser\n */\n firstName: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserCreatePayloadTrusthubVendorUser\n */\n lastName: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserCreatePayloadTrusthubVendorUser\n */\n trusthubCompanyId?: string | null;\n}\n\nexport function TrusthubVendorUserCreatePayloadTrusthubVendorUserFromJSON(\n json: any\n): TrusthubVendorUserCreatePayloadTrusthubVendorUser {\n return TrusthubVendorUserCreatePayloadTrusthubVendorUserFromJSONTyped(\n json,\n false\n );\n}\n\nexport function TrusthubVendorUserCreatePayloadTrusthubVendorUserFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubVendorUserCreatePayloadTrusthubVendorUser {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n email: json['email'],\n firstName: json['first_name'],\n lastName: json['last_name'],\n trusthubCompanyId: !exists(json, 'trusthub_company_id')\n ? undefined\n : json['trusthub_company_id'],\n };\n}\n\nexport function TrusthubVendorUserCreatePayloadTrusthubVendorUserToJSON(\n value?: TrusthubVendorUserCreatePayloadTrusthubVendorUser | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n email: value.email,\n first_name: value.firstName,\n last_name: value.lastName,\n trusthub_company_id: value.trusthubCompanyId,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubCompanyModel,\n TrusthubCompanyModelFromJSON,\n TrusthubCompanyModelFromJSONTyped,\n TrusthubCompanyModelToJSON,\n TrusthubVendorUserExtendedAllOf,\n TrusthubVendorUserExtendedAllOfFromJSON,\n TrusthubVendorUserExtendedAllOfFromJSONTyped,\n TrusthubVendorUserExtendedAllOfToJSON,\n TrusthubVendorUserModel,\n TrusthubVendorUserModelFromJSON,\n TrusthubVendorUserModelFromJSONTyped,\n TrusthubVendorUserModelToJSON,\n TrusthubVendorUserStatus,\n TrusthubVendorUserStatusFromJSON,\n TrusthubVendorUserStatusFromJSONTyped,\n TrusthubVendorUserStatusToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubVendorUserExtended\n */\nexport interface TrusthubVendorUserExtended extends TrusthubVendorUserModel {\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserExtended\n */\n currentSignInAt?: string | null;\n}\n\nexport function TrusthubVendorUserExtendedFromJSON(\n json: any\n): TrusthubVendorUserExtended {\n return TrusthubVendorUserExtendedFromJSONTyped(json, false);\n}\n\nexport function TrusthubVendorUserExtendedFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubVendorUserExtended {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n ...TrusthubVendorUserModelFromJSONTyped(json, ignoreDiscriminator),\n currentSignInAt: !exists(json, 'current_sign_in_at')\n ? undefined\n : json['current_sign_in_at'],\n };\n}\n\nexport function TrusthubVendorUserExtendedToJSON(\n value?: TrusthubVendorUserExtended | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n ...TrusthubVendorUserModelToJSON(value),\n current_sign_in_at: value.currentSignInAt,\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubCompanyModel,\n TrusthubCompanyModelFromJSON,\n TrusthubCompanyModelFromJSONTyped,\n TrusthubCompanyModelToJSON,\n TrusthubVendorUserStatus,\n TrusthubVendorUserStatusFromJSON,\n TrusthubVendorUserStatusFromJSONTyped,\n TrusthubVendorUserStatusToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubVendorUserModel\n */\nexport interface TrusthubVendorUserModel {\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserModel\n */\n id?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserModel\n */\n email?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserModel\n */\n firstName?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserModel\n */\n lastName?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserModel\n */\n fullName?: string | null;\n /**\n *\n * @type {TrusthubVendorUserStatus}\n * @memberof TrusthubVendorUserModel\n */\n status?: TrusthubVendorUserStatus;\n /**\n *\n * @type {TrusthubCompanyModel}\n * @memberof TrusthubVendorUserModel\n */\n trusthubCompany?: TrusthubCompanyModel;\n}\n\nexport function TrusthubVendorUserModelFromJSON(\n json: any\n): TrusthubVendorUserModel {\n return TrusthubVendorUserModelFromJSONTyped(json, false);\n}\n\nexport function TrusthubVendorUserModelFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubVendorUserModel {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n id: !exists(json, 'id') ? undefined : json['id'],\n email: !exists(json, 'email') ? undefined : json['email'],\n firstName: !exists(json, 'first_name') ? undefined : json['first_name'],\n lastName: !exists(json, 'last_name') ? undefined : json['last_name'],\n fullName: !exists(json, 'full_name') ? undefined : json['full_name'],\n status: !exists(json, 'status')\n ? undefined\n : TrusthubVendorUserStatusFromJSON(json['status']),\n trusthubCompany: !exists(json, 'trusthub_company')\n ? undefined\n : TrusthubCompanyModelFromJSON(json['trusthub_company']),\n };\n}\n\nexport function TrusthubVendorUserModelToJSON(\n value?: TrusthubVendorUserModel | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n id: value.id,\n email: value.email,\n first_name: value.firstName,\n last_name: value.lastName,\n full_name: value.fullName,\n status: TrusthubVendorUserStatusToJSON(value.status),\n trusthub_company: TrusthubCompanyModelToJSON(value.trusthubCompany),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @enum {string}\n */\nexport enum TrusthubVendorUserStatus {\n Unconfirmed = 'unconfirmed',\n Pending = 'pending',\n WaitingForNda = 'waiting_for_nda',\n Approved = 'approved',\n Suspended = 'suspended',\n}\n\nexport function TrusthubVendorUserStatusFromJSON(\n json: any\n): TrusthubVendorUserStatus {\n return TrusthubVendorUserStatusFromJSONTyped(json, false);\n}\n\nexport function TrusthubVendorUserStatusFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubVendorUserStatus {\n return json as TrusthubVendorUserStatus;\n}\n\nexport function TrusthubVendorUserStatusToJSON(\n value?: TrusthubVendorUserStatus | null\n): any {\n return value as any;\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubVendorUserUpdatePayloadTrusthubVendorUser,\n TrusthubVendorUserUpdatePayloadTrusthubVendorUserFromJSON,\n TrusthubVendorUserUpdatePayloadTrusthubVendorUserFromJSONTyped,\n TrusthubVendorUserUpdatePayloadTrusthubVendorUserToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubVendorUserUpdatePayload\n */\nexport interface TrusthubVendorUserUpdatePayload {\n /**\n *\n * @type {TrusthubVendorUserUpdatePayloadTrusthubVendorUser}\n * @memberof TrusthubVendorUserUpdatePayload\n */\n trusthubVendorUser: TrusthubVendorUserUpdatePayloadTrusthubVendorUser;\n}\n\nexport function TrusthubVendorUserUpdatePayloadFromJSON(\n json: any\n): TrusthubVendorUserUpdatePayload {\n return TrusthubVendorUserUpdatePayloadFromJSONTyped(json, false);\n}\n\nexport function TrusthubVendorUserUpdatePayloadFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubVendorUserUpdatePayload {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubVendorUser:\n TrusthubVendorUserUpdatePayloadTrusthubVendorUserFromJSON(\n json['trusthub_vendor_user']\n ),\n };\n}\n\nexport function TrusthubVendorUserUpdatePayloadToJSON(\n value?: TrusthubVendorUserUpdatePayload | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_vendor_user:\n TrusthubVendorUserUpdatePayloadTrusthubVendorUserToJSON(\n value.trusthubVendorUser\n ),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport {\n TrusthubVendorUserStatus,\n TrusthubVendorUserStatusFromJSON,\n TrusthubVendorUserStatusFromJSONTyped,\n TrusthubVendorUserStatusToJSON,\n} from './';\n\n/**\n *\n * @export\n * @interface TrusthubVendorUserUpdatePayloadTrusthubVendorUser\n */\nexport interface TrusthubVendorUserUpdatePayloadTrusthubVendorUser {\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserUpdatePayloadTrusthubVendorUser\n */\n trusthubCompanyId?: string | null;\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserUpdatePayloadTrusthubVendorUser\n */\n firstName?: string;\n /**\n *\n * @type {string}\n * @memberof TrusthubVendorUserUpdatePayloadTrusthubVendorUser\n */\n lastName?: string;\n /**\n *\n * @type {TrusthubVendorUserStatus}\n * @memberof TrusthubVendorUserUpdatePayloadTrusthubVendorUser\n */\n status?: TrusthubVendorUserStatus;\n}\n\nexport function TrusthubVendorUserUpdatePayloadTrusthubVendorUserFromJSON(\n json: any\n): TrusthubVendorUserUpdatePayloadTrusthubVendorUser {\n return TrusthubVendorUserUpdatePayloadTrusthubVendorUserFromJSONTyped(\n json,\n false\n );\n}\n\nexport function TrusthubVendorUserUpdatePayloadTrusthubVendorUserFromJSONTyped(\n json: any,\n ignoreDiscriminator: boolean\n): TrusthubVendorUserUpdatePayloadTrusthubVendorUser {\n if (json === undefined || json === null) {\n return json;\n }\n return {\n trusthubCompanyId: !exists(json, 'trusthub_company_id')\n ? undefined\n : json['trusthub_company_id'],\n firstName: !exists(json, 'first_name') ? undefined : json['first_name'],\n lastName: !exists(json, 'last_name') ? undefined : json['last_name'],\n status: !exists(json, 'status')\n ? undefined\n : TrusthubVendorUserStatusFromJSON(json['status']),\n };\n}\n\nexport function TrusthubVendorUserUpdatePayloadTrusthubVendorUserToJSON(\n value?: TrusthubVendorUserUpdatePayloadTrusthubVendorUser | null\n): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n trusthub_company_id: value.trusthubCompanyId,\n first_name: value.firstName,\n last_name: value.lastName,\n status: TrusthubVendorUserStatusToJSON(value.status),\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Trusthub API V1\n * !!!!!! AUTOMATICALLY-GENERATED FILE, DO NOT EDIT DIRECTLY !!!!!!\n *\n * The version of the OpenAPI document: v1\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport const BASE_PATH = 'http://localhost/trusthub/api/v1'.replace(/\\/+$/, '');\n\nconst isBlob = (value: any) =>\n typeof Blob !== 'undefined' && value instanceof Blob;\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n private middleware: Middleware[];\n\n constructor(protected configuration = new Configuration()) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware(this: T, ...middlewares: Middleware[]) {\n const next = this.clone();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware(\n this: T,\n ...preMiddlewares: Array\n ) {\n const middlewares = preMiddlewares.map(pre => ({ pre }));\n return this.withMiddleware(...middlewares);\n }\n\n withPostMiddleware(\n this: T,\n ...postMiddlewares: Array\n ) {\n const middlewares = postMiddlewares.map(post => ({ post }));\n return this.withMiddleware(...middlewares);\n }\n\n protected async request(context: RequestOpts): Promise {\n const { url, init } = this.createFetchParams(context);\n const response = await this.fetchApi(url, init);\n if (response.status >= 200 && response.status < 300) {\n return response;\n }\n throw response;\n }\n\n private createFetchParams(context: RequestOpts) {\n let url = this.configuration.basePath + context.path;\n if (\n context.query !== undefined &&\n Object.keys(context.query).length !== 0\n ) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n const body =\n context.body instanceof FormData ||\n context.body instanceof URLSearchParams ||\n isBlob(context.body)\n ? context.body\n : JSON.stringify(context.body);\n\n const headers = Object.assign(\n {},\n this.configuration.headers,\n context.headers\n );\n const init = {\n method: context.method,\n headers: headers,\n body,\n credentials: this.configuration.credentials,\n };\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams =\n (await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n })) || fetchParams;\n }\n }\n let response = await this.configuration.fetchApi(\n fetchParams.url,\n fetchParams.init\n );\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response =\n (await middleware.post({\n fetch: this.fetchApi,\n url,\n init,\n response: response.clone(),\n })) || response;\n }\n }\n return response;\n };\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n}\n\nexport class RequiredError extends Error {\n name: 'RequiredError' = 'RequiredError';\n constructor(\n public field: string,\n msg?: string\n ) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: ',',\n ssv: ' ',\n tsv: '\\t',\n pipes: '|',\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | ((name: string) => string); // parameter for apiKey security\n accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n get basePath(): string {\n return this.configuration.basePath != null\n ? this.configuration.basePath\n : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI {\n return this.configuration.fetchApi || window.fetch.bind(window);\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name: string, scopes?: string[]) => string) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function'\n ? accessToken\n : () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport type Json = any;\nexport type HTTPMethod =\n | 'GET'\n | 'POST'\n | 'PUT'\n | 'PATCH'\n | 'DELETE'\n | 'OPTIONS';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = {\n [key: string]:\n | string\n | number\n | null\n | boolean\n | Array\n | HTTPQuery;\n};\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type ModelPropertyNaming =\n | 'camelCase'\n | 'snake_case'\n | 'PascalCase'\n | 'original';\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => {\n const fullKey = prefix + (prefix.length ? `[${key}]` : key);\n const value = params[key];\n if (value instanceof Array) {\n const multiValue = value\n .map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n })\n .filter(part => part.length > 0)\n .join('&');\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n return Object.keys(data).reduce(\n (acc, key) => ({ ...acc, [key]: fn(data[key]) }),\n {}\n );\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise;\n post?(context: ResponseContext): Promise;\n}\n\nexport interface ApiResponse {\n raw: Response;\n value(): Promise;\n}\n\nexport interface ResponseTransformer {\n (json: any): T;\n}\n\nexport class JSONApiResponse {\n constructor(\n public raw: Response,\n private transformer: ResponseTransformer = (jsonValue: any) => jsonValue\n ) {}\n\n async value(): Promise {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise {\n return await this.raw.blob();\n }\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise {\n return await this.raw.text();\n }\n}\n","export enum OwnerObjectType {\n Agreement,\n Assessment,\n VendorDocument,\n AssessmentResponse,\n}\n","// TODO: replace this object with VendorAccessFeatureEnum\n// Please specify new keys the same order as in VendorAccessFeatureEnum\nexport enum AccessObject {\n vendor_dashboard = 'vendor_dashboard',\n user_dashboard = 'user_dashboard',\n company_dashboard = 'company_dashboard',\n company_manage = 'company_manage',\n frameworks = 'frameworks',\n frameworks_manage = 'frameworks_manage',\n controls = 'controls',\n controls_create = 'controls_create',\n controls_update = 'controls_update',\n tasks = 'tasks',\n tasks_create = 'tasks_create',\n tasks_update = 'tasks_update',\n company_documents = 'company_documents',\n checklists = 'checklists',\n checklists_manage = 'checklists_manage',\n agreements = 'agreements',\n agreements_manage = 'agreements_manage',\n people = 'people',\n people_manage = 'people_manage',\n legal_register = 'legal_register',\n legal_register_manage = 'legal_register_manage',\n vendor_register = 'vendor_register',\n vendor_register_manage = 'vendor_register_manage',\n pestel = 'pestel',\n pestel_manage = 'pestel_manage',\n escrow = 'escrow',\n audits = 'audits',\n audits_manage = 'audits_manage',\n risk_register = 'risk_register',\n risk_register_create = 'risk_register_create',\n risk_register_update = 'risk_register_update',\n calendar = 'calendar',\n calendar_manage = 'calendar_manage',\n reports = 'reports',\n reports_manage = 'reports_manage',\n dataroom_root_tree_manage = 'dataroom_root_tree_manage',\n dataroom_control_evidence_manage = 'dataroom_control_evidence_manage',\n assessments = 'assessments',\n trusthub = 'trusthub',\n dashboard = 'dashboard',\n vendors_create = 'vendors_create',\n // Not added yet to the backend VendorAccessFeatureEnum:\n // Please don't add new values below, add it to spec/support/api/v1/schemas/vendor.yaml + above\n payment_plan_vendors = 'payment_plan_vendors',\n manage_approvals = 'manage_approvals',\n manage_read_requests = 'manage_read_requests',\n manage_versions = 'manage_versions',\n vendor_teams = 'vendor_teams',\n vendor_users = 'vendor_users',\n vendor_documents = 'vendor_documents',\n vendor_details = 'vendor_details',\n vendor_checklists = 'vendor_checklists',\n checklist_templates = 'checklist_templates',\n agreement_templates = 'agreement_templates',\n set_review_reminder = 'set_review_reminder',\n manage_ownership = 'manage_ownership',\n company_identifiers = 'company_identifiers',\n vendor_policies = 'vendor_policies',\n companies = 'companies',\n share = 'share',\n data_room_entities = 'data_room_entities',\n move = 'move',\n policy_categories = 'policy_categories',\n integrations = 'integrations',\n}\n","export const UNKNOWN_ERROR =\n 'An unexpected error has occurred. Please try again or contact support.';\n\nexport const URL_REGEX =\n /(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,})/i;\n\nexport const NOT_FOUND_INDEX = -1;\n\nexport const COMPLETED_TEXT = 'completed';\n","export enum Grid {\n AllDocuments,\n ArchivedDocuments,\n AvailablePolicies,\n CompletedAssessments,\n DocumentAdmin,\n InProgressPolicies,\n LivePolicies,\n PendingApprovalPolicies,\n PendingAssessments,\n PendingDocuments,\n RecentlyCreatedAssessments,\n AttestationManagement,\n ApprovalManagement,\n ActiveChecklists,\n CompleteChecklists,\n DraftAgreements,\n AwaitingSignatureAgreements,\n CompletedAgreements,\n Users,\n EscrowAccounts,\n ComplianceTasks,\n FrameworkPolicies,\n DataRoom,\n DataRoomTree,\n VendorRegister,\n LegalRegister,\n PestelPolitical,\n PestelEconomicCommercial,\n PestelSocial,\n PestelEnvironmental,\n PestelLegal,\n PestelTechnological,\n Audits,\n Risks,\n RisksTemplates,\n RisksReports,\n Reports,\n Calendar,\n Controls,\n TrustHubUserAdminAccessRequests,\n TrustHubUserAdminCompanies,\n TrustHubUserAdminCompanyUsers,\n TrustHubUserAdminActivities,\n TrustHubUserAdminVendorUsers,\n TrustHubUserAdminVendorUserDocumentPermissions,\n TrustHubUserAdminVendorUserActivities,\n BusinessFunctions,\n}\n","export enum PdfOpenMode {\n Approve = 'approve',\n Attest = 'attest',\n Download = 'download',\n Preview = 'preview',\n Sign = 'sign',\n PreviewDocument = 'previewDocument',\n}\n","// TODO: use 1 for ASC direction ?\n// -1 for asc a bit confusing\n\nexport enum SortDirection {\n Ascending = -1,\n Descending = 1,\n}\n","import { faEye } from '@fortawesome/pro-light-svg-icons/faEye';\nimport { faEyeSlash } from '@fortawesome/pro-light-svg-icons/faEyeSlash';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport React, { SyntheticEvent, useEffect, useRef, useState } from 'react';\nimport './InputField.scss';\n\ninterface InputFieldProps {\n autoFocus?: boolean;\n disableAutoComplete?: boolean;\n disabled?: boolean;\n isPassword?: boolean;\n onChange?: (value: string) => void;\n placeholder?: string;\n type: 'email' | 'password' | 'text';\n value?: string;\n}\n\nexport const InputField: React.FC = props => {\n const inputFieldRef = useRef(null);\n const [value, setValue] = useState(props.value);\n const [showPassword, setShowPassword] = useState(false);\n const inputAreaClasses = classNames({\n 'inputField--inputArea': true,\n 'inputField--inputArea-light': value === props.placeholder,\n });\n\n const handleChange = (e: SyntheticEvent) => {\n setValue(e.currentTarget.value);\n if (props.onChange) {\n props.onChange(e.currentTarget.value);\n }\n };\n\n let controlType = props.type;\n\n if (props.type === 'password' && showPassword) {\n controlType = 'text';\n }\n\n useEffect(() => {\n if (props.autoFocus) {\n inputFieldRef.current.focus();\n }\n }, []);\n\n useEffect(() => setValue(props.value), [props.value]);\n\n return (\n
\n \n {props.type === 'password' && (\n
\n {\n setShowPassword(!showPassword);\n }}\n />\n
\n )}\n
\n );\n};\n","import classNames from 'classnames';\nimport React from 'react';\nimport { OverlayTrigger, Popover } from 'react-bootstrap';\nimport { ZXCVBNResult } from 'zxcvbn';\nimport { ProgressBar } from '../../../../src/components/ProgressBar/ProgressBar';\nimport './PasswordStrength.scss';\n\ninterface PasswordStrengthProps {\n password: string;\n result: ZXCVBNResult;\n}\n\nexport const PasswordStrength: React.FC = props => {\n let progress = (props.result.score / 4) * 100;\n\n if (props.password !== '' && progress === 0) {\n progress = 10;\n }\n\n let strength = '';\n\n switch (progress) {\n case 10:\n strength = 'Very weak (minimum of Good required)';\n break;\n case 25:\n strength = 'Weak (minimum of Good required)';\n break;\n case 50:\n strength = 'Good';\n break;\n case 75:\n strength = 'Strong';\n break;\n case 100:\n strength = 'Very strong';\n break;\n }\n\n const passwordStrengthClasses = classNames({\n passwordStrength: true,\n 'passwordStrength-hidden': props.password === '',\n });\n\n const popover = (\n \n Password advice\n \n
\n {props.result.feedback.warning !== '' && (\n \n
\n Warning: {props.result.feedback.warning}\n
\n
\n
\n )}\n {props.result.feedback.suggestions.length > 0 && (\n \n {props.result.feedback.suggestions.map(s => {\n return
  • {s}
  • ;\n })}\n
    \n )}\n
    \n
    \n
    \n );\n\n return (\n
    \n
    \n
    \n \n {strength}\n \n
    \n
    \n {(props.result.feedback.suggestions.length > 0 ||\n props.result.feedback.warning !== '') && (\n \n
    See guide
    \n \n )}\n
    \n
    \n
    \n \n
    \n
    \n );\n};\n","var map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-sa\": 82682,\n\t\"./ar-sa.js\": 82682,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 41848,\n\t\"./mi.js\": 41848,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;"],"names":["setGoogleAnalyticsUser","user","set","userId","email","userFullName","fullName","sentryInit","dsn","autoSessionTracking","integrations","BrowserTracing","tracesSampleRate","environment","getSentryReduxEnhancer","setSentryUser","username","TRUSTHUB_BASE_PATH","api","additionalHeaders","csrfHeader","headers","Object","assign","basePath","window","location","origin","configuration","trusthubApi","TrustHubConfig","AdoptechAccordionCard","props","ref","children","index","nested","nestedVerticalOffset","noMargin","headerOffset","title","cardBodyClass","headerClass","iconSize","hasDoneButton","callbackOnOpen","shouldShowCoachmark","style","scrollDisabled","handleDone","hasError","headerHandleClick","currentEventKey","useContext","A","isCurrentEventKey","useEffect","cardRef","useRef","toggleRef","bodyRef","useImperativeHandle","current","scrollCardIntoView","state","global","dispatch","defaultAccordionToggle","event","stopPropagation","setTimeout","scroll","offsetTop","scrollIntoView","behavior","showCoachmark","setShowCoachmark","useState","cookies","setCookies","firstPolicyOpened","className","adoptechAccordionCard","expanded","Header","as","onClick","top","icon","Collapse","eventKey","Body","variant","Primary","click","expires","add","toDate","defaultProps","AdoptechButtonVariant","AdoptechButton","busy","disabled","uppercase","disabledTooltip","type","extraClass","disablePointerEvents","shadow","rounded","iconAlignment","rawIcon","size","mainClasses","adoptechButton","Button","Spinner","animation","alt","src","AdoptechCheckbox","classes","adoptechCheckbox","color","labelPadding","id","onChange","checked","htmlFor","label","AdoptechCountrySelectContent","value","placeholder","isMultiSelect","options","length","uk","find","x","us","splice","indexOf","unshift","isDisabled","isMulti","filter","split","includes","AdoptechCountrySelect","countryOptions","getFutureDate","date","Date","setMonth","getMonth","defaultDeadlines","AdoptechDatePicker","labelText","baseCssName","placeHolderText","onDateSelect","labelStyle","endNode","deadLines","minDate","maxDate","onPresetDateSelected","outputDate","popperPlacement","refreshDateOnPreselect","datePickerRef","initialDate","toString","console","error","setSelectedDate","selectedDate","refreshDate","presetDates","map","deadline","popperClassName","e","target","closest","setOpen","singleColumn","showDisabledMonthNavigation","dateFormat","shouldCloseOnSelect","selected","autoComplete","placeholderText","option","key","handlePresetDateSelect","AdoptechDatePicker2","baseCss","customProps","AdoptechDropdownToggle","preventDefault","AdoptechFileInput","urls","inputRef","imagePreviews","setImagePreviews","fileNames","setFileNames","acceptImage","accept","hasPlaceholder","preview","name","join","hidden","selectedFiles","Array","from","currentTarget","files","previews","file","URL","createObjectURL","names","multiple","adoptechGridTableCss","header","AdoptechDrawer","inverted","show","backButton","badges","onClose","onBackClick","openClass","headerClasses","toggleChatWidgetPosition","offsetWidth","document","querySelector","faAngleLeft","badge","toLowerCase","faXmark","footer","extraFooterClass","subHeaderTitle","showConfirmationWarning","confirmText","noFormPadding","theme","isConfirmationShowing","setIsConfirmationShowing","onClickCloseOrOutsideDrawer","display","ExitConfirmationModal","text","onConfirm","onCancel","onHide","backdrop","centered","speed","elWrapper","elContent","overflowValue","setOverflow","setScroll","overflow","marginLeft","onMouseEnter","onMouseLeave","AdoptechPanel","backgroundColor","padding","borderRadius","AdoptechRadioButton","content","AdoptechRadioButtonsGroup","values","labels","ids","wrappers","groupValue","setGroupValue","radios","val","radio","newValue","Wrapper","AdoptechReactSelect2","customComponents","IndicatorSeparator","newProps","components","bottomComponent","CheckboxOption","Option","isSelected","AdoptechReactSelect","allowAdd","addText","onAdd","isLoading","isCheckbox","ariaLabel","noOptionsText","maxMenuHeight","showUserAvatar","additionalStyling","closeMenuOnSelect","hideSelectedOptions","isClearable","labelTooltipText","showUserEmail","formatOptionLabel","optionsWithCreate","adoptechReactSelect","vendorUsers","showTooltip","identifier","selectionOption","styles","noOptionsMessage","classNamePrefix","u","AdoptechStateSelect","UsState","adoptechTable","embedded","hasMenu","modal","responsive","AdoptechTextArea","adoptechTextArea","errorClass","textArea","onBlur","rows","autoFocus","extraStyles","textAreaOnly","AdoptechTextArea2","forwardRef","inputProps","errorText","customLabel","previousElementSibling","select","displayName","AdoptechTextInput","adoptechTextInput","input","numberValue","parseFloat","isNaN","min","max","isNumberValueValid","onFocus","maxLength","autoCapitalize","onKeyDown","onlyInput","additionalClass","htmlLabel","onIconClicked","bottomElement","AdoptechTextInput2","prefixText","parentContainer","parentNode","focus","tooltipClassName","AdoptechTooltipVariant","AdoptechTooltip","placement","overlay","useAgreementTemplateName","form","agreements","agreementTemplates","template","standardTemplateId","NameStep","selectAgreementsCreateForm","defaultName","faPen","Footer","isLastStep","currentStepName","goToStep","isCreatingAgreement","isCreatingOrUpdatingSignatory","agreementsCreateForm","isBusy","NameStepIsValid","SignatoriesStep","getElementsByClassName","isTouched","step","useAgreementsTermsRadioOptions","allAgreements","standardTemplate","allAgreementsWithTheSameTemplate","agreement","agreementType","labelWithDate","agreementOrTemplate","formatShortDate","createdAt","concat","onlyStandardTermsExist","TermsStep","useMemo","selectedTermsId","setSelectedTermsId","agreementConfirmText","AddNewAgreementForm","Steps","currentStepIndex","Step","AdoptechHS","SignatoriesStepIsValid","signatory","ExternalIndividual","every","field","mode","employee","templateId","onSubmit","formSignatory","pdfURL","openPreview","url","Preview","documentType","Agreement","objectId","inline","useFetchFile","status","Draft","retries","isBinary","then","blob","localURL","catch","finally","vendorDocumentId","successCallback","vendorDocumentDownload","usePreviewModeReload","openedDraftPdfPreview","pdfPreviewInline","isPreviewingPdf","fetchFile","reloadPdf","PreviewMode","currentAgreementMode","isSavingDataRequiredForPdf","isPatchingAgreement","isPatchingAgreementContent","isPostingAgreementAnswer","isRequestingAgreementPdf","waitingBeforeLoadingPDF","isDraft","isCompleted","Signed","agreementsAccess","canEditOwner","manage_ownership","access","canEditReviewDate","set_review_reminder","canShare","share","canEditBranding","canDelete","canEditName","canEditSignatories","canArchive","canUploadSignatoryDocument","AwaitingSignature","AgreementMeatballMenu","handleDeleteClick","showHSMenu","isAgreementShowPage","Item","SignatoriesEdit","Divider","href","useAgreementSignatories","isRequestingSignatories","isRequestingCurrentAgreementSignatories","internalSignatories","currentAgreementSignatories","s","Internal","externalSignatories","signatoryUser","firstName","lastName","trim","Null","AgreementSendReviewModal","agreementId","currentUser","userDetails","signatories","getDefaultSelectedSignatoriesIds","setSelectedSignatoriesIds","isSendingToReview","selectedSignatoriesIds","signatoriesList","newSignatories","signatoryId","signatoryIds","onSuccess","AgreementsRow","baseTableCss","showReviewDateColumn","showStatusColumn","isRejected","AgreementModel","Rejected","isOverdue","reviewDate","isBefore","replace","AdoptechOverflowLine","version","externalSignatoriesNames","UserAvatar","owner","AgreementsMode","shared","signatoriesStats","signed","total","faExclamationCircle","toBeSigned","opacity","faCheckSquare","faFileCheck","PrimaryTransparent","faClock","Completed","agreementSignatories","some","NotRequired","SignedOffline","fontSize","AgreementsList","currentGrid","placeholders","currentVendor","selectCurrentVendor","DraftAgreements","AwaitingSignatureAgreements","CompletedAgreements","selectAgreements","useAgreementsList","canManageAgreements","agreements_manage","Lozenge","PrimaryOrange","faPlus","Default","faCloudArrowUp","NoDataText","AdoptechGridTable","SortableTableHeader","columnName","grid","notInTable","SendReminderModal","signatoryData","isDispatchingNotification","message","setMessage","AdoptechModal","Modal","body","useCleanupAgreementRHS","onCloseHSMenu","AgreementsModals","showDeleteModal","setShowDeleteModal","handleConfirmDelete","isDeletingAgreement","isShowingEditAgreementDrawer","reminderModalData","agreementSendReminderModalData","cleanupReminderModal","isShowing","isShowingSendReminderModal","currentSignatoryData","GenericModal","closeButtonLabel","showCancelButton","EditAgreementForm","DocumentUploadStep","selectCurrentAgreement","agreementName","setAgreementName","agreementsEditForm","signatoriesWithDocs","currentSignatoryId","agreementFile","setAgreementFile","signatoryDocumentExist","DropZone","documentBinary","signatoryWithDoc","push","DocumentPermissionsSection","sharesList","vendors","data","isFetchingSharesList","shareableType","shareableId","accessLevelIcon","level","accessLevel","faCheckCircle","Contributor","faCircleXmark","LoadingSpinner","Manager","Viewer","selectAgreementsEditForm","OverviewSection","currentAgreement","users","ownerOptions","useOwnerOptions","loaded","overviewSectionLoaded","capitaliseFirst","selectedOwner","getDate","setReviewDate","toISOString","BrandingSection","vendorId","logo","companyDetailsState","colour","selectVendorDetails","selectCurrentCompany","brandingColor","isLoadedExtendedFields","filename","thumb","useCompanyLogo","faCircle","faBan","useBrandingColor","getAttribute","SignatoriesMeatballMenu","onSendReminderClick","onSignedOfflineClick","onSignatureNotRequiredClick","onUploadClick","onViewClick","isExternal","showReminderMenuItem","showSignedOfflineMenuItem","showUploadDocumentMenuItem","showMarkAsNotRequiredMenuItem","model","documentUploaded","showSignatoriesMenuItem","menuItemClasses","downloadButtonRef","MeatballMenu","Dropdown","faSend","AgreementEditFormStep","faEye","faSquareXmark","File","download","faCloudDownload","ExternalSignatories","showUploadButton","AgreementSignatoryModel","uploadedButNotSavedDocument","savedDocument","DocumentType","AgreementSignatory","documentableId","navigateUrlOnClose","InternalSignatories","atLeastOneSignatorySigned","item","faEnvelope","updatedAt","SignatoriesSection","signatoriesSectionLoaded","modalProps","signatoryTables","DocumentUpload","table","Type","UiElement","PrimaryStep","SignatoriesEditForm","readOnly","signatoryFromSignatoriesMeatballMenu","signatoryFromAgreementMeatballMenu","ExternalSignatoryForm","changedSignatory","isValidEmailAddress","readonly","upload","updatedSignatoryIds","currentAgreementSignatoriesUpdated","signatoriesToUpdate","cas","isPrimary","currentAgreementId","patchSignatory","signatoryUpdatePayload","onError","convertToUpdatePayload","signatoryFields","payload","fromEntries","entries","k","v","agreementSignatoryDocument","White","PrimaryStepIsValid","SignatoryStepIsValid","DocumentUploadStepIsValid","stu","swd","forEach","stbu","agreementSignatoryStatus","extendedSignatory","ownerId","steps","defaultColoursList","ColourPalette","onSelect","colourList","gap","colours","c","ConfirmModal","close","confirm","headerText","description","Warning","ConfirmationModal","command","action","subject","buttonVariant","cancelButtonText","buttonText","Card","isArray","metrics","metricsWithLabels","DashboardTile","footerText","DownloadDocumentModal","downloadOption","setDownloadOption","documentState","showPlaceholderText","showFileName","dragCounter","setDragCounter","fileState","setFiles","verifyFile","fileToVerify","allowedTypes","parts","handlePaste","clipboardData","pasteFiles","handleFileChanges","addEventListener","removeEventListener","handleFiles","filesArray","validFiles","onChangeCall","arr","newFiles","prevFiles","dropZoneHitAreaClasses","dottedBorder","smallHeight","filesBaseCss","modifierKey","navigator","userAgent","hintText","onDragOver","onDragEnter","onDragLeave","onDrop","_a","dataTransfer","fileObject","isImage","startsWith","fileDescription","additionalDescription","placeholderFileListText","sort","a","b","localeCompare","open","f","handleRemoveAttachment","EditActionModal","init","onDelete","disabledFields","userOptions","includingGuest","setModel","createActionStatus","isUpdatingCalendarItem","calendar","fetchActionAsync","unwrap","dueDate","dataMissing","actionType","modalTitle","actionName","actionTypes","PestelReview","RiskRegisterReview","LegalRegisterReview","VendorRegisterReview","SecurityMeeting","InternalAudit","ExternalAudit","Other","ControlCheckReview","typeOptions","completed","d","endOfDayToDateTime","endOf","toJSON","readonlyMode","EditProfileFields","setUserDetails","mobile","phone","disabledField","prop","updatedUserDetails","formTouched","formValid","inDrawer","defaultCountry","ErrorToast","setShow","errorMessage","autohide","delay","submitButtonText","submitButtonVariant","submitting","setSubmitting","SignatoryTypeMode","EXTERNAL_SIGNATORY_COMPANY_MODEL","ExternalCompany","companyName","companyAddress","companyNumber","EXTERNAL_SIGNATORY_INDIVIDUAL_MODEL","address","handleSubmitClass","onSubmitError","getInitialSignatoryState","signatoryType","setSignatoryType","isEmailInvalid","setIsEmailInvalid","currentSignatory","setCurrentSignatory","externalSignatory","keys","reduce","acc","optionalFields","updateCurrentSignatory","previousSignatory","updatedSignatory","employeeMode","checkWithDebounce","toastText","signatoryLabel","formFields","agreementTemplateId","sourceAgreementId","response","signatoryUpdatePayloadFields","handleSubmit","initialState","handleTypeChange","FrameworksPills","frameworks","framework","footerClasses","cancelButtonLabel","closeButtonVariant","GlobalToast","undoButton","globalToastConfig","route","router","pathname","endsWith","showToast","Inverse","IconButton","iconButtonClasses","iconButton","onKeyPress","tabIndex","role","tooltip","PolicyProgress","policy","storePolicy","policies","vendorPolicies","vp","progress","percentage","Math","round","barClasses","width","PolicyGetLinkInfo","InProgressPolicyRow","setSelectedPolicyId","isFilledIn","isVendorPolicyFilled","handlePolicyClick","categoryName","hideText","leftHandPointer","showOnlyGetLink","getLinkInfo","VendorPolicy","accessLevels","feature","relativePath","faLink","faTrashAlt","LoadingScreen","delayed","inlineSmall","timeout","clearTimeout","Intent","lozengeClassNames","lozenge","intent","isProductPaid","featuresState","mainMenuConfig","activeSubscription","noSubscription","fromSignup","isPaidAssessments","canFeature","disabledMenuItem","disabledExpression","_","childItems","routes","meatballMenuButtonClasses","onToggle","isOpen","Toggle","Menu","popperConfig","strategy","popperStrategy","MessageToastVariant","MessageToast","setCookie","doNotShowCookieName","doNotShow","setDoNotShow","setShowToast","messageToastClasses","messageToast","messageToastContentClasses","showClose","otherProps","handleClose","flattenMainMenuConfig","result","mmc","newMainMenuConfig","selectPageLabel","selectRouteName","customPageHeaderLabel","selectActiveSubscription","routeName","subscription","flattenedMainMenuConfigItems","currentRouteName","configItem","NotificationsItem","notification","vendorUserId","selectCurrentVendorUserId","relatedToPath","htmlMessage","Gray","notificationId","dateObject","today","isSame","yesterday","subtract","fromNow","formatRelativeDate","Notifications","notifications","notificationsList","isRequestingNotifications","notificationsExists","faBellExclamation","DropdownMenu","align","selectUserInitials","getInitials","ManageInvoicesGrid","invoices","isFetchingInvoices","isManageBillingModalShowing","AdoptechTable","invoice","number","currency","amount","toFixed","invoiceUrl","invoicePdf","colSpan","ManageInvoices","card_number","card_cvc","card_exp_month","card_exp_year","address_line1","address_line2","address_city","address_state","address_zip","address_country","PaymentMethodActionType","paymentMethodReducer","PaymentMethodModalMode","selectCurrentPaymentMethod","paymentMethods","currentPaymentMethodId","AddPaymentMethodModal","reduxDispatch","isAddPaymentMethodModalShowing","isAddingPaymentMethod","isUpdatingPaymentMethod","isAddMode","paymentMethodModalMode","Add","paymentMethodState","useReducer","handleCancel","Cleanup","handleChange","Change","currentPaymentMethod","currentId","billingDetails","card","expMonth","expYear","slice","line1","line2","city","postalCode","country","formIsValid","cvc","cardNo","DeletePaymentMethodModal","isDeletePaymentMethodModalShowing","isDeletingPaymentMethod","paymentMethod","brand","last4","ManagePaymentMethodsGrid","setPaymentMethod","hasActiveSubscription","p","faCreditCard","isDefault","Edit","ManagePaymentMethods","ManageBillingModal","handler","listener","contains","ProfileMenu","onEditProfileClick","containerRef","canCreateSubscriptions","payment_plan_vendors","el","authyUserid","EditProfileDrawer","showLastUserDeletionToast","setShowLastUserDeletionToast","userState","selectUsers","excludeLeft","saveEnabled","isUpdatingUserDetails","isProfileSavedToastShowing","isProfileModalShowing","WarningSubscriptionLimitModal","isWarningSubscriptionLimitModalShowing","WhiteOnDarkOrange","UserBadge","hovered","setHovered","initials","isProfileMenuShowing","onMouseOver","onMouseOut","tabToSelect","assessments","assessmentTabToShow","assessmentResponses","selectPendingAssessments","tabId","showLozenge","tabToShow","selectAssessmentsTab","features","selectVendorProductsFeatures","isPaid","Incoming","Outgoing","assessmentsMenuConfig","inputText","results","globalSearchResults","globalSearchInProgress","searchResultClasses","MIN_SEARCH_LENGTH","searchableId","setInputText","searchTerm","setSearchTerm","timeoutId","searchClasses","faDeleteRight","faSearch","setPageTitle","pageLabel","searchBarVisible","globalSearchBarVisible","faClose","faCircleQuestion","Panel","panel","clickable","placedOnDarkBackground","handleClick","PdfPreviewCard","pdfPreviewUrl","pageCount","setPageCount","minHeightBackground","setMinHeightBackground","modalBodyMeasurementRef","modalBodyBounds","minHeight","bodyBounds","handleLoadSuccess","pdf","numPages","fileSource","PdfPreviewDocument","externalLinkTarget","loading","onLoadSuccess","pageIndex","selectVendorPolicyToEdit","policyToEdit","vendorPolicyId","PolicyFrameworksList","frameworksRelations","r","fw","controlCategory","annexRef","PolicyTeamsSelector","setSelectedTeams","newTeams","selectedTeams","useAppDispatch","currentDocument","searchTeams","query","Promise","resolve","teams","formattedTeams","team","teamsOptions","initialTeamsFetched","fetchPolicyAttestationGroupsStatus","isLoadingTeams","cacheOptions","defaultOptions","loadOptions","selectedOptions","DropdownIndicator","ClearIndicator","handleRemove","teamId","updatedTeams","PolicyReadRequestsSection","attestationFrequency","deprecatedValues","Annually","Monthly","Quarterly","attestationFrequencyOptions","selectedAttestationFrequencyOption","setSelectedAttestationFrequencyOption","sentAttestations","isFetchingVendorDocumentAttestations","attestationStats","attested","requestsHeader","selectedOption","faExternalLink","SentAttestationsTable","attestations","tableClass","PolicyVersionSection","isShowingDownloadModal","setIsShowingDownloadModal","isFetchingDocumentApprovals","approvals","approvedBy","approval","Current","PolicyAccordion","Accordion","defaultActiveKey","PolicyDrawer","isPolicyDrawerShowing","isPolicyDrawerShowingForReadRequest","patchPolicyAttestationGroupsStatus","isPatchingVendorPolicy","isPatchingVendorDocument","policyCopy","setPolicyCopy","onPolicyDrawerClose","canManageAttestations","manage_read_requests","isVendorDoc","thing","showReadRequestsSection","policyCopyData","policyId","handleSave","params","reviewFrequency","documentId","vendorDocument","groupIds","PolicyOverviewSection","calculateNextReviewDate","periodCount","periodWord","onlyAdminable","selectedOwnerOption","setSelectedOwnerOption","reviewFrequencyOptions","selectedReviewFrequencyOption","setSelectedReviewFrequencyOption","PolicyMode","policyMode","InProgress","Available","Complete","Approval","Attestation","selectPolicyMode","nextReviewDate","livePolicy","ProgressBar","setProgress","timer","progressClasses","progressBar","hasRadius","defaultStyle","WebkitTransition","MozTransition","OTransition","transition","transitionStyle","entering","entered","exiting","exited","previousProgress","unmounted","appear","in","downloadReportFile","tempLink","createElement","setAttribute","ReportsList","reportIdToDelete","setReportIdToBeDeleted","clickPreviewHandler","report","clickDownloadHandler","clickDeleteHandler","canManageReports","reports_manage","reports","Reports","ReportVersionField","formData","updateField","updateForm","hasVersion","versionBump","ReportCreatePayloadReport","Minor","Major","ReportOwnerField","ReportSummaryField","alert","summary","LegalRegisterSection","sectionProps","PestelRegisterSection","includeIncompleteActions","RiskRegisterSection","includeUnapprovedRisks","VendorRegisterSection","SoaSection","frameworkParam","useQueryParams","get","_27001","_270012022","SoaSummarySection","ReportNameField","ReportFileField","ReportCompletionField","completedAt","formatFinalVersion","test","exec","ReportFreeVersionField","UploadedReportSection","ReportsManageDrawer","setFormData","isCreatingReport","isReportUploading","LegalRegister","legalSectionValid","PestelRegister","pestelSectionValid","RiskRegister","riskSectionValid","StatementOfApplicability","soaSectionValid","StatementOfApplicabilitySummary","soaSummarySectionValid","VendorRegister","vendorSectionValid","Uploaded","uploadedReportSectionValid","otherFields","thunk","newForm","section","registerTitle","enum","ReportsHeader","search","reportsSearch","isShowingAddDrawer","setIsShowingAddDrawer","reportTypeParam","addReportTypeParam","selectedType","history","selectOption","param","filteredByTextsReports","items","searchText","ignoreLocation","includeScore","threshold","filteredByTypeReports","selectsReports","selectSortSettings","sortSetting","columnSort","typedColumn","sortByOwner","direction","sortByDate","sorts","reportsRouteWithType","reportsRouteWithAddType","reportsSoaRoute","addType","ReportsPage","vendorUser","selectCurrentVendorUser","isFetchingReports","filteredReports","roles","DataRoomTabs","currentTab","AddOfficeAddressModal","company","showModal","isAddOfficeAddressModalShowing","showAddedToast","currentOffice","setCurrentOffice","setFormTouchedStatus","addressValid","address1","address2","setAddress","office","clearForm","postCode","isExisting","AddTeamModal","teamNameRef","teamName","setTeamName","isUpsertingVendorTeams","isAddTeamModalShowing","teamsState","vendorTeams","t","VendorTeam","AddUserModal","firstNameRef","emailAddress","isAddUserModalShowing","inviteState","handleUserDetailChange","details","AutoSaveToast","showAutoSaveToast","Toast","getClauseLastUpdatedInfo","updatedBy","policyAnswerCommonFields","question","closestQuestion","layout","CheckboxesAnswer","parentAnswers","answers","questionRows","answer","previousAnswer","rowName","indexProperty","fields","usingNewSurveyStructure","questionRowId","allSelected","propertyName","newAnswers","qr","na","isCheckboxAnswer","questionRowAnswerValue","findIndex","currentAnswer","rowText","DateFieldAnswer","setValue","popperProps","positionFixed","momentDate","normalizedDate","format","fetchAssessment","assessmentId","assessmentsIdGet","err","Response","log","statusText","apiErrorMessage","getApiErrorMessage","fetchAssessmentResponse","assessmentResponsesIdGet","fetchAssessments","all","vendorsIdAssessmentsGet","vendorsIdAssessmentResponsesGet","sendAssessment","getState","currentAssessment","sendAssessmentDetails","assessmentsIdSharePost","externalShare","responseDeadline","emailAddresses","to","optionalMessage","patchAssessmentResponse","assessmentResponse","assessmentResponsesIdPatch","deleteAssessmentResponseAnswers","tableQuestions","assessmentResponseAnswersIdDelete","tableAnswers","answersToUpdate","currentAssessmentResponse","assessmentResponseAnswers","datatype","Answered","checkForExportSuccess","exportCancelled","assessmentDownloadsIdGet","floor","random","FileSelectAnswerGrid","deletingId","setDeletingId","ara","hasFiles","assessmentResponseAnswerFiles","fileTypeIcon","contentType","faFileSpreadsheet","faFileExcel","faFilePdf","faFileCsv","faQuestionSquare","rel","assessmentResponseAnswerFilesIdDelete","updatedAssessmentResponse","FileSelectAnswer","getRadioButtonOptions","vendorTableCache","tableType","selectRadioButtonOptionsFactory","vendorTable","columnValue","columnText","cells","TextBasedAnswer","previousPreviousAnswer","usePrevious","pattern","Integer","responseId","EmailField","String","RadioButtonsAnswer","isTableType","questionColumns","selectRadioButtonOptions","radioButtonOptions","setSelected","otherInputFieldRef","otherValue","setOtherValue","radioButtonAnswerWrapper","other","o","isClosedQuestion","handleOnChange","asTextReadonly","opt","otherLayout","getSelectionValue","SelectAnswer","canCreateOffice","canCreateTeam","canCreateUser","vendor_teams","vendor_users","isShowingInsufficientPermissionModal","setIsShowingInsufficientPermissionModal","objectType","setObjectType","tables","isCountrySelect","isFetchingVendorTable","getDefaultSelectionOptions","row","pop","MultiSelect","Country","WithCountries","countryName","Office","VendorUser","array","apply","questions","q","column","tableQuestion","TableAnswer","handleEdit","handleDelete","allIndexes","maxIndex","questionText","fill","rowHasAnyValue","TextAreaAnswer","textAreaRef","useAutoGrowTextArea","TableAnswerEditModal2","rowToChange","onUpdate","setTableAnswers","updateButtonDisabled","questionId","explanatoryTextAsHtml","AnswerFormControl","TableActions","View","answerId","currentAnswers","disableDebounce","getAnswerDisplayValue","respectiveQuestion","TableAnswerDeleteModal2","respectiveAnswer","getAnswerValue","TableAnswer2","onDeleteTable2Answers","setRowToChange","setAction","handleView","handleCancelUpdateModals","showEditTableModal","showDeleteAnswersModal","sortedAnswersRows","questionsWithObjects","alreadyRequested","questionWithObject","primary","explanatoryText","OverlayTrigger","trigger","Popover","Title","questionTextAsHtml","Content","faQuestionCircle","answerRow","largestIndex","isTable2Answer","selectAudits","audits","Audits","completedFilter","audit","AuditModel","dateColumn","sortAudits","AuditsMeatballMenu","currentAudit","isIndexPage","canEdit","canView","canDownload","auditAccess","canManageAudits","audits_manage","hasVisibleSectionBeforeDelete","Audit","auditType","faUserPlus","isPostingAuditAnswer","isDeletingAuditAnswer","isUpdatingAudit","isRequestingAuditPdf","isFetchingAuditPDF","getRequestWithRetry","validation","startedAt","rating","AuditsUploadDrawer","setData","onlyRoles","Admin","SecurityManager","Auditor","inProgress","isCreatingAudit","originOptions","ratingOptions","Compliant","ImprovementNeeded","NotCompliant","startDate","endDate","setName","auditName","auditOwnerId","auditStartedAt","auditFile","MeetingsUploadDrawer","isPosting","postMeetingStatus","handleNameChange","auditRating","ratingString","capitalize","AuditsList","AuditsPage","filteredAudits","auditsState","showUploadDrawer","setShowUploadDrawer","showMeetingsUploadDrawer","setShowMeetingsUploadDrawer","isFetchingAudits","isDeletingAudit","auditIdToDelete","PreviewDocument","useAuditPreviewModal","auditToRemove","ToggleSwitch","handlerStyle","auditStartRoute","addToggleClass","isMyAnswer","currentVendorUser","userName","AuditReviewTableAnswer","flat","Set","existingAnswer","prototype","completeRow","normalizeTableAnswers","setAnswers","answersPayload","answersFormatForRedux","valuesAsGlobalId","entry","isFetchingAudit","answerByType","updateAnswer","onUpdateRequest","myAnswers","sortedIndexes","isDisabledDeletion","numbers","rowOrder","attrs","childQuestion","customAttrs","commentsAnswer","ownerAnswer","ratingAnswer","indexes","rowToDelete","answersOutsideRow","AnswerComponent","check_boxes","date_field","email_field","file_select","multi_select","number_field","radio_buttons","radio_grid","single_select","text_area","text_field","audit_review_table_layout","table_layout","formatLongDate","LastUpdatedInfo","customText","includeConfirmation","isConfirmed","lastUpdatedInfo","confirmedBy","confirmedAt","useHandleAnswerChange","currentModel","isAgreements","surveyId","survey","handleTableChange","handleCheckboxAnswer","handleDeleteTableAnswers","answersIds","useLastUpdated","lastUpdatedAnswer","sortByDateColumn","latestAnswer","AgreementQuestion","lastUpdated","selectVisibleClauseQuestions","clause","context","dentaku","showWhen","AgreementClauseQuestions","agreementClause","calculateSurveyProgress","stats","interactiveSurveyClauses","surveyClauses","answered","answerAuthor","checkIfAnswered","unanswered","percents","progressPerClause","answeredPercentage","accumulator","statsPerClause","selectAgreementsProgress","selectAgreementQuestionsAreFilledIn","_agreement","AdoptechSliderSwitcher","tooltipsOptions","onClickHandlers","fieldWidth","left","selectedValue","backgroundOffset","customClickHandler","fieldClass","labelDiv","enabled","canvasRef","isSigningAgreement","userSignature","isRequestingUserSignature","isRequestingCurrentAgreement","currentSignatories","isEditingSignature","setIsEditingSignature","isSignatureDrawn","setIsSignatureDrawn","imageUrl","full","isSignButtonDisabled","Boolean","clear","faUndo","lazyRadius","canvas","_b","JSON","parse","getSaveData","lines","hideInterface","hideGrid","brushRadius","canvasHeight","canvasWidth","signAgreementArguments","agreementsPageRoute","image","dataURI","splitDataURI","byteString","atob","decodeURI","mimeString","ia","Uint8Array","i","charCodeAt","Blob","DataURIToBlob","canvasElement","canvasContainer","childNodes","getContext","height","getImageData","compositeOperation","globalCompositeOperation","fillStyle","fillRect","imageData","toDataURL","clearRect","putImageData","getImage","currentAgreementModes","labelsMap","Survey","modesAvailable","valueAndLabel","AgreementSummaryTile","setMode","questionsAreFilledIn","isShowingSendReviewModal","setIsShowingSendReviewModal","modalsProps","useAgreementsModals","showConfirmModal","setShowConfirmModal","showSignModal","setShowSignModal","iconEnabled","downloadRef","update","canEditAgreement","contentIsCustom","onClickModeHandlers","faPaperPlane","faFileContract","AgreementClauseHeader","clauseProgress","tickClass","selectAuditsProgress","useClauseProgress","isAgreement","getFirstClauseWithQuestions","surveyClause","QuestionsMode","config","attribution","htmlUntouched","toolbarButtons","moreText","buttons","buttonsVisible","moreLists","moreJustification","moreRich","moreMisc","toolbarSticky","toolbarStickyOffset","onModelChange","doneDisabled","onDone","AgreementEditor","agreementContent","agreementContentChanged","contentChanged","isRequestingEditSection","setIsRequestingEditSection","reload","approvalSort","Ascending","Requested","approvalStatusSort","selectApprovals","ApprovalManagement","ApprovedStatus","notRequestedTitle","WasNotRequested","lastApprovedAt","ApprovalManagementModal","isApprovalManagementModalShowing","isCancelable","isApprovalManagementModalCancelable","isPostingApproval","isSkippingApproval","approvalManagementVendorDocumentId","approvalManagementVendorDocumentName","selectedUsers","setSelectedUsers","required","isAllUsersSelected","isUserSelected","updateSelectedUser","faTimes","approvalMessage","excludedQuestionList","NoData","questionColumn","flattenedList","AddFileOrUrlModal","fileRef","urlRef","setDescription","setFile","setUrl","valid","setValid","addFileMode","isShowingAddFileModal","isShowingFileOrUrlSuccessfulToast","isUploadingFile","Url","portalRoutes","myDocument","fileOrUrlDetails","FormData","append","addFileToQuestionName","fetch","Accept","getMetaContent","method","ok","json","getQuestionLastUpdatedInfo","checkShowAuditInfo","timeField","TableLayout","showAuditInfo","CheckBoxes","checkboxAnswers","checkboxAnswer","HistoryButton","faExclamationTriangle","useAssessmentHistory","assessmentResponseId","assessmentResponseHistories","isFetchingAssessmentResponseHistory","fetchHistory","assessmentResponsesIdAssessmentResponseAnswersHistoryGet","fetchAssessmentResponseHistory","AssessmentResponseHistoryPopup","FileSelect","tableHistory","prevAnswer","exclamation","renderEntry","historyAnswers","ButtonGroup","drop","alignRight","tableHistoryAnswers","LibraryButton","AssessmentResponseLibraryPopup","onAnswerClick","historyExist","tableLibrary","libraryAnswers","tableLibraryAnswers","AssessmentSummaryExportModal","setSearch","isShowingAssessmentSummaryExportModal","incomingAssessmentResponses","isExportingAssessmentResponses","exportProgress","completedResponses","fuse","responses","selectedResponses","setSelectedResponses","updateSelectedResponse","selectedAssessmentResponses","isResponseSelected","vendorName","animated","striped","now","assessmentsIdAssessmentDownloadsPost","assessmentDownload","assessmentResponseIds","exportAssessmentResponses","ActionType","isQuestionConfirmed","isTableAnswer","assessmentResponseContext","AssessmentSummaryTile","assessment","isShowingPublishAssessmentModal","isPublishingAssessmentResponse","assessmentSections","allFilledInAndConfirmed","disableButton","handleShare","assessmentData","requestingVendorName","Assessment","faFileExport","SuccessFilled","faLockAlt","AssessmentResponse","getActions","assessmentResponsesIdPublishPatch","AssessmentQuestion","showHistory","isReadonly","lastUpdatedAnswers","setLastUpdatedAnswers","isConfirmedButtonDisabled","sourceType","library","updateAnswers","faCheck","assessmentResponseAnswersIdConfirmPatch","confirmAssessmentResponse","questionType","Confirmed","AssessmentQuestionHeader","AssessmentQuestions","isAssessmentCompleted","AssessmentPublishedModal","isShowingPublishedAssessmentModal","Success","completedAssessmentSort","dateCompleted","CompletedAssessmentType","selectCompletedAssessments","getVendorAssessments","CompletedAssessments","vendorAssessments","createdBy","path","selectCompletedAssessmentsResponses","getVendorAssessmentResponses","vendorAssessmentResponses","ar","CompletedAssessmentsGridIn","canCreateAssessments","baseClassName","handleRowClick","rowClickHandler","object","OwnerObjectType","CompletedAssessmentsGridOut","CompletedAssessmentsGrid","editPublishedAssessmentResponseId","isReopeningAssessmentResponse","isShowingEditPublishedAssessmentModal","completedAssessmentsResp","completedAssessments","assessmentTab","emptyArrayText","None","PendingAssessmentsGrid","PendingAssessments","AdoptechErrorBoundary","Component","defaultMessage","getDerivedStateFromError","componentDidCatch","errorInfo","render","this","AssessmentsIn","isFetchingAssessments","selectRecentlyCreatedAssessments","RecentlyCreatedAssessments","assessmentSort","DeleteAssessmentModal","assessmentToDelete","isDeleteAssessmentModalShowing","selectedRecipients","setSelectedRecipients","showDeleteAssessmentToast","assessmentRecipients","recipient","recipientId","recipients","assessmentsIdDelete","notificationRecipients","RecentlyCreatedAssessmentsGrid","responsesReceived","responsesRequested","faTrash","EntityCard","enableAnimations","disableProgress","hideProgress","detailsText","lastUpdatedAt","onCardClick","faBookAlt","button","buttonContainerStyle","entityCardClasses","entityCard","asHtml","element","assessmentTemplate","faFileSearch","templates","isFetchingAssessmentTemplates","assessmentTemplates","AssessmentsOut","PaymentLandingPageChecker","fallback","AssessmentsSummary","AssessmentSummaryQuestions","sections","AssessmentCompletedResponsesBody","setShowHistory","handleSectionLoad","AssessmentCompletedResponses","assessmentOpen","setAssessmentOpen","isFetchingIncomingAssessmentResponses","handleAccordionBodyLoad","selectAllAssessmentPendingResponses","ConfirmDeleteAssessmentResponseModal","assessmentResponseForDeletion","isDeletingAssessmentRecipient","isDeletingAssessmentResponse","isShowingConfirmDeleteAssessmentResponse","assessmentResponsesIdDelete","assessmentsAssessmentIdAssessmentRecipientsRecipientIdDelete","ResendAssessmentConfirmationModal","setOptionalMessage","isResendingAssessment","isShowingResendAssessmentConfirmationModal","resendRecipient","resendAssessment","AssessmentPendingResponses","isAssessmentResentToastShowing","handleReminderClick","AssessmentSummaryResponses","SendAssessmentConfirmationModal","isSendingAssessment","isShowingSendAssessmentConfirmationModal","count","checkEmailList","emailAddressList","parseEmailsPost","SendAssessmentModal","emailErrorMessage","toRef","clearSendAssessmentDetails","currentAssessmentTemplate","generateAssessmentName","sendAssessmentMode","setErrorMessage","setTo","toError","setToError","timeoutHandle","setTimeoutHandle","getDateString","Intl","DateTimeFormat","handleSend","emails","invalid","Generate","addresses","vendorsIdAssessmentsPost","assessmentTemplateId","sendTo","AssessmentSummary","searchVendorId","previousVendorRef","matchingAssessmentResponse","assessmentsIdAssessmentResponsesGet","isAssessmentSentToastShowing","isShowingSendAssessmentModal","questionsTabClasses","responsesTabClasses","exact","component","assessmentName","setAssessmentName","templateName","generateAssessmentModalShowing","setGenerateAssessmentModalShowing","AssessmentTemplateSummary","toBackRoute","assessmentTemplatesIdGet","generationInProgress","assessmentGenerationInProgress","assessmentTemplateSections","AssessmentsPage","isInitialised","vendorsVendorIdAssessmentTemplatesGet","welcomeRoute","AssessmentTour","page","setPage","showAssessmentHelp","AdoptechRoundCheckbox","adoptechRoundCheckbox","ChecklistGroupItem","onCheckedChanged","onNotApplicableChanged","onNoteChanged","setChecked","answerValue","notApplicable","setNa","answerNotApplicable","note","setNote","answerNote","answerUpdatedAt","answerUserName","Tooltip","ChecklistSummaryTile","checklist","isTemplate","Checklist","checklistId","checklists","chList","handleCheckedChanged","group","checklistSurveyId","questionGroupId","handleNotApplicableChanged","handleNoteChanged","descriptionAsHtml","itemsGroups","questionGroupName","getChecklistAssociatedUsername","checkable","selectActiveChecklists","list","visibleInLists","ActiveChecklists","showCloseAsIncompletePopup","setShowCloseAsIncompletePopup","selectedChecklist","setSelectedChecklist","activeChecklists","calculateChecklistProgress","getChecklistProgress","faTimesSquare","Closed","ChecklistTemplateCard","checklistTemplate","generateChecklist","relatedTo","canManageChecklists","checklists_manage","summaryAsHtml","GenerateChecklistManagersModal","isGeneratingChecklistFromTemplate","isShowingGenerateChecklistManagersModal","selectedUser","setSelectedUser","GenerateChecklistSuccessToast","isShowingGenerateChecklistSuccessToast","GenerateChecklistUsersModal","isShowingGenerateChecklistUsersModal","checklistTemplateToGenerate","ChecklistTemplates","checklistTemplates","selectCompletedChecklists","CompleteChecklists","completeChecklists","Checklists","canIndexChecklistTemplates","checklist_templates","isFetchingChecklists","ChecklistTemplateItem","ChecklistTemplate","checklistTemplateId","checklistTmpl","ConfirmSendInvitationModal","messageRef","initialMessage","isConfirmSendInvitationModalShowing","isSendingInvitation","resend","handleBack","DeleteProfileModal","check","setCheck","isDeleteUserModalShowing","isProfileDeletedToastShowing","isDeleting","isDeletingUser","deleteDisabled","toUpperCase","Download","anchorRef","EditOwnerModal","isEditOwnerModalShowing","isEditedOwnerToastShowing","ownerObjectToEdit","ownerObjectType","setOwner","isVendorDocument","VendorDocument","isAssessment","assessmentsIdPatch","patchAssessment","Manage2FAModal","qrCode","mfaQrCode","backupCodes","mfaBackupCodes","isVerifying","mfaIsVerifying","otpEnabled","mfaAlreadyEnabled","addingTwoFactorError","errorMessageClasses","otpAttempt","setOtpAttempt","is2FAEnabledShowing","setup","uninstall","stepBackupCodes","code","currentStep","isTwoFactorSavedToastShowing","isFetchingEscrowAccounts","escrowAccounts","EscrowAccounts","ea","accountNumber","accessKey","accountType","bucketName","isFileUploadedToastShowing","formatShortDateTime","Pager","totalPages","goTo","pageNumber","leftEnd","rightEnd","faAngleRight","Status","Failed","EventDetailsDrawer","eventId","eventDetails","tests","assertionRunExtended","assertionRunExtendedStatus","source","assertionResults","assertionResult","excluded","testResult","TestResult","TestLogPage","events","assertionRuns","categories","assertionCategories","selectedCategory","setSelectedCategory","categoryOptions","category","meta","totalEntries","statusOptions","showManual","setShowManual","selectedStatus","setSelectedStatus","queryParams","removeQueryParam","searchQuery","fetchResults","selectedEventId","setSelectedEventId","showDetailsDrawer","setShowDetailsDrawer","openDetailsDrawer","assertionCategory","Home","userType","Guest","InvitationSentModal","isInvitationSentModalShowing","useCookies","invitationSentMessageNoShow","customLogoUrl","year","selectUserRoles","MainMenuItem","collapsed","setCollapsed","routerRouteName","userRoles","hasAction","itemClasses","chevronClasses","childrenClasses","previousCollapsed","faChevronUp","child","vendorsOptions","vendor","canAddVendor","vendors_create","newVendorOption","newVendor","currentPath","segments","segment","commonSubpathLocation","vendorOption","PaymentSuccessfulToast","isPaymentSuccessfulShowing","HIDE_WARNING_COOKIE","toggleClicked","hide","onOk","doNotShowCheckboxValue","setDoNotShowCheckboxValue","shouldShowModal","func","deps","didMount","PolicyQuestion","policyQuestionClasses","policyQuestion","patch","vendorPolicyAnswers","PolicyOwnClause","lazy","PolicyQuestions","vendorPolicyClauseId","isEditable","leaveOut","PolicyCategoryRow","setIsEditable","resetEditor","setResetEditor","showWarning","setShowWarning","showIncompleteWarning","setShowIncompleteWarning","isPatching","isPatchingVendorPolicyClause","someQuestionsAreTable","allowCustomText","clauseTextIsCustom","clauseId","PolicyClauseHeader","policyClause","setLeaveOut","policyClauseHeaderTitleClasses","included","PolicySummaryTile","vendorPolicy","isCompletingPolicy","setShowModal","openDrawer","draftPoliciesPageRoute","Policy","SuccessTransparent","faCalendar","PolicyEditor","currentUsername","isPolicyEditingEnabled","setIsPolicyEditingEnabled","showAnotherUserEditingModal","setShowAnotherUserEditingModal","onPolicyFetch","clauses","vendorPolicyClauses","visibleQuestionIds","vendorPolicyCalculations","overallProgress","toggleRefs","clauseIndex","nextNotFinishedClause","nextClause","notFinishedClause","useExpandNextClause","Number","vpc","clauseText","PolicyTour","showPolicyHelp","renderPage","AdoptechTagAutocomplete","ShareAutocomplete","usersToShare","minQueryLength","shareSuggestions","suggestionOptions","setSuggestionOptions","inputValue","setInputValue","textSearch","getUser","suggestionsFilter","suggestion","userToShare","onAddition","tag","onValidate","newUsersToShare","onInput","allowNew","tags","suggestions","noSuggestionsText","removeButtonText","tagComponent","suggestionComponent","allPermissionsOptions","ShareTypesAndTitles","DataRoomEntity","SharesTable","shareableObject","onChangePermissions","onDeletePermissions","permissionsToUpdate","displaySharesList","toChangeList","toDeleteList","changedShare","renderAccessLevel","shareInfo","possibleAccessLevels","selection","handleAccessLevelChange","directShare","permissionsToUpdateInitial","ShareModal","setPermissionsToUpdate","setUsersToShare","selectedPermission","setSelectedPermission","permissionsOptions","setPermissionsOptions","isSharingModalShowing","isRequestingShare","isRequestingDeletePermissions","usersAreAdded","isShareButtonDisabled","isDoneButtonDisabled","typeTitle","handleUpdatePermissions","shouldHide","multipleShare","shares","emailsToDelete","GetLinkFooter","tempInput","appendChild","execCommand","removeChild","newUsers","toChange","emailToDelete","StripeSignupError","StripeSignupSuccess","purchasableId","policiesPageRoute","TableAnswerDeleteModal","isShowingDeleteTableAnswersModal","currentTableQuestions","currentTableAnswerIndex","transformAnswerToResponse","TableAnswerEditModal","routeParts","isShowingEditTableAnswersModal","isAdd","getTableAnswers","answerToAdd","questionName","selectVendorSuppliers","vendorSuppliers","vendorSupplierSort","VendorRegisterRiskProfile","riskInfo","scale","riskLevel","riskSeverity","supportedSuppliers","VendorSupplierLogo","supplier","sp","logoImage","getVendorRegistryRiskInfo","severity","risk","VendorRegisterRow","vendorSupplier","canManageRegister","vendor_register_manage","isActive","Active","riskProfile","accessControl","Sso","_2fa","contractRecurring","DeleteVendorModal","vendorToDelete","AdoptechTextSuggestion","suggestionShow","setSuggestionShow","suggestionsSelector","wrapperRef","useClickAway","suggestionElement","suggestionSet","suggestionClick","vendorSupplierCategoryId","vendorSupplierCategories","Inactive","ss","n","ContractSection","contractOptions","selectCompletedAgreements","contractRenewalDate","frequencyOptions","BiAnnually","contractId","contractDescription","ContactSection","contactEmail","contactName","contactPhone","ChatWidgetIcon","extraCss","articleId","RiskSection","controlsOptions","Password","NotApplicable","certificationsOptions","certificationsOptionsUnused","certifications","parseInt","cert","criticalDependencies","continuityPlan","DeleteSection","dispatchDelete","ManageSupplierDrawer","showReason","isNew","vendorSupplierForm","isCreatingVendorSupplier","isPatchingVendorSupplier","originalData","setOriginalData","formHasChanges","isDeleteConfirmationModalShowing","setIsDeleteConfirmationModalShowing","drawerBackgroundRef","useRegistryCreateActionModal","showCreateAction","setShowCreateAction","createAction","createPayload","VendorRegisterPage","useBackground","vendorSupplierDrawerShowReason","setVendorSupplierDrawerShowReason","fullVendorsList","showInactive","setShowInactive","visibleVendors","canViewReports","vendorsList","updateNeeded","fetchJurisdictions","jurisdictionsGet","errorMessageToUser","fetchClassifications","legislationClassificationsGet","fetchLegalRegister","vendorsVendorIdLegalRegisterGet","fetchVendorLegislations","vendorsVendorIdLegislationsGet","patchLegalRegister","vendorsVendorIdLegalRegisterPatch","postLegislation","vendorsVendorIdLegislationsPost","legislation","selectLegislations","legalRegister","vendorLegislations","legislationsSearch","legislations","filteredLegislations","jurisdiction","legislationSort","classification","legislationClassification","link","descriptionUrl","isValidUrl","jurisdictions","setJurisdictions","classifications","setClassifications","classificationOptions","jurisdictionOptions","j","DetailsSection","EditLegislationDrawer","initData","cleanData","legislationsIdGet","legislationClassificationId","jurisdictionId","legislationsIdPatch","registerType","isLegal","showNextReviewDate","reviewComments","faInfoCircle","fetchPestelRegister","vendorsVendorIdPestelRegisterGet","patchPestelRegister","vendorsVendorIdPestelRegisterPatch","RegisterReviewDrawer","register","selectedTab","setSelectedTab","frequencyChanged","formFieldsChanged","onCloseAndCleanup","isPatchingLegalRegister","isPatchingPestelRegister","pestel","isPostingReviewHistoryItem","compliance","relatedToType","relatedToId","reviewComment","registerPayload","patchThunk","Tabs","activeKey","Tab","ReviewHistoryItems","RegistryHeader","isLoadingList","additionalHeaderRows","showCalendarHS","setShowCalendarHS","showRegisterReviewDrawer","setShowRegisterReviewDrawer","reviewStatus","cursor","ReviewStatusEnum","Reviewed","lastReviewedAt","faAngleDown","actionsCount","CalendarHS","registerId","AdoptechCircleIcon","AddNewLegislation","notEmptyJurisdictions","addHandler","AddNewLegislationHeader","SelectJurisdictions","SelectLegislations","notEmptyJurisdictionOptions","onJurisdictionChange","elementCss","selectedJurisdictionsIds","newIds","JurisdictionTemplates","onSelectAllTemplatesChange","entity","filteredJurisdictionTemplates","legislationTemplates","fuseApp","jurisdictionTemplates","selectedLegislationTemplatesIds","LegislationTemplate","onSelectTemplateChange","templateChecked","useJurisdictionsList","addLegislationForm","allJurisdictions","aHasTemplates","bHasTemplates","mapToOptions","allJurisdictionOptions","useAfterLegislationFormSubmit","useAddLegislationFormHandler","legislationTemplatesGet","afterSubmit","isRequestingFetchLegislationTemplates","isRequestingFetchJurisdictions","isRequestingCreateLegislationFromTemplates","isSubmitting","updateFields","jurisdictionsIds","legislationsIds","jurisdictionTemplatesIds","updatedIds","submitButtonDisabled","legislationTemplateIds","vendorsVendorIdLegislationsAddPost","onTabChange","AddOwnLegislation","headerCss","useAddOwnLegislationHandler","formValidation","explanationOfCompliance","recurring","AddLegislationModal","tabClasses","tab","addOwnHandler","handleTabChange","LegislationList","setDeleteLegislation","legal_register_manage","l","useRegistryCreateActionRHS","newAction","LegalRegisterPage","legislationInfo","setLegislationInfo","isShowingAddModal","legislationsList","isRequestingVendorLegislations","isFetchingLegalRegister","editDrawerShowReason","setEditDrawerShowReason","opts","legislationsCount","legislationsIdDelete","marginTop","getPestelRating","pestelItem","consequence","likelihood","getPestelRiskInfo","getPestelRiskText","PestelRow","canManagePestel","pestel_manage","isOpportunity","itemType","Opportunity","selectPestels","area","filteredPestels","fp","pestels","sortPestels","PestelSection","pestelsFilteredBySearch","itemArea","PestelPolitical","PestelEconomicCommercial","PestelSocial","PestelEnvironmental","PestelLegal","PestelTechnological","getGridFromPestelArea","sortedPestels","selectFilteredPestels","pestelItems","filterPestels","descriptionValidation","errors","isEmpty","hasDuplicate","locationType","selectOptions","enumObject","fieldErrors","areaOptions","PestelItemArea","locationTypeOptions","PestelItemLocationType","errorExceptPresent","isMitigationPresent","mitigationFactors","AssessmentSection","numberOptions","Risk","comment","useManagePestelItemsController","pestelState","pestelItemForm","isCreatingPestelItem","isUpdatingPestelItem","isFetchingPestelItem","pestelRegister","setIsTouched","pestelItemsIdGet","pestelItemsIdPatch","vendorsVendorIdPestelItemsPost","createPestelItem","updatedFormData","ManagePestelItemsDrawer","PestelPage","setSearchText","toastMessage","toastVariant","isFetchingPestels","isFetchingPestelRegister","pestelIdToBeDeleted","pestelIdToDelete","showEditDrawer","isShowingManageDrawer","vendorsVendorIdPestelItemsGet","fetchPestels","pestelItemsCount","setIsShowingManageDrawer","pestelItemsIdDelete","startAt","AuditsEditForm","ExternalConsultant","getDescendantsIds","isChecked","groupCheckBoxId","CheckBoxGroup","questionGroup","toggleIds","renderQ","AuditsAreasForm","setIds","currentTemplate","clausesCheck","setClausesCheck","controlsCheck","setControlsCheck","controls","dynamic","dynamicClauses","cursorClause","cursorControl","clausesAndControls","AuditsStartNewDrawer","setAudit","questionIds","setQuestionIds","setStep","auditTemplateId","isFetchingCurrentAuditTemplate","alwaysRequiredIds","onSubmitSuccess","auditsPageRoute","setBusy","EditFooter","AreasFooter","auditPayload","AdoptechTile","customTitle","available","faBallotCheck","AdoptechPageNavBar","goBack","leftContent","AuditsTemplates","setCurrentTemplate","startNewWith","selectAuditQuestionsAreFilledIn","AuditsSummaryTile","onEdit","completeButton","AuditMode","AuditsEditDrawer","changedAudit","HistoryItem","auditorName","comments","AuditsReviewHistoryDropdown","auditId","auditReviewHistory","h","isFetchingAuditReviewHistory","visible","review","AuditQuestion","answerRef","isAuditTable","AuditReviewTableLayout","onlyTitleExist","marginRight","control","btn","parentElement","AuditClauseQuestions","auditClause","editControlFormModel","showControlDrawer","showTaskDrawer","ComplianceEditControlDrawer","ComplianceEditTaskDrawer","AuditsEditor","isFetchingAuditSpinner","isCompletingAudit","drawerVisible","setDrawerVisible","AgreementsTemplatesList","agreementIcons","Map","faFileInvoice","faFileChartLine","faFileUser","sortedCategories","onFreePlan","availableForFree","isAgreementPartOfPlan","isShowingAddAgreementDrawer","categoriesWithTemplates","categoryTemplates","agreementTemplateCategoryId","PartOfMyPlanBanner","agreementTemplateCategories","isRequestingAgreementTemplateCategories","isRequestingAgreementTemplates","isRequesting","templatesList","filteredByTextRisks","searchColumns","selectRisks","riskRegistry","risks","Risks","actionStats","sortRisks","RisksList","canUpdateRisks","risk_register_update","checksCompleted","checkStats","checksCount","checksIcon","treatmentStrategy","word","PageHint","localStorageKey","setHidden","useLocalStorage","faCircleInfo","RiskRegistryPage","filteredRisks","canCreateRisks","risk_register_create","isFetchingRisks","riskRegistryStartRoute","riskRegistryRoute","RiskRegistryStartNewDrawer","riskCategoryId","isCreatingCustomRisk","sortedRiskCategories","riskRegistryCategoryRoute","RiskRegistryLibrary","isFetchingCategories","showAddCustomRiskDrawer","setShowAddCustomRiskDrawer","noCategories","actual","riskStats","faCity","faUsers","faServer","faHouseDamage","categoryId","treatmentStrategyOptions","Modify","Share","Avoid","Retain","TreatmentStrategyTask","task","TreatmentStrategyControl","compliant","tasks","controlPageRoute","relation","Approved","TreatmentControls","chosenControlId","setChosenControlId","reFetchRisk","addedControlIds","m","TreatmentAction","TreatmentActions","ts","vendorActions","actionIds","va","actionOptions","chosenActionId","setChosenActionId","removeAction","showExplanation","Explanation","treatmentExplanation","RiskRegisterTreatment","dirty","setDirty","switchStrategyCommand","EditRiskModal","currentRisk","patchRiskStatus","setForm","formCopy","setFormCopy","setError","formChanged","submitDisabled","nameRef","InformationSecurityTooltip","RiskRegisterEditor","riskRegisterId","riskOwnerCompletion","inherentRiskCompletion","inherentRiskLikelihood","inherentRiskConsequence","treatmentCompletion","residualRiskCompletion","residualRiskLikelihood","residualRiskConsequence","compromisedCompletion","informationSecurityProperties","overallCompletion","currentCommand","cardTitle","complete","updateModel","dry","updateCommand","newModel","ReviewPending","stringify","rangeOfFiveOptions","canManageEdit","showEditRiskModal","setShowEditRiskModal","approveCommand","removeCommand","onChangeCompromisedProperty","informationSecurityPropertiesCopy","create","canManageOwner","ownerTitle","activeElement","blur","Confidentiality","Integrity","Availability","inherentRiskComment","residualRiskComment","filteredByTextRisksTemplates","selectRisksTemplates","paramsId","RisksTemplates","templatesIds","riskTemplateId","notUsedTemplates","sortRisksTemplates","useRiskIdFromParams","RiskCategoryFilter","uri","RisksTable","RegisterRisks","TemplatesTable","OrangeOnWhite","RiskTemplates","categoryTitle","RiskRegistryCategoryPage","isFetchingTemplates","isDeletingRisk","isCreatingRiskFromTemplate","ReportsPreviewPage","currentReport","isFetchingReport","isFetchingReportDocument","Report","reportsRoute","faCloudDownloadAlt","FrameworkGuidance","guidanceIdentifier","guidance","frameworkGuidances","dangerouslySetInnerHTML","__html","FrameworkRequirementCategories","frameworkRequirements","requirementsCount","requirementsCompleted","requirement","FrameworkRequirementCard","openedGuidance","setOpenedGuidance","setIsBusy","completeHandler","removeHandler","vendorFrameworkRequirementId","Manual","Pending","SendMessage","FrameworkRequirementsPage","selectSelectedFramework","frameworkModel","isFetchingRequirements","isFetchingFrameworkRequirements","frameworkRequirementCategories","frameworkName","complianceFrameworksRoute","SubscriptionRequiredModal","isShowingSubscriptionRequiredModal","isCreatingPaymentPlanVendor","pricing","handleManageSubscriptionClick","manageSubscriptionRoute","handleSubscribe","plan","selectPaymentPlans","monthlyPrice","isFetchingPaymentPlans","paymentPeriod","CompanyCertificatesPreviewPage","currentCertificate","fetchingCertificatesStatus","fetchingCertificateDocumentStatus","companyProfile","certificate","Certificate","companyProfileRoute","TrustHubUserAdminEditCompanyForm","baseHeaderCss","currentCompany","patchCurrentCompanyStatus","fetchingVendorUsersStatus","deletingCurrentCompanyStatus","trustHub","relationshipOwners","nda","isEditMode","setIsEditMode","Suspended","vendorIdOrDomain","ndaOptions","deleteCompanyCommand","companyId","trusthubAdminPageCompaniesRoute","faBuilding","faPencil","trusthubCompany","WaitingForNda","relationshipOwnerIds","formatLongDateTime","approvedAt","_confirmed","selectCompanyUsers","companyVendorUsers","TrustHubUserAdminCompanyUsers","sortCompanyUsers","TrustHubUserAdminApprovedUsers","trusthubCompanyId","trusthubAdminPageUserRoute","trusthubVendorUser","TrustHubUserAdminCompanyPage","fetchingSettingsStatus","fetchingCurrentCompanyStatus","TrustHubUserAdminEditUserForm","patchVendorUserStatus","fetchingCompaniesStatus","companies","initialFormState","statuses","companyOptions","deleteUserCommand","trusthubAdminPageUsersRoute","Unconfirmed","faUserAlt","updatedFields","selectVendorUserDocumentPermissions","vendorUserDocumentPermissions","TrustHubUserAdminVendorUserDocumentPermissions","permissions","sortVendorUserDocumentPermissions","TrusthubUserAdminAddDocumentPermissionDrawer","fetchingSectionsStatus","createAccessRequestStatus","trusthubVendorUserId","filteredSections","trusthubDocuments","sectionsList","DocumentPermissionTableRow","trusthubAccessRequest","trusthubDocumentIds","selectedDocumentsIds","_company","TrustHubUserAdminDocumentPermissions","fetchingVendorUserDocumentPermissionsStatus","showAddAccessDrawer","setShowAddAccessDrawer","faUserUnlock","permission","documentPermissionId","selectVendorUserActivities","vendorUserActivities","TrustHubUserAdminVendorUserActivities","activities","sortActivities","fetchingActivitiesStatus","faUserClock","activity","TrustHubUserAdminUserPage","fetchingCurrentVendorUserStatus","isTrusthub","isTrusthubAdminRoute","fetchTokenAndInitChatWidget","token","hsConversationsSettings","identificationEmail","identificationToken","EvidenceRow","evidence","fileType","creator","fileSize","EvidenceList","evidenceItem","DataRoomEvidencePage","fetchEvidenceStatus","getVendorDocuments","vendorDocuments","vendorDocumentSort","dateSort","attestationDueAt","vendorDocumentAttestation","lastAttestedAt","selectArchivedDocuments","ArchivedDocuments","ad","archived","ArchivedDocumentsRow","canManageDocuments","vendor_documents","archivingVendorDocumentId","isUnarchivingVendorDocument","faArrowSquareUp","archivedDocuments","disabledSort","doc","selectAllDocuments","AllDocuments","vendorDoc","allDocuments","AllDocumentsRow","allDocumentsPageItemRoute","faArchive","DeleteVendorDocumentModal","isDeleteVendorDocumentModalShowing","isDeletingVendorDocument","isVendorDocumentDeletedToastShowing","vendorDocumentIdBeingDeleted","vd","useFetchVendorDocuments","isFetchingVendorDocuments","queryShowHistory","AllDocumentsPage","previewMode","Document","documents","PoliciesTabs","UploadDocumentModal","ArchivedDocumentsPage","DraftPoliciesPage","PoliciesPageTables","DataRoomPage","TrustHubAdminPage","TrustHubAdminLayout","TrustHubUserAdminPage","ChangePasswordModal","StartProfile","StartCompany","ManageSubscriptionPage","AgreementsPage","CalendarPage","CompanyProfilePage","IntegrationsPage","PeoplePage","Dashboard","PoliciesPage","PdfPreviewModal","FrameworkControlsPage","ControlsPage","ComplianceFrameworks","ComplianceTasks","HelpMenu","agreementShowPage","agreementsStartRoute","controlsPageRoute","complianceControlsRoute","complianceFrameworkTasksRoute","complianceTasksRoute","frameworkRequirementsRoute","complianceTestsRoute","dataRoomRoute","dataRoomEvidenceRoute","reportsPreviewRoute","paymentLandingPageRoute","calendarRoute","archivedDocumentsPageRoute","oldAllDocumentsPageRoute","oldAllDocumentsPageItemRoute","allDocumentsPageRoute","policyPageItemRoute","policyPageItemRouteURL","governancePoliciesLibraryRoute","policyRoutes","companyProfileTabsRoute","certificatesPreviewRoute","portalUrl","home","privacy","terms","prices","trusthubAdminPageRoute","trusthubAdminPageRequestsRoute","trusthubAdminPageCompanyRoute","hideBottomFooterClass","externalProvidersRoutes","google","microsoft","welcomeProfileRoute","dashboardRoute","signupRoute","scrollContainer","peopleRoute","peopleComplianceRoute","peopleChartRoute","legalRegisterPageRoute","riskRegistryItemRoute","Routes","contentRef","downloadUrl","scrollToY","customAppContentClasses","isHelpMenuShowing","vendorIdParam","isInlinePdf","pdfModalAlreadyOpened","isPreviewingPdfModal","scrollTo","vendorToSet","useIdleLogout","afterIdle","Suspense","showHeaderBackButton","PageHeader","PaymentLandingPage","attestationSort","Imminent","Overdue","attestationStatusSort","AttestedStatusEnum","AttestedStatus","attestation","Expired","faTimesCircle","useSentAttestations","AttestationManagement","vendorDocumentAttestations","isVendorDocumentMode","columns","documentName","sortableTableHeaderClassNames","existingSort","sortSettings","isAscending","isDescending","Descending","labelClasses","switchStyles","offHandleColor","onColor","handleDiameter","onHandleColor","checkedIcon","offColor","activeBoxShadow","uncheckedIcon","rightLabel","palette","getPaletteColourFromString","maxValue","character","previous","getHash","initialsColor","customColor","baseClass","basesClasses","circleClasses","nameClasses","colorIdentifier","customRoleColor","SecurityEditor","baseCss2","reviewHistoryItems","setReviewHistoryItems","isFetchingReviewHistoryItems","noCommentsMode","historyItem","DrawerType","minimumAssignedFrameworks","constructor","controlExtended","simpleObject","reviewSubmitted","treatmentPlan","treatmentPlanAsHtml","helpArticleUrl","applicable","assignee","lastReview","reasonForExclusion","createNew","AwaitingReview","EditControl","getPayload","editControl","assigneeId","tasksIds","policyCodes","vendorPolicyIds","fwr","controlCategoryId","risksIds","updatePayload","DataRoomMoveEntitiesTabsInfo","selectFolder","css","subscriptionOptionsText","paymentLandingPageConfig","planInfo","ctaText","vendorRegister","riskRegister","complianceFrameworks","dataRoom","escrow","dashboard","people","profile","companyDocuments","productTitles","fromProduct","mapVendorActionToItem","vendorAction","eventType","isFetchingVendorActions","setItems","Calendar","sortedItems","calendarItems","CalendarHSList","currentVendorId","showCalendarRoute","showAllItems","tooltipText","eventTypeValueToLabel","itemEventType","calendarItemClass","calendarItemRoute","pluralizedType","CalendarItemsList","noDataText","gridName","completedStatus","overdueStatus","CalendarHeader","setShowEditEventModal","setShowEditActionModal","setShowCorrectiveActionModal","setShowIncidentModal","setCurrentCalendarItem","canManageCalendar","calendar_manage","filters","viewMode","startPeriod","showMyItems","showCompleted","endPeriod","useAdoptechDebounce","updateFilters","filtersPayload","currentVendorUserId","showCompletedFilter","startDeadlines","endMinDate","endMaxDate","viewModeOptions","currentViewMode","CalendarSearch","actions_and_events","incident_log","audit_schedule","corrective_actions","selectCalendarPageItems","groupedByMonthItems","month","monthItems","monthName","filteredItem","calendarItemsSort","endOfCurrentDateMonth","currentDate","showEditActionModal","showEditEventModal","showCorrectiveActionModal","showIncidentModal","currentCalendarItem","urlParams","urlParamsType","refetchCurrentDateCalendarItems","cleanup","pushState","fetchCalendarItemsStatus","isFetchingItems","filteredGroupedByMonthItems","calendarType","onScroll","container","getElementById","offsetHeight","scrollTop","scrollHeight","noPages","pageLimitReached","noMorePages","nextPage","CalendarHeaderProps","sortedMonthItems","CalendarPageModals","C","EditCorrectiveActionModal","createCorrectiveActionStatus","fetchCorrectiveActionStatus","updateCorrectiveActionStatus","deleteCorrectiveActionStatus","isDeletingCalendarItem","isFetchingCalendarItem","isCreatingCalendarItem","fetchCorrectiveActionAsync","hasNameError","hasDescriptionError","hasTypeError","hasIdentifierError","hasDateError","dateIdentified","hasOwnerError","hasRaisedByError","raisedBy","hasRootCauseError","rootCause","hasCorrectiveActionsError","correctiveActions","isNonConformance","NonConformance","OpportunityForImprovement","CalendarAttachments","EditIncidentModal","createIncidentStatus","fetchIncidentStatus","updateIncidentStatus","deleteIncidentStatus","fetchIncidentAsync","hasActionsTakenError","actionsTaken","hasPreventativeActionsError","preventativeActions","noDataBreachChosen","dataBreach","hasDataBreachError","hasDataBreachDetailsError","dataBreachDetails","dataBreachOptions","mapFormAttachmentsToPayload","attachments","attachment","rawFile","mapVendorActonFormToPostPayload","vendorActionName","vendorActionOwnerId","vendorActionDescription","vendorActionDueDate","vendorActionActionType","vendorActionUrl","vendorActionAttachments","currentCalendarItemId","currentCalendarItemType","afterCreateOrUpdate","oldAction","typeChanged","oldActionHasRegistry","isPestel","referenceableId","registers","pestelRegisterId","legalRegisterId","referenceableType","deleteReference","refetchPageItems","currentActionId","currentEventId","currentCorrectiveActionId","currentIncidentId","deleteActionCommand","deleteEventCommand","deleteCorrectiveActionCommand","deleteIncidentCommand","calendarItem","deletedAttachmentIds","vendorActionDeletedAttachmentIds","vendorActionCompleted","EditEventModal","vendorEventName","vendorEventOwnerId","vendorEventDescription","vendorEventDate","vendorEventEventType","vendorEventUrl","vendorEventAttachments","vendorEventDeletedAttachmentIds","vendorEventId","correctiveActionName","correctiveActionDescription","correctiveActionDateIdentified","correctiveActionRaisedBy","correctiveActionRootCause","correctiveActionActionType","correctiveActionCorrectiveActions","correctiveActionIdentifier","correctiveActionOwnerId","correctiveActionUrl","correctiveActionAttachments","correctiveActionId","correctiveActionCompleted","correctiveActionDeletedAttachmentIds","incidentEventName","incidentEventDescription","incidentEventDateIdentified","incidentEventRaisedBy","incidentEventRootCause","incidentEventPreventativeActions","incidentEventActionsTaken","incidentEventIdentifier","incidentEventOwnerId","incidentEventDataBreach","incidentEventDataBreachDetails","incidentEventUrl","incidentEventAttachments","mapIncidentFormTypeToPostOrPatchPayload","incidentEventCompleted","incidentEventId","incidentEventDeletedAttachmentIds","confirmed","downloadEventAttachmentStatus","downloadActionAttachmentStatus","downloadIncidentAttachmentStatus","downloadCorrectiveActionAttachmentStatus","handleDownloadAttachment","incident","attachmentDetails","attachmentId","isDownloading","newAttachments","prevModel","eventTypes","DocumentReview","SecurityTraining","ControlReview","AgreementReview","PolicyReview","IncidentBcpDrSimulation","AssertionDueDate","hiddenTypes","editable","createEventStatus","fetchActionStatus","fetchVendorEventStatus","deleteActionStatus","deleteEventStatus","fetchEventAsync","sortCalendarItems","isAction","isEvent","isCorrectiveAction","isIncident","startOf","calendarSlice","reducers","updateCalendarItemSuccess","updateCalendarItemFailure","updateCalendarItemRequest","cleanupItems","fetchVendorActionsFailure","fetchVendorActionsRequest","fetchVendorActionsSuccess","setCalendarFilters","extraReducers","builder","addCase","pending","fulfilled","rejected","newItems","newItem","actions","fetchCalendarItems","ownerIds","perPage","vendorsVendorIdCalendarGet","obj","updateAction","currentVendorAction","rawResponse","deleteAction","vendorActionId","vendorActionsVendorActionIdDelete","fetchEvent","vendorEventsVendorEventIdGet","createEvent","updateEvent","deleteEvent","vendorEventsVendorEventIdDelete","fetchVendorActions","vendorsVendorIdVendorActionsGet","createActionReference","vendorActionsVendorActionIdReferencesPost","reference","deleteActionReference","vendorActionsVendorActionIdReferencesDelete","downloadEventAttachment","downloadActionAttachment","vendorActionsVendorActionIdGet","downloadCorrectiveActionAttachment","correctiveActionsCorrectiveActionIdGet","downloadIncidentAttachment","incidentEventsIncidentEventIdGet","fetchAction","createNewAction","createCorrectiveAction","isResponse200","deleteCorrectiveAction","correctiveActionsCorrectiveActionIdDelete","fetchCorrectiveAction","updateCorrectiveAction","createIncident","deleteIncident","incidentEventsIncidentEventIdDelete","fetchIncident","updateIncident","buildActionFormData","root","rawRequest","buildCorrectiveActionFormData","buildIncidentFormData","buildEventFormData","UploadLogoModal","isUploadLogoModalShowing","isLogoUploading","isDisplayableColour","newColour","CompanyBrandingTable","isLogoUploadSuccessToastShowing","company_manage","setColour","colorChanging","setColorChanging","debounce","checkValidColour","handleColourChange","selectedColour","updatedCompany","saveCompanyDetails","contentsCss","faCloudUpload","companyProfileSlice","certificates","deletingCertificateStatus","creatingCertificateStatus","fetchingCertificateStatus","fetchingCompanyConfigStatus","fetchVendorTreeStatus","fetchBusinessFunctionsStatus","businessFunctions","postBusinessFunctionStatus","patchBusinessFunctionStatus","deleteBusinessFunctionStatus","businessFunction","fetchCertificatesRequest","fetchCertificatesSuccess","fetchCertificatesFailure","deleteCertificateRequest","deleteCertificateSuccess","deleteCertificateFailure","createCertificateRequest","createCertificateSuccess","existing","createCertificateFailure","fetchCertificateRequest","fetchCertificateSuccess","fetchCertificateFailure","cleanCurrentCertificate","fetchCertificateDocumentRequest","fetchCertificateDocumentSuccess","fetchCertificateDocumentFailure","fetchBusinessFunctionStatus","fetchCertificates","vendorsVendorIdCertificatesGet","deleteCertificate","certificatesIdDelete","createCertificate","vendorsVendorIdCertificatesPost","fetchCertificate","certificatesIdGet","fetchCertificateDocument","convertedData","fetchCompanyConfig","configsConfigIdGet","fetchVendorTree","vendorsIdTreeGet","fetchBusinessFunctions","vendorsVendorIdBusinessFunctionsGet","postBusinessFunction","vendorsVendorIdBusinessFunctionsPost","fetchBusinessFunction","businessFunctionsIdGet","patchBusinessFunction","businessFunctionsIdPatch","deleteBusinessFunction","businessFunctionsIdDelete","isFetchingAuditTemplates","auditQuestionIdToShowHistory","auditsSlice","fetchAuditsRequest","fetchAuditTemplatesRequest","fetchCurrentAuditTemplateRequest","fetchAuditsSuccess","fetchAuditReviewHistoryRequest","fetchAuditReviewHistorySuccess","fetchAuditReviewHistoryError","cleanupAuditReviewHistory","showHistoryForQuestionId","setAuditsError","fetchAuditTemplatesSuccess","fetchCurrentAuditTemplateSuccess","cleanUpCurrentTemplate","createAuditRequest","createAuditSuccess","updateAuditRequest","updateAuditSuccess","toggleCompletedFilter","cleanupAudits","deleteAuditRequest","deleteAuditSuccess","deleteAuditError","setAuditIdToBeDeleted","fetchAuditPDFRequest","fetchAuditPDFSuccess","fetchAuditPDFError","setCurrentAudit","fetchAuditRequest","fetchAuditSuccess","fetchAuditError","completeAuditRequest","completeAuditSuccess","completeAuditError","postAuditAnswerRequest","postAuditAnswerSuccess","postAuditAnswerError","deleteAuditAnswerRequest","deleteAuditAnswerSuccess","deleteAuditAnswerError","setAuditQuestionTableAnswers","currentQuestion","setAuditQuestionTableAnswer","qs","auditorQuestion","ratingQuestion","commentsQuestion","answerColumns","fetchAnswerControlRequest","isFetchingAnswerControl","fetchAnswerControlSuccess","fetchAnswerControlError","fetchAudits","vendorsVendorIdAuditsGet","deleteAudit","auditsIdDelete","fetchAuditTemplates","auditTemplatesGet","fetchAuditReviewHistory","auditsAuditIdReviewHistoryGet","fetchCurrentAuditTemplate","auditTemplatesIdGet","fetchAuditPDF","createAudit","vendorsVendorIdAuditsPost","uploadAudit","vendorsVendorIdAuditsUploadPost","auditOrigin","auditCompletedAt","updateAudit","auditsIdPatch","fetchAudit","withLoader","auditsIdGet","responseWithTables","completeAudit","auditsIdCompletePost","addAuditAnswers","vendorsIdAnswersPost","deleteAuditTableAnswers","vendorsIdAnswersDelete","fetchAnswerControl","controlId","controlsControlIdGet","frameworkId","postMeeting","vendorsVendorIdAuditsUploadMeetingPost","shape","selectIsViewModeTaskDrawer","editTaskMode","useChildClass","EditTestFormMainSection","childClass","isAuto","isTestAutomatic","patchAssertionDetailsStatus","descriptionRef","patchPayload","frequency","EditTestFormAutoSection","updateAssertionEveryWhere","useUpdateAssertionEverywhere","isInProgress","red","autorun","green","assertionId","assertion","faSyncAlt","faArrowRightFromLine","newAssertion","lastRunAt","latestRunResults","overdue","nextRunAfter","EditTestFormReviewTestModal","setReviewStatus","setReviewComment","reviewEvidences","setReviewEvidences","handleStatusClick","postAssertionReviewStatus","active","assertionReviewStatus","assertionReviewComment","assertionReviewEvidences","EditTestFormLastResultsSection","isCompliant","isFailed","showReviewTestModal","setReviewTestModal","reviewConfirmed","setReviewConfirmed","EditTestFormLastResultsList","Automatic","EditTestForm","fetchAssertionDetailsStatus","formatDate","longDateTime1","longDateTime2","ExcludeResultModal","setReasonForExclusion","patchAssertionResultExcludeStatus","fetchAssertionDetailsSilentStatus","isExcluding","useUpdateHiddenControlDrawer","tempTask","taskStatus","updatedTasks","calculateTaskStatus","taskAssertions","visibleAssertions","allCompliant","taskAssertion","hasFailed","updateHiddenEditControlDrawerTasks","assertionPayload","newAssertions","assertions","newTempTaskPayload","partialUpdate","testResultTitle","parseJSONPayload","patchAssertionResultIncludeStatus","excludeResults","includeResults","isIncluding","hasIncludeResults","hasExcludeResults","canExclude","showExcludeModal","setShowExcludeModal","currentResultId","setCurrentResultId","fetchAssertionAfterExcludeOrInclude","handleExclude","faCircleMinus","assertionResultId","handleInclude","EditAssertionModal","patchControlCheckAssertionsStatus","modalAssertions","fuseDocuments","setCategoryId","hasTests","filteredDocuments","selectedIds","handleSelectAllButton","treeDiv","categoriesOptions","availableAssertionIds","assertionsPayload","taskId","formPayload","taskPayload","EditTestDrawer","showBackButton","setFormTouched","drawerOnTop","activeDrawer","originalFormData","setOriginalFormData","editTestFormProps","newFormData","onTop","Test","changedFields","ControlCheckTests","isViewMode","showAddModal","setShowAddModal","allAssertions","assertionStatusClass","AssertionModel","handleRemoveClick","setDeletingAssertionId","showTestDrawer","setShowTestDrawer","deletingAssertionId","AdoptechIcon","ControlCheckCalendarActions","VendorEventEventType","ReferenceCreatePayloadReference","Task","newTask","ComplianceEditTaskForm","selectedTaskId","isFetchingTaskDetails","nameError","showDescriptionTextArea","custom","showName","condition","updatedTask","ControlCheckControls","selectedControlId","isPatchingTask","isPostingTask","updateHiddenControlDrawer","Normal","originalTask","setOriginalTask","TaskStatusText","patchTaskPayload","newTaskPayload","editedTask","controlIcon","controlIconClass","isFetchingControls","fetchControlsStatus","controlDataFetched","setControlDataFetched","controlFrameworks","firstFrameworkId","fetchControlDrawerData","editControlMode","isFetchingControlDetails","MarkNotApplicable","isDoneDisabled","isMarkNotApplicable","isNormal","Control","selectIsViewModeControlDrawer","isVendorPolicy","ControlEditPolicyModal","fetchPoliciesStatus","fetchVendorPoliciesStatus","modalPolicies","setModalPolicies","hasPolicies","queryStatus","queryType","formVendorPoliciesIds","formPolicyCodes","modalRecords","newPolicies","newVendorPolicies","ComplianceControlPoliciesSimpleList","formPolicies","showPolicyEditModal","setShowPolicyEditModal","policyToRemove","setPolicyToRemove","vendorPoliciesExceptCurrent","formPolicy","policiesExceptCurrent","controlForm","ComplianceControlTasksSimpleList","taskToRemove","setTaskToRemove","updateTaskListOnModel","handleRemoveTask","onTaskViewClick","useOnTaskViewClick","showCheckModal","setShowCheckModal","EditDocumentModal","selectIsNormalModeControlDrawer","EditControlReview","_12Months","reviewOverdue","EditControlTreatmentPlan","treatmentPlanRef","EditControlFrameworksModal","setSelectedFramework","setReferenceText","selectedFramework","referenceText","frameworkOptions","relations","ComplianceControlFrameworksSimpleList","setRelations","allFrameworks","frameworksAssigned","showFrameworkModal","setShowFrameworkModal","dispatchRelations","newRelations","tempRelations","ComplianceControlRisksList","formRisks","handleRiskClick","SecurityEditorOwnerWarning","ComplianceEditControlForm","inputFieldClass","reasonForExclusionRef","frameworksRelationsError","isSettingNotApplicable","isNormalMode","isDescriptionDisabled","showControlDescriptionTextArea","tempDesc","getControlStatusText","ControlStatusText","useDocumentsSelectTree","setSelectedIds","isSelectAllChecked","handleSelectAll","handleSelect","prevState","docId","assignableTasks","formTask","canExportEvidences","dataroom_control_evidence_manage","testResultEvidences","evidences","testsSlice","assertionRunsStatus","assertionCategoriesStatus","fetchAssertionRunsRequest","fetchAssertionRunsSuccess","fetchAssertionRunsFail","fetchAssertionCategoriesRequest","fetchAssertionCategoriesSuccess","fetchAssertionCategoriesFail","fetchAssertionRunExtendedRequest","fetchAssertionRunExtendedSuccess","fetchAssertionRunExtendedFail","fetchAssertionRuns","assertionCategoryIdentifier","assertionName","assertionStatus","vendorsVendorIdAssertionRunsGet","fetchAssertionCategories","assertionCategoriesGet","fetchAssertionRunExtended","assertionRunId","assertionRunsAssertionRunIdGet","isAgreementMode","isDocumentMode","setDocumentName","setDocumentType","documentCategoryId","setDocumentCategoryId","setNameError","documentNameRef","isDocumentUploadModalShowing","isUploadingVendorDocument","isUploadingDocument","policyCategoriesOptions","policyCategories","isUploadingAgreement","handleUpload","agreementDescription","agreementDocument","vendorDocumentDocument","vendorDocumentName","vendorDocumentDocumentType","vendorDocumentDescription","vendorDocumentFileSizeInBytes","vendorDocumentPolicyCategoryId","ExistingPolicyWarningModalMode","isExistingPolicyWarningModalShowing","existingPolicyWarningModalMode","getModalTexts","subtitle","selectedPolicyId","isCreatingPolicy","isCreatingNewVersionOfAgreement","selectedVersion","setSelectedVersion","changeReason","selectInProgressPolicies","getVendorPolicies","InProgressPolicies","vendorPolicySort","selectAllAvailableCategories","allPolicies","selectAvailablePolicies","AvailablePolicies","genericSort","DocumentLibraryHeader","categoryFilter","handleCategoryClick","searchPlaceholder","selectedDocument","onCreate","vendorProducts","currentVendorProducts","isPartOfPlan","subscriptionRequired","inProgressVendorPolicies","draft","vendorPolicyExists","selectedPolicy","setSelectedPolicy","setCategoryFilter","canIndexVendorPolicies","vendor_policies","availablePolicies","allCategories","isFetchingVendorPolicies","policyCode","policyCategory","handleOnPolicyCreated","amongAllPolicies","resultIds","extraResults","policiesCount","DocumentTypeEnum","UploadOwnPolicy","isDocumentLibraryModalShowing","documentTypeOptions","faFileArrowUp","InProgressPoliciesGrid","previousPolicies","previousPolicy","titleRef","policy_categories","AttestationManagementModal","attestationManagementVendorDocument","isAttestationManagementModalShowing","useFetchAttestations","CompleteDocumentAuditModal","completeDocument","isCompleteDocumentAuditModalOpen","vendorDocumentApproval","LivePolicyRow","onDownLoadClick","onReadRequestClick","canUpdateVersion","manage_versions","allVendorPolicies","openPdf","customCategory","policyCategoryId","policyCategoryName","needToAttest","Attest","inverse","faGear","Update","faSync","LivePolicies","isShowingDownloadDocumentModal","setIsShowingDownloadDocumentModal","setVendorDocument","showReadRequestModal","setShowReadRequestModal","vendorDocumentToMakeReadRequest","setVendorDocumentToMakeReadRequest","livePolicyDocuments","selectLivePolicies","isShowingSuccessfulVendorDocumentAttestationToast","myPoliciesFilter","myPoliciesFilterEnabled","userRole","Employee","onDownload","onReadRequest","selectPolicyRejections","ManagePolicyRejectionModal","rejectedItemToManage","isPolicy","itemName","rejection","rejectedAt","rejectionReason","selectPendingApprovalPolicies","policyDocuments","PendingApprovalPolicies","vendorDocumentApprovals","pendingApprovalPolicies","allDocumentsPendingApproval","pd","allDocumentsRejected","vda","manage_approvals","pap","vendorDocumentWithCategoryNameSort","PendingApprovalPolicyRow","canManageApprovals","handleManageClick","inProgressPolicies","Approve","approvalStats","approved","vendorDocumentsPendingApproval","canSeePolicyCategories","useHideNotLivePolicies","isRequestingCategories","isFetchingPolicyCategories","getIcon","faSeedling","faFileLock","faCircleCheck","faLaptopMobile","cat","D","encodeURIComponent","isShowingSuccessfulVendorDocumentApprovalToast","isShowingSuccessfulVendorDocumentUpdatedToast","isShowingSuccessfulVendorDocumentRejectionToast","isManageRejectionModalShowing","isFetchingPolicies","isFetchingVendorPolicyDocuments","addOrUpdatePolicyMode","getPolicyDocuments","canViewDraftPolicies","showDraft","refreshPolicies","livePolicyToPreview","canViewCompanyDocuments","company_documents","coinsToPounds","coins","pounds","NumberFormat","useHandleSubscribe","planId","productId","purchasableType","PaymentPlanCard","annuallyPrice","subscriptionDetails","isUpdatingSubscription","showAnnualPrice","price","isDeletingSubscription","subscriptions","paymentPlans","rank","isStarter","isProfessional","activePlan","paymentPlan","paymentPlanId","buttonLabel","priceLabel","subheader","DarkOrangeOnWhite","accessObjectKey","hasAccess","pricingSlice","paymentPlanVendors","createPaymentPlanVendorRequest","createPaymentPlanVendorError","createPaymentPlanVendorSuccess","creatingPaymentPlanVendorId","createPaymentPlanVendorFailure","createStripeCheckoutFailure","updateSubscriptionRequest","updateSubscriptionError","updateSubscriptionSuccess","updateSubscriptionFailure","setShowSubscriptionWarningModal","showSubscriptionWarningModal","setSubscriptionDetails","getDynamicPriceRequestStatus","outdatedActiveSubscriptionFailure","fetchPaymentPlansRequest","fetchPaymentPlansSuccess","fetchPaymentPlansFailure","fetchingPaymentPlansError","updateDynamicPlanPriceSuccess","priceValue","createPlanCheckoutSubscription","requestParams","createStripeSessionPost","stripeKey","sessionId","stripePromise","redirectToCheckout","fetchPaymentPlans","paymentPlansGet","CertificationsSection","onDocumentClick","showDocumentDownloadIcon","settings","useColourGradient","ColorHeader","blackColor","background","CompanyDetailsEditSection","companyEmail","setCompanyEmail","companyDescription","setCompanyDescription","updateSettingsStatus","CompanyDetailsSection","isNoDataMode","ControlRow","isEditableChecked","isDragging","dragAllowed","dropAllowed","editSectionHandler","editDescriptionMode","setEditDescriptionMode","editDescriptionAllowed","handleDeleteControl","handleCheckboxChange","handleAddControlsToRow","updateDocumentField","formDocuments","formDocument","formDoc","formDescription","setFormDescription","isOver","dropRef","useDrop","controlIds","rowTargetRowOrder","trusthubCategoryId","collect","monitor","canDrop","isDraggingCurrent","dragRef","_dragPreview","useDrag","canDrag","isDraggable","descriptionIsEmpty","hoverable","draggable","droppable","Large","flexGrow","layerStyles","position","pointerEvents","zIndex","getItemStyles","initialCursorOffset","initialOffset","currentOffset","transform","y","WebkitTransform","ControlDragPreview","initialFileOffset","currentFileOffset","useDragLayer","getItem","getItemType","getInitialClientOffset","getInitialSourceClientOffset","getSourceClientOffset","ControlEditLeftPanel","frameworksFilterOptions","handleFrameworksFilterChange","selectedFrameworkName","handleCheckboxAllChange","sortedDocsToEdit","allFormDocuments","leftPanelControls","sortedDoc","extra","controlsIdsToDrag","drag","getEmptyImage","captureDraggingState","leftPanelControlsList","leftPanelList","leftPanelPreviewList","filterIds","ControlCategoryRow","handleAddControlsToCategory","shallow","ControlEditRightPanel","formCategories","ControlsEditSection","titleBar","fetchingCurrentSection","fetchCurrentSection","handleDeselectAll","fetchCategories","sectionDoc","setSelectedFrameworkName","DndProvider","backend","ControlsSection","publicDocs","bulkActionsRow","useTrustHubSection","confirmOnDelete","fetchVendorDocumentFileStatus","fetchingVendorDocumentIdFile","domain","publicDoc","CertificationsEditSection","DocumentsEditSection","SectionRow","isCertificates","faShieldCheck","faLeaf","restricted","invisible","DocumentsSection","InformationSecurityDocumentsSection","isReports","InformationSecurityDocumentsRow","InformationSecuritySection","policiesProps","reportsProps","PoliciesSection","sectionDescription","setSectionDescription","InformationSecurityEditSection","updateSectionStatus","certificatesLogos","EditSectionRow","docVisibilityIcon","visibility","faEyeSlash","isEsg","isCompliance","overflowTitleLarge","overflowTitle","PoliciesEditSection","AdoptechColourInput","TrusthubColorsList","TrustHubSettingsDrawer","staticText","favicon","settingsFields","formDataCopy","replaceAll","prevFormData","substring","userStatus","TrustHubVendorUserTableRow","postTrusthubInvitationStatus","reminderClicked","setReminderClicked","ReminderButton","trusthubUser","lastLoginAt","trusthubSectionName","sectionDocsToSelect","sectionDocsToView","sectionIsChecked","formDataObject","sectionIsCheckedAll","isDocumentChecked","prevSectionIsCheckedAll","excludeIds","allIds","docChecked","handleDocumentSelect","selectCurrentUser","auth","trusthubSlice","fetchingAccessRequestsStatus","fetchingSectionStatus","approvingAccessRequestStatus","denyingAccessRequestStatus","showCompletedRequests","accessRequestsSearch","accessRequests","activitiesSearch","vendorUsersSearch","fetchingCompanyVendorUsers","deletingVendorUserDocumentPermissionStatus","adminAuth","fetchingTrusthubAdminVendorUserDetails","fetchTrustHubUserDetailsRequestStatus","showRequestDocumentModal","showSettingsDrawer","fetchTrusthubCategoriesStatus","fetchTrustHubSettingsRequest","fetchTrustHubSettingsSuccess","fetchTrustHubSettingsFailure","fetchTrustHubSettingsFailureCode","fetchingSettingsStatusCode","updateTrustHubSettingsRequest","updateTrustHubSettingsSuccess","updateTrustHubSettingsFailure","updateSettingsColor","fetchTrustHubSectionsRequest","fetchTrustHubSectionsSuccess","fetchTrustHubSectionsFailure","fetchTrustHubSectionRequest","fetchTrustHubSectionSuccess","fetchTrustHubSectionFailure","updateTrustHubSectionRequest","updateTrustHubSectionSuccess","updateTrustHubSectionFailure","updateTrusthubSectionVisibilityRequest","updateSectionVisibilityStatus","updateTrusthubSectionVisibilitySuccess","updateTrusthubSectionVisibilityFailure","updateShowCompletedAccessRequests","fetchAccessRequestsRequest","fetchAccessRequestsSuccess","fetchAccessRequestsFailure","setTrustHubAccessRequestsSearch","setTrustHubShowCompletedAccessRequests","denyAccessRequestRequest","denyAccessRequestSuccess","accessRequest","denyAccessRequestFailure","approveAccessRequestRequest","approveAccessRequestSuccess","approveAccessRequestFailure","fetchTrustHubCompaniesRequest","fetchTrustHubCompaniesSuccess","fetchTrustHubCompaniesFailure","patchTrustHubVendorUserRequest","patchTrustHubVendorUserSuccess","patchTrustHubVendorUserFailure","fetchTrustHubVendorUsersRequest","fetchTrustHubVendorUsersSuccess","fetchTrustHubVendorUsersFailure","postTrustHubCompanyRequest","createCompanyStatus","postTrustHubCompanySuccess","postTrustHubCompanyFailure","setTrustHubCompaniesSearch","companiesSearch","fetchTrustHubCurrentCompanyRequest","fetchTrustHubCurrentCompanySuccess","fetchTrustHubCurrentCompanyFailure","patchTrustHubCompanyRequest","patchTrustHubCompanySuccess","patchTrustHubCompanyFailure","deleteTrustHubCompanyRequest","deleteTrustHubCompanySuccess","deleteTrustHubCompanyFailure","fetchTrustHubActivitiesRequest","fetchTrustHubActivitiesSuccess","fetchTrustHubActivitiesFailure","setTrustHubActivitiesSearch","showTrustHubAuthModal","hideTrustHubAuthModal","authTrustHubRequest","authTrustHubSuccess","authTrustHubIdle","authTrustHubFailure","setShowRequestDocumentModal","fetchTrustHubUserDetailsRequest","fetchTrustHubUserDetailsFinished","fetchTrustHubUserDetailsSuccess","setTrustHubVendorUsersSearch","postTrustHubVendorUserRequest","createVendorUserStatus","postTrustHubVendorUserSuccess","postTrustHubVendorUserFailure","fetchTrustHubCompanyVendorUsersRequest","fetchTrustHubCompanyVendorUsersSuccess","fetchTrustHubCompanyVendorUsersFailure","fetchTrustHubVendorUserRequest","fetchTrustHubVendorUserSuccess","fetchTrustHubVendorUserFailure","postTrustHubAccessRequestRequest","postTrustHubAccessRequestSuccess","docIds","requested","postTrustHubAccessRequestFailure","fetchTrustHubVendorUserDocumentPermissionsRequest","fetchTrustHubVendorUserDocumentPermissionsSuccess","fetchTrustHubVendorUserDocumentPermissionsFailure","deleteTrustHubVendorUserDocumentPermissionRequest","deleteTrustHubVendorUserDocumentPermissionSuccess","deleteTrustHubVendorUserDocumentPermissionFailure","fetchVendorDocumentFileRequest","fetchVendorDocumentFileSuccess","fetchVendorDocumentFileFailure","setFetchingVendorDocumentIdFile","fetchTrustHubVendorUserActivitiesSuccess","fetchTrusthubAdminCurrentVendorUserRequest","fetchTrusthubAdminCurrentVendorUserSuccess","fetchTrusthubAdminCurrentVendorUserFailure","fetchTrustHubInvitationStatusRequest","fetchingInvitationStatus","fetchTrustHubInvitationStatusSuccess","_action","fetchTrustHubInvitationStatusFailure","patchTrustHubInvitationStatusRequest","patchingInvitationStatus","patchTrustHubInvitationStatusSuccess","patchTrustHubInvitationStatusFailure","fetchTrustHubAdminVendorUserDetailsRequest","setShowSettingsDrawer","fetchTrustHubAdminVendorUserDetailsSuccess","fetchTrustHubAdminVendorUserDetailsFailure","loginTrustHub","password","trusthub_user","fetchTrustHubUserDetails","logoutTrustHub","registerTrustHub","first_name","last_name","password_confirmation","userDetailsGet","fetchTrustHubVendorUserDetails","vendorTrusthubId","vendorTrusthubsVendorTrusthubIdCurrentVendorUserDetailsGet","fetchTrustHubAdminVendorUserDetails","recoveryTrustHubUserPassword","usersPasswordPost","resetTrustHubUserPassword","reset_password_token","resetPassword","fetchTrustHubSettings","vendorTrusthubsVendorIdOrDomainSettingsGet","updateTrustHubSettings","setLoadingStatus","vendorTrusthubsVendorIdOrDomainSettingsPatch","fetchTrustHubSections","vendorTrusthubsVendorIdOrDomainSectionsGet","fetchTrustHubSection","sectionsSectionIdGet","updateTrustHubSection","sectionsSectionIdPatch","updateTrustHubSectionVisibility","fetchAccessRequests","vendorTrusthubsVendorIdOrDomainAccessRequestsGet","denyAccessRequest","accessRequestsAccessRequestIdDenyPatch","approveAccessRequest","accessRequestsAccessRequestIdApprovePatch","fetchTrustHubCompanies","vendorTrusthubsVendorIdOrDomainCompaniesGet","patchTrusthubVendorUser","vendorUsersVendorUserIdPatch","fetchTrustHubVendorUsers","vendorTrusthubsVendorIdOrDomainVendorUsersGet","postTrusthubCompany","vendorTrusthubsVendorIdOrDomainCompaniesPost","fetchTrustHubCompany","companiesCompanyIdGet","patchTrusthubCompany","companiesCompanyIdPatch","deleteTrusthubCompany","companiesCompanyIdDelete","fetchTrustHubActivities","vendorTrusthubsVendorIdOrDomainVendorUsersActivityGet","postTrusthubVendorUser","vendorTrusthubsVendorIdOrDomainVendorUsersPost","fetchTrustHubCompanyVendorUsers","fetchTrustHubVendorUser","vendorUsersVendorUserIdGet","postTrustHubAccessRequest","vendorTrusthubsVendorIdOrDomainAccessRequestsPost","fetchTrustHubVendorUserDocumentPermissions","vendorUsersVendorUserIdDocumentPermissionsGet","deleteTrustHubVendorUserDocumentPermission","documentPermissionsDocumentPermissionIdDelete","fetchTrustHubVendorDocumentFile","fetchTrusthubAdminCurrentVendorUser","vendorsIdVendorUsersTrusthubLoginPost","fetchTrustHubInvitation","usersInvitationsIdGet","registerInvite","patchTrustHubInvitation","usersInvitationPatch","postTrustHubInvitation","usersInvitationPost","fetchTrusthubCategories","vendorTrusthubsVendorIdOrDomainCategoriesGet","FormDocumentVisibility","Public","PrivateUnlocked","PrivateLocked","useEditTrustHubSection","setFormDocuments","setFetchingCurrentSection","setFormCategories","prevFormDocuments","prevFormDoc","handleVisibilityChange","newVisibility","trusthubDocumentsAttributes","isControls","rightPanelControl","leftPanelRemovedControl","destroy","rowOrderPosition","sectionId","trusthubSection","includeTemplates","sectionPayload","allFilteredDocsSelected","allDocsSelected","newControls","categoryDocuments","newList","categoryDoc","rowTargetRowIndex","originalArray","newArray","newSortedDocuments","trusthubDoc","prevFormDocument","bulkActionOptions","Destroy","sectionModel","checkedDocs","isBulkActionsDisabled","configOption","bulkActionOption","TrustHubUserPageHeaderButtons","faRightToBracket","faKey","faRightFromBracket","RequestDocumentModalDocumentSection","sectionDocs","handleDownload","useTrusthubDocumentDownload","TrustHubRequestDocumentModal","documentsSearch","setDocumentsSearch","allSections","currentTrustHubDomain","DarkGray","useDisplayTrusthubSettingsApiError","hasApiError","apiError","TrustHubUserPage","settingsModel","isLoggedIn","setShowRequestDocModal","showDocModal","esgSectionProps","complianceSectionProps","controlsSectionProps","TrustHubAuthModal","isRegisterInviteStep","isRequestStep","setFirstName","setLastName","setEmail","setPassword","passwordConfirmation","setPasswordConfirmation","passwordStrength","stepTo","nextStep","invitationToken","handleLogin","termsChecked","setTermsChecked","showWarningModal","handleRegistration","handleInviteRegistration","handleRecovery","handleReset","InputField","score","PasswordStrength","trustHubRoutes","invitation","login","TrustHubUserRoutes","accessMapping","vendor_details","vendor_dashboard","vendor_checklists","company_identifiers","agreement_templates","data_room_entities","legal_register","vendor_register","risk_register","people_manage","user_dashboard","company_dashboard","frameworks_manage","controls_create","controls_update","tasks_create","tasks_update","dataroom_root_tree_manage","trusthub","canCreate","accessObject","selector","parentObject","useCanFeature","hasFeature","canIndex","useCanCreate","useCanIndex","useHasFeature","shareFeaturesAndAccessLevels","share__manager","share__contributor","share__viewer","mapShareFeaturesToAccessLevels","shareAccessFeatures","input_without_underline","charAt","sentence","helpHost","articles","showWidgetChatArticle","moveChatWidgetPosition","setProperty","openChatWidget","HubSpotConversations","widget","initChatWidget","onInit","load","hsConversationsOnReady","removeChatWidget","remove","tokens","tokenize","expression","match","next","buffer","shift","nxt","argument","Error","right","rightObject","ctx","pairs","evaluate","ast","node","operation","call","baseErrors","base","messages","validFormatErrors","dateString","vt","getFlatFoldersList","flatList","requiredRights","Folder","depth","filePath","getFolderModel","first","second","metas","getElementsByTagName","getProgressPercentage","getRequest","fetchRequest","reject","isValid","responseData","regex","RegExp","mapTableAnswers","copiedModel","answersRow","reactSelectCustomStyles","provided","boxShadow","borderColor","singleValue","multiValue","valueContainer","paddingLeft","clearIndicator","dropdownIndicator","groupHeading","indicatorsContainer","indicatorSeparator","loadingIndicator","loadingMessage","menu","menuList","menuPortal","multiValueLabel","multiValueRemove","reactSelectCustomTheme","colors","primary25","primary50","reactSelectLightTheme","reactSelectLightStyle","border","reactSelectLightCheckboxStyle","reactSelectLightStyleSmall","reactSelectLightBiggerStyle","PdfPreviewEntityPaths","getPdfDocumentPath","URLSearchParams","sendAnalytics","eventName","gtag","uniqArrayObjects","self","selfObject","answeredQuestionIds","questionsIds","isVisible","answeredQuestionsIds","qn","has","setCurrentId","canUpdateTasks","setTimer","callback","delayTime","isIdle","globalUserId","adminRoles","employmentStatus","Left","useRemoveQueryParam","delete","errorHandler","selectActiveNotOutdatedSubscription","plans","outdatedActiveSubscription","getSignedRatio","agreementSort","sortBySignatoriesStats","selectAwaitingSignatureAgreements","selectDraftAgreements","selectAgreementMode","agreementsSelector","assessmentCount","assessmentResponsesCount","agreementOnShowPage","agreementOnIndexPage","vendorDetails","livePolicies","relatedToMe","vde","assessmentResponseSort","selectedFrameworkId","Users","filteredUsers","aCompliance","complianceStats","overall","aIsInvited","Invited","bIsInvited","aIsSystemUser","SystemUser","bIsSystemUser","vendorUserSort","updateAnswerSlice","newAnswer","sc","agreementsSlice","vendorAgreementDocuments","signAgreementModalData","archivingAgreement","agreementTemplateCategoriesRequest","agreementTemplateCategoriesRequestSuccess","agreementTemplateCategoriesRequestFailure","agreementTemplateCategoriesRequestError","toggleAddAgreementDrawer","toggleEditAgreementDrawer","agreementTemplatesRequest","agreementTemplatesRequestSuccess","agreementTemplatesRequestFailure","agreementTemplatesRequestError","createAgreementRequestFailure","setNotificationDispatchStatus","notificationDispatchError","notificationDispatchRequestFailure","setAgreementCreationStatus","agreementsRequest","isRequestingAgreements","agreementsRequestSuccess","agreementsRequestFailure","agreementsRequestError","setCurrentAgreementLoading","setAgreementEditFormExtendedFieldsLoaded","setCurrentAgreement","currentAgreementRequestFailure","currentAgreementRequestError","setRequestingAgreementPdf","currentAgreementPdfRequestFailure","currentAgreementPdfRequestError","agreementAnswersFailure","agreementAnswersError","setSignatoryCreationOrUpdateStatus","createOrUpdateSignatoryRequestFailure","createOrUpdateSignatoryRequestError","currentAgreementSignatoriesRequest","currentAgreementSignatoriesRequestSuccess","currentAgreementSignatoriesRequestFailure","currentAgreementSignatoriesRequestError","updateSignatory","signatoryIndex","clearCurrentAgreementSignatories","setDeleteAgreementStatus","deleteAgreementFailure","deleteAgreementTableAnswersFailure","setSignAgreementStatus","signAgreementFailure","editAgreementClauseFailure","revertAgreementClauseFailure","undoArchivedAgreement","indexAgreement","localStorage","createNewVersionOfAgreementRequest","createNewVersionOfAgreementFailure","sendToReviewRequest","sendToReviewSuccess","sendToReviewFailure","archiveAgreementRequest","isArchivingAgreement","isArchivingError","archiveAgreementSuccess","unArchiveAgreementRequest","unArchivingError","unArchiveAgreementRequestFailure","archiveAgreementFailure","archiveAgreementError","patchAgreementRequest","patchAgreementError","setArchivingAgreement","patchAgreementSuccess","patchAgreementFailure","cleanupAgreementsCreateForm","updateAgreementsCreateFormField","cleanupAgreementsEditForm","setCurrentAgreementId","updateAgreementsEditFormField","toggleAgreementReminderModal","setAgreementMode","postAgreementAnswer","isPostingAgreementAnswerFinished","patchAgreementContentRequest","patchAgreementContentError","patchAgreementContentSuccess","patchAgreementContentFailure","setAgreementContent","setAgreementContentChanged","agreementUploadRequest","agreementUploadRequestSuccess","agreementUploadRequestFailure","agreementUploadError","createAgreement","vendorsIdAgreementsPostRaw","fetchAgreementTemplates","agreementTemplatesGet","fetchAgreementTemplateCategories","agreementTemplateCategoriesGet","fetchAgreements","vendorsIdAgreementsGet","uploadCompletedAgreement","vendorsIdAgreementsUploadPost","fetchAgreementEditFormFields","agreementsIdGet","fetchAgreementById","addAgreementAnswers","reloadPageIfAgreementSigned","fetchAgreementSignatoriesById","agreementsAgreementIdAgreementSignatoriesGetRaw","updateExternalAgreementSignatory","agreementSignatoriesIdPatchRaw","createExternalAgreementSignatory","agreementsAgreementIdAgreementSignatoriesExternalPostRaw","sendSignatoryNotification","agreementSignatoriesSignatoryIdNotifyPostRaw","deleteAgreement","agreementsIdDelete","deleteAgreementTableAnswers","sendToReviewAgreement","agreementsIdSendPost","signatoriesToNotifyIds","signAgreement","usersIdSignaturePatch","agreementSignatoriesSignatoryIdSignPatch","createNewVersionOfAgreement","agreementsIdVersionsPost","patchAgreement","agreementsIdPatch","agreementWithTableAnswers","unarchiveAgreement","agreementsIdUnarchivePost","archiveAgreement","agreementIndex","setItem","agreementsIdArchivePost","patchAgreementContent","assessmentsSlice","isDeletingAssessmentFileOrUrl","isSharingAssessmentResponse","isShowingAddFileOrUrlModal","sendAssessmentRecipientEmails","fetchingAssessmentTemplatesError","addFileAnswer","addUrlAnswer","backFromSendAssessmentConfirmationModal","confirmSendAssessment","generateAndSendAssessment","deleteAssessmentFileOrUrlFailure","deleteAssessmentFileOrUrlError","deleteAssessmentFileOrUrlRequest","deleteAssessmentFileOrUrlSuccess","deleteAssessmentRecipientFailure","deleteAssessmentRecipientError","deleteAssessmentRecipientRequest","deleteAssessmentRecipientSuccess","deleteAssessmentResponseFailure","deleteAssessmentResponseError","deleteAssessmentRequest","isDeletingAssessment","deleteAssessmentSuccess","deleteAssessmentError","deletingAssessmentError","deleteAssessmentResponseRequest","deleteAssessmentResponseSuccess","fetchAssessmentRequest","isFetchingAssessment","fetchAssessmentSuccess","fetchAssessmentFailure","fetchingAssessmentError","fetchAssessmentResponseRequest","isFetchingAssessmentResponse","fetchAssessmentResponseSuccess","fetchAssessmentResponseFailure","fetchingAssessmentResponseError","fetchAssessmentTemplateRequest","isFetchingAssessmentTemplate","fetchAssessmentTemplateSuccess","at","fetchAssessmentTemplateError","fetchingAssessmentTemplateError","fetchAssessmentTemplatesRequest","fetchAssessmentTemplatesSuccess","fetchAssessmentTemplatesError","fetchAssessmentsRequest","fetchAssessmentsSuccess","fetchAssessmentsFailure","fetchAssessmentsError","hideAddFileOrUrlModal","hideDeleteAssessmentModal","hideDeleteAssessmentToast","showDeleteAssessmentModal","fetchIncomingAssessmentResponsesFailure","fetchingIncomingAssessmentResponsesError","fetchIncomingAssessmentResponsesRequest","fetchIncomingAssessmentResponsesSuccess","fetchAssessmentResponseHistoryRequest","fetchAssessmentResponseHistoryError","cleanupAssessmentHistories","fetchAssessmentResponseHistorySuccess","fetchAssessmentResponseHistoryFailure","hideAssessmentSentToast","hideConfirmDeleteAssessmentResponseModal","hideEditPublishedAssessmentModal","hideFileOrUrlSuccessfulToast","hidePublishAssessmentModal","hidePublishedAssessmentModal","hideSendAssessmentModal","initiateSendAssessment","Send","generateAssessment","generateAssessmentRequest","generateAssessmentSuccess","generatedAssessmentFromTemplate","generateAssessmentError","assessmentGenerationError","sendAssessmentFailure","sendAssessmentError","sendAssessmentRequest","sendAssessmentSuccess","showEditPublishedAssessmentModal","showPublishAssessmentModal","showPublishedAssessmentModal","reopenAssessmentResponseFailure","reopenAssessmentResponseError","reopenAssessmentResponseRequest","reopenAssessmentResponseSuccess","resendAssessmentFailure","resendAssessmentError","resendAssessmentRequest","resendAssessmentSuccess","showConfirmDeleteAssessmentResponseModal","showResendAssessmentConfirmationModal","hideResendAssessmentConfirmationModal","hideAssessmentResentToast","showAssessmentSentToast","showFileOrUrlSuccessfulToast","patchAssessmentResponseRequest","isPatchingAssessmentResponse","patchAssessmentResponseError","patchAssessmentResponseSuccess","patchAssessmentResponseFailure","publishAssessmentResponseRequest","publishAssessmentResponseError","publishAssessmentResponseSuccess","publishAssessmentResponseFailure","uploadFileOrUrlFailure","uploadFileError","uploadFileOrUrlRequest","uploadFileOrUrlSuccess","setCurrentTableQuestions","showEditTableAnswersModal","hideEditTableAnswersModal","showDeleteTableAnswersModal","hideDeleteTableAnswersModal","showAssessmentSummaryExportModal","hideAssessmentSummaryExportModal","exportAssessmentResponsesRequest","exportAssessmentResponsesSuccess","exportAssessmentResponsesFailure","exportAssessmentResponseError","confirmAssessmentResponseRequest","isConfirmingAssessmentResponse","confirmAssessmentResponseSuccess","confirmAssessmentResponseFailure","patchAssessmentRequest","isPatchingAssessment","patchAssessmentError","patchAssessmentSuccess","patchAssessmentFailure","saveSelectedAssessmentTab","oldAnswer","AddFileMode","AssessmentTabs","SendAssessmentMode","vendorsSlice","fetchVendorChecklistsRequest","fetchVendorChecklistsSuccess","fetchVendorChecklistsError","fetchChecklistsError","fetchVendorChecklistTemplatesRequest","fetchVendorChecklistTemplatesSuccess","fetchVendorChecklistTemplatesError","fetchChecklistDetailsRequest","isFetchingChecklistDetails","fetchChecklistDetailsSuccess","newChecklists","checklistIndex","fetchChecklistDetailsError","fetchChecklistError","fetchChecklistTemplateDetailsRequest","fetchChecklistTemplateDetailsSuccess","fetchChecklistTemplateDetailsError","updateChecklistItemRequest","updateChecklistItemSuccess","g","itemIndex","updateChecklistItemError","showGenerateChecklistUsersModal","hideGenerateChecklistUsersModal","showGenerateChecklistManagersModal","hideGenerateChecklistManagersModal","addUserToGenerate","userIdToGenerate","addManagersToGenerate","managersToGenerate","messageToGenerate","generateChecklistFromTemplateRequest","generateChecklistFromTemplateSuccess","generateChecklistFromTemplateError","checklistChangeStatusRequest","checklistChangeStatusSuccess","checklistChangeStatusError","showGenerateChecklistSuccessToast","hideGenerateChecklistSuccessToast","fetchVendorChecklists","vendorsIdChecklistsGet","fetchChecklistDetails","checklistsIdGet","updateChecklistItem","currentUserName","GettingStartedChecklistItems","completeGetStartedChecklistItem","completedItem","getStartedList","checklistItem","answersIdPatch","fetchVendorChecklistTemplates","vendorsIdChecklistTemplatesGet","fetchChecklistTemplateDetails","checklistTemplatesIdGet","generateChecklistFromTemplate","managers","managerId","responsible","vendorsIdChecklistsPost","common","checkableId","checkableType","checklistUsers","updateChecklistStatus","checklistsIdChangeStatusPatch","updateEditControlFormModelTasks","payloadTasks","payloadTask","controlIsCompliant","controlIsFailed","controlsSearch","notApplicableControls","tasksMeta","fetchCategoriesError","fetchTasksError","isFetchingAssignableTasks","isCreatingControl","frameworkPolicies","isFetchingFrameworkPolicies","isFetchingFrameworks","isFetchingTasks","selectedCategoryId","tasksFilters","categoriesFilters","controlsFilters","postAssertionRunStatus","isPatchingControl","isFetchingEvidenceDownloadDetails","isPostingTaskEvidence","isDeletingEvidence","isPDFReportRequest","isPDFReportError","isFetchingNotApplicableControls","fetchNotApplicableControlsError","isMarkingControlApplicable","isMarkingControlNotApplicable","isPostFrameworkRequest","isPostFrameworkError","isSettingInitialTempTaskFields","postFrameworkEvidenceExportStatus","removeVendorRequirementStatus","postFrameworkRequestStatus","complianceSlice","cleanupCompliance","clearToastMessage","createControlRequest","createControlSuccess","catIndex","fr","createControlError","fetchAssignableComplianceTasksRequest","fetchAssignableComplianceTasksSuccess","fetchRequirementsSuccess","fetchFrameworkGuidanceSuccess","createVendorRequirementSuccess","frameworkRequirementId","fetchAssignableComplianceTasksError","fetchRequirementsRequest","fetchCategoriesRequest","setTasksFilters","setCategoriesFilters","fetchCategoriesSuccess","fetchNotApplicableControlsRequest","fetchNotApplicableControlsSuccess","fetchFrameworkPoliciesRequest","fetchFrameworkPoliciesSuccess","fetchFrameworkPoliciesError","fetchFrameworksRequest","fetchFrameworksSuccess","fetchFrameworksError","fetchTaskDetailsRequest","cleanupTaskDetails","fetchTaskDetailsSuccess","setTempTaskInitialFieldsRequest","fetchTaskDetailsError","fetchTasksRequest","fetchTasksSuccess","updateTasksInTheEditControlFormSlice","updateControlReviewStatusSuccess","categoryControl","fetchControlExtendedRequest","fetchControlExtendedSuccess","fetchControlExtendedError","setTempTask","postTaskEvidenceRequest","postTaskEvidenceSuccess","fetchEvidenceDownloadDetailsRequest","fetchEvidenceDownloadDetailsSuccess","fetchEvidenceDownloadDetailsError","deleteEvidenceRequest","deleteEvidenceSuccess","deleteEvidenceError","createPDFReportRequest","createPDFReportSuccess","createPDFReportError","postTaskEvidenceError","postTaskRequest","postTaskSuccess","postTaskError","patchTaskRequest","updateHiddenEditTaskDrawerControls","newStatus","treeControl","updateTaskInTheTree","payloadFields","newTasks","patchTaskSuccess","patchTaskError","patchControlRequest","patchControlSuccess","controlIndex","categoryIndex","con","patchControlError","removeControlRelation","tc","setControlFormModel","setControlFormModelValid","setSelectedFrameworkId","setSelectedCategoryId","setSelectedControlId","setSelectedTaskId","setShowControlDrawer","setShowTaskDrawer","setDrawerOnTop","markControlApplicableFailure","markingControlApplicableError","markControlApplicableRequest","markControlApplicableSuccess","markControlNotApplicableFailure","markingControlNotApplicableError","markControlNotApplicableRequest","controlIdBeingMarkedNotApplicable","markControlNotApplicableSuccess","removeApplicableControl","removeNotApplicableControl","nac","addNotApplicableControl","addApplicableControl","orderIndex","setEditControlMode","setEditTaskMode","postFrameworkRequest","postFrameworkSuccess","postFrameworkError","setControlsFilterAssigneeId","setControlsFilterFrameworkIdentifier","frameworkIdentifier","setControlsFilterStatus","setControlsFilterApplicable","setControlsSearch","isPostingReviewHistoryItemRequest","isPostingReviewHistoryItemSuccess","isPostingReviewHistoryItemFailure","isFetchingReviewHistoryItemsRequest","isFetchingReviewHistoryItemsSuccess","isFetchingReviewHistoryItemsFailure","frameworkTemplateId","availability","EditControlMode","EditTaskMode","fetchComplianceFrameworks","includeStats","vendorsIdFrameworksGet","fetchComplianceFrameworkPolicies","frameworksIdPoliciesGet","fetchComplianceTasks","vendorsVendorIdTasksGet","fetchControlExtended","fetchAssignableComplianceTasks","notUsedInFrameworksIds","postComplianceTask","vendorsVendorIdTasksPost","patchComplianceTask","tasksTaskIdPatch","fetchComplianceControls","vendorsVendorIdControlsGet","fetchNotApplicableComplianceControls","queryApplicable","fetchComplianceCategories","vendorsVendorIdControlCategoriesGet","createComplianceControl","vendorsVendorIdControlsPost","patchComplianceControl","controlsControlIdPatch","fetchTaskDetails","tasksTaskIdGet","markControlNotApplicable","newControl","patchReasonForExclusion","controlsControlIdStatusPatch","markControlApplicable","fetchRequirementCategories","frameworksFrameworkIdFrameworkRequirementCategoriesGet","createVendorRequirement","vendorsVendorIdVendorFrameworkRequirementsPost","vendorFrameworkRequirement","removeVendorRequirement","vendorFrameworkRequirementsIdDelete","fetchFrameworkGuidance","frameworkGuidancesIdGet","postReviewHistoryItem","reviewHistoryItem","vendorsVendorIdReviewHistoryItemsPost","fetchReviewHistoryItems","vendorsVendorIdReviewHistoryItemsGet","patchControlCheckAssertions","tasksTaskIdAvailableAssertionsPatchRaw","fetchAssertionDetails","assertionsAssertionIdGet","fetchAssertionDetailsSilent","patchAssertionDetails","assertionsAssertionIdPatch","postAssertionRun","assertionsAssertionIdRunPost","patchAssertionResultInclude","assertionResultsAssertionResultIdIncludePatch","patchAssertionResultExclude","assertionResultsAssertionResultIdExcludePatch","postAssertionReview","buildAssertionData","postFrameworkEvidenceExport","frameworksIdExportEvidencePost","fetchEvidence","vendorsVendorIdDataRoomEvidenceGet","postFrameworkRequestActivation","vendorsVendorIdItemCreationRequestsPost","itemCreationRequest","dataRoomSlice","isFetchingFiles","isFetchingAllFiles","allFiles","folders","currentEntityIdProcessing","entityToEdit","entitiesToMove","entitiesToDelete","showMoveEntitiesModal","showEditEntityModal","selectedModalTabId","createFolderRequest","isCreatingFolder","createFolderSuccess","createFolderError","dataRoomShowDeleteModal","dataRoomShowMoveModal","dataRoomShowEditEntityModal","deleteEntitiesRequest","deleteEntitiesSuccess","updateEntityRequest","updateEntitySuccess","updateEntityError","moveEntitiesRequest","uploadToFolderRequest","moveEntitiesSuccess","moveEntitiesError","deleteEntitiesError","fetchFilesRequest","fetchFilesSuccess","fetchFilesError","fetchEntitiesTreeRequest","isFetchingEntitiesTree","fetchEntitiesTreeSuccess","entitiesTree","fetchEntitiesTreeError","getFileDetailsRequest","getFileDetailsSuccess","getFileDetailsError","setCursor","setEntityToEdit","setEntitiesToMove","setEntitiesToDelete","setShowEditEntityModal","hideModals","uploadFileRequest","uploadFileSuccess","selectModalTab","fetchFiles","vendorsVendorIdDataRoomEntitiesGet","fetchEntitiesTree","vendorsVendorIdDataRoomEntitiesTreeGet","createFolder","folder","vendorsVendorIdDataRoomFoldersPost","downloadFile","fileId","dataRoomFilesFileIdDownloadGet","attachmentUrl","uploadFile","parentFolderId","files0Attachment","files0Filename","vendorsVendorIdDataRoomFilesPost","deleteEntities","entitiesIds","canManageRootTree","vendorsVendorIdDataRoomEntitiesDelete","updateEntity","entityId","dataRoomEntitiesEntityIdPatch","moveEntities","parentEntityId","vendorsVendorIdDataRoomEntitiesMovePatch","globalSlice","isInitialising","isShowingVideoPlayerModal","PendingDocuments","DocumentAdmin","showHelp","clearErrorMessage","clearInitialise","closePdfPreview","pdfPreviewVendorDocumentId","pdfPreviewObjectId","setPdfPreviewUrl","initialisationFailure","initialisationError","initialisationRequest","initialisationSuccess","openPdfPreview","pdfOpenMode","pdfPreviewDueDate","pdfPreviewTitle","pdfPreviewVendorDocument","pdfPreviewDocumentType","resetScrollToY","resetScrollCardIntoView","setPageHeaderLabel","setTableSort","showGlobalToastWithUndo","showGlobalToast","hideGlobalToast","clearHelp","clearPolicyHelp","clearAssessmentHelp","showEditOwnerModal","showSubscriptionRequiredModal","hideSubscriptionRequiredModal","hideEditOwnerModal","showEditOwnerToast","hideEditOwnerToast","globalSearchRequest","globalSearchSuccess","globalSearchError","clearGlobalSearchResults","setGlobalSearchBarVisible","setBackgroundColor","setCustomAppContentClasses","showHelpMenu","hideHelpMenu","initialise","requests","request","getSearchResults","term","vendorsVendorIdSearchGet","getErrorMessage","specificMessage","errorFromResponse","userMessage","handleThunkError","showError","legalRegisterSlice","legislationIdToDelete","fetchJurisdictionsError","fetchLegislationTemplatesError","isPostingLegislation","setLegislationsSearch","fetchVendorLegislationsSuccess","fetchVendorLegislationsFailure","fetchVendorLegislationsRequest","deleteLegislationRequest","deleteLegislationSuccess","deleteLegislationFailure","updateVendorLegislation","fetchLegislationTemplatesFailure","fetchLegislationTemplatesRequest","fetchLegislationTemplatesSuccess","alreadyUsedTemplatesIds","legislationTemplateId","fetchJurisdictionsFailure","fetchJurisdictionsRequest","fetchJurisdictionsSuccess","updateAddLegislationForm","createLegislationFromTemplatesFailure","createLegislationFromTemplatesError","createLegislationFromTemplatesRequest","createLegislationFromTemplatesSuccess","fetchLegalRegisterSuccess","fetchLegalRegisterFailure","fetchLegalRegisterRequest","patchLegalRegisterSuccess","patchLegalRegisterFailure","patchLegalRegisterRequest","updateLegalRegisterReviewSuccess","notificationSlice","setAssessmentsCount","assessmentsCount","setCount","notificationsRequest","notificationsRequestSuccess","notificationsRequestFailure","notificationsRequestError","markNotificationAsReadFailure","markNotificationAsReadRequestFailure","createNotificationRequest","isCreatingNotification","createNotificationRequestFailure","createNotificationRequestError","fetchNotifications","showRead","vendorUsersVendorUserIdNotificationsGet","markNotificationAsRead","notificationsNotificationIdReadPatch","pestelSlice","isDeletingPestel","fetchPestelsRequest","fetchPestelsSuccess","setPestelError","deletePestelRequest","deletePestelSuccess","setPestelIdToBeDeleted","updatePestelItemForm","createPestelItemRequest","createPestelItemSuccess","createPestelItemFailure","fetchPestelItemRequest","fetchPestelItemSuccess","fetchPestelItemFailure","updatePestelItemRequest","updatePestelItemSuccess","updatedPestel","updatePestelItemFailure","setShowEditDrawer","fetchPestelRegisterSuccess","fetchPestelRegisterFailure","fetchPestelRegisterRequest","patchPestelRegisterSuccess","patchPestelRegisterFailure","patchPestelRegisterRequest","updatePestelRegisterReviewSuccess","keepCurrentAnswersAndClauses","oldVendorPolicyClauses","oldVendorPolicy","pc","oldVendorPolicyClause","opc","newQuestion","oldQuestion","old","safelyDeleteItemFromArray","SortDirection","policiesSlice","availableExpandedCategories","availableSortColumn","availableSortDirection","completeExpandedCategories","completePolicyError","completeSortColumn","completeSortDirection","createPolicyError","deletePolicyError","fetchVendorPolicyError","initialisingCreationOfPolicyId","inProgressSortColumn","inProgressSortDirection","isDeletingPolicy","isFetchingVendorPolicy","isPolicySummaryToastShowing","patchVendorPolicyError","patchVendorPolicyClauseError","policySummaryToastId","loadedDataOnLoad","postAttestationError","isPostingAttestation","patchApprovalError","stripeCreatedVendorPolicy","isSkippingAttestation","skipApprovalError","skipAttestationError","policyRefreshRequired","sendingReadReminder","readReminderError","fetchVendorPoliciesDetailsStatus","clearAutoSave","collapseCategory","completePolicyRequest","completePolicySuccess","completePolicyFailure","createPolicyRequest","createPolicySuccess","createPolicyFailure","deletePolicyRequest","deletePolicySuccess","deletePolicyFailure","expandCategory","fetchVendorPolicyRequest","fetchVendorPolicySuccess","policyIndex","fetchVendorPolicyFailure","patchVendorPolicyClauseRequest","patchVendorPolicyClauseSuccess","patchVendorPolicyClauseFailure","updateVendorPolicyProgress","updateVendorPoliciesAnswers","answersPropertyNames","newFields","patchVendorPolicyRequest","patchVendorPolicySuccess","patchVendorPolicyFailure","showAutoSave","hideIsPaymentSuccessfulShowing","showIsPaymentSuccessfulShowing","showPolicySummaryToast","hidePolicySummaryToast","closeAttestationManagement","openAttestationManagement","closeApprovalManagement","openApprovalManagement","fetchDocumentApprovalsRequest","fetchDocumentApprovalsSuccess","fetchDocumentApprovalsFailure","postAttestationRequest","postAttestationSuccess","postAttestationFailure","patchApprovalRequest","patchApprovalSuccess","patchApprovalFailure","skipAttestationRequest","skipAttestationSuccess","skipAttestationFailure","skipApprovalRequest","skipApprovalSuccess","skipApprovalFailure","showDocumentLibraryModal","hideDocumentLibraryModal","showExistingPolicyWarningModal","closeExistingPolicyWarningModal","openManageRejectionModal","closeManageRejectionModal","readReminderRequest","readReminderSuccess","readReminderFailure","showPolicyDrawer","showPolicyDrawerForReadRequest","hidePolicyDrawer","updatePolicyToEdit","updatePolicyToEditField","fetchPolicyTemplateCategoriesRequest","fetchPolicyTemplateCategoriesSuccess","mapPolicyTable","copiedPolicy","deletePolicy","vendorPoliciesIdDelete","fetchPolicies","fetchVendorPoliciesDetails","fetchVendorPolicy","vendorPoliciesIdGet","completePolicy","vendorPoliciesIdPublishPost","createPolicy","vendorsIdVendorPoliciesPost","patchVendorPolicyClause","vendorPolicyClause","vendorPolicyClausesIdPatch","patchVendorPolicyProgress","vendorPoliciesIdProgressPatch","patchVendorPolicy","isAutoSave","vendorPoliciesIdPatch","openVendorPolicyPdf","patchApproval","newApprovals","vendorDocumentsIdPatch","skipApproval","vendorDocumentsIdSkipApprovalPost","skipAttestation","vendorDocumentsIdSkipAttestationPost","fetchDocumentApprovals","vendorDocumentsIdVendorDocumentApprovalsGet","fetchPolicyTemplateCategories","policyCategoriesGet","vendorsIdVendorPoliciesGet","fetchVendorPolicies","filterParams","vendorsVendorIdVendorPoliciesGet","policiesGet","fetchPoliciesForVendor","vendorsIdPoliciesGet","fetchPolicyAttestationGroups","vendorDocumentsIdVendorDocumentAttestationGroupsGet","patchPolicyAttestationGroups","vendorDocumentsIdVendorDocumentAttestationGroupsPatch","reportsSlice","isDeletingReport","fetchReportsRequest","fetchReportsSuccess","fetchReportsFailure","deleteReportFailure","deleteReportRequest","deleteReportSuccess","createReportRequest","createReportSuccess","createReportFailure","fetchReportRequest","fetchReportSuccess","fetchReportFailure","setReportsSearch","fetchReportDocumentRequest","fetchReportDocumentSuccess","fetchReportDocumentFailure","cleanCurrentReport","fetchReports","vendorsVendorIdReportsGet","deleteReport","reportsIdDelete","createReport","vendorsVendorIdReportsPost","uploadReport","vendorsVendorIdReportsUploadPost","reportCompletedAt","reportFile","reportName","reportOwnerId","reportVersion","fetchReport","reportsIdGet","fetchReportDocument","risksSlice","isFetchingRisk","currentCategory","isApprovingRisk","fetchRiskControlsRequest","fetchRiskControlsSuccess","fetchRiskActionsRequest","fetchRiskActionsSuccess","fetchRisksRequest","fetchRisksSuccess","fetchRiskRequest","fetchRiskSuccess","fetchRisksFailure","fetchRiskFailure","updateCurrentRisk","updateCurrentRiskFailure","currentRiskError","cleanCurrentRisk","fetchRisksCategoriesRequest","fetchRisksCategoriesSuccess","fetchRisksCategoriesFailure","createCustomRiskRequest","createCustomRiskSuccess","createCustomRiskFailure","createRiskFromTemplateRequest","createRiskFromTemplateSuccess","createRiskFromTemplateFailure","fetchRisksTemplatesRequest","fetchRisksTemplatesSuccess","fetchRisksTemplatesFailure","deleteRiskFailure","deleteRiskRequest","deleteRiskSuccess","approveRiskRequest","approveRiskFailure","approveRiskSuccess","hideAutoSaveToast","fetchRisks","vendorsVendorIdRisksGet","fetchRisk","risksIdGet","fetchRisksCategories","riskCategoriesGet","createCustomRisk","vendorsVendorIdRisksPost","commitCurrentRisk","risksIdPatch","patchRisk","createRiskFromTemplate","fetchRisksTemplates","riskTemplatesGet","approveRisk","risksIdApprovePost","deleteRisk","risksIdDelete","fetchRiskControls","createRiskControlReference","riskId","controlsControlIdReferencesPost","deleteRiskControlReference","controlsControlIdReferencesDelete","createRiskActionReference","deleteRiskActionReference","userSlice","isChangingPassword","isFetchingPaymentMethods","isFetchingUserDetails","isPasswordChangeSuccessfulToastShowing","isPasswordModalShowing","logoutUserStatus","changePasswordRequest","changePasswordError","changePasswordSuccess","changePasswordFailure","clearPasswordChangeSuccessfulToast","clearProfileDeletedToast","clearProfileSavedToast","closeDeleteProfileModal","closePasswordModal","closeProfileModal","deletePaymentMethodFailure","deletePaymentMethodError","deletePaymentMethodRequest","deletePaymentMethodSuccess","deleteSubscriptionRequest","deleteSubscriptionError","deleteSubscriptionSuccess","deleteSubscriptionFailure","deleteUserRequest","deleteUserError","deleteUserSuccess","deleteUserFailure","changePassword","editProfile","fetchPaymentMethodsFailure","fetchPaymentMethodsError","fetchPaymentMethodsRequest","fetchPaymentMethodsSuccess","addPaymentMethodFailure","addPaymentMethodError","addPaymentMethodRequest","updatePaymentMethodRequest","updatePaymentMethodError","addPaymentMethodSuccess","updatePaymentMethodFailure","updatePaymentMethodSuccess","newPaymentMethods","fetchSubscriptionsRequest","fetchSubscriptionsError","isFetchingSubscriptions","fetchSubscriptionsSuccess","fetchSubscriptionsFailure","fetchUserDetailsRequest","fetchingUserDetailsError","fetchUserDetailsSuccess","fetchUserDetailsFailure","initiateUserDeletion","showPasswordChangeSuccessfulToast","showProfileSavedToast","toggleProfileMenu","closeProfileMenu","updateProfileRequest","updatingUserDetailsError","updateProfileSuccess","updateProfileFailure","addTwoFactorAuthentication","addTwoFactorAuthenticationRequest","addTwoFactorAuthenticationFailure","closeTwoFactorAuthentication","twoFactorQrCodeLoaded","twoFactorBackupCodesLoaded","twoFactorDisabled","twoFactorVerificationStop","showTwoFactorSavedToast","clearTwoFactorSavedToast","showDeletePaymentMethodModal","hideDeletePaymentMethodModal","showAddPaymentMethodModal","setCurrentPaymentMethodId","hideAddPaymentMethodModal","fetchInvoicesRequest","fetchInvoicesError","fetchInvoicesSuccess","fetchInvoicesFailure","userSignatureRequest","userSignatureRequestSuccess","userSignatureRequestFailure","cleanupUserSignature","deleteUser","usersDelete","deletePaymentMethod","paymentMethodsIdDelete","fetchPaymentMethods","paymentMethodsGet","addPaymentMethod","paymentMethodsPost","updatePaymentMethod","paymentMethodsIdPatch","fetchSubscriptions","subscriptionsGet","fetchInvoices","vendorsIdInvoicesGet","fetchUserDetails","fetchUserDetailsByEmail","usersGetRaw","queryEmail","updatePassword","userPassword","usersPatch","updateProfile","fromWelcome","userDetailsPatch","complete_profile","requestQrCode","usersRequestOtpGet","verifyOtpSetup","usersVerifyOtpSetupPost","verifyOtpUninstall","usersVerifyOtpUninstallDelete","fetchUserSignature","usersIdSignatureGet","logoutUser","usersSignOutDelete","isDeleteCertificateModalShowing","showEditedToast","showDeletedToast","isEditMediaModalShowing","showEditedMediaToast","showEditedCompanyProfileToast","identifierTypes","isDeleteCompanyIdentifierModalShowing","isDeleteCompanyIdentifierToastShowing","isArchivingVendorDocument","isAttestingVendorDocument","isFetchingVendorDocument","isFetchingVendorDocumentApprovals","isFetchingVendorDetails","isFetchingVendors","isFetchingDashboard","isManageSubscriptionModalShowing","isUserDeletedModalShowing","isAddingVendorTeam","isDeleteTeamModalShowing","isDeletingVendorTeam","isDuplicateTeamName","isFetchingVendorTeams","isTeamDeletedToastShowing","companyIdentifiers","orgChart","isFetchingOrgChart","fetchVendorUserAttestationsStatus","fetchCompliantUsersStatus","complianceUsers","fetchEscrowAccountsRequest","fetchEscrowAccountsFailure","fetchEscrowAccountsSuccess","upsertVendorTeamsRequest","upsertVendorTeamsError","upsertVendorTeamsSuccess","fetchVendorSupplierCategoriesSuccess","upsertVendorTeamsFailure","fetchVendorDocumentsRequest","fetchVendorDocumentsError","fetchVendorDocumentsSuccess","fetchVendorDocumentsFailure","fetchVendorTableRequest","fetchingVendorTableError","fetchVendorTableSuccess","fetchVendorTableFailure","fetchVendorTeamsRequest","fetchVendorTeamsError","fetchVendorTeamsSuccess","fetchVendorTeamsFailure","fetchVendorDetailsRequest","fetchingVendorDetailsError","fetchVendorDetailsSuccess","fetchVendorDetailsFailure","fetchVendorsRequest","fetchingVendorsError","fetchVendorsSuccess","setCurrentVendor","fetchVendorsFailure","fetchVendorUserRequest","fetchingVendorUserError","isFetchingVendorUser","fetchVendorUserSuccess","restPayload","updateVendorUserRoles","fetchVendorUserFailure","fetchVendorUsersRequest","fetchingVendorUsersError","isFetchingVendorUsers","fetchVendorUsersSuccess","hasFetchedVendorUsers","fetchVendorUsersFailure","showAddUserModal","cancelAddUserModal","hideAddUserModal","showConfirmSendInvitationModal","hideConfirmSendInvitationModal","showConfirmResendInvitationModal","isConfirmResendInvitationModalShowing","hideConfirmResendInvitationModal","updateInviteUserDetails","sendInvitationRequest","sendingInvitationError","sendInvitationSuccess","sendInvitationFailure","hideInvitationSentModal","userRolesChangeFailure","userDeleteSuccess","hideUserDeletedModal","userCreateFailure","userCreateError","userUpdateFailure","userUpdateError","userDeleteFailure","userDeleteError","showAddTeamModal","addVendorTeamError","cancelAddTeamModal","hideAddTeamModal","showDeleteTeamModal","vendorTeamIdBeingDeleted","hideDeleteTeamModal","showTeamDeletedToast","hideTeamDeletedToast","uploadVendorDocumentRequest","uploadVendorDocumentError","uploadVendorDocumentSuccess","uploadVendorDocumentFailure","hideFileUploadedToast","showFileUploadedToast","hideDocumentUploadModal","showDocumentUploadModal","deleteVendorDocumentRequest","deleteVendorDocumentError","deleteVendorDocumentSuccess","docs","deleteVendorDocumentFailure","showDeleteVendorDocumentModal","hideDeleteVendorDocumentModal","showVendorDocumentDeletedToast","hideVendorDocumentDeletedToast","attestVendorDocumentRequest","attestVendorDocumentSuccess","attestVendorDocumentFailure","attestVendorDocumentError","approveVendorDocumentRequest","isApprovingVendorDocument","approveVendorDocumentSuccess","approveVendorDocumentFailure","approveVendorDocumentError","updateOfficeAddressRequest","isUpdatingOfficeAddress","updateOfficeAddressSuccess","companyOffices","offices","updateOfficeAddressFailure","updateOfficeAddressError","deleteOfficeAddressRequest","isDeletingOfficeAddress","deleteOfficeAddressSuccess","deleteOfficeAddressFailure","deleteOfficeAddressError","showSuccessfulVendorDocumentAttestationToast","hideSuccessfulVendorDocumentAttestationToast","showSuccessfulVendorDocumentApprovalToast","hideSuccessfulVendorDocumentApprovalToast","showSuccessfulVendorDocumentRejectionToast","hideSuccessfulVendorDocumentRejectionToast","showSuccessfulVendorDocumentUpdatedToast","hideSuccessfulVendorDocumentUpdatedToast","showAddCompanyOfficeAddressModal","cancelAddCompanyOfficeAddressModal","hideAddCompanyOfficeAddressModal","setCompanyOfficeBeingEdited","officeBeingEdited","showDeleteCompanyOfficeAddressModal","isDeleteOfficeAddressModalShowing","hideDeleteCompanyOfficeAddressModal","showDeleteCertificateModal","certificateIdBeingDeleted","hideDeleteCertificateModal","showOfficeAddressDeletedToast","hideOfficeAddressDeletedToast","showOfficeAddressEditedToast","hideOfficeAddressEditedToast","showOfficeAddressAddedToast","hideOfficeAddressAddedToast","showEditMediaModal","hideEditMediaModal","showEditMediaToast","hideEditMediaToast","showEditCompanyProfileToast","hideEditCompanyProfileToast","updateVendorDetailsRequest","isUpdatingVendorDetails","updateVendorDetailsSuccess","updateVendorDetailsFailure","updateVendorDetailsError","updateOrgChartRequest","isUpdatingOrgChart","updateOrgChartFailure","updateOrgChartError","showCompleteDocumentAuditModal","hideCompleteDocumentAuditModal","showManageBillingModal","hideManageBillingModal","fetchVendorPolicyDocumentsFailure","fetchVendorPolicyDocumentsError","fetchVendorPolicyDocumentsRequest","showLoading","fetchVendorPolicyDocumentsSuccess","fetchLogoRequest","logoFetchingError","fetchLogoSuccess","fetchLogoError","showUploadLogoModal","setCompanyColour","hideUploadLogoModal","uploadLogoRequest","logoUploadingError","uploadLogoSuccess","uploadLogoFailure","showLogoUploadSuccessToast","hideLogoUploadSuccessToast","fetchDashboardRequest","fetchDashboardSuccess","clearDashboard","clearVendorSupplierForm","initVendorSupplierForm","setVendorSupplierForm","fetchDashboardError","archiveVendorDocumentFailure","archiveVendorDocumentError","archiveVendorDocumentRequest","archiveVendorDocumentSuccess","unarchiveVendorDocumentFailure","unarchiveVendorDocumentError","unarchiveVendorDocumentRequest","unarchiveVendorDocumentSuccess","fetchVendorDocumentsDownloadRequest","fetchVendorDocumentDownloadSuccess","cleanupVendorDocumentDownload","fetchVendorDocumentsDownloadError","hideWarningSubscriptionLimitModal","showWarningSubscriptionLimitModal","fetchIdentifierTypesRequest","identifierTypesFetching","fetchIdentifierTypesSuccess","fetchIdentifierTypesFailure","identifierTypesFailure","fetchCompanyIdentifiersRequest","companyIdentifiersFetching","fetchCompanyIdentifiersSuccess","fetchCompanyIdentifiersFailure","companyIdentifiersFailure","showDeleteCompanyIdentifierModal","identifierBeingDeleted","hideDeleteCompanyIdentifierModal","showDeleteCompanyIdentifierToast","hideDeleteCompanyIdentifierToast","deleteCompanyIdentifierRequest","isDeletingCompanyIdentifier","deleteCompanyIdentifierSuccess","deleteCompanyIdentifierFailure","deleteCompanyIdentifierError","editCompanyIdentifierRequest","isEditingCompanyIdentifier","editCompanyIdentifierSuccess","editCompanyIdentifierFailure","editCompanyIdentifierError","createCompanyIdentifierRequest","isCreatingCompanyIdentifier","createCompanyIdentifierSuccess","createCompanyIdentifierFailure","createCompanyIdentifierError","fetchSharesListRequest","fetchSharesListSuccess","sharesListError","fetchSharesListFailure","fetchShareSuggestionsRequest","isFetchingShareSuggestions","fetchShareSuggestionsSuccess","sharesSuggestionsError","fetchShareSuggestionsFailure","shareRequest","shareSuccess","shareError","shareFailure","showShareModal","hideShareModal","deleteSharePermissionsRequest","deleteSharePermissionsSuccess","deleteSharePermissionsFailure","deletePermissionsError","getVendorUserPermissionsRequest","isRequestingVendorUserPermissions","getVendorUserPermissionsSuccess","vendorUserPermissions","getVendorUserPermissionsFailure","vendorUserPermissionsErrors","getVendorProductsRequest","isRequestingVendorProducts","getVendorProductsSuccess","getVendorProductsFailure","vendorProductsError","setFetchVendorDocumentByIdLoading","isRequestingVendorDocumentById","setCurrentVendorDocument","currentVendorDocument","fetchVendorDocumentByIdFailure","patchVendorDocumentRequest","patchVendorDocumentError","patchVendorDocumentSuccess","newPolicyDocuments","newVendorDocuments","vendorIndex","patchVendorDocumentFailure","toggleMyDocumentsFilter","setMyDocumentsFilter","fetchVendorSuppliersRequest","fetchVendorSuppliersSuccess","fetchVendorSupplierSuccess","fetchVendorSuppliersFailure","createVendorSupplierRequest","createVendorSupplierSuccess","patchVendorSupplierRequest","patchVendorSupplierSuccess","fetchCurrentCompanyRequest","fetchCurrentCompanySuccess","fetchCurrentCompanyError","updateCompanyProfileRequest","setCompanyState","updateCompanyProfileSuccess","updateCompanyProfileError","fetchVendorDocumentApprovalsRequest","fetchVendorDocumentApprovalsError","fetchVendorDocumentApprovalsSuccess","vendorDocumentApprovalsExtended","fetchVendorDocumentApprovalsFailure","fetchVendorDocumentAttestationsRequest","fetchVendorDocumentAttestationsError","fetchVendorDocumentAttestationsSuccess","vendorDocumentAttestationsExtended","fetchVendorDocumentAttestationsFailure","setOrgChart","fetchComplianceUsersStatus","fetchOrgChartStatus","downloadOrgChartStatus","rawDownloadFile","fileName","urlObject","revokeObjectURL","fetchEscrowAccounts","vendorsIdEscrowAccountsGet","fetchVendors","vendorsGet","fetchVendorSupplierCategories","vendorsVendorIdVendorSuppliersCategoriesGet","sendInvitation","invitationMessage","usersInvitationsPost","fetchVendorUsers","fetchVendorTable","invite_colleagues_to_the_portal","fetchVendorDetails","vendorsIdGet","fetchVendorUser","vendorUsersIdGet","silent","vendorsIdVendorUsersGet","createUser","vendorsIdVendorUsersPost","updateUser","vendorUsersIdPatch","submitVendorSupplier","vendorSuppliersIdPatch","vendorsVendorIdVendorSuppliersPost","deleteVendorSupplier","vendorSuppliersIdDelete","vendorUsersIdDelete","fetchVendorTeams","viewExtended","vendorsIdVendorTeamsGet","upsertVendorTeams","vendorsIdVendorTeamsPost","fetchVendorDocuments","queryDocumentType","vendorsIdVendorDocumentsGet","fetchVendorDocumentDownload","vendorDocumentsIdDownloadGet","fetchVendorPolicyDocuments","uploadVendorDocument","vendorsVendorIdVendorDocumentsPost","deleteVendorDocument","vendorDocumentsIdDelete","vendorsIdTablesGet","emptyTable","fetchTable","tablesTypeGet","attestVendorDocument","vendorDocumentsIdAttestPost","approveVendorDocument","vendorDocumentsIdApprovePost","rejectVendorDocument","reason","vendorDocumentsIdRejectPost","updateOfficeAddress","companiesIdPatch","deleteOfficeAddress","companiesIdOfficesOfficeIdDelete","officeId","updateVendorDetails","vendorFields","vendorsIdPatch","fetchOrgChart","vendorsIdOrgChartGet","downloadOrgChart","updateOrgChart","vendorsIdOrgChartPatch","patchCompanyProfile","fetchCurrentCompany","companiesIdGet","fetchCompanyLogo","vendorsIdLogoGet","uploadCompanyLogo","vendorsIdLogoPatch","fetchDashboard","vendorsIdDashboardSummaryGet","archiveVendorDocument","vendorDocumentsIdArchivePost","unarchiveVendorDocument","archivingDocument","targetDocument","vendorDocumentsIdUnarchivePost","fetchIdentifierTypes","companyIdentifiersTypesGet","fetchCompanyIdentifiers","companiesIdCompanyIdentifiersGet","simpleDeleteCompanyIdentifier","companyIdentifierId","companyIdentifiersIdDelete","createCompanyIdentifier","companiesIdCompanyIdentifiersPost","fetchShares","vendorsIdSharesGet","fetchShareSuggestions","vendorsIdSharesSuggestionsGet","shareEntity","vendorsIdSharesPost","updateSharePermissions","vendorsIdSharesDeleteRaw","fetchVendorUserPermissions","vendorUsersIdPermissionsGet","getVendorProducts","showUnavailable","vendorsIdProductsGet","queryShowUnavailable","fetchVendorDocumentById","vendorDocumentsIdGet","patchVendorDocument","fetchVendorSuppliers","vendorsVendorIdVendorSuppliersGet","fetchVendorSupplier","vendorSuppliersIdGet","fetchVendorDocumentAttestations","vendorsVendorIdVendorDocumentAttestationsGet","targetId","targetType","postChatWidgetToken","vendorsIdVendorUsersChatWidgetLoginPost","fetchVendorUserAttestations","fetchComplianceUsers","_params","includeComplianceStats","queryStatuses","DefaultApi","runtime","agreementSignatoriesIdDeleteRaw","requestParameters","agreementSignatoriesIdDelete","agreementSignatoriesIdGetRaw","jsonValue","agreementSignatoriesIdGet","formParams","useForm","agreementSignatoryType","agreementSignatoryFirstName","agreementSignatoryLastName","agreementSignatoryEmail","agreementSignatoryAddress","agreementSignatoryCompanyName","agreementSignatoryCompanyAddress","agreementSignatoryCompanyNumber","agreementSignatoriesIdPatch","headerParameters","agreementSignatoriesSignatoryIdNotifyPost","agreementSignatoriesSignatoryIdRejectPatchRaw","agreementSignatoriesSignatoryIdRejectPatch","agreementSignatoriesSignatoryIdSignPatchRaw","agreementTemplateCategoriesGetRaw","agreementTemplatesGetRaw","queryParameters","agreementTemplatesIdGetRaw","agreementTemplatesIdGet","agreementsAgreementIdAgreementSignatoriesExternalPost","agreementsAgreementIdAgreementSignatoriesGet","agreementsAgreementIdAgreementSignatoriesInternalPatchRaw","agreementsAgreementIdAgreementSignatoriesInternalPatch","agreementsIdArchivePostRaw","agreementsIdDeleteRaw","agreementsIdGetRaw","agreementsIdPatchRaw","agreementsIdPreviewGetRaw","agreementsIdPreviewGet","agreementsIdSendPostRaw","agreementsIdUnarchivePostRaw","agreementsIdVersionsPostRaw","answersIdPatchRaw","assertionCategoriesGetRaw","assertionResultsAssertionResultIdExcludePatchRaw","assertionResultsAssertionResultIdGetRaw","assertionResultsAssertionResultIdGet","assertionResultsAssertionResultIdIncludePatchRaw","assertionRunsAssertionRunIdGetRaw","assertionsAssertionIdCreateReviewPostRaw","assertionsAssertionIdCreateReviewPost","assertionsAssertionIdDeleteRaw","assertionsAssertionIdDelete","assertionsAssertionIdGetRaw","assertionsAssertionIdPatchRaw","assertionsAssertionIdRunPostRaw","assessmentDownloadsIdDeleteRaw","assessmentDownloadsIdDelete","assessmentDownloadsIdGetRaw","assessmentResponseAnswerFilesIdDeleteRaw","assessmentResponseAnswersIdConfirmPatchRaw","assessmentResponseAnswersIdDeleteRaw","assessmentResponsesIdAssessmentResponseAnswersHistoryGetRaw","assessmentResponsesIdDeleteRaw","assessmentResponsesIdGetRaw","assessmentResponsesIdPatchRaw","assessmentResponsesIdPublishPatchRaw","assessmentTemplatesIdGetRaw","assessmentsAssessmentIdAssessmentRecipientsRecipientIdDeleteRaw","assessmentsIdAssessmentDownloadsGetRaw","assessmentsIdAssessmentDownloadsGet","assessmentsIdAssessmentDownloadsPostRaw","assessmentsIdAssessmentResponsesGetRaw","assessmentsIdDeleteRaw","assessmentsIdGetRaw","assessmentsIdPatchRaw","assessmentsIdSharePostRaw","auditTemplatesGetRaw","auditTemplatesIdGetRaw","auditsAuditIdReviewHistoryGetRaw","auditsIdCompletePostRaw","auditsIdDeleteRaw","auditsIdGetRaw","auditsIdPatchRaw","auditsIdPreviewGetRaw","auditsIdPreviewGet","businessFunctionsIdDeleteRaw","businessFunctionsIdGetRaw","businessFunctionsIdPatchRaw","certificatesIdDeleteRaw","certificatesIdDocumentGetRaw","certificatesIdDocumentGet","certificatesIdGetRaw","checklistTemplatesIdGetRaw","checklistTemplatesIdPatchRaw","checklistTemplatesIdPatch","checklistsIdChangeStatusPatchRaw","checklistsIdGetRaw","checklistsIdPatchRaw","checklistsIdPatch","companiesIdCompanyIdentifiersGetRaw","companiesIdCompanyIdentifiersPostRaw","companiesIdGetRaw","companiesIdOfficesOfficeIdDeleteRaw","companiesIdPatchRaw","companiesValidatePostRaw","companiesValidatePost","companyIdentifiersIdDeleteRaw","companyIdentifiersIdGetRaw","companyIdentifiersIdGet","companyIdentifiersIdPatchRaw","companyIdentifiersIdPatch","companyIdentifiersTypesGetRaw","configsConfigIdGetRaw","configId","controlsControlIdGetRaw","controlsControlIdPatchRaw","controlsControlIdReferencesDeleteRaw","controlsControlIdReferencesPostRaw","controlsControlIdStatusPatchRaw","correctiveActionsCorrectiveActionIdDeleteRaw","correctiveActionsCorrectiveActionIdGetRaw","correctiveActionsCorrectiveActionIdPatchRaw","correctiveActionsCorrectiveActionIdPatch","createRecurringPaymentGetRaw","createRecurringPaymentGet","createStripeRecurringPaymentPostRaw","createStripeRecurringPaymentPost","createStripeSessionPostRaw","dataRoomEntitiesEntityIdPatchRaw","dataRoomFilesFileIdDownloadGetRaw","evidencesEvidenceIdDeleteRaw","evidenceId","evidencesEvidenceIdDelete","evidencesEvidenceIdDownloadGetRaw","evidencesEvidenceIdDownloadGet","frameworkGuidancesIdGetRaw","frameworkTemplatesGetRaw","frameworkTemplatesGet","frameworkTemplatesIdGetRaw","frameworkTemplatesIdGet","frameworksFrameworkIdFrameworkRequirementCategoriesGetRaw","frameworksIdExportEvidencePostRaw","frameworksIdGetRaw","frameworksIdGet","frameworksIdPoliciesGetRaw","incidentEventsIncidentEventIdDeleteRaw","incidentEventsIncidentEventIdGetRaw","incidentEventsIncidentEventIdPatchRaw","incidentEventsIncidentEventIdPatch","jurisdictionsGetRaw","legislationClassificationsGetRaw","legislationTemplatesGetRaw","legislationsIdDeleteRaw","legislationsIdGetRaw","legislationsIdPatchRaw","notificationsNotificationIdReadPatchRaw","parseEmailsPostRaw","paymentMethodsGetRaw","paymentMethodsIdDeleteRaw","paymentMethodsIdGetRaw","paymentMethodsIdGet","paymentMethodsIdPatchRaw","paymentMethodsPostRaw","paymentPlanVendorsGetRaw","paymentPlanVendorsGet","paymentPlansGetRaw","paymentPlansPricingGetRaw","usersLimit","paymentPlanIds","paymentPlansPricingGet","pestelItemsIdDeleteRaw","pestelItemsIdGetRaw","pestelItemsIdPatchRaw","policiesGetRaw","policyCategoriesGetRaw","remindersReminderIdDeleteRaw","reminderId","remindersReminderIdDelete","remindersReminderIdPatchRaw","remindersReminderIdPatch","reportsIdDeleteRaw","reportsIdDocumentGetRaw","reportsIdDocumentGet","reportsIdGetRaw","riskCategoriesGetRaw","riskReportsIdDeleteRaw","riskReportsIdDelete","riskReportsIdGetRaw","riskReportsIdGet","riskTemplatesGetRaw","risksIdApprovePostRaw","risksIdDeleteRaw","risksIdGetRaw","risksIdPatchRaw","searchRegisteredCompaniesqqGetRaw","searchRegisteredCompaniesqqGet","subscriptionsGetRaw","subscriptionsIdDeleteRaw","subscriptionsIdDelete","subscriptionsIdPatchRaw","subscriptionsIdPatch","surveyClausesSurveyClauseIdPatchRaw","surveyClauseId","surveyClausesSurveyClauseIdPatch","surveyClausesSurveyClauseIdRevertCustomTextPatchRaw","surveyClausesSurveyClauseIdRevertCustomTextPatch","tablesTypeGetRaw","tasksTaskIdAvailableAssertionsPatch","tasksTaskIdEvidencesPostRaw","tasksTaskIdEvidencesPost","tasksTaskIdGetRaw","tasksTaskIdPatchRaw","userDetailsGetRaw","userDetailsPatchRaw","usersDeleteRaw","usersGet","usersIdSignatureGetRaw","usersIdSignaturePatchRaw","usersInvitationsPostRaw","usersInvitationsTokenGetRaw","usersInvitationsTokenGet","usersPasswordPatchRaw","usersPasswordPatch","usersPasswordPostRaw","usersPatchRaw","usersPostRaw","usersPost","usersRequestOtpGetRaw","usersSignInPostRaw","session","usersSignInPost","usersSignOutDeleteRaw","usersSmsRequestPostRaw","usersSmsRequestPost","usersVerifyOtpPostRaw","usersVerifyOtpPost","usersVerifyOtpSetupPostRaw","usersVerifyOtpUninstallDeleteRaw","usersVerifyTokenPostRaw","usersVerifyTokenPost","vendorActionsVendorActionIdDeleteRaw","vendorActionsVendorActionIdGetRaw","vendorActionsVendorActionIdPatchRaw","vendorActionsVendorActionIdPatch","vendorActionsVendorActionIdReferencesDeleteRaw","vendorActionsVendorActionIdReferencesPostRaw","vendorDocumentAttestationsAttestationIdNotifyPostRaw","attestationId","vendorDocumentAttestationsAttestationIdNotifyPost","vendorDocumentsIdApprovePostRaw","vendorDocumentsIdArchivePostRaw","vendorDocumentsIdAttestPostRaw","vendorDocumentsIdDeleteRaw","vendorDocumentsIdDownloadGetRaw","vendorDocumentsIdGetRaw","vendorDocumentsIdPatchRaw","vendorDocumentsIdRejectPostRaw","vendorDocumentsIdSkipApprovalPostRaw","vendorDocumentsIdSkipAttestationPostRaw","vendorDocumentsIdSummaryGetRaw","vendorDocumentsIdSummaryGet","vendorDocumentsIdUnarchivePostRaw","vendorDocumentsIdVendorDocumentApprovalsGetRaw","vendorDocumentsIdVendorDocumentAttestationGroupsGetRaw","vendorDocumentsIdVendorDocumentAttestationGroupsPatchRaw","vendorEventsVendorEventIdDeleteRaw","vendorEventsVendorEventIdGetRaw","vendorEventsVendorEventIdPatchRaw","vendorEventsVendorEventIdPatch","vendorFrameworkRequirementsIdDeleteRaw","vendorIntegrationSyncsVendorIntegrationSyncIdDeleteRaw","vendorIntegrationSyncId","vendorIntegrationSyncsVendorIntegrationSyncIdDelete","vendorIntegrationsVendorIntegrationIdDeleteRaw","vendorIntegrationId","vendorIntegrationsVendorIntegrationIdDelete","vendorIntegrationsVendorIntegrationIdGetRaw","vendorIntegrationsVendorIntegrationIdGet","vendorIntegrationsVendorIntegrationIdPatchRaw","vendorIntegrationsVendorIntegrationIdPatch","vendorIntegrationsVendorIntegrationIdVendorIntegrationSyncsPostRaw","vendorIntegrationsVendorIntegrationIdVendorIntegrationSyncsPost","vendorPoliciesIdDeleteRaw","vendorPoliciesIdGetRaw","omitClauseText","vendorPoliciesIdPatchRaw","vendorPoliciesIdPdfGetRaw","vendorPoliciesIdPdfGet","vendorPoliciesIdProgressPatchRaw","vendorPoliciesIdPublishPostRaw","vendorPoliciesIdVendorPolicyClausesGetRaw","vendorPoliciesIdVendorPolicyClausesGet","vendorPolicyClausesIdGetRaw","vendorPolicyClausesIdGet","vendorPolicyClausesIdPatchRaw","vendorSuppliersIdDeleteRaw","vendorSuppliersIdGetRaw","vendorSuppliersIdPatchRaw","vendorTeamsIdDeleteRaw","vendorTeamsIdDelete","vendorTeamsIdGetRaw","vendorTeamsIdGet","vendorTeamsIdPatchRaw","vendorTeam","vendorTeamsIdPatch","vendorUsersIdDeleteRaw","vendorUsersIdGetRaw","vendorUsersIdPatchRaw","vendorUsersIdPermissionsGetRaw","vendorUsersVendorUserIdNotificationsGetRaw","vendorUsersVendorUserIdRemindersGetRaw","vendorUsersVendorUserIdRemindersGet","vendorUsersVendorUserIdRemindersPostRaw","vendorUsersVendorUserIdRemindersPost","vendorsGetRaw","vendorsIdAgreementsGetRaw","vendorsIdAgreementsPost","vendorsIdAgreementsUploadPostRaw","vendorsIdAnswersDeleteRaw","vendorsIdAnswersPostRaw","vendorsIdAssessmentResponsesGetRaw","vendorsIdAssessmentsGetRaw","vendorsIdAssessmentsPostRaw","vendorsIdChecklistTemplatesGetRaw","vendorsIdChecklistTemplatesPostRaw","vendorsIdChecklistTemplatesPost","vendorsIdChecklistsGetRaw","vendorsIdChecklistsPostRaw","vendorsIdDashboardSummaryGetRaw","vendorsIdEscrowAccountsGetRaw","vendorsIdFrameworksGetRaw","vendorsIdGetRaw","vendorsIdInvoicesGetRaw","vendorsIdLogoGetRaw","vendorsIdLogoPatchRaw","vendorsIdOrgChartGetRaw","vendorsIdOrgChartPatchRaw","vendorsIdPatchRaw","vendorsIdPoliciesGetRaw","vendorsIdProductsGetRaw","queryProductType","vendorsIdSharesDelete","vendorsIdSharesGetRaw","vendorsIdSharesPostRaw","vendorsIdSharesSuggestionsGetRaw","vendorsIdTablesGetRaw","vendorsIdTreeGetRaw","vendorsIdVendorDocumentsGetRaw","vendorsIdVendorPoliciesGetRaw","vendorsIdVendorPoliciesPostRaw","vendorsIdVendorTeamsGetRaw","vendorsIdVendorTeamsPostRaw","vendorsIdVendorUsersChatWidgetLoginPostRaw","vendorsIdVendorUsersGetRaw","queryRoles","queryUserTypes","queryEmploymentStatuses","vendorsIdVendorUsersPostRaw","vendorsIdVendorUsersTrusthubLoginPostRaw","vendorsPostRaw","vendorsPost","vendorsVendorIdAssertionRunsGetRaw","vendorsVendorIdAssertionsPostRaw","vendorsVendorIdAssertionsPost","vendorsVendorIdAssessmentTemplatesGetRaw","vendorsVendorIdAuditsGetRaw","vendorsVendorIdAuditsPostRaw","vendorsVendorIdAuditsUploadMeetingPostRaw","vendorsVendorIdAuditsUploadPostRaw","vendorsVendorIdBusinessFunctionsGetRaw","vendorsVendorIdBusinessFunctionsPostRaw","vendorsVendorIdCalendarGetRaw","vendorsVendorIdCertificatesGetRaw","vendorsVendorIdCertificatesPostRaw","certificateType","expireAt","vendorsVendorIdControlCategoriesGetRaw","vendorsVendorIdControlsGetRaw","vendorsVendorIdControlsPostRaw","vendorsVendorIdCorrectiveActionsPostRaw","vendorsVendorIdCorrectiveActionsPost","vendorsVendorIdDataRoomEntitiesDeleteRaw","vendorsVendorIdDataRoomEntitiesGetRaw","vendorsVendorIdDataRoomEntitiesMovePatchRaw","vendorsVendorIdDataRoomEntitiesTreeGetRaw","nodeId","vendorsVendorIdDataRoomEvidenceGetRaw","vendorsVendorIdDataRoomFilesPostRaw","files0Description","vendorsVendorIdDataRoomFoldersPostRaw","vendorsVendorIdIncidentEventsPostRaw","vendorsVendorIdIncidentEventsPost","vendorsVendorIdItemCreationRequestsPostRaw","vendorsVendorIdLegalRegisterGetRaw","vendorsVendorIdLegalRegisterPatchRaw","vendorsVendorIdLegislationsAddPostRaw","vendorsVendorIdLegislationsGetRaw","vendorsVendorIdLegislationsPostRaw","vendorsVendorIdPestelItemsGetRaw","vendorsVendorIdPestelItemsPostRaw","vendorsVendorIdPestelRegisterGetRaw","vendorsVendorIdPestelRegisterPatchRaw","vendorsVendorIdReportsGetRaw","vendorsVendorIdReportsPostRaw","vendorsVendorIdReportsUploadPostRaw","vendorsVendorIdReviewHistoryItemsGetRaw","vendorsVendorIdReviewHistoryItemsPostRaw","vendorsVendorIdRiskReportsGetRaw","vendorsVendorIdRiskReportsGet","vendorsVendorIdRiskReportsPostRaw","vendorsVendorIdRiskReportsPost","vendorsVendorIdRisksGetRaw","vendorsVendorIdRisksPostRaw","vendorsVendorIdSearchGetRaw","vendorsVendorIdTasksGetRaw","vendorsVendorIdTasksPostRaw","vendorsVendorIdVendorActionsGetRaw","vendorsVendorIdVendorActionsPostRaw","vendorsVendorIdVendorActionsPost","vendorsVendorIdVendorDocumentAttestationsGetRaw","includePossibleAttestations","vendorsVendorIdVendorDocumentsPostRaw","vendorsVendorIdVendorEventsGetRaw","vendorsVendorIdVendorEventsGet","vendorsVendorIdVendorEventsPostRaw","vendorsVendorIdVendorEventsPost","vendorsVendorIdVendorFrameworkRequirementsPostRaw","vendorsVendorIdVendorIntegrationsGetRaw","vendorsVendorIdVendorIntegrationsGet","vendorsVendorIdVendorIntegrationsPostRaw","vendorsVendorIdVendorIntegrationsPost","vendorsVendorIdVendorPoliciesGetRaw","vendorsVendorIdVendorSuppliersCategoriesGetRaw","vendorsVendorIdVendorSuppliersGetRaw","vendorsVendorIdVendorSuppliersPostRaw","ConfigsConfigIdGetConfigIdEnum","VendorsVendorIdReviewHistoryItemsGetRelatedToTypeEnum","VendorsVendorIdVendorDocumentAttestationsGetTargetTypeEnum","VendorsVendorIdVendorPoliciesGetQueryStatusEnum","AgreementModelFromJSON","AgreementModelFromJSONTyped","ignoreDiscriminator","agreementTemplateName","AgreementModelStatusEnum","AgreementSignatoryModelFromJSON","AgreementSignatoryModelFromJSONTyped","AgreementSignatoryModelStatusEnum","AgreementSignatoryModelTypeEnum","AssertionModelFromJSONTyped","AssertionModelTypeEnum","AssertionModelStatusEnum","AuditModelFromJSON","AuditModelFromJSONTyped","AuditModelStatusEnum","AuditModelRatingEnum","CertificateModelFromJSON","CertificateModelFromJSONTyped","CertificateModelCertificateTypeEnum","PestelItemAreaFromJSON","PestelItemAreaFromJSONTyped","PestelItemAreaToJSON","PestelItemLocationTypeFromJSON","PestelItemLocationTypeFromJSONTyped","PestelItemLocationTypeToJSON","ReferenceCreatePayloadReferenceToJSON","referenceable_id","referenceable_type","ReferenceCreatePayloadReferenceReferenceableTypeEnum","ReportCreatePayloadReportToJSON","owner_id","version_bump","include_unapproved_risks","include_incomplete_actions","ReportCreatePayloadReportVersionBumpEnum","ReportCreatePayloadReportFrameworkEnum","ReviewStatusEnumFromJSON","ReviewStatusEnumFromJSONTyped","ReviewStatusEnumToJSON","SharedPaymentPeriod","SharedPaymentPeriodFromJSON","SharedPaymentPeriodFromJSONTyped","SharedPaymentPeriodToJSON","VendorEventEventTypeFromJSON","VendorEventEventTypeFromJSONTyped","AccessFromJSONTyped","AgreementCreatePayloadToJSON","AgreementCreatePayloadAgreementToJSON","agreement_signatories","AgreementCreatePayloadAgreementSignatoriesToJSON","agreement_template_id","source_agreement_id","company_name","company_address","company_number","AgreementExtendedFromJSON","AgreementExtendedFromJSONTyped","AgreementExtendedModesAvailableEnum","AgreementModelSignatoriesStatsFromJSON","AgreementModelSignatoriesStatsFromJSONTyped","AgreementSendPayloadToJSON","signatories_to_notify_ids","AgreementSignatoryCreateExternalPayloadToJSON","AgreementSignatoryNotifyPayloadToJSON","AgreementSignatoryRejectPayloadToJSON","rejection_reason","AgreementSignatoryUpdateInternalPayloadToJSON","agreement_signatories_users_ids","agreementSignatoriesUsersIds","AgreementTemplateCategoryModelFromJSON","AgreementTemplateCategoryModelFromJSONTyped","AgreementTemplateModelFromJSON","AgreementTemplateModelFromJSONTyped","AgreementUpdatePayloadToJSON","review_date","content_is_custom","use_company_logo","use_branding_color","AgreementVersionCreatePayloadToJSON","change_reason","AnswerFromJSONTyped","AnswerToJSON","created_at","updated_at","user_name","property_name","question_id","question_row_id","survey_id","not_applicable","row_order","AnswerDeletePayloadToJSON","answers_ids","AssertionCategoryModelFromJSONTyped","AssertionCreatePayloadToJSON","AssertionCreatePayloadAssertionToJSON","assertion_category_id","assertionCategoryId","task_id","AssertionExtendedFromJSONTyped","AssertionFrequency","AssertionFrequencyFromJSONTyped","AssertionFrequencyToJSON","AssertionResultExcludePayloadToJSON","assertion_result","AssertionResultExcludePayloadAssertionResultToJSON","reason_for_exclusion","AssertionResultModelFromJSONTyped","AssertionResultExtendedFromJSONTyped","AssertionResultModelStatusEnum","AssertionRunExtendedFromJSON","AssertionRunModelFromJSONTyped","AssertionRunExtendedFromJSONTyped","AssertionRunListFromJSON","AssertionRunModelFromJSON","SharedPaginationMetaFromJSON","AssertionRunListFromJSONTyped","AssertionSourceFromJSON","finishedAt","AssertionRunModelStatusEnum","AssertionSourceFromJSONTyped","AssertionUpdatePayloadToJSON","AssertionUpdatePayloadAssertionToJSON","AssessmentFromJSON","AssessmentRecipientFromJSON","AssessmentFromJSONTyped","AssessmentCreatePayloadToJSON","assessment_template_id","AssessmentDeletePayloadToJSON","notification_recipients","AssessmentDownloadFromJSON","AssessmentDownloadFromJSONTyped","AssessmentDownloadToJSON","assessment_id","assessment_response_ids","AssessmentRecipientFromJSONTyped","AssessmentResponseFromJSON","AssessmentResponseAnswerFromJSON","AssessmentResponseFromJSONTyped","AssessmentResponseToJSON","relative_path","vendor_id","vendor_name","requesting_vendor_name","due_date","assessment_sections","assessment_response_answers","AssessmentResponseAnswerToJSON","displayValue","AssessmentResponseAnswerFileFromJSON","AssessmentResponseAnswerFromJSONTyped","updated_by","display_value","read_only","show_audit_info","confirmed_at","confirmed_by","is_confirmed","assessment_response_id","assessment_response_answer_files","AssessmentResponseAnswerFileToJSON","source_type","AssessmentResponseAnswerStatusEnum","AssessmentResponseAnswerSourceTypeEnum","AssessmentResponseAnswerFileFromJSONTyped","content_type","AssessmentSectionFromJSONTyped","AssessmentTemplateExtendedFromJSON","AssessmentTemplateModelFromJSONTyped","AssessmentTemplateExtendedFromJSONTyped","AssessmentTemplateModelFromJSON","AssessmentUpdatePayloadToJSON","AttestationFrequencyEnum","AttestationFrequencyEnumFromJSON","AttestationFrequencyEnumFromJSONTyped","AttestationFrequencyEnumToJSON","AuditCreatePayloadToJSON","AuditCreatePayloadAuditToJSON","audit_template_id","started_at","question_ids","AuditExtendedFromJSON","AuditExtendedFromJSONTyped","AuditReviewHistoryItemFromJSON","AuditReviewHistoryItemFromJSONTyped","AuditTemplateExtendedFromJSON","AuditTemplateExtendedFromJSONTyped","AuditTemplateModelFromJSON","AuditTemplateModelFromJSONTyped","AuditTypeFromJSON","AuditTypeFromJSONTyped","AuditUpdatePayloadToJSON","AuditUpdatePayloadAuditToJSON","BoardMemberFromJSON","joinedOn","BoardMemberFromJSONTyped","BoardMemberToJSON","joined_on","BusinessFunctionCreatePayloadToJSON","business_function","BusinessFunctionCreatePayloadBusinessFunctionToJSON","function_identifier","functionIdentifier","functional_tag","functionalTag","impact_of_discontinuing","impactOfDiscontinuing","critical","licenced_activity","licencedActivity","reason_for_importance","reasonForImportance","rpo_hours","rpoHours","rto_hours","rtoHours","BusinessFunctionModelFromJSON","licencedActivityName","BusinessFunctionModelFromJSONTyped","BusinessFunctionUpdatePayloadToJSON","BusinessFunctionUpdatePayloadBusinessFunctionToJSON","CalendarItemListFromJSON","CalendarItemModelFromJSON","CalendarItemListFromJSONTyped","CalendarItemModelFromJSONTyped","CalendarItemModelStatusEnum","CardToJSON","card_no","exp_month","exp_year","billing_details","CardBillingDetailsToJSON","CardBillingDetailsAddressToJSON","postal_code","ChatWidgetLoginFromJSON","ChatWidgetLoginFromJSONTyped","ChecklistFromJSONTyped","ChecklistCheckableFromJSON","ChecklistStatusEnum","ChecklistCheckableTypeEnum","ChecklistChangedStatusPayloadToJSON","ChecklistChangedStatusPayloadStatusEnum","ChecklistCheckableFromJSONTyped","ChecklistCreatePayloadToJSON","ChecklistCreatePayloadChecklistToJSON","ChecklistCreatePayloadQuestionsToJSON","checklist_users","ChecklistCreatePayloadChecklistUsersToJSON","related_to","checkable_id","checkable_type","ChecklistCreatePayloadChecklistCheckableTypeEnum","vendor_user_id","question_text","explanatory_text","question_group_id","ChecklistExtendedFromJSON","checklistVendorUsers","ChecklistExtendedFromJSONTyped","ChecklistExtendedAllOfChecklistVendorUsersFromJSONTyped","ChecklistItemFromJSON","ChecklistItemFromJSONTyped","ProgressFromJSON","ChecklistItemsGroupsFromJSONTyped","ChecklistTemplateFromJSON","ChecklistTemplateFromJSONTyped","ChecklistTemplateRelatedToEnum","ChecklistTemplateCreatePayloadToJSON","checklist_template","ChecklistTemplateCreatePayloadChecklistTemplateToJSON","ChecklistTemplateCreatePayloadQuestionsToJSON","ChecklistTemplateExtendedFromJSON","ChecklistTemplateExtendedFromJSONTyped","ChecklistTemplateItemFromJSON","ChecklistTemplateExtendedAllOfItemsGroupsFromJSONTyped","ChecklistTemplateItemFromJSONTyped","ChecklistTemplateUpdatePayloadToJSON","ChecklistUpdatePayloadToJSON","CompanyFromJSON","CompanyFromJSONTyped","legalName","tradeName","countryOfIncorporation","countryOfIncorporationName","registeredAddress","primaryIdentifier","officerRoles","OfficerRoleFromJSON","boardMembers","companySectors","CompanySectorFromJSON","companyType","companyTypeDescription","incorporatedOn","latestAnnualReturnOn","legal_name","trade_name","country_of_incorporation","country_of_incorporation_name","registered_address","primary_identifier","CompanyIdentifierModelToJSON","OfficeToJSON","officer_roles","OfficerRoleToJSON","board_members","company_sectors","CompanySectorToJSON","company_type","company_type_description","incorporated_on","latest_annual_return_on","CompanyExtendedFromJSON","preferTradingName","workforceModel","businessSummary","visiblePolicyFrameworkReferences","legalEntityIdentifier","currencyCode","financialEntityType","financialEntityName","competentAuthority","competentAuthorityName","CompanyExtendedFromJSONTyped","CompanyExtendedWorkforceModelEnum","CompanyExtendedVisiblePolicyFrameworkReferencesEnum","CompanyIdentifierCreatePayloadToJSON","CompanyIdentifierModelFromJSONTyped","display_name","CompanyIdentifierModelTypeEnum","CompanyIdentifierTypeFromJSON","CompanyIdentifierTypeFromJSONTyped","CompanyIdentifierUpdatePayloadToJSON","CompanySectorFromJSONTyped","CompanyUpdatePayloadToJSON","prefer_trading_name","branding_color","workforce_model","business_summary","visible_policy_framework_references","legal_entity_identifier","currency_code","financial_entity_type","financial_entity_name","competent_authority","ControlCategoryModelFromJSONTyped","ControlCategoryExtendedFromJSONTyped","ControlCategoryTemplateModelFromJSONTyped","controlTemplates","ControlCategoryTemplateExtendedFromJSONTyped","ControlCreatePayloadToJSON","ControlCreatePayloadControlToJSON","treatment_plan","assignee_id","tasks_ids","policy_codes","vendor_policy_ids","frameworks_relations","ControlCreatePayloadControlFrameworksRelationsToJSON","annex_ref","control_category_id","ControlModelFromJSONTyped","ControlExtendedFromJSONTyped","FrameworkRelationFromJSON","description_as_html","treatment_plan_as_html","FrameworkRelationToJSON","review_status","review_overdue","next_review_date","help_article_url","ControlModelStatusEnum","ControlReviewFrequencyEnum","ControlReviewFrequencyEnumToJSON","ControlRiskModelFromJSONTyped","ControlTemplateModelFromJSONTyped","taskTemplates","ControlTemplateExtendedFromJSONTyped","ControlUpdatePayloadToJSON","ControlUpdatePayloadControlToJSON","ControlUpdateStatusPayloadToJSON","ControlUpdateStatusPayloadControlToJSON","CorrectiveActionExtendedFromJSON","CorrectiveActionModelFromJSONTyped","CorrectiveActionExtendedFromJSONTyped","CorrectiveActionModelActionTypeEnum","DashboardSummaryFromJSON","widgets","DashboardSummaryWidgetsFromJSON","DashboardSummaryFromJSONTyped","DashboardSummaryDataFromJSON","DashboardSummaryDataFromJSONTyped","widgetId","DashboardSummaryWidgetsFromJSONTyped","DashboardSummaryWidgetsWidgetIdEnum","DataRoomEntityDeletePayloadToJSON","entities_ids","DataRoomEntityFolderCreatePayloadToJSON","DataRoomEntityFolderCreatePayloadFolderToJSON","parent_folder_id","DataRoomEntityModelFromJSON","DataRoomEntityModelFromJSONTyped","DataRoomEntityModelTypeEnum","DataRoomEntityMovePayloadToJSON","parent_entity_id","DataRoomEntityUpdatePayloadToJSON","DataRoomEntityUpdatePayloadEntityToJSON","EmailArrayFromJSON","EmailArrayFromJSONTyped","EmailTextToJSON","ErrorResponseErrorsFromJSONTyped","EscrowAccountFromJSON","EscrowAccountFromJSONTyped","provider","EvidenceModelFromJSONTyped","ExternalShareToJSON","email_addresses","FrameworkExportEvidencePayloadToJSON","start_date","end_date","FrameworkExtendedFromJSON","FrameworkModelFromJSONTyped","controlCategories","FrameworkExtendedFromJSONTyped","FrameworkGuidanceModelFromJSON","FrameworkGuidanceModelFromJSONTyped","FrameworkModelFromJSON","FrameworkModelStatsFromJSON","FrameworkModelAvailabilityEnum","FrameworkModelStatsPoliciesFromJSON","FrameworkModelStatsTasksFromJSON","FrameworkModelStatsControlsFromJSON","requirements","FrameworkModelStatsRequirementsFromJSON","FrameworkModelStatsFromJSONTyped","FrameworkModelStatsControlsFromJSONTyped","live","requestedToApprove","requestedToRead","FrameworkModelStatsPoliciesFromJSONTyped","FrameworkModelStatsRequirementsFromJSONTyped","failed","FrameworkModelStatsTasksFromJSONTyped","FrameworkRelationFrameworkFromJSON","FrameworkRelationControlCategoryFromJSON","FrameworkRelationFromJSONTyped","FrameworkRelationFrameworkToJSON","control_category","FrameworkRelationControlCategoryToJSON","FrameworkRelationControlCategoryFromJSONTyped","FrameworkRelationFrameworkFromJSONTyped","FrameworkRequirementCategoryExtendedFromJSON","FrameworkRequirementCategoryModelFromJSONTyped","FrameworkRequirementCategoryExtendedFromJSONTyped","FrameworkRequirementModelFromJSONTyped","FrameworkRequirementExtendedFromJSONTyped","FrameworkRequirementExtendedStatusEnum","progressPoints","FrameworkRequirementModelTypeEnum","FrameworkTemplateExtendedFromJSON","FrameworkTemplateModelFromJSONTyped","controlCategoryTemplates","FrameworkTemplateExtendedFromJSONTyped","FrameworkTemplateModelFromJSON","GlobalSearchItemFromJSON","searchableType","GlobalSearchItemFromJSONTyped","ImageFromJSON","ImageUrlsFromJSON","ImageFromJSONTyped","ImageUrlsFromJSONTyped","IncidentEventExtendedFromJSON","IncidentEventExtendedFromJSONTyped","InlineObjectToJSON","InvoiceFromJSON","InvoiceFromJSONTyped","ItemCreationRequestCreatePayloadToJSON","item_creation_request","ItemCreationRequestCreatePayloadItemCreationRequestToJSON","template_id","template_type","templateType","JurisdictionModelFromJSON","JurisdictionModelFromJSONTyped","LegalRegisterModelFromJSON","LegalRegisterModelStatsFromJSON","LegalRegisterModelFromJSONTyped","LegalRegisterModelStatsFromJSONTyped","LegalRegisterUpdatePayloadToJSON","review_frequency","LegislationAddPayloadToJSON","legislation_template_ids","LegislationClassificationModelFromJSON","LegislationClassificationModelFromJSONTyped","LegislationCreatePayloadToJSON","LegislationCreatePayloadLegislationToJSON","description_url","explanation_of_compliance","legislation_classification_id","jurisdiction_id","LegislationExtendedFromJSON","LegislationModelFromJSONTyped","legislationReviews","LegislationExtendedFromJSONTyped","LegislationModelFromJSON","LegislationReviewModelFromJSONTyped","LegislationTemplateModelFromJSON","LegislationTemplateModelFromJSONTyped","LegislationUpdatePayloadToJSON","legislation_reviews","LegislationUpdatePayloadLegislationReviewsToJSON","user_id","MessageResponseFromJSON","MessageResponseFromJSONTyped","MultipleShareToJSON","MultipleShareSharesToJSON","MultipleShareDeleteToJSON","access_level","NotificationListFromJSON","NotificationModelFromJSON","NotificationListFromJSONTyped","NotificationModelFromJSONTyped","purpose","OfficeFromJSONTyped","address_1","address_2","post_code","OfficerFromJSON","dateOfBirth","nationality","countryOfResidence","occupation","appointedOn","ceasedOn","OfficerFromJSONTyped","OfficerToJSON","date_of_birth","country_of_residence","appointed_on","ceased_on","officers","OfficerRoleFromJSONTyped","PaymentMethodFromJSON","PaymentMethodBillingDetailsFromJSON","PaymentMethodCardFromJSON","PaymentMethodFromJSONTyped","PaymentMethodBillingDetailsAddressFromJSON","PaymentMethodBillingDetailsFromJSONTyped","PaymentMethodBillingDetailsAddressFromJSONTyped","PaymentMethodCardFromJSONTyped","PaymentMethodUpdatePayloadToJSON","PaymentPlanFromJSON","internalName","stripeMonthlyPriceId","stripeAnnuallyPriceId","PaymentPlanFromJSONTyped","PaymentPlanPriceFromJSON","PaymentPlanPriceFromJSONTyped","PaymentPlanVendorCheckoutCreatePayloadToJSON","plan_id","product_id","users_limit","payment_period","purchasable_id","purchasable_type","PaymentPlanVendorCheckoutModelFromJSON","PaymentPlanVendorCheckoutModelFromJSONTyped","PestelItemCreatePayloadToJSON","pestel_item","PestelItemCreatePayloadPestelItemToJSON","item_type","location_type","mitigation_factors","PestelItemItemType","PestelItemItemTypeFromJSONTyped","PestelItemModelFromJSON","PestelItemModelFromJSONTyped","PestelItemUpdatePayloadToJSON","PestelRegisterModelFromJSON","PestelRegisterModelStatsFromJSON","PestelRegisterModelFromJSONTyped","PestelRegisterModelStatsFromJSONTyped","PestelRegisterUpdatePayloadToJSON","productName","requiredPlan","PolicyFromJSONTyped","PolicyCategoryFromJSON","PolicyCategoryFromJSONTyped","PreviousAnswerFromJSON","PreviousAnswerFromJSONTyped","PreviousAnswerToJSON","ProductFromJSON","stripePriceId","ProductFromJSONTyped","ProgressFromJSONTyped","QuestionRowFromJSON","QuestionColumnFromJSON","visibilityCondition","QuestionVisibilityConditionFromJSON","otherDatatype","allowAttachment","QuestionTableFromJSON","QuestionFromJSONTyped","question_text_as_html","explanatory_text_as_html","object_type","table_type","question_rows","QuestionRowToJSON","question_columns","QuestionColumnToJSON","visibility_condition","QuestionVisibilityConditionToJSON","other_layout","other_datatype","allow_attachment","previous_answer","show_when","QuestionTableToJSON","QuestionDatatypeEnum","QuestionLayoutEnum","QuestionObjectTypeEnum","QuestionTableTypeEnum","QuestionColumnFromJSONTyped","column_text","column_value","QuestionGroupFromJSON","QuestionGroupFromJSONTyped","rowTextRight","QuestionRowFromJSONTyped","row_text","row_text_right","QuestionTableFromJSONTyped","QuestionVisibilityConditionFromJSONTyped","RecurringPaymentCheckoutCreatePayloadToJSON","RecurringPaymentCheckoutModelFromJSON","RecurringPaymentCheckoutModelFromJSONTyped","RecurringProductFromJSON","RecurringProductFromJSONTyped","ReferenceCreatePayloadToJSON","RegisteredCompanyFromJSON","dateOfIncorporation","identifierType","RegisteredCompanyFromJSONTyped","ReminderCreatePayloadToJSON","reminder","ReminderCreatePayloadReminderToJSON","related_to_id","related_to_type","remind_at","remindAt","ReminderListFromJSON","ReminderModelFromJSON","ReminderListFromJSONTyped","ReminderModelFromJSONTyped","ReminderUpdatePayloadToJSON","ReminderUpdatePayloadReminderToJSON","ReportCreatePayloadToJSON","ReportModelFromJSON","ReportModelFromJSONTyped","ReportModelTypeEnum","ReviewFrequencyEnum","ReviewFrequencyEnumFromJSONTyped","ReviewHistoryItemCreatePayloadToJSON","review_history_item","ReviewHistoryItemCreatePayloadReviewHistoryItemToJSON","review_comment","ReviewHistoryItemCreatePayloadReviewHistoryItemRelatedToTypeEnum","ReviewHistoryItemModelFromJSONTyped","RiskCategoryModelFromJSON","RiskCategoryModelRiskStatsFromJSON","RiskCategoryModelFromJSONTyped","RiskCategoryModelRiskStatsFromJSONTyped","RiskCreatePayloadToJSON","RiskCreatePayloadRiskToJSON","risk_template_id","risk_category_id","RiskExtendedFromJSON","RiskModelFromJSONTyped","RiskExtendedFromJSONTyped","RiskModelFromJSON","inherentRisk","residualRisk","RiskModelActionStatsFromJSON","RiskModelStatusEnum","RiskModelTreatmentStrategyEnum","RiskModelInformationSecurityPropertiesEnum","RiskModelActionStatsFromJSONTyped","RiskReportCreatePayloadToJSON","risk_report","RiskReportCreatePayloadRiskReportToJSON","riskReport","RiskReportModelFromJSON","RiskReportModelFromJSONTyped","RiskTemplateModelFromJSON","RiskTemplateModelFromJSONTyped","RiskUpdatePayloadToJSON","RiskUpdatePayloadRiskToJSON","treatment_strategy","treatment_explanation","inherent_risk_likelihood","inherent_risk_consequence","inherent_risk_comment","residual_risk_likelihood","residual_risk_consequence","residual_risk_comment","information_security_properties","ShareAccessLevel","ShareAccessLevelFromJSONTyped","ShareReceiverFromJSON","receiver","ShareReceiverFromJSONTyped","ShareSuggestionListFromJSON","ShareSuggestionListDataFromJSON","ShareSuggestionListMetaFromJSON","ShareSuggestionListFromJSONTyped","ShareSuggestionListDataFromJSONTyped","ShareSuggestionListMetaFromJSONTyped","ShareableType","SharedAttachmentModelFromJSONTyped","SharedDocumentListFromJSON","SharedDocumentListDataFromJSON","SharedDocumentListFromJSONTyped","sharedBy","sharedAt","SharedDocumentListDataFromJSONTyped","SharedDocumentListDataAccessLevelEnum","SharedEmploymentStatus","SharedEmploymentStatusFromJSONTyped","SharedEmploymentStatusToJSON","SharedLegislationRecurring","SharedLegislationRecurringFromJSONTyped","SharedMaxUsersAmountToJSON","SharedPaginationMetaFromJSONTyped","SharedTaskRecurring","SharedTaskRecurringFromJSONTyped","SharedUserType","SharedUserTypeFromJSONTyped","SharedUserTypeToJSON","SharedVendorUserStatus","SharedVendorUserStatusFromJSON","SharedVendorUserStatusFromJSONTyped","SharedVendorUserStatusToJSON","SharesListFromJSON","SharesListDataFromJSON","SharesListFromJSONTyped","SharesListDataFromJSONTyped","SharesListDataAccessLevelEnum","SubscriptionFromJSON","cancelledAt","SubscriptionInvoicesFromJSON","SubscriptionFromJSONTyped","SubscriptionInvoicesFromJSONTyped","SubscriptionUpdatePayloadToJSON","payment_plan_id","SurveyClauseFromJSON","questionGroups","SurveyFromJSONTyped","SurveyClauseFromJSONTyped","SurveyClauseUpdatePayloadToJSON","rendered_text","renderedText","use_custom_text","useCustomText","TableFromJSON","TableColumnFromJSON","TableRowFromJSON","TableFromJSONTyped","TableColumnFromJSONTyped","TableRowFromJSONTyped","TaskAvailableAssertionsPayloadToJSON","available_assertion_ids","TaskCreatePayloadToJSON","TaskCreatePayloadTaskToJSON","TaskExtendedFromJSON","TaskModelFromJSONTyped","TaskExtendedFromJSONTyped","TaskListFromJSON","TaskListMetaFromJSON","TaskListFromJSONTyped","TaskListMetaStatsFromJSON","TaskListMetaFromJSONTyped","tasksTotal","testsTotal","testsPassing","testsFailing","testsPending","TaskListMetaStatsFromJSONTyped","TaskModelStatusEnum","TaskTemplateModelFromJSONTyped","TaskUpdatePayloadToJSON","TaskUpdatePayloadTaskToJSON","TwoFactorRequestOtpPayloadFromJSON","TwoFactorRequestOtpPayloadFromJSONTyped","TwoFactorSmsRequestPayloadToJSON","TwoFactorVerifyOtpPayloadToJSON","mfa","TwoFactorVerifyOtpPayloadMfaToJSON","otp_attempt","TwoFactorVerifyOtpSetupPayloadToJSON","TwoFactorVerifyOtpSetupResponseFromJSON","TwoFactorVerifyOtpSetupResponseFromJSONTyped","TwoFactorVerifyTokenPayloadToJSON","TwoFactorVerifyTokenPayloadObjToJSON","authyEnabled","UserDetailsFromJSONTyped","full_name","authy_userid","authy_enabled","UserForgotPasswordToJSON","UserInvitationFromJSON","clientId","UserInvitationFromJSONTyped","UserInvitationToJSON","client_id","invitation_message","UserPasswordToJSON","current_password","currentPassword","UserResetPasswordToJSON","resetPasswordToken","UserSignInToJSON","UserSignUpToJSON","website","linkedin","twitter","VendorAccessFromJSON","accessGroupId","VendorFromJSONTyped","VendorToJSON","VendorAccessToJSON","access_group_id","VendorAccessFromJSONTyped","VendorActionExtendedFromJSON","VendorActionExtendedFromJSONTyped","VendorActionModelFromJSONTyped","VendorActionModelStatusEnum","VendorDetailsFromJSON","serviceProviderId","counts","VendorDetailsCountsFromJSON","VendorDetailsRegistersFromJSON","VendorDetailsFromJSONTyped","answerSets","corporatePolicies","industryCertifications","VendorDetailsCountsFromJSONTyped","VendorDetailsRegistersFromJSONTyped","VendorDocumentFromJSON","attestationMessage","VendorDocumentApprovalStatsFromJSON","VendorDocumentAttestationStatsFromJSON","policy_id","policy_category_id","document_type","documentable_id","approval_message","need_to_attest","attestation_frequency","attestation_message","attestation_due_at","vendor_document_attestation","vendor_document_approval","approval_stats","VendorDocumentApprovalStatsToJSON","attestation_stats","VendorDocumentAttestationStatsToJSON","VendorDocumentStatusEnum","VendorDocumentApprovalFromJSONTyped","last_approved_at","rejected_at","VendorDocumentApprovalStatusEnum","VendorDocumentApprovalRejectToJSON","VendorDocumentApprovalStatsFromJSONTyped","sendEmailNotification","VendorDocumentAttestationFromJSONTyped","document_name","send_email_notification","last_attested_at","VendorDocumentAttestationStatusEnum","VendorDocumentAttestationStatsFromJSONTyped","VendorDocumentAttestationsGroupUpdatePayloadToJSON","group_ids","VendorDocumentDownloadFromJSON","fileSizeInBytes","VendorDocumentDownloadFromJSONTyped","VendorDocumentExtendedFromJSON","VendorDocumentExtendedFromJSONTyped","VendorDocumentUpdatePayloadToJSON","vendor_document_attestations","vendor_document_approvals","VendorEventExtendedFromJSON","VendorEventExtendedFromJSONTyped","VendorEventModelFromJSON","VendorEventModelFromJSONTyped","VendorFrameworkRequirementCreatePayloadToJSON","vendor_framework_requirement","VendorFrameworkRequirementCreatePayloadVendorFrameworkRequirementToJSON","framework_requirement_id","VendorFrameworkRequirementModelFromJSON","VendorFrameworkRequirementModelFromJSONTyped","VendorIntegrationCreatePayloadToJSON","vendor_integration","VendorIntegrationCreatePayloadVendorIntegrationToJSON","vendorIntegration","api_key","apiKey","api_secret","apiSecret","region","detector_id","detectorId","tenant","VendorIntegrationExtendedFromJSON","VendorIntegrationExtendedFromJSONTyped","VendorIntegrationModelFromJSON","learnMore","learnMoreAsHtml","serviceStatus","serviceMessage","authorizationMethod","VendorIntegrationSettingFromJSON","authorizeUrl","vendorIntegrationSyncs","VendorIntegrationSyncModelFromJSON","VendorIntegrationModelFromJSONTyped","VendorIntegrationModelStatusEnum","VendorIntegrationModelServiceStatusEnum","VendorIntegrationModelAuthorizationMethodEnum","VendorIntegrationSettingFromJSONTyped","VendorIntegrationSyncCreatePayloadToJSON","vendor_integration_sync","VendorIntegrationSyncCreatePayloadVendorIntegrationSyncToJSON","vendorIntegrationSync","daily","subtype","VendorIntegrationSyncCreatePayloadVendorIntegrationSyncDirectionEnum","VendorIntegrationSyncExtendedFromJSON","VendorIntegrationSyncExtendedFromJSONTyped","lastSyncedAt","VendorIntegrationSyncModelFromJSONTyped","VendorIntegrationSyncModelDirectionEnum","VendorIntegrationSyncModelStateEnum","VendorIntegrationUpdatePayloadToJSON","VendorIntegrationUpdatePayloadVendorIntegrationToJSON","VendorPolicyTypeFromJSON","VendorPolicyClauseFromJSON","VendorPolicyAnswerFromJSON","VendorPolicyFromJSONTyped","category_name","summary_as_html","vendor_document_id","vendor_policy_clauses","VendorPolicyClauseToJSON","vendor_policy_answers","VendorPolicyAnswerToJSON","VendorPolicyStatusEnum","VendorPolicyVersionBumpEnum","VendorPolicyAnswerClosestQuestionFromJSON","VendorPolicyAnswerFromJSONTyped","closest_question","VendorPolicyAnswerClosestQuestionToJSON","VendorPolicyAnswerClosestQuestionFromJSONTyped","VendorPolicyDetailsFromJSON","policyClauseId","VendorPolicyClauseFromJSONTyped","vendor_policy_id","vendor_policy","VendorPolicyDetailsToJSON","policy_clause_id","clause_text","clause_text_is_custom","leave_out","allow_custom_text","VendorPolicyDetailsFromJSONTyped","VendorPolicyDetailsStatusEnum","VendorPolicyProgressToJSON","VendorPolicyPublishToJSON","VendorPolicyType","VendorPolicyTypeFromJSONTyped","VendorPolicyTypeToJSON","VendorProductIndexFromJSON","VendorProductModelFromJSON","VendorProductIndexFeaturesFromJSON","VendorProductIndexFromJSONTyped","VendorProductIndexFeaturesFromJSONTyped","errorCode","minimumPlan","paymentProductAvailable","paymentProduct","singlePurchase","VendorProductModelFromJSONTyped","VendorSupplierAccessControl","VendorSupplierAccessControlFromJSONTyped","VendorSupplierCategoryFromJSON","VendorSupplierCategoryFromJSONTyped","VendorSupplierExtendedFromJSON","VendorSupplierModelFromJSONTyped","VendorSupplierExtendedFromJSONTyped","VendorSupplierModelFromJSON","VendorSupplierPayloadToJSON","vendor_supplier_category_id","contract_recurring","contract_renewal_date","contract_id","contract_description","contact_email","contact_name","contact_phone","risk_profile","access_control","critical_dependencies","continuity_plan","VendorSupplierStatus","VendorSupplierStatusFromJSONTyped","VendorTeamModelFromJSON","VendorTeamModelFromJSONTyped","VendorTeamModelToJSON","VendorTeamUpsertPayloadToJSON","VendorTeamUpsertPayloadVendorTeamsToJSON","VendorTreeNodeModelFromJSON","VendorTreeNodeModelFromJSONTyped","lastInvitedAt","externalIdentifiers","employmentStartedAt","employmentEndedAt","lineManager","VendorUserComplianceStatsFromJSON","VendorUserFromJSONTyped","last_invited_at","VendorUserRolesToJSON","external_identifiers","VendorUserExternalIdentifierToJSON","employment_started_at","employment_ended_at","user_type","employment_status","line_manager","compliance_stats","VendorUserComplianceStatsToJSON","VendorUserComplianceStatsFromJSONTyped","VendorUserCreatePayloadToJSON","VendorUserCreatePayloadVendorUsersToJSON","line_manager_id","lineManagerId","vendor_teams_ids","vendorTeamsIds","VendorUserExternalIdentifierFromJSONTyped","VendorUserRoles","VendorUserRolesFromJSONTyped","VendorUserStatus","VendorUserUpdatePayloadToJSON","vendor_user","VendorUserUpdatePayloadVendorUserToJSON","VendorsCreatePayloadToJSON","VendorsCreatePayloadCompanyToJSON","BASE_PATH","BaseAPI","Configuration","fetchApi","fetchParams","middleware","pre","post","clone","withMiddleware","middlewares","withPreMiddleware","preMiddlewares","withPostMiddleware","postMiddlewares","createFetchParams","queryParamsStringify","credentials","RequiredError","msg","super","COLLECTION_FORMATS","csv","ssv","tsv","pipes","bind","querystring","accessToken","exists","prefix","fullKey","part","canConsumeForm","consumes","consume","JSONApiResponse","raw","transformer","VoidApiResponse","accessRequestsAccessRequestIdApprovePatchRaw","accessRequestId","accessRequestsAccessRequestIdDenyPatchRaw","notify","accessRequestsAccessRequestIdGetRaw","accessRequestsAccessRequestIdGet","companiesCompanyIdDeleteRaw","companiesCompanyIdGetRaw","companiesCompanyIdPatchRaw","documentPermissionsDocumentPermissionIdDeleteRaw","documentsDocumentIdDownloadGetRaw","documentsDocumentIdDownloadGet","sectionsSectionIdGetRaw","sectionsSectionIdPatchRaw","usersConfirmationGetRaw","confirmationToken","vendorDomain","usersConfirmationGet","usersInvitationPatchRaw","usersInvitationPostRaw","usersInvitationsIdGetRaw","vendorTrusthubsVendorIdOrDomainAccessRequestsGetRaw","vendorTrusthubsVendorIdOrDomainAccessRequestsPostRaw","vendorTrusthubsVendorIdOrDomainCategoriesGetRaw","vendorTrusthubsVendorIdOrDomainCompaniesGetRaw","vendorTrusthubsVendorIdOrDomainCompaniesPostRaw","vendorTrusthubsVendorIdOrDomainSectionsGetRaw","includeInvisible","vendorTrusthubsVendorIdOrDomainSettingsGetRaw","vendorTrusthubsVendorIdOrDomainSettingsPatchRaw","published","vendorTrusthubsVendorIdOrDomainVendorUsersActivityGetRaw","vendorTrusthubsVendorIdOrDomainVendorUsersGetRaw","onlyAdmin","vendorTrusthubsVendorIdOrDomainVendorUsersPostRaw","vendorTrusthubsVendorTrusthubIdCurrentVendorUserDetailsGetRaw","vendorUsersVendorUserIdDocumentPermissionsGetRaw","vendorUsersVendorUserIdGetRaw","vendorUsersVendorUserIdPatchRaw","VendorTrusthubsVendorIdOrDomainAccessRequestsGetStatusesEnum","TrusthubAccessRequestApprovePayloadToJSON","trusthub_access_request","TrusthubAccessRequestApprovePayloadTrusthubAccessRequestToJSON","document_to_approve_ids","documentToApproveIds","TrusthubAccessRequestCreatePayloadToJSON","TrusthubAccessRequestCreatePayloadTrusthubAccessRequestToJSON","trusthub_vendor_user_id","trusthub_document_ids","TrusthubAccessRequestModelFromJSON","TrusthubSharedStatusFromJSON","TrusthubDocumentModelFromJSON","TrusthubAccessRequestModelFromJSONTyped","TrusthubCategoryModelFromJSON","sectionIdentifier","TrusthubCategorySectionIdentifierFromJSON","TrusthubCategoryModelFromJSONTyped","TrusthubCategorySectionIdentifierFromJSONTyped","TrusthubCompanyCreatePayloadToJSON","trusthub_company","TrusthubCompanyCreatePayloadTrusthubCompanyToJSON","relationship_owner_ids","TrusthubCompanyExtendedFromJSON","TrusthubCompanyModelFromJSONTyped","trusthubVendorUsers","TrusthubCompanyExtendedFromJSONTyped","TrusthubCompanyModelFromJSON","TrusthubCompanyStatus","TrusthubCompanyStatusFromJSONTyped","TrusthubCompanyUpdatePayloadToJSON","TrusthubCompanyUpdatePayloadTrusthubCompanyToJSON","TrusthubDocumentExtendedFromJSON","TrusthubDocumentModelFromJSONTyped","TrusthubDocumentExtendedFromJSONTyped","TrusthubDocumentModelExtraFromJSON","TrusthubDocumentModelVisibilityEnum","controlStatus","TrusthubDocumentModelExtraFromJSONTyped","TrusthubDocumentPermissionModelFromJSON","TrusthubDocumentPermissionModelFromJSONTyped","TrusthubDocumentPermissionModelStatusEnum","TrusthubInvitationCreatePayloadToJSON","TrusthubInvitationCreatePayloadTrusthubUserToJSON","vendor_trusthub_id","TrusthubInvitationModelFromJSON","TrusthubInvitationModelFromJSONTyped","TrusthubInvitationUpdatePayloadToJSON","TrusthubInvitationUpdatePayloadTrusthubUserToJSON","invitation_token","TrusthubSectionModelFromJSON","TrusthubSectionModelFromJSONTyped","TrusthubSectionUpdatePayloadToJSON","trusthub_section","TrusthubSectionUpdatePayloadTrusthubSectionToJSON","trusthub_documents_attributes","TrusthubSectionUpdatePayloadTrusthubSectionTrusthubDocumentsAttributesToJSON","_destroy","document_id","trusthub_category_id","row_order_position","TrusthubSettingsModelFromJSON","TrusthubSettingsModelFromJSONTyped","TrusthubSharedStatus","TrusthubSharedStatusFromJSONTyped","TrusthubUserModelFromJSON","TrusthubUserModelFromJSONTyped","TrusthubUserPasswordForgotPayloadToJSON","TrusthubUserPasswordForgotPayloadTrusthubUserToJSON","TrusthubUserPasswordResetPayloadToJSON","TrusthubUserPasswordResetPayloadTrusthubUserToJSON","TrusthubUserSignInPayloadToJSON","TrusthubUserSignInPayloadTrusthubUserToJSON","TrusthubUserSignUpPayloadToJSON","TrusthubUserSignUpPayloadTrusthubUserToJSON","TrusthubVendorUserActivityListFromJSON","TrusthubVendorUserActivityModelFromJSON","TrusthubVendorUserActivityListFromJSONTyped","TrusthubVendorUserActivityModelFromJSONTyped","TrusthubVendorUserCreatePayloadToJSON","trusthub_vendor_user","TrusthubVendorUserCreatePayloadTrusthubVendorUserToJSON","trusthub_company_id","TrusthubVendorUserExtendedFromJSON","TrusthubVendorUserModelFromJSONTyped","currentSignInAt","TrusthubVendorUserExtendedFromJSONTyped","TrusthubVendorUserStatus","TrusthubVendorUserStatusFromJSONTyped","TrusthubVendorUserUpdatePayloadToJSON","TrusthubVendorUserUpdatePayloadTrusthubVendorUserToJSON","AccessObject","UNKNOWN_ERROR","URL_REGEX","NOT_FOUND_INDEX","COMPLETED_TEXT","Grid","PdfOpenMode","inputFieldRef","showPassword","setShowPassword","inputAreaClasses","controlType","disableAutoComplete","strength","passwordStrengthClasses","popover","feedback","warning","webpackContext","req","webpackContextResolve","__webpack_require__","module","exports"],"sourceRoot":""}