{"version":3,"sources":["reportWebVitals.ts","components/Legal/CopyRight.tsx","components/Legal/TOS.tsx","components/Legal/PrivacyPolicy.tsx","storage/LogInPortals.ts","actions/WorkforceClinicAction.ts","storage/CompanySelection.ts","storage/AuthToken.ts","storage/UserId.ts","actions/WorkforceOneLoginActions.ts","AppState.ts","authentication/isAdminRole.ts","authentication/BuildUserAccess.ts","authentication/SelectedCompany/CompanySelectionDrivenSelectors.ts","authentication/BuildUserState.ts","config/Routes.ts","components/ActionButton.tsx","api/ApiUrl.ts","api/BuildFetchRequest.ts","reducers/Defaults/CurrentUserPermissions.ts","actions/WorkforceOnePermissionActions.ts","reducers/Workforce1User.ts","reducers/Workforce1Companies.ts","reducers/index.ts","authentication/BuildAuthRequestInterface.ts","epics/WorkforceOneUserAccess.ts","config/Constants.ts","epics/WorkforceOneUserLoginEpic.ts","epics/WorkforceOneUserPortalPermission.ts","epics/WorkforceOneUserAutoCompanySelectionEpic.ts","actions/WorkforceOnePageActions.ts","epics/WorkforceOneLoginPageReturn.ts","epics/WorkforceOneCompanySelectPageReturn.ts","epics/WorkforceOneLogOutFromPasswordReset.ts","epics/WorkforceOnePasswordResetRequest.ts","epics/WorkforceOneSSOUserLoginEpic.ts","epics/WorkforceOneSSOTokenUserLoginEpic.ts","epics/index.ts","AppStore.ts","BaseUrl.ts","configureStore.ts","api/ObservableFromFetch.ts","api/Administration/UserPasswordReset.ts","components/Accounts/ChangePassword.tsx","components/NavMenu/NavDropdownHover.tsx","authentication/hasAccessToRoute.ts","components/NavMenu/NavMenuLink.tsx","components/NavMenu/PortalCompanySearch.tsx","api/Portals/PortalCompaniesGet.ts","components/NavMenu/NavMenu.tsx","components/AppNotice/AppNotice.tsx","components/MouseDetectionLogoutTimer.tsx","components/NavMenu/SupportedBrowsers.tsx","assets/images/logo.png","components/Legal/EmailSupport.tsx","components/NavMenu/AppPageWrapper.tsx","components/TablePagination.tsx","assets/images/clear-filters.png","components/Checkbox.tsx","components/ColumnHeaderFilter.tsx","components/SearchBar.tsx","api/Randoms/LabAccountsGet.ts","api/Randoms/LabPanelsGet.ts","api/Randoms/SelectionIntervalsGet.ts","api/LabService/LabServiceRegulatoryModesGet.ts","api/Companies/GetAccountsByName.ts","components/FormattedInputs/CompanyInput.tsx","api/Randoms/PoolSave.ts","api/PrimaryIDTypes/PrimaryIDTypesGet.ts","components/LoadingIndicatorWrapper.tsx","components/Randomization/AddPoolModal.tsx","api/Randoms/PoolStatisticsDetailsGet.ts","formatters/FormatTimestampFileName.ts","api/Randoms/RandomSelectionListCsvGet.ts","api/Randoms/RandomSelectionListPrintGet.ts","api/Randoms/RandomSelectionListPrintLettersGet.ts","components/Randomization/RandomSelectionList.tsx","api/Randoms/RandomSelectionListGet.ts","api/Randoms/PoolSelectionListGet.ts","formatters/FormatError.ts","utils/handleAPIError.ts","components/Randomization/Pools/PoolSelectionRerunModal.tsx","api/Randoms/PoolSelectionActions.ts","components/ConfirmationModal.tsx","assets/images/warning.png","components/Randomization/Pools/PoolSelectionActionButtons.tsx","api/Randoms/RandomsModel/PoolCriteria.ts","components/Randomization/Pools/TestingPeriodBreakdownGrid.tsx","api/Reports/WorkforceReport.ts","formatters/FormatBase64.ts","utils/printPdf.ts","formatters/FormatDate.ts","components/FormattedInputs/BirthdayInput.tsx","components/Reports/FromToDates.tsx","components/Randomization/Pools/AuditPoolModal.tsx","components/Randomization/Pools/PoolStatistics.tsx","api/Randoms/CloseProgramInterval.ts","api/Randoms/PoolGeneralInfoGet.ts","components/Randomization/Pools/PoolGeneralInfo.tsx","components/Randomization/Pools/MissedPeriodsModal.tsx","api/Randoms/Import/MappingFieldsGet.ts","api/Randoms/Import/ImportJobCreate.ts","api/Randoms/Import/ImportJobMappingSet.ts","api/Randoms/Import/ImportJobValidate.ts","api/Randoms/Import/ImportJobStart.ts","api/Randoms/Import/ImportJobCancel.ts","api/Randoms/Import/ImportJobValidationResultGet.ts","api/Companies/AutoFilterCompaniesGet.ts","components/LoadingTableWrapper.tsx","components/Randomization/ImportErrorDetails.tsx","components/Randomization/Pools/ImportPoolMembers.tsx","api/Randoms/RunRandomSelectionMessagesGet.ts","api/Randoms/RandomSelectionRun.ts","components/Randomization/Pools/RunRandom.tsx","api/Randoms/CloseProgramIntervalGet.ts","components/Randomization/Pools/CloseProgramInterval.tsx","api/Randoms/PoolMembersGridGet.ts","components/Randomization/RandomPersonnelCheckbox.tsx","components/ColumnsCustomizeModal/Column.tsx","components/ColumnsCustomizeModal/Container.tsx","components/ColumnsCustomizeModal/ColumnsCustomizeModal.tsx","api/OrderResults/GeneralInformationGet.ts","formatters/FormatPhone.ts","formatters/FormatSSN.ts","formatters/FormatZipCode.ts","components/FormattedInputs/PhoneNumberMaskedInput.tsx","api/Location/AutoFilterLocationsGet.ts","components/FormattedInputs/StateSelect.tsx","api/OrderRequests/OrderRequestsConstraintGet.ts","api/LabService/EmployeeCategoriesGet.ts","components/OrderResults/EmployeeDetails/EmployeeRegModeModal.tsx","components/OrderResults/EmployeeDetails/SupervisorsModal.tsx","components/OrderResults/EmployeeDetails/GeneralInfo.tsx","api/PhoneType.ts","api/OrderResults/CurrentServiceDetails.ts","components/OrderResults/EventDetails/Cards/AccordionCard.tsx","formatters/FormatTime.ts","components/OrderResults/EventDetails/Cards/CardRow.tsx","api/Randoms/RandomsModel/ExcuseReason.ts","components/OrderResults/EventDetails/Cards/SchedulingCard.tsx","components/OrderResults/EventDetails/Cards/CollectionCard.tsx","components/OrderResults/EventDetails/Cards/ExamDetailCard.tsx","components/OrderResults/EventDetails/Cards/ExamResultDetailCard.tsx","components/OrderResults/EventDetails/Cards/BATAlcoholTestCard.tsx","components/OrderResults/EventDetails/Cards/BATResultCard.tsx","components/OrderResults/EventDetails/Cards/TestingCard.tsx","components/OrderResults/EventDetails/Cards/ReviewCard.tsx","components/OrderResults/EventDetails/Cards/TestScreeningCard.tsx","components/OrderResults/EventDetails/TestSteps.tsx","components/OrderResults/EmployeeDetails/CurrentService.tsx","api/OrderResults/CurrentServiceHistory.ts","components/OrderResults/EventDetails/Cards/PhoneNumberCard.tsx","components/OrderResults/EventDetails/Cards/PhoneNumbers.tsx","api/CachedCollectionTest.ts","api/Randoms/GovPerformCollection.ts","components/GovPerformCollection/RecordTemperature.tsx","components/GovPerformCollection/DonorInfo.tsx","utils/hooks.ts","api/GovPerformCollection/PanelResult.ts","components/FormattedInputs/SpecimenIdInput.tsx","components/GovPerformCollection/InputSpecimenId.tsx","components/GovPerformCollection/CollectorNotes.tsx","components/GovPerformCollection/AdditionalPanels.tsx","components/GovPerformCollection/MainPanelRow.tsx","components/GovPerformCollection/MainPanels.tsx","api/Randoms/GovGetPanels.ts","components/GovPerformCollection/Panels.tsx","components/OrderRequests/GovPerformCollection.tsx","components/OrderResults/RandomTestCard.tsx","components/OrderResults/EventDetails/DrugTestInfo.tsx","components/OrderResults/EventDetailsModal.tsx","components/OrderResults/EmployeeDetails/CurrentServiceHistory.tsx","api/OrderResults/SearchEmployesToMerge.ts","components/OrderResults/EmployeeDetails/EmployeeToMergeInfo.tsx","components/OrderResults/EmployeeDetails/EmployesToMergeGrid.tsx","components/OrderResults/EmployeeDetails/MergeEmployee.tsx","components/OrderResults/EmployeeDetailsModal.tsx","components/Randomization/PoolMembersFiltersModal.tsx","components/Randomization/QueryNameModal.tsx","components/Administration/DualListBox.tsx","components/Randomization/RegulatoryModeSelection.tsx","assets/images/delete_query.png","components/Randomization/SavedQueriesModal.tsx","components/Randomization/LocationSelection.tsx","api/Randoms/ConsortiumData.ts","components/Randomization/CompanySelection.tsx","components/Randomization/PoolMembersCriteriaModal.tsx","api/Randoms/PoolMemberProcess.ts","api/Regions/AutoFilterRegionsGet.ts","components/Randomization/Pools/PoolMembersGrid.tsx","components/Randomization/AddPoolMemberModal.tsx","components/Randomization/Pools/SelectionHistoryGrid.tsx","api/Randoms/PoolSelectionHistoryGet.ts","api/Randoms/RandomsModel/PoolSelectionHistoryRow.ts","components/Randomization/Pools/PoolHistory.tsx","components/Randomization/Pools/PoolDetailsModal.tsx","api/Randoms/PoolGridGet.ts","api/Randoms/PoolReadyToRunUpdate.ts","components/Randomization/RandomNav.tsx","components/Randomization/Pools/RunCancelNotificationModal.tsx","components/Randomization/Pools/RunCancelModal.tsx","api/Randoms/ImportPersonnelTemplate.ts","components/Randomization/RandomPools.tsx","api/Randoms/GovPoolCreate.ts","api/Randoms/GovPoolModel/DayOfWeek.ts","components/OrderRequests/DeviceSampleType.ts","components/Randomization/GovPools/WeekdaysToExclude.tsx","api/Randoms/GovGetCollectionTypes.ts","api/LabService/LabAccountsGet.ts","api/Randoms/GovDevicesGet.ts","components/OrderRequests/GovCollection.tsx","api/Randoms/GovDaysToExclude.ts","components/Randomization/GovPools/DatesToExclude.tsx","api/Randoms/GovPoolCheckTestsExist.ts","components/Randomization/GovPools/RandomSchedulingExclusionsModal.tsx","components/Randomization/GovPools/DatesToExcludeModal.tsx","components/Randomization/GovPools/AddGovPoolModal.tsx","api/Randoms/SelectionReportPrint.ts","components/Randomization/GovPools/PoolStatistics.tsx","api/Randoms/GovPoolStatisticsDetailsGet.ts","api/Randoms/GovPoolUpdate.ts","components/Randomization/GovPools/PoolGeneralInfo.tsx","components/Randomization/GovPools/PoolDetailsModal.tsx","api/Randoms/GovPoolSelectioUpdate.ts","components/Randomization/GovPools/GovPoolDateSelectedModal.tsx","api/Randoms/GovPoolSelectionGet.ts","components/Randomization/GovPools/RandomGovPools.tsx","api/Randoms/GovPoolGridGet.ts","api/Randoms/GovPoolGet.ts","api/GovDonor/GovDonorAddObservable.ts","api/GovDonor/GovDonorEditObservable.ts","components/GovDonor/EditGovDonorForm.tsx","components/GovDonor/AddGovDonorModal.tsx","components/GovDonor/IVRLogForm.tsx","api/GovDonor/IVRCallLogObservable.ts","components/GovDonor/GovDonorDetailsModal.tsx","components/GovDonor/GovDonorGrid.tsx","api/GovDonor/GovDonorGridGetObservable.ts","api/Administration/Model/ServiceType.ts","components/OrderRequests/TogglePanel.tsx","components/OrderRequests/OrderServices/SelectServiceTogglePanel.tsx","api/Administration/Model/Service.ts","api/Administration/Model/AccountService.ts","components/OrderRequests/OrderModels.ts","api/OrderRequests/OrderRequestsModel/SampleType.ts","assets/images/dot-img.png","components/OrderRequests/OrderServices/SelectService.tsx","api/LabService/TestToBePerformGet.ts","components/OrderRequests/OrderServices/SelectSampleTestType.tsx","components/OrderRequests/OrderServices/SelectSpecimenCollection.tsx","components/OrderRequests/OrderServices/SelectObserved.tsx","components/Administration/OrderDefaults.tsx","api/Administration/OrderDefaults.ts","api/Implementations/ImplementationsGet.ts","components/OrderRequests/RegulatoryModeControl.tsx","components/OrderRequests/OrderServices/SelectDrugTest.tsx","components/OrderRequests/OrderServices/SelectAlcoholTest.tsx","components/OrderRequests/OrderServices/SelectPhysicalExam.tsx","components/OrderRequests/OrderServices/SelectOHS.tsx","components/OrderRequests/OrderServices/CHS/CHSService.tsx","components/OrderRequests/OrderServices/CHS/CHSServices.tsx","components/OrderRequests/OrderServices/CHS/CHSTests.tsx","components/OrderRequests/OrderServices/SelectCHS.tsx","components/OrderRequests/ServicesSelection.tsx","components/OrderRequests/TextFormControl.tsx","api/OrderRequests/SearchDonorGet.ts","components/OrderRequests/DonorInformation.tsx","api/Location/LocationModel/CommonWealthStateTextMapping.ts","api/Location/LocationModel/CommonWealthState.ts","components/OrderRequests/CalculateDateStrings.ts","components/ExpirationDate.tsx","components/OrderRequests/Schedule.tsx","api/Location/LocationQueryGet.ts","components/SiteSearch/AddressSearch.tsx","components/SiteSearch/Filter.tsx","components/SiteSearch/SiteCard.tsx","assets/images/seal-icons_silver.png","assets/images/seal-icons_gold.png","assets/images/seal-icons_platinum.png","assets/images/seal-icons_goldplus.png","assets/images/clinic-icons_formfox-enabled.png","assets/images/clinic-icons_not-formfox-enabled.png","assets/images/clinic-icons_marketplace.png","assets/images/price-icons_3-star.png","assets/images/price-icons_4-star.png","assets/images/price-icons_5-star.png","api/Administration/OrderableServices.ts","components/SiteSearch/SiteServices.tsx","components/SiteSearch/MapContainer.tsx","api/Clinics/ClinicOptionsGet.ts","api/OrderRequests/SSOOrderRequest.ts","components/SiteSearch/SiteSearch.tsx","api/Location/LocationsListGet.ts","assets/images/shopping-cart.png","components/OrderRequests/OrderServices/OrderedServices.tsx","components/OrderRequests/OrderRequestsHeader.tsx","api/OrderRequests/OrderSubmit.ts","components/OrderRequests/PotentialDonorMatchModal.tsx","components/FormattedInputs/LocationInput.tsx","components/OrderRequests/OrderRequest.tsx","api/OrderResults/AuthForm.ts","components/OrderRequests/OrderFinish.tsx","api/OrderRequests/OrderReportPrint.ts","api/OrderRequests/SendEmail.ts","api/OrderRequests/SendMessage.ts","api/OrderResults/OrderResultsListGet.ts","api/OrderResults/ResultsWatch.ts","api/OrderResults/SearchFieldsGet.ts","api/OrderResults/CompleteTest.ts","api/OrderResults/OrderResultModel/Status.ts","components/OrderResults/CompleteModal.tsx","api/OrderResults/CompanyPoolsGet.ts","assets/images/order-expired.png","components/OrderResults/GridStatusInfo.tsx","components/OrderResults/ModalStatusInfo.tsx","api/OrderResults/GenerateCCFImage.ts","api/Administration/Model/TestType.ts","assets/images/CCF.png","assets/images/MRO.png","assets/images/OHS.png","api/OrderResults/ResultsResolve.ts","components/OrderResults/OrderTrackingCheckbox.tsx","components/OrderResults/AuthFormModal.tsx","api/OrderRequests/OrderCancel.ts","api/OrderRequests/OrderUpdate.ts","components/ProcessingModal.tsx","components/sso/SiteSearchPage.tsx","components/OrderResults/OrderEditModal.tsx","api/Vendor/CollectionSiteInfoGet.ts","api/OrderResults/SendClinicSelectLink.ts","components/OrderResults/SendSelectClinicLink.tsx","assets/images/alert.png","assets/images/alert-resolved.png","components/OrderResults/EventDetails/DrugTestCompare.tsx","components/OrderResults/EventDetailsCompare.tsx","components/OrderResults/SearchTestToMerge.tsx","components/OrderResults/PrintFormModal.tsx","api/OrderResults/TestToMergeGet.ts","components/OrderResults/ReasonForTestCell.tsx","utils/exportCsv.ts","components/OrderResults/ExportCSVModal.tsx","components/OrderResults/WatchCell.tsx","assets/images/watch.png","assets/images/watch-resolved.png","components/HorizontalScrollWrapper.tsx","components/OrderResults/FormFoxTestANColumn.tsx","components/OrderResults/OrderTracking.tsx","components/SiteSearch/SiteSearchPage.tsx","components/Secuirty/ForgotPassword.tsx","components/NavMenu/LoginNavMenu.tsx","components/Notification/NotificationCard.tsx","components/Notification/NotificationPanel.tsx","api/Notifications/CustomerNotificationsGet.ts","authentication/Workforce1Login.tsx","components/PageLoading.tsx","config/Identity.ts","authentication/AuthService.ts","authentication/SSOWorkforce1Login.tsx","components/Administration/ClinicSearchOptions/ForcePrimaryClinicOptions.tsx","components/Draggable/DraggableItem.tsx","components/Draggable/DroppableContainer.tsx","components/Administration/ClinicSearchOptions/AdditionalOptions.tsx","components/Administration/ClinicSearchOptions/DefaultOptions.tsx","components/Administration/ClinicSearchOptions/OwnedPrimarySites.tsx","components/Administration/ClinicSearchOptions/ListOptions.tsx","components/FormattedInputs/ToggleSwitch.tsx","components/Administration/ClinicSearchOptions/ExcludeClinicGroup/FFClinicGroupRow.tsx","components/Administration/ClinicSearchOptions/ExcludeClinicGroup/ClinicGroupsFFModal.tsx","api/Clinics/ClinicGroupsGet.ts","components/Administration/ClinicSearchOptions/ExcludeClinicGroup/ExcludeClinicGroupRow.tsx","components/Administration/ClinicSearchOptions/ExcludeClinicGroup/ExcludeClinicGroupTable.tsx","components/Administration/ClinicSearchOptions/ExcludeClinicGroup/ExcludeClinicGroup.tsx","components/Administration/ClinicSearchOptions.tsx","components/Companies/CompanySelection.tsx","api/Randoms/RandomPersonnelListGet.ts","api/Randoms/RandomPersonnelRemove.ts","components/Randomization/AdvancedFiltersModal.tsx","api/Randoms/RandomPersonnelAdd.ts","components/EmploymentDetails.tsx","components/Randomization/AddIndividualModal.tsx","api/Randoms/Import/ImportJobCreateAndPerform.ts","components/Randomization/ImportErrorDetailsModal.tsx","components/Randomization/ConsortiumMembershipModal.tsx","components/Randomization/RandomPersonnelGrid.tsx","api/Randoms/RandomPersonnelSearchFieldsGet.ts","assets/images/download-csv.png","api/Randoms/SelectionInboxGrid.ts","api/Randoms/EventExcuse.ts","components/Randomization/ExcuseEventModal.tsx","components/Randomization/UnexcuseEventModal.tsx","api/Randoms/SelectionInboxPending.ts","components/Randomization/SelectionInbox.tsx","api/Administration/UserInformationGet.ts","api/Administration/UserNotificationInfoUpdate.ts","api/Administration/CreateUser.ts","api/Administration/UserRevoke.ts","api/Roles/RoleOrderSecurityCheck.ts","components/Administration/Notification/NotificationOptions.tsx","components/Administration/Notification/NotificationEventSelection.tsx","api/Notifications/NotificationDetailGet.ts","components/Administration/Notification/NotificationMethodSelection.tsx","components/Administration/Notification/NotificationServiceSelection.tsx","components/Administration/Notification/NotificationSelection.tsx","components/Administration/AdditionalAssociatedDataModal.tsx","components/CheckboxList.tsx","components/Administration/AdditionalRoleModal.tsx","api/Roles/GetAdditionalRole.ts","api/Administration/OrderSecurityOverrideUpdate.ts","components/Administration/SetDatePeriod.tsx","components/Administration/OrderSecurityOverride.tsx","api/Administration/OrderSecurityOverrideGet.ts","components/Administration/UserInfo.tsx","api/Administration/TimeZoneListGet.ts","api/Roles/UserRolesGet.ts","api/Invitation/CheckExistingUser.ts","api/Administration/ResetLoginAttempts.ts","api/Administration/RemoveDuplicateRoles.ts","api/Administration/DeleteUser.ts","components/Accounts/MyInformation.tsx","api/Administration/GetUserDetails.ts","api/Invitation/Model/InvitationStatus.ts","components/Invitation/CSVUploadModal.tsx","api/Invitation/InvitationCreate.ts","components/Administration/UserProfileStatuses.tsx","components/Administration/UserDetailsGrid.tsx","api/Administration/ActivationProcess.ts","components/Administration/UserActivation.tsx","api/Administration/GetRegulatoryModeDonorByID.ts","api/Administration/InsertRegulatoryModeDonor.ts","components/Administration/EntityActivation.tsx","components/Accounts/RegulatoryMode/PersonnelRegulatoryModes.tsx","components/Accounts/RegulatoryMode/RegulatoryModeNumberSelect.tsx","components/Accounts/RegulatoryMode/RegulatoryModeForm.tsx","api/Invitation/InformationGet.ts","components/Administration/CompanyActivation.tsx","components/Administration/PortalActivation.tsx","api/BusinessTypes/BusinessTypesGet.ts","api/Companies/CompanyInactivate.ts","api/Companies/CompanyUpdate.ts","api/Companies/CompaniesGet.ts","components/FormattedInputs/AddressInput.tsx","components/AddressMatchModal.tsx","components/Invitation/OrderSecurity.tsx","api/Roles/RoleOrderSecurityProcess.ts","api/LabService/LabAccountCreate.ts","components/Invitation/LabAccountSelection.tsx","api/Administration/LabAccountListGet.ts","api/Administration/ActivateAndInActiveLabAccount.ts","components/Administration/LabAccountSelection.tsx","api/Administration/GetSubscriptionPlans.ts","components/Administration/SubscriptionModal.tsx","api/Portals/AutoFilterPortalsGet.ts","api/Portals/PortalsGet.ts","api/Portals/PortalUpdate.ts","api/Portals/PortalInactivate.ts","api/Administration/GetAllImplementationImageByImplementationID.ts","api/Administration/UpdateBrandingImage.ts","components/Administration/EditActiveImageDate.tsx","api/Invitation/PortalLogoInsert.ts","components/Administration/ManageImages.tsx","api/Administration/CompanyImport/ImportJobCreate.ts","api/Administration/CompanyImport/ImportJobValidate.ts","api/Administration/CompanyImport/ImportJobStart.ts","api/Administration/CompanyImport/ImportJobCancel.ts","components/Administration/CompanyImport.tsx","components/Invitation/Portal/PortalFields.tsx","api/Location/LocationUpdate.ts","api/Location/LocationCreate.ts","components/Administration/AddLocationModal.tsx","components/Administration/LocationInformationForm.tsx","api/Location/LocationsGet.ts","api/Location/CheckLocation.ts","components/Administration/EditLocationInformation.tsx","components/Administration/DeviceModal.tsx","components/Administration/DeviceSelection.tsx","components/Administration/LocationImport.tsx","api/Administration/AdditionalTests.ts","components/Administration/CompanyInformation/AdditionalTesting.tsx","components/Administration/CompanyInformation.tsx","components/Administration/LocationInformation.tsx","components/Administration/MyOrganization.tsx","api/OrphanedResults/OrphanedProcess.ts","components/OrphanedResults/DonorNotFoundError/DonorIdsCell.tsx","components/OrphanedResults/DonorNotFoundError/DonorRow.tsx","api/OrphanedResults/Models/NoMatchingErrorType.ts","api/OrphanedResults/ResultExceptionsProcess.ts","components/OrphanedResults/DonorNotFoundError/DonorGrid.tsx","components/OrphanedResults/PendingDrugTests/PendingDrugTestRow.tsx","components/LoadingTableBodyWrapper.tsx","components/OrphanedResults/PendingDrugTests/PendingDrugTests.tsx","components/OrphanedResults/PendingDrugTests/PendingDrugTestsButtons.tsx","api/OrphanedResults/Models/ImportExceptionSubType.ts","components/OrphanedResults/DonorNotFoundError/DonorNotFoundError.tsx","components/OrphanedResults/NoMatchingRandomError/NoMatchingRandomError.tsx","components/OrphanedResults/PendingClinicalTests/PendingClinicalTestRow.tsx","components/OrphanedResults/PendingClinicalTests/PendingClinicalTests.tsx","components/OrphanedResults/PendingClinicalTests/PendingClinicalTestsButtons.tsx","components/OrphanedResults/NoMatchingTestError/NoMatchingTestError.tsx","components/OrphanedResults/AccountNotFoundError/AccountNotFoundError.tsx","components/OrphanedResults/OrphanedResults.tsx","api/InvitationStatus/InvitationStatusListGet.ts","api/InvitationStatus/ResendInvitation.ts","api/InvitationStatus/DeleteInvitation.ts","components/InvitationStatus/ResendInvitationModal.tsx","components/Invitation/AdminSetupModal.tsx","components/InvitationStatus/InvitationStatusGrid.tsx","api/Administration/GlobalParameter.ts","api/Administration/ParameterType.ts","components/Administration/ParameterTypeModal.tsx","components/Administration/GlobalParameter.tsx","components/Administration/OrderableServicesModal.tsx","api/Administration/Model/ComapnyUserCode.ts","api/Administration/CompanyUserCodes.ts","components/Administration/CompanyUserCodeModal.tsx","components/Administration/UserCodesModal.tsx","api/Administration/ImplementationAliasFields.ts","api/Administration/ImplementationUserLabels.ts","components/Administration/UserLabelsModal.tsx","api/Administration/Model/ImplementationUserLabels.ts","api/Implementations/ImplementationLabResultsReporting.ts","api/Companies/AccountLabResultsReporting.ts","components/Administration/LabResultsReportingModal.tsx","api/Invitation/Model/InvitationType.ts","api/Invitation/GetOneTimePIN.ts","components/Invitation/CalculatePasswordScore.ts","components/Invitation/ValidatePIN.tsx","api/Invitation/ValidateOneTimePIN.ts","api/Invitation/GetInvitationStatus.ts","components/Invitation/ValidateIdentity.tsx","components/Invitation/SetupComplete.tsx","assets/images/img_status_exceed.png","assets/images/img_status_pass.png","assets/images/img_status_warn.png","assets/images/img_status_fail.png","api/Invitation/PasswordSet.ts","components/Invitation/InvitationProcess.tsx","components/Invitation/SetPassword.tsx","api/Invitation/CheckInactiveURL.ts","components/Secuirty/InvalidPasswordReset.tsx","api/Secuirty/UpdatedUserPasswordToken.ts","components/Secuirty/RequestPhonePin.tsx","components/Secuirty/NoPin.tsx","components/Secuirty/EnterPhonePin.tsx","components/Secuirty/CalculatePasswordScore.ts","components/Secuirty/PasswordInputs/PasswordCheckStatusImage.tsx","components/Secuirty/PasswordInputs/PasswordDeductions.tsx","components/Secuirty/PasswordInputs/PasswordScoreAdditions.tsx","components/Secuirty/PasswordInputs/NewPassword.tsx","api/Secuirty/UpdateUserPassword.ts","components/Secuirty/PasswordResetLanding.tsx","api/Administration/Permissions.ts","api/Administration/SubscriptionPlanCreate.ts","components/Administration/RolesPermissions/PermissionsSubscriptionModal.tsx","components/Administration/DualTableBox.tsx","components/Administration/Permissions.tsx","components/Administration/RolesPermissions/ApproveNewPermissionsModal.tsx","components/Administration/RolesPermissions/PermissionsRoleModal.tsx","components/Administration/RolesPermissions/ApproveRolePermissionsModal.tsx","components/Administration/RolesPermissions/ApproveSubscriptionRelationshipsModal.tsx","components/ProtectedRoute.tsx","authentication/GetUserDefaultRoute.ts","components/OrderRequests/GovOrderedService.tsx","formatters/FormatGender.ts","components/OrderRequests/GovOrderDonorInfo.tsx","components/OrderRequests/GovOrderRequest.tsx","components/sso/GetAuthFormPage.tsx","authentication/SSOCallback.tsx","api/GovReports/OnTrackReport.ts","api/GovReports/GovReportsObservable.ts","components/Reports/ReportParameters.tsx","components/Invitation/Portal/AddNewAdminModal.tsx","components/Invitation/Portal/PortalGrid.tsx","api/Invitation/Portal/PortalGridGetObservable.ts","components/Invitation/Portal/AddNewPortal.tsx","components/FormattedInputs/AccountInput.tsx","api/Reports/DriverCertificationReportGet.ts","components/Reports/WorkforceReportParameters.tsx","api/Reports/SummaryReportGet.ts","components/Reports/SummaryReport/IncludeArchivedOrders.tsx","components/Reports/SummaryReport/SummaryReport.tsx","components/Companies/PortalSelectionModal.tsx","components/Invitation/AddNewCompany.tsx","components/Invitation/RequireCompleteSetupModal.tsx","api/Logging/LogErrorToServer.ts","api/Administration/SendingFacilities.ts","api/Reports/UnmergedRandomResultsReport/DateType.ts","components/Administration/SendingFacilityModal.tsx","components/Administration/SendingFacilityPage.tsx","components/Randomization/ConsortiumPools.tsx","components/Randomization/ConsortiumPersonnel.tsx","components/Reports/PositiveReport.tsx","components/Reports/UnmergedRandomResultsReport/DateTypeSelection.tsx","components/Reports/UnmergedRandomResultsReport/UnmergedRandomResultsReport.tsx","api/Reports/UnmergedRandomResultsReportGet.ts","App.tsx","index.tsx"],"names":["reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","CopyRight","state","buildVersion","packageJson","version","fetch","response","json","build","setState","Date","getFullYear","location","host","includes","this","Component","TOS","className","href","target","PrivacyPolicy","SetLoginPortals","Clinics","sessionStorage","setItem","JSON","stringify","setOrphanedResultsCount","orphanedResultsCount","toString","window","dispatchEvent","Event","getOrphanedResultsCount","getItem","result","parseInt","isNaN","COMPANY_SELECTED","COMPANY_UPDATED","CLINIC_LIST_UPDATED","ALLOW_COMPANY_SELECTION","SelectCompany","participationId","logInLink","company","loginLink","type","payload","Link","GetAuthToken","ClearAuth","localStorage","removeItem","clear","SetSSOToken","token","GetSSOToken","v","SetSiteSearchMode","SetEmbeddedOrderMode","SiteSearchModeEnabled","GetSSOAction","GetUserId","userIdText","userIdNumber","USER_LOGIN","SSO_USER_LOGIN","SSO_TOKEN_USER_LOGIN","doNotTrustClientIps","USER_LOGGED_IN","WorkforceOneUserHasLoggedIn","webToken","userId","ssoToken","loginDetail","id","console","log","toast","success","Portal","Clinic","AuthToken","UserId","USER_LOGGED_IN_FAILED","WorkforceOneUserLoginFailed","message","error","USER_LOGGED_IN_WRONG_URL","USER_LOGGED_OUT","WorkforceOneUserLogOut","skipRedirect","USER_P_RESET","SiteAdminRole","CompanyRole","PortalAdmin","LocationAdmin","NoAdminRole","isAdminRole","roleSearchFor","Workforce1State","role","isSiteAdmin","isCompanyAdmin","isPortalAdmin","isLocationAdmin","isUser","defaultMenuSetting","authenticated","canShowNotification","canShowOrphanedResults","canShowRolePermissionSubscription","superUser","canManageTeam","canViewOrder","canViewSiteSearch","canViewOrderTrackingGrid","canViewPersonnel","canEditPersonnel","canManagePools","canManagePersonnel","canManageSelectionInbox","canShowInvitationStatus","canInviteClientUser","canCreateClient","canManageClient","canShowPortal","canSearchDefaults","CanManageGovPools","CanManageConsortiumPools","CanManageGovDonors","CanOrderGovServices","canCompleteEvents","canVieweCCFCopy2PreMRO","canViewMISReports","canEditPendingOrders","canMergeTests","BuildUserAccess","menuSetting","isLoggedIn","currentUserPermissions","perm","CanShowNotification","CanShowPortal","currentCompanyPermissions","CanViewOrder","CanViewSiteSearch","CanViewOrderTrackingGrid","CanViewPersonnel","CanEditPersonnel","CanManagePools","CanManagePersonnel","CanManageSelectionInbox","CanShowInvitationStatus","CanInviteClientUser","CanCreateClient","CanManageClient","CanShowRolePermissionSubscription","CanManageOrphanResults","CanSearchDefaults","CanCompleteEvents","CanVieweCCFCopy2PreMRO","CanViewMISReports","CanEditPendingOrders","CanMergeTests","isSiteAdminVal","isCompAdminVal","isPortalAdminVal","isLocationAdminVal","GetSelectedAssignedClinic","companyIdToSearchFor","selectedCompany","clinicFound","Workforce1Companies","visibleCompanies","portal","AssignedClientDetailsOfClinic","clinic","ParticipationID","GetSelectedPortal","find","item","undefined","noUserNameFound","getUserNameForSelectedCompany","clinicPicked","UserName","RoleIdForSelectedCompany","RoleID","SelectedCompanyName","Name","SelectedAccountName","assignedClinic","LocationID","LocationName","CompareAccounts","a","b","localeCompare","SelectedPortalName","ImplementationName","getLoggedInUserName","userName","BuildUserState","selectedPortal","Home","SSOHome","OrderRoute","OrderFinishRoute","SiteSearchRoute","SiteSearchOptionsRoute","OrdersRoute","GovDonorRoute","RandomsRoute","RandomsGovRoute","ConsortiumsRoute","GovOrderRoute","RandomsPersonnelRoute","ConsortiumPersonnelRoute","SelectionInboxRoute","OurTeamStatusRoute","MyInformationRoute","MyOrganizationRoute","BaseAdministrationRoute","MyOrganizationNameRoute","AddNewPortalRoute","PortalDetailsRoute","name","PortalAdministrationRoute","CompanyInformationRoute","CompanyInformationNameRoute","CompanyDetailsRoute","AddNewCompanyRoute","AddNewCompanyNameRoute","AddCompanyForPortalRoute","LocationInformationRoute","ActivateUserRoute","ActivateCompanyRoute","ActivatePortalRoute","GlobalParameterRoute","OrderableServicesRoute","UserCodesRoute","UserLabelsRoute","RegulatoryModeRoute","OrphanedResultsRoute","PermissionsRoute","InviteStatusRoute","SSOOrderRoute","SSOOrderFinishRoute","SSOSiteSearchRoute","ReportPositiveRoute","SSOGetAuthFormRoute","ReportTestingSummaryRoute","ReportSpecimenPositivityRoute","ReportDrugDetailRoute","ReportDailySummaryRoute","ReportIvrCallInComplianceRoute","ReportNoShowRoute","ReportCertificationRenewalRoute","ReportCertificationStatusRoute","ReportManagementSummaryRoute","ReportMISRoute","ReportSelectedNotTestedRoute","ReportSummaryRoute","ReportUnmergedRandomResultsRoute","ConfigureOrderDefaultsRoute","SendingFacilityRoute","LabResultsReportingRoute","ActionButton","props","spin","disableOnSpin","disabled","children","buttonProps","actualDisabled","actualClassName","Button","Spinner","animation","size","variant","React","ApiHostName","baseDomain","hostname","firstDotIndex","indexOf","domain","substring","protocol","port","ApiUrl","ApiRootUrl","FullBaseUrl","origin","PortalSource","BuildFetchRequest","body","method","authDetails","api_version","Agent","IsMarketPlace","auth_token","credentials","headers","Headers","defaultCurrentUserPermissions","COMPANY_PERMISSION","USER_PERMISSION_CHANGED","WorkforcePermissionChanged","userPermissionData","userPermission","getCleanUserState","isLoading","loadedSelectedCompanyPermission","requireCompleteSetup","showCompanySelection","Workforce1User","action","loginResultMessage","Message","loadingCompany","link","companyPermission","createRootReducer","history","combineReducers","router","connectRouter","BuildAuthRequestFromAppState","StorageKey","EventType","ClinicStatus","ScheduleStatus","AccountType","WorkforceOneUserAccess","action$","states$","pipe","ofType","mergeMap","value","loginDetailFromAction","fromFetch","switchMap","ok","Promise","resolve","map","data","WorkforceOneUserLoginEpic","state$","catchError","err","UserLoginID","ImportCSVMaxFileSize","MaxImageFileSize","MaxFileNameLength","EmailRegexp","PhoneRegexp","NameRegexp","CompanyNameRegexp","MaxDonorIdLength","InvalidDonorIdLength","DonorIdRegexp","InvalidDonorId","SiteDomain","ProtectedSites","ReCaptchaSiteKey","IpifyUrl","InvalidNameMessage","DisabledDefaultOrderableService","ImplementationTypeGovt","MaxDateMonthly","defaultCompanyPerms","CanShowClinicAdminSetup","CanShowInvitation","CanShowClientInvitationStatus","CanShowUserInvitationStatus","CanViewTracking","CanViewCompleted","CanCreateInstance","CanViewRandomTesting","CanManageClientUser","CanManageInstanceUser","CanManageServiceEvent","CanViewOrderSummary","CanUploadImages","CanViewAddressAlert","CanGroupInclude","MapApiResponseToAction","apiResponse","logoImage","LogoImage","implementationType","ImplementationType","OrphanedResultsCount","processResponseData","responseModel","adminRoleType","IsClinic","IsClient","IsSiteAdmin","IsLocation","companyResponse","UserAccessViewModel","WorkforceOneUserCompanyPermissionChange","WorkforceOneUserPortalPermission","EMPTY","Status","Completed","ClinicConfigured","UserConfigured","ClientConfigured","of","WorkforceOneUserAutoCompanySelectionEpic","selectedLoggedInUser","length","allCompanies","companies","filter","showSelection","PAGE_LOADED","WorkforceOneLoginPageReturn","loginToken","loginId","portalsInformation","storageForPortals","parse","GetLoginPortals","loginPayload","WorkforceOneCompanySelectPageReturn","companySelection","WorkforceOneLogOutFromPasswordReset","WorkforceOnePasswordResetRequest","WorkforceOneSSOUserLoginEpic","RequestToken","WorkforceOneSSOTokenUserLoginEpic","rootEpic","combineEpics","ForceReload","baseUrl","getBaseUrl","store","initialState","epicMiddleware","createEpicMiddleware","middleware","routerMiddleware","enhancers","windowIfDefined","__REDUX_DEVTOOLS_EXTENSION__","push","createStore","compose","applyMiddleware","run","configureStore","createBrowserHistory","basename","LogOut","dispatch","HttpStatusCode","APIError","errorData","Error","ObservableFromFetch","url","Observable","observer","controller","AbortController","init","signal","text","statusText","status","UNAUTHORIZED","code","next","complete","catch","abort","UserPasswordReset","email","isForgot","requestBody","InvitationLink","IsForgotPassword","ChangePasswordModal","emptyState","loginName","isEmailValid","dataSaving","userPasswordResetSubscription","handleAPIError","handleCancel","onCancel","handleSubmit","unsubscribe","subscribe","onSubmit","test","handleEmailChange","LoginName","Modal","backdrop","dialogClassName","show","Header","Title","Body","Form","Container","fluid","Row","Col","Control","maxLength","onChange","e","Footer","onClick","NavDropdownHover","isOpen","handleOpen","handleClose","NavDropdown","title","alignRight","onMouseEnter","onMouseLeave","HasAccessToRoute","route","userAccess","userState","ssoRoutes","isSiteSearchMode","isGetAuthFormMode","isLocation","IsOnTrack","NavMenuLink","Nav","NavMenuLinkWithNumber","count","style","color","PortalCompanySearch","loading","companies$","companiesSubscription","companyRef","createRef","current","query","locationsOnly","accountID","Subject","debounceTime","distinctUntilChanged","params","trim","concat","AccountID","toLowerCase","o","switchCompany","showCompaniesSearch","showLocations","some","emptyLabel","placeholder","labelKey","minLength","maxResults","paginate","useCache","inputProps","autoComplete","onBlur","clearResult","onSearch","searchCompanies","selected","options","positionFixed","ref","option","NavMenu","showChangePassword","buildUrl","dropMenuItem","bypassPermissionsCheck","key","Item","dropMenu","items","menuItems","i","render","onStorageChanged","selectCompany","routeToHome","performChangePassword","logoutClick","hideChangePassword","showChangePasswordClick","hash","logout","addEventListener","removeEventListener","Navbar","bg","expand","Toggle","Collapse","isShowPortals","getPortalsMenu","Text","portalItems","sort","reduce","acc","portalIndex","portalItem","parentCompany","assignedClinics","parentCompanyItem","Fragment","clinicItems","permissions","portals","ConnectedNavMenu","connect","companyLink","AppNotice","configure","sixtyMinutesInMilliSeconds","MouseDetectionLogoutTimer","mouseMoveTimeOut","timerRanOut","loggedIn","logOut","mouseMoved","clearTimeout","setTimeout","onMouseMove","connector","ChromeBrowser","browserFound","navigator","userAgent","appVersion","chrome","opera","detectBrowser","SupportedBrowsers","browserClass","src","ChromeImage","alt","width","EmailSupport","AppPageWrapper","logoSrc","portalImage","encodeURI","getPortalLogoImageSrc","embedingMode","showNav","hideLogo","lg","span","order","showSupportedBrowsers","FIRST","PREVIOUS","NEXT","LAST","TablePagination","pageChanged","page","innerText","pageNumber","pages","getPaginationItem","label","active","Pagination","getPagination","startIndex","endIndex","currentPageNumber","displayCount","Math","ceil","min","Checkbox","Check","FilterItem","checked","ColumnHeaderFilter","open","searchText","nameInput","toggleElement","listElement","toggleDialog","closeDialog","changeTextFilter","checkboxChange","index","findIndex","String","prevState","newItems","slice","every","forceUpdateGrid","getFilteredItems","setFilter","filtered","onFilter","handleSort","onSort","rowRenderer","resetFilterItems","prevProps","arraysEqual","a1","a2","a1Sorted","a2Sorted","filteredItems","checkedValues","checkAll","itemValueLabels","unshift","uppercase","hidden","Overlay","container","placement","rootClose","onHide","popperConfig","modifiers","offset","offsetLeft","offsetTop","arrowProps","popper","clearFilter","clearFilters","height","autoFocus","tabIndex","input","focus","rowCount","rowHeight","defaultProps","SearchBar","selectedField","defaultField","setSearchField","field","handleSearchTextChange","formatValue","ID","handleKeyDown","resetSearch","allowBlank","searchFields","searchAllowed","searchField","InputGroup","Prepend","Dropdown","Menu","as","eventKey","onKeyDown","Append","resetButton","md","LabAccountListGetObservable","DOT","RegionID","SearchBy","SearchFor","LabPanelsGetObservable","labAccount","vendorID","IsDOT","IsPoct","LabAccountNumber","VendorID","SelectionIntervalsGetObservable","LabServiceRegulatoryModesGetObservable","isDOT","GetAccountsByNameObservable","showInactive","accountType","Company","request","AccountTypeID","Limit","ImplementationGroupID","ShowInactive","GetAllAccountsByNameObservable","CompanyInput","companyAsyncTypeahead","companyTypeahead","subscription","defaultCompanyName","defaultValue","getCompanyName","subcribeCompanies","onInputChange","pathname","participation","p","c","filteredCompanies","allowedCompanies","Array","isArray","merged","forceEdit","filterBy","toggleMenu","withRouter","PoolUpdateObservable","IsConsortium","RegulatoryModeID","SelectionInterval","DrugTarget","DrugSampleSize","AlcoholTarget","AlcoholSampleSize","ProviderMappingID","PanelID","PoolCalculationType","FixedOrRate","Code","PoolID","PoolName","UseFileImportForPoolMembership","DateFrom","format","parseISO","ProgramIntervalStartDate","DateTo","ProgramIntervalEndDate","PrimaryIDType","IncludeCompaniesWithNoSelections","PanelCode","RegulatoryModes","RunOnlyByPortalAdmin","PoolCreateObservable","PrimaryIDTypesGetObservable","PoolPrimaryIDTypesGetObservable","LoadingIndicatorWrapper","AddPoolModal","companiesLoading","regulatoryModesLoading","selectionIntervalsLoading","labAccountLoading","panelsLoading","primaryIDTypesLoading","poolName","poolNameValid","poolID","federallyRegulated","regulatoryModeId","selectionInterval","calcType","drugPoolSize","alcoholPoolSize","panelID","useFileImportForPoolMembership","primaryIDType","saving","currentCompany","includeCompaniesWithNoSelections","panelCode","panelCodeValid","selectedRegulatoryModes","availableToSelectRegModes","regulatoryModesSubscription","intervalsSubscription","labAccountsSubscription","primaryIDTypesSubscription","account$","labAccountSubscription","saveSubscription","checkPoolSize","handlePoolNameChange","event","handlePanelCodeChange","handlePoolIDChange","handleFederallyRegulatedChange","regulatoryModes","handleIntervalChange","handleCalcTypeChange","handleDrugChange","drug","handleAlcoholChange","alcohol","handleLabChange","labPanels","currentAccount","labAccounts","account","LabAccount","handlePanelChange","handlePoolMembershipTypeChange","handlePrimaryIDTypeChange","isValid","performSave","pool","IsNonDOT","AccountId","PoolCode","Number","onSuccess","onRegulatoryModeChange","selectedRegModes","availableRegModes","is_selected","availRegMode","j","selectedRegMode","handleRunOnlyByCompanyAdminChange","handleRunOnlyByPortalAdminChange","selectionIntervals","primaryIDTypes","LabClientMemberId","isOnTrack","availableRegulatoryModes","regulatoryModeDisabled","runOnlyByPortalAdmin","calcTypeMark","primaryIdType","companyName","centered","closeButton","Label","column","sm","htmlFor","isInvalid","Feedback","multiple","interval","Description","labPanel","xs","ConnectedAddPoolModal","companyAdmin","PoolStatisticsDetailsGetObservable","poolId","companyId","URLSearchParams","FormatTimestampFileName","subject","extension","date","getMonth","getDate","getHours","getMinutes","getSeconds","join","RandomSelectionListCsvGetObservable","poolSelectionId","accountId","Extra","PageSize","PoolMembersID","PoolSelectionID","ProfileAccountTypeID","RandomSelectionListPrintGetObservable","ClientDetails","GetRandomSelectionList","ProfileAccountID","RandomSelectionListPrintLettersGetObservable","CompanyID","SpecificAccount","RandomSelectionList","loadingCsv","loadingPrint","loadingPrintLetter","listSubscription","csvSubscription","printSubscription","printLetterSubscription","handleExportClick","RandomSelectionListCsvGet","poolSelection","export","csv","csvData","Blob","FileSaver","saveAs","handlePrintClick","RandomSelectionListPrintGet","print","base64pdf","pdfWindow","document","write","handlePrintLettersClick","RandomSelectionListPrintLettersGet","row","TestFor","TimePeriod","Table","responsive","colSpan","DonorSelectedAt","TestCompletedAt","PoolSelectionListGetObservable","pageSize","PageNumber","FormatError","PoolSelectionRerunModal","onRefresh","useState","running","setRunning","statistic","setStatistic","loadingStatistic","setLoadingStatistic","actualToSelectDrug","setActualToSelectDrug","actualToSelectAlcohol","setActualToSelectAlcohol","alternateDrug","setAlternateDrug","alternateAlcohol","setAlternateAlcohol","useEffect","subs","finalize","DrugRequired","AlcoholRequired","validateSizeValue","CurrentPoolSize","isActualToSelectDrugValid","isAlternateDrugValid","isActualToSelectAlcoholValid","isAlternateAlcoholValid","GenerateAlternates","Period","xl","replace","RequiredDrug","RequiredAlcohol","AlternateDrug","AlternateAlcohol","ExtraDrug","ExtraAlcohol","PoolSelectionRerunObservable","ConfirmationModal","showImage","textTitle","cancelButtonText","confirmButtonText","disableConfirmButton","spinConfirmButton","disableConfirmOnSpin","showCancelButton","showCloseButton","onConfirm","whiteSpace","PoolSelectionActionButtons","FilterDataModule","FilterCriteriaCode","FilterSaveResult","canceling","setCanceling","showCancelConfirmation","setShowCancelConfirmation","showRerunModal","setShowRerunModal","IsActive","PoolSelectionCancelObservable","TestingPeriodBreakdownGrid","selectionListModal","page$","BehaviorSubject","pageSubscription","convertDate","renderRows","Records","showRandomSelectionLink","showSelectionList","PoolSize","SelectionDate","DrugSelected","AlcoholSelected","DrugExtra","AlcoholExtra","DrugCompleted","AlcoholCompleted","hideSelectionList","PoolSelectionListGet","newState","Pages","EmptyPoolCriteria","ImplementationID","FilterModuleID","RandomModule","FilterDataID","SaveAs","ForceOverride","IsFilter","SaveResultCode","SuccessfullySaved","SaveResultText","Items","EmptyPoolCriteriaItem","FilterCriteriaID","FilterCriteriaName","Values","CopyFilterDataName","CopyFilterDataNames","GetPoolCriteriaItemByCode","criteria","add","newItem","GetCompanyPoolCriteriaItem","GetRegulatoryModePoolCriteriaItem","RegulatoryMode","GetPoolCriteriaItemStringValues","val","StringValue","GetFilterDataNameIndexByID","filterDataId","CreateEmptyPoolCriteria","FilterDataToPoolCriteria","filterData","skipCompany","filterDataItem","poolCriteriaItem","FilterDataItemToPoolCriteriaItem","poolCriteriaValue","FilterDataValueToPoolCriteriaValue","IntValue","StringValue2","StringValue3","BoolValue","CopyPoolCriteriaValue","CopyPoolCriteriaItem","CopyPoolCriteriaValues","CopyPoolCriteria","CopyPoolCriteriaItems","GetPoolCriteria","SavePoolCriteria","poolCriteria","GetSavedQuery","filterDataID","DeleteSavedQuery","SaveQueryAs","WorkforceReportType","getWorkforceReport","report","CertificationRenewal","CertificationStatus","ManagementSummary","MIS","SelectedNotTested","Summary","ManagementSummaryReportGenerate","parameters","MISReportGenerate","ExcusedReportGenerate","SelectedNotTestedReportGenerate","PositiveReportExport","FormatData","byteCharacters","atob","byteNumbers","k","charCodeAt","Uint8Array","printPdf","fileData","fileURL","URL","createObjectURL","showPdf","FormatDate","delimiter","BirthdayInput","mask","required","MaskedInput","FromToDates","onFromSelect","onChangeFrom","onToSelect","onChangeTo","from","to","showMonthDropdown","showYearDropdown","dropdownMode","enableTabLoop","minDate","maxDate","customInput","AuditPoolModal","onClose","generating","setGenerating","setFrom","setTo","includeAllDates","setIncludeAllDates","handleCancelClick","inline","AllDates","maintainAspectRatio","layout","padding","right","legend","position","labels","usePointStyle","boxWidth","fontSize","plugins","datalabels","display","scales","yAxes","ticks","xAxes","defaults","global","defaultFontFamily","defaultFontColor","PoolStatistics","statisticsLoading","criteriaLoading","showAuditPoolOptions","subscriptions","Subscription","company$","onCompanySelect","runExcusedReport","PoolStatisticsDetailsGet","statistics","isConsortium","CompanyName","CompanyCode","dataDrug","TotalTestsRequiredDrug","TotalTestsCompletedDrug","TotalTestsPendingDrug","dataAlco","TotalTestsRequiredAlcohol","TotalTestsCompletedAlcohol","TotalTestsPendingAlcohol","datasets","backgroundColor","borderColor","borderWidth","align","anchor","barPercentage","categoryPercentage","allowExcusedReport","allowAuditReport","TargetDrug","RateOrFixed","TargetAlcohol","AveragePoolSize","CloseProgramIntervalObservable","PoolGeneralInfoGetObservable","SetMissingPeriods","PoolVariant","MissedPeriodsModal","MakeUp","TotalCompletedDrug","TotalCompletedAlcohol","stateChanges","handleSelect","onSave","PoolProgramID","details","changeInput","fieldName","enteredValue","disable","inputValue","validForm","calcTypePercentage","calcTypeFixed","poolMembershipTypeFileImport","poolMembershipTypeCriteria","yes","no","calcTypes","ShortCode","PoolGeneralInfo","positiveValidity","isPoolNameValid","isFederallyRegulatedValid","isRegulatoryModeValid","isSelectionIntervalValid","isCalcTypeValid","isDrugSampleSizeValid","isAlcoholSampleSizeValid","isLabAccountValid","isLabPanelValid","isPoolMembershipTypeValid","isPrimaryIDTypeValid","isPanelCodeValid","editing","edit","showSaveConfirmModal","poolLoading","labAccountsLoading","labPanelsLoading","startInEditMode","CloseProgramYear","showMissingModal","regulatoryModeTypeahead","federallyRegulatedTypeahead","selectionIntervalTypeahead","calcTypeTypeahead","labAccountTypeahead","panelTypeahead","poolMembershipTypeTypeahead","labAccount$","selectionIntervalsSubscription","updateSubscription","closeProgramIntervalSubscription","loadPoolData","initial","onPoolUpdate","poolData","editData","handleToggleEditMode","loadRegulatoryModes","dt","rm","loadSelectionIntervals","createPanelsSubscription","availableLabPanels","selectedLabPanel","loadLabAccounts","selectedLabAccount","loadPrimaryIDTypes","selectedCalcType","handleLabPanelChange","handleRegulatoryModeChange","handleSelectionIntervalChange","calcTypeCode","handleDateChange","toISOString","parsePoolSize","handleSampleSizeChangeChange","what","validityField","numberValue","handleLabAccountChange","Panel","handleNoSelectionChange","ind","sampleSizeValid","primary_id_type_ind","changes","Object","values","valid","startDate","endDate","startDatePlusYear","setFullYear","performCloseProgramYearSave","fixedOrRate","valueText","rowClassName","editable","openMissingPeriodsModal","onSaveMissingPeriods","margin","dataCalcType","dataCalcTypeMark","editingAndNoRun","IsRunRandom","editingAndNoRunNonClosePY","programInterval","regulated","regulatoryMode","panel","membershipType","includeCompanies","startDateStr","endDateStr","regModes","IsMissingPeriodTests","peekNextMonth","popperPlacement","MappingFieldsGetObservable","importJobID","ImportJobID","ImportJobCreateObservable","csvBase64","fileName","hasHeaderRow","companyID","isGovtPersonnel","multiplePools","CSVFileBase64String","FileName","HasHeaderRow","UseTemplate","GovtPersonnel","WorkforcePersonnel","MultiplePools","ImportJobMappingSetObservable","selectedFields","SelectedFields","ImportJobValidateObservable","ImportJobStartObservable","ImportJobCancelObservable","ImportJobValidationResultGetObservable","AutoFilterCompaniesGetObservable","IsFilters","AutoFilterValue","IncludeCompany","IncludeLocation","IncludeMaster","IncludeParent","IncludeRegion","LoadingTableWrapper","hideContent","withBorder","withHeader","cssClasses","ImportErrorDetails","errors","TableHeaderItems","TableRows","Total","TitleMessage","CanBeImported","importErrors","setImportErrors","useMemo","prev","errorMessage","renderImportCells","Cells","cell","dangerouslySetInnerHTML","__html","bordered","ImportPoolMembers","emptyData","step","fileInputKey","fileContent","fileHasHeaderRow","importData","mappingFields","mapping","validationResult","isCompaniesLoading","isSaving","isCancelling","showCancelConfirmModal","showImportConfirmModal","unfilteredCompanies","searchCompany$","companiesListSubscription","searchCompanySubscription","importJobCreateSubscription","mappingFieldsGetSubscription","importJobValidateSubscription","importJobValidationResultGetSubscription","importJobMappingSetSubscription","importJobStartSubscription","importJobCancelSubscription","poolCriteriaSubscription","createMapping","colsCount","max","HeaderItems","_","handleApiError","handleFileStepNext","isGovt","getMappingFields","importJobData","handleMappingValidate","selectedMappingFields","mappingField","UniqueName","mappingResult","startImportValidation","getImportValidationResults","validationErrors","performImport","Result","ErrorsData","onUpdate","resetState","performCancel","random","handleHandleFileUpload","file","files","ext","lastIndexOf","reader","FileReader","self","onload","stringLength","onerror","readAsDataURL","handleFieldMappingChange","mappings","valueKeys","split","fieldGroup","handleCompanyChange","comp","usedMappingFields","poolPrimaryIDType","companyPrimaryIDType","accept","selectedValue","keys","group","optGroupName","CancelImportMessage","ImportMessage","RunRandomSelectionMessagesGetObservable","RandomSelectionRunObservable","RunCancelPoolsObservable","cancel","selectedPools","Cancel","SelectedPools","RunRandom","messagesLoading","poolSelectionLoading","showRunConfirmation","handleSizeChange","handleFormSubmit","preventDefault","validity","runSelection","ContactId","UpdateMethodID","PoolId","runResults","sizeRowItem","valueField","valueValidityField","invalidMessage","sizeRow","statRequiredValue","alternateValueField","alternateValueValidityField","showAlternates","alternateInvalidMessage","messages","allowRun","disableForm","IsRunRandomSelection","SkipPeriodMessage","RunningPeriodMessage","RandomSelectionMessage","Companies","Email","Fax","FormFox","CISNET","LastUpdate","onRunFinish","CloseProgramYearIntervalObservable","CloseProgramInterval","showConfirmationModal","showEditPool","poolSaving","currentIntervalStartDate","currentIntervalEndDate","programIntervalStartDate","programIntervalEndDate","loadPoolDataSubscription","closeSubscription","currentStartDate","currentEndDate","nextStartDate","nextEndDate","handleProgramIntervalStartDateChange","handleProgramIntervalEndDateChange","showConfirmation","hideConfirmation","closeProgram","isIntervalValid","validateInterval","startYear","currYear","validationStatus","filters","Location","ActiveSince","Occupation","Category","Supervisor1","Supervisor2","HireDate","TerminationDate","PreEmploymentTestOnFile","Gender","DateOfBirth","AddressLine1","City","State","Zip","WorkPhone","CellPhone","User1","User2","User3","User4","User5","User6","User7","User8","User9","User10","Manager","ReasonForInactivation","PoolMembersGridObservable","RandomSelection","Inactive","inactive","RpAccountType","PersonID","SortGrid","SortColumn","SortOrder","toUpperCase","Filters","columnFilters","GridFilters","gridParams","PoolMembersExportCsv","PoolMembersPrint","printParams","RandomPersonnelCheckbox","person","DraggableTypeColumn","Column","handleVisibilityChange","onVisibilityChange","isDragging","connectDragSource","connectDropTarget","defaultChecked","visible","DropTarget","canDrop","hover","monitor","draggedId","overIndex","findColumn","moveColumn","dropTarget","DragSource","beginDrag","originalIndex","endDrag","droppedId","didDrop","dragSource","DroppableContainer","atIndex","newColumns","columns","prevItem","splice","onChangeColumnsList","col","customize","ColumnsCustomizeModal","handleChangeColumnsList","handleSave","saveCustomized","storeKey","DndProvider","backend","HTML5Backend","datStr","loadCustomized","defaultColumns","savedColumns","columnNames","columLabels","validate","GeneralInformationGet","GeneralInformationSave","loginID","updateMethodID","UpdatePersonDemographic","regionID","locationID","SaveRegulatoryMode","RegEmpCatList","FormatPhone","compareValue","r","FormatSSN","FormatZipCode","ValidZipCode","postalCode","us","RegExp","ca","PhoneNumberMaskedInput","msk","intl11","formatCharacters","char","allowNotProvided","AutoFilterLocationsGetObservable","region","hideInactive","ParentAccountID","HideInactive","AutoFilterLocationsGet","GetUserLocationsAdministrators","userID","ApplicationUserID","AutoFilterLocationWithRegionGetObservable","regionId","StateSelect","typeahead","isDisabled","selectedCode","states","Abbreviation","FullName","dropButtonIfInvalid","TestReasonsObservable","StateObservable","RegulatoryModeObservable","regModeId","EmployeeCategoriesGetObservable","regModeID","createRegulatoryModes","items_count","selectedLength","copyRegMode","createEmptyRegMode","EmpCat","EmployeeCategoryID","PersonRegModeEmpCatID","Primary","RegMode","createEmptyEmployeeCategory","BeginEffectiveDate","EndEffectiveDate","UserLogin","UpdateDate","EmployeeRegModeModal","ITEMS_COUNT","isRegulatoryModesLoading","isCategoriesLoading","regulatoryModeTypeaheads","categoryTypeaheads","isRegulatoryModesEqual","items1","items2","itemsString","handleChangeRegulatoryMode","inputIndex","handleChangeCategory","handleChangePrimary","createRow","itemIndex","allRegulatoryModes","categoryTypeahead","regMode","regulatoryModeIndex","employeeCategories","availableCategories","employeeCategoryId","employeeCategoryIndex","employeeCategory","createTypeaheads","rows","Supervisor1FirstName","FirstName","Supervisor1LastName","LastName","Supervisor1ContactPhone","ContactPhone","Supervisor2FirstName","Supervisor2LastName","Supervisor2ContactPhone","isPhoneValid","SuperVisor1","SuperVisor2","requiredSup1Data","requiredSup2Data","validContactPhone1","validContactPhone2","validSup1FirstName","validSup1LastName","validSup2FirstName","validSup2LastName","regulatoryModeValue","results","primary","otherRegModes","HeaderRow","HeaderRowWithSwitchMode","showEditButton","InfoRow","UserRow","caption","empty","InfoRowWithInput","genders","GeneralInfo","isGeneralInfoLoading","isPersonDemographicsDetailLoading","isStatesLoading","isLocationsLoading","isSupervisorsLoading","selectedRegulatoryMode","locations","isSupervisorsLoaded","isStatesLoaded","isRegulatoryModesLoaded","isCompaniesLoaded","personDemographicRecords","userDefinedRecords","implementationAliasRecords","personDemographicObject","showEmployeeRegModes","showSupervisors","generalInfoSubscription","personDemographicsDetailSubscription","statesSubscription","supervisorsSubscription","locationsSubscription","generalInfoSaveSubscription","personDemographicsSaveSubscription","saveRegulatoryModeSubscription","locationTypeahead","genderTypeahead","hiredate","birthdate","terminationDate","occupationTypeahead","user1Typeahead","user2Typeahead","user3Typeahead","user4Typeahead","user5Typeahead","user6Typeahead","user7Typeahead","user8Typeahead","loadGeneralInfo","loadPersonDemographicsDetail","selectedLocation","loadStates","loadAllCompanies","initialCompanyChange","AutoFilterCompaniesGet","loadAllLocations","handleLocationChange","initialLoad","currentLocation","loc","RegModeEmpCat","Driver","DriverLICStateOfIssue","personID","pdo","OccupationCode","User1Code","User2Code","User3Code","User4Code","User5Code","User6Code","User7Code","User8Code","RegModCatList","ssnRequired","CompanyPrimaryID","employerIDRequired","driverIDRequired","alternateIDRequired","showDriverState","checkIsPhoneValid","checkIsNotEmpty","checkIsSSNValid","checkIsEmailValid","createFirstNameRow","isFirstNameValid","handleFirstNameChange","createLastNameRow","isLastNameValid","handleLastNameChange","createEmployerIdRow","Employer","isEmployerIdValid","handleEmployerIdChange","createAlternateIdRow","Alternate","isAlternateIdValid","handleAlternateIdChange","createSSNRow","SSN","isSSNValid","handleSSNChange","createDriverStateRow","handleDriverStateChange","createDriverIdRow","isDriverIdValid","handleDriverIdChange","createOccupationRow","ImplementationAlias","PersonDemographicObj","occupationTitle","occupation","Key","Value","handleOccupationChange","isOccupationValid","createRegulatoryModeRow","handleRegulatoryModeClick","handleRegulatoryModeSave","handleSupervisorsSave","Supervisor1Data","Supervisor2Data","handleRegulatoryModeClose","handleSupervisorsClose","createHireDateRow","setOpen","handleHireDateChange","isHireDateValid","createTerminationDateRow","handleTerminationDateChange","isTerminationDateValid","createDateOfBirthRow","DOB","handleDateOfBirthChange","isDateOfBirthValid","createAddress1Row","Address1","isAddress1Valid","handleAddress1Change","createCityRow","isCityValid","handleCityChange","createInactiveRow","handleInactiveChange","createReasonForInactiveRow","handleReasonForInactiveChange","createPreEmploymentTestOnFileRow","handlePreEmploymentTestOnFileChange","isPreEmploymentTestOnFileValid","createManagerRow","handleManagerChange","isManagerValid","supervisorInfo","createSupervisorRow","handleSupervisorsClick","isSupervisor1Valid","isSupervisor2Valid","createGenderRow","handleGenderChange","el","isGenderValid","createStateRow","statetID","StateID","statetCode","StateProvinceTerritoryID","handleStateChange","createCompanyRow","isCompanyValid","createLocationRow","isStateValid","createZipRow","zipValid","handleZipChange","createWorkPhoneRow","WPhone","isWorkPhoneValid","handleWorkPhoneChange","createMobilePhoneRow","isGov","CPhone","HPhone","isMobilePhoneValid","handleMobilePhoneChange","phone","createEmailRow","handleInputChange","createInfoRows","firstNameRow","lastNameRow","employerIdRow","driverIdRow","driverStateRow","ssnRow","alternateIdRow","companyRow","locationRow","occupationRow","regulatoryModeRow","superVisorRow","hireDateRow","terminationDateRow","preEmploymentTestOnFileRow","managerRow","activeRow","reasonForInactivation","genderRow","dateOfBirthRow","streeAddressRow","cityRow","stateRow","zipRow","workPhoneRow","mobilePhoneRow","emailRow","createUser1Row","demographicLabels","demographicInfo","User1Label","handleUser1Change","isUser1Valid","createUser2Row","User2Label","handleUser2Change","isUser2Valid","createUser3Row","User3Label","handleUser3Change","isUser3Valid","createUser4Row","User4Label","handleUser4Change","isUser4Valid","createUser5Row","User5Label","handleUser5Change","isUser5Valid","createUser6Row","User6Label","handleUser6Change","isUser6Valid","createUser7Row","User7Label","handleUser7Change","isUser7Valid","createUser8Row","User8Label","handleUser8Change","isUser8Valid","createUser9TextRow","User9Label","isUser9TextValid","handleUser9TextChange","createUser10TextRow","User10Label","isUser10TextValid","handleUser10TextChange","createUserRows","userRow1","userRow2","userRow3","userRow4","userRow5","userRow6","userRow7","userRow8","userRow9","userRow10","GetPersonDemographicsDetail","PersonDemographicRecords","UserDefinedRecords","ImplementationAliasRecords","canEdit","userPermissions","infoRows","userRows","PhoneType","ConnectedGeneralInfo","CurrentServiceDetails","TestDetailClinicalID","TestDetailID","CompareMode","CurrentServiceDetailsForCompare","UpdateServiceData","TestEventID","FormFoxTestAN","PersonnelID","IDType","HomePhone","Phones","number","Work","Cell","ResolveAlert","TestEventAlertID","AccordionCard","Card","Accordion","FormatTime","CardRow","time","bool","titleBr","titleBreakpoints","valueBr","valueBreakpoints","titleXs","titleMd","valueXs","valueMd","ALT_OTHER_CODE","AlternateExcuseReasons","IsAltOtherExcuseReason","CollectionCard","EventData","schedulingResult","schedulingStatus","schedulingDate","DateScheduled","ScheduleStatusDescription","DateNotified","DateOrdered","getSchedulingData","schedulingNotes","SchedulingNotes","excuseReasonCode","ExcuseReasonCode","excuseReasonText","AltReasonDescriptionByCode","excuseComment","ExcuseComment","isAltOtherExcuseReason","showSchedulingNotes","showExcuseReason","startsWith","showExcuseComment","DateCollected","CollectionStatusDescription","CollectorVendorName","CollectedBy","SampleID","SplitSpecimen","DateArrived","ExamDetailCard","TestDetailPhysicals","Examiner","ExamResultDetailCard","ExamResult","ExpirationDate","BATAlcoholTestCard","BATResultCard","showConfirm","ConfirmLevel","scope","ScreenDeviceDescription","ConfirmDeviceDescription","ScreenDeviceSerialNumber","ConfirmDeviceSerialNumber","ScreenSequence","ConfirmSequence","ScreenLevel","TestingCard","isCovid","testingResult","testingText","testingStatus","testingDate","ReleaseStatus","LabReportDate","resultStatusCode","LabResultDescription","testingClassName","getTestingResult","LaboratoryVendorName","LabAccessionNumber","LabReceivedDate","ClinicalLabNotes","ReviewCard","MROVendorName","MROName","MROCopyCCF2Date","MROReceivedDate","MROReportDate","TestScreeningCard","ScreenResultDescription","ConfirmResultDescription","ScreenSampleTypeDescription","ScreenDeviceCode","ScreenDeviceExpirationDate","ConfirmSampleTypeDescription","ConfirmDeviceCode","ConfirmDeviceExpirationDate","TestSteps","currentRowInfo","currentServiceInfo","isCollection","TestType","IsClinical","isExamDetail","isAlcohol","isTesting","TestTypeDescription","isReview","isTestScreening","CurrentService","TestReleaseStatusDescription","MROResultDescription","TestReasonDescription","SampleTypeDescription","RegulatoryModeName","GetCurrentServiceHistory","PhoneNumberCard","readonly","isRequired","phoneNumber","PhoneNumbers","phones","ProcessingCollectionLabel","getCachedCollectionTests","CachedCollectionTests","getProcessingCollectionTests","timestamp","now","setProcessingCollectionTests","tests","isProcessingCollection","GovSendToLab","GovMarkAsComplete","Temperature","DonorInfo","setLoading","setPerson","sub","Subscriber","firstName","lastName","dateOfBirth","gender","formatGender","useEffectAfterMount","effect","dependencies","mounted","useRef","PanelResult","RecordTemperature","setIsValid","temperature","setTemperature","refObj","refInput","isRangeSelected","useCallback","NOT_SELECTED","IN_RANGE","OUT_OF_RANGE","SpecimenIdInput","readOnly","InputSpecimenId","sampleId","setId","idRepeat","setIdRepeat","isIdValid","setIdValid","isIdRepeatValid","setIdRepeatValid","isIdFormatValid","alowEmpty","CollectorNotes","notes","AdditionalPanels","panels","setPanels","formatDrugLabel","forEach","m","onSelect","SendToLab","striped","MainPanelRow","onUpdatePanel","newPanel","SelectedStatus","POSITIVE","INCONCLUSIVE","ExternalID","InternalCode","NEGATIVE","MainPanels","isAllPanelSelected","isAllPanelDisabled","onSelectAllPanels","uncheckLabOnNegative","selectedPanels","entries","isAllSendToLabSelected","GetPanels","labAccountCode","DeviceID","Panels","labCode","sampleTypeCode","onLoading","deviceID","loadingPanels","setLoadingPanels","mainPanels","setMainPanels","additionalPanels","setAdditionalPanels","isLabSample","populatePanels","sampleType","SampleTypeID","GovGetLabDeviceDrugs","GovPerformCollection","collected","sendingToLab","markingAsComplete","isTempRangeValid","tempInRange","isSampleIdValid","testDetailID","TestDetailIDHash","testDetailIDHash","ReferenceID","referenceID","SampleTypeCode","sampleTypeID","TempInRange","sampleID","collectorNotes","SelectedPanels","markAsCompleteSubscription","sendToLabSubscription","withoutNotAvailable","isAllMainPanelsSelected","isAdditional","isUrineSample","isPOCTSample","hasSendToLabPanels","isCanMarkAsComplete","isCanSendToLab","showMarkAsComplete","showCanSendToLab","resultProcessing","Success","ImageData","onMarkAsComplete","validateForm","onSendToLab","onChangeTemperature","onChangeSpecimenId","onChangeCollectorNotes","onUpdatePanels","onSetLoading","validateTemp","testName","PureComponent","RandomTestCard","description","useIcon","TestReleaseStatusID","DrugTestInfo","testEventData","CCFPersonnelID","CCFFirstName","CCFLastName","baseNameState","ccfName","CCFName","ccfFirstName","ccfLastName","showPerformCollection","ccfPersonnelID","closePerformCollection","isEditNow","editModeChanged","selectedCategory","loadCategories","handleDonorIdChange","updateFields","handleCcfFirstNameChange","handleCcfLastNameChange","handleCategoryChange","createGovPerformCollectionProps","SampleType","TemperatureInRange","TestDetailDocument","onPhoneNumberChange","categories","curCat","modes","curMode","panelInfo","isPending","PendingCollection","isProcessing","CollectionInProcess","PendingLaboratoryTesting","isProcessingTest","isDrug","isEditable","performCollectionProps","regEl","validCategory","catEl","ScreenDeviceID","IsRandom","OverlayTrigger","delay","hide","overlay","Popover","DonorID","EmployeeCategoryName","onMerge","PanelDescription","ConnectedDrugTestInfo","EventDetailsModal","editMode","updated","showConfirmSave","handleEditModeChanged","regulatoryModeID","employeeCategoryID","oldRegulatoryModeID","oldEmployeeCategoryID","handleUpdateFields","saveChanges","handleSaveChanges","onRefreshGrid","handleConfirmSave","handleConfirmClose","isPhonesValid","CurrentServiceHistory","detailsModal","handlePageChange","showDetailsModal","isOntrack","Service","Reason","Regulated","EventDate","ReportDate","SearchEmployeesToMerge","personId","implementationId","searchBy","searchFor","MergeEmployees","originalPersonId","mergePersonId","OriginalPersonID","MergePersonID","EmployeeToMergeInfo","loadSubscription","mergePersonID","createDonorIdTypeRow","createDonorIdRow","PrimaryIDValue","donorIdTypeRow","donorIdRow","DefaultSearchFields","EmployesToMergeGrid","showEmployeeToMergeInfo","showEmployeeToMerge","hideEmployeeToMerge","ConnectedEmployesToMergeGrid","MergeEmployee","ConnectedMergeEmployee","GeneralInfoKey","TestingHistoryKey","EmployeeDetailsModal","currentTab","showService","modalHeader","Tabs","defaultActiveKey","activeKey","Tab","tabClassName","PoolMembersFiltersModal","selectedLocations","isLocationsEqual","handleClearAll","handleAddLocation","handleRemoveLocation","handleAddRegulatoryMode","handleRemoveRegulatoryMode","availableLocations","hasChanges","canClearAll","QueryNameModal","comment","handleConfirm","DualListBox","mapOptions","selectionLeft","selectionRight","idKey","DisableMessage","_lodash","isEqual","selection","mapOption","dir","all","newSelection","disabledOption","availableOptions","selectedOptions","availableTitle","selectedTitle","optionTitle","optionLabel","move","disabledkeys","RegulatoryModeSelection","SavedQueriesModal","idToDelete","handleSelectQuery","handleDeleteQuery","savedQueries","deleteSelectedQuery","onDelete","closeConfirmation","savedQuery","DeleteQueryImg","LocationSelection","ValidateConsortiumCompanyObservable","CompanySelection","selectedCompanies","validations","validating","showModal","validationMessage","validateSubscription","diff","x","vs","cs","n","PoolMembersCriteriaModal","saveAsSubscription","loadSavedQuerySubscription","availableCompanies","loadingLocations","isPoolCriteriaLoading","isSavedQueriesLoading","isSavedQueryLoading","showRegulatoryModes","showCompanies","showSavedQueries","showQueryName","criteriaSaving","querySaving","querySavingAs","saveQueryMode","originalCompanies","originalLocations","confirmSaveText","locationSubscription","confirmSave","deletedCompanies","getDeletedCompanies","getConfirmText","companyCriteria","handleSaveQuery","handleQueryNameSave","handleSaveQueryAs","save_mode","save_query_mode","newFilterDataItem","loadedPoolCriteria","getSelectedLocations","handleQueryNameClose","handleClearFilter","locationCriteria","handleSelectSavedQuery","companyItem","handleDeleteSavedQuery","handleShowSavedQueries","setRegulatorModes","handleEditRegulatoryMode","handleEdiLocation","handleEditCompany","getSelectedRegulatoryModeModes","PoolCriteriaID","PoolCriteriaIntID","PoolOptionID","getCompanyNames","names","getRegulatoryModeNames","locationIds","getSelectedCompanies","companyIds","getLocationNames","creatCompanyRow","creatCompanyRows","implementationID","companyNames","companyRows","regulatoryModeNamesStr","locationNames","savedQueriesPresent","isShowSaveQueryAs","PoolMemberCheck","Mask","PoolMemberAdd","AutoFilterRegionsGetObservable","RandomPersonnelGridMode","StatusOptions","AddPoolMemberModal","stateCode","personnelCheckEmptyData","idType","isPersonnelFound","checkMember","showAddPersonnelPanel","isRegionsLoading","regions","statesLoading","idTypes","regionTypeahead","loadAllRegions","AutoFilterRegionsGet","savePoolMember","selectedRegion","Region","ConsortiumPoolCode","IsConsortiumPool","EmployeeCategory","searchString","poolCompanyData","onAdd","validateState","handleAddMember","handleMemberSearch","formatSearchString","handleRegionChange","CompanyList","HasRegModeBlock","User9Alias","PoolMembersGrid","importing","removing","PoolMembersGridColumns","customizeModal","advancedFiltersModal","addPoolMember","selectedPrintRowIDs","selectedChangeStatusRowIDs","selectedRegions","selectedCategories","Active","employeeDetails","showPoolMembersCriteriaModal","search","visibleColumns","renderCell","colName","showEmployeeDetails","handlePrintSelectAllRowsChange","PrimaryID","changePersonRowSelection","stateFieldName","selectedRows","handlePrintSelectRowChange","handleChangePersonStatusSelectRowChange","handleSearch","handlePoolMembersCriteriaSave","closeModal","handleAdvancedFiltersSave","handleAddIndividualSave","refreshGrid","dateString","personIDs","toogleMode","PersonIDs","ToogleMode","All","limitedAccess","headerColumns","columnFilterValues","sortGrid","filterGridColumn","allPrintChecked","manageIndividual","close","handleChangeStatusFilter","handleChangePersonsStatusClick","handleChangePage","ConnectedPoolMembersGrid","SelectionHistoryGrid","DrugPending","AlcoholPending","DrugNotComplete","AlcoholNotComplete","poolProgramId","hstRow","PoolHistory","poolProgramsLoading","poolProgramsYear","selectedPoolProgramId","selectedPoolYear","historyLoading","selectionHistory","poolProgramsSubscription","poolStatisticSubscription","loadPoolProgramsYear","startLoading","poolYear","Year","loadPoolStatistics","PoolStatisticsDetailsByProgram","poolYearItem","totalTestsRequired","totalEstimatedComplete","TotalEstimatedCompleteDrug","TotalEstimatedCompleteAlcohol","targetDrug","targetAlcohol","actualDrug","ActualDrug","actualAlcohol","ActualAlcohol","onPoolProgramSelect","StatisticsKey","HistoryKey","GeneralInformationKey","PoolMembersKey","RunRandomKey","CloseProgramIntervalKey","PoolDetailsModal","handleRunFinish","onPoolDetailsUpdate","limitedCons","showRunRandom","showPersonnelImport","ConnectedPoolDetailsModal","PoolGridCsvGet","BatchPool","BySel","LastMemberImport","LastSelection","ReadyToRun","MatchSel","SrchFor","TypeSel","PoolReadyToRunUpdateObservable","list","ReadyToRunList","RandomLink","path","RandomNav","TabContainer","canManageConsortiumPools","RunCancelNotificationModal","confirmationText","showNotes","overflowY","overflowX","Group","note","messageRow","RunCancelModal","selectAll","handleCheckPool","executeRunCancel","poolsData","DrugRateOrFixed","AlcoholRateOrFixed","poolRow","csvHeader","RandomPools","updatingReadyToRun","modal","readyToRunChanges","runPools","cancelPools","updateReadyToRunSubscription","changePrintRowSelection","renderHeaderColumn","columnName","filterGrid","renderReadyToRunHeaderColumn","isReadyToRun","setAscSort","handleReadyToRunClick","strokeWidth","Selection","LastSelectionStatus","ReadyToRunDate","RequireManualVerify","handleChangeReadyToRunChange","hideDetailsModal","reload","hideModal","handleCreateSuccessful","onRun","onExportClick","downloadTemplate","PoolGridGetObservable","newSort","ContactID","PoolGridPrint","AllPools","parentClassName","ConnectedRandomPools","Day","DayMap","Map","SUN","MON","TUE","WED","THU","FRI","SAT","getDayName","get","DeviceSampleType","WeekDays","Id","WeekdaysToExclude","daysToExclude","DayOfWeekID","day","today","getTime","DateExclude","weekdaysToExclude","handlerChange","GovGetCollectionTypes","LabAccountsGetObservable","LabAccountLookup","lab","dot","Laboratory","GovDeviceGetObservable","DevicesGetObservable","GovDeviceModifyObservable","getLabType","isUrineLab","isSalivaLab","isUrinePOCT","isSalivaPOCT","showLabForSelectedCollectionType","collectionType","GovCollection","devices","sampleTypes","isPOCTDevice","defaultSampleTypeID","defaultLabAccount","defaultPanel","defaultDevice","device","labAccountRef","panelSubscription","deviceSubscription","loadSampleTypes","labAccountNode","getInput","selectedSampleType","onTypeChange","loadPanels","loadDevices","onLabChange","filterSampleTypes","selectedPanel","onPanelChange","GovGetPanels","selectedDevice","LabCode","onDeviceChange","handleSampleTypeChange","sampleTypeId","selectedLab","panelId","handleDeviceChange","deviceCode","d","populateSelectedOptions","uniqKey","optionValue","formChanged","showHeading","labelClassName","sampleTypeDisabled","labAccountDisabled","panelsDisabled","devicesDisabled","GetDaysToExclude","pendingRandom","DatesToExclude","datesToExclude","suppressCurrentYear","toLocaleDateString","year","month","FormatShortDate","toExclude","GovPoolCheckTestsExistObservable","DraggableModalDialog","handle","ModalDialog","buildDaysToExcludeList","parseISODate","parsed","DateExcludeDt","buildWeekdaysToExcludeList","removed","RandomSchedulingExclusionsModal","showRemoveExistingEventsConfirmation","showAllGroupsConfirmation","dateCheckInProgress","dateToAdd","checkTestEventSubscription","handleExclusionDateDescriptionChange","selectedDayToExclude","selectedDayDescription","handleExclusionDateGenderChange","selectedDayGender","handleExclusionDateAllGroupsChange","setAllGroups","selectedDayPoolID","handleDateEvent","nativeEvent","KeyboardEvent","toggleDayExclusion","dayToExclude","getDayToExclude","selectedDate","getDay","addDayToExclude","DaysToExcludeID","dateSeconds","datesExcluded","assign","classNameDisabled","dialogAs","adjustDateOnChange","allowSameDay","dayClassName","excludedDate","DatesToExcludeModal","daysExcluded","classNameButton","setShow","AddGovPoolModal","groupName","selectionFrom","selectionTo","groupNameValid","loadingAllGroupsExclusions","isAccountServiceAvailable","minSelectionFrom","maxSelectionFrom","minSelectionTo","maxSelectionTo","groupName$","groupNameSubscription","allGroupsExclusionsLoadSubscription","handleGroupNameChange","days","handleNumberOfSelectionChange","handleMaxNumberSelections","handleWeekdayToExcludeChange","putDaysToExcludeToState","handleDaysToExcludeChange","activeDaysToExclude","calcIntervalValue","currentValue","NumberOfSelections","MaxNumberSelections","LaboratoryAccount","DefaultPanel","DefaultDevice","DaysExcluded","rest","DoRemove","GovPoolCreateObservable","daysToExcludeWithoutRemoved","NumericInput","strict","serviceDOT","ConnectedAddGovPoolModal","SelectionReportPrint","statisticsSubscription","handleGroupSelectionClick","GroupSize","TestsCompleted","NoShow","govPoolId","GovPoolGeneralInfo","loadingDaysExcluded","loadDaysExcludedSubscription","handleTypeChange","addedAndRemovedDays","GovPoolUpdateObservable","GovPoolSelectionUpdate","DateSelected","DaysSelectedID","GovPoolDateSelected","govPoolSelection","dateSelected","govPoolSelectionSubcription","govSelectionSubcriptionUpdate","dateValid","dateSelectedID","loadGovPoolSelection","SelectionPeriod","calcDateRange","setDate","dateEnd","selectionDays","addDays","weekdaysExcluded","filterDate","RandomGovPools","dateSelectedModal","Type","Count","intersperse","arr","sep","formatDaysSelected","daysSelected","DaysSelected","DayOfWeek","elem","showChangeDateModal","DaysToSelect","GendersInfo","hasUpdates","hideDateSelectedModal","handleUpdateSuccessful","ConnectedRandomGovPools","GovPoolsObservable","GovDonorAddObservable","GovDonorEditObservable","EditGovDonorForm","donor","DonorId","GovPoolId","GroupAssignment","IntakeDate","Birthday","MobilePhone","l","defaultState","GroupAssignmentName","govPools","isDonorIdValid","isGroupAssignmentValid","isGovPoolsLoading","isNameValid","handleStreetAddressChange","stateKey","stateValidKey","emailValid","handleGroupAssignmentChange","GovPoolGet","selectedState","StateCode","loadPersonData","EmployerID","GovPoolID","GovPoolName","Address","donorInfoLabel","gp","ConnectedEditGovDonor","AddGovDonorModal","IVRLogForm","PersonId","FromDate","toDateString","ToDate","applyFilter","CallDate","PhoneNumber","IVRLogKey","GeneralInformation","ServiceKey","GovDonorDetailsModal","handleSuccessful","GovAccessCode","formData","DefaultColumns","GovDonorGrid","addDonorModal","showAddDonor","hideAddDonor","renderHeader","LastTestDate","SearchText","GovDonorGridGetObservable","ServiceTypeCode","ConnectedGovDonor","canManageGovDonors","TogglePanel","collapsibleId","header","onHeaderClick","in","SelectServiceTogglePanel","onCloseClick","onValidate","ServiceCode","emptyServiceType","ServiceTypeID","ServiceTypeName","DisplayOrder","ServiceTypeByCode","IsServiceTypeCodeDrug","Drug","IsServiceTypeCodeAlcohol","Alcohol","IsServiceTypeCodePhysical","Physical","AccountServicesByServiceId","serviceId","ServiceID","emptyService","ServiceName","ServiceDescription","ActiveWorkForce","ActivateAll","Marketplace","FFServiceCode","MPSku","ServiceByCode","ServicesByServiceTypeId","serviceTypeId","AccountsForServices","services","accountServices","accounts","IsServiceActive","service","activeItems","IsDefault","ActiveAccountServicesByServiceId","HasActiveAccountServicesByServiceId","IsServiceDrug","DrugDOT","IsServiceDrugNonDOT","IsServicePOCT","POCT","IsServiceFLEX","FLEX","IsServiceCodePOCT","IsServiceCodeWellness","Wellness","ServiceTypeOld","OTHER_REASON_TEXT","EmptyServiceData","serviceTypeCode","None","serviceCode","isMarketplace","testToPerform","testToPerformObj","labAccountObj","reqSpecimenCollection","observedCollection","regulatoryModeObj","category","categoryObj","selectedTests","selectedServices","selectedTestType","isValidMode","SelectService","isAllServicesDisabled","shouldResetDOT","canAddDOT","canAddNonDOT","TestToBePerformGetObservable","SelectSampleTestType","availableTests","UR","SLD","SelectSpecimenCollection","SelectObserved","DefaultLookupCode","OrderDefaultsGet","OrderDefaultsSave","OrderDefaultsReset","ImplementationsGetObservable","ReturnAll","LookupMap","IsInput","IsNumeric","TestReason","ExpTime","FAAEmployee","OrderDefaults","resetting","loadingDefaults","portalDefaults","selectedLookup","showWarning","portalTypeahead","loadPortalsSubscription","loadCompanyDefaultsSubscription","loadPortalDefaultsSubscription","loadDefaults","lookup","requestData","LookupCode","forkJoin","modeDefaults","remapToOrderDefault","reasons","reasonDefaults","timeDefaults","singleDefault","categoryDefaults","createOrderDefaultElement","existingDefault","OrderDefaultID","FieldName","DefaultValue","Show","Disable","elementVisibleOnPortalLevel","relatedDefault","savedDefault","objects","obj","newEl","saveObj","Defaults","handleReset","toggleShow","newData","toggleDefault","handleEmpty","handlePortalChange","handleLookupChange","handleDefaultValueChange","isAnyShowSelected","DataRow","disableButtons","showSaveWarning","Dialog","ConnectedOrderDefaults","RegulatoryModeControl","categoriesLoading","filteredModes","regulatoryMode$","onCategoryChange","isValidSelection","filterFields","defaultMode","def","filteredCategories","FAADefaults","defaultFAA","SelectDrugTest","defaultService","testsLoading","dotTestCount","ndotTestCount","poctTestCount","flexTestCount","isDot","service$","setInitialState","labAccountCompanyName","filterTests","orderableServices","selectedService","isPoct","isFlex","filteredTests","NDOT","t","dotTestsCount","ndotTestsCount","poctTestsCount","flexTestsCount","setDefaultDrugSampleType","onChangeLab","onChangeTestType","isPOCT","req_specimen_collection","selectedTest","onChangeSampleTestsType","onServiceAdd","isObservedMandatory","onPanelClose","denyAddService","hasAvailableTests","showSelectSampleTestType","showSpecimenCollection","showObserved","showDOTRelatedControls","labAccountNumber","newLabAccount","newLabAccountsArray","observedCheckedDisabled","getServicesComponents","dotImage","mode","cat","canAddPOCT","canAddFLEX","orderableAccountServices","marketplaceServicesCount","canAddMarketplace","notMarketplaceServicesCount","canAddNotMarketplace","servicesComponents","orderableService","is_poct","is_flex","serviceActive","is_dot","is_non_dot","item_type","item_id","item_value","item_disabled","item_checked","serviceComponent","SelectAlcoholTest","onChangeTestToPerform","availableAlcoholTestSampleTypes","selectedTestCode","AlcoholBreath","Breath","AlcoholBreathDOT","Saliva","AlcoholSalivaDOT","AlcoholSaliva","orderableServiceType","ServicesByServiceSampleType","SelectPhysicalExam","SelectOHS","OHS","showPanels","alreadySelected","CHSService","onSelectService","CHSServices","isSelected","Clinical","CHSTests","SelectCHS","CHS","serviceData","s","onClinicalTestToBePerformedChange","showNoServicesFound","ServicesSelection","onAddService","completingPendingOrders","drugTestData","alcoholTestData","hasServices","PhysicalDOT","filterServicesByType","types","filterServicesByMarketplace","marketplace","canAddDrugDOT","canAddDrugNonDOT","canAddAlcoholService","maximumAlcoholTests","canAddPhysicalService","maximumPhysicalTests","reason","orderableServiceTypes","drugServiceType","alcoholServiceType","GetAlcoholServiceType","physicalServiceType","GetPhysicalServiceType","ohsServiceType","GetOHSServiceType","chsServiceType","GetCHSServiceType","drugServices","alcoholServices","physicalServices","ohsServices","chsServices","drugAccountServices","alcoholAccountServices","physicalAccountServices","ohsAccountServices","chsAccountServices","showDrugSection","showAlcoholSection","showPhysicalSection","denyAddServices","eventType","showOHSSection","showCHSSection","formatFunction","changeHandler","blurHandler","enterTapHandler","keyCode","SearchDonorGetObservable","AdvanceSearchDonorGetObservable","DonorInformation","idTypeObj","Rank","birthDateInput","isDonorInfoSuccess","lastSearch","populateSSODonorData","SSODonorData","handleIdTypeChange","DonorIDType","idReadOnly","DonorFirstName","DonorLastName","donorId","DonorDOB","daytimePhone","DonorPhone","DonorEmail","address","Line1","Address2","Line2","onDonorSearch","idTypeObject","displayState","updateState","handleBirthDateChange","handleChange","require","identifier","Identifier","IdentifierType","getDonorInfoSuccess","getDonorError","firstNameReadOnly","middleInitialReadOnly","lastNameReadOnly","homePhoneReadOnly","workPhoneReadOnly","stateReadOnly","genderReadOnly","middleInitial","eveningPhone","accessCode","fetchedDate","validDate","noValueOrEmpty","MiddleInitial","eveningPhoneField","daytimePhoneField","sendDonorInformation","info","validateDonorIdFormat","isFormValid","daytimePhoneRequired","isBirthDateRequired","showGenderField","onDonorChange","obj1","obj2","orderFormData","fillPendingFormData","MockDonorID","newInfo","showIdType","showMiddleInitial","eveningPhoneLabel","daytimePhoneLabel","validDonorIdFormat","TextFormControl","maxDonorIdLength","stateAbbreviationsToCommonWealthState","StateToTimeZone","Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","NewHampshire","NewJersey","NewMexico","NewYork","NorthCarolina","NorthDakota","Ohio","Oklahoma","Oregon","Pennsylvania","RhodeIsland","SouthCarolina","SouthDakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","WestVirginia","Wisconsin","Wyoming","TimeZoneMapping","CalculateDateStrings","timezoneCode","formattedDate","gmtFullDate","gmtShortDate","timezone","timezoneDateString","toLocaleString","timeZone","timezoneDate","round","localOffset","getTimezoneOffset","sign","abs","padStart","userDate","hour","minute","shortDate","expirationDate","datePickerRef","addHoursToCurrentDate","hours","newDate","setHours","onChangeDate","timeInputLabel","dateFormat","showTimeInput","DefaultExtendExpirationMS","DefaultExtendExpirationHours","ExpirationDateChangeMarker","Schedule","schedule","handleOverrideAllowedChange","overrideAllowed","extendExpirationHours","handleHoursToExpireChange","hoursUntilExpires","sendSchedule","onScheduleChange","calculateExpirationDate","prevExpirationDate","expirationHours","estimatedExpiration","expirationMS","formattedExpirationDate","displayExpirationDate","dateStrings","initializeTimezone","updateTimeZone","TimeZone","proceedImmediatelyChange","enabled","proceedImmediately","defaultExpirationHours","defaultExpiration","allowDonorSelect","LocationQueryGetObservable","AutoCompleteString","AddressSearch","isOptionsLoading","defaultAddressInitialized","defaultAddress","searchQuery","addressesQuery$","addressesSubscription","performSearch","selectedPrediction","selectedOption","blur","activeItem","LocationQueryGet","isSSO","promptText","disableSuggestions","isSearching","disabledSearch","Filter","handleRadiusChange","onRadiusChanged","sites","site","GroupName","newSite","PriceTier","priceTiers","pt","DisplayName","minRadius","clinicSearchOptions","SearchRadius1","maxRadius","SearchRadius2","getFilters","radius","onFilterChanged","clearFiltersIcon","PRICE_TIER_IMAGES","SiteCard","isMP","imageSrc","displayName","PriceTierDisplayName","FFEnabled","Distance","toFixed","HoursOfOperation","Phone","SiteRating","SiteServices","getServiceItem","onSiteSelected","ServicesGet","ServiceTypesGet","AccountServicesGet","AccountServicesSave","loadingServices","serviceGroups","loadAccountServicesSubscription","loadAccountServices","AccountServiceID","populateServiceData","populateServices","addNonDOTOralService","groups","drugGroup","g","nonDotEnabled","NonDOTOral","typeID","checkEnabled","serviceID","relatedService","accService","companyMode","enabledForPortal","enabledForCompany","loadInitialData","serviceGroup","ConnectedSiteServices","getInfoWindowString","VendorService","MapContainer","mapReactKey","bootstrapURLKeys","language","defaultCenter","center","defaultZoom","zoom","mapTypeControl","yesIWantToUseGoogleMapApiInternals","onGoogleApiLoaded","maps","markers","infoWindows","Marker","lat","Latitude","lng","Longitude","InfoWindow","content","bounds","google","LatLngBounds","marker","addListener","infoWindow","extend","fitBounds","handleApiLoaded","ClinicSearchPriceSetObservable","counter","ClinicSearchPriceTiers","ClinicSearchOptionsSetObservable","radius1","radius2","mpSitesOnly","ClinicSearchOptionsGetObservable","ClinicSearchListRemoveObservable","clinicSearchListTypeID","clinicSearchListIDs","clinicSearchListID","isRemove","ClinicSearchListAddObservable","RetrieveOwnedSitesObservable","UpdateOwnedSitesObservable","EmptySSOOrderRequestData","OrderRequest","Password","CustomerId","ExternalUserName","WFUserName","ClientID","CompanyAccount","ReferenceTestId","PostBackURL","Donor","Donoremail","GetEmbededTestEventWithDetail","formFoxTestAN","SetTestDetailVendor","SetFFTestDetailVendor","GetOrderRequest","requestToken","SiteSearch","isFilterShown","isMapShown","siteServices","filteredSites","isLocationsSearching","ssoOrderRequest","searchCompleted","dataLoaded","customRadius","geolocation","available","locationsQuery$","radius$","radiusOptionsSubscription","testEventSubscription","ssoOrderSubscription","priceTierSubscription","buildSearchCriteria","serviceCodes","SD","DOTOral","Radius","IsObserved","Codes","IsSSO","ReferenceTestID","IsFFOrder","PriceTierOverride","isFFOrder","referenceTestID","priceTiersOverride","latitude","longitude","Observed","embeddedTestsCodes","codes","FFCode","SampleTypeIsPoct","isSearchAllowed","handleSearchCompleted","handleFilterChange","applyCustomRadius","ApplyCustomRadiusDebounced","debounce","handleCustomRadiusChange","handleSiteSelection","onSiteSelect","сallbackLink","handleGeoLocationChange","getCurrentPosition","setPosition","setError","coords","PERMISSION_DENIED","POSITION_UNAVAILABLE","TIMEOUT","combineLatest","GetFFTestData","CallbackLink","DefaultAddress","showFilter","forceShowFilter","OrderedServices","showRemoveConfirmation","closeRemoveConfirmation","idToRemove","performRemove","canRemove","onRemoveService","canConfirm","trs","steps","OrderSubmitObservable","PotentialDonorMatchModal","selectedDonorMatch","selectDonorMatch","donorMatch","potentialDonorMatchList","Match","LocationInput","locationAsyncTypeahead","locations$","defaultLocationName","getLocationName","subscribeLocations","RandomReason","emptyDonor","emptySchedule","issuerType","reasonObj","reasonOther","buildOrderRequestData","orderRequestToken","donorData","advanceSearchDonorSubscription","loaInitialDataSubscription","loadLocationsSubscription","parseOrderRequest","formatAddress","loadAllDefaults","defaultsLoading","populateDefaults","loadPendingDefaults","pendingDefaults","populateDefaultExpTime","defaultExpTime","reasonsDefaults","filteredReasons","defaultReason","onReasonChange","defaultExpirationTime","isServicesConfirmed","loadLocations","locationName","resetForm","formKey","showSiteSearch","showPotentialMatches","nextServiceID","isDonorValid","submittedOrder","orderSubmitting","onCompanyChange","onLocationChange","reasonObject","hasDragService","newServices","newServiceID","showDrugWarning","modeObj","catObj","onConfirmServices","SavedOrderData","CanViewOrderFinish","goBack","handleAllowDonorClinicSelect","lastValue","allowDonorClinicSelect","donor_email","getIdTypes","regulatoryModeFromServices","onGoToStep1","onGoToStep2","saveOrder","DayTimePhone","EveningPhone","Mobile","categoryFromServices","saveSuccess","orderFinishData","ProfileNumber","FFresult","normalizeOrderedServices","FromSelectionInbox","OrderDonorSiteSelect","testToPerformDesc","labAccountDesc","closePotentialDonorMatchModal","submitPotentialDonorMatchModal","newDonor","closeDrugWarning","Urine","reasonsLoading","RequestText","formatPhone","MultipleDrug","MultipleAlcohol","MultiplePOCT","MultipleClinical","MultiplePhysical","POCTCount","CollectionVendorID","FormFoxVendorAN","Collector","ParentVendorID","FFID","Private","UseDOTForm","OutOfNetwork","iVendorID","SiteID","CollectorPhone","ConfirmDeviceID","CompanyFullName","PrimaryIDRank","RegionName","AllowDonorClinicSelect","ProceedImmediately","ExtendExpirationHours","UpdateMethod","IsAlcohol","IsAssociatedWithPool","IsCompleted","IsDrug","IsBackground","IsNew","IsPhysical","IsAudiogram","IsReleased","LaboratoryVendorCode","LaboratoryVendorID","LabPanelID","TestReasonID","TestTypeID","Labbased","OrderComment","Normal","PersonDetail","AlternateID","DriverID","MockCCFPersonnelID","DriverLicStateOfIssue","MockAlcoholTestDetailID","MockDrugTestDetailID","SSOToken","BaseUrl","IsFlex","IsServiceTypeCodeCHS","ClinicalTestType","isIssuerValid","canGoToOrderFeatures","isStep2Available","allowClinicSelectValid","isOrderCanBeSubmitted","Background","disableReason","headerSteps","OrderRequestsHeader","maximumDrugTests","ConnectedOrderRequest","AuthFormProcessObservable","SendToEmail","SendText","EmailAddress","AuthFormByToken","OrderFinish","orderObj","TestDetailIDs","TestDetailClinicalIDs","authorizationID","servicesOrderedList","siteSelected","XMLFile","OrderReportPrintObservable","OrderXML","addEmail","emailItems","removeEmail","array","changeEmail","sendEmail","Boolean","Set","DrugTestDetailID","AlcoholTestDetailID","PhysicalTestDetailID","POCTTestDetailID","sendingEmail","SendEmailObservable","canAddEmail","addMobile","mobileItems","removeMobile","changeMobile","sendText","sendingText","SendMessageObservable","canAddMobile","mobile","finishOrder","sendLink","SendSelectClinicLink","OrderFinishObservable","ApiRequestToken","MarketplaceAuthNum","returnToStart","returnToSelectionInbox","getSavedOrder","orderDonorSiteSelect","savedOrderData","AlcoholTestDetailIDList","DrugTestDetailIDList","POCTTestDetailIDList","ClinicalTestDetailIDList","savedServices","serviceTypesList","serviceTypesString","AuthorizationID","CollectionTime","IDNumber","OrderDate","OrderedBy","OrderUpdatedAt","OrderUpdatedBy","RAImageID","MarketPlaceOrderNum","accountTypeID","ColumnFilters","ExportDateFrom","exportDateFrom","ExportDateTo","exportDateTo","Exact","DateRange","DateType","EndDate","StartDate","InProcessStatus","IsReviewed","IncludeArchived","includeArchived","Pending","IsSearch","SearchString","TrackPersonID","OrderResultsPrint","ResultsWatchObservable","testEventIDs","modifiedBy","TestEventIDS","testEventID","ModifiedBy","SearchFieldsGet","CompleteTest","Images","UnarchiveTest","CompleteModal","pools","hireDate","didHire","currentTest","currentDonorIndex","showHireModal","showCompleteModal","testsToProcess","processedTests","poolSubscription","handlePoolChange","onCancelHireModal","onSubmitHireModal","completeAllTests","completeTest","testToComplete","currentIndex","unarchive","newDonorIndex","newDonorTest","testForSameDonor","testEventId","stepStatusColor","stage","showCompleteOrders","InProcess","Alert","Cancelled","NoStatus","GridStatusInfo","Stages","statusDetail","stages","scheduleStatusId","ScheduleStatusID","testEventStatus","TestEventStatus","testDetailClinicalId","showEventStatus","collect","StatusDetail","collectDetail","CollectionStatus","extraStatus","ColStatus","shownStage","isOrderExpired","IsExpired","IsStatusVisible","Sequence","Detail","marginLeft","TestTypes","stageStatus","ModalStatusInfo","fields","detail","DateOrder","ProcessedBy","SiteName","SiteAddress","CollectionDate","NotificationDate","Recipient","Method","LaboratoryName","DateReceived","MROStatus","renderStatus","ImageGet","GenerateMROReport","ReportKey","PrintRecords","GetMROLetter","ResultsResolveObservable","testsData","OrderTrackingCheckbox","idPrefix","Archived","Content","AuthFormModal","isAfterUpdate","onEdit","ConnectedAuthFormModal","OrderCancel","testDetailClinicalID","MockTestDetailID","MockTestDetailClinicalID","OrderUpdate","ProcessingModal","SiteSearchPage","sendCallback","showFinish","spinnerMessage","retrieveFFTestAN","SendLink","SendCallback","updateOrder","serviceTiers","ServicePriceTier","collectionVendorID","formFoxVendorAN","FFVendorCode","collectorVendorName","servicePriceTiers","callbackAction","OrderEditModal","clinicLoading","cancelling","showConfirmCancelOrderModal","showConfirmSaveModal","selectedExpirationDate","loadClinicSubscription","cancelSubscription","onClinicChange","calculateTimezone","newClinic","stateAbbr","performCancelOrder","onOrderUpdated","timeZoneName","extendHours","toggle","newExpirationDate","handleChangeExtendExpirationHours","currentExpirationDate","handleChangeExpirationDate","CollectionSiteInfoGet","clinicToDisplay","FormLabel","SendSelectClinicLinkObservable","DrugTestCompare","currentServiceInfoNew","currentServiceInfoOld","panelInfoNew","panelInfoOld","EventDataNew","EventDataOld","primaryIdNew","personelIdNew","testTypeOrSampleIDChanged","dataRow","newValue","oldValue","ignoreChanges","EventDetailsCompare","subscriptionNew","subscriptionOld","dataNew","dataOld","loadingNew","loadingOld","MergeFrom","PrintMode","SearchTestToMerge","mergeSubscription","showMergeFullCopyConfirmation","showMergeUpdateEmptyConfirmation","confirmMergeFullCopy","onMergeFullCopy","mergeTest","confirmMergeUpdateEmpty","onMergeUpdateEmpty","filterItems","selectTest","TestReasonCode","EventResultCode","EventStatusCode","testType","TestToMergeGetObservable","mergeMode","MergeTestDetailID","MergeMode","KeepReleased","updateData","createMergeParams","PrintFormModal","REPORTS","printMode","setPrintMode","showPrintModal","setShowPrintModal","printing","hasReports","onPrintRecords","hidePrintForm","RECORDS","onPrintReports","onPrint","ReasonForTestCell","exportCsv","ExportCSVModal","searchParams","generatingCsv","setGeneratingCsv","includeArchivedOrders","setIncludeArchivedOrders","includeActiveOrders","setIncludeActiveOrders","OrderResultsExportCsv","WatchCell","TestEventAlert","Watch","WatchResolved","HorizontalScrollWrapper","gridRef","recalculateWidth","offsetVertical","gridWidth","setGridWidth","scrollWrapper","gridWrapper","updateWidth","clientWidth","verticalScrollBoxWidth","offsetWidth","onSyncScroll","scrollLeft","resizeSubscription","fromEvent","scrollSubscription","visibility","scrollWidth","visibleHorizontalScroll","FormFoxTestANColumn","showAuthFormModal","GridIDNumber","idValue","mockId","idRow","OrderTracking","searchFieldsSubscription","loadImageSubscription","loadReportSubscription","watchSubscription","resolveSubscription","OrderTrackingGridColumns","showStatusModal","showArchivedOrders","showExportOptions","completeModal","statusInfo","eventDetails","updatingWatchList","resolving","showResendAuth","showOrderEditModal","eventCompare","showMergeEvent","showSelectClinicEmail","generateCCFImage","image","canDownload","TestImageID","TestDescription","processCCF","isMroLetter","isMroLetterRow","RAImage","isMroCopy","isMroCopyRow","mroImages","printMROReport","processReport","Base64String","currentDate","ImageType","Base64Strings","handleTestDetailChange","selectedReports","selectedResults","iconsVisibility","MROReport","onCloseResend","onCloseResendEmail","handleWatchClick","handleResolveClick","testData","AlertResolved","TimingAlertResolved","ResultsAcknowledged","showEventDetailsModal","showEventDetailsCompareModal","isFirstRow","isLastRow","showImageAlert","MockMergeFrom","MockTestEventAlertID","showImageAlertResolved","ImageAlert","ImageAlertResolved","canView","mapCCFImages","mapMROReport","MROStage","getResultText","MROResultID","LaboratoryTestingComplete","LaboratoryTestingCompleteReleased","LabResultID","MRONonDOTNeg","MRONonDOTPos","IsPOCT","IsFLEX","PoctComplete","PoctCompleteReleased","CRLCovidClearAntibody","CRLRapidResponseCovid","ccfImageDescription","isPositiveFlexInstantReport","imgSrc","ImageOHS","ImageCCF","ImageMRO","selectedIdentifierByRow","flattenResults","hideMergeEvent","onMergeEvent","ResultsGridObservable","Reviewed","testsSelected","firstSelectedArchived","dataColumns","printCell","justifyContent","alignItems","verticalAlign","dataRows","emptyRow","checkArchivedOrders","DonorName","handleAllTestDetailChange","groupedRows","ForgotPassword","userNameValid","handleShow","submitPasswordReset","controlId","LoginNavMenu","linkTo","bsPrefix","NotificationCard","notification","NotificationTitle","NotificationDescription","Subtitle","NotificationExpirationDate","NotificationPanel","pinnedNotifications","unpinnedNotifications","ShowOnClinicPortal","record","Pinned","notifications","Workforce1Login","username","password","showPass","inputType","login","toggleShowPass","colProps","block","foundToken","requestedUri","sourceIp","loginToWorkforce","PageLoading","delayedVisibility","IDENTITY_CONFIG","authority","client_id","redirect_uri","response_type","post_logout_redirect_uri","AuthService","userManager","signinRedirectCallback","getUser","signinRedirect","provider","UserManager","SSOWorkforce1Login","base64String","signIn","siteSearch","embeddedOrder","SetSSOPayload","isSiteSearch","isEmbeddedOrder","EmbeddedOrderModeEnabled","ForcePrimaryClinic","ssoTokenLoginToWorkforce","DraggableTypeItem","DraggableItem","exclude","excludeItem","findItem","moveItem","onChangeItemsList","AdditionalOptionsType","ForcePrimaryClinicOptions","FORCE_PRIMARY_CLINIC","IF_AVAILABLE","ONLY","AdditionalOptions","setSaving","update","setOptions","OptionTypeID","ClinicSearchOptionTypeID","OptionValue","ClinicSearchAdditionalOptionsSetObservable","onUpdateOption","optionType","getOptionValue","isPortal","DefaultOptions","mpSitesOnlyPortalAdmin","loadingOptions","loadingPrice","savingOptions","savingPrice","savingAdditionalOptions","updateAdditionalOptions","loadOptionsSubscription","loadPriceSubscription","saveOptionsSubscription","savePriceSubscription","digits","handleChangePriceItemsList","prices","newPrices","price","PriceTierID","Exclude","handleUpdate","handleSaveAdditionalOptions","validationErrorsRadius1","minValue","minRadius1Value","maxValue","maxRadius1Value","validationErrorsRadius2","maxRadius2Value","ParentRadius1","ParentRadius2","MaximumRadius","radius1Errors","radius2Errors","radius1Entered","radius2Entered","OwnedPrimarySites","clinics","primarySitesOnly","handleRetrieve","UsePrimarySitesOnly","ClinicSearchListID","borderless","ListOptions","adding","showSiteSearchModal","clinicSearchListTypeID$","addSubscription","removeSubscription","handleClinicClick","handleRemove","ids","handleAdd","userInfo","headerText","disableRemove","isCompany","IsPrimary","ToggleSwitch","onCheck","on","off","FFClinicGroupRow","handleExcludeGroup","excluded","ClinicGroupsFFModal","excludedGroups","setGroups","loadingGroups","setLoadingGroups","savingGroups","setSavingGroups","subsRef","SearchRestrictID","RestrictCode","SearchRestrictId","handleHide","SetExcludedClinicGroupsObservable","ExcludeClinicGroupRow","ExcludeClinicGroupTable","onSelectGroup","ExcludeClinicGroup","TabName","refresh","setRefresh","setLoadingGroup","removingGroups","setRemovingGroups","handleHideClinicGroupsFFModal","handleGroupClick","handleRemoveGroup","DeleteExcludedClinicGroupsObservable","LISTS","tabName","BLACKLIST","ClinicSearchOptions","DEFAULT","lists","appState","buildVisibleLists","listTypes","listType","ClinicSearchListTypeID","Pane","ConnectedClinicSearchOptions","selectPortal","selectableCompanies","childCompanies","clinicIndex","ListGroup","Reg","UpdateConsortiumsMembership","Members","RandomPersonnelGridObservable","WithInactive","forceReload","RandomPersonnelExportCsv","RandomPersonnelPrint","RandomPersonnelAddPersonObservable","IsAddIndividualSearch","RandomPersonnelRemoveObservable","persons","force","AdvancedFiltersModal","companyTypeaheadKey","regionTypeaheadKey","unfilteredRegions","locationTypeaheadKey","unfilteredLocations","canEditCompanies","canEditRegions","canEditLocations","searchRegion$","searchLocation$","selectedCompanies$","selectedRegions$","isCompaniesEqual","isRegionsEqual","isCategoriesEqual","handleAddCompany","handleRemoveCompany","handleAddRegion","handleRemoveRegion","handleAddCategory","handleRemoveCategory","startWith","pairwise","prevCompanies","prevFilter","companiesAllowed","prevC","filterLength","companyChanged","shouldRequestApi","shouldSetEmptyResult","shouldUpdateUnfilteredList","shouldFillFromUnfilteredResult","isFirstTimeLoad","prevRegions","regionsAllowed","prevR","cAllowed","rAllowed","XrefAccountMapping","regionChanged","showRegions","accountName","RandomPersonnelAdd","EmploymentDetails","nonRegionLocations","companiesDetails","isEmployerIDValid","isDriverIDValid","isAlternateIDValid","isHomePhoneValid","isCategoryValid","Province","loadLocationsWithRegion","isNotEmpty","handlePhoneChange","convertedRegs","ssn","ConnectedEmploymentDetails","AddIndividualModal","addPersonnel","phoneString","primaryIDKeys","Supervisor1ID","selectedSupervisor1","Supervisor2ID","selectedSupervisor2","PreEmploymentTest","RegModeID","EmpCatID","ImportJobCreateAndPerformObservable","base64string","isCompanyCodeRequired","CompanyCodeRequired","ImportErrorDetailsModal","setShowModal","ConsortiumMembershipModal","save","PersonAssignedToPoolID","toggleActive","cons","CSV_FILE_NOT_CORRECT_FORMAT_CODE","SEARCH_FIELD_NAME_SSN","RandomPersonnelGrid","RandomPersonnelGridColumns","removeConfirmModal","forceRemoveConfirmModal","removePersonMessage","addIndividualModal","showConsortiumsModal","selectedRemoveRowIDs","jobResult","importSubscription","RandomPersonnelRemove","handleRemoveSelectRowChange","handleActivateInactivateClick","ImportJobCreateAndPerform","click","handleRemoveClick","ConnectedRandomPersonnelGrid","Pool","Site","CRMUniqueID","RetireDate","Country","StateName","SelectionInboxGridCsv","EventExcuseObservable","generateReplacement","GenerateReplacement","UpdateExcuseNotesObservable","EventUnexcuseObservable","ExcuseEventModal","canExcuse","excuseMode","excuseSubscription","canExcuseSubscription","excuse","excuseDetails","toggleAlternateExcuseOption","onAltReasonChange","isAltOtherReasonSelectd","disableExcuse","disableAltrnate","disableExcuseButton","disableExcuseAnAlternateButton","exceuseButtonText","exceuseAndAlternateButtonText","paddingTop","UnexcuseEventModalModal","unexcuse","updateComment","disableUpdateButton","UpdateStatusToPending","SelectionInbox","SelectionInboxGridColumns","mapManager","records","element","handleExcuseModalClose","excuseRow","handleUnexcuseModalClose","unexcuseRow","isCanExcuse","isCanUnexcuse","statusButton","setPending","updateToPending","createdDateButton","manager","downloadCsv","ConnectedSelectionInbox","UserInformationObservable","IsOrderSecurityOverride","UserNotificationInformationObservable","ActiveUserInformationGetObservable","isActivateUser","IsActivateUser","UserNotificationInfoUpdate","EmailAddressList","ContactDetail","isActive","DeliveryType","IsNotificationEnabled","IsUser","NotificationEventIDs","NotificationServiceIDs","NotificationMethodIDs","PhoneNumberList","RoleList","RoleTitle","Locations","timeZoneID","isCollectorActive","CreateUser","UserRevoke","applicationUserId","RoleOrderSecurityCheckObservable","roleID","NotificationOptions","selectedIDs","NotificationEventSelection","notificationEvents","setNotificationEvents","NotificationEventID","NotificationMethodSelection","notificationMethods","setNotificationMethods","NotificationMethodID","NotificationServiceSelection","notificationServices","setNotificationServices","ParticipationId","NotificationServicesGet","NotificationSelection","showNotifications","checkedNotificationServiceIDs","checkedNotificationEventIDs","checkedNotificationMethodIDs","onCheckNotificationService","onCheckNotificationEvent","onCheckNotificationMethod","onCheckShowNotifications","AssociatedDataType","EmptyAssociatedData","CreatedBy","CreatedOn","ModifiedOn","saved","AdditionalAssociatedDataModal","onlyOneCanBeActive","showConfirmText","selectedIndex","emptyAssociatedData","hasActive","isUniq","itemsOnInit","resetAttributes","relatedItem","prevValue","deactivateItems","activeIndex","itemsToValidate","isNeedConfirmText","saveData","itemsToSave","addRow","removeRow","removedData","canAddRow","validData","changeContactDetail","toggleTextVoiceOption","setTextVoiceOption","textConfirmed","textNotConfirmed","verified","noInactive","CheckboxList","setData","selectedValues","LocationAdministrator","AdditionalRoleModal","roles","timeZoneId","mapRolesToRoleData","existData","Level","locationRole","handleCloseLocations","onSaveTimeZoneId","timeZones","TimeZoneID","handleTimeZoneChange","updatedRole","tz","OrderSecurityOverrideUpdateObservable","orderSecurityException","MockApplicationUserIDFrom","OrderSecurityException","SetDatePeriod","updateStateWithItems","parseDate","extItems","fromDate","toDate","setValidity","stringKey","OrderSecurityOverride","roleChecking","loadingOverrides","showSetDates","whoCanViewMyOrders","whoCannotViewMyOrders","loadUserSubscription","roleSecurityCheckSubscription","loadOrderSecurityOverrideSubscription","loginName$","roleCheck$","override$","handleLoginNameChange","OrderSecurityOverrideUpdate","MockApplicationUserID","handleRightItemClick","handleSetDatesUpdate","datePeriodItems","datePeriodItem","RoleOrderSecurityCheck","ApplicationUserIDFrom","WhoCanViewMyOrders","WhoCannotViewMyOrders","canFinish","RoleDescription","UserInfoMode","ConnectedOrderSecurityOverride","TimeZoneListGet","UserRolesGetObservable","GetRoles","requestParams","CheckExistingUser","ResetLoginAttempts","RemoveDuplicateRoles","DeleteUser","DeleteRole","applicationUserID","participationID","UserInfo","roleId","lastNameValid","firstNameValid","phoneValid","roleValid","companyValid","showRevokeConfirmation","showResetPasswordConfirmation","showResetLoginAttemptsConfirmation","showRemoveDuplicateRolesConfirmation","showDeleteUserConfirmation","showDeleteRoleConfirmation","canShowDetailsToPerson","showOrderSecurityOverride","revoking","resettingPassword","performingResetLoginAttempts","performingRemoveDuplicateRoles","performingDeleteUser","performingDeleteRole","showAdditionalPhone","showAdditionalRoles","emailChecked","emailAvailable","rolesTypeahead","userRevokeSubscription","userRolesSubscription","existSubscription","removeRoleSubscription","roleID$","timeZoneSubscription","performResetLoginAttempts","performRemoveDuplicateRoles","performDeleteUser","performDeleteRole","mapUserInfo","AssociatedEmail","AssociatedPhone","handleRoleChange","phoneIndex","newPhoneArray","handlePhoneChangeByEditModal","newActivePhone","isLocationAdministrator","handleEmailBlur","showNewUser","existingUser","emailExists","AssociatedRole","emailData","phoneData","roleData","Personal","SaveMethod","performRevoke","performPasswordReset","performClose","handleChangeNotificationService","notificationServiceId","handleChangeNotificationEvent","notificationEventId","handleChangeNotificationMethod","notificationMethodId","handleChangeShowNotifications","observable","isPersonal","readonlyUserName","locationRequired","isShowAdditionalRole","disableSaveButton","formRows","LoginAttempts","modalContent","Team","ConnectedUserInfo","PrimaryRoleID","MyInformation","AssignedClinic","locationId","ConnectedMyInformation","Account","InActive","LastLogin","Role","ProfileStatuses","SendingFacility","InvitationSent","EnrollmentStarted","InvitationStatus","CSVUploadModal","isFileNameValid","isFileSizeValid","uploadPercentage","uploading","fileUploadProgressSubscription","fileUploadSubscription","fileUploadProgress$","handleFileSelect","uploadStatus","handleUpload","onStartUpload","onUploaded","timer","scan","curr","takeWhile","disableUpload","templateCSVUrl","ProgressBar","CreateSiteAdministrator","UserUploadV2","PortalInvitation","UserProfileStatuses","statuses","AdditionalInfo","InvitationStatusMap","INVITATION_REQUESTED","INVITATION_STILL_IN_PROCESS","TOO_MANY_ATTEMPT","INVALID_URL","PENDING","EXPIRED","STARTED","PASSWORD_SET","USER_CONFIGURED","CLINIC_CONFIGURED","CLIENT_CONFIGURED","COMPLETED","InvitationInverseMap","entry","getStatusLabelByKey","getStatusKeyByLabel","DEFAULT_COLUMNS","SEARCH_FIELDS","UserDetailsGrid","showUploadSpreadsheet","loadAll","currentIP","implementationsSubscription","exportToCSVSubscription","implementationsTypeahead","UserIPGet","ip","getValue","showTeamInfoModal","showUserInfoFor","loginAttempts","showNewTeamInfoModal","handleInvitationSetupModalClose","handleImplementationChange","selectedImplementation","handleOpenUpload","handleStartUploading","IPAddress","handleBulkUploaded","LoadAll","onGoToInvitationLink","visibleGridColumns","IsQuickStart","UserDetailsObservable","inactiveString","implementations","UserDetailsCSVObservable","exportToCSV","LastLoginDate","siteAdminEmptyRow","ConnectedUserDetailsGrid","UserActivationObservable","ApplicationUserId","CompanyActivationObservable","PortalActivationObservable","UserActivation","selectedUser","saveUserSubscription","handleActivate","GetRegulatoryModeDonorByID","InsertRegulatoryModeDonor","ActivationType","PersonnelRegulatoryMode","RegulatoryModeNumberSelect","FormGroup","DropdownButton","ButtonGroup","DefaultRegulatoryModeOrder","SSNRank","SSNDescription","EmployerIDRank","EmployerDescription","AlternateIDRank","AltDescription","CommercialLicenseRank","CommercialLicenseDescription","DisplayState","RegulatoryModeForm","changeRegulatoryMode","checkAssignedRank","handleRankSelect","foundEntry","RegulatoryField","CompanyDataObservable","clientName","isActivateClient","IsActivateClient","ImplementationSearchObservable","isActivateClinic","IsActivateClinic","EmailCheck","CompanyNameCheck","isClient","InstanceName","CompanyCodeCheck","UrlCheck","EntityActivation","itemSaving","itemLoading","instanceName","selectedItem","CompanyActivation","PortalActivation","BusinessTypesGetObservable","CompanyInactivateObservable","CompanyUpdateObservable","CompanyCreateObservable","CompaniesGetObservable","ClientName","CompaniesDetailsExportCsv","AddressInput","onAddressChange","AddressMatchModal","addresses","selectedID","subTitle","onAddressSelect","OrderSecurity","overrideOrderSecurity","override","showOrderSecurityForm","onPrev","updateOrderSecurity","showSecurityForm","onNext","primaryRoleID","clientRoleID","ClientRoleID","GetRoleOrderSecurity","currentURL","CanOnlySeeOrdersTheyHavePlacedRole","CanSeeOrdersAnyUserHasPlacedRole","SetRoleOrderSecurity","cancelVariant","cancelText","submitText","invitationMode","ConnectedOrderSecurity","LabAccountCreate","LabAccountUpload","LabAccountSelection","checking","checkSubscription","handleLabCheck","handleNext","ImplementationClientFlag","isClinic","isLabSet","LabAccountListGet","ActivateAndInActiveLabAccountObservable","activeLabAccounts","inactiveLabAccounts","ActiveLabAccount","InActiveLabAccount","addNewLabAccountSelection","leftItems","rightItems","HideOnOrder","inActiveLabAccounts","handleLeftItemClick","shiftKey","ctrlKey","itemsTable","isLeft","userSelect","handleHideOnOrderChange","itemId","locationMode","portalMode","moveLeftToRight","moveRightToLeft","GetSubscriptionPlans","SubscriptionModal","subscriptionPlanID","availableSubscriptionPlans","loadSubscriptionPlans","selectedPlan","plan","SubscriptionPlanID","currentPlan","AutoFilterPortalsGetObservable","PortalsGetObservable","ShowAll","PortalUpdateObservable","PortalInactivateObservable","GetAllImplementationImageByImplementationID","UpdateBrandingImage","implementationImageID","activeDate","inactiveDate","ImplementationImageID","ActiveDate","InActiveDate","EditActiveImageDate","validActiveDate","validInactiveDate","canSave","PortalLogoInsert","logo","ManageImages","editActiveDate","progressBarKey","isFileTypeValid","isLogoSizeValid","uploadError","activeDateCanShowInvalid","inactiveDateCanShowInvalid","activeImages","inactiveImages","uploadSubscription","fileUploadSimulationSubscription","fileUploadSimulation$","loadImplementationImages","ImplementationActiveImages","ImplementationInActiveImages","fileType","img","Image","createImageBitmap","activeImage","handleUploading","ImageName","setActiveImage","newActive","allImages","newActiveImages","newInactiveImages","handleActiveImageDatesUpdate","activeDateString","inactiveDateString","canUpload","imageTable","LocationImportJobCreateObservable","WorkforceLocation","CompanyImport","portalID","handleStartImportValidation","calcColspan","tableColsCount","previewTableColsCount","TotalRowsCount","ValidRowsCount","Rows","RowNum","Errors","Warnings","OriginalString","PortalFields","nameValid","nameChecking","nameAvailable","emailChecking","rolesLoading","checkName$","checkEmail$","nameExistsSubscription","emailExistsSubscription","isRoleValid","isFieldsValid","handleNameChange","onNameChange","IsEmailExists","ConnectedPortalFields","LocationUpdateObservable","LocationCreateObservable","AddLocationModal","LocationInformationForm","streetAddress1","streetAddress2","city","zip","officePhone","fax","locationData","retrievedLocations","timeZonesLoading","showAddLocation","codeChecking","codeAvailable","inactivating","activating","showInactivateConfirmation","showLabAccountSelection","locationName$","checkCode$","searchLocationsSubscription","codeExistsSubscription","inactivateSubscription","mapState","mapLocationData","province","country","webSiteURL","WebsiteURL","handleRetrievedCompanyAddressSelect","handleAddressSelect","StreetLine","performInactivate","CompanyInactivate","performActivate","LocationCreate","LocationUpdate","handleHideAddLocation","handleLocationAddSuccess","isNameTextValid","isNameLengthValid","len","isCodeValid","LocationsGet","CheckLocationName","CheckLocationCode","validName","validCode","validStreetAddress1","validCity","validState","validZip","validPhone","validFax","formValid","saveButtonName","adminMode","EditLocationInformation","DeviceModal","deviceTypeahead","DeviceLabAccountXrefID","Delete","defaultStateFromProps","filterDevices","filteredDevices","currentDevices","addNew","Manufacturer","DeviceSelection","deleteSubscription","addNewDevice","deviceDetails","confirmModal","confirmDelete","showDeviceDetailsModal","devicePanelCodes","res","create","LocationImport","GetAdditionalTests","UpdateAdditionalTests","AdditionalTesting","loadLabAccountsSubscription","loadPanelSubscription","labAccountSelection","panelSelection","st","loadAdditionalTests","newPanelSelection","disableSave","CompanyInformation","contactDerPhone","contactDerFirstName","contactDerLastName","contactPhone","contactFirstName","contactLastName","businessTypeId","portalAdminRoleID","companyData","isTPA","subscriptionPlan","portalData","portalAdminData","labAcctRequired","showSubscriptions","showManageImages","formValidated","businessTypesLoading","businessTypes","subscriptionPlansLoading","subscriptionPlans","retrievedCompanies","showOrderSecurity","showDevices","showCompanyImport","showLocationImport","match","activeLabAccountsCount","showLocation","showAdditionalTesting","isStreetAddress1Valid","isPortalFieldsValid","isZipValid","isBusinessTypeValid","urlValid","urlChecking","isNameChecking","isCodeChecking","mroFileName","isMROFileSizeValid","showNewCompanyModal","searchPortalsSubscription","searchCompaniesSubscription","searchPortalsInitialSubscription","businessTypesSubscription","subscriptionPlansSubscription","loadCompaniesSubscription","urlExistsSubscription","companyName$","implementationName$","searchImplementation$","checkUrl$","mroFile","implementationName","load","mapSubscriptionPlan","retrievedPortalPredictions","retrievedPortals","mapPortalData","portalName","isUrlValid","urlAvailable","urlCheckMessage","BusinessTypesGet","UserRolesGet","mapRole","PrimaryIDTypesGet","mapPrimaryIDType","CompaniesGet","isNameAvailable","isCodeAvailable","mapCompanyData","isCompanyNameValid","ParentID","isSiteAdminOrPortalAdmin","isNew","commonFormValid","disableCodeEdit","isUrlAllowed","isUrlMaxLengthValid","prepareUrl","changeUrlStatePart","ContactDerPhone","ContactDerFirstName","ContactDerLastName","ContactFirstName","ContactLastName","BusinessTypeID","LabAcctRequired","SubDomain","PortalAdditionalRoleID","PrimaryTypeID","plans","street","handlePortalNameChange","handleCompanyNameTyping","handlePortalNameTyping","handleRetrievedPortalAddressSelect","handleRetrievedObjectChoose","updatePortal","createPortal","updateCompany","handlePortalFieldsValidation","codeValue","IsRandomization","NonRegulated","UpdateAdditionalFields","showAdditionalFields","observ","IsGOVTPortal","IsExistingUser","OfficePhone","mroFileContent","SubscriptionPlan","MROLogoFile","PortalUpdate","handleLabAccountsSelectionModalClose","handleLabAccountsNotRequiredChange","handleCompanyNameChange","handleCompanyNameBlur","handleCodeChange","handleCompanyCodeBlur","handleCompaniesExport","disableCheckUrl","allowAdditionalRole","AllowAdditionalRole","validContactPhone","validContactFirstName","validContactLastName","validContactDerPhone","validContactDerFirstName","validContactDerLastName","labAccountsCountValid","canImport","canImportLocation","showActivateButton","isIntl11","isFaxIntl11","businessTypeID","ConnectedCompanyInformation","WorkforceReloadPortalsCompanies","LocationInformation","MyOrganization","OrphanedDelete","DonorIdsCell","DonorRow","ImportErrorType","onSelectDonor","NoMatchingCreateNewObservable","importTestDetail","ImportTestDetailID","TestDetailImportID","TestImportExceptionID","DonorGrid","testID","setDonorID","setSelectedTest","gridData","setGridData","handleSelectDonor","donorID","PendingDrugTestRow","hideCheckbox","highlighted","isNotWithinCurrentProgramYear","currentProgramYear","testProgramYear","ProgramStartDate","classes","notCurrentYear","createdDate","timeDiff","isLess90Days","onChangeCapture","ReasonDescription","LoadingTableBodyWrapper","recordsCount","columnsCount","noDataText","PendingDrugTests","importTest","onSelectTest","showTitle","loadingTests","setLoadingTests","parsedRecords","ProgramEndDate","handleSelectTest","testId","PendingDrugTestsButtons","selectedDonor","acceptSpin","createNewSpin","onCreateNew","onAccept","ImportExceptionSubType","DonorNotFoundError","errorRow","AddNew","setAddNew","Search","setSearch","acceptProc","setAcceptProc","modalTite","donorNotFound","ImportException","importExceptionSubType","ImportExceptionSubTypeID","TestDoesNotExist","MoreThanOneTestMatch","ReasonCode","dialogTitle","ModalHeader","ModalTitle","ModalBody","acceptOptions","PendingTestDetailID","PendingClinicalTestDetailID","NoMatchingRandomError","createNewProc","setCreateNewProc","showDonorNotFound","setDonorNotFound","setHideModal","pendingTestDetail","KeepTestReason","NoMatchingRandom","PendingClinicalTestRow","PendingClinicalTests","PendingClinicalTestsButtons","DRUG_TESTS_TAB","CLINICAL_TESTS_TAB","NoMatchingTestError","selectedClinicalTest","setSelectedClinicalTest","acceptClinicalProc","setAcceptClinicalProc","createNewClinicalProc","setCreateNewClinicalProc","setCurrentTab","showDrugTestsTab","showClinicalTestsTab","NoMatchingTest","PendingTestDetailClinicalID","AccountNotFoundError","setAccountID","testDetailImportID","testImportExceptionID","OrphanedResults","selectedList","recordCount","showDonorNotFoundError","showNoMatchingRandomError","showNoMatchingTestError","showAccountNotFoundError","actionsSubscription","handleAllTestDetailCheck","handleTestDetailCheck","isClinical","handleDelete","deleteRecords","renderColumns","testDetailSelected","clinicalId","linkVisible","isShowErrorDialog","showErrorDialog","onCloseDonorNotFoundError","withUpdate","onCloseAccountNotFoundError","onCloseNoMatchingRandomError","onCloseNoMatchingTestError","isShowDonorNotFoundError","DonorDoesNotExist","MoreThanOneDonorMatch","isShowNoMatchingRandomError","isShowNoMatchingTestError","isShowAccountNotFoundError","LabAccountNotFoundorNotAssignedtoaCompany","LabAccountAssignedMorethanOneCompany","mapCCFImage","space","OrphanedGridGet","InvitationStatusGrid","TimeZoneOffset","ResendInvitation","resend","DeleteInvitation","deleteModel","ResendInvitationModal","resendInvitationSubscription","deleteInvitationSubscription","deletingInvitation","resendingtInvitation","populateContacts","modalData","resendInvitation","onResendInvitation","deleteInvitation","onDeleteInvitation","AdminSetupModal","handleCreateClick","GetRoleDroplist","ConnectedAdminSetupModal","ShowModalForStatus","showAdminInvitation","InvitationStatusGridColumns","getUserName","keyCell","renderDataColumns","InvitationStatusListGet","ConnectedInvitationStatusGrid","GetGlobalParameter","parameterTitle","GlobalParameterUpdate","ParameterID","ParameterTitle","ParameterDescription","ParameterType","ParameterValue","ParameterTypeUpdate","ParameterTypeDescription","GetParameterType","parameterType","GetParameterTypes","ParameterTypeModal","parameterTypeID","parameterTypeDescription","isTypeValid","isDescriptionValid","dataLoading","handleDescriptionChange","ParameterTypeID","stateToData","GlobalParameter","parameterID","parameterDescription","parameterValue","createdBy","isTitleValid","isValueValid","parameterTypesLoading","parameterTypes","showAddParameterType","parameterTypesSubmitted","loadParameterTypeSubscription","handleExit","clearData","handleTitleChange","handleValueChange","handleParameterTypeChange","isParameterTypeValid","handleAddParameterType","addParameterType","closeParameterType","loadParameterTypes","isDataValid","isLoadingOrSaving","ConnectedGlobalParameter","OrderableServicesModal","portalServices","selectedCompanyID","loadCompanyServicesSubscription","mapServiceToServiceData","mapAccountServiceToServiceData","mappedServices","accountService","portalAccountService","Disabled","Services","AccountServices","toggleActivate","handleEmptyPortal","selectedPortalID","disableDefaultTooltip","showDefault","ConnectedOrderableServicesModal","CopyCompanyUserCode","CopyCompanyUserCodes","GetCompanyUserCodes","userFieldType","UserFieldType","SaveCompanyUserCode","companyUserCode","DeleteCompanyUserCode","CompanyUserCodeModal","selectedUserCode","showConfirmUpdate","UserDefinedCodeID","ErrorMessage","disableEditCode","UserCodesModal","implementationFields","implementationFieldsLoading","companyUserCodes","companyUserCodesLoading","showCompanyUserCodeEditor","Dependents","showOnDeleteConfirmation","deletingUserCode","loadImplementationFieldsSubscription","loadCompanyCodesSubscription","getItemForEdit","handleImplementationFieldChange","userCodeClick","userCodeDeleteClick","handleCompanyUserCodeSave","userDefinedCodeID","handleCompanyUserCodeClose","handleDeleteCompanyUserCode","emptyUserCode","handleCloseDeleteConfirmation","keyValue","ConnectedUserCodesModal","SaveImplementationUserLabels","userLabels","UserLabelsModal","onDataLoaded","dataFromState","inProgress","SetImplementationLabResultsReporting","AccountLabResultsReportingGet","SetAccountLabResultsReporting","LabResultsReportingModal","POCTRequireLab","POCTRequireMRO","loadPortalSubscription","loadCompaniesData","UpdateUserLoginID","mroNonDOTNeg","mroNonDOTPos","poctRequireLab","poctRequireMRO","handleEmptyCompany","toggleMRONONDOTNeg","toggleMRONONDOTPos","togglePOCTReqLabConf","togglePOCTReqMRO","implementationGroupId","InvitationType","ConnectedLabResultsReportingModal","GetOneTimePIN","ScoreStatus","ValidatePIN","currentPin","showValidatePIN","didNotReceivePIN","pinDidNotMatch","requestNewPIN","validCaptcha","showTooManyAttempts","outboxAN","enteredPIN","OneTimePin","OutboxAN","validateOneTimePinSuccess","sendOneTimePINSuccess","onKeyUp","validatePIN","onBack","goToLogin","sitekey","onErrored","onExpired","hl","InvitationPage","ValidateIdentity","userMobileNumber","userPhoneNumber","currentOutboxAN","showContactForm","INVITATION_IN_USE","showSendPin","VALIDATE_PIN","showLinkExpired","getOneTimePIN","getOneTimePinSuccess","getOneTimePinError","setMethod","showByVoice","userEmail","pin","SetupComplete","CalculatePasswordScore","pwd","calculatedScore","numOfMidChar","noOfSymBonus","lcImgStatus","fail","ucImgStatus","numImgStatus","symImgStatus","midImgStatus","reqImgStatus","pwdLenImgStatus","pwdLength","noOfLC","noOfUC","noOfNum","noOfSym","numOfRequirements","noOfCharBonus","noOfLCBonus","noOfUCBonus","noOfNumBonus","noOfMidBonus","noOfRequirementsBonus","noOfAlphasOnly","noOfNumbersOnly","noOfRepChar","noOfConsecAlphaUC","noOfConsecAlphaLC","noOfConsecNumber","noOfSeqAlpha","noOfSeqNumber","noOfSeqSymbol","alphasOnlyImgStatus","pass","numbersOnlyImgStatus","repCharImgStatus","consecAlphaUCImgStatus","consecAlphaLCImgStatus","consecNumberImgStatus","seqAlphaImgStatus","seqNumberImgStatus","seqSymbolImgStatus","noOfAlphasOnlyBonus","noOfNumbersOnlyBonus","noOfRepCharBonus","noOfConsecAlphaUCBonus","noOfConsecAlphaLCBonus","noOfConsecNumberBonus","noOfSeqAlphaBonus","noOfSeqNumberBonus","noOfSeqSymbolBonus","nConsecSymbol","nConsecCharType","nSeqChar","reverse","str","nScore","nAlphaUC","nAlphaLC","nNumber","nSymbol","nMidChar","nRequirements","nAlphasOnly","nNumbersOnly","nUnqChar","nRepChar","nRepInc","nConsecAlphaUC","nConsecAlphaLC","nConsecNumber","nSeqAlpha","nSeqNumber","nSeqSymbol","nReqChar","nTmpAlphaUC","nTmpAlphaLC","nTmpNumber","nTmpSymbol","sAlphaUC","sAlphaLC","sNumber","sSymbol","sMidChar","sRequirements","sAlphasOnly","sNumbersOnly","sRepChar","sConsecAlphaUC","sConsecAlphaLC","sConsecNumber","sSeqAlpha","sSeqNumber","sSeqSymbol","arrPwd","arrPwdLen","charValue","bCharExists","repeatedChar","sequentialAlpha","sFwd","sRev","sequentialNumeric","sequentialSymbol","exceed","nMinReqChars","warn","SetPassword","InvitationStep","passwordScore","showPassword","statusImages","passwordStatus_Exceed","passwordStatus_Pass","passwordStatus_Warn","passwordStatus_Fail","handlePasswordChange","handleSetPasswordClick","PIN","PasswordSet","passwordComplexity","score","statusImage","scoreValue","scoreSign","requirements","totalScore","backgroundPositionX","InvitationProcess","checkInactiveSubscription","navigateNotFound","getInvitationStatus","invitationType","mapInvitationType","invitationStep","mapStep","User","IsConfigurePassword","ConfigurePassword","Unknown","setPassword","validateIdentity","setupComplete","handleNextUser","handleNextConfigurePassword","setupCompleteTitle","InvalidPasswordReset","goHome","Jumbotron","buildFetchRequest","apiAuth","defaultTokens","RequestEmail","Forgot","RequestVoice","GetRefreshTypeForApi","RefreshType","UpdateUserPasswordToken","errorHandling","Source","RequestPhonePin","requestingPhone","requestText","requestNewPhonePin","requestNewPhonePinVoice","requestNewPhonePinText","requestedPhone","skinny","NoPin","EnterPhonePin","doesPinLookValid","pinNumberFound","submitPin","FormText","changePin","PassScoreStatus","FailScoreStatus","ExceedScoreStatus","DefaultFailRequirement","DefaultPassedRequirement","DefaultPasswordScore","calculatedAsANumber","passwordScoreMultipliers","allUpperCaseLettersRegex","allLowerCaseLettersRegex","allNumbersRegex","allSymbolsRegex","CheckForSequentialPatterns","pattern","sizeOfPatternToCheck","sequenceCount","decimalNumberRadix","passwordScoreAsNumber","passwordCardinality","cardinality","lastUpperCaseLetterCharValue","lastLowerCaseLetterCharValue","lastNumberCharValue","lastSymbolCharValue","ConsecutiveSymbolCount","UpperCaseLetterCount","ConsecutiveUpperCaseLetterCount","ConsecutiveLowerCaseLetterCount","LowerCaseLetterCount","ConsecutiveNumberCount","ConsecutiveCount","middleCharacterCount","numberCount","symbolCount","repetitionIncrement","repetitionCharacter","passwordLength","stringArrayOfPassword","indexOfCharValue","repeatCharacterExists","numberForUniqueCharacters","determineCardinalityOfPassword","sequenceChecksResults","currentPasswordScore","AlphaSequenceDuplicates","NumericSequenceDuplicates","SequenceSymbolDuplicates","requirementsMet","neededRequirements","checkIfPasswordMissesRequirements","SequenceCount","RunSequenceChecks","initialScore","currentScore","determinePasswordScoreFromPasswordCardinality","PasswordCheckStatusImage","PasswordDeductions","requirementsTableRow","requirement","otherRows","PasswordScoreAdditions","NewPassword","showPasswordText","passwordAppearsValid","submitPassword","changePassword","UpdateUserPassword","EmailSecret","Pin","OldPassword","PasswordResetLanding","requestedPhonePinSend","changingPassword","isPasswordTimeInvalid","linkTime","linkCreatedEpochTimeMS","getUTCMilliseconds","pinRequested","pinChanged","pinSubmitted","requestPasswordChange","newPassword","linkId","validLinkTime","UnassignedSubscriptionPermissionsGet","PermissionsOfSubscriptionPlanGet","subscriptionPlanTitle","NotAssignedPermissionsOfSubscriptionPlanGet","SubscriptionPlanPermissionSave","AssignedPermission","PendingPermissionsGet","InactivePermissionsGet","PermissionsApprove","approvedBy","ApprovePermission","ApprovedBy","RolesGet","PermissionsOfRoleGet","roleTitle","NotAssignedPermissionsOfRoleGet","RoleCreate","PermissionInRoleSave","PendingSubscriptionsPermissionsMappingGet","InactiveSubscriptionsPermissionsMappingGet","SubscriptionsPermissionsMappingApprove","ApproveSubscriptionPlanPermission","PendingRolePermissionsGet","InactiveRolePermissionsGet","RolePermissionsApprove","ApproveRolePermission","SubscriptionPlanCreate","PermissionsSubscriptionModal","selectedSubscription","editPermission","unassigned","assigned","notassigned","showAddNewModal","showEditModal","newSubscription","initialLoadSubscriptions","activedate","inactivedate","selectSubscription","handleAddNewCancel","handleEditCancel","subscriptionPlanDescription","handleAddNewSubmit","handleEditSubmit","relatedPermission","PermissionID","InactiveDate","handleAddNew","handleEdit","permission","addNewValid","editValid","validSubmit","handleActiveDateChange","dateiInPast","allowChange","handleInActiveDateChange","left","boxShadow","RecordStatusType","DualTableBox","optionsAtRight","columnValue","columnFn","handleItemClick","clicked","table","selectionFieldName","showHeader","leftTitle","rightTitle","leftColumns","hideLeftHeader","rightColumns","hideRightHeader","PermissionSelectionType","ApproveNewPermissionsModal","selectedPermissions","showInactivePermissions$","handleApprove","PermissionsRoleModalModal","selectedRole","newRole","titleDuplicated","roleActivedate","roleInactivedate","newRoleActivedate","newRoleInactivedate","selectRole","handleNewTitleChange","validateTitle","handleRoleActiveDateChange","handleRoleInActiveDateChange","ApproveRolePermissionsModal","ApproveSubscriptionRelationshipsModal","PermissionsSelection","NoSelection","showPermissionsSubscriptionModal","showPermissionsRoleModal","showApproveNewPermissionsModal","showApproveSubscriptionsModal","showApproveRolesModal","PermissionsSubscription","PermissionsRole","ApproveNewPermissions","ApproveSubscriptions","ApproveRoles","handleModalCancel","ConnectedPermissionsSelection","ProtectedRoute","routes","HasAccessToAtLeastOneRoute","GetUserDefaultRoute","GovOrderedServices","serviceType","FormatGender","GovOrderDonorInfo","GovOrderRequest","infoHtml","onInfoHtmlChange","getSampleTypeCode","UrinePOCT","SalivaDrugPOCT","SalivaDrug","performCollection","orderString","orderData","Device","panelSelected","isPanelValid","panelDescription","labClientMemberId","GetAuthFormPage","loadAuthFormPdf","SSOCallback","bytes","TextDecoder","decode","parsePayload","Target","user","access_token","OnTrackReportType","GovReportsObservable","getOnTrackReport","TestSummary","SpecimenPositivity","DrugDetail","DailySummary","IVRCallInCompliance","ReportParameters","locationsLoading","groupLoading","donorLoading","regulatoryModeLoading","companyChecked","groupChecked","donorChecked","typeaheadGroup","donorSubscription","handleGroupChange","selectedGroup","handleCompanyChecked","handleGroupChecked","handleDonorChecked","handleGenerateReportClick","reportType","groupID","validateDonorFormat","isParamsValid","muted","ConnectedReportParameters","AddNewAdminModal","implementationValid","implementationsLoading","getPortalSetupModalValidity","subdomain","isImplementationsLoading","disableCreate","ConnectedPortalSetupModal","PortalGrid","showUserInfo","showAddAdmin","handleAddPortal","hideUserInfo","handleAddAdminModalClose","implementationGroupID","ConnectedPortalGrid","AddNewPortal","AccountInput","accountAsyncTypeahead","accountTypeahead","accounts$","defaultAccountName","getAccountName","subcribeAccounts","DriverCertificationReportGet","reportID","donorStatus","ReportID","DonorStatus","BreakByCompanies","WorkforceReportParameters","ranges","years","selectedStatus","selectedRange","yearsLoading","includeAlcohol","rangeChecked","yearChecked","allCompaniesChecked","poolChecked","allPoolsChecked","typeaheadPool","selectedPool","handleDonorStatusChange","handleRegModeChange","selectedMode","handleYearChange","selectedYear","handleDateRangeChange","switchRadioButton","handlePoolChecked","handleAllPoolsChecked","handleAllCompaniesChecked","handleAccountTypeChanged","at","MasterAccount","handleYearChecked","handleRangeChecked","handleClearClick","currentYear","generateDriverCertification","generateManagementSummary","generateMIS","generateSNTPDF","generateCertificationStatus","isAccountType","BreakByLocations","IncludeAlcoholTests","DtFromDate","DtToDate","ReportMode","generateSNT","generateSNTCSV","outputFormat","OutputFormat","isReportParametersValid","companiesSelected","showDonorStatusSection","showDonorSelector","showSummarySection","showDatesSection","showMISSection","showSNTSection","showAcountInput","needLoadCompanies","loadCompanies","showCompanyLabel","showFilterByCompany","showFilterByMasterAccount","isSNT","showAllCompanies","showAllPools","y","ConnectedWorkforceReportParameters","mapParams","IncludeArchivedOrders","DateTypeLabel","EVENTED","REVIEWED","ORDERED","TESTED","SCHEDULED","SummaryReport","portalAdmin","useSelector","useHistory","generatingPdf","setGeneratingPdf","setCompanies","setSelectedCompanies","selectedDateType","setDateType","CUSTOM_FILTER","selectedDateRange","setDateRange","toDay","currentMonth","CURRENT_MONTH","PREVIOUS_MONTH","FROM_BEGINNING_OF_YEAR","LAST_30_DAYS","getReportParams","PortalSelectionModal","AddNewCompany","RequireCompleteSetupModal","openInvitation","PostLogData","Url","Exception","Stack","stack","ComponentStack","componentStack","WindowWidth","screen","availWidth","WindowHeight","availHeight","source","lineno","colno","WS_Url","Namespace","SendingFacility_Code","SaveSendingFacilityObservable","model","SendingFacilityModal","isSendingFacilityValid","loadPortalNameSubscription","timezoneTypeahead","SendingFacilityAN","SOAPVersion","TimeZoneAN","WSUserName","WSPassword","MaskPos","SendImages","CRMUpdates","InstallationId","timezoneValue","timezones","zone","currentPortal","initialPortalData","handleSendingFacilityChange","SendingFacilityPage","commonSubscription","sendingFacilityDetails","showSendingFacilityDetailsModal","SendingFacilityObservable","ConsortiumPools","ConsortiumPersonnel","PositiveReport","loadingCSV","exportSubscription","handleLoadClick","CompanyIds","renderRow","ResultDescription","PositiveDrugList","COLLECTED","MRO_REPORTED","LAB_REPORTED","DateTypeSelection","selectedType","UnmergedRandomResultsReport","install","handleUncaughtExceptions","App","checkAppVersionAndReload","meta","latestVersion","currentVersion","appVerGreaterThan","loadNewAppVersion","versionsA","versionsB","shift","caches","delete","pageLoaded","LogErrorToServer","wrongUrl","authenticatedAndCompanySelected","authenticatedAndSelectedAndUserAccessLoaded","loadedUserPermission","exact","component","ConnectedSSOWorkforce1Login","LegacyWorkforceUserInvitationRoute","LegacyWorkforceCompanyInvitationRoute","LegacyWorkforcePortalInvitationRoute","WorkforceOnePswConfigureRoute","WorkforceOnePswUpdate","OrderResults","Permissions","GovDonor","SSOSiteSearchPage","SSOGetAuthFormPage","ConnectedApp","ReactDOM","getElementById"],"mappings":"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AAEhrC,OAAQttD,EAAExf,OAAOqU,QAAS,EAA1F,EAHZ,UAIE,wBAAQA,MAAM,GAAd,oBACA,wBAAQA,MAAM,IAAd,kBACA,wBAAQA,MAAM,IAAd,iCAQf,K,GAjb2CzU,aAAzBy2G,GAmbZ5nF,aAAe,CACpB4rF,YAAY,EACZC,mBAAmB,EACnBC,kBAAmB,gBACnBC,kBAAmB,gBACnBnB,kBAAmB,YACnBC,kBAAmB,YACnBK,sBAAsB,EACtBE,iBAAiB,GCheW,IAAIzuD,OAChC,gIAEqC,IAAIA,OACzC,kfAIuC,KAoBpC,IAAMwvD,GAA4E,CACrF,GC3CmB,UD4CnB,GC3CkB,SD4ClB,GC3CmB,UD4CnB,GC3CoB,WD4CpB,GC3CsB,aD4CtB,GC3CoB,WD4CpB,GC3CuB,cD4CvB,GC3CoB,WD4CpB,GC3CmB,UD4CnB,GC3CmB,UD4CnB,GC3CkB,SD4ClB,GC3CiB,QD4CjB,GC3CoB,WD4CpB,GC3CmB,UD4CnB,GC3CgB,OD4ChB,GC3CkB,SD4ClB,GC3CoB,WD4CpB,GC3CqB,YD4CrB,GC3CiB,QD4CjB,GC3CoB,WD4CpB,GC3CyB,gBD4CzB,GC3CoB,WD4CpB,GC3CqB,YD4CrB,GC3CuB,cD4CvB,GC3CoB,WD4CpB,GC3CmB,UD4CnB,GC3CoB,WD4CpB,GC3CkB,SD4ClB,GC3CwB,eD4CxB,GC3CqB,YD4CrB,GC3CqB,YD4CrB,GC3CmB,UD4CnB,GC3CyB,gBD4CzB,GC3CuB,cD4CvB,GC3CgB,OD4ChB,GC3CoB,WD4CpB,GC3CkB,SD4ClB,GC3CwB,eD4CxB,GC3CuB,cD4CvB,GC3CyB,gBD4CzB,GC3CuB,cD4CvB,GC3CqB,YD4CrB,GC3CiB,QD4CjB,GC3CgB,OD4ChB,GC3CmB,UD4CnB,GC3CoB,WD4CpB,GC3CsB,aD4CtB,GC3CwB,eD4CxB,GC3CqB,YD4CrB,GC3CmB,WD8CVC,GAA0D,CACnEC,QAAS,MACTC,OAAQ,OACRC,QAAS,MACTC,SAAU,MACVC,WAAY,MACZC,SAAU,MACVC,YAAa,MACbC,SAAU,MACVC,QAAS,MACTC,QAAS,MACTC,OAAQ,MACRC,MAAO,MACPC,SAAU,MACVC,Q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","file":"static/js/main.63b3d450.chunk.js","sourcesContent":["import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import { Component } from \"react\"\r\nimport packageJson from '../../../package.json'\r\n\r\ninterface CopyRightState {\r\n buildVersion: string;\r\n}\r\n\r\nexport default class CopyRight extends Component<{}, CopyRightState> {\r\n\r\n state: CopyRightState = {\r\n buildVersion: packageJson.version\r\n };\r\n\r\n componentDidMount() {\r\n fetch('build.json')\r\n .then((response) => response.json())\r\n .then((build) => {\r\n this.setState({ buildVersion: build.version })\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n © {new Date().getFullYear()}, Clinical Reference Laboratory, Inc.\r\n {!location.host.includes(\"ontrack\") &&

V {this.state.buildVersion}

}\r\n \r\n )\r\n }\r\n}","import React from \"react\";\r\n\r\nexport default function TOS(){\r\n return (\r\n <>\r\n \r\n Terms of Use\r\n \r\n \r\n )\r\n}\r\n","import React from \"react\";\r\n\r\nexport default function PrivacyPolicy(){\r\n return (\r\n <>\r\n \r\n Privacy Policy\r\n \r\n \r\n )\r\n}\r\n","// portals really should not be cached, and rather refreshed with the token but no real choice right now..\r\nimport {WorkforceClinicPortal} from \"../AppState\";\r\n\r\nexport function SetLoginPortals(Clinics: WorkforceClinicPortal[]){\r\n sessionStorage.setItem(\"wf2-STRY0045127-portals\", JSON.stringify(Clinics));\r\n}\r\nexport function GetLoginPortals(): WorkforceClinicPortal[] | null {\r\n const storageForPortals = sessionStorage.getItem(\"wf2-STRY0045127-portals\")\r\n if(!storageForPortals){\r\n return null;\r\n }\r\n return JSON.parse(storageForPortals);\r\n}\r\n\r\nexport function setOrphanedResultsCount(orphanedResultsCount: number) {\r\n sessionStorage.setItem(\"OrphanedResultsCount\", orphanedResultsCount.toString());\r\n window.dispatchEvent(new Event('storage'));\r\n}\r\n\r\nexport function getOrphanedResultsCount(): number {\r\n const orphanedResultsCount = sessionStorage.getItem(\"OrphanedResultsCount\")\r\n let result = -1\r\n if (orphanedResultsCount) {\r\n result = parseInt(orphanedResultsCount)\r\n if (isNaN(result)) {\r\n result = -1\r\n }\r\n }\r\n return result\r\n}","import {SetCompanySelection} from \"../storage/CompanySelection\";\r\nimport { SetLoginPortals } from \"../storage/LogInPortals\";\r\nimport { WorkforceClinicPortal } from \"../AppState\";\r\n\r\nexport interface CompanySelectedPayload{\r\n participationId: string,\r\n Link: string\r\n}\r\n\r\nexport interface CompanyUpdatePayload{\r\n ForceReload: boolean\r\n}\r\n\r\nexport interface AllowCompanySelectionPayload{\r\n showSelection: boolean\r\n}\r\n\r\nexport type COMPANY_SELECTED_TYPE = 'COMPANY_SELECTED';\r\nexport const COMPANY_SELECTED = 'COMPANY_SELECTED';\r\n\r\nexport type COMPANY_UPDATED_TYPE = 'COMPANY_UPDATED';\r\nexport const COMPANY_UPDATED = 'COMPANY_UPDATED';\r\n\r\nexport type CLINIC_LIST_UPDATED_TYPE = 'CLINIC_LIST_UPDATED';\r\nexport const CLINIC_LIST_UPDATED = 'CLINIC_LIST_UPDATED';\r\n\r\nexport type ALLOW_COMPANY_SELECTION_TYPE = 'ALLOW_COMPANY_SELECTION';\r\nexport const ALLOW_COMPANY_SELECTION = 'ALLOW_COMPANY_SELECTION';\r\n\r\nexport interface CompanySelectedAction{\r\n type: COMPANY_SELECTED_TYPE\r\n payload: CompanySelectedPayload\r\n}\r\n\r\nexport interface CompanyUpdateAction{\r\n type: COMPANY_UPDATED_TYPE\r\n payload: CompanyUpdatePayload\r\n}\r\n\r\nexport interface ClinicListUpdatedPayload{\r\n Clinic: WorkforceClinicPortal[]\r\n}\r\n\r\ninterface ClinicListUpdatedAction {\r\n type: CLINIC_LIST_UPDATED_TYPE\r\n payload: ClinicListUpdatedPayload\r\n}\r\n\r\nexport interface AllowCompanySelectionAction{\r\n type: ALLOW_COMPANY_SELECTION_TYPE\r\n payload: AllowCompanySelectionPayload\r\n}\r\n\r\nexport function WorkforceReloadPortalsCompanies(forceReload: boolean = false): CompanyUpdateAction {\r\n return {\r\n type: COMPANY_UPDATED,\r\n payload: { ForceReload: forceReload }\r\n }\r\n}\r\n\r\nexport function CompanyUpdated(data: ClinicListUpdatedPayload | null): ClinicListUpdatedAction {\r\n if(data && data.Clinic){\r\n SetLoginPortals(data.Clinic)\r\n }\r\n return {\r\n type: CLINIC_LIST_UPDATED,\r\n payload: {Clinic: data?.Clinic || []}\r\n }\r\n}\r\n\r\nexport function SelectCompany(participationId: string, logInLink: string): CompanySelectedAction{\r\n SetCompanySelection(participationId, logInLink);\r\n return {\r\n type: COMPANY_SELECTED,\r\n payload: {\r\n participationId,\r\n Link: logInLink\r\n }\r\n };\r\n}\r\n\r\nexport function AllowSelectCompany(): AllowCompanySelectionAction{\r\n return {\r\n type: ALLOW_COMPANY_SELECTION,\r\n payload: {\r\n showSelection: true\r\n }\r\n };\r\n}\r\n\r\nexport type WorkforceClinicActions = | CompanySelectedAction | AllowCompanySelectionAction | CompanyUpdateAction | ClinicListUpdatedAction;\r\n","\r\n//we should really just be setting the company id/name here,but for now, and because we have STRY0045127,\r\n// just going to set the link as well, rather then looking up the story\r\n\r\nexport function SetCompanySelection(company: string, loginLink: string){\r\n sessionStorage.setItem(\"company-selection\", company);\r\n sessionStorage.setItem(\"company-selection-link\", loginLink);\r\n}\r\nexport function getCompanySelection(): {company: string | null, loginLink: string | null}{\r\n const company = sessionStorage.getItem(\"company-selection\");\r\n const loginLink = sessionStorage.getItem(\"company-selection-link\");\r\n return {\r\n company,\r\n loginLink\r\n };\r\n}","//should be moved to the epic or action by STRY0045127, use connect with redux rather then then this function\r\n\r\nexport function SetAuthToken(token: string){\r\n sessionStorage.setItem(\"wf2-STRY0045127\", token);\r\n}\r\nexport function GetAuthToken(): string | null {\r\n return sessionStorage.getItem(\"wf2-STRY0045127\");\r\n}\r\nexport function ClearAuth(){\r\n localStorage.removeItem(\"portalImage\");\r\n //this assumes everything in the session is sensitive..\r\n sessionStorage.clear()\r\n}\r\n\r\nexport function SetSSOToken(token: string){\r\n sessionStorage.setItem(\"SSOToken\", token);\r\n}\r\nexport function GetSSOToken(): string {\r\n const v = sessionStorage.getItem(\"SSOToken\");\r\n if(v){\r\n return v;\r\n }\r\n return \"\";\r\n}\r\n\r\nexport function SetSiteSearchMode(){\r\n sessionStorage.setItem(\"SiteSearch\", \"true\");\r\n}\r\n\r\nexport function SetEmbeddedOrderMode(){\r\n sessionStorage.setItem(\"EmbeddedOrder\", \"true\");\r\n}\r\n\r\nexport function SiteSearchModeEnabled(): boolean {\r\n const v = sessionStorage.getItem(\"SiteSearch\");\r\n if(v){\r\n return v == \"true\";\r\n }\r\n return false;\r\n}\r\n\r\nexport function EmbeddedOrderModeEnabled(): boolean {\r\n const v = sessionStorage.getItem(\"EmbeddedOrder\");\r\n if(v){\r\n return v == \"true\";\r\n }\r\n return false;\r\n}\r\n\r\nexport function SetSSOPayload(data: string){\r\n sessionStorage.setItem(\"SSOPayload\", data);\r\n}\r\nexport function GetSSOPayload(): string {\r\n const v = sessionStorage.getItem(\"SSOPayload\");\r\n if(v){\r\n return v;\r\n }\r\n return \"\";\r\n}\r\n\r\nexport function SetSSOAction(data: string){\r\n sessionStorage.setItem(\"SSOAction\", data || \"\");\r\n}\r\n\r\nexport function GetSSOAction(): string {\r\n const v = sessionStorage.getItem(\"SSOAction\");\r\n if(v){\r\n return v;\r\n }\r\n return \"\";\r\n}","export function SetUserId(id: string | number){\r\n if(id){\r\n sessionStorage.setItem(\"wf2-STRY0045127-id\", id.toString());\r\n }else {\r\n console.log(\"Impossible Error, User ID should not be empty! \");\r\n }\r\n}\r\nexport function GetUserId(): string | number | null {\r\n const userIdText = sessionStorage.getItem(\"wf2-STRY0045127-id\");\r\n if(!userIdText){\r\n return null;\r\n }\r\n const userIdNumber = parseInt(userIdText);\r\n return !!userIdNumber? userIdNumber : (userIdText || \"\");\r\n}","import {ClearAuth, SetAuthToken, SetSSOToken} from \"../storage/AuthToken\";\r\nimport {WorkforceClinicPortal} from \"../AppState\";\r\nimport {SetLoginPortals} from \"../storage/LogInPortals\";\r\nimport {SetUserId} from \"../storage/UserId\";\r\nimport {toast} from \"react-toastify\";\r\nimport {GetUrlLocation} from \"../BaseUrl\";\r\n\r\nexport type USER_LOGIN_TYPE = 'WORKFORCE_ONE_LOGIN';\r\nexport type SSO_USER_LOGIN_TYPE = 'SSO_WORKFORCE_ONE_LOGIN';\r\nexport type SSO_TOKEN_USER_LOGIN_TYPE = 'SSO_TOKEN_WORKFORCE_ONE_LOGIN';\r\nexport const USER_LOGIN = 'WORKFORCE_ONE_LOGIN';\r\nexport const SSO_USER_LOGIN = 'SSO_WORKFORCE_ONE_LOGIN';\r\nexport const SSO_TOKEN_USER_LOGIN = 'SSO_TOKEN_WORKFORCE_ONE_LOGIN';\r\nexport interface WorkforceOneLoginPayload{\r\n userName:string\r\n password: string\r\n requestedUri: string\r\n sourceIp: string\r\n}\r\nexport interface SSOWorkforceOneLoginPayload{\r\n requestedUri: string\r\n sourceIp: string\r\n ssoToken: string\r\n data?: string\r\n}\r\nexport interface SSOTokenWorkforceOneLoginPayload{\r\n requestedUri: string\r\n sourceIp: string\r\n ssoToken: string\r\n isSiteSearch: boolean\r\n isEmbeddedOrder: boolean\r\n action:string\r\n}\r\nconst doNotTrustClientIps = \"127.0.0.1\";\r\nexport function loginToWorkforce(userName: string, password: string): WorkforceOneLoginAction{\r\n return {\r\n type: USER_LOGIN,\r\n payload: {\r\n userName,\r\n password,\r\n requestedUri: `${window.location.protocol}//${window.location.hostname}/clinicportal/#/workforce-login`,\r\n sourceIp: doNotTrustClientIps\r\n }\r\n }\r\n}\r\n\r\nexport function ssoOrderRequest(ssoToken: string, data?: string): SSOWorkforceOneLoginAction{\r\n return {\r\n type: SSO_USER_LOGIN,\r\n payload: {\r\n requestedUri: `${window.location.protocol}//${window.location.hostname}/clinicportal/#/workforce-login`,\r\n sourceIp: doNotTrustClientIps,\r\n ssoToken: ssoToken,\r\n data: data\r\n }\r\n }\r\n}\r\nexport function ssoTokenLoginToWorkforce(ssoToken: string, isSiteSearch: boolean, isEmbeddedOrder: boolean, action:string): SSOTokenWorkforceOneLoginAction{\r\n return {\r\n type: SSO_TOKEN_USER_LOGIN,\r\n payload: {\r\n requestedUri: `${window.location.protocol}//${window.location.hostname}/clinicportal/#/workforce-login`,\r\n sourceIp: doNotTrustClientIps,\r\n ssoToken: ssoToken,\r\n isSiteSearch: isSiteSearch,\r\n isEmbeddedOrder: isEmbeddedOrder,\r\n action:action\r\n }\r\n }\r\n}\r\nexport interface WorkforceOneLoginAction{\r\n type: USER_LOGIN_TYPE\r\n payload: WorkforceOneLoginPayload\r\n}\r\nexport interface SSOWorkforceOneLoginAction{\r\n type: SSO_USER_LOGIN_TYPE\r\n payload: SSOWorkforceOneLoginPayload\r\n}\r\nexport interface SSOTokenWorkforceOneLoginAction{\r\n type: SSO_TOKEN_USER_LOGIN_TYPE\r\n payload: SSOTokenWorkforceOneLoginPayload\r\n}\r\ninterface ClinicPortals {\r\n Clinic: WorkforceClinicPortal[]\r\n}\r\nexport interface WorkforceOneLoggedInPayload{\r\n Portal: ClinicPortals\r\n AuthToken: string\r\n UserId: number | string\r\n UserName?:string\r\n}\r\nexport type USER_LOGGED_IN_TYPE = 'WORKFORCE_ONE_LOGGED_IN';\r\nexport const USER_LOGGED_IN = 'WORKFORCE_ONE_LOGGED_IN';\r\nexport interface WorkforceOneLoggedInAction {\r\n type: USER_LOGGED_IN_TYPE\r\n payload: WorkforceOneLoggedInPayload\r\n}\r\nexport function WorkforceOneUserHasLoggedIn(webToken: string, userId: number| string, ssoToken: string, loginDetail: WorkforceOneLoggedInPayload) : WorkforceOneLoggedInAction {\r\n SetAuthToken(webToken);\r\n SetSSOToken(ssoToken);\r\n SetUserId(userId);\r\n toast.success('Log In Completed')\r\n if(loginDetail && loginDetail.Portal && loginDetail.Portal.Clinic){\r\n SetLoginPortals(loginDetail.Portal.Clinic);\r\n }\r\n loginDetail.AuthToken = webToken;\r\n loginDetail.UserId = userId;\r\n return {\r\n type: USER_LOGGED_IN,\r\n payload: loginDetail\r\n }\r\n}\r\n\r\nexport type USER_LOGGED_IN_FAILED_TYPE = 'WORKFORCE_ONE_LOGGED_IN_FAILED';\r\nexport const USER_LOGGED_IN_FAILED = 'WORKFORCE_ONE_LOGGED_IN_FAILED';\r\nexport interface WorkforceOneLoggedInFailedAction{\r\n type: USER_LOGGED_IN_FAILED_TYPE\r\n}\r\nexport function WorkforceOneUserLoginFailed(message?: string): WorkforceOneLoggedInFailedAction {\r\n toast.error(message || 'Log In Failed')\r\n return {\r\n type: USER_LOGGED_IN_FAILED,\r\n }\r\n}\r\n\r\nexport interface WorkforceOneLoggedInWrongUrlPayload{\r\n Portal: ClinicPortals\r\n Message?: string\r\n}\r\nexport type USER_LOGGED_IN_WRONG_URL_TYPE = 'WORKFORCE_ONE_LOGGED_IN_WRONG_URL';\r\nexport const USER_LOGGED_IN_WRONG_URL = 'WORKFORCE_ONE_LOGGED_IN_WRONG_URL';\r\nexport interface WorkforceOneLoggedInWrongUrlAction{\r\n type: USER_LOGGED_IN_WRONG_URL_TYPE\r\n payload: WorkforceOneLoggedInWrongUrlPayload\r\n}\r\nexport function WorkforceOneLoggedInWrongUrl(loginDetail: WorkforceOneLoggedInWrongUrlPayload): WorkforceOneLoggedInWrongUrlAction {\r\n return {\r\n type: USER_LOGGED_IN_WRONG_URL,\r\n payload: loginDetail\r\n }\r\n}\r\n\r\nexport interface WorkforceOneUserLogOutPayload{\r\n skipRedirect: boolean\r\n}\r\nexport type USER_LOGGED_OUT_TYPE = 'WORKFORCE_ONE_USER_LOGGED_OUT';\r\nexport const USER_LOGGED_OUT = 'WORKFORCE_ONE_USER_LOGGED_OUT';\r\nexport interface WorkforceOneLogOutAction{\r\n type: USER_LOGGED_OUT_TYPE,\r\n payload: WorkforceOneUserLogOutPayload\r\n}\r\nexport function WorkforceOneUserLogOut(skipRedirect: boolean = false): WorkforceOneLogOutAction {\r\n ClearAuth();\r\n return {\r\n type: USER_LOGGED_OUT,\r\n payload: { skipRedirect }\r\n }\r\n}\r\n\r\nexport interface WorkforceOnePasswordResetPayload{\r\n userName: string\r\n invitationLink: string\r\n isForgotPassword: boolean,\r\n}\r\nexport type USER_P_RESET_TYPE = 'WORKFORCE_ONE_USER_P_RESET';\r\nexport const USER_P_RESET = 'WORKFORCE_ONE_USER_P_RESET';\r\nexport interface WorkforceOnePasswordResetAction{\r\n type: USER_P_RESET_TYPE\r\n payload: WorkforceOnePasswordResetPayload\r\n}\r\nexport function WorkforceOneUserPasswordReset(userName: string, loggedIn: boolean): WorkforceOnePasswordResetAction {\r\n return {\r\n type: USER_P_RESET,\r\n payload:{\r\n userName,\r\n invitationLink: loggedIn ? GetUrlLocation() : '',\r\n isForgotPassword: !loggedIn\r\n }\r\n }\r\n}\r\n\r\nexport type WorkforceOneLoginActions = | WorkforceOneLoginAction | SSOWorkforceOneLoginAction | SSOTokenWorkforceOneLoginAction | WorkforceOneLoggedInAction | WorkforceOneLoggedInFailedAction | WorkforceOneLogOutAction | WorkforceOnePasswordResetAction | WorkforceOneLoggedInWrongUrlAction\r\n","import {RouterState} from \"connected-react-router\";\r\nimport {LocationState} from \"history\";\r\n\r\nexport type WorkforceRoute = LocationState;\r\n\r\nexport interface CurrentUserPermissions {\r\n \"CanShowClinicAdminSetup\": boolean,\r\n \"CanShowInvitation\": boolean,\r\n \"CanShowRolePermissionSubscription\": boolean,\r\n \"CanShowNotification\": boolean,\r\n \"CanShowClientInvitationStatus\": boolean,\r\n \"CanShowUserInvitationStatus\": boolean,\r\n \"CanShowPortal\": boolean,\r\n \"CanShowInvitationStatus\": boolean,\r\n \"CanViewSiteSearch\": boolean,\r\n \"CanViewOrder\": boolean,\r\n \"CanViewTracking\": boolean,\r\n \"CanViewCompleted\": boolean,\r\n \"CanInviteClientUser\": boolean,\r\n \"CanManageClient\": boolean,\r\n \"CanCreateClient\": boolean,\r\n \"CanCreateInstance\": boolean,\r\n \"CanEditPendingOrders\": boolean,\r\n \"CanViewRandomTesting\": boolean,\r\n \"CanManageClientUser\": boolean,\r\n \"CanManageInstanceUser\": boolean,\r\n \"CanViewPersonnel\": boolean,\r\n \"CanViewOrderTrackingGrid\": boolean,\r\n \"CanManageServiceEvent\": boolean,\r\n \"CanVieweCCFCopy2PreMRO\": boolean,\r\n \"CanViewOrderSummary\": boolean,\r\n \"CanManagePersonnel\": boolean,\r\n \"CanManagePools\": boolean,\r\n \"CanCompleteEvents\": boolean,\r\n \"CanUploadImages\": boolean,\r\n \"CanViewAddressAlert\": boolean,\r\n \"CanSearchDefaults\": boolean,\r\n \"CanGroupInclude\": boolean,\r\n \"CanManageOrphanResults\": boolean,\r\n \"CanEditPersonnel\": boolean,\r\n \"CanManageSelectionInbox\": boolean,\r\n \"CanManageGovDonors\": boolean,\r\n \"CanManageGovPools\": boolean,\r\n \"CanManageConsortiumPools\": boolean,\r\n \"CanOrderGovServices\": boolean,\r\n \"CanViewMISReports\": boolean,\r\n \"CanMergeTests\": boolean\r\n}\r\nexport interface CurrentSelectedCompanyPermissions{\r\n \"CanShowClinicAdminSetup\": boolean,\r\n \"CanShowInvitation\": boolean,\r\n \"CanShowRolePermissionSubscription\": boolean,\r\n \"CanShowNotification\": boolean,\r\n \"CanShowClientInvitationStatus\": boolean,\r\n \"CanShowUserInvitationStatus\": boolean,\r\n \"CanShowPortal\": boolean,\r\n \"CanShowInvitationStatus\": boolean,\r\n \"CanViewSiteSearch\": boolean,\r\n \"CanViewOrder\": boolean,\r\n \"CanViewTracking\": boolean,\r\n \"CanViewCompleted\": boolean,\r\n \"CanInviteClientUser\": boolean,\r\n \"CanManageClient\": boolean,\r\n \"CanCreateClient\": boolean,\r\n \"CanCreateInstance\": boolean,\r\n \"CanEditPendingOrders\": boolean,\r\n \"CanViewRandomTesting\": boolean,\r\n \"CanManageClientUser\": boolean,\r\n \"CanManageInstanceUser\": boolean,\r\n \"CanViewPersonnel\": boolean,\r\n \"CanViewOrderTrackingGrid\": boolean,\r\n \"CanManageServiceEvent\": boolean,\r\n \"CanVieweCCFCopy2PreMRO\": boolean,\r\n \"CanViewOrderSummary\": boolean,\r\n \"CanManagePersonnel\": boolean,\r\n \"CanManagePools\": boolean,\r\n \"CanCompleteEvents\": boolean,\r\n \"CanUploadImages\": boolean,\r\n \"CanViewAddressAlert\": boolean,\r\n \"CanSearchDefaults\": boolean,\r\n \"CanGroupInclude\": boolean,\r\n \"CanManageOrphanResults\": boolean,\r\n \"CanEditPersonnel\": boolean,\r\n \"CanManageSelectionInbox\": boolean,\r\n \"CanManageGovDonors\": boolean,\r\n \"CanManageGovPools\": boolean,\r\n \"CanManageConsortiumPools\": boolean,\r\n \"CanOrderGovServices\": boolean,\r\n \"CanViewMISReports\": boolean,\r\n \"CanMergeTests\": boolean\r\n}\r\nexport const SiteAdminRole = 'SiteAdmin'\r\nexport const CompanyRole = 'CompanyAdmin'\r\nexport const PortalAdmin = 'PortalAdmin'\r\nexport const LocationAdmin = 'LocationAdmin'\r\nexport const NoAdminRole = 'None'\r\nexport type adminRoleType = 'None' |'SiteAdmin' | 'CompanyAdmin' |'PortalAdmin' | 'LocationAdmin'\r\nexport interface UserState{\r\n webToken?: string\r\n userName?: string\r\n isLoading: boolean\r\n isLoggedIn: boolean\r\n showCompanySelection: boolean\r\n loadedSelectedCompanyPermission: boolean\r\n role: adminRoleType\r\n currentUserPermissions: CurrentUserPermissions\r\n loadingCompany?: string\r\n selectedCompany?: string\r\n requireCompleteSetup?: boolean\r\n link?: string\r\n currentCompanyPermissions?: CurrentSelectedCompanyPermissions\r\n loginResultMessage?: string\r\n}\r\nexport interface AssignedClinic {\r\n ParticipationID: string\r\n Link: string\r\n ImplementationName?: string\r\n Name: string\r\n RoleID: number\r\n UserName: string\r\n AccountID?: number\r\n LocationID?: number\r\n LocationName?: string\r\n}\r\nexport interface WorkforceClinicPortal {\r\n ParticipationID?: string\r\n Link?: string\r\n Title?: string\r\n ImplementationName?: string\r\n RoleID?: number\r\n AssignedClientDetailsOfClinic: AssignedClinic[]\r\n ImplementationID?: number\r\n}\r\nexport interface CompaniesState {\r\n visibleCompanies: WorkforceClinicPortal[]\r\n}\r\nexport interface AppState {\r\n Workforce1State: UserState,\r\n Workforce1Companies: CompaniesState,\r\n router: RouterState,\r\n}\r\n","import { adminRoleType, AppState, CompanyRole, NoAdminRole, PortalAdmin, SiteAdminRole, LocationAdmin } from \"../AppState\"\r\n\r\nfunction isAdminRole(roleSearchFor: adminRoleType, state?: AppState): boolean{\r\n return state?.Workforce1State.role == roleSearchFor;\r\n}\r\n\r\nexport function isSiteAdmin(state?: AppState): boolean{\r\n return isAdminRole(SiteAdminRole, state);\r\n}\r\n//in workforce 1 this was called, isClient\r\nexport function isCompanyAdmin(state?: AppState): boolean{\r\n return isAdminRole(CompanyRole, state);\r\n}\r\n//in workforce 1 this was called, isClinic\r\nexport function isPortalAdmin(state?: AppState): boolean{\r\n return isAdminRole(PortalAdmin, state);\r\n}\r\n\r\nexport function isLocationAdmin(state?: AppState): boolean {\r\n return isAdminRole(LocationAdmin, state)\r\n}\r\n\r\n// honestly, using this is bad practice, I added this function though upon request from Kyle on 6/7 made via web-x..\r\n// but truthfully my understanding of this field alarms me A LOT, but I made my concerns known to kyle..\r\nexport function isUser(state?: AppState): boolean{\r\n return isAdminRole(NoAdminRole, state);\r\n}\r\n","import { AppState } from \"../AppState\";\r\nimport { isCompanyAdmin, isLocationAdmin, isPortalAdmin, isSiteAdmin } from \"./isAdminRole\";\r\nimport UserAccessSettings from \"./UserAccessSettings\";\r\n\r\nconst defaultMenuSetting: UserAccessSettings = {\r\n authenticated: false,\r\n canShowNotification: false,\r\n canShowOrphanedResults: false,\r\n canShowRolePermissionSubscription: false,\r\n isCompanyAdmin: false,\r\n isLocationAdmin: false,\r\n isPortalAdmin: false,\r\n isSiteAdmin: false,\r\n superUser: false,\r\n canManageTeam: false,//isClient || isClinic || isSiteAdmin... isClinic = portaladmin, isClient= company admin\r\n canViewOrder: false,\r\n canViewSiteSearch: false,\r\n canViewOrderTrackingGrid: false,\r\n canViewPersonnel: false,\r\n canEditPersonnel: false,\r\n canManagePools: false,\r\n canManagePersonnel: false,\r\n canManageSelectionInbox: false,\r\n canShowInvitationStatus: false,\r\n canInviteClientUser: false,\r\n canCreateClient: false,\r\n canManageClient: false,\r\n canShowPortal: false,\r\n canSearchDefaults: false,\r\n CanManageGovPools: false,\r\n CanManageConsortiumPools: false,\r\n CanManageGovDonors: false,\r\n CanOrderGovServices: false,\r\n canCompleteEvents: false,\r\n canVieweCCFCopy2PreMRO: false,\r\n canViewMISReports: false,\r\n canEditPendingOrders: false,\r\n canMergeTests: false\r\n}\r\n\r\nexport function BuildUserAccess(state?: AppState): UserAccessSettings {\r\n const menuSetting: UserAccessSettings = { ...defaultMenuSetting }\r\n\r\n menuSetting.authenticated = state?.Workforce1State?.isLoggedIn === true\r\n\r\n if (state?.Workforce1State.currentUserPermissions) {\r\n const perm = state.Workforce1State.currentUserPermissions;\r\n menuSetting.canShowNotification = perm.CanShowNotification;\r\n menuSetting.canShowPortal = perm.CanShowPortal;\r\n }\r\n\r\n if (state?.Workforce1State.currentCompanyPermissions) {\r\n menuSetting.canShowNotification = state.Workforce1State.currentCompanyPermissions.CanShowNotification;\r\n menuSetting.canViewOrder = state.Workforce1State.currentCompanyPermissions.CanViewOrder;\r\n menuSetting.canViewSiteSearch = state.Workforce1State.currentCompanyPermissions.CanViewSiteSearch;\r\n menuSetting.canViewOrderTrackingGrid = state.Workforce1State.currentCompanyPermissions.CanViewOrderTrackingGrid;\r\n menuSetting.canViewPersonnel = state.Workforce1State.currentCompanyPermissions.CanViewPersonnel;\r\n menuSetting.canEditPersonnel = state.Workforce1State.currentCompanyPermissions.CanEditPersonnel;\r\n menuSetting.canManagePools = state.Workforce1State.currentCompanyPermissions.CanManagePools;\r\n menuSetting.canManagePersonnel = state.Workforce1State.currentCompanyPermissions.CanManagePersonnel;\r\n menuSetting.canManageSelectionInbox = state.Workforce1State.currentCompanyPermissions.CanManageSelectionInbox;\r\n menuSetting.canShowInvitationStatus = state.Workforce1State.currentCompanyPermissions.CanShowInvitationStatus;\r\n menuSetting.canInviteClientUser = state.Workforce1State.currentCompanyPermissions.CanInviteClientUser;\r\n menuSetting.canCreateClient = state.Workforce1State.currentCompanyPermissions.CanCreateClient;\r\n menuSetting.canManageClient = state.Workforce1State.currentCompanyPermissions.CanManageClient;\r\n menuSetting.canShowRolePermissionSubscription = state.Workforce1State.currentCompanyPermissions.CanShowRolePermissionSubscription;\r\n menuSetting.canShowOrphanedResults = state.Workforce1State.currentCompanyPermissions.CanManageOrphanResults;\r\n menuSetting.canShowPortal = state.Workforce1State.currentCompanyPermissions.CanShowPortal;\r\n menuSetting.canSearchDefaults = state.Workforce1State.currentCompanyPermissions.CanSearchDefaults;\r\n menuSetting.CanManageGovPools = state.Workforce1State.currentCompanyPermissions.CanManageGovPools;\r\n menuSetting.CanManageConsortiumPools = state.Workforce1State.currentCompanyPermissions.CanManageConsortiumPools;\r\n menuSetting.CanManageGovDonors = state.Workforce1State.currentCompanyPermissions.CanManageGovDonors;\r\n menuSetting.CanOrderGovServices = state.Workforce1State.currentCompanyPermissions.CanOrderGovServices;\r\n menuSetting.canCompleteEvents = state.Workforce1State.currentCompanyPermissions.CanCompleteEvents;\r\n menuSetting.canVieweCCFCopy2PreMRO = state.Workforce1State.currentCompanyPermissions.CanVieweCCFCopy2PreMRO;\r\n menuSetting.canViewMISReports = state.Workforce1State.currentCompanyPermissions.CanViewMISReports;\r\n menuSetting.canEditPendingOrders = state.Workforce1State.currentCompanyPermissions.CanEditPendingOrders;\r\n menuSetting.canMergeTests = state.Workforce1State.currentCompanyPermissions.CanMergeTests;\r\n }\r\n\r\n if (state?.Workforce1State.role) {\r\n const isSiteAdminVal = isSiteAdmin(state);\r\n const isCompAdminVal = isCompanyAdmin(state);\r\n const isPortalAdminVal = isPortalAdmin(state);\r\n const isLocationAdminVal = isLocationAdmin(state)\r\n\r\n menuSetting.isSiteAdmin = isSiteAdminVal;\r\n menuSetting.canManageTeam = isSiteAdminVal || isCompAdminVal || isPortalAdminVal || isLocationAdminVal;\r\n menuSetting.isCompanyAdmin = isCompAdminVal;\r\n menuSetting.isPortalAdmin = isPortalAdminVal;\r\n menuSetting.isLocationAdmin = isLocationAdminVal\r\n }\r\n\r\n return menuSetting;\r\n}\r\n","import {AppState, AssignedClinic, WorkforceClinicPortal} from \"../../AppState\";\r\n\r\n//do not export this unless there is no other choice, i.e. its easy to add a new selector..the AssignedClinic has some bad constructs we don't want to propagate\r\n//we also likely would be better off adding an interface(/generic..) in a new file to reduce the looping, but memoization should make that a bad idea..\r\nexport function GetSelectedAssignedClinic(state?: AppState): AssignedClinic | null{\r\n if(!state){\r\n return null;\r\n }\r\n const companyIdToSearchFor = state?.Workforce1State.selectedCompany;\r\n if(!companyIdToSearchFor){\r\n return null;\r\n }\r\n let clinicFound: AssignedClinic | null = null;\r\n for (const portal of state?.Workforce1Companies.visibleCompanies) {\r\n for(const clinic of portal.AssignedClientDetailsOfClinic){\r\n if(clinic.ParticipationID == companyIdToSearchFor){\r\n clinicFound = clinic;\r\n }\r\n }\r\n if(clinicFound){\r\n break;\r\n }\r\n }\r\n return clinicFound;\r\n}\r\n\r\nexport function GetSelectedPortal(state?: AppState): WorkforceClinicPortal | undefined {\r\n // Matching as strings because both Workforce1State.selectedCompany and ParticipationID can either be number or string in different situations\r\n const companyIdToSearchFor = `${state?.Workforce1State.selectedCompany}`\r\n return companyIdToSearchFor ? state?.Workforce1Companies.visibleCompanies.find(item => `${item.ParticipationID}` === companyIdToSearchFor) : undefined\r\n}\r\n\r\nconst noUserNameFound: string = \"company-to-username-mapping-error@crlcorp.com\";\r\nexport function getUserNameForSelectedCompany(state?: AppState): string{\r\n const clinicPicked = GetSelectedAssignedClinic(state);\r\n return clinicPicked?.UserName || noUserNameFound;\r\n}\r\nexport function EmailOfUserForSelectedCompany(state?: AppState): string{\r\n return getUserNameForSelectedCompany(state);\r\n}\r\nconst noRole: number = -1;\r\nexport function RoleIdForSelectedCompany(state?: AppState): number{\r\n const clinicPicked = GetSelectedAssignedClinic(state);\r\n return clinicPicked?.RoleID || noRole;\r\n}\r\nconst noCompanyName = 'Unnamed Company'\r\nexport function SelectedCompanyName(state?: AppState): string{\r\n const clinicPicked = GetSelectedAssignedClinic(state);\r\n return clinicPicked?.Name || noCompanyName;\r\n}\r\n\r\nexport function SelectedAccountName(assignedClinic?: AssignedClinic | null) {\r\n if (!assignedClinic) {\r\n return undefined\r\n }\r\n\r\n if (assignedClinic.LocationID || 0 > 0) {\r\n return `${assignedClinic.Name} / ${assignedClinic.LocationName}`\r\n }\r\n\r\n return assignedClinic.Name\r\n}\r\n\r\nexport function CompareAccounts(a: AssignedClinic, b: AssignedClinic) {\r\n return (a.Name).localeCompare(b.Name) || (a.LocationName || \"\").localeCompare(b.LocationName || \"\")\r\n}\r\n\r\nexport function SelectedPortalName(state?: AppState): string | undefined {\r\n return GetSelectedPortal(state)?.ImplementationName\r\n}\r\nexport function getLoggedInUserName(state?: AppState): string {\r\n let userName = getUserNameForSelectedCompany(state)\r\n if(userName === noUserNameFound){\r\n userName = `${state?.Workforce1State.userName}`\r\n }\r\n return userName || noUserNameFound\r\n}\r\n\r\nexport function isInPortal(state?: AppState): boolean {\r\n let userName = getUserNameForSelectedCompany(state)\r\n if (userName === noUserNameFound) {\r\n userName = `${state?.Workforce1State.userName}`\r\n if (userName) {\r\n return true\r\n }\r\n }\r\n return false\r\n}\r\n","import { AppState } from \"../AppState\"\r\nimport UserState from \"./UserState\"\r\nimport {GetSSOToken} from \"../storage/AuthToken\";\r\nimport { GetSelectedPortal, GetSelectedAssignedClinic } from \"./SelectedCompany/CompanySelectionDrivenSelectors\"\r\n\r\nexport function BuildUserState(state?: AppState): UserState {\r\n return {\r\n selectedPortal: GetSelectedPortal(state) ?? undefined,\r\n selectedCompany: GetSelectedAssignedClinic(state) ?? undefined,\r\n ssoToken: GetSSOToken()\r\n }\r\n}\r\n","export const Home = \"/\";\r\nexport const SSOHome = \"/sso/auth\";\r\nexport const SSOCallbackRoute = \"/sso/callback\";\r\nexport const AboutRoute = \"/about\";\r\nexport const OrderRoute = \"/order\";\r\nexport const OrderFinishRoute = OrderRoute+ \"/finish\";\r\nexport const SiteSearchRoute = \"/site-search\";\r\nexport const SiteSearchOptionsRoute = \"/clinic-search-options\";\r\nexport const OrdersRoute = \"/orders\";\r\nexport const GovDonorRoute = \"/gov-donor\";\r\nexport const RandomsRoute = \"/random\";\r\nexport const RandomsGovRoute = \"/random-gov\";\r\nexport const ConsortiumsRoute = \"/consortiums\";\r\nexport const GovOrderRoute = \"/gov-order\";\r\nexport const RandomsPersonnelRoute = RandomsRoute+ \"/personnel\";\r\nexport const ConsortiumPersonnelRoute = \"/consortium-personnel\";\r\nexport const SelectionInboxRoute = \"/selection-inbox\";\r\nexport const OurTeamStatusRoute = \"/our-team-status\";\r\nexport const MyInformationRoute = \"/account/my-information\";\r\nexport const BaseAdministrationRoute = \"/administration\";\r\nexport const MyOrganizationRoute = BaseAdministrationRoute+\"/my-organization/\";\r\nexport const MyOrganizationNameRoute = BaseAdministrationRoute+\"/my-organization/:name\";\r\nexport const AddNewPortalRoute = BaseAdministrationRoute+\"/add-new-portal/\";\r\nexport const PortalDetailsRoute = (name?: string) => BaseAdministrationRoute+\"/my-organization/\"+name;\r\nexport const PortalAdministrationRoute = BaseAdministrationRoute+\"/portal-administration\";\r\nexport const CompanyInformationRoute = BaseAdministrationRoute+\"/company-information\";\r\nexport const CompanyInformationNameRoute = BaseAdministrationRoute+\"/company-information/:companyName\";\r\nexport const CompanyDetailsRoute = (name?: string) => BaseAdministrationRoute+\"/company-information/\"+name;\r\nexport const AddNewCompanyRoute = BaseAdministrationRoute+\"/add-new-company/\";\r\nexport const AddNewCompanyNameRoute = BaseAdministrationRoute+\"/add-new-company/:name\";\r\nexport const AddCompanyForPortalRoute = (name?: string) => BaseAdministrationRoute+\"/add-new-company/\"+name;\r\nexport const LocationInformationRoute = BaseAdministrationRoute+\"/location-information\"\r\nexport const ActivateUserRoute = BaseAdministrationRoute+\"/user-activation\";\r\nexport const ActivateCompanyRoute = BaseAdministrationRoute+\"/company-activation\";\r\nexport const ActivatePortalRoute = BaseAdministrationRoute+\"/portal-activation\";\r\nexport const GlobalParameterRoute = BaseAdministrationRoute+\"/global-parameter\";\r\nexport const OrderableServicesRoute = BaseAdministrationRoute+\"/orderable-services\";\r\nexport const UserCodesRoute = BaseAdministrationRoute+\"/user-codes\";\r\nexport const UserLabelsRoute = BaseAdministrationRoute+\"/user-labels\";\r\nexport const RegulatoryModeRoute = \"/regulatory-mode\";\r\nexport const OrphanedResultsRoute = \"/orphaned-results\";\r\nexport const PermissionsRoute = \"/roles-permissions\";\r\nexport const InviteStatusRoute = \"/invitation-status\";\r\nexport const BaseInviteRoute = \"/invitation\";\r\nexport const InviteSiteAdmininstratorRoute = BaseInviteRoute+\"/site-administrator\";\r\nexport const LegacyWorkforceClientRoute = \"/client\";\r\nconst LegacyWorkforceUserRoute = \"/user\";\r\nexport const LegacyWorkforceInvitationRoute = LegacyWorkforceClientRoute + \"/initial-setup\";\r\nexport const LegacyWorkforceUserInvitationRoute = LegacyWorkforceUserRoute + \"/initial-setup\";\r\nexport const LegacyWorkforceCompanyInvitationRoute = LegacyWorkforceClientRoute + \"/initial-setup\";\r\nexport const LegacyWorkforcePortalInvitationRoute = \"/initial-setup\";\r\nexport const WorkforceOnePswUpdate = \"/update-password\";\r\nexport const WorkforceOnePswConfigureRoute = \"/configure-password\";\r\nexport const SSOOrderRoute = \"/sso/order\";\r\nexport const SSOOrderFinishRoute = SSOOrderRoute + \"/finish\";\r\nexport const SSOSiteSearchRoute = \"/sso/site-search\";\r\nexport const ReportPositiveRoute = \"/report/positive\";\r\nexport const SSOGetAuthFormRoute = \"/sso/getauthform\";\r\nexport const ReportTestingSummaryRoute = \"/report/testing-summary\";\r\nexport const ReportSpecimenPositivityRoute = \"/report/specimen-positivity\";\r\nexport const ReportDrugDetailRoute = \"/report/drug-detail\";\r\nexport const ReportDailySummaryRoute = \"/report/daily-summary\";\r\nexport const ReportIvrCallInComplianceRoute = \"/report/ivr-call-in-compliance\";\r\nexport const ReportNoShowRoute = \"/report/no-show\";\r\nexport const ReportCertificationRenewalRoute = \"/report/cert-renewal\";\r\nexport const ReportCertificationStatusRoute = \"/report/cert-status\";\r\nexport const ReportManagementSummaryRoute = \"/report/management-summary\";\r\nexport const ReportMISRoute = \"/report/mis\";\r\nexport const ReportSelectedNotTestedRoute = \"/report/selected-not-tested\";\r\nexport const ReportSummaryRoute = \"/report/summary\";\r\nexport const ReportUnmergedRandomResultsRoute = \"/report/unmerged_random_results\";\r\nexport const ConfigureOrderDefaultsRoute = BaseAdministrationRoute+\"/order-defaults\";\r\nexport const SendingFacilityRoute = \"/sending-facilities\";\r\nexport const LabResultsReportingRoute = BaseAdministrationRoute+\"/lab-results-reporting\";\r\nexport const ReportUnmergedRandomResults = \"/report/unmerged-random-results\";\r\n\r\nexport const LegacyWorkforceLogInRoute = \"/workforce-login\";\r\nexport type ParameterFreeRouteType = '/'| '/order'| '/order/finish' | '/site-search' | '/orders' | '/random' | '/random/personnel' | '/consortiums' | '/consortium-personnel' | '/selection-inbox' | '/clinic-search-options';\r\nexport default ParameterFreeRouteType;\r\n","import * as React from \"react\"\r\nimport { Button, Spinner, ButtonProps } from \"react-bootstrap\"\r\n\r\ninterface ActionButtonProps extends ButtonProps {\r\n spin?: boolean\r\n disableOnSpin?: boolean\r\n children?: React.ReactNode\r\n}\r\n\r\nexport default class ActionButton extends React.PureComponent {\r\n render() {\r\n const { spin, disableOnSpin, disabled, className, children, ...buttonProps } = this.props\r\n const actualDisabled = disabled || (disableOnSpin && spin)\r\n const actualClassName = `${className || \"\"} btn-icon`\r\n return (\r\n )\r\n }\r\n}\r\n","export function baseUrl(): string {\r\n return `/clinicportal/ng/`;\r\n}\r\nexport function ApiHostName(): string {\r\n //return 'http://workforce-test.formfox.com';\r\n const baseDomain = window.location.hostname;\r\n const firstDotIndex = baseDomain.indexOf('.');\r\n const domain = baseDomain.substring(firstDotIndex + 1);\r\n return (`${window.location.protocol}//${domain}${window.location.port ? `:${window.location.port}` : \"\"}`);\r\n //return \"http://localhost:49924\";\r\n}\r\n\r\nexport default function ApiUrl(): string {\r\n //return 'http://workforce-test.formfox.com/mcpwebapi/api/';\r\n return (`${ApiHostName()}/mcpwebapi/api/`);\r\n //return `${ApiHostName()}/api/`;\r\n}\r\n\r\nexport function ApiRootUrl(): string {\r\n //return 'http://workforce-test.formfox.com/mcpwebapi/';\r\n return (`${ApiHostName()}/mcpwebapi`);\r\n //return `${ApiHostName()}`;\r\n}\r\n\r\nexport function FullBaseUrl(): string {\r\n const baseDomain = window.location.origin;\r\n return `${baseDomain}${baseUrl()}#`;\r\n}\r\n\r\nexport function PortalSource(): string{\r\n const baseDomain = window.location.hostname;\r\n const firstDotIndex = baseDomain.indexOf('.');\r\n return baseDomain.substring(0, firstDotIndex);\r\n}\r\n","import {ApiAuthRequestInterface} from \"../authentication/BuildAuthRequestInterface\"\r\nimport {GetAuthToken} from \"../storage/AuthToken\";\r\n\r\n\r\nfunction AsyncProblemAuthBuilder(): ApiAuthRequestInterface{\r\n return {\r\n api_version: '1.0',\r\n Agent: 'Chrome',\r\n IsMarketPlace: 'true',\r\n auth_token: GetAuthToken() || \"\",\r\n };\r\n}\r\nexport function BuildFetchRequest(body?: string, method?: string): RequestInit {\r\n const authDetails = AsyncProblemAuthBuilder();\r\n return {\r\n method: method ? method : body ? 'post' : 'get',\r\n credentials: 'omit',\r\n headers: new Headers({\r\n 'auth_token': authDetails?.auth_token,\r\n 'IsMarketPlace': authDetails.IsMarketPlace,\r\n 'Agent': authDetails.Agent,\r\n 'api_version' :authDetails.api_version,\r\n\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n }),\r\n body\r\n}}\r\n","import {CurrentUserPermissions} from \"../../AppState\";\r\n\r\nexport const defaultCurrentUserPermissions: CurrentUserPermissions = {\r\n \"CanShowClinicAdminSetup\": false,\r\n \"CanShowInvitation\": false,\r\n \"CanShowRolePermissionSubscription\": false,\r\n \"CanShowNotification\": false,\r\n \"CanShowClientInvitationStatus\": false,\r\n \"CanShowUserInvitationStatus\": false,\r\n \"CanShowPortal\": false,\r\n \"CanShowInvitationStatus\": false,\r\n \"CanViewSiteSearch\": false,\r\n \"CanViewOrder\": false,\r\n \"CanViewTracking\": false,\r\n \"CanViewCompleted\": false,\r\n \"CanInviteClientUser\": false,\r\n \"CanManageClient\": false,\r\n \"CanCreateClient\": false,\r\n \"CanCreateInstance\": false,\r\n \"CanEditPendingOrders\": false,\r\n \"CanViewRandomTesting\": false,\r\n \"CanManageClientUser\": false,\r\n \"CanManageInstanceUser\": false,\r\n \"CanViewPersonnel\": false,\r\n \"CanViewOrderTrackingGrid\": false,\r\n \"CanManageServiceEvent\": false,\r\n \"CanVieweCCFCopy2PreMRO\": false,\r\n \"CanViewOrderSummary\": false,\r\n \"CanManagePersonnel\": false,\r\n \"CanManagePools\": false,\r\n \"CanCompleteEvents\": false,\r\n \"CanUploadImages\": false,\r\n \"CanViewAddressAlert\": false,\r\n \"CanSearchDefaults\": false,\r\n \"CanGroupInclude\": false,\r\n \"CanManageOrphanResults\": false,\r\n \"CanEditPersonnel\": false,\r\n \"CanManageSelectionInbox\": false,\r\n \"CanManageGovDonors\": false,\r\n \"CanManageGovPools\": false,\r\n \"CanManageConsortiumPools\": false,\r\n \"CanOrderGovServices\": false,\r\n \"CanViewMISReports\": false,\r\n \"CanMergeTests\": false\r\n}\r\n","import {\r\n CurrentSelectedCompanyPermissions,\r\n CurrentUserPermissions,\r\n adminRoleType\r\n} from \"../AppState\";\r\nimport {defaultCurrentUserPermissions} from \"../reducers/Defaults/CurrentUserPermissions\";\r\n\r\nexport interface WorkforceOneCompanyPermissionPayload{\r\n companyPermission: CurrentSelectedCompanyPermissions\r\n role: adminRoleType\r\n selectedCompany: string,\r\n requireCompleteSetup: boolean,\r\n link: string\r\n}\r\nexport type COMPANY_PERMISSION_TYPE = 'WORKFORCE_ONE_COMPANY_PERMISSION_CHANGED';\r\nexport const COMPANY_PERMISSION = 'WORKFORCE_ONE_COMPANY_PERMISSION_CHANGED';\r\nexport interface WorkforceOneCompanyPermissionAction {\r\n type: COMPANY_PERMISSION_TYPE\r\n payload: WorkforceOneCompanyPermissionPayload\r\n}\r\nexport function WorkforceOneUserCompanyPermissionChange(role: adminRoleType, companyPermission: CurrentSelectedCompanyPermissions, selectedCompany: string, requireCompleteSetup: boolean, link: string) : WorkforceOneCompanyPermissionAction {\r\n return {\r\n type: COMPANY_PERMISSION,\r\n payload: {\r\n companyPermission,\r\n role,\r\n selectedCompany,\r\n requireCompleteSetup,\r\n link\r\n }\r\n }\r\n}\r\n\r\nexport interface WorkforceOneUserPermissionPayload{\r\n userPermission: CurrentUserPermissions\r\n}\r\nexport type USER_PERMISSION_CHANGED_TYPE = 'WORKFORCE_ONE_PERMISSION_CHANGED';\r\nexport const USER_PERMISSION_CHANGED = 'WORKFORCE_ONE_PERMISSION_CHANGED';\r\nexport interface WorkforcePermissionChangedAction{\r\n type: USER_PERMISSION_CHANGED_TYPE,\r\n payload: WorkforceOneUserPermissionPayload\r\n}\r\nexport function WorkforcePermissionChanged(userPermissionData: CurrentUserPermissions | null): WorkforcePermissionChangedAction {\r\n const userPermission = userPermissionData || defaultCurrentUserPermissions\r\n return {\r\n type: USER_PERMISSION_CHANGED,\r\n payload: {\r\n userPermission\r\n }\r\n }\r\n}\r\nexport type WorkforceOnePermissionAction = | WorkforceOneCompanyPermissionAction | WorkforcePermissionChangedAction\r\n","import {NoAdminRole, UserState} from \"../AppState\";\r\nimport {AppActions} from \"../actions\";\r\nimport {ALLOW_COMPANY_SELECTION, COMPANY_SELECTED} from \"../actions/WorkforceClinicAction\";\r\nimport { USER_LOGGED_IN, USER_LOGGED_IN_FAILED, USER_LOGGED_OUT, USER_LOGIN, SSO_USER_LOGIN, SSO_TOKEN_USER_LOGIN, USER_LOGGED_IN_WRONG_URL } from \"../actions/WorkforceOneLoginActions\"\r\nimport {COMPANY_PERMISSION, USER_PERMISSION_CHANGED} from \"../actions/WorkforceOnePermissionActions\";\r\nimport {defaultCurrentUserPermissions} from \"./Defaults/CurrentUserPermissions\";\r\n\r\nfunction getCleanUserState(): UserState{\r\n return {\r\n isLoading: false,\r\n isLoggedIn: false,\r\n loadedSelectedCompanyPermission: false,\r\n requireCompleteSetup: false,\r\n showCompanySelection: false,\r\n role: NoAdminRole,\r\n currentUserPermissions: defaultCurrentUserPermissions,\r\n };\r\n}\r\nexport default function Workforce1User(state = getCleanUserState(), action: AppActions) : UserState {\r\n switch (action.type) {\r\n case USER_LOGIN:{\r\n return {\r\n ...state,\r\n isLoading: true,\r\n userName: action.payload.userName,\r\n requireCompleteSetup: false,\r\n loginResultMessage: undefined\r\n };\r\n }\r\n case USER_LOGGED_IN:{\r\n return {\r\n ...state,\r\n isLoggedIn: true,\r\n webToken:action.payload.AuthToken,\r\n isLoading: false,\r\n userName: action.payload.UserName,\r\n };\r\n }\r\n case USER_LOGGED_IN_WRONG_URL:{\r\n return {\r\n ...state,\r\n isLoggedIn: true,\r\n isLoading: false,\r\n loginResultMessage: action.payload.Message,\r\n };\r\n }\r\n case USER_LOGGED_IN_FAILED:{\r\n return {\r\n ...state,\r\n isLoading: false,\r\n userName: undefined,\r\n };\r\n }\r\n case USER_LOGGED_OUT:{\r\n return {\r\n ...state,\r\n loadedSelectedCompanyPermission: false,\r\n showCompanySelection: false,\r\n isLoggedIn: false,\r\n webToken: undefined,\r\n userName: undefined,\r\n isLoading: false,\r\n selectedCompany: undefined,\r\n requireCompleteSetup: false,\r\n loginResultMessage: undefined\r\n };\r\n }\r\n case USER_PERMISSION_CHANGED: {\r\n\r\n return {\r\n ...state,\r\n isLoading: false,\r\n currentUserPermissions:{\r\n ...action.payload.userPermission\r\n }\r\n };\r\n }\r\n case COMPANY_SELECTED: {\r\n return {\r\n ...state,\r\n loadingCompany: action.payload.participationId,\r\n requireCompleteSetup: false,\r\n showCompanySelection: false\r\n };\r\n }\r\n case ALLOW_COMPANY_SELECTION: {\r\n return {\r\n ...state,\r\n showCompanySelection: true\r\n };\r\n }\r\n case COMPANY_PERMISSION: { // COMPANY_SELECTION_SUCCESSFUL\r\n return {\r\n ...state,\r\n loadedSelectedCompanyPermission: true,\r\n loadingCompany: undefined,\r\n selectedCompany: action.payload.selectedCompany,\r\n requireCompleteSetup: action.payload.requireCompleteSetup,\r\n link: action.payload.link,\r\n role: action.payload.role,\r\n currentCompanyPermissions: {...action.payload.companyPermission}\r\n };\r\n }\r\n case SSO_USER_LOGIN:\r\n case SSO_TOKEN_USER_LOGIN: {\r\n return {\r\n ...state,\r\n isLoading: true\r\n }\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n","import {CompaniesState} from \"../AppState\";\r\nimport {AppActions} from \"../actions\";\r\nimport { CLINIC_LIST_UPDATED } from \"../actions/WorkforceClinicAction\";\r\nimport {USER_LOGGED_IN, USER_LOGGED_IN_WRONG_URL} from \"../actions/WorkforceOneLoginActions\";\r\n\r\nfunction getCleanUserState(): CompaniesState{\r\n return {\r\n visibleCompanies: []\r\n };\r\n}\r\n\r\nexport default function Workforce1Companies(state = getCleanUserState(), action: AppActions) : CompaniesState {\r\n switch (action.type) {\r\n case USER_LOGGED_IN:{\r\n return {\r\n ...state,\r\n visibleCompanies: action.payload.Portal.Clinic\r\n };\r\n }\r\n case CLINIC_LIST_UPDATED:{\r\n return {\r\n ...state,\r\n visibleCompanies: action.payload.Clinic\r\n };\r\n }\r\n case USER_LOGGED_IN_WRONG_URL:{\r\n return {\r\n ...state,\r\n visibleCompanies: action.payload.Portal.Clinic\r\n };\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n","import {Action, combineReducers, Reducer} from \"redux\";\r\nimport {History} from \"history\";\r\nimport {connectRouter} from \"connected-react-router\";\r\nimport {AppState, WorkforceRoute} from \"../AppState\";\r\nimport Workforce1User from \"./Workforce1User\";\r\nimport Workforce1Companies from \"./Workforce1Companies\";\r\n\r\n\r\nexport interface RootReduceType extends Reducer {\r\n\r\n}\r\n\r\nconst createRootReducer = (history: History): RootReduceType => {\r\n return combineReducers(\r\n {\r\n router: connectRouter(history),\r\n Workforce1State: Workforce1User,\r\n Workforce1Companies: Workforce1Companies,\r\n }\r\n );\r\n};\r\nexport default createRootReducer;\r\n","import {AppState} from \"../AppState\"\r\n\r\nexport interface ApiAuthRequestInterface {\r\n auth_token: string\r\n Agent: 'Chrome'\r\n IsMarketPlace: 'true'\r\n api_version :'1.0'\r\n}\r\n\r\nexport function BuildAuthRequestFromAppState(state?: AppState): ApiAuthRequestInterface {\r\n return {\r\n api_version: '1.0',\r\n Agent: 'Chrome',\r\n IsMarketPlace: 'true',\r\n auth_token: state?.Workforce1State.webToken || \"\",\r\n }\r\n}\r\n","import {Epic, ofType} from \"redux-observable\";\r\nimport {AppActions} from \"../actions\";\r\nimport {AppState, CurrentSelectedCompanyPermissions} from \"../AppState\";\r\nimport {map, mergeMap, switchMap} from \"rxjs/operators\";\r\nimport {fromFetch} from \"rxjs/fetch\";\r\nimport ApiUrl from \"../api/ApiUrl\";\r\nimport {BuildAuthRequestFromAppState} from \"../authentication/BuildAuthRequestInterface\";\r\nimport {WorkforcePermissionChanged} from \"../actions/WorkforceOnePermissionActions\";\r\nimport {USER_LOGGED_IN, WorkforceOneLoggedInAction} from \"../actions/WorkforceOneLoginActions\";\r\nimport ApiResponse from \"../api/ApiResponse\";\r\n\r\nconst WorkforceOneUserAccess: Epic = (action$, states$) => {\r\n return action$.pipe(\r\n ofType(USER_LOGGED_IN),\r\n mergeMap((action: AppActions) => {\r\n const authDetails = BuildAuthRequestFromAppState(states$.value);\r\n const loginDetailFromAction = action as WorkforceOneLoggedInAction;\r\n return fromFetch(`${ApiUrl()}FFOrderAccount/GetUserAccess`,\r\n {\r\n method: 'GET',\r\n credentials: 'omit',\r\n headers: new Headers({\r\n 'auth_token': loginDetailFromAction.payload.AuthToken,\r\n 'IsMarketPlace': authDetails.IsMarketPlace,\r\n 'Agent': authDetails.Agent,\r\n 'api_version': authDetails.api_version,\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n }),\r\n })\r\n .pipe(switchMap(response => response.ok ?\r\n response.json() :\r\n Promise.resolve(null)))\r\n .pipe(map((json: ApiResponse | null) => {\r\n if(json){\r\n return WorkforcePermissionChanged(json.data)\r\n }else{\r\n return WorkforcePermissionChanged(json)\r\n }\r\n }))\r\n }\r\n )\r\n );\r\n};\r\nexport default WorkforceOneUserAccess;\r\n","export const ImportCSVMaxFileSize = 25000000\r\nexport const MaxImageFileSize = 1024000\r\nexport const MaxFileNameLength = 200\r\nexport const MaxLogoImageWidth = 200\r\nexport const MaxLogoImageHeight = 100\r\nexport const MaxInvitationAttempts = 5\r\nexport const MaxFailedLoginAttempts = 4\r\nexport const AccountLimit = 10\r\nexport const EmailRegexp = /^(([^<>()[\\]\\\\.,;:\\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,}))$/\r\nexport const PhoneRegexp = /^[0-9]{3}-[0-9]{3}-[0-9]{4}$/\r\nexport const NameRegexp = /^[a-zA-Z0-9 '.-]*$/\r\nexport const CompanyNameRegexp = \"^[a-zA-Z0-9-.,' ]*$\"\r\nexport const MaxDonorIdLength = 25\r\nexport const InvalidDonorIdLength = `Donor ID should contain 1 - ${MaxDonorIdLength} characters.`\r\nexport const DonorIdRegexp = /^[^ '-]*$/\r\nexport const InvalidDonorId = \"Spaces, apostrophes and hyphens are not allowed.\"\r\nexport const IntlPhoneRegexp11 = /^[0-9]{1}-[0-9]{3}-[0-9]{3}-[0-9]{4}$/\r\nexport const ZipRegexp = /^[0-9]{5}$/\r\nexport const CamelCaseRegexp = /([a-z])([A-Z])/g\r\nexport const SiteDomain = \"workforce-stage.clinholdco.com\"\r\nexport const ProtectedSites = [\"aol\", \"att\", \"bellsouth\", \"comcast\", \"earthlink\", \"frontier\", \"gmail\", \"hotmail\", \"imail\", \"mail\", \"msn\", \"outlook\", \"qwestoffice\", \"sbcglobal\", \"windstream\", \"yahoo\"]\r\nexport const ReCaptchaSiteKey = \"6LdVBnAUAAAAAOqWTjak57WEmTJb6-rELjtqT4nr\" // TODO: Workforce 1.0 production\r\nexport const GMapApiKey = \"AIzaSyBk9jTuJa7GYll5lkPO5xYbM8TkxKvab2A\"\r\nexport const DefaultMapLatitude = 40.4402885\r\nexport const DefaultMapLongitude = -99.36982169999999\r\nexport const UpdateMethodID = 1 // Kyle: This turned out to be hardcoded as a 1.\r\nexport const AccountTypeID = 2\r\nexport const RpAccountType = 2\r\nexport const ImplementationGroupID_Workforce = 3\r\nexport const IpifyUrl = \"https://api.ipify.org?format=json\"\r\nexport const WorkForceLogo = \"/images/Logo/formfox.png\"\r\nexport const QuickStartLogo = \"/images/Logo/quickstart.png\"\r\nexport const LabAccountMaxLength = 30\r\nexport const InvalidNameMessage = \"Only letters, digits, spaces, dots, apostrophes and hyphens are allowed.\"\r\nexport const DisabledDefaultOrderableService = \"This is default service and cannot be removed for Company. Please remove this service as a default for Portal to allow editing on Company level.\"\r\nexport const ImplementationTypeGovt = \"GOVT\"\r\nexport const MinDate = 1\r\nexport const MaxDateWeekly = 7\r\nexport const MaxDateMonthly = 31\r\nexport enum StorageKey {\r\n SavedOrderData = \"savedOrderData\",\r\n OrderedServices = \"servicesBeingOrdered\",\r\n OrderDonorSiteSelect = \"orderDonorSiteSelect\",\r\n CanViewOrderFinish = \"canViewOrderFinish\",\r\n FromSelectionInbox = \"fromSelectionInbox\",\r\n OrderTrackingGridColumns = \"orderTrackingGridColumns\",\r\n PoolMembersGridColumns = \"poolMembersGridColumns\",\r\n RandomPersonnelGridColumns = \"randomPersonnelGridColumns\",\r\n SelectionInboxGridColumns = \"selectionInboxGridColumns\",\r\n ImplementationType = \"implementationType\",\r\n CachedCollectionTests = \"cachedCollectionTests\",\r\n InvitationStatusGridColumns = \"invitationStatusGridColumns\"\r\n}\r\nexport enum EventType {\r\n Breath = \"BR\",\r\n Saliva = \"SL\",\r\n Urine = \"UR\",\r\n UrinePOCT = \"QT\",\r\n SalivaDrug = \"SLD\",\r\n SalivaDrugPOCT = \"QTS\",\r\n}\r\nexport enum ClinicStatus {\r\n UserConfigured = 9,\r\n ClinicConfigured = 10,\r\n ClientConfigured = 11,\r\n Completed = 12\r\n}\r\n\r\nexport enum ScheduleStatus {\r\n Cancelled = 11\r\n}\r\n\r\nexport enum AccountType {\r\n MasterAccount = 1,\r\n Company = 2,\r\n Region = 3,\r\n Location = 4\r\n}","import {Epic, ofType} from \"redux-observable\";\r\nimport {AppActions} from \"../actions\";\r\nimport {AppState} from \"../AppState\";\r\nimport {catchError, map, mergeMap, switchMap} from \"rxjs/operators\";\r\nimport {fromFetch} from \"rxjs/fetch\";\r\nimport ApiUrl from \"../api/ApiUrl\";\r\nimport {\r\n USER_LOGIN,\r\n WorkforceOneLoggedInWrongUrl,\r\n WorkforceOneLoginAction,\r\n WorkforceOneUserHasLoggedIn,\r\n WorkforceOneUserLoginFailed\r\n} from \"../actions/WorkforceOneLoginActions\";\r\n\r\nconst WorkforceOneUserLoginEpic: Epic = (action$, state$ ) => {\r\n return action$.pipe(\r\n ofType(USER_LOGIN),\r\n mergeMap((action:AppActions) => {\r\n const loginDetailFromAction = action as WorkforceOneLoginAction;\r\n return fromFetch(`${ApiUrl()}FFOrderAccount/Login`,\r\n {\r\n method: 'POST',\r\n credentials: 'omit',\r\n body: JSON.stringify(loginDetailFromAction.payload),\r\n headers: {\r\n 'IsMarketPlace':\"true\",\r\n 'Agent': 'Chrome',\r\n 'api_version':'1.0',\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n .pipe(switchMap(response => response.ok ?\r\n response.json() : Promise.resolve(response.json())),\r\n catchError(err => {\r\n console.error(err);\r\n return Promise.resolve(null);\r\n })\r\n )\r\n .pipe(map(json => json != null && (json.data != null || json.error != null)\r\n ? json.error != null\r\n ? WorkforceOneUserLoginFailed(json.error.message)\r\n : json.data.Message != null\r\n ? WorkforceOneLoggedInWrongUrl(json.data)\r\n : WorkforceOneUserHasLoggedIn(json.data.AuthToken, json.data.UserLoginID, \"\", json.data)\r\n : WorkforceOneUserLoginFailed()))\r\n }\r\n )\r\n );\r\n};\r\nexport default WorkforceOneUserLoginEpic;\r\n","import { Epic, ofType } from \"redux-observable\";\r\nimport { AppActions } from \"../actions\";\r\nimport {\r\n adminRoleType,\r\n AppState,\r\n CompanyRole,\r\n CurrentSelectedCompanyPermissions,\r\n NoAdminRole,\r\n PortalAdmin, SiteAdminRole, LocationAdmin\r\n} from \"../AppState\";\r\nimport { mergeMap, switchMap } from \"rxjs/operators\";\r\nimport { fromFetch } from \"rxjs/fetch\";\r\nimport ApiUrl from \"../api/ApiUrl\";\r\nimport { BuildAuthRequestFromAppState } from \"../authentication/BuildAuthRequestInterface\";\r\nimport { COMPANY_SELECTED, COMPANY_UPDATED, CompanySelectedAction, CompanySelectedPayload, CompanyUpdateAction, CompanyUpdated } from \"../actions/WorkforceClinicAction\";\r\nimport {\r\n WorkforceOneCompanyPermissionAction,\r\n WorkforceOneUserCompanyPermissionChange\r\n} from \"../actions/WorkforceOnePermissionActions\";\r\nimport { EMPTY, of } from \"rxjs\";\r\nimport { ClinicStatus } from \"../config/Constants\";\r\nimport { setOrphanedResultsCount } from \"../storage/LogInPortals\";\r\n\r\ninterface ApiResponseModel {\r\n data: {\r\n IsClinic: boolean\r\n IsClient: boolean\r\n IsSiteAdmin: boolean\r\n IsLocation: boolean\r\n Status: number\r\n UserAccessViewModel: CurrentSelectedCompanyPermissions\r\n }\r\n}\r\nfunction MapRoleFromApiResponse(responseModel?: ApiResponseModel): adminRoleType {\r\n if (!responseModel) {\r\n return NoAdminRole;\r\n }\r\n if (responseModel.data.IsClinic) {\r\n return PortalAdmin;\r\n }\r\n if (responseModel.data.IsClient) {\r\n return CompanyRole;\r\n }\r\n if (responseModel.data.IsSiteAdmin) {\r\n return SiteAdminRole;\r\n }\r\n if (responseModel.data.IsLocation) {\r\n return LocationAdmin\r\n }\r\n return NoAdminRole;\r\n}\r\nconst defaultCompanyPerms: CurrentSelectedCompanyPermissions = {\r\n CanShowClinicAdminSetup: false,\r\n CanShowInvitation: false,\r\n CanShowRolePermissionSubscription: false,\r\n CanShowNotification: false,\r\n CanShowClientInvitationStatus: false,\r\n CanShowUserInvitationStatus: false,\r\n CanShowPortal: false,\r\n CanShowInvitationStatus: false,\r\n CanViewSiteSearch: false,\r\n CanViewOrder: false,\r\n CanViewTracking: false,\r\n CanViewCompleted: false,\r\n CanInviteClientUser: false,\r\n CanManageClient: false,\r\n CanCreateClient: false,\r\n CanCreateInstance: false,\r\n CanEditPendingOrders: false,\r\n CanViewRandomTesting: false,\r\n CanManageClientUser: false,\r\n CanManageInstanceUser: false,\r\n CanViewPersonnel: false,\r\n CanViewOrderTrackingGrid: false,\r\n CanManageServiceEvent: false,\r\n CanVieweCCFCopy2PreMRO: false,\r\n CanViewOrderSummary: false,\r\n CanManagePersonnel: false,\r\n CanManagePools: false,\r\n CanCompleteEvents: false,\r\n CanUploadImages: false,\r\n CanViewAddressAlert: false,\r\n CanSearchDefaults: false,\r\n CanGroupInclude: false,\r\n CanManageOrphanResults: false,\r\n CanEditPersonnel: false,\r\n CanManageSelectionInbox: false,\r\n CanManageGovDonors: false,\r\n CanManageGovPools: false,\r\n CanManageConsortiumPools: false,\r\n CanOrderGovServices: false,\r\n CanViewMISReports: false,\r\n CanMergeTests: false\r\n};\r\nfunction MapApiResponseToAction(apiResponse?: ApiResponseModel, selectedCompany?: CompanySelectedPayload, requireCompleteSetup?: boolean): WorkforceOneCompanyPermissionAction {\r\n processResponseData(apiResponse?.data);\r\n const adminRoleType = MapRoleFromApiResponse(apiResponse);\r\n const companyResponse = apiResponse?.data.UserAccessViewModel || defaultCompanyPerms;\r\n const link = selectedCompany?.Link\r\n return WorkforceOneUserCompanyPermissionChange(adminRoleType, companyResponse, selectedCompany?.participationId || \"\", !!requireCompleteSetup, link || \"\");\r\n}\r\n\r\nfunction processResponseData(data: any) {\r\n if (!data) {\r\n return;\r\n }\r\n setPortalLogoImageUrl(data.LogoImage)\r\n setImplementationType(data.ImplementationType)\r\n setOrphanedResultsCount(data.OrphanedResultsCount)\r\n\r\n}\r\nfunction setPortalLogoImageUrl(logoImage: string) {\r\n localStorage.removeItem(\"portalImage\");\r\n if (!!logoImage) {\r\n localStorage.setItem(\"portalImage\", logoImage);\r\n }\r\n\r\n\r\n}\r\nfunction setImplementationType(implementationType: string) {\r\n sessionStorage.removeItem(\"implementationType\");\r\n if (!!implementationType) {\r\n sessionStorage.setItem(\"implementationType\", implementationType);\r\n }\r\n}\r\n\r\nexport const WorkforceOneUpdateUserPortalPermission: Epic = (action$, states$) => {\r\n return action$.pipe(\r\n ofType(COMPANY_UPDATED),\r\n mergeMap((action: AppActions) => {\r\n const updateAction = action as CompanyUpdateAction\r\n if (!updateAction.payload.ForceReload) return EMPTY\r\n const authDetails = BuildAuthRequestFromAppState(states$.value);\r\n return fromFetch(`${ApiUrl()}FFOrderAccount/GetPortalsCompaniesData`,\r\n {\r\n method: 'GET',\r\n credentials: 'omit',\r\n headers: new Headers({\r\n 'auth_token': authDetails.auth_token,\r\n 'IsMarketPlace': authDetails.IsMarketPlace,\r\n 'Agent': authDetails.Agent,\r\n 'api_version': authDetails.api_version,\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n }),\r\n })\r\n .pipe(switchMap(response => response.ok ?\r\n response.json() :\r\n Promise.resolve(null)))\r\n .pipe(mergeMap(json => {\r\n if (!json?.data) {\r\n return EMPTY\r\n }\r\n return of(CompanyUpdated(json.data))\r\n }))\r\n }\r\n )\r\n );\r\n};\r\n\r\nconst WorkforceOneUserPortalPermission: Epic = (action$, states$) => {\r\n return action$.pipe(\r\n ofType(COMPANY_SELECTED),\r\n mergeMap((action: AppActions) => {\r\n const selectedCompany = action as CompanySelectedAction;\r\n const authDetails = BuildAuthRequestFromAppState(states$.value);\r\n return fromFetch(`${ApiUrl()}FFOrderClinicStatus/GetStatus`,\r\n {\r\n method: 'POST',\r\n credentials: 'omit',\r\n body: JSON.stringify(selectedCompany.payload),\r\n headers: new Headers({\r\n 'auth_token': authDetails?.auth_token,\r\n 'IsMarketPlace': authDetails.IsMarketPlace,\r\n 'Agent': authDetails.Agent,\r\n 'api_version': authDetails.api_version,\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n }),\r\n })\r\n .pipe(switchMap(response => response.ok ?\r\n response.json() :\r\n Promise.resolve(null)))\r\n .pipe(mergeMap(json => {\r\n if (!json?.data) {\r\n return EMPTY\r\n }\r\n const requireCompleteSetup = !(json.data.IsSiteAdmin || json.data.Status === ClinicStatus.Completed || (json.data.IsClinic && json.data.Status === ClinicStatus.ClinicConfigured) || ((json.data.IsClient || json.data.IsLocation) && (json.data.Status === ClinicStatus.UserConfigured || json.data.Status === ClinicStatus.ClientConfigured)))\r\n return of(MapApiResponseToAction(json, selectedCompany.payload, requireCompleteSetup))\r\n }))\r\n }\r\n )\r\n );\r\n};\r\nexport default WorkforceOneUserPortalPermission;\r\n","import {Epic, ofType} from \"redux-observable\";\r\nimport {AppActions} from \"../actions\";\r\nimport {AppState} from \"../AppState\";\r\nimport {mergeMap} from \"rxjs/operators\";\r\nimport {of} from \"rxjs\";\r\nimport {\r\n USER_LOGGED_IN,\r\n WorkforceOneLoggedInAction,\r\n} from \"../actions/WorkforceOneLoginActions\";\r\nimport {AllowSelectCompany, SelectCompany} from \"../actions/WorkforceClinicAction\";\r\n\r\nconst WorkforceOneUserAutoCompanySelectionEpic: Epic = (action$, states$) => {\r\n return action$.pipe(\r\n ofType(USER_LOGGED_IN),\r\n mergeMap((action: AppActions) => {\r\n const selectedLoggedInUser = action as WorkforceOneLoggedInAction;\r\n if(selectedLoggedInUser.payload.Portal.Clinic.length === 1) {\r\n const portal = selectedLoggedInUser.payload.Portal.Clinic[0]\r\n if (portal.ParticipationID || 0 > 0 && portal.Link?.length || 0 > 0) {\r\n return of (SelectCompany(portal.ParticipationID || \"\", portal.Link || \"\"))\r\n }\r\n const allCompanies = selectedLoggedInUser.payload.Portal.Clinic[0].AssignedClientDetailsOfClinic\r\n const companies = allCompanies.filter(item => !item.LocationID)\r\n if (companies.length === 1) {\r\n return of (SelectCompany(companies[0].ParticipationID, companies[0].Link))\r\n }\r\n if (allCompanies.length === 1) {\r\n return of (SelectCompany(allCompanies[0].ParticipationID, allCompanies[0].Link))\r\n }\r\n }\r\n return of(AllowSelectCompany());\r\n }\r\n )\r\n );\r\n};\r\nexport default WorkforceOneUserAutoCompanySelectionEpic;\r\n","\r\nexport type PAGE_LOADED_TYPE = 'WORKFORCE_PAGE_LOADED';\r\nexport const PAGE_LOADED = 'WORKFORCE_PAGE_LOADED';\r\nexport interface WorkforceOnePageLoadedAction{\r\n type: PAGE_LOADED_TYPE\r\n}\r\nexport function PageLoaded(): WorkforceOnePageLoadedAction{\r\n return {\r\n type: PAGE_LOADED,\r\n }\r\n}\r\n\r\n\r\nexport type WorkforceOnePageActions = | WorkforceOnePageLoadedAction;\r\n\r\n","import {Epic, ofType} from \"redux-observable\";\r\nimport {AppActions} from \"../actions\";\r\nimport {AppState} from \"../AppState\";\r\nimport {PAGE_LOADED} from \"../actions/WorkforceOnePageActions\";\r\nimport {mergeMap} from \"rxjs/operators\";\r\nimport {EMPTY, of} from \"rxjs\";\r\nimport {WorkforceOneLoggedInPayload, WorkforceOneUserHasLoggedIn} from \"../actions/WorkforceOneLoginActions\";\r\nimport {GetAuthToken, GetSSOToken, SetSSOToken} from \"../storage/AuthToken\";\r\nimport {GetLoginPortals} from \"../storage/LogInPortals\";\r\nimport {GetUserId} from \"../storage/UserId\";\r\n\r\nconst WorkforceOneLoginPageReturn: Epic = (action$, states$) => {\r\n return action$.pipe(\r\n ofType(PAGE_LOADED),\r\n mergeMap((action: AppActions) => {\r\n const loginToken = GetAuthToken();\r\n const loginId = GetUserId();\r\n const ssoToken = GetSSOToken();\r\n const portalsInformation = GetLoginPortals();\r\n if(loginToken && portalsInformation && portalsInformation.length > 0 && loginId){\r\n const loginPayload : WorkforceOneLoggedInPayload = {\r\n UserId: loginId,\r\n AuthToken: loginToken,\r\n Portal: {Clinic: portalsInformation},\r\n };\r\n return of(WorkforceOneUserHasLoggedIn(loginToken, loginId, ssoToken, loginPayload));\r\n }\r\n SetSSOToken(\"\");\r\n return EMPTY;\r\n }\r\n )\r\n );\r\n};\r\nexport default WorkforceOneLoginPageReturn;\r\n","import {Epic, ofType} from \"redux-observable\";\r\nimport {AppActions} from \"../actions\";\r\nimport {AppState} from \"../AppState\";\r\nimport {mergeMap} from \"rxjs/operators\";\r\nimport {EMPTY, of} from \"rxjs\";\r\nimport {SelectCompany} from \"../actions/WorkforceClinicAction\";\r\nimport {getCompanySelection} from \"../storage/CompanySelection\";\r\nimport {USER_LOGGED_IN} from \"../actions/WorkforceOneLoginActions\";\r\n\r\nconst WorkforceOneCompanySelectPageReturn: Epic = (action$, states$) => {\r\n return action$.pipe(\r\n ofType(USER_LOGGED_IN),\r\n mergeMap((action: AppActions) => {\r\n const companySelection = getCompanySelection();\r\n if(companySelection.company && companySelection.loginLink){\r\n return of(SelectCompany(companySelection.company, companySelection.loginLink));\r\n }\r\n return EMPTY;\r\n }\r\n )\r\n );\r\n};\r\nexport default WorkforceOneCompanySelectPageReturn;","import {Epic, ofType} from \"redux-observable\";\r\nimport {AppActions} from \"../actions\";\r\nimport {AppState} from \"../AppState\";\r\nimport {mergeMap} from \"rxjs/operators\";\r\nimport {\r\n USER_P_RESET,\r\n WorkforceOneUserLogOut\r\n} from \"../actions/WorkforceOneLoginActions\";\r\nimport {EMPTY, of} from \"rxjs\";\r\nimport {SetSSOToken} from \"../storage/AuthToken\";\r\n\r\nconst WorkforceOneLogOutFromPasswordReset: Epic = (action$, states$) => {\r\n return action$.pipe(\r\n ofType(USER_P_RESET),\r\n mergeMap((action: AppActions) => {\r\n if(states$.value.Workforce1State.isLoggedIn){\r\n return of (WorkforceOneUserLogOut());\r\n }\r\n SetSSOToken(\"\");\r\n return EMPTY;\r\n }\r\n )\r\n );\r\n};\r\nexport default WorkforceOneLogOutFromPasswordReset;\r\n","import {Epic, ofType} from \"redux-observable\";\r\nimport {AppActions} from \"../actions\";\r\nimport {AppState} from \"../AppState\";\r\nimport {mergeMap, switchMap} from \"rxjs/operators\";\r\nimport {BuildAuthRequestFromAppState} from \"../authentication/BuildAuthRequestInterface\";\r\nimport {fromFetch} from \"rxjs/fetch\";\r\nimport ApiUrl from \"../api/ApiUrl\";\r\nimport {USER_P_RESET, WorkforceOnePasswordResetAction} from \"../actions/WorkforceOneLoginActions\";\r\nimport {EMPTY} from \"rxjs\";\r\n\r\n\r\nconst WorkforceOnePasswordResetRequest: Epic = (action$, states$) => {\r\n return action$.pipe(\r\n ofType(USER_P_RESET),\r\n mergeMap((action: AppActions) => {\r\n const selectedCompany = action as WorkforceOnePasswordResetAction;\r\n const authDetails = BuildAuthRequestFromAppState(states$.value);\r\n return fromFetch(`${ApiUrl()}FFOrderClinicStatus/GetStatus`,\r\n {\r\n method: 'POST',\r\n credentials: 'omit',\r\n body: JSON.stringify(selectedCompany.payload),\r\n headers: new Headers({\r\n 'auth_token': authDetails?.auth_token,\r\n 'IsMarketPlace': authDetails.IsMarketPlace,\r\n 'Agent': authDetails.Agent,\r\n 'api_version': authDetails.api_version,\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n }),\r\n })\r\n .pipe(switchMap(response => response.ok ?\r\n response.json() :\r\n Promise.resolve(null)))\r\n .pipe(switchMap(() => {\r\n // it may be a good idea to toast.. api response..\r\n return EMPTY;\r\n }))\r\n }\r\n )\r\n );\r\n};\r\nexport default WorkforceOnePasswordResetRequest;\r\n","import {Epic, ofType} from \"redux-observable\";\r\nimport {AppActions} from \"../actions\";\r\nimport {AppState} from \"../AppState\";\r\nimport {catchError, map, mergeMap, switchMap} from \"rxjs/operators\";\r\nimport {fromFetch} from \"rxjs/fetch\";\r\nimport ApiUrl from \"../api/ApiUrl\";\r\nimport {\r\n SSO_USER_LOGIN,\r\n SSOWorkforceOneLoginAction,\r\n WorkforceOneUserHasLoggedIn,\r\n WorkforceOneUserLoginFailed\r\n} from \"../actions/WorkforceOneLoginActions\";\r\n\r\nconst WorkforceOneSSOUserLoginEpic: Epic = (action$, state$ ) => {\r\n return action$.pipe(\r\n ofType(SSO_USER_LOGIN),\r\n mergeMap((action:AppActions) => {\r\n const loginDetailFromAction = action as SSOWorkforceOneLoginAction\r\n const { ssoToken, ...payload } = loginDetailFromAction.payload\r\n const body = JSON.stringify(payload)\r\n return fromFetch(`${ApiUrl()}FFOrderAccount/SSORequest`,\r\n {\r\n method: 'POST',\r\n credentials: 'omit',\r\n body: body,\r\n headers: {\r\n \"IsMarketPlace\": \"true\",\r\n 'Agent': 'Chrome',\r\n \"api_version\": \"1.0\",\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": `Bearer ${ssoToken}`\r\n },\r\n })\r\n .pipe(switchMap(response => response.ok ?\r\n response.json():\r\n Promise.resolve(null)),\r\n catchError(err => {\r\n console.error(err);\r\n return Promise.resolve(null);\r\n })\r\n )\r\n .pipe(map(json => json != null ?\r\n WorkforceOneUserHasLoggedIn(json.data.AuthToken, json.data.UserLoginID, json.data.RequestToken, json.data) :\r\n WorkforceOneUserLoginFailed()))\r\n }\r\n )\r\n );\r\n};\r\nexport default WorkforceOneSSOUserLoginEpic;\r\n","import {Epic, ofType} from \"redux-observable\";\r\nimport {AppActions} from \"../actions\";\r\nimport {AppState} from \"../AppState\";\r\nimport {catchError, map, mergeMap, switchMap} from \"rxjs/operators\";\r\nimport {fromFetch} from \"rxjs/fetch\";\r\nimport ApiUrl from \"../api/ApiUrl\";\r\nimport {\r\n SSO_TOKEN_USER_LOGIN,\r\n SSOTokenWorkforceOneLoginAction,\r\n WorkforceOneUserHasLoggedIn,\r\n WorkforceOneUserLoginFailed,\r\n} from \"../actions/WorkforceOneLoginActions\";\r\n\r\nconst WorkforceOneSSOTokenUserLoginEpic: Epic = (action$, state$ ) => {\r\n return action$.pipe(\r\n ofType(SSO_TOKEN_USER_LOGIN),\r\n mergeMap((action:AppActions) => {\r\n const loginDetailFromAction = action as SSOTokenWorkforceOneLoginAction\r\n const { ssoToken } = loginDetailFromAction.payload\r\n const body = JSON.stringify(loginDetailFromAction.payload)\r\n return fromFetch(`${ApiUrl()}FFOrderAccount/SSOTokenLogin`,\r\n {\r\n method: 'POST',\r\n credentials: 'omit',\r\n body: body,\r\n headers: {\r\n \"IsMarketPlace\": \"true\",\r\n 'Agent': 'Chrome',\r\n \"api_version\": \"1.0\",\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n },\r\n })\r\n .pipe(switchMap(response => response.ok ?\r\n response.json():\r\n Promise.resolve(null)),\r\n catchError(err => {\r\n console.error(err);\r\n return Promise.resolve(null);\r\n })\r\n )\r\n .pipe(map(json => json != null ?\r\n WorkforceOneUserHasLoggedIn(json.data.AuthToken, json.data.UserLoginID, ssoToken, json.data) :\r\n WorkforceOneUserLoginFailed()))\r\n }\r\n )\r\n );\r\n};\r\nexport default WorkforceOneSSOTokenUserLoginEpic;\r\n","import {combineEpics, Epic} from \"redux-observable\";\r\nimport {Action} from \"redux\";\r\nimport WorkforceOneUserAccess from \"./WorkforceOneUserAccess\";\r\nimport WorkforceOneUserLoginEpic from \"./WorkforceOneUserLoginEpic\";\r\nimport WorkforceOneUserPortalPermission, { WorkforceOneUpdateUserPortalPermission } from \"./WorkforceOneUserPortalPermission\";\r\nimport WorkforceOneUserAutoCompanySelectionEpic from \"./WorkforceOneUserAutoCompanySelectionEpic\";\r\nimport WorkforceOneLoginPageReturn from \"./WorkforceOneLoginPageReturn\";\r\nimport WorkforceOneCompanySelectPageReturn from \"./WorkforceOneCompanySelectPageReturn\";\r\nimport WorkforceOneLogOutFromPasswordReset from \"./WorkforceOneLogOutFromPasswordReset\";\r\nimport WorkforceOnePasswordResetRequest from \"./WorkforceOnePasswordResetRequest\";\r\nimport WorkforceOneSSOUserLoginEpic from \"./WorkforceOneSSOUserLoginEpic\";\r\nimport WorkforceOneSSOTokenUserLoginEpic from \"./WorkforceOneSSOTokenUserLoginEpic\";\r\n\r\nexport const rootEpic: Epic = combineEpics(\r\n WorkforceOneUserAccess,\r\n WorkforceOneUserLoginEpic,\r\n WorkforceOneSSOUserLoginEpic,\r\n WorkforceOneSSOTokenUserLoginEpic,\r\n WorkforceOneUserPortalPermission,\r\n WorkforceOneUserAutoCompanySelectionEpic,\r\n WorkforceOneLoginPageReturn,\r\n WorkforceOneLogOutFromPasswordReset,\r\n WorkforceOneCompanySelectPageReturn,\r\n WorkforceOnePasswordResetRequest,\r\n WorkforceOneUpdateUserPortalPermission\r\n) ;\r\n\r\n","import { createBrowserHistory, History } from 'history';\r\nimport configureStore from './configureStore';\r\nimport { getBaseUrl } from \"./BaseUrl\";\r\nimport { WorkforceRoute } from \"./AppState\";\r\nimport { WorkforceOneUserLogOut } from './actions/WorkforceOneLoginActions';\r\n\r\nconst baseUrl = getBaseUrl();\r\nconst history: History = createBrowserHistory({ basename: baseUrl });\r\nconst store = configureStore(history);\r\n\r\nexport function LogOut() {\r\n store.dispatch(WorkforceOneUserLogOut())\r\n}\r\n\r\nexport default store\r\n","export function GetSinglePageAppPath(){\r\n return \"/clinicportal/ng/\";\r\n}\r\n\r\nexport function getBaseUrl(): string {\r\n const baseDomain = window.location.hostname;\r\n const firstDotIndex = baseDomain.indexOf('.');\r\n const domain = baseDomain.substring(firstDotIndex + 1);\r\n return (`${window.location.protocol}//${domain}${window.location.port ? `:${window.location.port}` : \"\"}`);\r\n}\r\n\r\nexport function GetUrlLocation(): string {\r\n return `${window.location.origin}${GetSinglePageAppPath()}`;\r\n}\r\n","import { applyMiddleware, compose, createStore } from 'redux';\r\nimport { routerMiddleware } from 'connected-react-router';\r\nimport { History } from 'history';\r\nimport {createEpicMiddleware} from \"redux-observable\";\r\nimport createRootReducer from \"./reducers\";\r\nimport {rootEpic} from \"./epics\";\r\nimport {AppState, WorkforceRoute} from \"./AppState\";\r\n\r\nexport default function configureStore(history: History, initialState?: AppState) {\r\n const epicMiddleware = createEpicMiddleware();\r\n const middleware = [routerMiddleware(history), epicMiddleware];\r\n const enhancers = [];\r\n const windowIfDefined = typeof window === 'undefined' ? null : window as any;\r\n if (windowIfDefined && windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__) {\r\n enhancers.push(windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__());\r\n }\r\n const store = createStore(\r\n createRootReducer(history),\r\n // TODO: Type 'unknown' is not assignable to type 'never'// initialState,\r\n compose(applyMiddleware(...middleware), ...enhancers)\r\n );\r\n epicMiddleware.run(rootEpic);\r\n return store;\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport ApiUrl from \"./ApiUrl\"\r\nimport ApiResponse from \"./ApiResponse\"\r\nimport { BuildFetchRequest } from \"./BuildFetchRequest\"\r\nimport { LogOut } from \"../AppStore\"\r\n\r\nenum HttpStatusCode {\r\n UNAUTHORIZED = 401\r\n}\r\n\r\nexport class APIError extends Error {\r\n errorData?: { code: string, message: string }\r\n constructor(message: string, errorData?: { code: string, message: string }) {\r\n super(message);\r\n this.name = \"APIError\"\r\n this.errorData = errorData\r\n }\r\n}\r\n\r\nexport function ObservableFromFetch(url: string, body?: string, method?: string): Observable {\r\n return new Observable(observer => {\r\n const controller = new AbortController()\r\n\r\n let init = BuildFetchRequest(body, method)\r\n init.signal = controller.signal\r\n\r\n fetch(ApiUrl() + url, init)\r\n .then((response: Response) => {\r\n if (response.ok) {\r\n return response.json()\r\n } else {\r\n return response.text()\r\n .then(data => data ? JSON.parse(data) : {})\r\n .then(json => {\r\n throw json.error\r\n ? new APIError(response.statusText, json.error)\r\n : response.status === HttpStatusCode.UNAUTHORIZED\r\n ? new APIError(response.statusText, { code: response.status.toString(), message: response.statusText })\r\n : new Error(response.statusText)\r\n })\r\n }\r\n })\r\n .then((result: ApiResponse) => {\r\n observer.next(result.data)\r\n observer.complete()\r\n })\r\n .catch(err => {\r\n observer.error(err)\r\n if (err.errorData?.code === HttpStatusCode.UNAUTHORIZED.toString()) {\r\n LogOut()\r\n }\r\n })\r\n\r\n return () => {\r\n controller.abort()\r\n }\r\n })\r\n}\r\n\r\n// When async Task is missing in the code (RandomTest/RandomSelectionMessage)\r\nexport function ObservableFromFetchWithTaskData(url: string, body?: string): Observable {\r\n return new Observable(observer => ObservableFromFetch<{ Result: T }>(url, body).subscribe(\r\n data => observer.next(data.Result),\r\n error => observer.error(error)\r\n ))\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function UserPasswordReset(email: string, link: string, isForgot: boolean = true) {\r\n const requestBody: string = JSON.stringify({\r\n InvitationLink: link,\r\n IsForgotPassword: isForgot,\r\n UserName: email\r\n })\r\n return ObservableFromFetch(\"FFOrderAccount/ChangeUserPassword\", requestBody)\r\n}","import React from \"react\"\r\nimport { Container, Button, Modal, Form, Col, InputGroup, Row, Spinner } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { Home } from \"../../config/Routes\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport UserPasswordReset from \"../../api/Administration/UserPasswordReset\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { EmailRegexp } from \"../../config/Constants\"\r\nimport { getLoggedInUserName } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\n\r\n\r\ninterface ChangePasswordModalProps {\r\n LoginName: string\r\n show: boolean\r\n onCancel: () => void\r\n onSubmit: () => void\r\n}\r\n\r\ninterface ChangePasswordModalState {\r\n loginName: string\r\n isEmailValid: boolean\r\n dataSaving: boolean\r\n}\r\n\r\n\r\nexport class ChangePasswordModal extends React.Component {\r\n\r\n emptyState: ChangePasswordModalState = {\r\n loginName: \"\",\r\n isEmailValid: false,\r\n dataSaving: false\r\n }\r\n\r\n state: ChangePasswordModalState = { ...this.emptyState }\r\n\r\n userPasswordResetSubscription?: Subscription\r\n\r\n\r\n componentWillUnmount() {\r\n this.userPasswordResetSubscription && this.userPasswordResetSubscription.unsubscribe()\r\n }\r\n handleAPIError = (error: Error | APIError) => {\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n handleCancel = () => {\r\n this.props.onCancel()\r\n }\r\n handleSubmit = () => {\r\n const loginName = this.state.loginName;\r\n this.setState({ dataSaving: true })\r\n this.userPasswordResetSubscription && this.userPasswordResetSubscription.unsubscribe()\r\n\r\n this.userPasswordResetSubscription = UserPasswordReset(loginName, window.location.href, false).subscribe(\r\n data => {\r\n toast.success(data);\r\n this.setState({ dataSaving: false });\r\n this.props.onSubmit();\r\n },\r\n (error) => {\r\n this.handleAPIError(error);\r\n this.setState({ dataSaving: false });\r\n }\r\n )\r\n\r\n }\r\n\r\n isEmailValid = (value: string) => {\r\n if (value.length === 0) {\r\n return false\r\n }\r\n return EmailRegexp.test(value)\r\n }\r\n\r\n handleEmailChange = (value: string) => {\r\n this.setState(\r\n {\r\n loginName: value,\r\n isEmailValid: this.isEmailValid(value)\r\n })\r\n }\r\n\r\n\r\n\r\n render() {\r\n this.state.loginName = this.props.LoginName;\r\n this.state.isEmailValid = this.isEmailValid(this.props.LoginName);\r\n const { loginName, isEmailValid, dataSaving } = this.state;\r\n\r\n return (\r\n\r\n \r\n \r\n CHANGE PASSWORD\r\n \r\n \r\n
\r\n \r\n \r\n \r\n

Please enter your email address, click Submit and we will send you an email that contains a link to click on that requests a PIN number to change your password.

\r\n \r\n
\r\n \r\n \r\n this.handleEmailChange(e.target.value)}\r\n disabled={dataSaving || true}\r\n />\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n Submit\r\n \r\n
\r\n\r\n )\r\n }\r\n\r\n}\r\n\r\n","import React, { Component } from \"react\"\r\nimport { NavDropdown } from \"react-bootstrap\"\r\n\r\nexport interface NavDropdownHoverProps {\r\n title: React.ReactNode\r\n id: string\r\n className?: string\r\n alignRight?: boolean\r\n}\r\n\r\nexport interface NavDropdownHoverState {\r\n isOpen: boolean\r\n}\r\n\r\nexport class NavDropdownHover extends Component {\r\n state: NavDropdownHoverState = {\r\n isOpen: false\r\n }\r\n\r\n handleOpen = () => this.setState({ isOpen: true })\r\n handleClose = () => this.setState({ isOpen: false })\r\n\r\n render() {\r\n return \r\n {this.props.children}\r\n \r\n }\r\n}\r\n","import { IsOnTrack } from \"../App\"\r\nimport {\r\n Home,\r\n OrderFinishRoute,\r\n OrderRoute,\r\n OrdersRoute,\r\n RandomsPersonnelRoute,\r\n RandomsRoute,\r\n SelectionInboxRoute,\r\n SiteSearchOptionsRoute,\r\n SiteSearchRoute,\r\n ActivateCompanyRoute,\r\n ActivatePortalRoute,\r\n MyOrganizationRoute,\r\n MyOrganizationNameRoute,\r\n CompanyInformationRoute,\r\n InviteStatusRoute,\r\n MyInformationRoute,\r\n OrphanedResultsRoute,\r\n OurTeamStatusRoute,\r\n RegulatoryModeRoute,\r\n PermissionsRoute,\r\n GlobalParameterRoute,\r\n OrderableServicesRoute,\r\n UserCodesRoute,\r\n GovDonorRoute,\r\n RandomsGovRoute,\r\n ConsortiumsRoute,\r\n GovOrderRoute,\r\n SSOOrderRoute,\r\n SSOOrderFinishRoute,\r\n SSOSiteSearchRoute,\r\n SSOHome,\r\n ReportPositiveRoute,\r\n ReportSpecimenPositivityRoute,\r\n ReportDrugDetailRoute,\r\n ReportDailySummaryRoute,\r\n ReportIvrCallInComplianceRoute,\r\n ReportNoShowRoute,\r\n ReportTestingSummaryRoute,\r\n UserLabelsRoute,\r\n ReportCertificationRenewalRoute,\r\n ReportCertificationStatusRoute,\r\n ReportManagementSummaryRoute,\r\n ReportMISRoute,\r\n ReportSummaryRoute,\r\n LocationInformationRoute,\r\n PortalAdministrationRoute,\r\n AddNewPortalRoute,\r\n ActivateUserRoute,\r\n ConfigureOrderDefaultsRoute,\r\n AddNewCompanyRoute,\r\n AddNewCompanyNameRoute,\r\n SendingFacilityRoute,\r\n ConsortiumPersonnelRoute,\r\n CompanyInformationNameRoute,\r\n ReportSelectedNotTestedRoute,\r\n SSOGetAuthFormRoute,\r\n LabResultsReportingRoute,\r\n ReportUnmergedRandomResultsRoute\r\n} from \"../config/Routes\"\r\nimport { GetSSOAction, SiteSearchModeEnabled } from \"../storage/AuthToken\"\r\nimport UserAccessSettings from \"./UserAccessSettings\"\r\nimport UserState from \"./UserState\"\r\n\r\nexport function HasAccessToAtLeastOneRoute(routes: string[], userAccess: UserAccessSettings, userState: UserState): boolean {\r\n return routes.some(route => HasAccessToRoute(route, userAccess, userState))\r\n}\r\n\r\nexport default function HasAccessToRoute(route: string | undefined, userAccess: UserAccessSettings, userState: UserState): boolean {\r\n if (route === undefined || (!userState.selectedCompany && !userState.selectedPortal)) {\r\n return false\r\n }\r\n const ssoRoutes = [SSOOrderRoute, SSOOrderFinishRoute, SSOSiteSearchRoute, SSOGetAuthFormRoute]\r\n const isSiteSearchMode = SiteSearchModeEnabled()\r\n const isGetAuthFormMode = GetSSOAction() === \"getauthform\"\r\n const isLocation = (userState.selectedCompany?.LocationID || 0) > 0\r\n if (userState.ssoToken !== \"\" && !ssoRoutes.includes(route) || userState.ssoToken === \"\" && ssoRoutes.includes(route)) {\r\n return false\r\n }\r\n\r\n switch (route) {\r\n case InviteStatusRoute: return userAccess.canShowInvitationStatus\r\n case RandomsRoute: return userAccess.canManagePools && !isLocation\r\n case RandomsRoute: return userAccess.canManagePools\r\n case RandomsPersonnelRoute: return userAccess.canManagePersonnel\r\n case SelectionInboxRoute: return userAccess.canManageSelectionInbox\r\n case OrderRoute: return userAccess.canViewOrder\r\n case OrderFinishRoute: return userAccess.canViewOrder\r\n case SiteSearchRoute: return userAccess.canViewSiteSearch\r\n case OrdersRoute: return userAccess.canViewOrderTrackingGrid\r\n case OurTeamStatusRoute: return userAccess.isSiteAdmin || userAccess.isPortalAdmin || userAccess.isCompanyAdmin || userAccess.isLocationAdmin\r\n case CompanyInformationRoute: return (userAccess.isSiteAdmin || userAccess.isPortalAdmin || userAccess.isCompanyAdmin) && userAccess.canManageClient\r\n case LocationInformationRoute: return userAccess.isLocationAdmin\r\n case ActivateUserRoute: return userAccess.isSiteAdmin || userAccess.isPortalAdmin || userAccess.isCompanyAdmin || userAccess.isLocationAdmin\r\n case OrphanedResultsRoute: return userAccess.canShowOrphanedResults && (userAccess.isSiteAdmin || userAccess.isPortalAdmin || userAccess.isCompanyAdmin)\r\n case MyOrganizationRoute: return userAccess.isPortalAdmin\r\n case AddNewCompanyRoute: return userAccess.isPortalAdmin && userAccess.canCreateClient\r\n case CompanyInformationNameRoute: return userAccess.isSiteAdmin || userAccess.isPortalAdmin || userAccess.isCompanyAdmin\r\n case AddNewCompanyNameRoute: return userAccess.isSiteAdmin\r\n case MyOrganizationNameRoute: return userAccess.isSiteAdmin\r\n case PortalAdministrationRoute: return userAccess.isSiteAdmin\r\n case AddNewPortalRoute: return userAccess.isSiteAdmin\r\n case ActivateCompanyRoute: return userAccess.isSiteAdmin || userAccess.isPortalAdmin\r\n case SiteSearchOptionsRoute: return userAccess.canSearchDefaults\r\n case GlobalParameterRoute: return userAccess.isSiteAdmin\r\n case ActivatePortalRoute: return userAccess.isSiteAdmin\r\n case RegulatoryModeRoute: return userAccess.isSiteAdmin\r\n case PermissionsRoute: return userAccess.isSiteAdmin && userAccess.canShowRolePermissionSubscription\r\n case MyInformationRoute: return true\r\n case OrderableServicesRoute: return userAccess.isSiteAdmin || userAccess.isPortalAdmin\r\n case UserCodesRoute: return !IsOnTrack() && (userAccess.isPortalAdmin || userAccess.isCompanyAdmin)\r\n case RandomsGovRoute: return userAccess.CanManageGovPools\r\n case ConsortiumsRoute: return (userAccess.CanManageConsortiumPools || userAccess.canManagePools) && !userAccess.isLocationAdmin\r\n case ConsortiumPersonnelRoute: return userAccess.CanManageConsortiumPools && userAccess.isPortalAdmin\r\n case GovDonorRoute: return userAccess.CanManageGovDonors\r\n case GovOrderRoute: return userAccess.CanOrderGovServices\r\n case SSOOrderRoute: return userAccess.canViewOrder && !isGetAuthFormMode\r\n case SSOOrderFinishRoute: return userAccess.canViewOrder && !isGetAuthFormMode\r\n case SSOSiteSearchRoute: return userAccess.canViewOrder && isSiteSearchMode \r\n case SSOGetAuthFormRoute: return userAccess.canViewOrder && isGetAuthFormMode\r\n case SendingFacilityRoute: return userAccess.isSiteAdmin\r\n case Home: return true\r\n case SSOHome: return true\r\n case ReportPositiveRoute: return userAccess.isPortalAdmin\r\n case ReportTestingSummaryRoute: return userAccess.isPortalAdmin || userAccess.isCompanyAdmin || userAccess.isLocationAdmin\r\n case ReportSpecimenPositivityRoute: return userAccess.isPortalAdmin || userAccess.isCompanyAdmin || userAccess.isLocationAdmin\r\n case ReportDrugDetailRoute: return userAccess.isPortalAdmin || userAccess.isCompanyAdmin || userAccess.isLocationAdmin\r\n case ReportDailySummaryRoute: return userAccess.isPortalAdmin || userAccess.isCompanyAdmin || userAccess.isLocationAdmin\r\n case ReportIvrCallInComplianceRoute: return userAccess.isPortalAdmin || userAccess.isCompanyAdmin || userAccess.isLocationAdmin\r\n case ReportNoShowRoute: return userAccess.isPortalAdmin || userAccess.isCompanyAdmin || userAccess.isLocationAdmin\r\n case UserLabelsRoute: return userAccess.isPortalAdmin\r\n case ReportCertificationRenewalRoute: return userAccess.canViewMISReports\r\n case ReportCertificationStatusRoute: return userAccess.canViewMISReports\r\n case ReportManagementSummaryRoute: return userAccess.canViewMISReports\r\n case ReportMISRoute: return userAccess.canViewMISReports\r\n case ReportSelectedNotTestedRoute: return userAccess.isPortalAdmin || userAccess.isCompanyAdmin\r\n case ReportSummaryRoute: return userAccess.isPortalAdmin || userAccess.isCompanyAdmin\r\n case ConfigureOrderDefaultsRoute: return (!IsOnTrack() && userAccess.isPortalAdmin) || userAccess.isSiteAdmin\r\n case LabResultsReportingRoute: return userAccess.isSiteAdmin || userAccess.isPortalAdmin\r\n case ReportUnmergedRandomResultsRoute: return userAccess.isPortalAdmin || userAccess.isCompanyAdmin\r\n default: return false\r\n }\r\n}\r\n","import { ReactNode } from \"react\"\r\nimport { Nav } from \"react-bootstrap\"\r\nimport HasAccessToRoute from \"../../authentication/hasAccessToRoute\"\r\nimport UserAccessSettings from \"../../authentication/UserAccessSettings\"\r\nimport UserState from \"../../authentication/UserState\"\r\nimport { GetSinglePageAppPath } from \"../../BaseUrl\"\r\n\r\nexport interface NavMenuLinkProps {\r\n title: ReactNode\r\n route: string\r\n userAccess: UserAccessSettings\r\n userState: UserState\r\n}\r\nexport interface NavMenuLinkPropsWithNumber {\r\n title: ReactNode\r\n route: string\r\n userAccess: UserAccessSettings\r\n userState: UserState\r\n count: number\r\n}\r\n\r\nexport default function NavMenuLink(props: NavMenuLinkProps) {\r\n if (!HasAccessToRoute(props.route, props.userAccess, props.userState)) {\r\n return <>\r\n }\r\n return {props.title}\r\n}\r\nexport function NavMenuLinkWithNumber(props: NavMenuLinkPropsWithNumber) {\r\n if (!HasAccessToRoute(props.route, props.userAccess, props.userState)) {\r\n return <>\r\n }\r\n if (props.count > 0) {\r\n return {props.title} {props.count}\r\n }\r\n return {props.title}\r\n\r\n}\r\n","import React, { Component, createRef } from \"react\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { catchError, debounceTime, distinctUntilChanged, filter, map, switchMap } from \"rxjs/operators\"\r\nimport { AssignedClinic, WorkforceClinicPortal } from \"../../AppState\"\r\nimport { AsyncTypeahead } from \"react-bootstrap-typeahead\"\r\nimport CompaniesGetObservable, { CompaniesFilterParams } from \"../../api/Portals/PortalCompaniesGet\"\r\nimport { AccountLimit } from \"../../config/Constants\"\r\nimport { Form, Row } from \"react-bootstrap\"\r\nimport UserAccessSettings from \"../../authentication/UserAccessSettings\"\r\nimport UserState from \"../../authentication/UserState\"\r\n\r\ninterface PortalCompanySearchProps {\r\n id?: string\r\n portal: WorkforceClinicPortal\r\n switchCompany(company: AssignedClinic): void\r\n showCompaniesSearch: boolean\r\n userAccess: UserAccessSettings\r\n userState: UserState\r\n}\r\n\r\ninterface PortalCompanySearchState {\r\n loading: boolean\r\n companies?: AssignedClinic[]\r\n}\r\n\r\nexport class PortalCompanySearch extends Component {\r\n state: PortalCompanySearchState = { loading: false, companies: [] }\r\n companies$?: Subject;\r\n companiesSubscription?: Subscription;\r\n companyRef = createRef>()\r\n\r\n clearResult() {\r\n this.companyRef?.current?.clear();\r\n this.setState({ companies: [] });\r\n }\r\n\r\n searchCompanies(query: string, locationsOnly: boolean = false, accountID: number = 0) {\r\n this.companies$?.next({ portal: this.props.portal, query: query, locationsOnly: locationsOnly, accountID: accountID })\r\n }\r\n\r\n componentDidMount() {\r\n this.companies$ = new Subject();\r\n this.companiesSubscription = this.companies$.pipe(\r\n debounceTime(400),\r\n distinctUntilChanged(),\r\n filter(params => (params.query ?? \"\").trim().length > 0),\r\n switchMap((params) => concat(\r\n of({ loading: true }),\r\n CompaniesGetObservable(params).pipe(\r\n map((companies) => ({ loading: false, companies: companies })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, companies?: AssignedClinic[] }) => {\r\n this.setState({ loading: o.loading, companies: o.companies })\r\n },\r\n () => this.setState({ loading: false, companies: [] })\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.companiesSubscription?.unsubscribe()\r\n }\r\n\r\n render() {\r\n const { loading, companies } = this.state\r\n const { id, switchCompany, userAccess, userState, portal, showCompaniesSearch } = this.props\r\n const accountID = userAccess.isCompanyAdmin || userAccess.isLocationAdmin ? userState.selectedCompany?.AccountID : 0\r\n const showLocations = (userAccess.isCompanyAdmin && portal.AssignedClientDetailsOfClinic.some(company => company.AccountID === accountID && !!company.LocationName)) ||\r\n (userAccess.isLocationAdmin && portal.AssignedClientDetailsOfClinic.some(company => company.AccountID === accountID && !!company.LocationName && company.LocationID !== userState.selectedCompany?.LocationID))\r\n\r\n return (\r\n
\r\n {!userAccess.isLocationAdmin && showCompaniesSearch && \r\n this.clearResult()}\r\n onSearch={query => this.searchCompanies(query)}\r\n onChange={(selected: AssignedClinic[]) => switchCompany(selected[0])}\r\n options={companies || []}\r\n positionFixed\r\n ref={this.companyRef}\r\n selected={[]}>\r\n \r\n }\r\n {showLocations && \r\n `${option.LocationName}`}\r\n minLength={0}\r\n maxResults={AccountLimit}\r\n paginate={false}\r\n useCache={false}\r\n isLoading={loading}\r\n inputProps={{ style: { 'width': '250px', 'margin': '0 15px' }, autoComplete: \"chrome-off\" }}\r\n onBlur={() => this.clearResult()}\r\n onSearch={query => this.searchCompanies(query, true, accountID)}\r\n onChange={(selected: AssignedClinic[]) => switchCompany(selected[0])}\r\n options={companies || []}\r\n positionFixed\r\n ref={this.companyRef}\r\n selected={[]}>\r\n \r\n }\r\n
\r\n )\r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { AssignedClinic, WorkforceClinicPortal } from \"../../AppState\"\r\n\r\nexport interface CompaniesFilterParams {\r\n portal: WorkforceClinicPortal\r\n query: string\r\n locationsOnly: boolean\r\n accountID: number\r\n}\r\n\r\nexport default function CompaniesGetObservable(filter: CompaniesFilterParams): Observable {\r\n return new Observable(observer => {\r\n if (filter.locationsOnly) {\r\n observer.next(filter.portal.AssignedClientDetailsOfClinic\r\n .filter(company => !!company.LocationName && company.AccountID === filter.accountID && company.LocationName.toLowerCase().indexOf(filter.query.toLowerCase()) !== -1)\r\n )\r\n }\r\n else {\r\n observer.next(filter.portal.AssignedClientDetailsOfClinic\r\n .filter(company => (company.Name.toLowerCase().indexOf(filter.query.toLowerCase()) !== -1 && company.LocationID == 0))\r\n )\r\n }\r\n observer.complete()\r\n })\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Nav, Navbar, NavDropdown } from \"react-bootstrap\"\r\nimport { FaHome, FaUser } from \"react-icons/fa\"\r\nimport { connect } from \"react-redux\"\r\n//import { toast } from \"react-toastify\"\r\nimport { Action, Dispatch } from \"redux\"\r\nimport { SelectCompany } from \"../../actions/WorkforceClinicAction\"\r\nimport { WorkforceOneUserLogOut } from \"../../actions/WorkforceOneLoginActions\"\r\nimport { AppState, AssignedClinic, WorkforceClinicPortal } from \"../../AppState\"\r\nimport UserAccessSettings from \"../../authentication/UserAccessSettings\"\r\nimport { BuildUserAccess } from \"../../authentication/BuildUserAccess\"\r\nimport UserState from \"../../authentication/UserState\"\r\nimport { BuildUserState } from \"../../authentication/BuildUserState\"\r\nimport { getLoggedInUserName, GetSelectedAssignedClinic, isInPortal, SelectedAccountName, SelectedPortalName } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport { GetSinglePageAppPath } from \"../../BaseUrl\"\r\nimport { getOrphanedResultsCount} from \"../../storage/LogInPortals\"\r\n\r\nimport {\r\n ActivateCompanyRoute,\r\n ActivatePortalRoute,\r\n CompanyInformationRoute,\r\n GlobalParameterRoute,\r\n Home,\r\n InviteStatusRoute,\r\n MyInformationRoute,\r\n MyOrganizationRoute,\r\n OrderRoute,\r\n OrderableServicesRoute,\r\n OrdersRoute,\r\n OrphanedResultsRoute,\r\n OurTeamStatusRoute,\r\n PermissionsRoute,\r\n RandomsPersonnelRoute,\r\n RandomsRoute,\r\n RegulatoryModeRoute,\r\n SelectionInboxRoute,\r\n SiteSearchOptionsRoute,\r\n SiteSearchRoute,\r\n GovDonorRoute,\r\n RandomsGovRoute,\r\n GovOrderRoute,\r\n ReportPositiveRoute,\r\n ReportTestingSummaryRoute,\r\n ReportSpecimenPositivityRoute,\r\n ReportDrugDetailRoute,\r\n ReportDailySummaryRoute,\r\n ReportIvrCallInComplianceRoute,\r\n ReportNoShowRoute,\r\n UserCodesRoute,\r\n UserLabelsRoute,\r\n ReportCertificationRenewalRoute,\r\n ReportCertificationStatusRoute,\r\n ReportManagementSummaryRoute,\r\n ReportMISRoute,\r\n ReportSummaryRoute,\r\n LocationInformationRoute,\r\n PortalAdministrationRoute,\r\n ConfigureOrderDefaultsRoute,\r\n SendingFacilityRoute,\r\n ConsortiumsRoute,\r\n ReportSelectedNotTestedRoute,\r\n LabResultsReportingRoute,\r\n ReportUnmergedRandomResultsRoute\r\n} from \"../../config/Routes\"\r\nimport { ChangePasswordModal } from \"../Accounts/ChangePassword\"\r\nimport { NavDropdownHover } from \"./NavDropdownHover\"\r\nimport HasAccessToRoute from \"../../authentication/hasAccessToRoute\"\r\nimport NavMenuLink, {NavMenuLinkWithNumber} from \"./NavMenuLink\"\r\nimport { IsOnTrack } from \"../../App\";\r\nimport { PortalCompanySearch } from \"./PortalCompanySearch\"\r\n\r\nexport interface NavMenuProps {\r\n userAccess: UserAccessSettings\r\n userState: UserState\r\n selectedCompany?: string\r\n visibleCompanies?: WorkforceClinicPortal[]\r\n LoginName: string\r\n}\r\nexport interface NavMenuDispatchProps {\r\n logout: () => void\r\n selectCompany: (company: string, companyLink: string) => void\r\n}\r\nexport interface NavMenuState {\r\n showChangePassword: boolean\r\n orphanedResultsCount: number\r\n}\r\n\r\ninterface MenuItemSpecification { title: string | React.ReactElement, route: string, render?: (() => React.ReactElement | null | undefined) }\r\n\r\nexport class NavMenu extends Component {\r\n public state: NavMenuState = { showChangePassword: false, orphanedResultsCount: getOrphanedResultsCount() }\r\n baseUrl = GetSinglePageAppPath()\r\n\r\n buildUrl = (route: string) => `${this.baseUrl}#${route}`\r\n dropMenuItem = (title: string | React.ReactElement, route: string, bypassPermissionsCheck?: boolean, key?: string) => bypassPermissionsCheck || HasAccessToRoute(route, this.props.userAccess, this.props.userState) ? {title} : null\r\n dropMenu = (title: string | React.ReactElement, id: string, items?: MenuItemSpecification[], children?: React.ReactFragment, alignRight?: boolean) => {\r\n const menuItems = items?.map((item, i) => item.render ? item.render() : this.dropMenuItem(item.title, item.route, false, `${item.route}_${i}`)).filter(item => !!item) as React.ReactElement[]\r\n return (children || menuItems?.length) ? {menuItems}{children} : <>\r\n }\r\n\r\n onStorageChanged = () => {\r\n this.setState({ orphanedResultsCount: getOrphanedResultsCount() })\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener('storage', this.onStorageChanged)\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('storage', this.onStorageChanged)\r\n }\r\n\r\n render() {\r\n const { userAccess, userState } = this.props\r\n const { orphanedResultsCount } = this.state || 0\r\n return (<>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n getPortalsMenu(props: NavMenuProps & NavMenuDispatchProps) {\r\n const portals = props.visibleCompanies?.sort((a, b) => (a.ImplementationName || \"\").localeCompare(b.ImplementationName || \"\")) || []\r\n const portalItems = portals.reduce((acc, portal, portalIndex) => {\r\n\r\n const portalItem = {\r\n props.selectCompany(portal.ParticipationID || \"\", portal.Link || \"\")\r\n routeToHome()\r\n }}>\r\n {portal.ImplementationName}\r\n \r\n\r\n const accountID = props.userState.selectedCompany?.AccountID || 0\r\n const parentCompany = portal.AssignedClientDetailsOfClinic.find(item => item.AccountID === accountID && !item.LocationID)\r\n const assignedClinics = portal.AssignedClientDetailsOfClinic.filter(item => !item.LocationID)\r\n const showCompaniesSearch = (props.userAccess.isPortalAdmin && assignedClinics.length > 0) || (assignedClinics.length > 1 && !props.userAccess.isLocationAdmin)\r\n const key = `${parentCompany?.ParticipationID || \"\"}`\r\n const parentCompanyItem = !!parentCompany && !showCompaniesSearch ? {\r\n props.selectCompany(parentCompany.ParticipationID || \"\", parentCompany.Link || \"\")\r\n routeToHome()\r\n }}>\r\n {parentCompany.ImplementationName} / {parentCompany.Name}\r\n : \r\n\r\n const clinicItems =\r\n \r\n this.switchCompany(company)}\r\n showCompaniesSearch={showCompaniesSearch}\r\n userAccess={props.userAccess}\r\n userState={props.userState}\r\n />\r\n \r\n\r\n return acc.concat(portalItem).concat(parentCompanyItem).concat(clinicItems)\r\n }, [])\r\n return {portalItems}\r\n }\r\n\r\n switchCompany = (company: AssignedClinic) => {\r\n this.props.selectCompany(company.ParticipationID, company.Link)\r\n routeToHome()\r\n }\r\n\r\n isShowPortals(props: NavMenuProps & NavMenuDispatchProps) {\r\n const permissions = props.userAccess\r\n //TODO: 2021-06-19. Yanek Dogel. Research is need check caShowPortal permissions to show portal menu\r\n if (!permissions.canShowPortal) {\r\n //return false\r\n }\r\n if (permissions.isSiteAdmin) {\r\n return false\r\n }\r\n const portals = props.visibleCompanies || []\r\n if (portals.length == 0) {\r\n return false\r\n }\r\n if (portals.length > 0) {\r\n return true\r\n }\r\n for (let i = 0; i < portals.length; i++) {\r\n const portal = portals[i]\r\n const clinics = portal.AssignedClientDetailsOfClinic || []\r\n if (clinics.length > 0) {\r\n return true\r\n }\r\n }\r\n return false\r\n\r\n }\r\n\r\n performChangePassword = () => {\r\n this.setState({ showChangePassword: false })\r\n this.logoutClick()\r\n }\r\n\r\n hideChangePassword = () => {\r\n this.setState({ showChangePassword: false })\r\n }\r\n\r\n showChangePasswordClick = () => {\r\n this.setState({ showChangePassword: true })\r\n }\r\n\r\n logoutClick = () => {\r\n window.location.hash = \"#/\"\r\n //window.location.search = \"\"\r\n this.props.logout()\r\n\r\n }\r\n}\r\n\r\nfunction routeToHome() {\r\n const baseUrl = GetSinglePageAppPath()\r\n const redirectUrl = baseUrl + \"#\"\r\n window.location.href = redirectUrl\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): NavMenuProps {\r\n const company = GetSelectedAssignedClinic(state)\r\n return {\r\n userAccess: BuildUserAccess(state),\r\n userState: BuildUserState(state),\r\n selectedCompany: SelectedPortalName(state) || SelectedAccountName(company) || company?.ImplementationName,\r\n visibleCompanies: state.Workforce1Companies.visibleCompanies,\r\n LoginName: getLoggedInUserName(state)\r\n }\r\n}\r\n\r\nfunction mapDispatchProps(dispatch: Dispatch): NavMenuDispatchProps {\r\n return {\r\n logout: () => (dispatch(WorkforceOneUserLogOut())),\r\n selectCompany: (company: string, companyLink: string) => {\r\n dispatch(SelectCompany(company, companyLink))\r\n // toast.success(\"Logged in successfully\")\r\n },\r\n }\r\n}\r\n\r\nconst ConnectedNavMenu = connect(mapStateToProps, mapDispatchProps)(NavMenu)\r\nexport default ConnectedNavMenu\r\n","import React,{Component} from \"react\";\r\nimport {toast} from \"react-toastify\";\r\nimport \"react-toastify/dist/ReactToastify.css\";\r\n\r\nexport class AppNotice extends Component{\r\n\r\n componentDidMount() {\r\n toast.configure();\r\n }\r\n\r\n render(){\r\n return <>\r\n\r\n \r\n }\r\n}\r\n","import {Component, MouseEvent} from \"react\";\r\nimport {AppState} from \"../AppState\";\r\nimport {Action, Dispatch} from \"redux\";\r\nimport {WorkforceOneUserLogOut} from \"../actions/WorkforceOneLoginActions\";\r\nimport {connect} from \"react-redux\";\r\n\r\nexport interface MouseDetectionLogoutTimerDispatchProps{\r\n logOut: () => void\r\n}\r\nexport interface MouseDetectionLogoutTimerAppStateProps{\r\n loggedIn: boolean\r\n}\r\nexport interface MouseDetectionLogoutTimerProps{\r\n\r\n}\r\n\r\nconst sixtyMinutesInMilliSeconds = 3600000;\r\nexport class MouseDetectionLogoutTimer extends Component{\r\n\r\n mouseMoveTimeOut: NodeJS.Timeout | undefined;\r\n\r\n componentDidMount() {\r\n if(this.props.loggedIn){\r\n this.mouseMoveTimeOut = setTimeout(() => this.timerRanOut(), sixtyMinutesInMilliSeconds);\r\n }\r\n }\r\n componentWillUnmount() {\r\n if(this.mouseMoveTimeOut) {\r\n clearTimeout(this.mouseMoveTimeOut);\r\n }\r\n }\r\n timerRanOut = () => {\r\n if(this.props.loggedIn){\r\n this.props.logOut();\r\n }\r\n }\r\n mouseMoved = (e: MouseEvent) => {\r\n if(this.mouseMoveTimeOut) {\r\n clearTimeout(this.mouseMoveTimeOut);\r\n }\r\n if(this.props.loggedIn){\r\n this.mouseMoveTimeOut = setTimeout(() => this.timerRanOut(), sixtyMinutesInMilliSeconds);\r\n }\r\n }\r\n\r\n render() {\r\n return (
this.mouseMoved(e)}>\r\n {this.props.children}\r\n
);\r\n }\r\n}\r\nfunction mapStateToProps(state: AppState): MouseDetectionLogoutTimerAppStateProps {\r\n return {\r\n loggedIn: state.Workforce1State.isLoggedIn\r\n }\r\n}\r\nfunction mapDispatchProps(dispatch: Dispatch): MouseDetectionLogoutTimerDispatchProps {\r\n return {\r\n logOut: () => dispatch(WorkforceOneUserLogOut()),\r\n }\r\n}\r\nconst connector = connect(\r\n mapStateToProps, mapDispatchProps)(MouseDetectionLogoutTimer);\r\nexport default connector;\r\n","import {Component} from \"react\";\r\nimport ChromeImage from \"@browser-logos/chrome/chrome.png\";\r\nimport * as React from \"react\";\r\nimport './SupportedBrowser.css';\r\n\r\ntype browserDetected = 'Safari' | 'Opera' | 'Chrome' | 'IE' | 'Firefox' | 'Edge' | 'Unknown';\r\nconst ChromeBrowser = 'Chrome';\r\nconst UnknownBrowser = 'Unknown';\r\nconst browserFound = detectBrowser();\r\nfunction detectBrowser(): browserDetected {\r\n if(navigator.userAgent.indexOf('MSIE') > -1){\r\n return 'IE';\r\n }\r\n if(navigator.userAgent.indexOf('Firefox') > -1){\r\n return 'Firefox';\r\n }\r\n if(navigator.appVersion.indexOf('Edge') > -1){\r\n return 'Edge';\r\n }\r\n let chrome = navigator.userAgent.indexOf('Chrome') > -1;\r\n const opera = navigator.userAgent.toLowerCase().indexOf(\"op\") > -1;\r\n if ((chrome) && (opera)){\r\n return 'Opera'\r\n }\r\n if(chrome){\r\n return ChromeBrowser;\r\n }\r\n return UnknownBrowser;\r\n}\r\n\r\nexport class SupportedBrowsers extends Component {\r\n\r\n render() {\r\n const isSupportedBrowser = browserFound == ChromeBrowser;\r\n const browserClass = 'browser-icon' + (isSupportedBrowser ? ' ' : ' gray-img');\r\n return <>\r\n \r\n Supported Browsers : \r\n \r\n \r\n \"Chrome\"\r\n \r\n \r\n }\r\n}\r\n","export default __webpack_public_path__ + \"static/media/logo.35e4e3f8.png\";","import React from \"react\"\r\nimport { IsOnTrack } from \"../../App\"\r\n\r\nexport default function EmailSupport() {\r\n return (\r\n Need help? Email \r\n {location.host.includes(\"ontrack\") && ontracksupport@crlcorp.com}\r\n {!location.host.includes(\"ontrack\") && workforcesupport@crlcorp.com}\r\n \r\n )\r\n}\r\n","import React, {Component} from \"react\";\r\nimport {Col, Container, Row, Image} from \"react-bootstrap\";\r\nimport CopyRight from \"../Legal/CopyRight\";\r\nimport TOS from \"../Legal/TOS\";\r\nimport PrivacyPolicy from \"../Legal/PrivacyPolicy\";\r\nimport \"./AppPageWrapper.css\"\r\nimport ConnectedNavMenu from \"./NavMenu\";\r\nimport {AppNotice} from \"../AppNotice/AppNotice\";\r\nimport MouseDetectionLogoutTimer from \"../MouseDetectionLogoutTimer\";\r\nimport {SupportedBrowsers} from \"./SupportedBrowsers\";\r\nimport logoImage from \"../../assets/images/logo.png\";\r\nimport {ApiHostName} from \"../../api/ApiUrl\";\r\nimport EmailSupport from \"../Legal/EmailSupport\"\r\nimport { GetSSOToken } from \"../../storage/AuthToken\";\r\n\r\nexport interface AppPageWrapperProps{\r\n parentClassName?: string\r\n showNav?: boolean\r\n showSupportedBrowsers?: boolean\r\n hideLogo?: boolean\r\n embedingMode?: boolean\r\n}\r\nexport class AppPageWrapper extends Component {\r\n\r\n render() {\r\n const logoSrc = getPortalLogoImageSrc();\r\n const ssoToken = GetSSOToken()\r\n const embedingMode = ssoToken !== \"\" || !!this.props.embedingMode\r\n if (!embedingMode) {\r\n return
\r\n { (this.props.hideLogo !== true) &&\r\n
\r\n \r\n
\r\n }\r\n \r\n <>\r\n {this.props.showNav && (<>\r\n \r\n \r\n
\r\n {this.props.children }\r\n
\r\n
\r\n )}\r\n \r\n {!this.props.showNav && <>{this.props.children } }\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n {' | '}{' | '}\r\n \r\n \r\n {!!this.props.showSupportedBrowsers && }\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n }\r\n return
\r\n \r\n <>\r\n {this.props.showNav && (<>\r\n \r\n
\r\n {this.props.children}\r\n
\r\n
\r\n )}\r\n \r\n \r\n
\r\n
\r\n }\r\n}\r\nfunction getPortalLogoImageSrc(): string {\r\n\r\n const portalImage = localStorage.getItem(\"portalImage\");\r\n if(!portalImage){\r\n const defaultSrc = logoImage;\r\n return defaultSrc;\r\n }\r\n const result = 'data:image/png;base64, ' + encodeURI(portalImage);\r\n return result;\r\n}\r\n","import * as React from \"react\"\r\nimport { Pagination } from \"react-bootstrap\"\r\n\r\ninterface TablePaginationProps {\r\n pageNumber: number\r\n pages: number\r\n displayCount?: number\r\n className?: string\r\n onChange(pageNumber: number): void\r\n}\r\n\r\nconst FIRST = \"First\"\r\nconst PREVIOUS = \"Previous\"\r\nconst NEXT = \"Next\"\r\nconst LAST = \"Last\"\r\n\r\nconst DisplayCount = 3\r\n\r\nexport default class TablePagination extends React.PureComponent {\r\n pageChanged = (e: React.MouseEvent) => {\r\n const page = (e.target as HTMLElement).innerText\r\n let pageNumber = 1\r\n switch (page) {\r\n case FIRST:\r\n break\r\n case PREVIOUS:\r\n pageNumber = this.props.pageNumber - 1\r\n break\r\n case NEXT:\r\n pageNumber = this.props.pageNumber + 1\r\n break\r\n case LAST:\r\n pageNumber = this.props.pages\r\n break\r\n default:\r\n pageNumber = +page\r\n }\r\n if (pageNumber < 1) {\r\n pageNumber = 1\r\n }\r\n if (pageNumber > this.props.pages) {\r\n pageNumber = this.props.pages\r\n }\r\n\r\n this.props.onChange(pageNumber)\r\n }\r\n\r\n getPaginationItem = (label: string, active: boolean, disabled: boolean, onClick: ((e: React.MouseEvent) => void)) => {\r\n return \r\n {label}\r\n \r\n }\r\n\r\n getPagination = () => {\r\n let items = []\r\n const currentPageNumber = this.props.pageNumber\r\n const displayCount = this.props.displayCount || DisplayCount\r\n\r\n items.push(this.getPaginationItem(FIRST, false, currentPageNumber === 1, this.pageChanged))\r\n items.push(this.getPaginationItem(PREVIOUS, false, currentPageNumber === 1, this.pageChanged))\r\n\r\n let startIndex\r\n let endIndex\r\n\r\n if (displayCount === 3) {\r\n if (this.props.pages <= 3) {\r\n startIndex = 1\r\n endIndex = this.props.pages\r\n } else {\r\n if (currentPageNumber <= 2) {\r\n startIndex = 1\r\n endIndex = 3\r\n } else if (currentPageNumber + 2 >= this.props.pages) {\r\n startIndex = this.props.pages - 2\r\n endIndex = this.props.pages\r\n } else {\r\n startIndex = currentPageNumber - 1\r\n endIndex = currentPageNumber + 1\r\n }\r\n }\r\n } else {\r\n startIndex = (Math.ceil(currentPageNumber / displayCount) - 1) * displayCount + 1\r\n endIndex = Math.min(startIndex + displayCount - 1, this.props.pages)\r\n }\r\n\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n items.push(this.getPaginationItem(i.toString(), currentPageNumber === i, false, this.pageChanged))\r\n }\r\n\r\n items.push(this.getPaginationItem(NEXT, false, currentPageNumber === this.props.pages, this.pageChanged))\r\n items.push(this.getPaginationItem(LAST, false, currentPageNumber === this.props.pages, this.pageChanged))\r\n\r\n return items\r\n }\r\n\r\n render() {\r\n if (this.props.pages <= 1) {\r\n return <>\r\n }\r\n return ({this.getPagination()})\r\n }\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALgSURBVGhD7ZhLqE1RHIePR0hJeYsoKZOLKKSUx9BjiDISBlISyhAZMPAqGZEhyZAy88qEGMmrSImREiUD5fV9x1112vfuu/c++3GWOl993btXe++1fvus9T/r7Bbcwz//gT/xAKYy3EWxehVTCSfFzA7MHWRK+yhO9mFmkLvoSY9wkg2RsRq/o2Pcb0Ma0/EleuIdnIixsBS/omM7b0MWc/EdesFNHIe9ZhF+Qsd0BUdhLhbiR/TCazgGe8V8/ICO5QYWHstiDE/hEuZ+ChUyG9+gY7iNXc+OlRjm5RkbGmQqPkP7foCl1+s6DJXiqA0NMBmtnPb5ZPC4EjbhD/TGI24NKsAnH74GnqOVtFK2o3uc37jLhhpwDdxCQ7xFK2gt7EGDGGirDRViNbqOhrBKWTlr5RDamVNtow0VYEW8jN7XSjmAjXAc7dQisNaGkpxD72eFXGFDk7hNCJ1bprvlGFb5UArjdHC7EKaDX6BFOYheX+U07QoXqNsGB+OWpsgC3Y2hcGyzoddYMt0+GMbN5jJckOFODKXcQNHgl5jbCMMU0akVHU4rB+d8fzqCr9HzHmOUzEMH+L59lM4a9LyH7aMI6QeJjX6Q2OgHiY1+kNioIshyLPOiYQlO+Pdv95QN4iBsf4EzbSiAPykuoNeftKEMZYP40twQRcN0hnCftx5LUcXUcvBFwiRDbMbSVLXY84apJYRUFUSywtQWQqoMImlhag0hczDc/DCOxeHIG0SSYWZhrSHEJ3URf2HoeLgKUiSIdIb5MvjXEFuwVlahP2ntUH0N6qcVKBpE/CRCCK3r3fMQRuNe/Ix2/A2PoG9cigbpXBPBzjXTCNPQd7phur3C8GYxT5DkwvY1UueaaTSMJKdbniDJEGFNJAtA42GS0+0+ppFVYnseRpxuJ3BD+2goWSECUYRJI2+IQLRhioQIJMPMwJ5iQSgaItAZ5rQNvWQ8nsK0tZOFYc62Wq2Bv/5ijXwDgGqWAAAAAElFTkSuQmCC\"","import * as React from \"react\"\r\nimport { Form } from \"react-bootstrap\"\r\n\r\ninterface CheckboxProps {\r\n id: string\r\n checked?: boolean\r\n className?: string\r\n defaultChecked?: boolean\r\n disabled?: boolean\r\n label?: string\r\n name?: string\r\n style?: React.CSSProperties\r\n value?: string\r\n inline?: boolean\r\n title?: string\r\n onChange?: (e: React.ChangeEvent) => void\r\n}\r\n\r\nexport default function Checkbox(props: CheckboxProps) {\r\n return (\r\n \r\n )\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Button, Form, Overlay } from \"react-bootstrap\"\r\nimport { FaArrowDown, FaArrowUp, FaCaretDown, FaFilter, FaSearch, FaSortAlphaDown, FaSortAlphaDownAlt } from \"react-icons/fa\"\r\nimport { List, ListRowProps } from \"react-virtualized\"\r\nimport clearFilters from \"../assets/images/clear-filters.png\"\r\nimport Checkbox from \"./Checkbox\"\r\n\r\nexport type ValueLabels = { [key: string]: string }\r\n\r\nclass FilterItem {\r\n constructor(options: { value: string | boolean, checked: boolean, label?: string }) {\r\n if (typeof options.value === \"boolean\") {\r\n this.value = options.value.toString()\r\n this.label = options.value ? \"Yes\" : \"No\"\r\n } else {\r\n this.value = options.value || \"\"\r\n this.label = options.label || options.value || \"(Blank)\"\r\n }\r\n this.checked = options.checked\r\n }\r\n value: string\r\n checked: boolean\r\n label: string\r\n}\r\n\r\ninterface ColumnHeaderFilterProps {\r\n title: string,\r\n items: string[],\r\n filteredItems?: string[],\r\n message?: React.ReactNode,\r\n children?: React.ReactNode,\r\n sort?: \"asc\" | \"desc\",\r\n filtered?: boolean,\r\n uppercase: boolean,\r\n offsetLeft?: number,\r\n offsetTop?: number,\r\n itemValueLabels?: ValueLabels,\r\n onFilter?: (items: string[]) => void,\r\n onSort?: (order?: string) => void\r\n}\r\n\r\ninterface ColumnHeaderFilterState {\r\n sort?: \"asc\" | \"desc\",\r\n open: boolean,\r\n searchText: string,\r\n items: FilterItem[],\r\n filtered?: boolean\r\n}\r\n\r\nexport default class ColumnHeaderFilter extends Component {\r\n state: ColumnHeaderFilterState = { open: false, sort: this.props.sort, items: [], searchText: \"\" }\r\n nameInput: HTMLInputElement | undefined\r\n toggleElement = React.createRef()\r\n listElement = React.createRef()\r\n\r\n componentDidMount() {\r\n this.resetFilterItems([])\r\n }\r\n\r\n componentDidUpdate(prevProps: ColumnHeaderFilterProps) {\r\n const arraysEqual = (a1: string[], a2: string[]): boolean => {\r\n if (a1.length !== a2.length) {\r\n return false\r\n }\r\n const a1Sorted = [...a1].filter(item => !!item).map(item => item.toString().toLowerCase()).sort()\r\n const a2Sorted = [...a2].filter(item => !!item).map(item => item.toString().toLowerCase()).sort()\r\n return a1Sorted.every((value, index) => value === a2Sorted[index])\r\n }\r\n\r\n if (this.props.title !== prevProps.title) {\r\n this.resetFilterItems([])\r\n } else {\r\n if (!!this.props.filteredItems) {\r\n if (!arraysEqual(this.props.filteredItems || [], prevProps.filteredItems || []) || !arraysEqual(this.props.items || [], prevProps.items || [])) {\r\n this.resetFilterItems(this.props.filteredItems || [])\r\n }\r\n } else {\r\n if (!arraysEqual(this.props.items, prevProps.items)) {\r\n this.resetFilterItems(this.state.items.filter(item => item.checked).map(item => item.value))\r\n }\r\n }\r\n }\r\n if (this.props.filtered !== prevProps.filtered) {\r\n this.setState({ filtered: this.props.filtered })\r\n }\r\n if (this.props.sort !== prevProps.sort) {\r\n this.setState({ sort: this.props.sort })\r\n }\r\n }\r\n\r\n resetFilterItems(checkedValues: string[]) {\r\n const checkAll = checkedValues.length === 0\r\n const itemValueLabels = this.props.itemValueLabels\r\n let items = this.props.items ? this.props.items\r\n .filter((item, index) => this.props.items.indexOf(item) === index)\r\n .map(item => new FilterItem({\r\n value: item,\r\n checked: checkAll || checkedValues.includes(item),\r\n label: itemValueLabels ? itemValueLabels[item] : undefined\r\n }))\r\n : []\r\n items.unshift(new FilterItem({ value: \"#ALL#\", checked: checkAll || items.every(item => item.checked), label: \"(Select All)\" }))\r\n this.setState({ items: items })\r\n }\r\n\r\n clearFilter() {\r\n this.setState({ open: false, filtered: false })\r\n this.resetFilterItems([])\r\n this.props.onFilter && this.props.onFilter([])\r\n }\r\n\r\n toggleDialog = () => this.setState({ open: !this.state.open })\r\n closeDialog = () => this.setState({ open: false })\r\n changeTextFilter = (value: string) => this.setState({ searchText: value })\r\n checkboxChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n const checked = e.target.checked\r\n const index = this.state.items.findIndex(item => String(item.value) === value)\r\n if (index === 0) {\r\n this.setState(prevState => {\r\n let newItems = [...prevState.items]\r\n newItems.map(item => item.checked = checked)\r\n return { items: newItems }\r\n })\r\n } else {\r\n this.setState(prevState => {\r\n const newItems = [...prevState.items]\r\n newItems[index].checked = checked\r\n newItems[0].checked = newItems.slice(1).every((item) => item.checked)\r\n return { items: newItems }\r\n })\r\n }\r\n this.listElement.current && this.listElement.current.forceUpdateGrid()\r\n }\r\n\r\n getFilteredItems = () => {\r\n const { items, searchText } = this.state\r\n if (searchText.length > 0) {\r\n return items.filter((item) => item.value && item.value.toString().toLowerCase().includes(searchText.toLowerCase()))\r\n }\r\n return items\r\n }\r\n\r\n setFilter = () => {\r\n const items = this.state.items[0]?.checked ? [] : this.state.items.filter((item) => item.checked).map(item => item.value)\r\n this.setState({ open: false, filtered: items.length > 0 })\r\n this.props.onFilter && this.props.onFilter(items)\r\n }\r\n\r\n handleSort = (order?: \"asc\" | \"desc\") => {\r\n this.setState({ sort: order, open: false })\r\n this.props.onSort && this.props.onSort(order)\r\n }\r\n\r\n rowRenderer = (props: ListRowProps) => {\r\n const item = this.getFilteredItems()[props.index]\r\n return (\r\n \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
\r\n {this.props.title}\r\n \r\n \r\n \r\n \r\n {this.props.children}\r\n
\r\n \r\n {({ arrowProps, show: _show, popper, ...props }) => (\r\n
\r\n
    \r\n
  • this.handleSort(\"asc\")} className={this.state.sort === \"asc\" ? \"highlight\" : \"\"}>Sort Smallest to Largest
  • \r\n
  • this.handleSort(\"desc\")} className={this.state.sort === \"desc\" ? \"highlight\" : \"\"}>Sort Largest to Smallest
  • \r\n \r\n
\r\n
\r\n
\r\n this.changeTextFilter(e.target.value)} ref={(input: HTMLInputElement) => input && input.focus()} />\r\n \r\n
\r\n \r\n
\r\n {this.props.message && ({this.props.message})}\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n )}\r\n
\r\n \r\n )\r\n }\r\n\r\n static defaultProps = { uppercase: true, offsetLeft: -13, offsetTop: 12 }\r\n}\r\n","import * as React from \"react\"\r\nimport { Button, Form, InputGroup, Dropdown, Row, Col, Spinner } from \"react-bootstrap\"\r\nimport { FaSearch } from \"react-icons/fa\"\r\nimport SearchField from \"../api/SearchField\"\r\n\r\ninterface SearchBarProps {\r\n searchFields: SearchField[]\r\n defaultField?: SearchField\r\n allowBlank?: boolean\r\n resetButton?: boolean\r\n placeholder?: string\r\n loading?: boolean\r\n onSearch: (searchField: string, searchText: string) => void,\r\n formatValue?: (ID: string, value: string) => string\r\n}\r\n\r\ninterface SearchBarState {\r\n selectedField?: SearchField\r\n searchText: string\r\n}\r\n\r\nexport default class SearchBar extends React.PureComponent {\r\n state: SearchBarState = {\r\n selectedField: this.props.defaultField,\r\n searchText: \"\"\r\n }\r\n\r\n componentDidMount() {\r\n if (!this.props.allowBlank && this.props.searchFields.length) {\r\n this.setState({ selectedField: this.props.defaultField || this.props.searchFields[0] })\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: SearchBarProps) {\r\n if (!this.props.allowBlank && prevProps.searchFields !== this.props.searchFields) {\r\n this.setState({ selectedField: this.props.defaultField || this.props.searchFields[0] })\r\n }\r\n }\r\n\r\n setSearchField = (field: SearchField) => {\r\n this.setState({ selectedField: field, searchText: \"\" })\r\n }\r\n\r\n handleSearchTextChange = (e: React.ChangeEvent) => {\r\n let value: string = e.target.value\r\n\r\n if (this.props.formatValue && this.state.selectedField) {\r\n value = this.props.formatValue(this.state.selectedField.ID, value)\r\n }\r\n\r\n this.setState({ searchText: value })\r\n }\r\n\r\n handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === 'Enter' && this.state.searchText.length > 0) {\r\n this.onSearch()\r\n }\r\n }\r\n\r\n resetSearch = () => {\r\n const field = this.props.defaultField || this.props.allowBlank ? undefined : this.props.searchFields[0]\r\n this.setState({\r\n selectedField: field,\r\n searchText: \"\"\r\n })\r\n this.props.onSearch(field?.ID || \"\", \"\")\r\n }\r\n\r\n searchAllowed = () => this.state.searchText && this.props.searchFields.length\r\n\r\n onSearch = () => {\r\n if (this.searchAllowed()) {\r\n const searchField = this.state.selectedField ? this.state.selectedField.ID : \"\"\r\n this.props.onSearch(searchField, this.state.searchText)\r\n }\r\n }\r\n\r\n render = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {this.state.selectedField ? this.state.selectedField.Name : this.props.placeholder || \"Select\"}\r\n \r\n {this.props.searchFields.length > 0 ?\r\n this.props.searchFields.map((item: SearchField, key: number) => this.setSearchField(item)} key={key} eventKey={item.ID} variant=\"menu-item\">{item.Name}) :\r\n No data found}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.props.resetButton && \r\n \r\n }\r\n \r\n )\r\n }\r\n\r\n static defaultProps = { resetButton: true }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport LabAccount from \"./RandomsModel/LabAccount\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function LabAccountListGetObservable(link: string): Observable {\r\n const params: string = JSON.stringify({\r\n Link: link,\r\n DOT: false,\r\n IsMarketPlace: true,\r\n LocationID: 0,\r\n RegionID: 0,\r\n SearchBy: \"Account Name\",\r\n SearchFor: \"\"\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderPoolDefinition/GetPoolDefinitionLabAccounts\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport LabPanel from \"./RandomsModel/LabPanel\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function LabPanelsGetObservable(link: string, labAccount: string, vendorID: number): Observable {\r\n const params: string = JSON.stringify({\r\n Link: link,\r\n IsDOT: false,\r\n IsMarketPlace: true,\r\n IsPoct: false,\r\n LabAccountNumber: labAccount,\r\n VendorID: vendorID\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderPoolDefinition/GetPoolDefinitionLabPanels\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function SelectionIntervalsGetObservable() {\r\n return ObservableFromFetch(\"WorkforceRandomTest/GetSelectionIntervals\")\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport RegulatoryMode from \"./LabServiceModel/RegulatoryMode\"\r\n\r\nexport default function LabServiceRegulatoryModesGetObservable(isDOT?: boolean): Observable {\r\n const params = isDOT === undefined ? \"\" : isDOT ? \"?isDOT=true\" : \"?isDOT=false\"\r\n return ObservableFromFetch(`RandomTest/GetPersonnelRegulatoryModes${params}`)\r\n}","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { AccountRequest } from \"./CompanyModel/AccountRequest\"\r\nimport { AccountLimit, AccountType, ImplementationGroupID_Workforce } from \"../../config/Constants\"\r\nimport AutoFilterCompany from \"./CompanyModel/AutoFilterCompany\"\r\n\r\nexport default function GetAccountsByNameObservable(query: string, showInactive: boolean = false, accountType: AccountType = AccountType.Company ): Observable {\r\n const request: AccountRequest = { AccountTypeID: accountType, Name: query, Limit: AccountLimit, ImplementationGroupID: ImplementationGroupID_Workforce, ShowInactive: showInactive }\r\n const requestBody: string = JSON.stringify(request)\r\n return ObservableFromFetch(\"Account/GetAllByName\", requestBody)\r\n}\r\nexport function GetAllAccountsByNameObservable(query: string, showInactive: boolean = false, accountType: AccountType = AccountType.Company ): Observable {\r\n const request: AccountRequest = { AccountTypeID: accountType, Name: query, Limit: 0, ImplementationGroupID: ImplementationGroupID_Workforce, ShowInactive: showInactive }\r\n const requestBody: string = JSON.stringify(request)\r\n return ObservableFromFetch(\"Account/GetAllByName\", requestBody)\r\n}\r\n","import * as React from \"react\"\r\nimport { Typeahead, AsyncTypeahead } from \"react-bootstrap-typeahead\"\r\nimport { Button, Form } from \"react-bootstrap\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { catchError, debounceTime, filter, map, switchMap } from \"rxjs/operators\"\r\nimport { DataLoader } from \"../OrderRequests/GovCollection\"\r\nimport GetAccountsByNameObservable from \"../../api/Companies/GetAccountsByName\"\r\nimport { RouteComponentProps, withRouter } from \"react-router\"\r\nimport { WorkforceClinicPortal } from \"../../AppState\"\r\n\r\ninterface CompanyInputState {\r\n companies: DataLoader\r\n}\r\n\r\ninterface CompanyInputProps {\r\n defaultValue?: string\r\n forceEdit?: boolean\r\n id?: string\r\n disabled?: boolean\r\n filter?: boolean\r\n placeholder?: string\r\n emptyLabel?: string\r\n allowedCompanies?: AutoFilterCompany[]\r\n onChange?: (items: AutoFilterCompany[]) => void\r\n}\r\n\r\nclass CompanyInput extends React.PureComponent {\r\n companyAsyncTypeahead = React.createRef>()\r\n companyTypeahead = React.createRef>()\r\n companies$ = new Subject()\r\n subscription?: Subscription\r\n state: CompanyInputState = { companies: {} }\r\n defaultCompanyName: string = this.props.defaultValue || this.getCompanyName()\r\n\r\n componentDidMount() {\r\n this.subcribeCompanies()\r\n this.onInputChange(this.defaultCompanyName)\r\n }\r\n\r\n componentDidUpdate(prevProps: CompanyInputProps & RouteComponentProps, prevState: CompanyInputState) {\r\n if (!this.defaultCompanyName && this.props.location.pathname !== prevProps.location.pathname) {\r\n this.companyAsyncTypeahead?.current?.clear()\r\n this.onInputChange(\"\")\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n }\r\n\r\n onInputChange(value: string) {\r\n if (value === \"\") {\r\n this.setState({ companies: { selected: undefined } }, () => this.props.onChange && this.props.onChange([]))\r\n }\r\n else {\r\n this.companies$.next(value)\r\n }\r\n }\r\n\r\n getCompanyName() {\r\n const participation = sessionStorage.getItem(\"company-selection\")\r\n const portals: WorkforceClinicPortal[] = JSON.parse(sessionStorage.getItem(\"wf2-STRY0045127-portals\") || \"{}\")\r\n var company = undefined\r\n for (const p of portals) {\r\n for (const c of p.AssignedClientDetailsOfClinic) {\r\n if (c.ParticipationID.toString() == participation) {\r\n company = c\r\n break\r\n }\r\n }\r\n if (company) {\r\n break\r\n }\r\n }\r\n return company?.Name || \"\"\r\n }\r\n\r\n onChange = (companies: AutoFilterCompany[]) => {\r\n const selectedCompany = companies[0]\r\n this.setState({ companies: { ...this.state.companies, selected: selectedCompany } })\r\n this.props.onChange && this.props.onChange(companies)\r\n }\r\n\r\n subcribeCompanies() {\r\n this.subscription = this.companies$.pipe(\r\n debounceTime(500),\r\n filter(filter => filter.length >= 1 || filter.length === 0),\r\n switchMap((filter) => filter.length === 0 ?\r\n of({ loading: false, companies: this.state.companies.data }) :\r\n concat(\r\n of({ loading: true }),\r\n GetAccountsByNameObservable(filter).pipe(\r\n map((data) => ({ loading: false, companies: data })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n )\r\n )\r\n ).subscribe(\r\n (state: { loading: boolean, companies?: AutoFilterCompany[] }) => {\r\n if (state.companies) {\r\n let filteredCompanies: AutoFilterCompany[] = state.companies || []\r\n if (this.props.allowedCompanies && Array.isArray(this.props.allowedCompanies)) {\r\n const allowedCompanies = this.props.allowedCompanies || []\r\n const merged = filteredCompanies.filter(c => allowedCompanies.find(item => item.AccountID === c.AccountID))\r\n filteredCompanies = merged\r\n }\r\n this.setState({ companies: { loading: state.loading, data: filteredCompanies, selected: this.defaultCompanyName ? filteredCompanies[0] : undefined } }, () => this.defaultCompanyName && this.onChange((state.companies || [])))\r\n } else {\r\n this.setState({ companies: { loading: state.loading } })\r\n\r\n }\r\n },\r\n () => this.setState({ companies: { loading: false } })\r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n {(!this.defaultCompanyName || this.props.forceEdit) ? this.props.filter ? props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1 : true}\r\n id={this.props.id || \"company\"}\r\n isLoading={!!this.state.companies.loading}\r\n labelKey=\"Name\"\r\n minLength={0}\r\n onInputChange={input => this.onInputChange(input)}\r\n onChange={items => this.onChange(items)}\r\n onSearch={() => { }}\r\n options={this.state.companies.data || []}\r\n placeholder={this.props.placeholder || \"Enter the Company name\"}\r\n ref={this.companyAsyncTypeahead}\r\n selected={this.state.companies.selected ? [this.state.companies.selected] : []}>\r\n {!this.state.companies.loading && !this.props.disabled &&\r\n }\r\n : }\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(CompanyInput)\r\n","import { Observable } from \"rxjs\";\r\nimport PoolData from \"./RandomsModel/PoolData\"\r\nimport PoolCreate from \"./RandomsModel/PoolCreate\"\r\nimport { format, parseISO } from \"date-fns\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport function PoolUpdateObservable(data: PoolData, IsConsortium: boolean): Observable {\r\n const params: string = JSON.stringify({\r\n IsDOT: data.DOT,\r\n RegulatoryModeID: data.RegulatoryModeID,\r\n SelectionInterval: data.SelectionInterval,\r\n DrugTarget: data.DrugSampleSize,\r\n AlcoholTarget: data.AlcoholSampleSize,\r\n ProviderMappingID: data.ProviderMappingID,\r\n PanelID: data.PanelID,\r\n PoolCalculationType: data.FixedOrRate,\r\n Code: data.Code,\r\n PoolID: data.PoolID,\r\n PoolName: data.Name,\r\n UseFileImportForPoolMembership: data.UseFileImportForPoolMembership,\r\n DateFrom: format(parseISO(data.ProgramIntervalStartDate), \"MM/dd/yyyy\"),\r\n DateTo: format(parseISO(data.ProgramIntervalEndDate), \"MM/dd/yyyy\"),\r\n PrimaryIDType: data.PrimaryIDType || \"\",\r\n IncludeCompaniesWithNoSelections: data.IncludeCompaniesWithNoSelections,\r\n IsConsortium: IsConsortium,\r\n PanelCode: data.PanelCode,\r\n RegulatoryModes: data.RegulatoryModes,\r\n RunOnlyByPortalAdmin: data.RunOnlyByPortalAdmin\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderPoolDefinition/UpdatePool\", params)\r\n}\r\n\r\nexport function PoolCreateObservable(data: PoolCreate): Observable {\r\n const params: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"FFOrderPoolDefinition/CreatePool\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport PrimaryIDType from \"./PrimaryIDType\"\r\n\r\nexport default function PrimaryIDTypesGetObservable(): Observable {\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/GetPrimaryIDTypes\")\r\n}\r\n\r\nexport function PoolPrimaryIDTypesGetObservable(): Observable {\r\n return ObservableFromFetch(\"FFOrderPoolDefinition/GetPrimaryIDTypes\")\r\n}\r\n\r\n","import * as React from \"react\"\r\nimport { Spinner } from \"react-bootstrap\"\r\n\r\nexport default function LoadingIndicatorWrapper(props: { loading: boolean, children?: React.ReactNode }) {\r\n if (props.loading) {\r\n return
\r\n }\r\n return (<>{props.children})\r\n}\r\n","import * as React from \"react\"\r\nimport { Modal, Form, Button, Col, InputGroup, Spinner } from \"react-bootstrap\"\r\nimport { Subscription, Subject, of, concat } from \"rxjs\"\r\nimport { switchMap, filter, debounceTime, map, catchError } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport LabAccount from \"../../api/Randoms/RandomsModel/LabAccount\"\r\nimport LabAccountListGetObservable from \"../../api/Randoms/LabAccountsGet\"\r\nimport LabPanel from \"../../api/Randoms/RandomsModel/LabPanel\"\r\nimport LabPanelsGetObservable from \"../../api/Randoms/LabPanelsGet\"\r\nimport RegulatoryMode from \"../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport SelectionIntervalsGetObservable from \"../../api/Randoms/SelectionIntervalsGet\"\r\nimport LabServiceRegulatoryModesGetObservable from \"../../api/LabService/LabServiceRegulatoryModesGet\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport AutoFilterCompaniesGet from \"../../api/Companies/AutoFilterCompaniesGet\"\r\nimport CompanyInput from \"../FormattedInputs/CompanyInput\"\r\nimport { PoolCreateObservable } from \"../../api/Randoms/PoolSave\"\r\nimport PoolCreate from \"../../api/Randoms/RandomsModel/PoolCreate\"\r\nimport { isCompanyAdmin, isPortalAdmin } from \"../../authentication/isAdminRole\"\r\nimport { AppState, AssignedClinic } from \"../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport PrimaryIDType from \"../../api/PrimaryIDTypes/PrimaryIDType\"\r\nimport { PoolPrimaryIDTypesGetObservable } from \"../../api/PrimaryIDTypes/PrimaryIDTypesGet\"\r\nimport { IsOnTrack } from \"../../App\";\r\nimport LoadingIndicatorWrapper from \"../LoadingIndicatorWrapper\"\r\nimport { GetSelectedAssignedClinic, SelectedPortalName } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\n\r\ninterface AddPoolModalProps {\r\n show: boolean\r\n onHide: () => void\r\n onSuccess: () => void\r\n IsConsortium: boolean\r\n}\r\n\r\ninterface AddPoolModalAuthProps {\r\n isCompanyAdmin?: boolean\r\n isPortalAdmin?: boolean\r\n currentCompany?: AssignedClinic | null\r\n}\r\n\r\ninterface AddPoolModalState {\r\n companies: AutoFilterCompany[]\r\n initialCompanies?: AutoFilterCompany[]\r\n companiesLoading: boolean\r\n regulatoryModesLoading: boolean\r\n selectionIntervalsLoading: boolean\r\n labAccountLoading: boolean\r\n primaryIDTypesLoading: boolean\r\n panelsLoading: boolean\r\n selectedCompany?: AutoFilterCompany,\r\n regulatoryModes?: RegulatoryMode[]\r\n selectionIntervals?: string[]\r\n labAccounts?: LabAccount[]\r\n primaryIDTypes?: PrimaryIDType[]\r\n labPanels?: LabPanel[]\r\n poolName: string\r\n poolNameValid: boolean\r\n poolID: string\r\n federallyRegulated: boolean | string\r\n regulatoryModeId: number\r\n selectionInterval: string\r\n calcType: string\r\n drugPoolSize: string\r\n alcoholPoolSize: string\r\n labAccount: string\r\n panelID: string\r\n useFileImportForPoolMembership: string\r\n primaryIDType: string\r\n saving: boolean\r\n currentCompany?: AssignedClinic | null\r\n includeCompaniesWithNoSelections: boolean\r\n panelCode: string\r\n panelCodeValid: boolean\r\n selectedRegulatoryModes: RegulatoryMode[]\r\n availableToSelectRegModes: RegulatoryMode[]\r\n RunOnlyByPortalAdmin: boolean\r\n}\r\n\r\nexport class AddPoolModal extends React.PureComponent {\r\n state: AddPoolModalState = {\r\n companies: [],\r\n companiesLoading: false,\r\n regulatoryModesLoading: false,\r\n selectionIntervalsLoading: false,\r\n labAccountLoading: false,\r\n panelsLoading: false,\r\n primaryIDTypesLoading: false,\r\n poolName: \"\",\r\n poolNameValid: true,\r\n poolID: \"\",\r\n federallyRegulated: \"\",\r\n regulatoryModeId: 0,\r\n selectionInterval: \"\",\r\n calcType: \"\",\r\n drugPoolSize: \"\",\r\n alcoholPoolSize: \"\",\r\n labAccount: \"\",\r\n panelID: \"\",\r\n useFileImportForPoolMembership: this.props.IsConsortium ? \"false\" : \"true\",\r\n primaryIDType: \"\",\r\n saving: false,\r\n currentCompany: this.props.currentCompany,\r\n includeCompaniesWithNoSelections: false,\r\n panelCode: \"\",\r\n panelCodeValid: true,\r\n selectedRegulatoryModes: [],\r\n availableToSelectRegModes: [],\r\n RunOnlyByPortalAdmin: false || this.props.IsConsortium,\r\n }\r\n\r\n regulatoryModesSubscription?: Subscription\r\n intervalsSubscription?: Subscription\r\n labAccountsSubscription?: Subscription\r\n primaryIDTypesSubscription?: Subscription\r\n account$ = new Subject()\r\n labAccountSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n\r\n this.setState({ regulatoryModesLoading: true, selectionIntervalsLoading: true, primaryIDTypesLoading: true, labAccountLoading: true })\r\n\r\n this.regulatoryModesSubscription = LabServiceRegulatoryModesGetObservable(true).subscribe(\r\n (data: RegulatoryMode[]) => this.setState({ regulatoryModes: data, availableToSelectRegModes: data || [], regulatoryModesLoading: false }),\r\n () => this.setState({ regulatoryModesLoading: false })\r\n )\r\n\r\n this.intervalsSubscription = SelectionIntervalsGetObservable().subscribe(\r\n (data: string[]) => this.setState({ selectionIntervals: data, selectionIntervalsLoading: false }),\r\n () => this.setState({ selectionIntervalsLoading: false })\r\n )\r\n\r\n this.primaryIDTypesSubscription = PoolPrimaryIDTypesGetObservable().subscribe(\r\n (data: PrimaryIDType[]) => this.setState({ primaryIDTypes: data, primaryIDTypesLoading: false, primaryIDType: data?.length ? data[0].PrimaryIDType : \"\" }),\r\n () => this.setState({ primaryIDTypesLoading: false })\r\n )\r\n const link = sessionStorage.getItem(\"company-selection-link\") || \"\"\r\n\r\n this.labAccountsSubscription = LabAccountListGetObservable(link).subscribe(\r\n (data: LabAccount[]) => this.setState({ labAccounts: data, labAccountLoading: false }),\r\n () => this.setState({ labAccountLoading: false })\r\n )\r\n\r\n this.labAccountSubscription = this.account$.pipe(\r\n filter(labAccount => labAccount !== undefined),\r\n switchMap(labAccount =>\r\n concat(\r\n of({ loading: true }),\r\n LabPanelsGetObservable(link, labAccount.LabAccount, labAccount.LabClientMemberId).pipe(\r\n map(data => ({ loading: false, data: data })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n )\r\n )\r\n ).subscribe(\r\n (o: { loading: boolean, data?: LabPanel[] }) =>\r\n o.data\r\n ? this.setState({ panelsLoading: o.loading, labPanels: o.data })\r\n : this.setState({ panelsLoading: o.loading }),\r\n () => this.setState({ panelsLoading: false })\r\n )\r\n }\r\n\r\n componentDidUpdate(prevProps: AddPoolModalProps) {\r\n if (!prevProps.show && this.props.show) {\r\n this.setState({\r\n selectedCompany: undefined,\r\n poolName: \"\",\r\n poolNameValid: true,\r\n poolID: \"\",\r\n federallyRegulated: \"\",\r\n regulatoryModeId: 0,\r\n selectionInterval: \"\",\r\n calcType: \"\",\r\n drugPoolSize: \"\",\r\n alcoholPoolSize: \"\",\r\n labAccount: \"\",\r\n panelID: \"\",\r\n useFileImportForPoolMembership: \"true\",\r\n primaryIDType: \"\",\r\n saving: false,\r\n selectedRegulatoryModes: []\r\n })\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.regulatoryModesSubscription && this.regulatoryModesSubscription.unsubscribe()\r\n this.intervalsSubscription && this.intervalsSubscription.unsubscribe()\r\n this.labAccountsSubscription && this.labAccountsSubscription.unsubscribe()\r\n this.primaryIDTypesSubscription && this.primaryIDTypesSubscription.unsubscribe()\r\n this.labAccountSubscription && this.labAccountSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n checkPoolSize = (value: string) => {\r\n if (this.state.calcType === \"Rate\" && /^(\\s*|100|0|[1-9]{1}\\d?)$/.test(value)) {\r\n return true\r\n }\r\n if (this.state.calcType === \"Fixed\" && /^(\\s*|0|[1-9]{1}\\d{0,15})$/.test(value)) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n handlePoolNameChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value\r\n this.setState({ poolName: value, poolNameValid: value.length >= 8 })\r\n }\r\n\r\n handlePanelCodeChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value\r\n this.setState({ panelCode: value, panelCodeValid: value.length > 1 })\r\n }\r\n\r\n handlePoolIDChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value\r\n this.setState({ poolID: value })\r\n }\r\n\r\n\r\n handleFederallyRegulatedChange = (event: React.ChangeEvent) => {\r\n this.setState({ federallyRegulated: event.target.value, panelID: \"\", regulatoryModeId: 0, selectedRegulatoryModes: [], availableToSelectRegModes: this.state.regulatoryModes || [] })\r\n }\r\n\r\n handleIntervalChange = (event: React.ChangeEvent) => {\r\n const selectionInterval = event.target.value\r\n this.setState({ selectionInterval: selectionInterval })\r\n }\r\n\r\n handleCalcTypeChange = (event: React.ChangeEvent) => {\r\n const calcType = event.target.value\r\n this.setState({ calcType: calcType, drugPoolSize: \"\", alcoholPoolSize: \"\" })\r\n }\r\n\r\n handleDrugChange = (event: React.ChangeEvent) => {\r\n const drug = event.target.value\r\n if (this.checkPoolSize(drug)) {\r\n this.setState({ drugPoolSize: drug })\r\n }\r\n }\r\n\r\n handleAlcoholChange = (event: React.ChangeEvent) => {\r\n const alcohol = event.target.value\r\n if (this.checkPoolSize(alcohol)) {\r\n this.setState({ alcoholPoolSize: alcohol })\r\n }\r\n }\r\n\r\n handleLabChange = (event: React.ChangeEvent) => {\r\n const labAccount = event.target.value\r\n this.setState({ labAccount: labAccount, labPanels: undefined, panelID: \"\" })\r\n const currentAccount = this.state.labAccounts?.find((account: LabAccount) => account.LabAccount === labAccount)\r\n this.account$.next(currentAccount)\r\n }\r\n\r\n handlePanelChange = (event: React.ChangeEvent) => {\r\n const panelID = event.target.value\r\n this.setState({ panelID: panelID })\r\n }\r\n\r\n handlePoolMembershipTypeChange = (event: React.ChangeEvent) => {\r\n const useFileImportForPoolMembership = event.target.value\r\n this.setState({ useFileImportForPoolMembership: useFileImportForPoolMembership })\r\n }\r\n handlePrimaryIDTypeChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value || \"\"\r\n this.setState({ primaryIDType: value })\r\n }\r\n\r\n isValid = () => {\r\n return (this.props.IsConsortium || this.state.selectedCompany || this.state.currentCompany)\r\n && this.state.poolName\r\n && this.state.poolNameValid\r\n && this.state.poolID\r\n && (this.state.federallyRegulated === \"false\" || (this.state.federallyRegulated === \"true\" && this.state.regulatoryModeId !== 0 && this.state.selectedRegulatoryModes.length >= 0))\r\n && this.state.selectionInterval\r\n && this.state.calcType\r\n && this.state.drugPoolSize\r\n && this.state.alcoholPoolSize\r\n && (this.props.IsConsortium || this.state.labAccount)\r\n && (this.props.IsConsortium || this.state.panelID)\r\n && this.state.useFileImportForPoolMembership !== \"\"\r\n && this.state.primaryIDType !== \"\"\r\n && (this.props.IsConsortium ? this.state.panelCode && this.state.panelCodeValid : true)\r\n }\r\n\r\n performSave = () => {\r\n const pool: PoolCreate = {\r\n IsNonDOT: this.state.federallyRegulated === \"false\" || !this.state.federallyRegulated,\r\n AccountId: this.state.selectedCompany?.AccountID || this.state.currentCompany?.AccountID || 0,\r\n PoolName: this.state.poolName,\r\n PoolCode: this.state.poolID,\r\n RegulatoryModeID: this.state.regulatoryModeId !== 0 ? this.state.regulatoryModeId : null,\r\n SelectionInterval: this.state.selectionInterval,\r\n DrugTarget: Number(this.state.drugPoolSize),\r\n AlcoholTarget: Number(this.state.alcoholPoolSize),\r\n PoolCalculationType: this.state.calcType,\r\n ProviderMappingID: this.state.labAccounts ? this.state.labAccounts.find((account: LabAccount) => account.LabAccount === this.state.labAccount)?.ProviderMappingID || 0 : 0,\r\n PanelID: this.state.panelID ? Number(this.state.panelID) : 0,\r\n UseFileImportForPoolMembership: this.state.useFileImportForPoolMembership,\r\n PrimaryIDType: this.state.primaryIDType,\r\n IncludeCompaniesWithNoSelections: this.state.includeCompaniesWithNoSelections,\r\n IsConsortium: this.props.IsConsortium,\r\n PanelCode: this.props.IsConsortium ? this.state.panelCode : \"\",\r\n RegulatoryModes: this.state.selectedRegulatoryModes.map(({ RegulatoryModeID }) => RegulatoryModeID),\r\n RunOnlyByPortalAdmin: this.state.RunOnlyByPortalAdmin || this.props.IsConsortium\r\n }\r\n\r\n this.setState({ saving: true })\r\n\r\n this.saveSubscription = PoolCreateObservable(pool).subscribe(\r\n data => {\r\n toast.success(data)\r\n this.setState({ saving: false })\r\n this.props.onSuccess()\r\n },\r\n error => {\r\n this.setState({ saving: false })\r\n toast.error(error?.errorData?.message || error.message)\r\n }\r\n )\r\n }\r\n\r\n onRegulatoryModeChange = (selected: RegulatoryMode[]) => {\r\n const availableToSelectRegModes = []\r\n const selectedRegModes = selected || []\r\n const availableRegModes = this.state.regulatoryModes || []\r\n let regulatoryModeId = 0\r\n if (selectedRegModes.length > 0) {\r\n regulatoryModeId = selectedRegModes[0].RegulatoryModeID\r\n }\r\n\r\n for (let i = 0; i < availableRegModes.length; i++) {\r\n let is_selected = false;\r\n const availRegMode = availableRegModes[i]\r\n for (let j = 0; j < selectedRegModes.length; j++) {\r\n const selectedRegMode = selectedRegModes[j];\r\n if (availRegMode.RegulatoryModeID === selectedRegMode.RegulatoryModeID) {\r\n is_selected = true\r\n break\r\n }\r\n }\r\n if (is_selected) {\r\n continue\r\n }\r\n availableToSelectRegModes.push(availRegMode)\r\n }\r\n this.setState({ regulatoryModeId: regulatoryModeId, selectedRegulatoryModes: selectedRegModes, availableToSelectRegModes: availableToSelectRegModes })\r\n }\r\n\r\n handleRunOnlyByCompanyAdminChange = (event: React.ChangeEvent) => {\r\n if(!this.state.RunOnlyByPortalAdmin){\r\n return\r\n }\r\n const checked = event.target.checked\r\n if(!checked){\r\n return\r\n }\r\n this.setState({ RunOnlyByPortalAdmin: !checked })\r\n\r\n }\r\n\r\n handleRunOnlyByPortalAdminChange = (event: React.ChangeEvent) => {\r\n if(this.state.RunOnlyByPortalAdmin){\r\n return\r\n }\r\n const checked = event.target.checked\r\n if(!checked){\r\n return\r\n }\r\n this.setState({ RunOnlyByPortalAdmin: checked })\r\n }\r\n\r\n render() {\r\n const { show, onHide, IsConsortium } = this.props\r\n const isOnTrack = IsOnTrack()\r\n const availableRegulatoryModes = this.state.regulatoryModes || []\r\n const availableToSelectRegModes = this.state.availableToSelectRegModes\r\n const selectedRegulatoryModes = this.state.selectedRegulatoryModes\r\n const regulatoryModeId = this.state.regulatoryModeId\r\n const regulatoryModeDisabled = (this.state.federallyRegulated === \"\") || (this.state.federallyRegulated === \"false\") || (availableRegulatoryModes.length == 0)\r\n const runOnlyByPortalAdmin = this.state.RunOnlyByPortalAdmin\r\n const isPortalAdmin: boolean = this.props.isPortalAdmin || false\r\n\r\n let calcTypeMark = \"\"\r\n switch (this.state.calcType) {\r\n case \"Rate\":\r\n calcTypeMark = \"%\"\r\n break\r\n case \"Fixed\":\r\n calcTypeMark = \"#\"\r\n break\r\n }\r\n let primaryIdType = \"SSN\"\r\n if ((this.state.primaryIDTypes) && (this.state.primaryIDTypes[0])) {\r\n primaryIdType = this.state.primaryIDTypes[0].PrimaryIDType\r\n }\r\n if (this.state.selectedCompany?.PrimaryIDType) {\r\n primaryIdType = this.state.selectedCompany?.PrimaryIDType\r\n }\r\n if (this.state.primaryIDType) {\r\n primaryIdType = this.state.primaryIDType\r\n }\r\n\r\n const companyName = this.state.selectedCompany?.Name || this.state.currentCompany?.Name || \"\"\r\n return \r\n \r\n {IsConsortium ? \"Create New Consortium\" : \"Create New Pool\"}\r\n \r\n \r\n
\r\n {!IsConsortium && \r\n Company\r\n {this.props.isCompanyAdmin && \r\n {this.state.companiesLoading &&
}\r\n {!this.state.companiesLoading && }\r\n }\r\n {this.props.isPortalAdmin && \r\n this.setState({ selectedCompany: selected[0] })} placeholder=\"Choose a company...\" />\r\n }\r\n
}\r\n \r\n Pool Name\r\n \r\n \r\n Pool Name should contain at least 8 characters\r\n \r\n \r\n \r\n Pool ID\r\n \r\n \r\n \r\n \r\n \r\n Federally Regulated\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.federallyRegulated === \"true\" && \r\n Regulatory Mode(s):\r\n \r\n \r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n onChange={(selected) => { this.onRegulatoryModeChange(selected) }}\r\n options={availableToSelectRegModes}\r\n isInvalid={selectedRegulatoryModes.length === 0}\r\n disabled={regulatoryModeDisabled}\r\n emptyLabel=\"No Regulatory Modes Found\"\r\n placeholder=\"Select\"\r\n multiple\r\n selected={selectedRegulatoryModes ? selectedRegulatoryModes : []}\r\n />\r\n \r\n \r\n }\r\n \r\n Selection Interval\r\n \r\n \r\n \r\n \r\n {this.state.selectionIntervals && this.state.selectionIntervals.map((interval: string) => )}\r\n \r\n \r\n \r\n \r\n \r\n Pool Calculation Type\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Drug\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Alcohol\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!IsConsortium &&\r\n \r\n Select your Lab\r\n \r\n \r\n \r\n \r\n {this.state.labAccounts && this.state.labAccounts.map((labAccount: LabAccount) => )}\r\n \r\n \r\n \r\n }\r\n {!IsConsortium &&\r\n \r\n Panel\r\n \r\n \r\n \r\n \r\n {this.state.labPanels && this.state.labPanels\r\n .filter(((labPanel: LabPanel) => (labPanel.DOT && this.state.federallyRegulated === \"true\") || (!labPanel.DOT && this.state.federallyRegulated === \"false\")))\r\n .map((labPanel: LabPanel) => )}\r\n \r\n \r\n \r\n }\r\n {IsConsortium && \r\n Panel Code\r\n \r\n \r\n Panel Code should contain at least 2 characters\r\n \r\n }\r\n \r\n Pool Membership Type\r\n \r\n \r\n {}\r\n {}\r\n \r\n \r\n \r\n \r\n {IsConsortium &&\r\n \r\n Include companies with no selection\r\n this.setState({ includeCompaniesWithNoSelections: e.target.checked })} />\r\n }\r\n {!isOnTrack && \r\n Pool Report ID Type\r\n \r\n \r\n \r\n {this.state.primaryIDTypes?.map(item => )}\r\n \r\n \r\n \r\n }\r\n {!isOnTrack && !IsConsortium && \r\n WHO CAN RUN POOL\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): AddPoolModalAuthProps {\r\n const companyAdmin = isCompanyAdmin(state)\r\n const portalAdmin = isPortalAdmin(state)\r\n const currentCompany = companyAdmin ? GetSelectedAssignedClinic(state) : undefined\r\n return {\r\n isCompanyAdmin: companyAdmin,\r\n isPortalAdmin: portalAdmin,\r\n currentCompany: currentCompany\r\n }\r\n}\r\nconst ConnectedAddPoolModal = connect(mapStateToProps, null)(AddPoolModal)\r\nexport default ConnectedAddPoolModal","import { Observable } from \"rxjs\"\r\nimport PoolStatisticsDetails from \"./RandomsModel/PoolStatisticsDetails\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function PoolStatisticsDetailsGetObservable(poolId: number, companyId?: number): Observable {\r\n const requestBody: string = new URLSearchParams({\r\n poolId: poolId.toString(),\r\n companyId: (companyId || 0).toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"RandomTest/GetPoolStatisticsDetails?\" + requestBody)\r\n}\r\n\r\nexport function PoolStatisticsDetailsByProgram(poolId: number, poolProgramId?: number): Observable {\r\n const requestBody: string = new URLSearchParams({\r\n poolId: poolId.toString(),\r\n poolProgramId: (poolProgramId || 0).toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"RandomTest/PoolStatisticsDetailsByProgram?\" + requestBody)\r\n}\r\n","export default function FormatTimestampFileName(subject: string, extension: string, date: Date) {\r\n const parts = [\r\n subject,\r\n (\"0\" + (date.getMonth() + 1)).slice(-2),\r\n (\"0\" + (date.getDate())).slice(-2),\r\n date.getFullYear(),\r\n (\"0\" + (date.getHours())).slice(-2),\r\n (\"0\" + (date.getMinutes())).slice(-2),\r\n (\"0\" + (date.getSeconds())).slice(-2)\r\n ]\r\n return parts.join(\"_\") + \".\" + extension;\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { AccountTypeID } from \"../../config/Constants\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function RandomSelectionListCsvGetObservable(poolId: number, poolSelectionId: number, poolName: string, accountId: number): Observable {\r\n const params: string = JSON.stringify({\r\n Extra: \"false\",\r\n PageSize: 25,\r\n PoolID: poolId,\r\n AccountID: accountId,\r\n PoolMembersID: [],\r\n PoolName: poolName,\r\n PoolSelectionID: poolSelectionId,\r\n ProfileAccountTypeID: AccountTypeID\r\n })\r\n\r\n return ObservableFromFetch(\"RandomTest/RandomSelectionListExport\", params)\r\n}\r\n\r\n","import { Observable } from \"rxjs\"\r\nimport { AccountTypeID } from \"../../config/Constants\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function RandomSelectionListPrintGetObservable(poolId: number, poolSelectionId: number, accountID: number): Observable {\r\n const params: string = JSON.stringify({\r\n ClientDetails: {},\r\n GetRandomSelectionList: {\r\n Extra: \"false\",\r\n PageSize: 25,\r\n PoolID: poolId,\r\n PoolMembersID: [],\r\n PoolSelectionID: poolSelectionId,\r\n ProfileAccountID: accountID,\r\n ProfileAccountTypeID: AccountTypeID\r\n }\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceReport/RandomSelectionListReport\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function RandomSelectionListPrintLettersGetObservable(poolId: number, poolSelectionId: number, accountId: number): Observable {\r\n const params: string = JSON.stringify({\r\n CompanyID: accountId > 0 ? accountId.toString() : \"\",\r\n Extra: false,\r\n LocationID: \"\",\r\n PageSize: 25,\r\n PoolID: poolId,\r\n PoolSelectionID: poolSelectionId,\r\n RegionID: \"\",\r\n SpecificAccount: true\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceRandomTest/PrintNotificationLetterOfRandom\", params)\r\n}\r\n","import * as React from \"react\"\r\nimport { Col, Container, Modal, Row, Button, Table, Spinner } from \"react-bootstrap\"\r\nimport { Subscription } from \"rxjs\"\r\nimport FileSaver from \"file-saver\"\r\nimport { toast } from \"react-toastify\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport FormatTimestampFileName from \"../../formatters/FormatTimestampFileName\"\r\nimport PoolSelectionRow from \"../../api/Randoms/RandomsModel/PoolSelectionRow\"\r\nimport RandomSelectionRow from \"../../api/Randoms/RandomsModel/RandomSelectionRow\"\r\nimport RandomSelectionListGet from \"../../api/Randoms/RandomSelectionListGet\"\r\nimport RandomSelectionListCsvGet from \"../../api/Randoms/RandomSelectionListCsvGet\"\r\nimport RandomSelectionListPrintGet from \"../../api/Randoms/RandomSelectionListPrintGet\"\r\nimport RandomSelectionListPrintLettersGet from \"../../api/Randoms/RandomSelectionListPrintLettersGet\"\r\n\r\ninterface RandomSelectionListProps {\r\n show: boolean\r\n onHide: () => void\r\n poolId: number\r\n accountId?: number\r\n poolName: string\r\n poolSelection: PoolSelectionRow\r\n}\r\n\r\ninterface RandomSelectionListState {\r\n data?: RandomSelectionRow[]\r\n loadingCsv: boolean\r\n loadingPrint: boolean\r\n loadingPrintLetter: boolean\r\n}\r\n\r\nexport default class RandomSelectionList extends React.PureComponent {\r\n state: RandomSelectionListState = {\r\n loadingCsv: false,\r\n loadingPrint: false,\r\n loadingPrintLetter: false\r\n }\r\n listSubscription?: Subscription\r\n csvSubscription?: Subscription\r\n printSubscription?: Subscription\r\n printLetterSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.listSubscription = RandomSelectionListGet(this.props.poolId, this.props.poolSelection.PoolSelectionID, this.props.accountId || 0).subscribe(\r\n (data: RandomSelectionRow[]) => {\r\n this.setState({ data: data.filter(row => row.ID !== \"\" || row.Name !== \"\" || row.TestFor !== \"\") })\r\n }\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.listSubscription && this.listSubscription.unsubscribe()\r\n this.csvSubscription && this.csvSubscription.unsubscribe()\r\n this.printSubscription && this.printSubscription.unsubscribe()\r\n this.printLetterSubscription && this.printLetterSubscription.unsubscribe()\r\n }\r\n\r\n handleExportClick = () => {\r\n this.setState({ loadingCsv: true })\r\n this.csvSubscription = RandomSelectionListCsvGet(this.props.poolId, this.props.poolSelection.PoolSelectionID, this.props.poolName, this.props.accountId || 0).subscribe(\r\n (result: string) => result ? this.export(result) : toast.error(\"Data not found.\"),\r\n error => toast.error(error),\r\n () => this.setState({ loadingCsv: false })\r\n )\r\n }\r\n\r\n export = (csv: string) => {\r\n const csvData = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, FormatTimestampFileName(\"RandomSelectionList\", \"csv\", new Date()), true)\r\n toast.success(\"CSV file downloaded successfully.\")\r\n }\r\n\r\n handlePrintClick = () => {\r\n this.setState({ loadingPrint: true })\r\n this.printSubscription = RandomSelectionListPrintGet(this.props.poolId, this.props.poolSelection.PoolSelectionID, this.props.accountId || 0).subscribe(\r\n (data: string) => this.print(data),\r\n error => toast.error(error),\r\n () => this.setState({ loadingPrint: false })\r\n )\r\n }\r\n\r\n print = (base64pdf: string) => {\r\n const pdfWindow = window.open(\"\")\r\n if (pdfWindow) {\r\n pdfWindow.document.write(\"\")\r\n }\r\n }\r\n\r\n handlePrintLettersClick = () => {\r\n this.setState({ loadingPrintLetter: true })\r\n this.printLetterSubscription = RandomSelectionListPrintLettersGet(this.props.poolId, this.props.poolSelection.PoolSelectionID, this.props.accountId || 0).subscribe(\r\n (data: string) => this.print(data),\r\n error => toast.error(error),\r\n () => this.setState({ loadingPrintLetter: false })\r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n RANDOM SELECTION LIST\r\n \r\n \r\n \r\n \r\n \r\n
{this.props.poolName}
{this.props.poolSelection.TimePeriod}\r\n \r\n \r\n \r\n \r\n EXPORT\r\n PRINT\r\n \r\n \r\n \r\n \r\n PRINT NOTIFICATION LETTERS\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!this.state.data && }\r\n {this.state.data && this.state.data.length === 0 && }\r\n {this.state.data && this.state.data.length > 0 && this.state.data.map((row: RandomSelectionRow, i: number) =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
COMPANYPRIMARY IDNAMESELECTION DATETEST FORCOMPLETED DATE
NO SELECTIONS FOR THIS ACCOUNT.
{row.Company}{row.ID}{row.Name}{row.DonorSelectedAt}{row.TestFor}{row.TestCompletedAt}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport RandomSelectionRow from \"./RandomsModel/RandomSelectionRow\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { AccountTypeID } from \"../../config/Constants\"\r\n\r\nexport default function RandomSelectionListGetObservable(poolId: number, poolSelectionId: number, accountID: number): Observable {\r\n const params: string = JSON.stringify({\r\n Extra: \"false\",\r\n PageSize: 25,\r\n PoolID: poolId,\r\n AccountID: accountID,\r\n PoolMembersID: [],\r\n PoolSelectionID: poolSelectionId,\r\n ProfileAccountTypeID: AccountTypeID\r\n })\r\n\r\n return ObservableFromFetch(\"RandomTest/GetRandomSelectionList\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport PoolSelection from \"./RandomsModel/PoolSelection\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function PoolSelectionListGetObservable(poolId: number, pageNumber: number, pageSize: number, accountId: number = 0): Observable {\r\n const params: string = JSON.stringify({\r\n PoolID: poolId,\r\n AccountID: accountId,\r\n PageNumber: pageNumber,\r\n PageSize: pageSize\r\n })\r\n\r\n return ObservableFromFetch(\"RandomTest/GetPoolSelectionList\", params)\r\n}\r\n","import { APIError } from \"../api/ObservableFromFetch\"\r\n\r\nexport default function FormatError(error: Error | APIError): string {\r\n return (error as APIError)?.errorData?.message || error.message\r\n}\r\n","import { toast } from \"react-toastify\"\r\nimport { APIError } from \"../api/ObservableFromFetch\"\r\nimport FormatError from \"../formatters/FormatError\"\r\n\r\nconst handleAPIError = (error: Error | APIError | undefined | null, action?: () => void) => {\r\n action?.()\r\n error && toast.error(FormatError(error))\r\n}\r\nexport default handleAPIError\r\n","import { useEffect, useState } from \"react\"\r\n\r\nimport { Button, Col, Container, Form, Modal, Row, Spinner } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { finalize } from \"rxjs/operators\"\r\n\r\nimport { PoolSelectionRerun, PoolSelectionRerunObservable } from \"../../../api/Randoms/PoolSelectionActions\"\r\nimport PoolStatisticsDetailsGetObservable from \"../../../api/Randoms/PoolStatisticsDetailsGet\"\r\nimport PoolSelectionRow from \"../../../api/Randoms/RandomsModel/PoolSelectionRow\"\r\nimport PoolStatisticsDetails from \"../../../api/Randoms/RandomsModel/PoolStatisticsDetails\"\r\nimport handleAPIError from \"../../../utils/handleAPIError\"\r\nimport ActionButton from \"../../ActionButton\"\r\n\r\ninterface PoolSelectionRerunModalProps {\r\n show?: boolean\r\n poolId: number\r\n companyId: number\r\n row: PoolSelectionRow\r\n onHide: () => void\r\n onRefresh: () => void\r\n}\r\n\r\nfunction PoolSelectionRerunModal(props: PoolSelectionRerunModalProps) {\r\n const { show, poolId, companyId, row, onHide, onRefresh } = props\r\n const [running, setRunning] = useState(false)\r\n const [statistic, setStatistic] = useState({} as PoolStatisticsDetails)\r\n const [loadingStatistic, setLoadingStatistic] = useState(false)\r\n\r\n const [actualToSelectDrug, setActualToSelectDrug] = useState(0)\r\n const [actualToSelectAlcohol, setActualToSelectAlcohol] = useState(0)\r\n const [alternateDrug, setAlternateDrug] = useState(0)\r\n const [alternateAlcohol, setAlternateAlcohol] = useState(0)\r\n\r\n useEffect(() => {\r\n setLoadingStatistic(true)\r\n const subs = PoolStatisticsDetailsGetObservable(poolId, companyId)\r\n .pipe(finalize(() => setLoadingStatistic(false)))\r\n .subscribe(\r\n (data) => {\r\n setStatistic(data)\r\n setActualToSelectDrug(data.DrugRequired)\r\n setActualToSelectAlcohol(data.AlcoholRequired)\r\n },\r\n (error) => handleAPIError(error, () => {})\r\n )\r\n return () => subs.unsubscribe()\r\n }, [poolId, companyId])\r\n\r\n const handleReRun = () => {\r\n setRunning(true)\r\n const poolSelection: PoolSelectionRerun = {\r\n PoolSelectionID: row.PoolSelectionID,\r\n RequiredDrug: actualToSelectDrug || 0,\r\n RequiredAlcohol: actualToSelectAlcohol || 0,\r\n AlternateDrug: alternateDrug || 0,\r\n AlternateAlcohol: alternateAlcohol || 0,\r\n ExtraDrug: 0,\r\n ExtraAlcohol: 0,\r\n AccountID: 0,\r\n }\r\n PoolSelectionRerunObservable(poolSelection)\r\n .pipe(finalize(() => setRunning(false)))\r\n .subscribe(\r\n (data) => {\r\n onHide()\r\n onRefresh()\r\n toast.success(data)\r\n },\r\n (error) => handleAPIError(error, () => {})\r\n )\r\n }\r\n\r\n const handleActualToSelectDrugChange = (value: string) => {\r\n setActualToSelectDrug(Number(value.replace(/\\D/g, \"\")) || 0)\r\n }\r\n\r\n const handleActualToSelectAlcoholChange = (value: string) => {\r\n setActualToSelectAlcohol(Number(value.replace(/\\D/g, \"\")) || 0)\r\n }\r\n\r\n const handleAlternateDrugChange = (value: string) => {\r\n setAlternateDrug(Number(value.replace(/\\D/g, \"\")) || 0)\r\n }\r\n\r\n const handleAlternateAlcoholChange = (value: string) => {\r\n setAlternateAlcohol(Number(value.replace(/\\D/g, \"\")) || 0)\r\n }\r\n\r\n const validateSizeValue = (value: number | undefined) => {\r\n return !value || (value >= 0 && (!statistic || value <= statistic.CurrentPoolSize))\r\n }\r\n\r\n const isActualToSelectDrugValid = () => validateSizeValue(actualToSelectDrug)\r\n\r\n const isAlternateDrugValid = () => validateSizeValue(alternateDrug)\r\n\r\n const isActualToSelectAlcoholValid = () => validateSizeValue(actualToSelectAlcohol)\r\n\r\n const isAlternateAlcoholValid = () => validateSizeValue(alternateAlcohol)\r\n\r\n return (\r\n \r\n \r\n TESTS REQUIRED FOR SELECTION {row.Period}\r\n \r\n \r\n \r\n {loadingStatistic ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n
DRUG
\r\n
{statistic?.DrugRequired || 0}
\r\n \r\n \r\n \r\n ACTUAL TO SELECT\r\n \r\n ) =>\r\n handleActualToSelectDrugChange(e.target.value)\r\n }\r\n isInvalid={!isActualToSelectDrugValid()}\r\n disabled={false}\r\n />\r\n \r\n Drug Actual To Select is greater than pool size\r\n \r\n \r\n {statistic?.GenerateAlternates === true && (\r\n \r\n \r\n ALTERNATES\r\n \r\n ) => handleAlternateDrugChange(e.target.value)}\r\n isInvalid={!isAlternateDrugValid()}\r\n disabled={false}\r\n />\r\n \r\n Number of drug Alternates exceeds pool membership count\r\n \r\n \r\n )}\r\n
\r\n \r\n \r\n
ALCOHOL
\r\n
{statistic?.AlcoholRequired || 0}
\r\n \r\n \r\n \r\n ACTUAL TO SELECT\r\n \r\n ) =>\r\n handleActualToSelectAlcoholChange(e.target.value)\r\n }\r\n isInvalid={!isActualToSelectAlcoholValid()}\r\n disabled={false}\r\n />\r\n \r\n Drug Actual To Select is greater than pool size\r\n \r\n \r\n {statistic?.GenerateAlternates === true && (\r\n \r\n \r\n ALTERNATES\r\n \r\n ) =>\r\n handleAlternateAlcoholChange(e.target.value)\r\n }\r\n isInvalid={!isAlternateAlcoholValid()}\r\n disabled={false}\r\n />\r\n \r\n Number of alcohol Alternates exceeds pool membership count\r\n \r\n \r\n )}\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n Run\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nPoolSelectionRerunModal.defaultProps = {\r\n show: true,\r\n}\r\nexport default PoolSelectionRerunModal\r\n","import { Observable } from \"rxjs\"\r\n\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport interface PoolSelectionCancel {\r\n PoolSelectionID: number\r\n}\r\n\r\nexport interface PoolSelectionRerun {\r\n PoolSelectionID: number\r\n RequiredDrug: number\r\n RequiredAlcohol: number\r\n AlternateDrug: number\r\n AlternateAlcohol: number\r\n ExtraDrug: number\r\n ExtraAlcohol: number\r\n AccountID: number\r\n}\r\n\r\nexport function PoolSelectionCancelObservable(poolSelection: PoolSelectionCancel): Observable {\r\n const params: string = JSON.stringify({\r\n PoolSelectionID: poolSelection.PoolSelectionID,\r\n })\r\n return ObservableFromFetch(\"WorkforceRandomTest/PoolSelectionCancel\", params)\r\n}\r\n\r\nexport function PoolSelectionRerunObservable(poolSelection: PoolSelectionRerun): Observable {\r\n const params: string = JSON.stringify({\r\n PoolSelectionID: poolSelection.PoolSelectionID,\r\n RequiredDrug: poolSelection.RequiredDrug,\r\n RequiredAlcohol: poolSelection.RequiredAlcohol,\r\n AlternateDrug: poolSelection.AlternateDrug,\r\n AlternateAlcohol: poolSelection.AlternateAlcohol,\r\n ExtraDrug: poolSelection.ExtraDrug,\r\n ExtraAlcohol: poolSelection.ExtraAlcohol,\r\n })\r\n return ObservableFromFetch(\"WorkforceRandomTest/PoolSelectionRerun\", params)\r\n}\r\n","import * as React from \"react\"\r\n\r\nimport { Button, Col, Container, Modal, Row } from \"react-bootstrap\"\r\n\r\nimport ActionButton from \"./ActionButton\"\r\nimport WarningImage from \"../assets/images/warning.png\"\r\n\r\ninterface ConfirmationModalProps {\r\n show: boolean\r\n showImage?: boolean\r\n title?: string\r\n textTitle?: string\r\n text?: string\r\n cancelButtonText?: string\r\n confirmButtonText?: string\r\n children?: React.ReactNode\r\n size?: \"lg\"\r\n disableConfirmButton?: boolean\r\n spinConfirmButton?: boolean\r\n disableConfirmOnSpin?: boolean\r\n showCancelButton?: boolean\r\n showCloseButton?: boolean\r\n onHide: () => void\r\n onConfirm: () => void\r\n}\r\n\r\nfunction ConfirmationModal({\r\n show,\r\n showImage = true,\r\n title = \"CONFIRM\",\r\n textTitle = \"\",\r\n text = \"\",\r\n cancelButtonText = \"CANCEL\",\r\n confirmButtonText = \"CONFIRM\",\r\n children = null,\r\n size = undefined,\r\n disableConfirmButton = false,\r\n spinConfirmButton = false,\r\n disableConfirmOnSpin = false,\r\n showCancelButton = true,\r\n showCloseButton = true,\r\n onHide,\r\n onConfirm,\r\n}: ConfirmationModalProps) {\r\n return (\r\n \r\n \r\n {title}\r\n \r\n \r\n {children || (\r\n \r\n \r\n {showImage && (\r\n \r\n \"Warning\"\r\n \r\n )}\r\n \r\n {textTitle && (\r\n
\r\n {textTitle}\r\n
\r\n )}\r\n \r\n
\r\n {text && (\r\n \r\n {showImage && }\r\n \r\n

{text}

\r\n \r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n \r\n {showCancelButton && (\r\n \r\n )}\r\n \r\n {confirmButtonText}\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default ConfirmationModal\r\n","export default \"data:image/png;base64,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\"","import { useState } from \"react\"\r\n\r\nimport { Button } from \"react-bootstrap\"\r\nimport { FaReply, FaTimes } from \"react-icons/fa\"\r\nimport { toast } from \"react-toastify\"\r\nimport { finalize } from \"rxjs/operators\"\r\n\r\nimport PoolSelectionRerunModal from \"./PoolSelectionRerunModal\"\r\nimport { PoolSelectionCancel, PoolSelectionCancelObservable } from \"../../../api/Randoms/PoolSelectionActions\"\r\nimport PoolSelectionRow from \"../../../api/Randoms/RandomsModel/PoolSelectionRow\"\r\nimport handleAPIError from \"../../../utils/handleAPIError\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport ConfirmationModal from \"../../ConfirmationModal\"\r\n\r\ninterface PoolSelectionActionButtonsProps {\r\n poolId: number\r\n companyId: number\r\n row: PoolSelectionRow\r\n onRefresh: () => void\r\n}\r\n\r\nfunction PoolSelectionActionButtons(props: PoolSelectionActionButtonsProps) {\r\n const { poolId, companyId, row, onRefresh } = props\r\n const [canceling, setCanceling] = useState(false)\r\n const [showCancelConfirmation, setShowCancelConfirmation] = useState(false)\r\n const [showRerunModal, setShowRerunModal] = useState(false)\r\n\r\n if (!row.IsActive) {\r\n return null\r\n }\r\n\r\n const handleCancel = () => {\r\n setCanceling(true)\r\n setShowCancelConfirmation(false)\r\n const poolSelection : PoolSelectionCancel = {PoolSelectionID : row.PoolSelectionID}\r\n PoolSelectionCancelObservable(poolSelection)\r\n .pipe(finalize(() => setCanceling(false)))\r\n .subscribe(\r\n (data) => {\r\n onRefresh()\r\n toast.success(data)\r\n },\r\n (error) => handleAPIError(error, () => {})\r\n )\r\n }\r\n\r\n return (\r\n <>\r\n {row.Status === 0 && (\r\n setShowCancelConfirmation(true)}\r\n spin={canceling}\r\n disableOnSpin\r\n >\r\n \r\n Cancel\r\n \r\n )}\r\n {row.Status === 1 && (\r\n \r\n )}\r\n setShowCancelConfirmation(false)}\r\n />\r\n {showRerunModal && (\r\n setShowRerunModal(false)}\r\n onRefresh={onRefresh}\r\n row={row}\r\n poolId={poolId}\r\n companyId={companyId}\r\n />\r\n )}\r\n \r\n )\r\n}\r\nexport default PoolSelectionActionButtons\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../../ObservableFromFetch\"\r\n\r\n\r\nexport enum FilterDataModule {\r\n RandomModule = 6\r\n}\r\nexport enum FilterCriteriaCode {\r\n Company = 2,\r\n Location = 4,\r\n RegulatoryMode = 12,\r\n Unknown = 0\r\n}\r\nexport enum FilterSaveResult {\r\n SuccessfullySaved = 0,\r\n SaveError = 1,\r\n Duplicate = 2\r\n}\r\n\r\nexport const EmptyPoolCriteria: PoolCriteria = {\r\n PoolID: 0,\r\n ImplementationID: 0,\r\n FilterModuleID: FilterDataModule.RandomModule,\r\n FilterDataID: 0,\r\n SaveAs: \"\",\r\n ForceOverride: false,\r\n IsFilter: false,\r\n UserName: \"\",\r\n UserLoginID: 0,\r\n SaveResultCode: FilterSaveResult.SuccessfullySaved,\r\n SaveResultText: \"\",\r\n Items: [],\r\n IsConsortium: false\r\n}\r\n\r\nexport const EmptyPoolCriteriaItem: PoolCriteriaItem = {\r\n FilterCriteriaID: 0,\r\n FilterCriteriaName: \"Unknown\",\r\n Name: \"\",\r\n Values: []\r\n}\r\n\r\nexport default interface PoolCriteria {\r\n PoolID: number\r\n ImplementationID: number\r\n FilterModuleID: number\r\n FilterDataID: number\r\n SaveAs: string\r\n ForceOverride: boolean\r\n IsFilter: boolean\r\n UserName: string\r\n UserLoginID: number\r\n SaveResultCode: FilterSaveResult\r\n SaveResultText: string\r\n Items: PoolCriteriaItem[]\r\n IsConsortium: boolean\r\n}\r\n\r\nexport interface PoolCriteriaItem {\r\n FilterCriteriaID: number\r\n FilterCriteriaName: string\r\n Name: string\r\n Values: PoolCriteriaValue[]\r\n}\r\n\r\nexport interface PoolCriteriaValue {\r\n ID: number\r\n IntValue: number\r\n StringValue: string\r\n BoolValue: boolean\r\n StringValue2?: string\r\n StringValue3?: string\r\n}\r\n\r\n\r\nexport const EmptyFilterData: FilterData = {\r\n FilterDataID: 0,\r\n ImplementationID: 0,\r\n FilterModuleID: 0,\r\n Name: \"\",\r\n ForceOverride: true,\r\n UserName: \"\",\r\n UserLoginID: 0,\r\n SaveResultCode: FilterSaveResult.SuccessfullySaved,\r\n SaveResultText: \"\",\r\n Items: []\r\n}\r\n\r\nexport const EmptyFilterDataItem: FilterDataItem = {\r\n FilterCriteriaID: 0,\r\n FilterCriteriaName: \"Unknown\",\r\n Name: \"\",\r\n Values: []\r\n}\r\n\r\nexport interface FilterDataName {\r\n FilterDataID: number\r\n Name: string\r\n}\r\n\r\nexport interface FilterData {\r\n FilterDataID: number\r\n ImplementationID: number\r\n FilterModuleID: number\r\n Name: string\r\n ForceOverride: boolean\r\n UserName: string\r\n UserLoginID: number\r\n SaveResultCode: FilterSaveResult\r\n SaveResultText: string\r\n Items: FilterDataItem[]\r\n}\r\n\r\nexport interface FilterDataItem {\r\n\r\n FilterCriteriaID: number\r\n FilterCriteriaName: string\r\n Name: string\r\n Values: FilterDataValue[]\r\n}\r\n\r\nexport interface FilterDataValue {\r\n ID: number\r\n IntValue: number\r\n StringValue: string\r\n BoolValue: boolean\r\n}\r\n\r\nexport function CopyFilterDataName(src: FilterDataName): FilterDataName {\r\n const result: FilterDataName = {\r\n FilterDataID: src.FilterDataID,\r\n Name: src.Name\r\n }\r\n return result\r\n}\r\nexport function CopyFilterDataNames(src: FilterDataName[]): FilterDataName[] {\r\n const result: FilterDataName[] = []\r\n for (let i = 0; i < src.length; i++) {\r\n const item = CopyFilterDataName(src[i])\r\n result.push(item)\r\n }\r\n \r\n return result\r\n}\r\n\r\nexport function GetPoolCriteriaItemByCode(criteria: PoolCriteria, code: FilterCriteriaCode, add: boolean = false): PoolCriteriaItem {\r\n if (!criteria) {\r\n return { ...EmptyPoolCriteriaItem }\r\n }\r\n const items = criteria.Items\r\n const result = items.find(item => item.FilterCriteriaID === code)\r\n if (add && !result) {\r\n const newItem = { ...EmptyPoolCriteriaItem, FilterCriteriaID: code }\r\n items.push(newItem)\r\n return newItem\r\n }\r\n return result || { ...EmptyPoolCriteriaItem }\r\n}\r\n\r\nexport function GetCompanyPoolCriteriaItem(criteria: PoolCriteria): PoolCriteriaItem {\r\n let result = GetPoolCriteriaItemByCode(criteria, FilterCriteriaCode.Company)\r\n return result\r\n}\r\nexport function GetRegulatoryModePoolCriteriaItem(criteria: PoolCriteria): PoolCriteriaItem {\r\n let result = GetPoolCriteriaItemByCode(criteria, FilterCriteriaCode.RegulatoryMode)\r\n return result\r\n}\r\n\r\nexport function GetPoolCriteriaItemStringValues(item?: PoolCriteriaItem) {\r\n return item?.Values.map(val => val.StringValue) || []\r\n}\r\n\r\nexport function GetFilterDataNameIndexByID(items: FilterDataName[], filterDataId: number): number {\r\n if (!items) {\r\n return -1;\r\n }\r\n const result = items.findIndex(item => item.FilterDataID === filterDataId);\r\n return result;\r\n}\r\n\r\nexport function CreateEmptyPoolCriteria(poolId: number): PoolCriteria {\r\n const result: PoolCriteria = {\r\n PoolID: poolId,\r\n ImplementationID: 0,\r\n FilterModuleID: FilterDataModule.RandomModule,\r\n FilterDataID: 0,\r\n SaveAs: \"\",\r\n ForceOverride: false,\r\n IsFilter: false,\r\n UserName: \"\",\r\n UserLoginID: 0,\r\n SaveResultCode: FilterSaveResult.SuccessfullySaved,\r\n SaveResultText: \"\",\r\n Items: [],\r\n IsConsortium: false\r\n }\r\n return result;\r\n}\r\nexport function CreateEmptyPoolCriteriaItem(): PoolCriteriaItem {\r\n const result: PoolCriteriaItem = {\r\n FilterCriteriaID: 0,\r\n FilterCriteriaName: \"\",\r\n Name: \"\",\r\n Values: []\r\n }\r\n return result;\r\n}\r\nexport function FilterDataToPoolCriteria(poolId: number, filterData: FilterData, skipCompany: boolean = false): PoolCriteria {\r\n\r\n let result: PoolCriteria = CreateEmptyPoolCriteria(poolId);\r\n result.ImplementationID = filterData.ImplementationID;\r\n result.FilterModuleID = filterData.FilterModuleID\r\n result.FilterDataID = filterData.FilterDataID;\r\n result.SaveAs = filterData.Name;\r\n result.IsFilter = true;\r\n for (let i = 0; i < filterData.Items.length; i++) {\r\n const filterDataItem: FilterDataItem = filterData.Items[i];\r\n if (skipCompany && filterDataItem.FilterCriteriaID === FilterCriteriaCode.Company) {\r\n continue\r\n }\r\n const poolCriteriaItem: PoolCriteriaItem = FilterDataItemToPoolCriteriaItem(filterDataItem)\r\n result.Items.push(poolCriteriaItem)\r\n }\r\n return result;\r\n}\r\n\r\nexport function FilterDataItemToPoolCriteriaItem(filterDataItem: FilterDataItem): PoolCriteriaItem {\r\n let result: PoolCriteriaItem = CreateEmptyPoolCriteriaItem();\r\n result.FilterCriteriaID = filterDataItem.FilterCriteriaID;\r\n result.FilterCriteriaName = filterDataItem.FilterCriteriaName;\r\n result.Name = filterDataItem.Name;\r\n for (let i = 0; i < filterDataItem.Values.length; i++) {\r\n const filterDataValue: FilterDataValue = filterDataItem.Values[i];\r\n const poolCriteriaValue: PoolCriteriaValue = FilterDataValueToPoolCriteriaValue(filterDataValue);\r\n result.Values.push(poolCriteriaValue);\r\n }\r\n return result\r\n}\r\n\r\nexport function FilterDataValueToPoolCriteriaValue(src: FilterDataValue): PoolCriteriaValue {\r\n const result: PoolCriteriaValue = {\r\n ID: src.ID,\r\n IntValue: src.IntValue,\r\n StringValue: src.StringValue,\r\n StringValue2: \"\",\r\n StringValue3: \"\",\r\n BoolValue: src.BoolValue\r\n }\r\n return result\r\n}\r\n\r\nexport function CopyPoolCriteriaValue(src: PoolCriteriaValue):PoolCriteriaValue\r\n{\r\n const result: PoolCriteriaValue = {\r\n ID: src.ID,\r\n IntValue: src.IntValue,\r\n StringValue: src.StringValue,\r\n StringValue2: src.StringValue2 || \"\",\r\n StringValue3: src.StringValue3 || \"\",\r\n BoolValue: src.BoolValue\r\n }\r\n return result\r\n}\r\n\r\nexport function CopyPoolCriteriaValues(src: PoolCriteriaValue[]):PoolCriteriaValue[]\r\n{\r\n const result: PoolCriteriaValue[] = []\r\n for (let i = 0; i < src.length; i++) {\r\n const item = CopyPoolCriteriaValue(src[i])\r\n result.push(item)\r\n }\r\n return result\r\n}\r\nexport function CopyPoolCriteriaItem(src: PoolCriteriaItem): PoolCriteriaItem {\r\n const result: PoolCriteriaItem = CreateEmptyPoolCriteriaItem();\r\n result.FilterCriteriaID = src.FilterCriteriaID;\r\n result.FilterCriteriaName = src.FilterCriteriaName;\r\n result.Name = src.Name;\r\n result.Values = CopyPoolCriteriaValues(src.Values)\r\n return result\r\n}\r\nexport function CopyPoolCriteriaItems(src: PoolCriteriaItem[]): PoolCriteriaItem[] {\r\n const result: PoolCriteriaItem[] = []\r\n for (let i = 0; i < src.length; i++) {\r\n const item = CopyPoolCriteriaItem(src[i])\r\n result.push(item)\r\n }\r\n return result\r\n}\r\nexport function CopyPoolCriteria(src: PoolCriteria): PoolCriteria {\r\n const result: PoolCriteria = CreateEmptyPoolCriteria(src.PoolID);\r\n result.ImplementationID = src.ImplementationID;\r\n result.FilterModuleID = src.FilterModuleID;\r\n result.FilterDataID = src.FilterDataID;\r\n result.SaveAs = src.SaveAs;\r\n result.ForceOverride = src.ForceOverride;\r\n result.IsFilter = src.IsFilter;\r\n result.UserName = src.UserName;\r\n result.UserLoginID = src.UserLoginID;\r\n result.SaveResultCode = src.SaveResultCode;\r\n result.SaveResultText = src.SaveResultText;\r\n result.Items = CopyPoolCriteriaItems(src.Items)\r\n\r\n return result\r\n\r\n}\r\n\r\nexport interface GetPoolCriteriaParams {\r\n PoolID: number\r\n ImplementationID: number\r\n FilterModuleID: number\r\n UserName: string\r\n UserLoginID: number\r\n}\r\n\r\nexport interface GetSavedQueriesParams {\r\n ImplementationID: number\r\n FilterModuleID: number\r\n}\r\nexport interface GetSavedQueryParams {\r\n FilterDataID: number\r\n Name: string\r\n ImplementationID: number\r\n FilterModuleID: number\r\n UserName: string\r\n UserLoginID: number\r\n}\r\nexport interface DeleteSavedQueryParams {\r\n FilterDataID: number\r\n}\r\n\r\nexport function GetPoolCriteria(poolId: number): Observable {\r\n const params: string = JSON.stringify({\r\n PoolID: poolId,\r\n ImplementationID: 0,\r\n FilterModuleID: FilterDataModule.RandomModule,\r\n UserName: \"\",\r\n UserLoginID: 0\r\n })\r\n return ObservableFromFetch(\"RandomTest/GetPoolCriteria\", params)\r\n}\r\n\r\nexport function SavePoolCriteria(poolCriteria: PoolCriteria): Observable {\r\n const params: string = JSON.stringify(poolCriteria)\r\n return ObservableFromFetch(\"RandomTest/SavePoolCriteria\", params)\r\n}\r\n\r\nexport function GetSavedQueries(implementationID: number): Observable {\r\n const params: string = JSON.stringify({\r\n ImplementationID: implementationID,\r\n FilterModuleID: FilterDataModule.RandomModule\r\n })\r\n return ObservableFromFetch(\"RandomTest/GetSavedQueries\", params)\r\n}\r\n\r\nexport function GetSavedQuery(filterDataID: number, name: string): Observable {\r\n const params: string = JSON.stringify({\r\n FilterDataID: filterDataID,\r\n Name: name,\r\n ImplementationID: 0,\r\n FilterModuleID: FilterDataModule.RandomModule,\r\n UserName: \"\",\r\n UserLoginID: 0\r\n })\r\n return ObservableFromFetch(\"RandomTest/GetSavedQuery\", params)\r\n}\r\n\r\nexport function DeleteSavedQuery(filterDataID: number): Observable {\r\n const params: string = JSON.stringify({\r\n FilterDataID: filterDataID\r\n })\r\n return ObservableFromFetch(\"RandomTest/DeleteSavedQuery\", params)\r\n}\r\nexport function SaveQuery(poolCriteria: PoolCriteria): Observable {\r\n const params: string = JSON.stringify(poolCriteria)\r\n return ObservableFromFetch(\"RandomTest/SaveQuery\", params)\r\n}\r\nexport function SaveQueryAs(poolCriteria: PoolCriteria, name: string): Observable {\r\n poolCriteria.SaveAs = name;\r\n poolCriteria.ForceOverride = true;\r\n poolCriteria.FilterModuleID = FilterDataModule.RandomModule;\r\n const params: string = JSON.stringify(poolCriteria)\r\n return ObservableFromFetch(\"RandomTest/SaveQueryAs\", params)\r\n}\r\n","import * as React from \"react\"\r\nimport { Button, Spinner, Table } from \"react-bootstrap\"\r\nimport { format, parseISO } from \"date-fns\"\r\nimport { BehaviorSubject, concat, of, Subscription } from \"rxjs\"\r\nimport { distinctUntilChanged, switchMap, map } from \"rxjs/operators\"\r\nimport TablePagination from \"../../TablePagination\"\r\nimport PoolSelection from \"../../../api/Randoms/RandomsModel/PoolSelection\"\r\nimport PoolSelectionRow from \"../../../api/Randoms/RandomsModel/PoolSelectionRow\"\r\nimport RandomSelectionList from \"../RandomSelectionList\"\r\nimport PoolSelectionListGet from \"../../../api/Randoms/PoolSelectionListGet\"\r\nimport PoolSelectionActionButtons from \"./PoolSelectionActionButtons\"\r\n\r\ninterface PoolSelectionSearchParams {\r\n pageNumber: number\r\n poolId: number\r\n}\r\n\r\nconst PageSize = 5\r\n\r\ninterface TestingPeriodBreakdownGridProps {\r\n poolId: number\r\n poolName: string\r\n showRandomSelectionLink?: boolean\r\n companyId?: number\r\n}\r\n\r\ninterface TestingPeriodBreakdownGridState {\r\n loading: boolean\r\n data?: PoolSelection\r\n selectionListModal: boolean\r\n poolSelection?: PoolSelectionRow\r\n}\r\n\r\nexport default class TestingPeriodBreakdownGrid extends React.PureComponent {\r\n state: TestingPeriodBreakdownGridState = {\r\n loading: false,\r\n selectionListModal: false\r\n }\r\n\r\n page$ = new BehaviorSubject({\r\n pageNumber: 1,\r\n poolId: 10\r\n })\r\n\r\n pageSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.pageSubscription = this.page$.pipe(\r\n distinctUntilChanged(),\r\n switchMap(params => concat(\r\n of({ loading: true }),\r\n PoolSelectionListGet(this.props.poolId, params.pageNumber, PageSize, this.props.companyId).pipe(\r\n map((result: PoolSelection) => ({ data: result, loading: false })))\r\n ))\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: PoolSelection }) => {\r\n if (newState.data) {\r\n this.setState({ loading: newState.loading, data: newState.data })\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n },\r\n () => {\r\n this.setState({ loading: false })\r\n }\r\n )\r\n }\r\n\r\n componentDidUpdate(prevProps: TestingPeriodBreakdownGridProps, prevState: TestingPeriodBreakdownGridState) {\r\n if (prevProps.companyId !== this.props.companyId) {\r\n this.page$.next({ poolId: this.props.poolId, pageNumber: 1 })\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n }\r\n\r\n pageChanged = (pageNumber: number) => {\r\n this.page$.next({ ...this.page$.value, pageNumber: pageNumber })\r\n }\r\n\r\n convertDate = (date: string) => {\r\n if (date) {\r\n return format(parseISO(date), \"MM/dd/yyyy\")\r\n } else {\r\n return \"\"\r\n }\r\n }\r\n\r\n renderRows = () => {\r\n if (this.state.data && this.state.data.Records && this.state.data.Records.length) {\r\n return this.state.data.Records.map((row: PoolSelectionRow, i: number) =>\r\n \r\n \r\n {this.props.showRandomSelectionLink && }\r\n {!this.props.showRandomSelectionLink && row.Period}\r\n \r\n {row.PoolSize}\r\n {this.convertDate(row.SelectionDate)}\r\n {row.DrugSelected}\r\n {row.AlcoholSelected}\r\n {row.DrugExtra}\r\n {row.AlcoholExtra}\r\n {row.DrugCompleted}\r\n {row.AlcoholCompleted}\r\n {row.Status === 1 && \"Canceled\" }\r\n \r\n this.page$.next({ poolId: this.props.poolId, pageNumber: 1 })}\r\n />\r\n \r\n )\r\n } else {\r\n return NO DATA FOUND\r\n }\r\n }\r\n\r\n showSelectionList = (poolSelection: PoolSelectionRow) => this.setState({ selectionListModal: true, poolSelection: poolSelection })\r\n\r\n hideSelectionList = () => this.setState({ selectionListModal: false, poolSelection: undefined })\r\n\r\n render() {\r\n return <>\r\n
TESTING PERIOD BREAKDOWN
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.state.loading ?\r\n \r\n \r\n : this.renderRows()\r\n }\r\n \r\n
PERIODPOOL SIZESELECTION DATETESTS SELECTEDEXTRA TESTSTESTS COMPLETED
DRUGALCOHOLDRUGALCOHOLDRUGALCOHOLSTATUSACTION
\r\n \r\n
\r\n {this.state.data && }\r\n {\r\n this.state.selectionListModal && this.state.poolSelection &&\r\n \r\n }\r\n \r\n }\r\n}\r\n","import { \r\n ReportCertificationRenewalRoute,\r\n ReportCertificationStatusRoute,\r\n ReportManagementSummaryRoute,\r\n ReportMISRoute,\r\n ReportSelectedNotTestedRoute,\r\n ReportSummaryRoute,\r\n} from \"../../config/Routes\"\r\nimport GridResponse from \"../GridResponse\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport enum WorkforceReportType {\r\n CertificationRenewal = 42,\r\n CertificationStatus = 41,\r\n ManagementSummary = 2,\r\n MIS = -37,\r\n SelectedNotTested = 6,\r\n Summary = -45,\r\n}\r\n\r\nconst Reports = [\r\n ReportCertificationRenewalRoute,\r\n ReportCertificationStatusRoute,\r\n ReportManagementSummaryRoute,\r\n ReportMISRoute,\r\n ReportSelectedNotTestedRoute,\r\n ReportSummaryRoute,\r\n] as const\r\nexport type Report = typeof Reports[number]\r\nexport type WorkforceReportRecord = {\r\n type: WorkforceReportType\r\n title: string\r\n}\r\nexport type WorkforceReport = Record\r\n\r\nexport default function getWorkforceReport(report: Report) {\r\n const WorkforceReports: WorkforceReport = {\r\n [ReportCertificationRenewalRoute]: { type: WorkforceReportType.CertificationRenewal, title: \"Driver Certification Renewal Report\" },\r\n [ReportCertificationStatusRoute]: { type: WorkforceReportType.CertificationStatus, title: \"Driver Certification Status Report\" },\r\n [ReportManagementSummaryRoute]: { type: WorkforceReportType.ManagementSummary, title: \"Management Summary Report\" },\r\n [ReportMISRoute]: { type: WorkforceReportType.MIS, title: \"MIS Report\" },\r\n [ReportSelectedNotTestedRoute]: { type: WorkforceReportType.SelectedNotTested, title: \"Selected Not Tested Report\" },\r\n [ReportSummaryRoute]: { type: WorkforceReportType.Summary, title: \"Summary Report\" },\r\n }\r\n return WorkforceReports[report]\r\n}\r\n\r\nexport function RegulatoryModesGet() {\r\n return ObservableFromFetch(\"report/GetRegulatoryList\")\r\n}\r\n\r\nexport function YearListGet() {\r\n return ObservableFromFetch(\"report/GetYearList\")\r\n}\r\n\r\nexport interface ManagementSummaryReport {\r\n AccountTypeID: number\r\n BreakByCompanies: boolean\r\n BreakByLocations: boolean\r\n ClientDetails: object\r\n Company: number[]\r\n DateFrom: string\r\n DateTo: string\r\n DateType: string\r\n IncludeAlcoholTests: boolean\r\n MasterAccount?: number | null\r\n ReportID: number\r\n}\r\n\r\nexport interface MISReport {\r\n AccountType: number\r\n AccountID: number\r\n DtFromDate: string\r\n DtToDate: string\r\n RegMode: string\r\n ReportMode: number\r\n Year: string\r\n Company:number[]\r\n}\r\n\r\nexport interface ExcusedReport {\r\n AccountID: number\r\n PoolID: number\r\n PoolName: string\r\n}\r\n\r\nexport interface AuditPoolReport {\r\n DateFrom: string\r\n DateTo: string\r\n AllDates: boolean\r\n PoolID: number\r\n PoolName: string\r\n}\r\n\r\nexport interface PositiveReport {\r\n DateFrom: string\r\n DateTo: string\r\n DateType: string\r\n CompanyIds: number[]\r\n PageNumber?: number\r\n PageSize?: number\r\n}\r\n\r\nexport interface PositiveReportRow {\r\n CompanyName: string\r\n LocationName: string\r\n TestDetailID: string\r\n TestEventID: string\r\n RegulatoryMode: string\r\n EmployeeCategory: string\r\n ReferenceID: string\r\n DonorID: string\r\n DonorFirstName: string\r\n DonorLastName: string\r\n TestType: string\r\n ResultCode: string\r\n ResultDescription: string\r\n DateCollected: string\r\n MROReportDate: string\r\n PositiveDrugList: string\r\n Reason: string\r\n Regulated: string\r\n}\r\n\r\nexport function ManagementSummaryReportGenerate(parameters: ManagementSummaryReport) {\r\n const requestBody = JSON.stringify(parameters)\r\n return ObservableFromFetch(\"WorkforceReport/ManagementSummaryReport\", requestBody)\r\n}\r\n\r\nexport function MISReportGenerate(parameters: MISReport) {\r\n const requestBody = JSON.stringify(parameters)\r\n return ObservableFromFetch(\"report/MISReport\", requestBody)\r\n}\r\n\r\nexport function ExcusedReportGenerate(parameters: ExcusedReport) {\r\n const requestBody = JSON.stringify(parameters)\r\n return ObservableFromFetch(\"WorkforceReport/ExcusedReport\", requestBody)\r\n}\r\n\r\nexport function AuditPoolReportGenerate(parameters: AuditPoolReport) {\r\n const requestBody = JSON.stringify(parameters)\r\n return ObservableFromFetch(\"WorkforceReport/AuditPoolReport\", requestBody)\r\n}\r\n\r\nexport interface SelectedNotTestedReportParameters {\r\n fromDate?: string\r\n toDate?: string\r\n accountID?: number\r\n poolID?: number\r\n personID?: number\r\n CompanyName: string\r\n LocationName: string\r\n PoolName: string\r\n DonorName: string\r\n OutputFormat:string\r\n}\r\n\r\nexport function SelectedNotTestedReportGenerate(parameters: SelectedNotTestedReportParameters) {\r\n const requestBody: string = JSON.stringify(parameters)\r\n\r\n return ObservableFromFetch(\"WorkforceReport/SelectedNotTestedReport\", requestBody)\r\n}\r\n\r\nexport function PositiveReportLoad(parameters: PositiveReport) {\r\n const requestBody = JSON.stringify(parameters)\r\n return ObservableFromFetch>(\"WorkforceReport/PositiveReport\", requestBody)\r\n}\r\n\r\nexport function PositiveReportExport(parameters: PositiveReport) {\r\n const requestBody = JSON.stringify(parameters)\r\n return ObservableFromFetch(\"WorkforceReport/ExportPositiveReport\", requestBody)\r\n}\r\n","export default function FormatData(data: string): Uint8Array {\r\n var byteCharacters = atob(data)\r\n var byteNumbers = new Array(byteCharacters.length)\r\n\r\n for (var k = 0; k < byteCharacters.length; k++) {\r\n byteNumbers[k] = byteCharacters.charCodeAt(k)\r\n }\r\n\r\n var byteArray = new Uint8Array(byteNumbers)\r\n return byteArray\r\n}","import FormatData from \"../formatters/FormatBase64\"\r\n\r\nexport default function printPdf(data: string) {\r\n const fileData = new Blob([FormatData(data)], { type: \"application/pdf\" })\r\n const fileURL = URL.createObjectURL(fileData)\r\n window.open(fileURL)\r\n}\r\nexport function showPdf(data: string) {\r\n const fileData = new Blob([FormatData(data)], { type: \"application/pdf\" })\r\n const fileURL = URL.createObjectURL(fileData)\r\n window.location.replace(fileURL)\r\n}\r\n","export default function FormatDate(date: Date | string | null | undefined, delimiter: string = \"/\"): string {\r\n if (date) {\r\n if (typeof date === \"string\") {\r\n if (!isNaN(Date.parse(date))) {\r\n date = new Date(date)\r\n }\r\n }\r\n if (date instanceof Date) {\r\n return [\r\n (\"0\" + (date.getMonth() + 1)).slice(-2),\r\n (\"0\" + (date.getDate())).slice(-2),\r\n date.getFullYear(),\r\n ].join(delimiter)\r\n }\r\n }\r\n return \"\"\r\n}\r\n\r\nexport function FormatDateAsLong(date: Date | string): string {\r\n if (date) {\r\n if (typeof date === \"string\") {\r\n if (!isNaN(Date.parse(date))) {\r\n date = new Date(date)\r\n }\r\n }\r\n if (date instanceof Date) {\r\n return date.toLocaleDateString(\"en-US\", { year: 'numeric', month: 'long', day: 'numeric' })\r\n }\r\n }\r\n return \"\"\r\n}\r\n\r\nexport function FormatShortDate(date: Date | string, suppressCurrentYear = false): string {\r\n if (date) {\r\n if (typeof date === \"string\") {\r\n if (!isNaN(Date.parse(date))) {\r\n date = new Date(date)\r\n }\r\n }\r\n if (date instanceof Date) {\r\n if (suppressCurrentYear && date.getFullYear() == new Date().getFullYear()) {\r\n return date.toLocaleDateString(\"en-US\", { year: undefined, month: 'short', day: 'numeric' })\r\n } else {\r\n return date.toLocaleDateString(\"en-US\", { year: 'numeric', month: 'numeric', day: 'numeric' })\r\n }\r\n }\r\n }\r\n return \"\"\r\n}\r\n","import React, {Component} from \"react\"\r\nimport { Form, InputGroup, Button } from \"react-bootstrap\"\r\nimport MaskedInput from \"react-maskedinput\"\r\nimport { FaCalendarAlt } from \"react-icons/fa\"\r\n\r\ninterface BirthdayInputProps {\r\n required?: boolean\r\n isInvalid?: boolean\r\n placeholder?: string\r\n value?: string\r\n onClick?: () => void\r\n onChange?: () => void\r\n}\r\n\r\nexport class BirthdayInput extends Component {\r\n render() {\r\n return (\r\n \r\n {}}\r\n isInvalid={this.props.isInvalid || (this.props.required && !this.props.value)}\r\n as={MaskedInput}\r\n />\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { Form, Col } from \"react-bootstrap\"\r\nimport DatePicker from \"react-datepicker\"\r\nimport { BirthdayInput } from \"../FormattedInputs/BirthdayInput\"\r\n\r\ninterface FromToDatesProps {\r\n from?: Date\r\n to?: Date\r\n minDate?: Date\r\n disabled?: boolean\r\n onChangeFrom: (date: Date) => void\r\n onChangeTo: (date: Date) => void\r\n}\r\n\r\ninterface FromToDatesState {\r\n from?: Date\r\n to?: Date\r\n}\r\n\r\nexport default class FromToDates extends React.PureComponent {\r\n state: FromToDatesState = { }\r\n\r\n onFromSelect = (date: Date) => this.props.onChangeFrom(date)\r\n onToSelect = (date: Date) => this.props.onChangeTo(date)\r\n\r\n componentDidUpdate(prevProps: FromToDatesProps) {\r\n if (prevProps.from !== this.props.from || prevProps.to !== this.props.to) {\r\n this.setState({ from: this.props.from, to: this.props.to })\r\n }\r\n }\r\n\r\n render() {\r\n const { from, to } = this.state\r\n const { disabled } = this.props\r\n\r\n return (
\r\n \r\n From\r\n \r\n this.onFromSelect(date as Date)}\r\n customInput={}\r\n />\r\n \r\n \r\n \r\n To\r\n \r\n this.onToSelect(date as Date)}\r\n customInput={}\r\n />\r\n \r\n \r\n
)\r\n }\r\n}","import { useState } from \"react\"\r\n\r\nimport { Button, Col, Form, Modal, Row } from \"react-bootstrap\"\r\nimport { FaSync } from \"react-icons/fa\"\r\n\r\nimport { AuditPoolReportGenerate } from \"../../../api/Reports/WorkforceReport\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\nimport handleAPIError from \"../../../utils/handleAPIError\"\r\nimport printPdf from \"../../../utils/printPdf\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport FromToDates from \"../../Reports/FromToDates\"\r\n\r\ninterface AuditPoolModalProps {\r\n poolID: number\r\n poolName: string\r\n onClose: () => void\r\n}\r\n\r\nconst AuditPoolModal = (props: AuditPoolModalProps) => {\r\n const { onClose, poolID, poolName } = props\r\n const [generating, setGenerating] = useState(false)\r\n const [from, setFrom] = useState()\r\n const [to, setTo] = useState()\r\n const [includeAllDates, setIncludeAllDates] = useState(false)\r\n\r\n const handleCancelClick = () => onClose()\r\n const handleClearClick = () => {\r\n setFrom(undefined)\r\n setTo(undefined)\r\n }\r\n\r\n const getReportParams = () => ({\r\n DateFrom: FormatDate(from),\r\n DateTo: FormatDate(to),\r\n AllDates: includeAllDates,\r\n PoolID: poolID,\r\n PoolName: poolName,\r\n })\r\n\r\n const checkAllDates = (checked: boolean) => {\r\n setIncludeAllDates(checked)\r\n setFrom(undefined)\r\n setTo(undefined)\r\n }\r\n\r\n const handleGenerateCsvClick = () => {\r\n setGenerating(true)\r\n AuditPoolReportGenerate(getReportParams()).subscribe(\r\n (base64pdf: string) => {\r\n setGenerating(false)\r\n printPdf(base64pdf)\r\n },\r\n (error) => handleAPIError(error, () => setGenerating(false))\r\n )\r\n }\r\n\r\n const isParamsValid = () => includeAllDates || (!!from && !!to)\r\n\r\n return (\r\n handleCancelClick()}>\r\n \r\n EXPORT CSV OPTIONS:\r\n \r\n \r\n
\r\n \r\n \r\n Include All Dates\r\n \r\n \r\n checkAllDates(e.target.checked)}\r\n />\r\n \r\n \r\n {!includeAllDates && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Export\r\n \r\n \r\n
\r\n )\r\n}\r\nexport default AuditPoolModal\r\n","import * as React from \"react\"\r\nimport { Container, Row, Col, Spinner, Form, Button } from \"react-bootstrap\"\r\nimport { defaults, HorizontalBar } from \"react-chartjs-2\"\r\nimport \"chartjs-plugin-datalabels\"\r\nimport { ChartData, ChartOptions } from \"chart.js\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { catchError, map, switchMap } from \"rxjs/operators\"\r\nimport PoolStatisticsDetailsGet from \"../../../api/Randoms/PoolStatisticsDetailsGet\"\r\nimport PoolStatisticsDetails from \"../../../api/Randoms/RandomsModel/PoolStatisticsDetails\"\r\nimport TestingPeriodBreakdownGrid from \"./TestingPeriodBreakdownGrid\"\r\nimport PoolCriteria, { GetCompanyPoolCriteriaItem, GetPoolCriteria } from \"../../../api/Randoms/RandomsModel/PoolCriteria\"\r\nimport { ExcusedReport, ExcusedReportGenerate } from \"../../../api/Reports/WorkforceReport\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport { toast } from \"react-toastify\"\r\nimport printPdf from \"../../../utils/printPdf\"\r\nimport AuditPoolModal from \"./AuditPoolModal\"\r\n\r\ninterface PoolStatisticsProps {\r\n poolId: number\r\n poolName: string\r\n isConsortium: boolean\r\n currentCompany: number\r\n allowExcusedReport: boolean\r\n allowAuditReport: boolean\r\n}\r\n\r\ninterface PoolStatisticsState {\r\n statisticsLoading: boolean\r\n criteriaLoading: boolean\r\n statistics?: PoolStatisticsDetails\r\n poolCriteria?: PoolCriteria\r\n companies: {ID: number, Name: string, CompanyName: string, CompanyCode: string}[]\r\n selectedCompany: number,\r\n showAuditPoolOptions: boolean,\r\n}\r\n\r\nconst options: ChartOptions = {\r\n maintainAspectRatio: false,\r\n layout: {\r\n padding: {\r\n right: 50\r\n }\r\n },\r\n legend: {\r\n position: 'bottom',\r\n labels: {\r\n usePointStyle: true,\r\n boxWidth: 10,\r\n fontSize: 16\r\n }\r\n },\r\n plugins: {\r\n datalabels: {\r\n color: '#000',\r\n display: true\r\n }\r\n },\r\n scales: {\r\n yAxes: [{ ticks: { fontSize: 16 } }],\r\n xAxes: [{ ticks: { min: 0 } }]\r\n }\r\n}\r\n\r\ndefaults.global.defaultFontFamily = '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"'\r\ndefaults.global.defaultFontColor = '#212529'\r\n\r\nexport default class PoolStatistics extends React.PureComponent {\r\n state: PoolStatisticsState = {\r\n statisticsLoading: false,\r\n criteriaLoading: false,\r\n companies: [],\r\n selectedCompany: this.props.currentCompany,\r\n showAuditPoolOptions: false,\r\n }\r\n\r\n subscriptions = new Subscription()\r\n company$ = new Subject()\r\n\r\n componentDidMount() {\r\n this.subscriptions.add(this.company$.pipe(\r\n switchMap(company => concat(\r\n of({ statisticsLoading: true }),\r\n PoolStatisticsDetailsGet(this.props.poolId, company).pipe(\r\n map(result => ({ statisticsLoading: false, result: result })),\r\n catchError(() => of({ statisticsLoading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (data: { statisticsLoading: boolean, result?: PoolStatisticsDetails }) => {\r\n this.setState({\r\n statisticsLoading: data.statisticsLoading,\r\n statistics: data.result\r\n })\r\n }))\r\n\r\n if (this.props.isConsortium) {\r\n this.setState({ criteriaLoading: true })\r\n this.subscriptions.add(GetPoolCriteria(this.props.poolId).subscribe(\r\n (data: PoolCriteria) => {\r\n const companyItem = GetCompanyPoolCriteriaItem(data)\r\n const companies = companyItem.Values.map(value => {return {ID: value.IntValue, Name: value.StringValue, CompanyName: value.StringValue2 || \"\", CompanyCode: value.StringValue3 || \"\"}})\r\n this.setState({ poolCriteria: data, companies: companies, criteriaLoading: false })\r\n },\r\n () => this.setState({ criteriaLoading: false })\r\n )\r\n )\r\n }\r\n\r\n this.setState({ statisticsLoading: true })\r\n this.company$.next(this.props.currentCompany)\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions && this.subscriptions.unsubscribe()\r\n }\r\n\r\n onCompanySelect = (event: React.ChangeEvent) => {\r\n const accountID = Number(event.target.value)\r\n this.setState({selectedCompany: accountID})\r\n this.company$.next(accountID)\r\n }\r\n\r\n runExcusedReport = () => {\r\n const params: ExcusedReport = {\r\n AccountID: this.state.selectedCompany,\r\n PoolID: this.props.poolId,\r\n PoolName: this.props.poolName\r\n }\r\n\r\n this.subscriptions.add(\r\n ExcusedReportGenerate(params).subscribe(\r\n (base64pdf: string) => printPdf(base64pdf),\r\n (error) => toast.error(FormatError(error))\r\n )\r\n )\r\n }\r\n\r\n render() {\r\n const { statistics, selectedCompany, companies, showAuditPoolOptions } = this.state\r\n\r\n let labels = ['ESTIMATED TESTS REQUIRED', 'TOTAL TESTS COMPLETED', 'TOTAL TESTS PENDING COLLECTION'];\r\n let dataDrug = [statistics?.TotalTestsRequiredDrug, statistics?.TotalTestsCompletedDrug, statistics?.TotalTestsPendingDrug]\r\n let dataAlco = [statistics?.TotalTestsRequiredAlcohol, statistics?.TotalTestsCompletedAlcohol, statistics?.TotalTestsPendingAlcohol]\r\n if (selectedCompany > 0) {\r\n labels = labels.slice(1,3)\r\n dataDrug = dataDrug.slice(1,3)\r\n dataAlco = dataAlco.slice(1,3)\r\n }\r\n const data: ChartData = {\r\n labels: labels,\r\n datasets: [\r\n {\r\n label: 'DRUG',\r\n backgroundColor: '#F7911E',\r\n borderColor: '#F7911E',\r\n borderWidth: 0,\r\n data: dataDrug,\r\n datalabels: {\r\n align: 'end',\r\n anchor: 'end',\r\n },\r\n barPercentage: 1.0,\r\n categoryPercentage: 0.9\r\n },\r\n {\r\n label: 'ALCOHOL',\r\n backgroundColor: '#5C5C5C',\r\n borderColor: '#5C5C5C',\r\n borderWidth: 0,\r\n data: dataAlco,\r\n datalabels: {\r\n align: 'end',\r\n anchor: 'end',\r\n },\r\n barPercentage: 1.0,\r\n categoryPercentage: 0.9\r\n }\r\n ]\r\n }\r\n\r\n return <>\r\n \r\n {this.props.allowExcusedReport && !this.state.criteriaLoading && \r\n {!!this.props.isConsortium && this.props.currentCompany == 0 && companies.length > 0 && \r\n ) => this.onCompanySelect(e)}>\r\n \r\n {this.state.companies.map(item => )}\r\n \r\n }\r\n \r\n \r\n \r\n }\r\n {showAuditPoolOptions && this.setState({showAuditPoolOptions: false})} poolID={this.props.poolId} poolName={this.props.poolName}/>}\r\n {this.props.allowAuditReport && \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
TESTING TOTALS
\r\n \r\n \r\n \r\n \r\n CURRENT POOL\r\n {statistics?.CurrentPoolSize}\r\n \r\n \r\n \r\n \r\n DRUG TEST PROGRAM TARGET\r\n {statistics?.TargetDrug}{statistics?.RateOrFixed === 1 && %}\r\n \r\n \r\n \r\n \r\n ALCOHOL TEST PROGRAM TARGET\r\n {statistics?.TargetAlcohol}{statistics?.RateOrFixed === 1 && %}\r\n \r\n \r\n \r\n \r\n \r\n \r\n AVERAGE POOL SIZE\r\n {statistics?.AveragePoolSize}\r\n \r\n \r\n \r\n \r\n DRUG TEST PROGRAM ACTUAL\r\n {statistics?.TotalTestsCompletedDrug}{statistics?.RateOrFixed === 1 && %}\r\n \r\n \r\n \r\n \r\n ALCOHOL TEST PROGRAM ACTUAL\r\n {statistics?.TotalTestsCompletedAlcohol}{statistics?.RateOrFixed === 1 && %}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {this.state.statisticsLoading && }\r\n {this.state.statistics &&\r\n \r\n \r\n \r\n \r\n }\r\n
\r\n \r\n }\r\n}\r\n","import { Observable } from \"rxjs\";\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\ninterface PoolCloseProgramYearSaveOptions {\r\n PoolID: number\r\n SelectionInterval?: string\r\n AlcoholTarget?: number\r\n DrugTarget?: number\r\n PanelID: number\r\n ProviderMappingID: number\r\n DateFrom: string\r\n DateTo: string\r\n}\r\n\r\nexport default function CloseProgramIntervalObservable(data: PoolCloseProgramYearSaveOptions): Observable {\r\n const params: string = JSON.stringify(data)\r\n return ObservableFromFetch(\"FFOrderPoolDefinition/CloseProgramInterval\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport PoolGeneralInfo, { Pool } from \"./RandomsModel/PoolData\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport interface MissedPeriodsData {\r\n PoolProgramID: number\r\n MakeUp: number\r\n TotalCompletedDrug: number\r\n TotalCompletedAlcohol: number\r\n AveragePoolSize: number\r\n}\r\n\r\nexport default function PoolGeneralInfoGetObservable(poolId: number): Observable {\r\n const requestBody: string = new URLSearchParams({\r\n poolId: poolId.toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"RandomTest/GetPoolGeneralInformation?\" + requestBody)\r\n}\r\n\r\nexport function SetMissingPeriods(data: MissedPeriodsData) {\r\n const requestBody: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"RandomTest/SetMissingPeriodTest\", requestBody)\r\n}\r\n\r\nexport function PoolsGetObservable() {\r\n return ObservableFromFetch(\"WorkforceRandomTest/GetPools\")\r\n}\r\n","import * as React from \"react\"\r\nimport { Col, Spinner, Button, Image, Form, InputGroup } from \"react-bootstrap\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { filter, map, switchMap } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { FaAngleDown, FaPencilAlt, FaTimes } from \"react-icons/fa\"\r\nimport PoolData from \"../../../api/Randoms/RandomsModel/PoolData\"\r\nimport { PoolUpdateObservable } from \"../../../api/Randoms/PoolSave\"\r\nimport CloseProgramIntervalObservable from \"../../../api/Randoms/CloseProgramInterval\"\r\nimport LabServiceRegulatoryModesGetObservable from \"../../../api/LabService/LabServiceRegulatoryModesGet\"\r\nimport RegulatoryMode from \"../../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport SelectionIntervalsGetObservable from \"../../../api/Randoms/SelectionIntervalsGet\"\r\nimport LabAccount from \"../../../api/Randoms/RandomsModel/LabAccount\"\r\nimport LabAccountListGetObservable from \"../../../api/Randoms/LabAccountsGet\"\r\nimport LabPanel from \"../../../api/Randoms/RandomsModel/LabPanel\"\r\nimport LabPanelsGetObservable from \"../../../api/Randoms/LabPanelsGet\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport ConfirmationModal from \"../../ConfirmationModal\"\r\nimport DatePicker from \"react-datepicker\"\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport { format, parseISO } from \"date-fns\"\r\nimport PrimaryIDType from \"../../../api/PrimaryIDTypes/PrimaryIDType\"\r\nimport { PoolPrimaryIDTypesGetObservable } from \"../../../api/PrimaryIDTypes/PrimaryIDTypesGet\"\r\nimport { IsOnTrack } from \"../../../App\";\r\nimport MissedPeriodsModal from \"./MissedPeriodsModal\"\r\nimport Checkbox from \"../../Checkbox\"\r\nimport LoadingIndicatorWrapper from \"../../LoadingIndicatorWrapper\"\r\n\r\nexport enum PoolVariant {\r\n CloseProgramYear\r\n}\r\n\r\ninterface PoolGeneralInfoProps {\r\n poolId: number\r\n variant?: PoolVariant\r\n edit?: boolean\r\n poolData?: PoolData\r\n onPoolUpdate: () => void\r\n isConsortium?: boolean\r\n isPortalAdmin?: boolean\r\n}\r\n\r\ninterface PoolGeneralInfoEditValidity {\r\n isPoolNameValid: boolean\r\n isFederallyRegulatedValid: boolean\r\n isRegulatoryModeValid: boolean\r\n isSelectionIntervalValid: boolean\r\n isCalcTypeValid: boolean\r\n isDrugSampleSizeValid: boolean\r\n isAlcoholSampleSizeValid: boolean\r\n isLabAccountValid: boolean\r\n isLabPanelValid: boolean\r\n isPoolMembershipTypeValid: boolean\r\n isPrimaryIDTypeValid: boolean\r\n isPanelCodeValid: boolean\r\n}\r\n\r\ninterface PoolGeneralInfoState extends PoolGeneralInfoEditValidity {\r\n data?: PoolData\r\n editData?: PoolData\r\n selectedCalcType?: CalcType\r\n selectedLabAccount?: LabAccount\r\n selectedLabPanel?: LabPanel\r\n editing: boolean\r\n saving: boolean\r\n showSaveConfirmModal: boolean\r\n regulatoryModesLoading: boolean\r\n selectionIntervalsLoading: boolean\r\n poolLoading: boolean\r\n labAccountsLoading: boolean\r\n labPanelsLoading: boolean\r\n regulatoryModes?: RegulatoryMode[]\r\n selectionIntervals?: string[]\r\n labAccounts?: LabAccount[]\r\n labPanels?: LabPanel[]\r\n availableLabPanels?: LabPanel[]\r\n startInEditMode: boolean\r\n primaryIDTypesLoading: boolean\r\n primaryIDTypes?: PrimaryIDType[]\r\n showMissingModal: boolean\r\n panelCode: string\r\n selectedRegulatoryModes: RegulatoryMode[]\r\n availableToSelectRegModes: RegulatoryMode[]\r\n}\r\n\r\nconst calcTypePercentage = \"Program Percentage\"\r\nconst calcTypeFixed = \"Program Fixed\"\r\n\r\nconst poolMembershipTypeFileImport = \"File Import\"\r\nconst poolMembershipTypeCriteria = \"Criteria\"\r\n\r\nconst yes = \"Yes\"\r\nconst no = \"No\"\r\n\r\ninterface CalcType { Name: string, Code: string, ShortCode: string }\r\nconst calcTypes: CalcType[] = [\r\n { Name: \"Annual Percentage\", Code: calcTypePercentage, ShortCode: \"Rate\" },\r\n { Name: \"Fixed Number of Selections for Program Year\", Code: calcTypeFixed, ShortCode: \"Fixed\" }\r\n]\r\n\r\nexport default class PoolGeneralInfo extends React.PureComponent {\r\n positiveValidity: PoolGeneralInfoEditValidity = {\r\n isPoolNameValid: true,\r\n isFederallyRegulatedValid: true,\r\n isRegulatoryModeValid: true,\r\n isSelectionIntervalValid: true,\r\n isCalcTypeValid: true,\r\n isDrugSampleSizeValid: true,\r\n isAlcoholSampleSizeValid: true,\r\n isLabAccountValid: true,\r\n isLabPanelValid: true,\r\n isPoolMembershipTypeValid: true,\r\n isPrimaryIDTypeValid: true,\r\n isPanelCodeValid: true\r\n }\r\n state: PoolGeneralInfoState = {\r\n ...this.positiveValidity,\r\n editing: !!this.props.edit,\r\n saving: false,\r\n showSaveConfirmModal: false,\r\n regulatoryModesLoading: false,\r\n selectionIntervalsLoading: false,\r\n poolLoading: false,\r\n labAccountsLoading: false,\r\n labPanelsLoading: false,\r\n startInEditMode: this.props.variant === PoolVariant.CloseProgramYear,\r\n primaryIDTypesLoading: false,\r\n showMissingModal: false,\r\n panelCode: \"\",\r\n selectedRegulatoryModes: [],\r\n availableToSelectRegModes: []\r\n\r\n }\r\n\r\n regulatoryModeTypeahead = React.createRef>()\r\n federallyRegulatedTypeahead = React.createRef>()\r\n selectionIntervalTypeahead = React.createRef>()\r\n calcTypeTypeahead = React.createRef>()\r\n labAccountTypeahead = React.createRef>()\r\n panelTypeahead = React.createRef>()\r\n poolMembershipTypeTypeahead = React.createRef>()\r\n\r\n labAccount$ = new Subject()\r\n labAccountSubscription?: Subscription\r\n regulatoryModesSubscription?: Subscription\r\n selectionIntervalsSubscription?: Subscription\r\n labAccountsSubscription?: Subscription\r\n updateSubscription?: Subscription\r\n closeProgramIntervalSubscription?: Subscription\r\n primaryIDTypesSubscription?: Subscription\r\n subscriptions = new Subscription()\r\n\r\n componentDidMount() {\r\n this.loadPoolData(true)\r\n if (this.props.poolData) {\r\n if (this.props.poolData.DOT || this.props.poolData.RegulatoryModes.length > 0) {\r\n this.loadRegulatoryModes()\r\n }\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.labAccountSubscription && this.labAccountSubscription.unsubscribe()\r\n this.regulatoryModesSubscription && this.regulatoryModesSubscription.unsubscribe()\r\n this.selectionIntervalsSubscription && this.selectionIntervalsSubscription.unsubscribe()\r\n this.labAccountsSubscription && this.labAccountsSubscription.unsubscribe()\r\n this.updateSubscription && this.updateSubscription.unsubscribe()\r\n this.closeProgramIntervalSubscription && this.closeProgramIntervalSubscription.unsubscribe()\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n loadPoolData = (initial: boolean = false) => {\r\n if (!initial) this.props.onPoolUpdate()\r\n const { startInEditMode } = this.state\r\n this.setState({ data: this.props.poolData, editData: undefined, editing: false, startInEditMode: false })\r\n startInEditMode && this.handleToggleEditMode()\r\n }\r\n\r\n loadRegulatoryModes = () => {\r\n if (!this.state.regulatoryModes) {\r\n let dt = this.state.data\r\n if (!dt) {\r\n dt = this.props.poolData\r\n }\r\n this.setState({ regulatoryModesLoading: true })\r\n this.regulatoryModesSubscription && this.regulatoryModesSubscription.unsubscribe()\r\n this.regulatoryModesSubscription = LabServiceRegulatoryModesGetObservable(true).subscribe(\r\n (data: RegulatoryMode[]) => {\r\n const selectedRegulatoryModes = data.filter(rm => rm.RegulatoryModeID === dt?.RegulatoryModeID || dt?.RegulatoryModes.includes(rm.RegulatoryModeID))\r\n const availableToSelectRegModes = data.filter(rm => !selectedRegulatoryModes.includes(rm))\r\n this.setState({\r\n regulatoryModes: data,\r\n regulatoryModesLoading: false,\r\n availableToSelectRegModes: availableToSelectRegModes,\r\n selectedRegulatoryModes: selectedRegulatoryModes\r\n })\r\n },\r\n () => this.setState({ regulatoryModesLoading: false })\r\n )\r\n }\r\n }\r\n\r\n loadSelectionIntervals = () => {\r\n if (!this.state.selectionIntervals) {\r\n this.setState({ selectionIntervalsLoading: true })\r\n this.selectionIntervalsSubscription && this.selectionIntervalsSubscription.unsubscribe()\r\n this.selectionIntervalsSubscription = SelectionIntervalsGetObservable().subscribe(\r\n (data: string[]) => this.setState({ selectionIntervals: data, selectionIntervalsLoading: false }),\r\n () => this.setState({ selectionIntervalsLoading: false })\r\n )\r\n }\r\n }\r\n\r\n createPanelsSubscription = () => {\r\n const link = sessionStorage.getItem(\"company-selection-link\") || \"\"\r\n if (!this.labAccountSubscription) {\r\n this.labAccountSubscription = this.labAccount$.pipe(\r\n filter(labAccount => labAccount !== undefined),\r\n switchMap((labAccount: LabAccount) => concat(\r\n of({ panelsLoading: true }),\r\n LabPanelsGetObservable(link, labAccount.LabAccount, labAccount.LabClientMemberId).pipe(\r\n map((data) => ({ panelsLoading: false, items: data }))\r\n )))\r\n ).subscribe(\r\n (data: { panelsLoading: boolean, items?: LabPanel[] }) => this.setState(prevState => {\r\n return {\r\n labPanelsLoading: data.panelsLoading,\r\n labPanels: data.items,\r\n availableLabPanels: data.items ? data.items.filter(((labPanel: LabPanel) => labPanel.DOT === prevState.editData?.DOT)) : undefined,\r\n selectedLabPanel: data.items ? data.items.find(item => item.PanelID === prevState.editData?.PanelID) : undefined\r\n }\r\n }),\r\n () => this.setState({ labPanelsLoading: false })\r\n )\r\n }\r\n }\r\n\r\n loadLabAccounts = () => {\r\n const link = sessionStorage.getItem(\"company-selection-link\") || \"\"\r\n if (!this.state.labAccounts) {\r\n this.setState({ labAccountsLoading: true })\r\n this.labAccountsSubscription && this.labAccountsSubscription.unsubscribe()\r\n this.labAccountsSubscription = LabAccountListGetObservable(link).subscribe(\r\n (data: LabAccount[]) => {\r\n const selectedLabAccount = data.find(item => item.LabAccount === this.state.editData?.LabAccountNumber)\r\n this.setState({\r\n labAccounts: data,\r\n labAccountsLoading: false,\r\n selectedLabAccount: selectedLabAccount\r\n })\r\n this.labAccount$.next(selectedLabAccount)\r\n },\r\n () => this.setState({ labAccountsLoading: false })\r\n )\r\n }\r\n }\r\n loadPrimaryIDTypes = () => {\r\n if (!this.state.primaryIDTypes) {\r\n this.setState({ primaryIDTypesLoading: true })\r\n this.primaryIDTypesSubscription && this.primaryIDTypesSubscription.unsubscribe()\r\n this.primaryIDTypesSubscription = PoolPrimaryIDTypesGetObservable().subscribe(\r\n (data: PrimaryIDType[]) => this.setState({ primaryIDTypes: data, primaryIDTypesLoading: false }),\r\n () => this.setState({ primaryIDTypesLoading: false })\r\n )\r\n }\r\n }\r\n\r\n handleToggleEditMode = () => {\r\n if (this.state.editing) {\r\n const selectedRegulatoryModes = this.state.regulatoryModes?.filter(rm => rm.RegulatoryModeID === this.state.data?.RegulatoryModeID || this.state.data?.RegulatoryModes.includes(rm.RegulatoryModeID))\r\n const availableToSelectRegModes = this.state.regulatoryModes?.filter(rm => !selectedRegulatoryModes?.includes(rm))\r\n this.setState({\r\n ...this.positiveValidity,\r\n editing: false,\r\n editData: undefined,\r\n selectedCalcType: undefined,\r\n selectedLabAccount: undefined,\r\n selectedLabPanel: undefined,\r\n selectedRegulatoryModes: selectedRegulatoryModes || [],\r\n availableToSelectRegModes: availableToSelectRegModes || [],\r\n })\r\n } else {\r\n const selectedLabAccount = this.state.labAccounts ? this.state.labAccounts.find(item => item.LabAccount === this.state.data?.LabAccountNumber) : undefined\r\n this.setState((prevState) => {\r\n return {\r\n editing: true,\r\n editData: prevState.data,\r\n selectedCalcType: calcTypes.find(item => item.Code === prevState.data?.FixedOrRate),\r\n selectedLabAccount: selectedLabAccount\r\n }\r\n })\r\n this.loadRegulatoryModes()\r\n this.loadSelectionIntervals()\r\n this.loadPrimaryIDTypes()\r\n this.createPanelsSubscription()\r\n this.loadLabAccounts()\r\n this.labAccount$.next(selectedLabAccount)\r\n }\r\n }\r\n\r\n handlePoolNameChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value\r\n this.state.editData && this.setState(prevState => {\r\n const editState = prevState.editData ? { ...prevState.editData, Name: value } : prevState.editData\r\n return { editData: editState, isPoolNameValid: value.length >= 8 }\r\n })\r\n }\r\n\r\n handlePanelCodeChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value\r\n this.state.editData && this.setState(prevState => {\r\n const editState = prevState.editData ? { ...prevState.editData, PanelCode: value } : prevState.editData\r\n return { editData: editState, isPanelCodeValid: value.length >= 2 }\r\n })\r\n }\r\n\r\n handleFederallyRegulatedChange = (items: string[]) => {\r\n let value: boolean | undefined\r\n switch (items[0]) {\r\n case yes: value = true; break\r\n case no: value = false; break\r\n }\r\n\r\n const availableLabPanels = this.state.labPanels ? this.state.labPanels.filter(((labPanel: LabPanel) => labPanel.DOT === value)) : undefined\r\n this.state.editData && this.setState(\r\n (prevState) => {\r\n const editData = prevState.editData ? { ...prevState.editData, DOT: value, RegulatoryMode: \"\" } : prevState.editData\r\n return {\r\n editData: editData,\r\n isFederallyRegulatedValid: value !== undefined,\r\n isRegulatoryModeValid: true,\r\n availableLabPanels: availableLabPanels,\r\n selectedLabPanel: undefined\r\n }\r\n })\r\n\r\n this.handleLabPanelChange([])\r\n }\r\n\r\n handleRegulatoryModeChange = (items: RegulatoryMode[]) => {\r\n const availableToSelectRegModes: RegulatoryMode[] = []\r\n const selectedRegModes: RegulatoryMode[] = items || []\r\n const availableRegModes: RegulatoryMode[] = this.state.regulatoryModes || []\r\n let regulatoryModeId = 0\r\n if (selectedRegModes.length > 0) {\r\n regulatoryModeId = selectedRegModes[0].RegulatoryModeID\r\n }\r\n for (let i = 0; i < availableRegModes.length; i++) {\r\n let is_selected = false;\r\n const availRegMode = availableRegModes[i]\r\n for (let j = 0; j < selectedRegModes.length; j++) {\r\n const selectedRegMode = selectedRegModes[j];\r\n if (availRegMode.RegulatoryModeID === selectedRegMode.RegulatoryModeID) {\r\n is_selected = true\r\n break\r\n }\r\n }\r\n if (is_selected) {\r\n continue\r\n }\r\n availableToSelectRegModes.push(availRegMode)\r\n }\r\n\r\n this.state.editData && this.setState(prevState => {\r\n const editData = prevState.editData ? {\r\n ...prevState.editData,\r\n RegulatoryMode: items[0]?.Name || \"\",\r\n RegulatoryModeID: items[0]?.RegulatoryModeID,\r\n RegulatoryModes: selectedRegModes.map(({ RegulatoryModeID }) => RegulatoryModeID),\r\n } : prevState.editData\r\n\r\n return {\r\n editData: editData,\r\n isRegulatoryModeValid: items[0] !== undefined,\r\n selectedRegulatoryModes: selectedRegModes,\r\n availableToSelectRegModes: availableToSelectRegModes,\r\n }\r\n })\r\n }\r\n\r\n handleSelectionIntervalChange = (items: string[]) => {\r\n this.state.editData && this.setState(prevState => {\r\n const editData = prevState.editData ? { ...prevState.editData, SelectionInterval: items[0] || \"\" } : prevState.editData\r\n return { editData: editData, isSelectionIntervalValid: items[0] !== undefined }\r\n })\r\n }\r\n\r\n handleCalcTypeChange = (items: CalcType[]) => {\r\n const calcTypeCode = items[0]?.Code || \"\"\r\n this.state.editData && this.setState(prevState => {\r\n const editData = prevState.editData ? {\r\n ...prevState.editData,\r\n FixedOrRate: calcTypeCode,\r\n DrugSampleSize: calcTypeCode === calcTypePercentage ? Math.min(100, prevState.editData?.DrugSampleSize || 0) : prevState.editData?.DrugSampleSize,\r\n AlcoholSampleSize: calcTypeCode === calcTypePercentage ? Math.min(100, prevState.editData?.AlcoholSampleSize || 0) : prevState.editData?.AlcoholSampleSize\r\n } : prevState.editData\r\n return {\r\n editData: editData,\r\n selectedCalcType: items[0],\r\n isCalcTypeValid: items[0] !== undefined\r\n }\r\n })\r\n }\r\n\r\n handleDateChange = (key: \"ProgramIntervalStartDate\" | \"ProgramIntervalEndDate\", date: Date | null) => {\r\n this.state.editData && this.setState(prevState => {\r\n const editData = prevState.editData ? { ...prevState.editData, [key]: date ? date.toISOString() : \"\" } : prevState.editData\r\n return {\r\n editData: editData\r\n }\r\n })\r\n }\r\n\r\n parsePoolSize = (value: string): number | undefined => {\r\n if (this.state.editData?.FixedOrRate === calcTypePercentage && /^(\\s*|100|0|[1-9]{1}\\d?)$/.test(value)) {\r\n return Number(value)\r\n }\r\n if (this.state.editData?.FixedOrRate === calcTypeFixed && /^(\\s*|0|[1-9]{1}\\d{0,18})$/.test(value)) {\r\n return Number(value)\r\n }\r\n return undefined\r\n }\r\n\r\n handleSampleSizeChangeChange = (what: keyof PoolData, validityField: keyof PoolGeneralInfoEditValidity, value: string) => {\r\n const numberValue = this.parsePoolSize(value)\r\n if (numberValue !== undefined) {\r\n this.state.editData && this.setState(prevState => {\r\n const editData = prevState.editData ? { ...prevState.editData, [what]: numberValue } : prevState.editData\r\n return { ...{}, editData: editData, [validityField]: numberValue >= 0 }\r\n })\r\n }\r\n }\r\n\r\n handleLabAccountChange = (items: LabAccount[]) => {\r\n this.state.editData && this.setState(prevState => {\r\n const editData = prevState.editData ? {\r\n ...prevState.editData,\r\n LabAccountNumber: items[0]?.LabAccount || \"\",\r\n Panel: \"\",\r\n PanelID: 0\r\n } : prevState.editData\r\n return {\r\n editData: editData,\r\n selectedLabAccount: items[0],\r\n selectedLabPanel: undefined,\r\n labPanels: undefined,\r\n isLabAccountValid: this.props.isConsortium || items[0] !== undefined\r\n }\r\n })\r\n this.labAccount$.next(items[0])\r\n }\r\n\r\n handleLabPanelChange = (items: LabPanel[]) => {\r\n this.state.editData && this.setState(prevState => {\r\n const editData = prevState.editData ? { ...prevState.editData, Panel: items[0]?.Description || \"\", PanelID: items[0]?.PanelID || 0 } : prevState.editData\r\n return {\r\n editData: editData,\r\n selectedLabPanel: items[0],\r\n isLabPanelValid: items[0] !== undefined\r\n }\r\n })\r\n }\r\n\r\n handlePoolMembershipTypeChange = (items: string[]) => {\r\n let value: boolean | undefined\r\n switch (items[0]) {\r\n case poolMembershipTypeFileImport: value = true; break\r\n case poolMembershipTypeCriteria: value = false; break\r\n }\r\n this.state.editData && this.setState(prevState => {\r\n const editData = prevState.editData ? { ...prevState.editData, UseFileImportForPoolMembership: value } : prevState.editData\r\n return {\r\n editData: editData,\r\n isPoolMembershipTypeValid: value !== undefined\r\n }\r\n })\r\n }\r\n\r\n handleNoSelectionChange = () => {\r\n this.state.editData && this.setState(prevState => {\r\n const editData = prevState.editData ? { ...prevState.editData, IncludeCompaniesWithNoSelections: !prevState.editData?.IncludeCompaniesWithNoSelections } : prevState.editData\r\n return {\r\n editData: editData\r\n }\r\n })\r\n }\r\n\r\n handlePrimaryIDTypeChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value || \"\"\r\n const items: PrimaryIDType[] = this.state.primaryIDTypes || []\r\n const ind = items.findIndex(item => item.PrimaryIDType === value);\r\n this.state.editData && this.setState(prevState => {\r\n const editState = prevState.editData ? { ...prevState.editData, PrimaryIDType: value } : prevState.editData\r\n return { editData: editState, isPrimaryIDTypeValid: ind >= 0 }\r\n })\r\n }\r\n handleRunOnlyByCompanyAdminChange = (event: React.ChangeEvent) => {\r\n if (!this.state.editData?.RunOnlyByPortalAdmin) {\r\n return\r\n }\r\n const checked = event.target.checked\r\n if (!checked) {\r\n return\r\n }\r\n this.state.editData && this.setState(prevState => {\r\n const editData = prevState.editData ? { ...prevState.editData, RunOnlyByPortalAdmin: !checked } : prevState.editData\r\n return {\r\n editData: editData\r\n }\r\n })\r\n }\r\n\r\n handleRunOnlyByPortalAdminChange = (event: React.ChangeEvent) => {\r\n if (this.state.editData?.RunOnlyByPortalAdmin) {\r\n return\r\n }\r\n const checked = event.target.checked\r\n if (!checked) {\r\n return\r\n }\r\n this.state.editData && this.setState(prevState => {\r\n const editData = prevState.editData ? { ...prevState.editData, RunOnlyByPortalAdmin: checked } : prevState.editData\r\n return {\r\n editData: editData\r\n }\r\n })\r\n }\r\n\r\n handleSubmit = () => {\r\n if (!this.state.editData) {\r\n return\r\n }\r\n const editData = this.state.editData!\r\n const isConsortium = !!this.props.isConsortium\r\n\r\n const sampleSizeValid = (size: number, calcType: string): boolean => {\r\n if (size < 0) {\r\n return false\r\n }\r\n if (calcType === calcTypePercentage) {\r\n return size <= 100\r\n }\r\n if (calcType === calcTypeFixed) {\r\n return size.toString().length <= 19\r\n }\r\n return false\r\n }\r\n\r\n const primary_id_types: PrimaryIDType[] = this.state.primaryIDTypes || []\r\n const primary_id_type_ind = primary_id_types.findIndex(item => item.PrimaryIDType === editData.PrimaryIDType)\r\n const changes: PoolGeneralInfoEditValidity = {\r\n isPoolNameValid: editData.Name.trim().length >= 8,\r\n isFederallyRegulatedValid: editData.DOT !== undefined,\r\n isRegulatoryModeValid: !editData.DOT || editData.RegulatoryMode.length > 0,\r\n isSelectionIntervalValid: editData.SelectionInterval.length > 0,\r\n isCalcTypeValid: [calcTypePercentage, calcTypeFixed].includes(editData.FixedOrRate),\r\n isDrugSampleSizeValid: sampleSizeValid(editData.DrugSampleSize, editData.FixedOrRate),\r\n isAlcoholSampleSizeValid: sampleSizeValid(editData.AlcoholSampleSize, editData.FixedOrRate),\r\n isLabAccountValid: (isConsortium || editData.LabAccountNumber.length > 0),\r\n isLabPanelValid: (isConsortium || editData.Panel.length > 0),\r\n isPoolMembershipTypeValid: editData.UseFileImportForPoolMembership !== undefined,\r\n isPrimaryIDTypeValid: primary_id_type_ind >= 0,\r\n isPanelCodeValid: (!isConsortium || editData.PanelCode.length > 1)\r\n }\r\n const isValid = Object.values(changes).every((valid: boolean) => valid)\r\n if (!isValid) {\r\n this.setState(changes)\r\n return\r\n }\r\n\r\n const startDate = editData.ProgramIntervalStartDate ? parseISO(editData.ProgramIntervalStartDate) : undefined\r\n const endDate = editData.ProgramIntervalEndDate ? parseISO(editData.ProgramIntervalEndDate) : undefined\r\n const startDatePlusYear = editData.ProgramIntervalStartDate ? parseISO(editData.ProgramIntervalStartDate) : undefined\r\n startDatePlusYear && startDatePlusYear.setFullYear(startDatePlusYear.getFullYear() + 1)\r\n if (!startDate || !endDate || startDate >= endDate || !startDatePlusYear || startDatePlusYear < endDate) {\r\n return\r\n }\r\n\r\n switch (this.props.variant) {\r\n case PoolVariant.CloseProgramYear:\r\n this.performCloseProgramYearSave()\r\n break;\r\n default:\r\n this.setState({ showSaveConfirmModal: true })\r\n break;\r\n }\r\n }\r\n\r\n performSave = () => {\r\n this.setState({ saving: true, showSaveConfirmModal: false })\r\n const fixedOrRate = calcTypes.find(item => item.Code === this.state.editData?.FixedOrRate)?.ShortCode || \"\"\r\n this.updateSubscription && this.updateSubscription.unsubscribe()\r\n this.updateSubscription = PoolUpdateObservable({\r\n ...this.state.editData!,\r\n ProviderMappingID: this.state.selectedLabAccount?.ProviderMappingID,\r\n FixedOrRate: fixedOrRate\r\n }, !!this.props.isConsortium).subscribe(\r\n () => {\r\n toast.success(\"Updated pool details successfully.\")\r\n this.setState({ saving: false })\r\n this.handleToggleEditMode()\r\n this.loadPoolData()\r\n },\r\n () => {\r\n this.setState({ saving: false })\r\n toast.error(\"Error updating pool details\")\r\n }\r\n )\r\n }\r\n\r\n performCloseProgramYearSave = () => {\r\n if (!this.state.editData) {\r\n return\r\n }\r\n this.setState({ saving: true })\r\n this.closeProgramIntervalSubscription && this.closeProgramIntervalSubscription.unsubscribe()\r\n this.closeProgramIntervalSubscription = CloseProgramIntervalObservable({\r\n PoolID: this.state.editData?.PoolID || this.props.poolId,\r\n AlcoholTarget: this.state.editData?.AlcoholSampleSize,\r\n DrugTarget: this.state.editData?.DrugSampleSize,\r\n PanelID: this.state.editData?.PanelID,\r\n ProviderMappingID: this.state.selectedLabAccount?.ProviderMappingID || 0,\r\n DateFrom: format(parseISO(this.state.editData?.ProgramIntervalStartDate || \"\"), \"MM/dd/yyyy\"),\r\n DateTo: format(parseISO(this.state.editData?.ProgramIntervalEndDate || \"\"), \"MM/dd/yyyy\")\r\n }).subscribe(\r\n data => {\r\n toast.success(data)\r\n this.setState({ saving: false })\r\n this.handleToggleEditMode()\r\n this.loadPoolData()\r\n },\r\n error => {\r\n this.setState({ saving: false })\r\n toast.error(error.errorData?.message || error.message)\r\n }\r\n )\r\n }\r\n\r\n valueText = (text: string | number | undefined) => {text}\r\n\r\n rowClassName = (editable: boolean) => editable ? \"form-group required\" : this.state.editing ? \"form-group\" : \"\"\r\n\r\n openMissingPeriodsModal = () => this.setState({ showMissingModal: true })\r\n\r\n onSaveMissingPeriods = () => {\r\n this.setState({ showMissingModal: false })\r\n this.loadPoolData()\r\n }\r\n\r\n render() {\r\n const { data, editData, poolLoading, regulatoryModesLoading } = this.state\r\n const availableToSelectRegModes = this.state.availableToSelectRegModes || []\r\n const selectedRegulatoryModes = this.state.selectedRegulatoryModes || []\r\n const isPortalAdmin: boolean = this.props.isPortalAdmin || false\r\n if (poolLoading) {\r\n return
\r\n \r\n
\r\n }\r\n const dataCalcType = calcTypes.find(item => item.Code === data?.FixedOrRate)\r\n const dataCalcTypeMark = data?.FixedOrRate === calcTypePercentage ? \"%\" : \"\"\r\n const isOnTrack = IsOnTrack()\r\n\r\n const editing = this.state.editing\r\n const editingAndNoRun = this.state.editing && !editData?.IsRunRandom\r\n const editingAndNoRunNonClosePY = editingAndNoRun && this.props.variant !== PoolVariant.CloseProgramYear\r\n const editable = {\r\n company: false,\r\n poolID: false,\r\n name: editingAndNoRunNonClosePY,\r\n programInterval: editingAndNoRun,\r\n regulated: editingAndNoRunNonClosePY,\r\n regulatoryMode: editingAndNoRunNonClosePY,\r\n selectionInterval: editingAndNoRunNonClosePY,\r\n calcType: editingAndNoRunNonClosePY,\r\n drug: editing,\r\n alcohol: editing,\r\n labAccount: editing,\r\n panel: editing,\r\n membershipType: editing,\r\n primaryIDType: editing,\r\n includeCompanies: editing,\r\n panelCode: editing,\r\n runOnlyByPortalAdmin: editing,\r\n }\r\n\r\n const startDateStr = (editing ? editData : data)?.ProgramIntervalStartDate\r\n const endDateStr = (editing ? editData : data)?.ProgramIntervalEndDate\r\n const startDate = startDateStr ? parseISO(startDateStr) : undefined\r\n const endDate = endDateStr ? parseISO(endDateStr) : undefined\r\n const startDatePlusYear = startDateStr ? parseISO(startDateStr) : undefined\r\n startDatePlusYear && startDatePlusYear.setFullYear(startDatePlusYear.getFullYear() + 1)\r\n const primaryIDType = (editable.primaryIDType) ? editData?.PrimaryIDType : data?.PrimaryIDType\r\n let regModes = data?.RegulatoryMode\r\n if (selectedRegulatoryModes.length > 0) {\r\n const names = this.state.selectedRegulatoryModes.map(({ Name }) => Name).join(\", \")\r\n regModes = names\r\n }\r\n\r\n return <>\r\n
\r\n \r\n {(this.props.variant !== PoolVariant.CloseProgramYear) &&
MODIFY POOL CONFIGURATION
}\r\n \r\n {!this.state.editing && data?.IsMissingPeriodTests && }\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n {!this.props.isConsortium && \r\n COMPANY\r\n {this.valueText(data?.Company)}\r\n }\r\n \r\n POOL NAME\r\n {!editable.name && this.valueText(data?.Name)}\r\n {editable.name &&\r\n \r\n \r\n Pool Name should contain at least 8 characters\r\n }\r\n \r\n \r\n POOL ID\r\n {data?.Code}\r\n \r\n \r\n PROGRAM INTERVAL\r\n {!editable.programInterval && {startDate ? format(startDate, \"MM/dd/yyyy\") : \"\"}}\r\n {editable.programInterval && \r\n this.handleDateChange(\"ProgramIntervalStartDate\", date as Date)} />\r\n }\r\n To\r\n {!editable.programInterval && {endDate ? format(endDate, \"MM/dd/yyyy\") : \"\"}}\r\n {editable.programInterval && \r\n this.handleDateChange(\"ProgramIntervalEndDate\", date as Date)} />\r\n {endDate && startDate && startDate >= endDate && Date To should be later than Date From}\r\n {endDate && startDatePlusYear && startDatePlusYear < endDate && The From and To dates cannot be more than one calendar year in duration}\r\n }\r\n \r\n \r\n FEDERALLY REGULATED\r\n {(!editable.regulated || !!this.props.isConsortium) && this.valueText(data?.DOT ? yes : no)}\r\n {editable.regulated && !this.props.isConsortium &&\r\n \r\n true}\r\n onChange={this.handleFederallyRegulatedChange}\r\n options={[yes, no]}\r\n selected={editData?.DOT === undefined ? [] : [editData?.DOT ? yes : no]}\r\n isInvalid={!this.state.isFederallyRegulatedValid}\r\n emptyLabel=\"Select\"\r\n placeholder=\"Select\">\r\n {this.state.isFederallyRegulatedValid && }\r\n \r\n }\r\n \r\n {((!editing && data?.DOT) || (editing && editData?.DOT)) &&\r\n \r\n REGULATORY MODE(S)\r\n \r\n {!editable.regulatoryMode && this.valueText(regModes)}\r\n \r\n {editable.regulatoryMode &&\r\n \r\n \r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n onChange={(selected) => { this.handleRegulatoryModeChange(selected) }}\r\n disabled={this.state.regulatoryModesLoading}\r\n options={availableToSelectRegModes}\r\n selected={selectedRegulatoryModes}\r\n multiple\r\n isInvalid={!this.state.isRegulatoryModeValid}\r\n emptyLabel=\"No Regulatory Modes Found\"\r\n placeholder=\"Select\">\r\n {this.state.isRegulatoryModeValid && !this.state.regulatoryModesLoading && }\r\n \r\n \r\n }\r\n }\r\n \r\n SELECTION INTERVAL\r\n {!editable.selectionInterval && this.valueText(data?.SelectionInterval)}\r\n {editable.selectionInterval &&\r\n \r\n true}\r\n onChange={this.handleSelectionIntervalChange}\r\n disabled={this.state.selectionIntervalsLoading}\r\n options={this.state.selectionIntervals || []}\r\n selected={editData?.SelectionInterval ? [editData?.SelectionInterval] : []}\r\n isInvalid={!this.state.isSelectionIntervalValid}\r\n emptyLabel=\"No Selection Intervals Found\"\r\n placeholder=\"Select\">\r\n {this.state.isSelectionIntervalValid && !this.state.selectionIntervalsLoading && }\r\n \r\n }\r\n \r\n \r\n POOL CALCULATION TYPE\r\n {!editable.calcType && this.valueText(dataCalcType?.Name)}\r\n {editable.calcType &&\r\n \r\n true}\r\n onChange={this.handleCalcTypeChange}\r\n options={calcTypes}\r\n selected={this.state.selectedCalcType ? [this.state.selectedCalcType] : []}\r\n isInvalid={!this.state.isCalcTypeValid}\r\n emptyLabel=\"No Pool Calculation Types\"\r\n placeholder=\"Select\">\r\n {this.state.isCalcTypeValid && }\r\n \r\n }\r\n \r\n \r\n DRUG\r\n {!editable.drug && this.valueText(`${data?.DrugSampleSize.toString()}${dataCalcTypeMark}`)}\r\n {editable.drug &&\r\n \r\n \r\n ) => this.handleSampleSizeChangeChange(\"DrugSampleSize\", \"isDrugSampleSizeValid\", e.target.value)} isInvalid={!this.state.isDrugSampleSizeValid} />\r\n \r\n \r\n }\r\n \r\n \r\n ALCOHOL\r\n {!editable.alcohol && this.valueText(`${data?.AlcoholSampleSize.toString()}${dataCalcTypeMark}`)}\r\n {editable.alcohol &&\r\n \r\n \r\n ) => this.handleSampleSizeChangeChange(\"AlcoholSampleSize\", \"isAlcoholSampleSizeValid\", e.target.value)} isInvalid={!this.state.isAlcoholSampleSizeValid} />\r\n \r\n \r\n }\r\n \r\n {this.props.isConsortium && \r\n PANEL CODE\r\n {!editable.panelCode && this.valueText(data?.PanelCode)}\r\n {editable.panelCode &&\r\n \r\n 0} value={editData?.PanelCode} onChange={this.handlePanelCodeChange} isInvalid={!this.state.isPanelCodeValid} />\r\n Panel Code should contain at least 2 characters\r\n }\r\n }\r\n {!this.props.isConsortium && \r\n DEFAULT LABORATORY ACCOUNT\r\n {!editable.labAccount && this.valueText(data?.LabAccountNumber)}\r\n {editable.labAccount &&\r\n \r\n true}\r\n onChange={this.handleLabAccountChange}\r\n disabled={this.state.labAccountsLoading}\r\n options={this.state.labAccounts || []}\r\n selected={this.state.selectedLabAccount ? [this.state.selectedLabAccount] : []}\r\n isInvalid={!this.state.isLabAccountValid}\r\n emptyLabel=\"No Laboratory Accounts Found\"\r\n placeholder=\"Select\">\r\n {this.state.isLabAccountValid && !this.state.labAccountsLoading && }\r\n \r\n }\r\n }\r\n {!this.props.isConsortium && \r\n PANEL\r\n {!editable.panel && this.valueText(data?.Panel)}\r\n {editable.panel &&\r\n \r\n true}\r\n onChange={this.handleLabPanelChange}\r\n disabled={this.state.labPanelsLoading || !this.state.selectedLabAccount}\r\n options={this.state.availableLabPanels || []}\r\n selected={this.state.selectedLabPanel ? [this.state.selectedLabPanel] : []}\r\n isInvalid={!this.state.isLabPanelValid}\r\n emptyLabel=\"No Panels Found\"\r\n placeholder=\"Select\">\r\n {this.state.isLabPanelValid && !this.state.labPanelsLoading && }\r\n \r\n }\r\n }\r\n \r\n POOL MEMBERSHIP TYPE\r\n {!editable.membershipType && data?.UseFileImportForPoolMembership === true && this.valueText(poolMembershipTypeFileImport)}\r\n {!editable.membershipType && data?.UseFileImportForPoolMembership === false && this.valueText(poolMembershipTypeCriteria)}\r\n {editable.membershipType &&\r\n \r\n true}\r\n onChange={this.handlePoolMembershipTypeChange}\r\n options={[poolMembershipTypeFileImport, poolMembershipTypeCriteria]}\r\n selected={editData?.UseFileImportForPoolMembership === undefined ? [] : [editData?.UseFileImportForPoolMembership ? poolMembershipTypeFileImport : poolMembershipTypeCriteria]}\r\n isInvalid={!this.state.isPoolMembershipTypeValid}\r\n emptyLabel=\"Select\"\r\n placeholder=\"Select\">\r\n {this.state.isPoolMembershipTypeValid && }\r\n \r\n }\r\n \r\n {!!this.props.isConsortium &&\r\n \r\n INCLUDE COMPANIES WITH NO SELECTIONS\r\n {!editable.includeCompanies && this.valueText(data?.IncludeCompaniesWithNoSelections ? yes : no)}\r\n {editable.includeCompanies && }\r\n \r\n }\r\n {!isOnTrack && \r\n POOL REPORT ID TYPE\r\n {!editable.primaryIDType && this.valueText(primaryIDType)}\r\n {editable.primaryIDType &&\r\n \r\n ) => this.handlePrimaryIDTypeChange(e)}>\r\n {!primaryIDType && }\r\n {this.state.primaryIDTypes?.map(item => )}\r\n \r\n }\r\n }\r\n\r\n {!isOnTrack && \r\n WHO CAN RUN POOL\r\n {!editable.runOnlyByPortalAdmin && this.valueText(data?.RunOnlyByPortalAdmin ? \"Portal Administrator Only\" : \"Company Administrator Only\")}\r\n {editable.runOnlyByPortalAdmin && \r\n \r\n }\r\n {editable.runOnlyByPortalAdmin && \r\n \r\n }\r\n }\r\n\r\n \r\n
\r\n this.setState({ showSaveConfirmModal: false })} />\r\n {this.state.showMissingModal && !!data && this.onSaveMissingPeriods()} onHide={() => this.setState({ showMissingModal: false })} />}\r\n \r\n }\r\n /*\r\n \r\n Primary ID Type\r\n \r\n ) => this.setState({ primaryIDType: Number(e.target.value) })}>\r\n \r\n {primaryIDTypes?.map(item => )}\r\n \r\n \r\n \r\n */\r\n}\r\n","import * as React from \"react\"\r\nimport { Button, Col, Form, Modal } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { APIError } from \"../../../api/ObservableFromFetch\"\r\nimport { SetMissingPeriods, MissedPeriodsData } from \"../../../api/Randoms/PoolGeneralInfoGet\"\r\nimport PoolData from \"../../../api/Randoms/RandomsModel/PoolData\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport ActionButton from \"../../ActionButton\"\r\n\r\ninterface MissedPeriodsModalProps {\r\n details: PoolData\r\n onHide: () => void\r\n onSave: () => void\r\n}\r\n\r\ninterface MissedPeriodsModalState {\r\n saving: boolean\r\n MakeUp: boolean\r\n TotalCompletedDrug?: number\r\n TotalCompletedAlcohol?: number\r\n AveragePoolSize?: number\r\n}\r\n\r\nexport default class MissedPeriodsModal extends React.PureComponent {\r\n state: MissedPeriodsModalState = {\r\n saving: false,\r\n MakeUp: true,\r\n TotalCompletedDrug: undefined,\r\n TotalCompletedAlcohol: undefined,\r\n AveragePoolSize: undefined\r\n }\r\n\r\n saveSubscription?: Subscription\r\n\r\n componentWillUnmount() {\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error(FormatError(error))\r\n }\r\n\r\n handleSelect = (e: React.ChangeEvent) => this.setState({ MakeUp: e.target.value == \"makeup\", TotalCompletedDrug: undefined, TotalCompletedAlcohol: undefined, AveragePoolSize: undefined })\r\n\r\n onSave = () => {\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n const { MakeUp, TotalCompletedDrug, TotalCompletedAlcohol, AveragePoolSize } = this.state\r\n\r\n const data: MissedPeriodsData = {\r\n PoolProgramID: this.props.details.PoolProgramID,\r\n MakeUp: MakeUp ? 1 : 0,\r\n TotalCompletedDrug: MakeUp ? 0 : TotalCompletedDrug || 0,\r\n TotalCompletedAlcohol: MakeUp ? 0 : TotalCompletedAlcohol || 0,\r\n AveragePoolSize: MakeUp ? 0 : AveragePoolSize || 0\r\n }\r\n\r\n this.saveSubscription = SetMissingPeriods(data).subscribe(\r\n data => {\r\n toast.success(data)\r\n this.props.onSave()\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n changeInput = (value: string, fieldName: keyof MissedPeriodsModalState) => {\r\n const enteredValue = value.replace(/[^0-9]+/g, '')\r\n if (/^(0|[1-9]{1}\\d{0,18})$/.test(enteredValue)) {\r\n this.setState({...{}, [fieldName]: Number(enteredValue) })\r\n }\r\n else {\r\n this.setState({...{}, [fieldName]: undefined })\r\n }\r\n }\r\n\r\n className = (disable: boolean) => disable ? \"disabled\" : \"\"\r\n inputValue = (value: number | string | undefined) => value || value?.toString() === \"0\" ? value.toString() : \"\"\r\n\r\n validForm = (): boolean => {\r\n const { MakeUp, TotalCompletedDrug, TotalCompletedAlcohol, AveragePoolSize } = this.state\r\n const validSizes = (TotalCompletedDrug !== undefined && TotalCompletedAlcohol !== undefined && AveragePoolSize !== undefined)\r\n const valid = MakeUp ? true : validSizes\r\n return valid\r\n }\r\n\r\n render() {\r\n const { onHide } = this.props\r\n const { MakeUp, TotalCompletedDrug, TotalCompletedAlcohol, AveragePoolSize, saving } = this.state\r\n\r\n return (\r\n \r\n \r\n Missing Periods\r\n \r\n \r\n
\r\n \r\n If one or more periods have been missed for this pool group. Please choose one of the following options.\r\n \r\n \r\n \r\n\r\n \r\n Total # of drug tests completed\r\n \r\n this.changeInput(e.target.value, \"TotalCompletedDrug\")} />\r\n \r\n \r\n \r\n Total # of alcohol tests completed\r\n \r\n this.changeInput(e.target.value, \"TotalCompletedAlcohol\")} />\r\n \r\n \r\n \r\n Average pool size during the missed periods\r\n \r\n this.changeInput(e.target.value, \"AveragePoolSize\")} />\r\n \r\n \r\n\r\n \r\n When choosing this option the total number of tests and average pool size should be entered prior to running the first random selection. These values are necessary for RedArrow to calculate the proper number of selections and provide accurate statistics. If the actual numbers are unknown, then estimated values should be entered when creating the pool. The pool detail form provides a link (\"Total tests performed for missed periods\") so that these values can be updated later.\r\n \r\n \r\n
\r\n \r\n \r\n SAVE\r\n \r\n
\r\n )\r\n }\r\n}","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../../ObservableFromFetch\"\r\n\r\nexport interface MappingField {\r\n FieldGroup : string\r\n Required: boolean\r\n Active: boolean\r\n Name: string\r\n UniqueName: string\r\n}\r\n\r\nexport interface MappingFields {\r\n Required : MappingField[]\r\n IDFields : MappingField[]\r\n Other : MappingField[]\r\n Supervisor1 : MappingField[]\r\n Supervisor2 : MappingField[]\r\n}\r\n\r\nexport default function MappingFieldsGetObservable(importJobID: number): Observable {\r\n const params: string = JSON.stringify({ ImportJobID: importJobID })\r\n return ObservableFromFetch(\"WorkforceImport/GetPersonnelImportDropdown\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport ImportJobData from \"../../Administration/CompanyImport/Model/ImportJobData\"\r\nimport { ObservableFromFetch } from \"../../ObservableFromFetch\"\r\n\r\nexport default function ImportJobCreateObservable(csvBase64: string, fileName: string, hasHeaderRow: boolean, companyID: number, isGovtPersonnel?: boolean, poolID?: number, multiplePools: boolean = false): Observable {\r\n const params: string = JSON.stringify({\r\n CSVFileBase64String: csvBase64,\r\n FileName: fileName,\r\n HasHeaderRow: hasHeaderRow,\r\n UseTemplate: false,\r\n ImportJobID: 0,\r\n CompanyID: companyID,\r\n GovtPersonnel: isGovtPersonnel,\r\n WorkforcePersonnel: !isGovtPersonnel,\r\n PoolID: poolID || 0,\r\n MultiplePools: multiplePools\r\n })\r\n return ObservableFromFetch(\"WorkforceImport/CreateImportJob\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../../ObservableFromFetch\"\r\nimport ImportJobActionResult from \"./Model/ImportJobActionResult\"\r\n\r\nexport default function ImportJobMappingSetObservable(importJobID: number, selectedFields: string[]): Observable {\r\n const params: string = JSON.stringify({\r\n ImportJobID: importJobID,\r\n SelectedFields: selectedFields\r\n })\r\n return ObservableFromFetch(\"WorkforceImport/MapDropDownFields\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../../ObservableFromFetch\"\r\nimport ImportJobActionResult from \"./Model/ImportJobActionResult\"\r\n\r\nexport default function ImportJobValidateObservable(importJobID: number, poolID?:number): Observable {\r\n const params: string = JSON.stringify({ ImportJobID: importJobID, PoolID: poolID || 0 })\r\n return ObservableFromFetch(\"WorkforceImport/StartValidation\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../../ObservableFromFetch\"\r\nimport ImportJobActionResult from \"./Model/ImportJobActionResult\"\r\n\r\nexport default function ImportJobStartObservable(importJobID: number, poolID: number): Observable {\r\n const params: string = JSON.stringify({\r\n ImportJobID: importJobID,\r\n PoolID: poolID\r\n })\r\n return ObservableFromFetch(\"WorkforceImport/StartImport\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../../ObservableFromFetch\"\r\nimport ImportJobActionResult from \"./Model/ImportJobActionResult\"\r\n\r\nexport default function ImportJobCancelObservable(importJobID: number): Observable {\r\n const params: string = JSON.stringify({ ImportJobID: importJobID })\r\n return ObservableFromFetch(\"WorkforceImport/CancelImportJob\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../../ObservableFromFetch\"\r\n\r\nexport interface ValidationResultRow {\r\n Cells: string[]\r\n Status: string\r\n}\r\n\r\nexport interface ImportJobValidationResult {\r\n TableHeaderItems: string[]\r\n TableRows: ValidationResultRow[]\r\n TitleMessage?: string\r\n ImportMessage?: string\r\n OtherMessage?: string\r\n CancelImportMessage?: string\r\n CanBeImported: boolean\r\n ImportJobID: number\r\n Pages: number\r\n Total: number\r\n}\r\n\r\nexport default function ImportJobValidationResultGetObservable(importJobID: number, pageNumber?: number, pageSize?: number, poolID?:number): Observable {\r\n const params: string = JSON.stringify({\r\n ImportJobID: importJobID,\r\n PageNumber: pageNumber || 1,\r\n PageSize: pageSize || 10,\r\n PoolID: poolID || 0\r\n })\r\n return ObservableFromFetch(\"WorkforceImport/GetImportFileValidationErrors\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { AccountTypeID } from \"../../config/Constants\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport AutoFilterCompany from \"./CompanyModel/AutoFilterCompany\"\r\n\r\nexport default function AutoFilterCompaniesGetObservable(filter: string, IsFilters: boolean = false): Observable {\r\n const requestBody: string = JSON.stringify({\r\n AccountType: AccountTypeID,\r\n AutoFilterValue: filter,\r\n IncludeCompany: true,\r\n IncludeLocation: false,\r\n IncludeMaster: false,\r\n IncludeParent: true,\r\n IncludeRegion: false,\r\n IsFilters: IsFilters\r\n })\r\n\r\n return ObservableFromFetch(\"Order/GetAutoFilterCompany\", requestBody)\r\n}\r\n","import { Spinner } from \"react-bootstrap\"\r\n\r\ninterface LoadingTableWrapperProps {\r\n loading: boolean\r\n variant?: \"dark\" | \"light\" | \"page\"\r\n hideContent?: boolean\r\n withBorder?: boolean\r\n withHeader?: boolean\r\n children: React.ReactNode\r\n}\r\n\r\nfunction LoadingTableWrapper({\r\n loading,\r\n variant = \"dark\",\r\n hideContent = false,\r\n withBorder = true,\r\n withHeader = false,\r\n children,\r\n}: LoadingTableWrapperProps) {\r\n const cssClasses = [\"loading-table-wrapper\"]\r\n if (loading && hideContent && withBorder) {\r\n cssClasses.push(\"with-border\")\r\n }\r\n if (loading && variant === \"page\") {\r\n cssClasses.push(\"page\")\r\n }\r\n\r\n return (\r\n
\r\n {loading && hideContent &&
{children}
}\r\n {loading && !hideContent && children}\r\n {loading && (\r\n
\r\n \r\n
\r\n )}\r\n {!loading && children}\r\n
\r\n )\r\n}\r\n\r\nexport default LoadingTableWrapper\r\n","import { useEffect, useMemo, useState } from \"react\"\r\n\r\nimport { Col, Container, Row, Table } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { BehaviorSubject, concat, of } from \"rxjs\"\r\nimport { catchError, distinctUntilChanged, filter, map, switchMap } from \"rxjs/operators\"\r\n\r\nimport ImportJobValidationResultGetObservable, {\r\n ImportJobValidationResult,\r\n ValidationResultRow,\r\n} from \"../../api/Randoms/Import/ImportJobValidationResultGet\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\nimport LoadingTableWrapper from \"../LoadingTableWrapper\"\r\nimport TablePagination from \"../TablePagination\"\r\n\r\ninterface ImportErrorDetailsProps {\r\n importJobID: number\r\n errors?: ImportJobValidationResult\r\n pageSize?: number\r\n}\r\n\r\ninterface GetErrorsParams {\r\n importJobID: number\r\n pageSize?: number\r\n pageNumber: number\r\n}\r\n\r\ninterface DataLoader {\r\n data: ImportJobValidationResult\r\n loading: boolean\r\n}\r\n\r\nfunction ImportErrorDetails(props: ImportErrorDetailsProps) {\r\n const { importJobID, pageSize, errors } = props\r\n const [importErrors, setImportErrors] = useState({\r\n data: errors || {\r\n ImportJobID: importJobID,\r\n TableHeaderItems: [],\r\n TableRows: [],\r\n Pages: 1,\r\n Total: 0,\r\n TitleMessage: \"\",\r\n CanBeImported: false,\r\n },\r\n loading: false,\r\n })\r\n\r\n const page$ = useMemo(\r\n () =>\r\n new BehaviorSubject({\r\n importJobID: errors ? -1 : importJobID,\r\n pageSize,\r\n pageNumber: 1,\r\n }),\r\n [importJobID, pageSize, errors]\r\n )\r\n\r\n useEffect(() => {\r\n setImportErrors((prev) => ({ data: { ...prev.data }, loading: page$.value.importJobID > 0 }))\r\n\r\n const pageSubscription = page$\r\n .pipe(\r\n filter((v) => v.importJobID > 0),\r\n distinctUntilChanged(),\r\n switchMap((params: GetErrorsParams) =>\r\n concat(\r\n of({ loading: true }),\r\n ImportJobValidationResultGetObservable(params.importJobID, params.pageNumber, params.pageSize).pipe(\r\n map((result: ImportJobValidationResult) => ({ data: result, loading: false })),\r\n catchError((error) => of({ loading: false, errorMessage: FormatError(error) }))\r\n )\r\n )\r\n )\r\n )\r\n .subscribe(\r\n (o: { loading: boolean; data?: ImportJobValidationResult; errorMessage?: string }) => {\r\n setImportErrors((prev) => ({ data: { ...prev.data, ...o.data }, loading: o.loading }))\r\n if (o.errorMessage) {\r\n toast.error(o.errorMessage)\r\n }\r\n },\r\n (error) => {\r\n setImportErrors((prev) => ({ data: { ...prev.data }, loading: false }))\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n return () => pageSubscription.unsubscribe()\r\n }, [errors, page$])\r\n\r\n const pageChange = (pageNumber: number) => page$.next({ ...page$.value, importJobID, pageNumber })\r\n\r\n const { TitleMessage, TableHeaderItems = [], TableRows = [], Pages = 1 } = importErrors.data\r\n\r\n const renderImportCells = (row: ValidationResultRow) => {\r\n return row.Cells.map((cell, i) => (\r\n \r\n {i === 1 ?
:
{cell}
}\r\n \r\n ))\r\n }\r\n\r\n const renderImportRows = () => {\r\n return TableRows.map((row) => {renderImportCells(row)})\r\n }\r\n\r\n return (\r\n \r\n {TitleMessage && (\r\n \r\n {TitleMessage}\r\n \r\n )}\r\n {TableRows.length > 0 && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {TableHeaderItems.map((item) => (\r\n \r\n ))}\r\n \r\n \r\n {renderImportRows()}\r\n
{item}
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n )\r\n}\r\n\r\nImportErrorDetails.defaultProps = {\r\n errors: undefined,\r\n pageSize: 10,\r\n}\r\n\r\nexport default ImportErrorDetails\r\n","import * as React from \"react\"\r\nimport { Button, Col, Form, Row, Spinner, Table } from \"react-bootstrap\"\r\nimport { BehaviorSubject, concat, of, Subscription } from \"rxjs\"\r\nimport { debounceTime, filter, map, switchMap } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { ImportCSVMaxFileSize } from \"../../../config/Constants\"\r\nimport ConfirmationModal from \"../../ConfirmationModal\"\r\nimport MappingFieldsGetObservable, { MappingField, MappingFields } from \"../../../api/Randoms/Import/MappingFieldsGet\"\r\nimport ImportJobData from \"../../../api/Administration/CompanyImport/Model/ImportJobData\"\r\nimport ImportJobCreateObservable from \"../../../api/Randoms/Import/ImportJobCreate\"\r\nimport ImportJobMappingSetObservable from \"../../../api/Randoms/Import/ImportJobMappingSet\"\r\nimport ImportJobValidateObservable from \"../../../api/Randoms/Import/ImportJobValidate\"\r\nimport ImportJobStartObservable from \"../../../api/Randoms/Import/ImportJobStart\"\r\nimport ImportJobCancelObservable from \"../../../api/Randoms/Import/ImportJobCancel\"\r\nimport ImportJobValidationResultGetObservable, { ImportJobValidationResult } from \"../../../api/Randoms/Import/ImportJobValidationResultGet\"\r\nimport AutoFilterCompany from \"../../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport AutoFilterCompaniesGetObservable from \"../../../api/Companies/AutoFilterCompaniesGet\"\r\nimport CompanyInput from \"../../FormattedInputs/CompanyInput\"\r\nimport ImportErrorDetails from \"../ImportErrorDetails\"\r\nimport FileSaver from \"file-saver\"\r\nimport ActionButton from \"../../ActionButton\"\r\n\r\ninterface ImportPoolMembersFieldMapping {\r\n column: number\r\n fieldGroup?: string\r\n mappingField?: MappingField\r\n}\r\n\r\ninterface ImportPoolMembersProps {\r\n poolID: number,\r\n isGovt?: boolean\r\n poolPrimaryIDType?: string\r\n isConsortium?: boolean\r\n multiplePools?: boolean\r\n onUpdate?: (updated: boolean) => void\r\n}\r\n\r\ninterface ImportPoolMembersState {\r\n step: \"file\" | \"mapping\" | \"import\"\r\n fileInputKey: string\r\n selectedCompany?: AutoFilterCompany\r\n fileName?: string\r\n fileContent?: string\r\n fileHasHeaderRow: boolean\r\n importData?: ImportJobData\r\n mappingFields?: MappingFields\r\n mapping?: ImportPoolMembersFieldMapping[]\r\n validationResult?: ImportJobValidationResult\r\n unfilteredCompanies?: AutoFilterCompany[]\r\n companies: AutoFilterCompany[]\r\n isCompaniesLoading: boolean\r\n isSaving: boolean\r\n isCancelling: boolean\r\n showCancelConfirmModal: boolean\r\n showImportConfirmModal: boolean\r\n}\r\n\r\nexport default class ImportPoolMembers extends React.Component {\r\n emptyData: ImportPoolMembersState = {\r\n step: \"file\",\r\n fileInputKey: \"file_input_key\",\r\n selectedCompany: undefined,\r\n fileName: undefined,\r\n fileContent: undefined,\r\n fileHasHeaderRow: true,\r\n importData: undefined,\r\n mappingFields: undefined,\r\n mapping: undefined,\r\n validationResult: undefined,\r\n companies: [],\r\n isCompaniesLoading: false,\r\n isSaving: false,\r\n isCancelling: false,\r\n showCancelConfirmModal: false,\r\n showImportConfirmModal: false\r\n }\r\n state: ImportPoolMembersState = { ...this.emptyData, unfilteredCompanies: [] }\r\n\r\n searchCompany$ = new BehaviorSubject(undefined)\r\n companiesListSubscription?: Subscription\r\n searchCompanySubscription?: Subscription\r\n importJobCreateSubscription?: Subscription\r\n mappingFieldsGetSubscription?: Subscription\r\n importJobValidateSubscription?: Subscription\r\n importJobValidationResultGetSubscription?: Subscription\r\n importJobMappingSetSubscription?: Subscription\r\n importJobStartSubscription?: Subscription\r\n importJobCancelSubscription?: Subscription\r\n poolCriteriaSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n if (!!this.props.isConsortium) return\r\n this.setState({ isCompaniesLoading: true })\r\n let companies: AutoFilterCompany[] = []\r\n this.companiesListSubscription = AutoFilterCompaniesGetObservable(\"\").subscribe(\r\n (data: AutoFilterCompany[]) => {\r\n companies = data\r\n this.setState({\r\n companies: data,\r\n unfilteredCompanies: data,\r\n selectedCompany: data.length === 1 ? data[0] : undefined\r\n })\r\n },\r\n () => {\r\n this.setState({ isCompaniesLoading: false })\r\n }\r\n )\r\n\r\n this.searchCompanySubscription = this.searchCompany$.pipe(\r\n filter(filter => filter !== undefined),\r\n debounceTime(500),\r\n map(filter => (filter ?? \"\").trim()),\r\n switchMap((filter) => filter.length < 3\r\n ? of({ isLoading: false, items: this.state.unfilteredCompanies })\r\n : concat(\r\n of({ isLoading: true }),\r\n AutoFilterCompaniesGetObservable(filter).pipe(\r\n map((data) => ({ isLoading: false, items: data }))\r\n )\r\n ))\r\n ).subscribe(\r\n (state: { isLoading: boolean, items?: AutoFilterCompany[] }) => {\r\n state.items\r\n ? this.setState({ isCompaniesLoading: state.isLoading, companies: state.items })\r\n : this.setState({ isCompaniesLoading: state.isLoading })\r\n },\r\n () => this.setState({ isCompaniesLoading: false })\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.companiesListSubscription && this.companiesListSubscription.unsubscribe()\r\n this.searchCompanySubscription && this.searchCompanySubscription.unsubscribe()\r\n this.importJobCreateSubscription && this.importJobCreateSubscription.unsubscribe()\r\n this.mappingFieldsGetSubscription && this.mappingFieldsGetSubscription.unsubscribe()\r\n this.importJobValidateSubscription && this.importJobValidateSubscription.unsubscribe()\r\n this.importJobValidationResultGetSubscription && this.importJobValidationResultGetSubscription.unsubscribe()\r\n this.importJobMappingSetSubscription && this.importJobMappingSetSubscription.unsubscribe()\r\n this.importJobStartSubscription && this.importJobStartSubscription.unsubscribe()\r\n this.importJobCancelSubscription && this.importJobCancelSubscription.unsubscribe()\r\n this.poolCriteriaSubscription && this.poolCriteriaSubscription.unsubscribe()\r\n }\r\n\r\n createMapping = (importData: ImportJobData): ImportPoolMembersFieldMapping[] => {\r\n const colsCount = importData.Records.length > 0 ? Math.max(importData.HeaderItems?.length ?? 0, Math.max(...importData.Records.map(row => row.length))) : 0\r\n return [...Array(colsCount)].map((_, i) => ({ column: i }))\r\n }\r\n\r\n handleApiError = (error: Error) => {\r\n this.setState({ isSaving: false, isCancelling: false })\r\n toast.error(error)\r\n }\r\n\r\n handleFileStepNext = () => {\r\n if (this.state.fileContent) {\r\n this.setState({ isSaving: true })\r\n this.importJobCreateSubscription && this.importJobCreateSubscription.unsubscribe()\r\n this.importJobCreateSubscription = ImportJobCreateObservable(this.state.fileContent, this.state.fileName || \"\", !!this.state.fileHasHeaderRow, this.state.selectedCompany?.AccountID || 0, this.props.isGovt, this.props.poolID, !!this.props.multiplePools).subscribe(\r\n (data) => this.getMappingFields(data),\r\n (error) => this.handleApiError(error)\r\n )\r\n }\r\n }\r\n\r\n getMappingFields = (importJobData: ImportJobData) => {\r\n this.mappingFieldsGetSubscription && this.mappingFieldsGetSubscription.unsubscribe()\r\n this.mappingFieldsGetSubscription = MappingFieldsGetObservable(importJobData.ImportJobID).subscribe(\r\n (mappingFields) => this.setState({\r\n step: \"mapping\",\r\n importData: importJobData,\r\n mappingFields: mappingFields,\r\n mapping: this.createMapping(importJobData),\r\n isSaving: false\r\n }),\r\n (error) => this.handleApiError(error)\r\n )\r\n }\r\n\r\n handleMappingValidate = () => {\r\n const selectedMappingFields = this.state.mapping?.map(item => item.mappingField?.UniqueName || \"\") || []\r\n if (selectedMappingFields.every(item => item.trim().length === 0)) {\r\n toast.error(\"Mapping is empty, select at least one Column map.\")\r\n return\r\n }\r\n this.setState({ isSaving: true })\r\n this.importJobMappingSetSubscription && this.importJobMappingSetSubscription.unsubscribe()\r\n this.importJobMappingSetSubscription = ImportJobMappingSetObservable(this.state.importData?.ImportJobID || 0, selectedMappingFields).subscribe(\r\n (mappingResult) => this.startImportValidation(mappingResult.ImportJobID, this.props.poolID),\r\n (error) => this.handleApiError(error)\r\n )\r\n }\r\n\r\n startImportValidation = (importJobID: number, poolID?: number) => {\r\n this.importJobValidateSubscription && this.importJobValidateSubscription.unsubscribe()\r\n this.importJobValidateSubscription = ImportJobValidateObservable(importJobID, poolID).subscribe(\r\n (validationResult) => this.getImportValidationResults(validationResult.ImportJobID),\r\n (error) => this.handleApiError(error)\r\n )\r\n }\r\n\r\n getImportValidationResults = (importJobID: number, poolID?: number) => {\r\n this.importJobValidationResultGetSubscription && this.importJobValidationResultGetSubscription.unsubscribe()\r\n this.importJobValidationResultGetSubscription = ImportJobValidationResultGetObservable(importJobID, 1, 10, poolID).subscribe(\r\n (validationErrors) => this.setState({ step: \"import\", validationResult: validationErrors, isSaving: false }),\r\n (error) => this.handleApiError(error)\r\n )\r\n }\r\n\r\n performImport = () => {\r\n this.setState({ isSaving: true })\r\n this.importJobStartSubscription && this.importJobStartSubscription.unsubscribe()\r\n this.importJobStartSubscription = ImportJobStartObservable(this.state.importData?.ImportJobID || 0, this.props.poolID).subscribe(\r\n (data) => {\r\n if (data.Result && data.ErrorsData.length === 0) {\r\n toast.success(\"Records imported successfully.\")\r\n }\r\n else {\r\n toast.error(\"Records imported with errors.\")\r\n if (data.ErrorsData.length > 0) this.export(data.ErrorsData, this.state.fileName || \"data.csv\")\r\n }\r\n this.props.onUpdate && this.props.onUpdate(true)\r\n this.resetState()\r\n },\r\n (error) => this.handleApiError(error)\r\n )\r\n }\r\n\r\n export(csv: string, fileName: string) {\r\n const csvData = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, fileName)\r\n toast.success(\"CSV file downloaded successfully.\")\r\n }\r\n\r\n performCancel = () => {\r\n this.setState({ isCancelling: true })\r\n this.importJobCancelSubscription && this.importJobCancelSubscription.unsubscribe()\r\n this.importJobCancelSubscription = ImportJobCancelObservable(this.state.importData?.ImportJobID || 0).subscribe(\r\n () => {\r\n toast.success(\"Created job is cancelled successfully.\")\r\n this.resetState()\r\n },\r\n (error) => this.handleApiError(error)\r\n )\r\n }\r\n\r\n resetState = () => this.setState(prevState => ({\r\n ...this.emptyData,\r\n selectedCompany: prevState.companies.length <= 1 ? prevState.selectedCompany : undefined,\r\n fileInputKey: Math.random().toString()\r\n }))\r\n\r\n handleHandleFileUpload = (e: React.ChangeEvent) => {\r\n const file = e.target && e.target.files && e.target.files[0]\r\n if (file && file.size > 0 && file.size < ImportCSVMaxFileSize) {\r\n const ext = file.name.substring(file.name.lastIndexOf(\".\") + 1)\r\n if (ext && ext.toLowerCase() === \"csv\") {\r\n var reader = new FileReader()\r\n const self = this\r\n reader.onload = function (e) {\r\n const result = e.target?.result as string || \"\"\r\n const stringLength = result.indexOf(\"base64\") + 7\r\n const fileContent = result.slice(stringLength, result.length)\r\n if (fileContent) {\r\n self.setState({ fileName: file.name, fileContent: fileContent })\r\n } else {\r\n self.setState({ fileName: undefined, fileContent: undefined })\r\n toast.error(\"CSV file is empty.\")\r\n }\r\n }\r\n reader.onerror = function (error) { toast.error(error) }\r\n reader.readAsDataURL(file)\r\n } else {\r\n toast.error(\"File type not allowed, Please upload CSV file.\")\r\n }\r\n } else {\r\n this.setState({ fileName: undefined, fileContent: undefined })\r\n }\r\n }\r\n\r\n handleFieldMappingChange = (e: React.ChangeEvent, target: ImportPoolMembersFieldMapping, value: string) => {\r\n const mappings = [...this.state.mapping || []]\r\n const index = mappings.findIndex(item => item.column === target.column)\r\n if (index === -1) {\r\n return\r\n }\r\n if (value === \"skip\") {\r\n mappings[index] = { column: target.column }\r\n } else {\r\n const valueKeys = value.split(\"|||\")\r\n if (valueKeys.length !== 2) {\r\n return\r\n }\r\n const mappingField = this.state.mappingFields![valueKeys[0] as keyof MappingFields].find(item => item.UniqueName === valueKeys[1])\r\n if (!mappingField) {\r\n return\r\n }\r\n mappings[index] = { column: target.column, fieldGroup: valueKeys[0], mappingField: mappingField }\r\n }\r\n this.setState({ mapping: mappings })\r\n }\r\n handleCompanyChange = (items: AutoFilterCompany[]) => {\r\n const comp = items[0]\r\n if (!comp) {\r\n this.setState({ selectedCompany: undefined })\r\n return\r\n }\r\n let ind = -1\r\n\r\n if (this.state.companies) {\r\n ind = this.state.companies.findIndex(item => item.AccountID === comp.AccountID)\r\n }\r\n if (ind < 0) {\r\n this.setState({ selectedCompany: undefined })\r\n return\r\n }\r\n const selected = this.state.companies[ind]\r\n this.setState({ selectedCompany: selected })\r\n }\r\n\r\n render() {\r\n const usedMappingFields = this.state.step === \"mapping\" && this.state.mapping\r\n ? this.state.mapping.filter(item => !!item.mappingField).map(item => item.mappingField!.UniqueName)\r\n : []\r\n const poolPrimaryIDType = ((this.props.poolID > 0) && (!!this.props.poolPrimaryIDType)) ? this.props.poolPrimaryIDType : \"Unknown\"\r\n const companyPrimaryIDType = this.state.selectedCompany?.PrimaryIDType || \"Unknown\"\r\n const isConsortium = !!this.props.isConsortium\r\n return
\r\n \r\n \r\n
\r\n }\r\n\r\n static defaultProps = { step: \"file\" }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetchWithTaskData } from \"../ObservableFromFetch\"\r\nimport RunRandomSelectionMessage from \"./RandomsModel/RunRandomSelectionMessage\"\r\n\r\nexport default function RunRandomSelectionMessagesGetObservable(poolId: number): Observable {\r\n const requestBody: string = new URLSearchParams({\r\n poolId: poolId.toString()\r\n }).toString()\r\n\r\n return ObservableFromFetchWithTaskData(\"RandomTest/RandomSelectionMessage?\" + requestBody)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport RandomSelectionRunData from \"./RandomsModel/RandomSelectionRunData\"\r\n\r\ninterface RandomSelectionRunOptions {\r\n ContactId: number\r\n UpdateMethodID: number\r\n PoolId: number\r\n RequiredDrug: number\r\n RequiredAlcohol: number\r\n AlternateDrug: number\r\n AlternateAlcohol: number\r\n}\r\n\r\nexport interface RunCancelPoolsMessages {\r\n PoolName: string\r\n PoolCode: string\r\n Message: string\r\n}\r\n\r\nexport interface PoolRunData {\r\n PoolID: number\r\n PoolName: string\r\n PoolCode: string\r\n IsConsortium: boolean\r\n}\r\n\r\nexport default function RandomSelectionRunObservable(options: RandomSelectionRunOptions): Observable {\r\n const params: string = JSON.stringify(options)\r\n return ObservableFromFetch(\"WorkforceRandomTest/RunRandomSelection\", params)\r\n}\r\n\r\nexport function RunCancelPoolsObservable(cancel: boolean, selectedPools: PoolRunData[]) {\r\n const params: string = JSON.stringify({\r\n Cancel: cancel,\r\n SelectedPools: selectedPools\r\n })\r\n return ObservableFromFetch(\"WorkforceRandomTest/RunCancelSelectedPools\", params)\r\n}\r\n","import * as React from \"react\"\r\nimport { Container, Table, Row, Col, Spinner, Button, Form } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport PoolStatisticsDetails from \"../../../api/Randoms/RandomsModel/PoolStatisticsDetails\"\r\nimport PoolStatisticsDetailsGetObservable from \"../../../api/Randoms/PoolStatisticsDetailsGet\"\r\nimport RunRandomSelectionMessage from \"../../../api/Randoms/RandomsModel/RunRandomSelectionMessage\"\r\nimport RunRandomSelectionMessagesGetObservable from \"../../../api/Randoms/RunRandomSelectionMessagesGet\"\r\nimport RandomSelectionRunData from \"../../../api/Randoms/RandomsModel/RandomSelectionRunData\"\r\nimport RandomSelectionRunObservable from \"../../../api/Randoms/RandomSelectionRun\"\r\nimport ConfirmationModal from \"../../ConfirmationModal\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\nimport RandomSelectionList from \"../RandomSelectionList\"\r\nimport PoolSelectionListGetObservable from \"../../../api/Randoms/PoolSelectionListGet\"\r\nimport PoolSelectionRow from \"../../../api/Randoms/RandomsModel/PoolSelectionRow\"\r\n\r\ninterface RunRandomProps {\r\n poolId: number\r\n poolName: string\r\n isCompanyAdmin?: boolean\r\n isPortalAdmin?: boolean\r\n onRunFinish: () => void\r\n}\r\n\r\ninterface RunRandomValidity {\r\n isActualToSelectDrugValid: boolean\r\n isActualToSelectAlcoholValid: boolean\r\n isAlternateDrugValid: boolean\r\n isAlternateAlcoholValid: boolean\r\n}\r\n\r\ninterface RunRandomData {\r\n actualToSelectDrug?: number\r\n actualToSelectAlcohol?: number\r\n alternateDrug?: number\r\n alternateAlcohol?: number\r\n}\r\n\r\ninterface RunRandomState extends RunRandomData, RunRandomValidity {\r\n step: \"run\" | \"success\"\r\n saving: boolean\r\n statisticsLoading: boolean\r\n messagesLoading: boolean\r\n poolSelectionLoading: boolean\r\n statistics?: PoolStatisticsDetails\r\n messages?: RunRandomSelectionMessage\r\n runResults?: RandomSelectionRunData[]\r\n poolSelection?: PoolSelectionRow\r\n showRunConfirmation: boolean\r\n showSelectionList: boolean\r\n}\r\n\r\nexport default class RunRandom extends React.PureComponent {\r\n state: RunRandomState = {\r\n step: \"run\",\r\n saving: false,\r\n statisticsLoading: false,\r\n messagesLoading: false,\r\n poolSelectionLoading: false,\r\n isActualToSelectDrugValid: true,\r\n isActualToSelectAlcoholValid: true,\r\n isAlternateDrugValid: true,\r\n isAlternateAlcoholValid: true,\r\n showRunConfirmation: false,\r\n showSelectionList: false\r\n }\r\n\r\n subscriptions = new Subscription()\r\n\r\n componentDidMount() {\r\n this.setState({ statisticsLoading: true, messagesLoading: true })\r\n this.subscriptions.add(\r\n PoolStatisticsDetailsGetObservable(this.props.poolId).subscribe(\r\n data => this.setState({ statistics: data, actualToSelectDrug: data.DrugRequired, actualToSelectAlcohol: data.AlcoholRequired, statisticsLoading: false }),\r\n () => this.setState({ statisticsLoading: false })\r\n ))\r\n this.subscriptions.add(\r\n RunRandomSelectionMessagesGetObservable(this.props.poolId).subscribe(\r\n data => this.setState({ messages: data, messagesLoading: false }),\r\n () => this.setState({ messagesLoading: false })\r\n ))\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n validateSizeValue = (value: number | undefined) => !value || (value >= 0 && (!this.state.statistics || value <= this.state.statistics.CurrentPoolSize))\r\n\r\n handleSizeChange = (what: keyof RunRandomData, validityField: keyof RunRandomValidity, value: string) => {\r\n value = value.replace(/\\D/g, \"\")\r\n if (value.length === 0) {\r\n this.setState({ ...{}, [what]: undefined, [validityField]: true })\r\n } else {\r\n const numberValue = Number(parseInt(value))\r\n if (numberValue !== undefined) {\r\n this.setState({ ...{}, [what]: numberValue, [validityField]: this.validateSizeValue(numberValue) })\r\n }\r\n }\r\n }\r\n\r\n handleFormSubmit = (e: React.FormEvent) => {\r\n e.preventDefault()\r\n\r\n const { actualToSelectDrug, actualToSelectAlcohol, alternateDrug, alternateAlcohol, statistics } = this.state\r\n if (!statistics) {\r\n return\r\n }\r\n const validity: RunRandomValidity = {\r\n isActualToSelectDrugValid: this.validateSizeValue(actualToSelectDrug),\r\n isActualToSelectAlcoholValid: this.validateSizeValue(actualToSelectAlcohol),\r\n isAlternateDrugValid: !statistics?.GenerateAlternates || this.validateSizeValue(alternateDrug),\r\n isAlternateAlcoholValid: !statistics?.GenerateAlternates || this.validateSizeValue(alternateAlcohol)\r\n }\r\n const isValid = Object.values(validity).every((valid: boolean) => valid)\r\n\r\n if (isValid) {\r\n this.setState({ showRunConfirmation: true })\r\n } else {\r\n this.setState(validity)\r\n }\r\n }\r\n\r\n runSelection = () => {\r\n this.setState({ showRunConfirmation: false, saving: true })\r\n // TODO: Pass correct contactId and updateMethodID values once authorization and account data will be available\r\n this.subscriptions.add(\r\n RandomSelectionRunObservable({\r\n ContactId: 0,\r\n UpdateMethodID: 0,\r\n PoolId: this.props.poolId,\r\n RequiredDrug: this.state.actualToSelectDrug || 0,\r\n RequiredAlcohol: this.state.actualToSelectAlcohol || 0,\r\n AlternateDrug: this.state.alternateDrug || 0,\r\n AlternateAlcohol: this.state.alternateAlcohol || 0\r\n }).subscribe(\r\n data => this.setState({ runResults: data, saving: false, step: \"success\" }),\r\n (error) => {\r\n this.setState({ saving: false })\r\n toast.error(error && error.errorData && error.errorData.message)\r\n }\r\n ))\r\n }\r\n\r\n handlePrintClick = () => {\r\n this.setState({ poolSelectionLoading: true })\r\n this.subscriptions.add(\r\n PoolSelectionListGetObservable(this.props.poolId, 1, 1).subscribe(\r\n (data) => this.setState({ poolSelection: data.Records[0], showSelectionList: true, poolSelectionLoading: false }),\r\n (error) => {\r\n this.setState({ poolSelectionLoading: false })\r\n toast.error(error)\r\n }\r\n ))\r\n }\r\n\r\n sizeRowItem = (\r\n name: string,\r\n valueField: keyof RunRandomData,\r\n valueValidityField: keyof RunRandomValidity,\r\n disabled: boolean,\r\n lg: number,\r\n xl: number,\r\n invalidMessage: string\r\n ) => \r\n {name}\r\n ) => this.handleSizeChange(valueField, valueValidityField, e.target.value)}\r\n isInvalid={!this.state[valueValidityField] || false}\r\n disabled={disabled} />\r\n {invalidMessage}\r\n \r\n\r\n sizeRow = (\r\n name: string,\r\n statRequiredValue: number | undefined,\r\n valueField: keyof RunRandomData,\r\n valueValidityField: keyof RunRandomValidity,\r\n alternateValueField: keyof RunRandomData,\r\n alternateValueValidityField: keyof RunRandomValidity,\r\n showAlternates: boolean,\r\n disabled: boolean,\r\n invalidMessage: string,\r\n alternateInvalidMessage: string\r\n ) => \r\n \r\n
{name}
\r\n
{statRequiredValue}
\r\n \r\n {this.sizeRowItem(\"ACTUAL TO SELECT\", valueField, valueValidityField, disabled, 5, 4, invalidMessage)}\r\n {showAlternates && this.sizeRowItem(\"ALTERNATES\", alternateValueField, alternateValueValidityField, disabled, 4, 4, alternateInvalidMessage)}\r\n
\r\n\r\n render() {\r\n const { statistics, messages } = this.state\r\n const isPortalAdmin: boolean = this.props.isPortalAdmin || false\r\n const isCompanyAdmin: boolean = this.props.isCompanyAdmin || false\r\n const runOnlyByPortalAdmin: boolean = messages?.RunOnlyByPortalAdmin || false\r\n\r\n const allowRun = (isPortalAdmin && runOnlyByPortalAdmin) || (isCompanyAdmin && !runOnlyByPortalAdmin)\r\n const disableForm = !messages?.IsRunRandomSelection || !allowRun\r\n return <>\r\n \r\n \r\n this.setState({ showRunConfirmation: false })} />\r\n {this.state.showSelectionList && this.state.poolSelection &&\r\n this.setState({ showSelectionList: false })}\r\n poolId={this.props.poolId}\r\n poolName={this.props.poolName}\r\n poolSelection={this.state.poolSelection} />}\r\n \r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\ninterface PoolCloseProgramYearIntervalOptions {\r\n PoolID: number\r\n SelectionInterval: string\r\n DateFrom: string\r\n DateTo: string\r\n}\r\nexport default function CloseProgramIntervalGetObservable(poolId: number): Observable {\r\n const requestBody: string = new URLSearchParams({\r\n poolId: poolId.toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderPoolDefinition/CloseProgramYear?\" + requestBody)\r\n}\r\nexport function CloseProgramYearIntervalObservable(data: PoolCloseProgramYearIntervalOptions): Observable {\r\n const params: string = JSON.stringify(data)\r\n return ObservableFromFetch(\"FFOrderPoolDefinition/CloseProgramYearInterval\", params)\r\n}\r\n","import * as React from \"react\"\r\nimport { Container, Row, Col, Form } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport TestingPeriodBreakdownGrid from \"./TestingPeriodBreakdownGrid\"\r\nimport PoolGeneralInfo, { PoolVariant } from \"./PoolGeneralInfo\"\r\nimport ConfirmationModal from \"../../ConfirmationModal\"\r\nimport { CloseProgramYearIntervalObservable } from \"../../../api/Randoms/CloseProgramIntervalGet\"\r\n\r\nimport { Subscription } from \"rxjs\"\r\nimport PoolData from \"../../../api/Randoms/RandomsModel/PoolData\"\r\nimport PoolGeneralInfoGetObservable from \"../../../api/Randoms/PoolGeneralInfoGet\"\r\nimport DatePicker from \"react-datepicker\"\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport { format, parseISO } from \"date-fns\"\r\n\r\ninterface CloseProgramIntervalProps {\r\n poolId: number\r\n poolName: string\r\n poolData?: PoolData\r\n onPoolUpdate: () => void\r\n}\r\n\r\ninterface CloseProgramIntervalState {\r\n showConfirmationModal: boolean\r\n showEditPool: boolean,\r\n poolLoading: boolean\r\n poolSaving: boolean\r\n currentIntervalStartDate: string,\r\n currentIntervalEndDate: string,\r\n programIntervalStartDate: string,\r\n programIntervalEndDate: string,\r\n selectionInterval: string\r\n\r\n}\r\ninterface ValidationStatus {\r\n isValid: boolean,\r\n errorMessage: string\r\n}\r\nexport default class CloseProgramInterval extends React.PureComponent {\r\n state: CloseProgramIntervalState = {\r\n showConfirmationModal: true,\r\n showEditPool: false,\r\n poolLoading: false,\r\n poolSaving: false,\r\n currentIntervalStartDate: \"\",\r\n currentIntervalEndDate: \"\",\r\n programIntervalStartDate: \"\",\r\n programIntervalEndDate: \"\",\r\n selectionInterval: \"\"\r\n\r\n }\r\n loadPoolDataSubscription?: Subscription\r\n\r\n closeSubscription?: Subscription\r\n componentDidMount() {\r\n this.loadPoolData()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.closeSubscription && this.closeSubscription.unsubscribe()\r\n this.loadPoolDataSubscription && this.loadPoolDataSubscription.unsubscribe()\r\n }\r\n loadPoolData = () => {\r\n this.setState({ poolLoading: true })\r\n this.loadPoolDataSubscription && this.loadPoolDataSubscription.unsubscribe()\r\n this.loadPoolDataSubscription = PoolGeneralInfoGetObservable(this.props.poolId).subscribe(\r\n (data: PoolData) => {\r\n const currentStartDate = parseISO(data.ProgramIntervalStartDate)\r\n const currentEndDate = parseISO(data.ProgramIntervalEndDate)\r\n \r\n const nextStartDate = new Date(currentStartDate)\r\n nextStartDate.setFullYear(nextStartDate?.getFullYear() + 1)\r\n\r\n const nextEndDate = new Date (currentEndDate)\r\n nextEndDate.setFullYear(nextEndDate?.getFullYear() + 1)\r\n\r\n this.setState({\r\n currentIntervalStartDate: !!currentStartDate.getDate() ? currentStartDate.toISOString() : \"\",\r\n currentIntervalEndDate: !!currentEndDate.getDate() ? currentEndDate.toISOString() : \"\",\r\n programIntervalStartDate: !!nextStartDate.getDate() ? nextStartDate.toISOString() : \"\",\r\n programIntervalEndDate: !!nextEndDate.getDate() ? nextEndDate.toISOString() : \"\",\r\n selectionInterval: data.SelectionInterval,\r\n poolLoading: false\r\n })\r\n },\r\n () => this.setState({ poolLoading: false })\r\n )\r\n }\r\n handleProgramIntervalStartDateChange = (date: Date | null) => {\r\n this.setState({ programIntervalStartDate: date ? date.toISOString() : \"\" })\r\n }\r\n handleProgramIntervalEndDateChange = (date: Date | null) => {\r\n this.setState({ programIntervalEndDate: date ? date.toISOString() : \"\" })\r\n }\r\n\r\n showConfirmation = () => this.setState({ showConfirmationModal: true })\r\n\r\n hideConfirmation = () => this.setState({ showConfirmationModal: false })\r\n\r\n closeProgram = () => {\r\n if (!this.isIntervalValid()) {\r\n return\r\n }\r\n this.setState({ poolSaving: true })\r\n this.closeSubscription && this.closeSubscription.unsubscribe\r\n this.closeSubscription = CloseProgramYearIntervalObservable({\r\n PoolID: this.props.poolId,\r\n SelectionInterval: this.state.selectionInterval,\r\n DateFrom: format(parseISO(this.state.programIntervalStartDate || \"\"), \"MM/dd/yyyy\"),\r\n DateTo: format(parseISO(this.state.programIntervalEndDate || \"\"), \"MM/dd/yyyy\")\r\n }).subscribe(\r\n result => {\r\n toast.success(result)\r\n this.setState({ showConfirmationModal: false, showEditPool: true, poolSaving: false })\r\n },\r\n error => {\r\n toast.error(error.errorData?.message || error.message)\r\n this.setState({ poolSaving: false })\r\n }\r\n )\r\n }\r\n validateInterval = (): ValidationStatus => {\r\n const result: ValidationStatus = {\r\n isValid: true,\r\n errorMessage: \"\"\r\n }\r\n const programIntervalStartDate = this.state.programIntervalStartDate || \"\"\r\n const programIntervalEndDate = this.state.programIntervalEndDate || \"\"\r\n const startDate = programIntervalStartDate ? parseISO(programIntervalStartDate) : undefined\r\n const endDate = programIntervalEndDate ? parseISO(programIntervalEndDate) : undefined\r\n if (!startDate) {\r\n result.isValid = false\r\n result.errorMessage = \"Date From can't be blank\"\r\n return result\r\n }\r\n if (!endDate) {\r\n result.isValid = false\r\n result.errorMessage = \"Date To can't be blank\"\r\n return result\r\n }\r\n if (startDate >= endDate) {\r\n result.isValid = false\r\n result.errorMessage = \"Date To should be later than Date From\"\r\n return result\r\n }\r\n const startYear = startDate.getFullYear()\r\n const endYear = endDate.getFullYear()\r\n if (startYear != endYear) {\r\n result.isValid = false\r\n result.errorMessage = \"The From and To dates cannot be more than one calendar year in duration\"\r\n return result\r\n }\r\n const d = new Date();\r\n const currYear = d.getFullYear()\r\n if (currYear > startYear) {\r\n result.isValid = false\r\n result.errorMessage = \"The program year cannot be lesser than current year\"\r\n return result\r\n }\r\n const nextYear = currYear + 1\r\n if (startYear > nextYear) {\r\n result.isValid = false\r\n result.errorMessage = \"The program year cannot be greater than one consecutive year\"\r\n return result\r\n }\r\n return result\r\n\r\n }\r\n isIntervalValid = () => {\r\n const validationStatus = this.validateInterval()\r\n return validationStatus.isValid\r\n }\r\n\r\n render() {\r\n const { currentIntervalStartDate, currentIntervalEndDate,\r\n programIntervalStartDate, programIntervalEndDate,\r\n selectionInterval } = this.state\r\n \r\n const currentStartDate = currentIntervalStartDate ? parseISO(currentIntervalStartDate) : undefined\r\n const currentEndDate = currentIntervalEndDate ? parseISO(currentIntervalEndDate) : undefined\r\n const nextStartDate = programIntervalStartDate ? parseISO(programIntervalStartDate) : undefined\r\n const nextEndDate = programIntervalEndDate ? parseISO(programIntervalEndDate) : undefined\r\n\r\n const validationStatus = this.validateInterval()\r\n\r\n return <>\r\n \r\n {this.state.showEditPool && }\r\n \r\n <>\r\n

\r\n You are about to close the current program interval {currentStartDate ? format(currentStartDate, \"MM/dd/yyyy\") : \"\"} - {currentEndDate ? format(currentEndDate, \"MM/dd/yyyy\") : \"\"} for pool {this.props.poolName}.\r\n

\r\n

\r\n Once the current program interval is closed no further random selections can be run for that interval.\r\n

\r\n

\r\n A new interval will be created and incremented by one year. All other pool settings and criteria will remain the same as the current interval. Program compliance calculations will be reset to reflect the new program interval.\r\n

\r\n

\r\n \r\n \r\n Program Interval (New):\r\n \r\n this.handleProgramIntervalStartDateChange(date as Date)} />\r\n \r\n To\r\n \r\n this.handleProgramIntervalEndDateChange(date as Date)} />\r\n \r\n \r\n {!validationStatus.isValid && \r\n \r\n \r\n \r\n {validationStatus.errorMessage}\r\n }\r\n \r\n \r\n Selection Interval:\r\n {selectionInterval}\r\n \r\n

\r\n

\r\n Any pool configuration changes to the new program interval pool must be made on the pool detail page before the first selection is run. Once the first selection has been performed, most pool configurations will be locked.\r\n

\r\n

To continue press Verify.

\r\n \r\n
\r\n \r\n }\r\n}\r\n","import { AccountTypeID, RpAccountType } from \"../../config/Constants\"\r\nimport { Filter, Sort } from \"../GridRequest\"\r\nimport GridResponse from \"../GridResponse\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport PoolMemberRecord from \"./PoolMembersModel/PoolMemberRecord\"\r\n\r\nconst Columns = [\"ActiveSince\", \"Company\", \"IDNumber\", \"Occupation\", \"Location\", \"Name\", \"RegulatoryMode\", \"Category\", \"Supervisor1\", \"Supervisor2\",\r\n\"HireDate\", \"TerminationDate\", \"PreEmploymentTestOnFile\", \"Gender\", \"DateOfBirth\", \"AddressLine1\", \"City\", \"State\", \"Zip\", \"WorkPhone\", \"CellPhone\",\r\n\"Email\", \"User1\", \"User2\", \"User3\", \"User4\", \"User5\", \"User6\", \"User7\", \"User8\", \"User9\", \"User10\", \"Manager\", \"ReasonForInactivation\"] as const\r\ntype Column = typeof Columns[number]\r\n\r\nexport type ColumnFilters = Record\r\nexport type PoolMembersGridResponse = GridResponse & ColumnFilters\r\n\r\nexport interface PoolMembersOptions {\r\n poolId: number\r\n inactive: boolean | null\r\n search: {\r\n field: string\r\n text: string\r\n }\r\n sort: Sort\r\n filters: Filter[]\r\n columnFilters: Filter[]\r\n pageNumber: number\r\n pageSize: number\r\n}\r\n\r\nfunction filters(filters: Filter[] = []) {\r\n return {\r\n Location: filters.find(filter => filter.column === \"Location\")?.values || [],\r\n RegulatoryMode: filters.find(filter => filter.column === \"RegulatoryMode\")?.values || [],\r\n ID: filters.find(filter => filter.column === \"IDNumber\")?.values || [],\r\n Company: filters.find(filter => filter.column === \"Company\")?.values || [],\r\n Name: filters.find(filter => filter.column === \"Name\")?.values || [],\r\n ActiveSince: filters.find(filter => filter.column === \"ActiveSince\")?.values || [],\r\n Occupation: filters.find(filter => filter.column === \"Occupation\")?.values || [],\r\n Category: filters.find(filter => filter.column === \"Category\")?.values || [],\r\n Supervisor1: filters.find(filter => filter.column === \"Supervisor1\")?.values || [],\r\n Supervisor2: filters.find(filter => filter.column === \"Supervisor2\")?.values || [],\r\n HireDate: filters.find(filter => filter.column === \"HireDate\")?.values || [],\r\n TerminationDate: filters.find(filter => filter.column === \"TerminationDate\")?.values || [],\r\n PreEmploymentTestOnFile: filters.find(filter => filter.column === \"PreEmploymentTestOnFile\")?.values || [],\r\n Gender: filters.find(filter => filter.column === \"Gender\")?.values || [],\r\n DateOfBirth: filters.find(filter => filter.column === \"DateOfBirth\")?.values || [],\r\n AddressLine1: filters.find(filter => filter.column === \"AddressLine1\")?.values || [],\r\n City: filters.find(filter => filter.column === \"City\")?.values || [],\r\n State: filters.find(filter => filter.column === \"State\")?.values || [],\r\n Zip: filters.find(filter => filter.column === \"Zip\")?.values || [],\r\n WorkPhone: filters.find(filter => filter.column === \"WorkPhone\")?.values || [],\r\n CellPhone: filters.find(filter => filter.column === \"CellPhone\")?.values || [],\r\n Email: filters.find(filter => filter.column === \"Email\")?.values || [],\r\n User1: filters.find(filter => filter.column === \"User1\")?.values || [],\r\n User2: filters.find(filter => filter.column === \"User2\")?.values || [],\r\n User3: filters.find(filter => filter.column === \"User3\")?.values || [],\r\n User4: filters.find(filter => filter.column === \"User4\")?.values || [],\r\n User5: filters.find(filter => filter.column === \"User5\")?.values || [],\r\n User6: filters.find(filter => filter.column === \"User6\")?.values || [],\r\n User7: filters.find(filter => filter.column === \"User7\")?.values || [],\r\n User8: filters.find(filter => filter.column === \"User8\")?.values || [],\r\n User9: filters.find(filter => filter.column === \"User9\")?.values || [],\r\n User10: filters.find(filter => filter.column === \"User10\")?.values || [],\r\n Manager: filters.find(filter => filter.column === \"Manager\")?.values || [],\r\n ReasonForInactivation: filters.find(filter => filter.column === \"ReasonForInactivation\")?.values || [],\r\n }\r\n}\r\n\r\nfunction gridParams(options: PoolMembersOptions): string {\r\n return JSON.stringify({\r\n PoolID: options.poolId,\r\n RandomSelection: false,\r\n Inactive: options.inactive,\r\n RpAccountType: RpAccountType,\r\n PersonID: 0,\r\n SortGrid: { SortColumn: options.sort?.column || \"\", SortOrder: options.sort?.order.toUpperCase() === \"DESC\" ? \"DSC\" : options.sort?.order.toUpperCase() },\r\n Filters: filters(options.columnFilters),\r\n GridFilters: filters(options.filters),\r\n PageNumber: options.pageNumber,\r\n PageSize: options.pageSize || 20,\r\n })\r\n}\r\n\r\nfunction exportParams(options: PoolMembersOptions): string {\r\n return JSON.stringify({\r\n Filters: filters(options.columnFilters),\r\n Inactive: options.inactive,\r\n PoolID: options.poolId,\r\n RandomSelection: false,\r\n RpAccountType: RpAccountType,\r\n })\r\n}\r\n\r\nfunction printParams(values: number[], options: PoolMembersOptions): string {\r\n return JSON.stringify({\r\n AccountTypeID: AccountTypeID,\r\n Inactive: options.inactive,\r\n PersonID: values,\r\n PoolID: options.poolId,\r\n RandomSelection: false,\r\n RpAccountType: RpAccountType,\r\n })\r\n}\r\n\r\nexport const PoolMembersGridObservable = (params: PoolMembersOptions) => ObservableFromFetch(\"RandomTest/GetPoolMembersList\", gridParams(params))\r\nexport const PoolMembersExportCsv = (params: PoolMembersOptions) => ObservableFromFetch(\"RandomTest/ExportPoolMember\", exportParams(params))\r\nexport const PoolMembersPrint = (values: number[], params: PoolMembersOptions) => ObservableFromFetch(\"WorkforceRandomTest/PrintPoolMember\", printParams(values, params))\r\n\r\nexport function ChangePersonStatus(poolID: number, personIDs: number[], toogleMode: number, accountID: number) {\r\n const requestBody = JSON.stringify({\r\n PoolID: poolID,\r\n PersonIDs: personIDs,\r\n ToogleMode: toogleMode,\r\n AccountID: accountID\r\n })\r\n return ObservableFromFetch(\"RandomTest/InactivePerson\", requestBody)\r\n}","import * as React from \"react\"\r\nimport RandomPersonnelIdentifier from \"../../api/Randoms/RandomPersonnelModel/RandomPersonnelIdentifier\"\r\nimport Checkbox from \"../Checkbox\"\r\n\r\nexport interface RandomPersonnelCheckboxProps {\r\n id: string\r\n person: RandomPersonnelIdentifier\r\n checked: boolean\r\n onChange: (person: RandomPersonnelIdentifier, checked: boolean) => void\r\n}\r\n\r\nexport default class RandomPersonnelCheckbox extends React.PureComponent {\r\n onChange = (e: React.ChangeEvent) => this.props.onChange(this.props.person, e.target.checked)\r\n render() { return }\r\n}\r\n","import React from \"react\"\r\nimport { Form } from \"react-bootstrap\"\r\nimport { ConnectDragSource, ConnectDropTarget, DragSource, DragSourceConnector, DragSourceMonitor, DropTarget, DropTargetConnector, DropTargetMonitor } from \"react-dnd\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport CustomizableColumn from \"./CustomizableColumn\"\r\n\r\nexport const DraggableTypeColumn = \"Column\"\r\n\r\ninterface DraggableColumnProps {\r\n column: CustomizableColumn\r\n moveColumn: (id: string, to: number) => void\r\n findColumn: (id: string) => { index: number }\r\n onVisibilityChange: (name: string, visible: boolean) => void\r\n}\r\n\r\ninterface DragDropColumnProps extends DraggableColumnProps {\r\n connectDragSource: ConnectDragSource\r\n isDragging: boolean\r\n connectDropTarget: ConnectDropTarget\r\n}\r\n\r\nconst DraggableColumnSource = {\r\n beginDrag(props: DraggableColumnProps) {\r\n return {\r\n id: props.column.name,\r\n originalIndex: props.findColumn(props.column.name).index\r\n }\r\n },\r\n endDrag(props: DraggableColumnProps, monitor: DragSourceMonitor) {\r\n const { id: droppedId, originalIndex } = monitor.getItem()\r\n if (!monitor.didDrop()) {\r\n props.moveColumn(droppedId, originalIndex)\r\n }\r\n }\r\n}\r\n\r\nconst DraggableColumnCollect = (connect: DragSourceConnector, monitor: DragSourceMonitor) => ({\r\n connectDragSource: connect.dragSource(),\r\n isDragging: monitor.isDragging()\r\n})\r\n\r\nconst DroppableColumnTarget = {\r\n canDrop: () => false,\r\n hover(props: DraggableColumnProps, monitor: DropTargetMonitor) {\r\n const { id: draggedId } = monitor.getItem()\r\n if (draggedId !== props.column.name) {\r\n const { index: overIndex } = props.findColumn(props.column.name)\r\n props.moveColumn(draggedId, overIndex)\r\n }\r\n }\r\n}\r\n\r\nconst DroppableColumnCollect = (connect: DropTargetConnector) => ({ connectDropTarget: connect.dropTarget() })\r\n\r\nclass Column extends React.Component {\r\n handleVisibilityChange = (e: React.ChangeEvent) => {\r\n this.props.onVisibilityChange(e.target.name, e.target.checked)\r\n }\r\n\r\n render() {\r\n const { column, isDragging, connectDragSource, connectDropTarget } = this.props\r\n return connectDropTarget(connectDragSource(\r\n
\r\n \r\n
\r\n ))\r\n }\r\n}\r\n\r\nexport default DropTarget(DraggableTypeColumn, DroppableColumnTarget, DroppableColumnCollect)(DragSource(DraggableTypeColumn, DraggableColumnSource, DraggableColumnCollect)(Column))\r\n","import React from \"react\"\r\nimport { ConnectDropTarget, DropTarget, DropTargetConnector } from \"react-dnd\"\r\nimport Column, { DraggableTypeColumn } from \"./Column\"\r\nimport CustomizableColumn from \"./CustomizableColumn\"\r\n\r\nexport interface DroppableContainerProps {\r\n columns: CustomizableColumn[]\r\n onChangeColumnsList: (columns: CustomizableColumn[]) => void\r\n onVisibilityChange: (name: string, visible: boolean) => void\r\n}\r\n\r\ninterface ExtendedDroppableContainerProps extends DroppableContainerProps {\r\n connectDropTarget: ConnectDropTarget\r\n}\r\n\r\nconst DroppableColumnTarget = { canDrop: () => true }\r\n\r\nconst DroppableColumnCollect = (connect: DropTargetConnector) => ({ connectDropTarget: connect.dropTarget() })\r\n\r\nclass DroppableContainer extends React.Component {\r\n moveColumn = (id: string, atIndex: number) => {\r\n const { column, index } = this.findColumn(id)\r\n if (column) {\r\n const newColumns = [...this.props.columns];\r\n const prevItem = newColumns.splice(atIndex, 1, column);\r\n newColumns.splice(index, 1, prevItem[0]);\r\n this.props.onChangeColumnsList(newColumns)\r\n }\r\n }\r\n\r\n findColumn = (id: string) => {\r\n const column = this.props.columns.filter((c) => c.name === id)[0]\r\n return {\r\n column,\r\n index: this.props.columns.indexOf(column),\r\n }\r\n }\r\n\r\n render() {\r\n const { connectDropTarget } = this.props\r\n return connectDropTarget(\r\n
\r\n {this.props.columns.filter(col => col.customize).map((column) => (\r\n ))}\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default DropTarget(DraggableTypeColumn, DroppableColumnTarget, DroppableColumnCollect)(DroppableContainer)\r\n","import * as React from \"react\"\r\nimport { Modal, Button } from \"react-bootstrap\"\r\nimport { DndProvider } from \"react-dnd\"\r\nimport { HTML5Backend } from \"react-dnd-html5-backend\"\r\nimport CustomizableColumn from \"./CustomizableColumn\"\r\nimport DroppableContainer from \"./Container\"\r\n\r\ninterface ColumnsCustomizeModalProps {\r\n show: boolean\r\n columns: CustomizableColumn[]\r\n storeKey?:string\r\n onSave: (columns: CustomizableColumn[]) => void\r\n onClose: () => void\r\n}\r\n\r\ninterface ColumnsCustomizeModalState {\r\n columns: CustomizableColumn[]\r\n}\r\n\r\nexport default class ColumnsCustomizeModal extends React.Component {\r\n state: ColumnsCustomizeModalState = {\r\n columns: [...this.props.columns]\r\n }\r\n\r\n handleChangeColumnsList = (columns: CustomizableColumn[]) => this.setState({ columns: columns })\r\n\r\n handleVisibilityChange = (name: string, visible: boolean) => {\r\n let newColumns = this.state.columns.map(column => {\r\n if (name === column.name) {\r\n return { ...column, visible: visible }\r\n }\r\n return column\r\n })\r\n\r\n this.setState({ columns: newColumns })\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ columns: this.props.columns })\r\n this.props.onClose()\r\n }\r\n handleSave = () => {\r\n const key = this.props.storeKey || \"\";\r\n saveCustomized(key, this.state.columns);\r\n this.props.onSave(this.state.columns);\r\n }\r\n\r\n render() {\r\n return \r\n \r\n CUSTOMIZE COLUMNS\r\n \r\n \r\n
Select columns you wish to view. Drag and drop columns to change the viewing order.
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n }\r\n}\r\n\r\nexport function saveCustomized(key: string, columns: CustomizableColumn[]) {\r\n if (!key) {\r\n return columns;\r\n }\r\n const datStr = JSON.stringify(columns)\r\n localStorage.setItem(key, datStr)\r\n}\r\n\r\nexport function loadCustomized(key: string, defaultColumns: CustomizableColumn[]) {\r\n if (!key) {\r\n return defaultColumns\r\n }\r\n const datStr = localStorage.getItem(key);\r\n\r\n if (!datStr) {\r\n saveCustomized(key, defaultColumns);\r\n return defaultColumns\r\n }\r\n const savedColumns: CustomizableColumn[] = JSON.parse(datStr);\r\n\r\n if (validate(savedColumns, defaultColumns)) {\r\n return savedColumns\r\n }\r\n else {\r\n saveCustomized(key, defaultColumns);\r\n return defaultColumns\r\n }\r\n}\r\n\r\nfunction validate(savedColumns: CustomizableColumn[], defaultColumns: CustomizableColumn[]) {\r\n if (savedColumns.length !== defaultColumns.length) return false\r\n const columnNames: string[] = savedColumns.map(col => col.name)\r\n const columLabels: string[] = savedColumns.map(col => col.label || \"\")\r\n return defaultColumns.every(col => columnNames.includes(col.name) && columLabels.includes(col.label || \"\"))\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport GeneralInformation, {PersonDemographicRecord, PersonDemographicObject, RegMode} from \"./OrderResultModel/GeneralInformation\"\r\nimport { GetUserId } from \"../../storage/UserId\"\r\nimport { UpdateMethodID } from \"../../config/Constants\"\r\n\r\n\r\n export const GeneralInformationGet = (PersonID: number) => ObservableFromFetch(\"RandomTest/GetPersonnelGeneralInformation?personID=\"+PersonID)\r\n\r\n export function GeneralInformationSave(data: GeneralInformation | undefined): Observable {\r\n const urlParams: string = new URLSearchParams({\r\n loginID: `${GetUserId()}`,\r\n updateMethodID: UpdateMethodID.toString()\r\n }).toString()\r\n const requestBody: string = JSON.stringify(data)\r\n \r\n return ObservableFromFetch(\"/RandomTest/AddOrUpdatePerson?\" + urlParams, requestBody, \"PUT\")\r\n }\r\n \r\n export const GetPersonDemographicsDetail = (PersonID: number) => ObservableFromFetch(\"RandomTest/GetPersonDemographicsDetail?personID=\"+PersonID)\r\n \r\n export function UpdatePersonDemographic(data: PersonDemographicObject | undefined): Observable {\r\n const urlParams: string = new URLSearchParams({\r\n regionID: '0',\r\n locationID: '0'\r\n }).toString()\r\n const requestBody: string = JSON.stringify(data)\r\n \r\n return ObservableFromFetch(\"/RandomTest/UpdatePersonDemographicDetail?\" + urlParams, requestBody, \"POST\")\r\n }\r\n \r\n export function SaveRegulatoryMode(PersonID: number, items: RegMode[]): Observable {\r\n const data = {\r\n PersonID: PersonID,\r\n RegEmpCatList: items\r\n }\r\n const requestBody: string = JSON.stringify(data)\r\n \r\n return ObservableFromFetch(\"/RandomTest/SaveRegulatoryMode\", requestBody, \"POST\")\r\n }\r\n","export default function FormatPhone(value: string) {\r\n const np = \"N/P\"\r\n if (value.length > 0) {\r\n const test = (value: string, compareValue: string): boolean => value.length <= compareValue.length && compareValue.slice(0, value.length) === value.toUpperCase()\r\n if (test(value, np)) {\r\n return value.toUpperCase()\r\n }\r\n if (value.length > 1 && test(value.slice(0, -1), np)) {\r\n return value.slice(0, -1).toUpperCase()\r\n }\r\n }\r\n var r = value.replace(/\\D/g, \"\")\r\n if (r.length > 5) {\r\n r = r.replace(/^(\\d{3})(\\d{3})(\\d{0,4}).*/, \"$1-$2-$3\")\r\n } else if (r.length > 2) {\r\n r = r.replace(/^(\\d{3})(\\d{0,4})/, \"$1-$2\")\r\n }\r\n if (r === value + '-') {\r\n // removing last minus symbol\r\n r = r.slice(0, -1)\r\n }\r\n return r\r\n}\r\n","export default function FormatSSN(value: string) {\r\n var r = value.replace(/\\D/g, \"\");\r\n if (r.length > 4) {\r\n r = r.replace(/^(\\d{3})(\\d{2})(\\d{0,4}).*/, \"$1-$2-$3\");\r\n } else if (r.length > 2) {\r\n r = r.replace(/^(\\d{3})(\\d{0,3})/, \"$1-$2\");\r\n }\r\n if (r === value + '-') {\r\n // removing last minus symbol\r\n r = r.slice(0, -1);\r\n }\r\n return r;\r\n}\r\n","export default function FormatZipCode(value: string) {\r\n var r = value.replace(/\\D/g, \"\")\r\n if (r.length > 6) {\r\n r = r.slice(0, 6)\r\n }\r\n return r\r\n}\r\n\r\nexport function ValidZipCode(postalCode: string) {\r\n postalCode = postalCode.toString().toUpperCase()\r\n\r\n var us = new RegExp(\"^\\\\d{5}(-{0,1}\\\\d{4})?$\")\r\n var ca = new RegExp(/^[ABCEGHJ-NPRSTVXY][0-9][ABCEGHJ-NPRSTV-Z][ ][0-9][ABCEGHJ-NPRSTV-Z][0-9]$/)\r\n\r\n if (us.test(postalCode)) {\r\n return true\r\n }\r\n\r\n if (ca.test(postalCode)) {\r\n return true\r\n }\r\n return false\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Form } from \"react-bootstrap\"\r\nimport MaskedInput from \"react-maskedinput\"\r\n\r\ninterface PhoneNumberMaskedInputProps {\r\n allowNotProvided?: boolean\r\n autoComplete?: string\r\n className?: string\r\n isInvalid?: boolean\r\n readOnly?: boolean\r\n disabled?: boolean\r\n intl11?:boolean\r\n size?: \"sm\" | \"lg\"\r\n value: string\r\n id?: string\r\n onChange: (value: string) => void\r\n}\r\n\r\nexport default class PhoneNumberMaskedInput extends Component {\r\n render() {\r\n let msk = \"111-111-1111\"\r\n if(this.props.intl11 === true){\r\n msk = \"1-111-111-1111\"\r\n }\r\n return /[\\d|n|N]/.test(char) ? \"N\" : \"\" },\r\n \"s\": { validate: (char: string) => /[\\d|/]/.test(char) ? \"N\" : \"\" },\r\n \"p\": { validate: (char: string) => /[\\d|p|P]/.test(char) ? \"P\" : \"\" }\r\n }}\r\n mask={!this.props.allowNotProvided || /^\\d+/.test(this.props.value) ? msk : \"nsp\"}\r\n onChange={(e) => this.props.onChange(e.target.value)} />\r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { AccountTypeID } from \"../../config/Constants\"\r\nimport AutoFilterLocation from \"./LocationModel/AutoFilterLocation\"\r\nimport AutoFilterCompany from \"../Companies/CompanyModel/AutoFilterCompany\"\r\n\r\nexport default function AutoFilterLocationsGetObservable(company: number, region: number | string, filter: string, portal: number = 0, hideInactive: boolean = false): Observable {\r\n const options = {\r\n AccountType: AccountTypeID,\r\n ImplementationID: portal,\r\n ParentAccountID: company,\r\n AutoFilterValue: filter,\r\n IsFilters: true,\r\n HideInactive: hideInactive\r\n }\r\n const requestBody: string = JSON.stringify(region ? { ...options, RegionID: region } : options)\r\n\r\n return ObservableFromFetch(\"Order/GetAutoFilterLocation\", requestBody)\r\n}\r\n\r\nexport function AutoFilterLocationsGet(company: number, filter: string, hideInactive: boolean = false) {\r\n const requestBody = JSON.stringify({\r\n AccountType: AccountTypeID,\r\n ParentAccountID: company,\r\n AutoFilterValue: filter,\r\n IsFilters: true,\r\n HideInactive: hideInactive\r\n })\r\n\r\n return ObservableFromFetch(\"Order/GetAutoFilterLocation\", requestBody)\r\n}\r\n\r\nexport function GetUserLocationsAdministrators(companyID: number, userID: number) {\r\n const requestBody: string = JSON.stringify({\r\n CompanyID: companyID,\r\n ApplicationUserID: userID\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderUserFileMaintenance/GetUserLocationsAdministrators\", requestBody)\r\n}\r\n\r\nexport function AutoFilterLocationWithRegionGetObservable(regionId: number, filter: string): Observable {\r\n const requestBody: string = JSON.stringify({\r\n ParentAccountID: \"\",\r\n AccountType: AccountTypeID,\r\n AutoFilterValue: filter,\r\n IncludeCompany: false,\r\n IncludeLocation: true,\r\n IncludeMaster: false,\r\n IncludeParent: true,\r\n IncludeRegion: false,\r\n RegionID: regionId\r\n })\r\n\r\n return ObservableFromFetch(\"/Order/GetAutoFilterLocationWithRegion\", requestBody)\r\n}\r\n\r\nexport function AutoFilterLocationWithoutRegionGetObservable(): Observable {\r\n const requestBody: string = JSON.stringify({\r\n //ParentAccountID: , // TODO: Need to corrected once authorized user data/account be available\r\n IncludeCompany: false,\r\n IncludeLocation: true,\r\n IncludeMaster: false,\r\n IncludeParent: true,\r\n IncludeRegion: false,\r\n })\r\n\r\n return ObservableFromFetch(\"RandomTest/GetLocationWithoutRegion\", requestBody)\r\n}\r\n","import * as React from \"react\"\r\nimport { Button } from \"react-bootstrap\"\r\nimport { Typeahead, InputProps } from \"react-bootstrap-typeahead\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport State from \"../../api/OrderRequests/OrderRequestsModel/State\"\r\n\r\ninterface StateSelectProps {\r\n id?: string\r\n selected?: State\r\n selectedCode?: string\r\n states: State[] | undefined\r\n inputProps?: InputProps\r\n isInvalid?: boolean\r\n isDisabled?: boolean\r\n emptyLabel?: string\r\n placeholder?: string\r\n dropButtonIfInvalid?: boolean\r\n onChange: (item: State) => void\r\n}\r\n\r\nexport default class StateSelect extends React.Component {\r\n typeahead = React.createRef>()\r\n\r\n render() {\r\n const disabled = this.props.isDisabled\r\n const selected = this.props.selected || this.props.selectedCode ? (this.props.states || []).find(item => item.Abbreviation.toLowerCase() === this.props.selectedCode?.toLowerCase()) : undefined\r\n return props.selected.length > 0 || option.FullName.toLowerCase().indexOf(props.text.toLowerCase()) !== -1 || option.Abbreviation.toLowerCase().indexOf(props.text.toLowerCase()) !== -1 }\r\n onChange={(items: State[]) => this.props.onChange(items[0])}\r\n disabled={disabled}\r\n options={this.props.states ? this.props.states : []}\r\n selected={selected ? [selected] : []}\r\n emptyLabel={this.props.emptyLabel}\r\n placeholder={this.props.placeholder}\r\n isInvalid={this.props.isInvalid}>\r\n {(this.props.dropButtonIfInvalid || !this.props.isInvalid) &&\r\n }\r\n \r\n }\r\n\r\n static defaultProps = {\r\n id: \"state\",\r\n isInvalid: false,\r\n isDisabled: false,\r\n dropButtonIfInvalid: false,\r\n emptyLabel: \"No State Found\",\r\n placeholder: \"Select\"\r\n }\r\n}\r\n","import { Observable } from \"rxjs\";\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { AlcoholTestSampleType } from \"./OrderRequestsModel/AlcoholTestSampleType\"\r\nimport { TestReasonType } from \"./OrderRequestsModel/TestReasonType\"\r\nimport State from \"./OrderRequestsModel/State\"\r\nimport {GetRegulatoryModeDonor} from \"../../components/OrderRequests/OrderModels\"\r\n\r\nexport function AlcoholTestSampleTypesObservable(): Observable {\r\n return ObservableFromFetch(\"Order/GetAlcoholTestSampleTypes\")\r\n}\r\n\r\nexport function TestReasonsObservable(): Observable {\r\n return ObservableFromFetch(\"order/getreasons\")\r\n}\r\n\r\nexport function StateObservable(): Observable {\r\n return ObservableFromFetch(\"Order/GetStates\")\r\n}\r\n\r\nexport function RegulatoryModeObservable(regModeId: number): Observable {\r\n return ObservableFromFetch(`FFOrderRegulatoryModeDonor/GetRegulatoryModeListByID?regulatoryModeID=${regModeId}`)\r\n}","import { Observable } from \"rxjs\"\r\nimport EmployeeCategory from \"./LabServiceModel/EmployeeCategory\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function EmployeeCategoriesGetObservable(id?: number): Observable {\r\n if (id === undefined) {\r\n return ObservableFromFetch(\"RandomTest/GetEmployeeCategory\")\r\n }\r\n else {\r\n const requestBody: string = new URLSearchParams({\r\n regModeID: id.toString()\r\n }).toString()\r\n return ObservableFromFetch(\"RandomTest/GetEmployeeCategoryWithRegulatoryModeID?\" + requestBody)\r\n }\r\n}","import * as React from \"react\"\r\nimport { Modal, Button, Container, Col, Row, Form } from \"react-bootstrap\"\r\nimport { FaAngleDown, FaLevelUpAlt } from \"react-icons/fa\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css'\r\nimport { Subscription } from \"rxjs\"\r\nimport LabServiceRegulatoryModesGetObservable from \"../../../api/LabService/LabServiceRegulatoryModesGet\"\r\nimport RegulatoryMode from \"../../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport EmployeeCategoriesGetObservable from \"../../../api/LabService/EmployeeCategoriesGet\"\r\nimport EmployeeCategory from \"../../../api/LabService/LabServiceModel/EmployeeCategory\"\r\nimport { RegMode } from \"../../../api/OrderResults/OrderResultModel/GeneralInformation\"\r\nimport { toast } from \"react-toastify\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\n\r\ninterface EmployeeRegModeModalProps {\r\n show: boolean\r\n selectedRegulatoryModes: RegMode[]\r\n\r\n accountType: string\r\n onSave: (regulatoryModes: RegMode[]) => void\r\n onClose: () => void\r\n}\r\n\r\ninterface EmployeeRegModeModalState {\r\n availableRegulatoryModes?: RegulatoryMode[]\r\n isRegulatoryModesLoading: boolean\r\n selectedRegulatoryModes: RegMode[]\r\n availableCategories?: EmployeeCategory[]\r\n isCategoriesLoading: boolean\r\n regulatoryModes: RegMode[]\r\n}\r\nfunction createRegulatoryModes(selectedRegulatoryModes: RegMode[], items_count: number) {\r\n const regulatoryModes: RegMode[] = []\r\n const selectedLength = selectedRegulatoryModes.length\r\n for (let i = 0; i < items_count; i++) {\r\n if (i < selectedLength) {\r\n regulatoryModes[i] = copyRegMode(selectedRegulatoryModes[i])\r\n }\r\n else {\r\n regulatoryModes[i] = createEmptyRegMode()\r\n }\r\n }\r\n return regulatoryModes\r\n}\r\nfunction createEmptyRegulatoryMode() {\r\n const result: RegulatoryMode = {\r\n RegulatoryModeID: -1,\r\n Name: \"\",\r\n DOT: false,\r\n BeginEffectiveDate: \"\",\r\n EndEffectiveDate: \"\",\r\n UserLogin: \"\",\r\n UpdateDate: \"\"\r\n }\r\n return result\r\n}\r\nfunction createEmptyRegMode() {\r\n const result: RegMode = {\r\n EmpCat: \"\",\r\n EmployeeCategoryID: -1,\r\n PersonRegModeEmpCatID: 0,\r\n Primary: false,\r\n RegMode: \"\",\r\n RegulatoryModeID: -1\r\n }\r\n return result\r\n}\r\nfunction createRegMode(src: RegulatoryMode) {\r\n const result: RegMode = createEmptyRegMode()\r\n if (!src) {\r\n return result\r\n }\r\n result.RegulatoryModeID = src.RegulatoryModeID\r\n result.RegMode = src.Name\r\n return result\r\n}\r\nfunction copyRegMode(src: RegMode) {\r\n if (src) {\r\n return { ...src }\r\n }\r\n return createEmptyRegMode()\r\n}\r\nfunction createEmptyEmployeeCategory(regulatoryModeId: number) {\r\n const result: EmployeeCategory = {\r\n EmployeeCategoryID: -1,\r\n Code: \"\",\r\n Name: \"\",\r\n RegulatoryModeID: regulatoryModeId,\r\n BeginEffectiveDate: \"\",\r\n EndEffectiveDate: \"\",\r\n UserLogin: \"\",\r\n UpdateDate: \"\"\r\n }\r\n return result\r\n}\r\n\r\nexport default class EmployeeRegModeModal extends React.Component {\r\n ITEMS_COUNT: number = (this.props.selectedRegulatoryModes.length > 5 ? this.props.selectedRegulatoryModes.length : 5)\r\n state: EmployeeRegModeModalState = {\r\n isRegulatoryModesLoading: false,\r\n selectedRegulatoryModes: this.props.selectedRegulatoryModes,\r\n isCategoriesLoading: false,\r\n regulatoryModes: createRegulatoryModes(this.props.selectedRegulatoryModes, this.ITEMS_COUNT)\r\n }\r\n\r\n subscriptions = new Subscription()\r\n regulatoryModeTypeaheads: React.RefObject>[] = []\r\n categoryTypeaheads: React.RefObject>[] = []\r\n regulatoryModes: RegMode[] = []\r\n\r\n componentDidMount() {\r\n this.createTypeaheads()\r\n this.setState({isRegulatoryModesLoading: true, isCategoriesLoading: true})\r\n this.subscriptions.add(LabServiceRegulatoryModesGetObservable().subscribe(\r\n (data: RegulatoryMode[]) => {\r\n if(data.length > 0){\r\n const item = createEmptyRegulatoryMode()\r\n data.unshift(item)\r\n }\r\n this.setState({\r\n availableRegulatoryModes: data,\r\n isRegulatoryModesLoading: false\r\n })\r\n },\r\n (error) => {\r\n toast.error(FormatError(error)),\r\n this.setState({ isRegulatoryModesLoading: false })\r\n }\r\n ))\r\n\r\n this.subscriptions.add(EmployeeCategoriesGetObservable().subscribe(\r\n (data: EmployeeCategory[]) => {\r\n this.setState({\r\n availableCategories: data,\r\n isCategoriesLoading: false\r\n })\r\n },\r\n (error) => {\r\n toast.error(FormatError(error)),\r\n this.setState({ isCategoriesLoading: false })\r\n }\r\n ))\r\n\r\n\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n }\r\n createTypeaheads() {\r\n this.regulatoryModeTypeaheads = []\r\n this.categoryTypeaheads = []\r\n for (let i = 0; i < this.ITEMS_COUNT; i++) {\r\n const regulatoryModeTypeahead = React.createRef>()\r\n const categoryTypeahead = React.createRef>()\r\n this.regulatoryModeTypeaheads[i] = regulatoryModeTypeahead\r\n this.categoryTypeaheads[i] = categoryTypeahead\r\n }\r\n }\r\n componentDidUpdate(prevProps: EmployeeRegModeModalProps, prevState: EmployeeRegModeModalState) {\r\n if (!(this.isRegulatoryModesEqual(this.props.selectedRegulatoryModes, prevProps.selectedRegulatoryModes))) {\r\n this.setState({\r\n selectedRegulatoryModes: this.props.selectedRegulatoryModes,\r\n regulatoryModes: createRegulatoryModes(this.props.selectedRegulatoryModes, this.ITEMS_COUNT)\r\n })\r\n }\r\n }\r\n\r\n\r\n isRegulatoryModesEqual = (items1: RegMode[], items2: RegMode[]) => {\r\n const itemsString = (items: RegMode[]) => items.map(item => item.RegulatoryModeID).sort().join(\",\")\r\n return itemsString(items1) === itemsString(items2)\r\n }\r\n\r\n\r\n handleSave = () => {\r\n const regulatoryModes = this.state.regulatoryModes || []\r\n for(let i = 0; i < regulatoryModes.length; i++){\r\n if(regulatoryModes[i].RegulatoryModeID < 0)\r\n {\r\n regulatoryModes[i].RegulatoryModeID = 0\r\n regulatoryModes[i].EmployeeCategoryID = 0\r\n }\r\n if(regulatoryModes[i].EmployeeCategoryID < 0)\r\n {\r\n regulatoryModes[i].EmployeeCategoryID = 0\r\n }\r\n }\r\n this.props.onSave(regulatoryModes)\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({\r\n selectedRegulatoryModes: this.props.selectedRegulatoryModes\r\n })\r\n this.props.onClose()\r\n }\r\n\r\n\r\n\r\n handleChangeRegulatoryMode = (item: RegulatoryMode, inputIndex: number) => {\r\n const regulatoryModes = this.state.regulatoryModes || []\r\n if (inputIndex < 0) {\r\n return\r\n }\r\n if (inputIndex >= regulatoryModes.length) {\r\n return\r\n }\r\n regulatoryModes[inputIndex].RegulatoryModeID = item.RegulatoryModeID\r\n regulatoryModes[inputIndex].RegMode = item.Name\r\n this.setState({ regulatoryModes: regulatoryModes })\r\n\r\n }\r\n\r\n\r\n handleChangeCategory = (item: EmployeeCategory, inputIndex: number) => {\r\n const regulatoryModes = this.state.regulatoryModes || []\r\n if (inputIndex < 0) {\r\n return\r\n }\r\n if (inputIndex >= regulatoryModes.length) {\r\n return\r\n }\r\n regulatoryModes[inputIndex].EmployeeCategoryID = item.EmployeeCategoryID\r\n regulatoryModes[inputIndex].EmpCat = item.Name\r\n this.setState({ regulatoryModes: regulatoryModes })\r\n }\r\n\r\n handleChangePrimary = (inputIndex: number) => {\r\n const regulatoryModes = this.state.regulatoryModes || []\r\n for(let i = 0; i < regulatoryModes.length; i++){\r\n regulatoryModes[i].Primary = ((i === inputIndex) && (regulatoryModes[i].RegulatoryModeID >= 0))\r\n }\r\n this.setState({ regulatoryModes: regulatoryModes })\r\n }\r\n createRow = (itemIndex: number) => {\r\n const regulatoryModes = this.state.regulatoryModes || []\r\n const allRegulatoryModes = this.state.availableRegulatoryModes || []\r\n if ((regulatoryModes.length === 0) || (allRegulatoryModes.length === 0)) {\r\n return <>\r\n }\r\n const disabled = this.state.isRegulatoryModesLoading || this.state.isCategoriesLoading\r\n const regulatoryModeTypeahead = this.regulatoryModeTypeaheads[itemIndex]\r\n const categoryTypeahead = this.categoryTypeaheads[itemIndex]\r\n const regMode = regulatoryModes[itemIndex]\r\n const regModeId = regMode.RegulatoryModeID\r\n const regulatoryModeIndex = allRegulatoryModes.findIndex(item => item.RegulatoryModeID === regModeId)\r\n const regulatoryMode = (regulatoryModeIndex >= 0) ? allRegulatoryModes[regulatoryModeIndex] : createEmptyRegulatoryMode()\r\n const allEmployeeCategories = this.state.availableCategories || []\r\n\r\n const employeeCategories = allEmployeeCategories.filter(item => item.RegulatoryModeID === regModeId)\r\n if(employeeCategories.length > 0){\r\n const item = createEmptyEmployeeCategory(regModeId)\r\n employeeCategories.unshift(item)\r\n }\r\n const employeeCategoryId = regMode.EmployeeCategoryID\r\n const employeeCategoryIndex = employeeCategories.findIndex(item => item.EmployeeCategoryID === employeeCategoryId);\r\n const employeeCategory = (employeeCategoryIndex >= 0) ? employeeCategories[employeeCategoryIndex] : createEmptyEmployeeCategory(regModeId)\r\n return \r\n \r\n
\r\n (option.RegulatoryModeID >= 0) ? `${option.Name}` : \"Regulatory Mode\"}\r\n filterBy={(option, props) => {\r\n return props.selected.length > 0 ;\r\n }}\r\n onChange={selected => this.handleChangeRegulatoryMode(selected[0], itemIndex)}\r\n disabled={disabled}\r\n options={(allRegulatoryModes)}\r\n selected={[regulatoryMode]}\r\n emptyLabel=\"No Result Found\"\r\n placeholder=\"Regulatory Mode\">\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n (option.EmployeeCategoryID >= 0) ? `${option.Name} (${option.Code})` : \"Category\"}\r\n filterBy={(option, props) => {\r\n return props.selected.length > 0;\r\n }}\r\n onChange={selected => this.handleChangeCategory(selected[0], itemIndex)}\r\n disabled={disabled}\r\n options={employeeCategories}\r\n selected={[employeeCategory]}\r\n emptyLabel=\"No Result Found\"\r\n placeholder=\"Category\">\r\n \r\n \r\n
\r\n \r\n \r\n = 0}\r\n disabled={disabled && regMode.RegulatoryModeID >= 0}\r\n onChange={(e: React.ChangeEvent) => this.handleChangePrimary(itemIndex)}\r\n className=\"abc-radio abc-radio-primary\" />\r\n \r\n
\r\n\r\n }\r\n\r\n render() {\r\n\r\n const { selectedRegulatoryModes } = this.state\r\n const rows = []\r\n for (let i = 0; i < this.ITEMS_COUNT; i++) {\r\n rows[i] = this.createRow(i)\r\n }\r\n return \r\n \r\n REGULATORY ASSIGNMENTS\r\n \r\n \r\n \r\n \r\n Regulatory Mode\r\n Category\r\n Primary\r\n \r\n {rows}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { Modal, Button, Container, Col, Row, Form } from \"react-bootstrap\"\r\nimport { Supervisor } from \"../../../api/OrderResults/OrderResultModel/GeneralInformation\"\r\nimport PhoneNumberMaskedInput from \"../../FormattedInputs/PhoneNumberMaskedInput\"\r\nimport { PhoneRegexp } from \"../../../config/Constants\"\r\n\r\ninterface SupervisorsModalProps {\r\n Supervisor1: Supervisor\r\n Supervisor2: Supervisor\r\n onSave: (supervisors: Supervisor[]) => void\r\n onClose: () => void\r\n}\r\n\r\ninterface SupervisorsModalState {\r\n Supervisor1FirstName: string\r\n Supervisor1LastName: string\r\n Supervisor1ContactPhone: string\r\n Supervisor2FirstName: string\r\n Supervisor2LastName: string\r\n Supervisor2ContactPhone: string\r\n}\r\n\r\nexport default class EmployeeRegModeModal extends React.Component {\r\n state: SupervisorsModalState = {\r\n Supervisor1FirstName: this.props.Supervisor1.FirstName,\r\n Supervisor1LastName: this.props.Supervisor1.LastName,\r\n Supervisor1ContactPhone: this.props.Supervisor1.ContactPhone,\r\n Supervisor2FirstName: this.props.Supervisor2.FirstName,\r\n Supervisor2LastName: this.props.Supervisor2.LastName,\r\n Supervisor2ContactPhone: this.props.Supervisor2.ContactPhone,\r\n }\r\n\r\n isPhoneValid = (value: string) => !!value.length && (value.replace(/\\D/g, \"\").length === 10 || PhoneRegexp.test(value))\r\n\r\n handleClose = () => this.props.onClose()\r\n\r\n handleSave = () => {\r\n const SuperVisor1 = {FirstName: this.state.Supervisor1FirstName, LastName: this.state.Supervisor1LastName, ContactPhone: this.state.Supervisor1ContactPhone }\r\n const SuperVisor2 = {FirstName: this.state.Supervisor2FirstName, LastName: this.state.Supervisor2LastName, ContactPhone: this.state.Supervisor2ContactPhone }\r\n this.props.onSave([SuperVisor1, SuperVisor2])\r\n }\r\n\r\n render() {\r\n const { Supervisor1FirstName, Supervisor1LastName, Supervisor1ContactPhone, Supervisor2FirstName, Supervisor2LastName, Supervisor2ContactPhone } = this.state\r\n\r\n const requiredSup1Data = !!Supervisor1FirstName.length || !!Supervisor1LastName.length || !!Supervisor1ContactPhone.length\r\n const requiredSup2Data = !!Supervisor2FirstName.length || !!Supervisor2LastName.length || !!Supervisor2ContactPhone.length\r\n const validContactPhone1 = this.isPhoneValid(Supervisor1ContactPhone) || !requiredSup1Data\r\n const validContactPhone2 = this.isPhoneValid(Supervisor2ContactPhone) || !requiredSup2Data\r\n const validSup1FirstName = !!Supervisor1FirstName.length || !requiredSup1Data\r\n const validSup1LastName = !!Supervisor1LastName.length || !requiredSup1Data\r\n const validSup2FirstName = !!Supervisor2FirstName.length || !requiredSup2Data\r\n const validSup2LastName = !!Supervisor2LastName.length || !requiredSup2Data\r\n\r\n return \r\n \r\n Supervisors\r\n \r\n \r\n \r\n \r\n Supervisor 1 First\\Last Names\r\n \r\n this.setState({ Supervisor1FirstName: e.target.value })}\r\n isInvalid={!validSup1FirstName} />\r\n \r\n \r\n this.setState({ Supervisor1LastName: e.target.value })}\r\n isInvalid={!validSup1LastName} />\r\n \r\n \r\n \r\n Supervisor 1 Contact Phone #\r\n \r\n this.setState({ Supervisor1ContactPhone: value })}\r\n isInvalid={!validContactPhone1} />\r\n \r\n \r\n \r\n Supervisor 2 First\\Last Names\r\n \r\n this.setState({ Supervisor2FirstName: e.target.value })}\r\n isInvalid={!validSup2FirstName} />\r\n \r\n \r\n this.setState({ Supervisor2LastName: e.target.value })}\r\n isInvalid={!validSup2LastName} />\r\n \r\n \r\n \r\n Supervisor 2 Contact Phone #\r\n \r\n this.setState({ Supervisor2ContactPhone: value })}\r\n isInvalid={!validContactPhone2} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n}","import React, { Component } from \"react\"\r\nimport { Container, Row, Col, Spinner, Button, Form } from \"react-bootstrap\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { FaAngleDown, FaPencilAlt, FaTimes } from \"react-icons/fa\"\r\nimport MaskedInput from \"react-maskedinput\"\r\nimport { Subscription } from \"rxjs\"\r\nimport GeneralInformation, { PersonDemographicRecord, PersonDemographicObject, RegMode, Supervisor } from \"../../../api/OrderResults/OrderResultModel/GeneralInformation\"\r\nimport { GeneralInformationGet, GetPersonDemographicsDetail } from \"../../../api/OrderResults/GeneralInformationGet\"\r\nimport { toast } from \"react-toastify\"\r\nimport { AppState } from \"../../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\nimport FormatPhone from \"../../../formatters/FormatPhone\"\r\nimport FormatSSN from \"../../../formatters/FormatSSN\"\r\nimport { ValidZipCode } from \"../../../formatters/FormatZipCode\"\r\nimport { BuildUserAccess } from \"../../../authentication/BuildUserAccess\"\r\nimport UserAccessSettings from \"../../../authentication/UserAccessSettings\";\r\nimport DatePicker from 'react-datepicker'\r\nimport 'react-datepicker/dist/react-datepicker.css'\r\nimport { EmailRegexp, PhoneRegexp } from \"../../../config/Constants\"\r\nimport { BirthdayInput } from \"../../FormattedInputs/BirthdayInput\"\r\nimport PhoneNumberMaskedInput from \"../../FormattedInputs/PhoneNumberMaskedInput\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport AutoFilterCompaniesGet from \"../../../api/Companies/AutoFilterCompaniesGet\"\r\nimport AutoFilterCompany from \"../../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport AutoFilterLocation from \"../../../api/Location/LocationModel/AutoFilterLocation\"\r\nimport AutoFilterLocationsGet from \"../../../api/Location/AutoFilterLocationsGet\"\r\nimport State from \"../../../api/OrderRequests/OrderRequestsModel/State\"\r\nimport RegulatoryMode from \"../../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport LabServiceRegulatoryModesGetObservable from \"../../../api/LabService/LabServiceRegulatoryModesGet\"\r\nimport StateSelect from \"../../FormattedInputs/StateSelect\"\r\nimport { StateObservable } from \"../../../api/OrderRequests/OrderRequestsConstraintGet\"\r\nimport { GeneralInformationSave, UpdatePersonDemographic, SaveRegulatoryMode } from \"../../../api/OrderResults/GeneralInformationGet\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport KeyValue from \"../../../api/Administration/Model/KeyValue\"\r\nimport EmployeeRegModeModal from \"./EmployeeRegModeModal\"\r\nimport { isCompanyAdmin, isPortalAdmin } from \"../../../authentication/isAdminRole\"\r\nimport { GetSelectedAssignedClinic } from \"../../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport SupervisorsModal from \"./SupervisorsModal\"\r\n\r\n// TODO: \"CreateRegModeString\" type was copied from Workforce 1.0\r\ntype CreateRegModeString = {\r\n EmpCat: string\r\n EmployeeCategoryID: number\r\n PersonRegModeEmpCatID: number\r\n Primary: boolean\r\n RegMode: string\r\n RegulatoryModeID: number\r\n}\r\n\r\nfunction regulatoryModeValue(results: CreateRegModeString[]): string {\r\n if (results.length > 0) {\r\n let primary: CreateRegModeString | undefined = results.find(item => item.Primary)\r\n let result: string = primary ? primary.RegMode : \"\"\r\n let otherRegModes: string = results.filter(item => !item.Primary).map(item => item.RegMode).join(\", \")\r\n if (otherRegModes !== \"\") {\r\n result = `${result} (${otherRegModes})`\r\n }\r\n return result\r\n } else {\r\n return \"N/P\"\r\n }\r\n}\r\n\r\nconst HeaderRow = (props: { title: string }) =>\r\n \r\n
{props.title}
\r\n
\r\n\r\n\r\nfunction HeaderRowWithSwitchMode(props: { title: string, showEditButton: boolean, editing: boolean, handleToggleEditMode: any }) {\r\n return \r\n
{props.title}
\r\n {props.showEditButton && \r\n
\r\n \r\n
\r\n \r\n }\r\n
\r\n}\r\n\r\nconst InfoRow = (props: { title: string, value: string | null, className?: string }) => \r\n {props.title}\r\n {props.value}\r\n\r\n\r\nconst UserRow = (props: { title: string, value: string | null, empty: string }) => {\r\n const caption = props.title.toString().trim()\r\n return (\r\n \r\n {caption.length > 0 && caption !== \"N/A\" ? caption : props.empty}\r\n {props.value}\r\n \r\n )\r\n}\r\nconst InfoRowWithInput = (props: { title: string, value: string | null, className?: string, input: React.ReactNode }) => \r\n {props.title}\r\n \r\n {props.input}\r\n \r\n\r\n\r\nconst UserRowWithInput = (props: { title: string, value: string | null, empty: string }) => {\r\n const caption = props.title.toString().trim()\r\n return (\r\n \r\n {caption.length > 0 && caption !== \"N/A\" ? caption : props.empty}\r\n {props.value}\r\n \r\n )\r\n}\r\n\r\ninterface GeneralInfoProps {\r\n PersonID: number\r\n isGov?: boolean\r\n onUpdate?: () => void\r\n}\r\n\r\ninterface GeneralInfoAuthProps {\r\n userPermissions?: UserAccessSettings\r\n isPortalAdmin: boolean\r\n isCompanyAdmin: boolean\r\n companyID: number\r\n}\r\n\r\ninterface GeneralInfoState {\r\n data?: GeneralInformation,\r\n editData?: GeneralInformation,\r\n editing: boolean,\r\n saving: boolean\r\n isGeneralInfoLoading: boolean,\r\n isPersonDemographicsDetailLoading: boolean,\r\n isRegulatoryModesLoading: boolean\r\n isStatesLoading: boolean\r\n isLocationsLoading: boolean\r\n isCompaniesLoading: boolean\r\n isSupervisorsLoading: boolean\r\n regulatoryModes?: RegulatoryMode[]\r\n selectedRegulatoryMode?: RegulatoryMode\r\n selectedCompany?: AutoFilterCompany\r\n selectedLocation?: AutoFilterLocation\r\n companies: AutoFilterCompany[]\r\n locations: AutoFilterLocation[]\r\n states: State[]\r\n isSupervisorsLoaded: boolean\r\n isStatesLoaded: boolean\r\n isRegulatoryModesLoaded: boolean\r\n isCompaniesLoaded: boolean\r\n personDemographicRecords: PersonDemographicObject[]\r\n userDefinedRecords: []\r\n implementationAliasRecords: []\r\n personDemographicObject?: PersonDemographicObject\r\n showEmployeeRegModes: boolean\r\n showSupervisors: boolean\r\n}\r\ninterface Gender {\r\n Name: string\r\n Code: string\r\n}\r\n\r\nconst genders: Gender[] = [{ Name: \"Male\", Code: \"M\" }, { Name: \"Female\", Code: \"F\" }]\r\n\r\nexport class GeneralInfo extends Component {\r\n state: GeneralInfoState = {\r\n data: undefined,\r\n editing: false,\r\n saving: false,\r\n isGeneralInfoLoading: false,\r\n isPersonDemographicsDetailLoading: false,\r\n isRegulatoryModesLoading: false,\r\n isStatesLoading: false,\r\n isLocationsLoading: false,\r\n isCompaniesLoading: false,\r\n isSupervisorsLoading: false,\r\n regulatoryModes: undefined,\r\n selectedRegulatoryMode: undefined,\r\n companies: [],\r\n locations: [],\r\n states: [],\r\n isSupervisorsLoaded: false,\r\n isStatesLoaded: false,\r\n isRegulatoryModesLoaded: false,\r\n isCompaniesLoaded: false,\r\n personDemographicRecords: [],\r\n userDefinedRecords: [],\r\n implementationAliasRecords: [],\r\n personDemographicObject: undefined,\r\n showEmployeeRegModes: false,\r\n showSupervisors: false\r\n }\r\n generalInfoSubscription?: Subscription\r\n personDemographicsDetailSubscription?: Subscription\r\n regulatoryModesSubscription?: Subscription\r\n statesSubscription?: Subscription\r\n supervisorsSubscription?: Subscription\r\n companiesSubscription?: Subscription\r\n locationsSubscription?: Subscription\r\n generalInfoSaveSubscription?: Subscription\r\n personDemographicsSaveSubscription?: Subscription\r\n saveRegulatoryModeSubscription?: Subscription\r\n\r\n companyTypeahead = React.createRef>()\r\n locationTypeahead = React.createRef>()\r\n genderTypeahead = React.createRef>()\r\n hiredate = React.createRef()\r\n birthdate = React.createRef()\r\n terminationDate = React.createRef()\r\n occupationTypeahead = React.createRef>()\r\n user1Typeahead = React.createRef>()\r\n user2Typeahead = React.createRef>()\r\n user3Typeahead = React.createRef>()\r\n user4Typeahead = React.createRef>()\r\n user5Typeahead = React.createRef>()\r\n user6Typeahead = React.createRef>()\r\n user7Typeahead = React.createRef>()\r\n user8Typeahead = React.createRef>()\r\n\r\n componentDidMount() {\r\n this.loadGeneralInfo(this.props.PersonID)\r\n this.loadPersonDemographicsDetail(this.props.PersonID)\r\n }\r\n\r\n componentWillUnmount() {\r\n this.generalInfoSubscription && this.generalInfoSubscription.unsubscribe()\r\n this.personDemographicsDetailSubscription && this.personDemographicsDetailSubscription.unsubscribe()\r\n this.regulatoryModesSubscription && this.regulatoryModesSubscription.unsubscribe()\r\n this.statesSubscription && this.statesSubscription?.unsubscribe()\r\n this.supervisorsSubscription && this.supervisorsSubscription?.unsubscribe()\r\n this.companiesSubscription && this.companiesSubscription?.unsubscribe()\r\n this.locationsSubscription && this.locationsSubscription?.unsubscribe()\r\n this.generalInfoSaveSubscription && this.generalInfoSaveSubscription?.unsubscribe()\r\n this.personDemographicsSaveSubscription && this.personDemographicsSaveSubscription?.unsubscribe()\r\n this.saveRegulatoryModeSubscription && this.saveRegulatoryModeSubscription?.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: GeneralInfoProps) {\r\n if (this.props.PersonID !== prevProps.PersonID) {\r\n this.loadGeneralInfo(this.props.PersonID)\r\n }\r\n }\r\n\r\n loadGeneralInfo(PersonID: number) {\r\n this.setState({ isGeneralInfoLoading: true })\r\n this.generalInfoSubscription && this.generalInfoSubscription.unsubscribe()\r\n this.generalInfoSubscription = GeneralInformationGet(PersonID).subscribe(\r\n (data: GeneralInformation) => this.setState({ data: data }),\r\n (error) => {\r\n this.setState({ isGeneralInfoLoading: false })\r\n toast.error(FormatError(error))\r\n },\r\n () => this.setState({ isGeneralInfoLoading: false })\r\n )\r\n }\r\n\r\n loadPersonDemographicsDetail(PersonID: number) {\r\n this.setState({ isPersonDemographicsDetailLoading: true })\r\n this.personDemographicsDetailSubscription && this.personDemographicsDetailSubscription.unsubscribe()\r\n this.personDemographicsDetailSubscription = GetPersonDemographicsDetail(PersonID).subscribe(\r\n (data: PersonDemographicRecord) => this.setState({\r\n personDemographicRecords: data.PersonDemographicRecords,\r\n userDefinedRecords: data.UserDefinedRecords,\r\n implementationAliasRecords: data.ImplementationAliasRecords,\r\n personDemographicObject: (data.PersonDemographicRecords.length > 0) ? data.PersonDemographicRecords[0] : undefined\r\n }),\r\n (error) => {\r\n this.setState({ isPersonDemographicsDetailLoading: false })\r\n toast.error(FormatError(error))\r\n },\r\n () => this.setState({ isPersonDemographicsDetailLoading: false })\r\n )\r\n }\r\n\r\n handleToggleEditMode = () => {\r\n if (this.state.editing) {\r\n if (this.props.PersonID > 0) {\r\n this.loadGeneralInfo(this.props.PersonID)\r\n this.loadPersonDemographicsDetail(this.props.PersonID)\r\n }\r\n this.setState({ editing: false, selectedCompany: undefined, selectedLocation: undefined })\r\n }\r\n else {\r\n this.setState({ editing: true })\r\n this.loadStates()\r\n this.loadRegulatoryModes()\r\n this.loadAllCompanies()\r\n }\r\n }\r\n\r\n loadStates = () => {\r\n if (this.state.isStatesLoaded) {\r\n return\r\n }\r\n this.statesSubscription && this.statesSubscription?.unsubscribe()\r\n this.statesSubscription =\r\n StateObservable().subscribe(\r\n (results: State[]) => this.setState({ states: results, isStatesLoading: false, isStatesLoaded: true }),\r\n () => { this.setState({ isStatesLoading: false }) }\r\n )\r\n\r\n\r\n }\r\n loadRegulatoryModes = () => {\r\n\r\n if (this.state.isRegulatoryModesLoaded) {\r\n return\r\n }\r\n this.setState({ isRegulatoryModesLoading: true })\r\n this.regulatoryModesSubscription && this.regulatoryModesSubscription.unsubscribe()\r\n this.regulatoryModesSubscription = LabServiceRegulatoryModesGetObservable(true).subscribe(\r\n (data: RegulatoryMode[]) => this.setState({\r\n regulatoryModes: data,\r\n isRegulatoryModesLoading: false,\r\n isRegulatoryModesLoaded: true\r\n }),\r\n () => this.setState({ isRegulatoryModesLoading: false })\r\n )\r\n }\r\n\r\n loadAllCompanies = () => {\r\n if (this.state.isCompaniesLoaded) {\r\n this.initialCompanyChange(this.state.companies)\r\n return\r\n }\r\n this.setState({ isCompaniesLoading: true })\r\n\r\n AutoFilterCompaniesGet(\"\").subscribe(\r\n data => {\r\n this.setState({ companies: data, isCompaniesLoading: false, isCompaniesLoaded: true })\r\n this.initialCompanyChange(data)\r\n },\r\n () => this.setState({ isCompaniesLoading: false })\r\n )\r\n }\r\n\r\n initialCompanyChange = (companies: AutoFilterCompany[]) => {\r\n if (companies.length > 0) {\r\n const currentCompany = companies.find(comp => comp.AccountID === this.state.data?.CompanyID)\r\n this.setState({ selectedCompany: currentCompany })\r\n if (!!currentCompany) this.loadAllLocations(currentCompany, true)\r\n } else {\r\n this.setState({\r\n locations: [],\r\n selectedCompany: undefined,\r\n selectedLocation: undefined\r\n })\r\n }\r\n }\r\n\r\n handleLocationChange = (locations: AutoFilterLocation[]) => this.setState({ selectedLocation: locations[0] })\r\n\r\n handleCompanyChange = (companies: AutoFilterCompany[]) => {\r\n const selectedCompany = companies[0]\r\n this.setState({ selectedCompany: companies[0], locations: [], selectedLocation: undefined })\r\n if (!!selectedCompany) this.loadAllLocations(selectedCompany, false)\r\n }\r\n\r\n loadAllLocations = (company: AutoFilterCompany, initialLoad: boolean) => {\r\n this.setState({ isLocationsLoading: true })\r\n this.locationsSubscription && this.locationsSubscription?.unsubscribe()\r\n this.locationsSubscription =\r\n AutoFilterLocationsGet(company.AccountID, \"\", \"\").subscribe(\r\n data => {\r\n const currentLocation = data.find(loc => loc.AccountID === this.state.data?.AccountID)\r\n this.setState({ locations: data, selectedLocation: initialLoad ? currentLocation : undefined, isLocationsLoading: false })\r\n },\r\n () => this.setState({ isLocationsLoading: false })\r\n )\r\n }\r\n\r\n handleSubmit = () => {\r\n if (!this.state.editing) {\r\n return false\r\n }\r\n const data = this.state.data\r\n if (!data) {\r\n return\r\n }\r\n this.setState({ editing: false, saving: true })\r\n data.RegModeEmpCat = {\r\n EmpCat: \"\",\r\n EmployeeCategoryID: 0,\r\n PersonRegModeEmpCatID: 0,\r\n Primary: false,\r\n RegMode: \"\",\r\n RegulatoryModeID: 0\r\n }\r\n data.CompanyID = this.state.selectedCompany?.AccountID || 0\r\n data.LocationID = this.state.selectedLocation?.AccountID || 0\r\n if ((data?.Driver || \"\").length === 0) data.DriverLICStateOfIssue = \"\"\r\n this.generalInfoSaveSubscription && this.generalInfoSaveSubscription?.unsubscribe()\r\n this.personDemographicsSaveSubscription && this.personDemographicsSaveSubscription?.unsubscribe()\r\n this.saveRegulatoryModeSubscription && this.saveRegulatoryModeSubscription?.unsubscribe()\r\n this.generalInfoSaveSubscription = GeneralInformationSave(data).subscribe(\r\n ((result) => {\r\n const personID = Number(result)\r\n if (personID > 0) {\r\n const pdo = this.state.personDemographicObject\r\n if (pdo) {\r\n pdo.Occupation = pdo.OccupationCode\r\n pdo.User1 = pdo.User1Code\r\n pdo.User2 = pdo.User2Code\r\n pdo.User3 = pdo.User3Code\r\n pdo.User4 = pdo.User4Code\r\n pdo.User5 = pdo.User5Code\r\n pdo.User6 = pdo.User6Code\r\n pdo.User7 = pdo.User7Code\r\n pdo.User8 = pdo.User8Code\r\n pdo.CompanyID = this.state.selectedCompany?.AccountID || 0\r\n pdo.LocationID = this.state.selectedLocation?.AccountID || 0\r\n\r\n this.personDemographicsSaveSubscription = UpdatePersonDemographic(pdo).subscribe(\r\n ((result) => {\r\n toast.success(result)\r\n }),\r\n (error) => {\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n this.saveRegulatoryModeSubscription = SaveRegulatoryMode(personID, data.RegModCatList).subscribe(\r\n ((result) => {\r\n //toast.success(result)\r\n }),\r\n (error) => {\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n }\r\n this.setState({ saving: false })\r\n toast.success(\"Updated personnel data successfully.\")\r\n this.loadGeneralInfo(personID)\r\n this.loadPersonDemographicsDetail(personID)\r\n this.props.onUpdate && this.props.onUpdate()\r\n } else {\r\n toast.error(result)\r\n }\r\n }),\r\n (error) => {\r\n this.setState({ saving: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n return false\r\n }\r\n ssnRequired = () => this.state.data?.CompanyPrimaryID === \"SSN\"\r\n employerIDRequired = () => this.state.data?.CompanyPrimaryID === \"EmployerID\"\r\n driverIDRequired = () => this.state.data?.CompanyPrimaryID === \"DriverID\"\r\n alternateIDRequired = () => this.state.data?.CompanyPrimaryID === \"AlternateID\"\r\n showDriverState = () => this.driverIDRequired() || (this.state.data?.Driver || \"\").length > 0 || (this.state.editData?.Driver || \"\").length > 0\r\n\r\n checkIsPhoneValid = (value: string) => value.length === 0 || PhoneRegexp.test(value) || value.toLowerCase() === \"n/p\"\r\n checkIsNotEmpty = (value: string, required: boolean) => !required || value.trim().length > 0\r\n checkIsSSNValid = (value: string, required: boolean) => (!required && value.length === 0) || value.replace(/\\D/g, \"\").length === 9\r\n checkIsEmailValid = (value: string) => {\r\n if (value.length === 0) {\r\n return true\r\n }\r\n return EmailRegexp.test(value)\r\n }\r\n createFirstNameRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = ) => this.handleFirstNameChange(e)} />\r\n const result = \r\n return result\r\n\r\n }\r\n\r\n handleFirstNameChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, FirstName: value } : prevState.data }\r\n })\r\n }\r\n\r\n isFirstNameValid = () => {\r\n return true\r\n }\r\n\r\n createLastNameRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = ) => this.handleLastNameChange(e)} />\r\n const result = \r\n return result\r\n\r\n }\r\n handleLastNameChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, LastName: value } : prevState.data }\r\n })\r\n }\r\n isLastNameValid = () => {\r\n return true\r\n\r\n }\r\n createEmployerIdRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = ) => this.handleEmployerIdChange(e)} />\r\n const result = \r\n return result\r\n\r\n }\r\n handleEmployerIdChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, Employer: value } : prevState.data }\r\n })\r\n }\r\n isEmployerIdValid = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const value = data.Employer ? data.Employer.trim() : \"\"\r\n if (this.employerIDRequired()) {\r\n return value.length > 0\r\n }\r\n return true\r\n }\r\n\r\n createAlternateIdRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = ) => this.handleAlternateIdChange(e)} />\r\n const result = \r\n return result\r\n\r\n }\r\n handleAlternateIdChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, Alternate: value } : prevState.data }\r\n })\r\n }\r\n isAlternateIdValid = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const value = data.Alternate ? data.Alternate.trim() : \"\"\r\n if (this.alternateIDRequired()) {\r\n return value.length > 0\r\n }\r\n return true\r\n }\r\n\r\n\r\n\r\n createSSNRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = ) => this.handleSSNChange(e)} />\r\n const result = \r\n return result\r\n }\r\n\r\n handleSSNChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value || \"\";\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, SSN: value.replace(/\\D/g, \"\") } : prevState.data }\r\n })\r\n }\r\n isSSNValid = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const value = data.SSN ? data.SSN.trim() : \"\"\r\n const required = this.ssnRequired()\r\n return this.checkIsSSNValid(value, required)\r\n }\r\n\r\n\r\n createDriverStateRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const states = this.state.states\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = this.handleDriverStateChange(state)} />\r\n const result = \r\n return result\r\n }\r\n\r\n handleDriverStateChange = (value: State) => {\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, DriverLICStateOfIssue: value?.Abbreviation || \"\" } : prevState.data }\r\n })\r\n }\r\n\r\n createDriverIdRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = ) => this.handleDriverIdChange(e)} />\r\n const result = \r\n return result\r\n\r\n }\r\n handleDriverIdChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, Driver: value } : prevState.data }\r\n })\r\n }\r\n isDriverIdValid = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const value = data.Driver ? data.Driver.trim() : \"\"\r\n if (this.driverIDRequired()) {\r\n return value.length > 0\r\n }\r\n return true\r\n }\r\n\r\n createOccupationRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const demographicLabels = data.ImplementationAlias\r\n const demographicInfo = data.PersonDemographicObj\r\n const editing = this.state.editing\r\n let occupationTitle: string = \"OCCUPATION\"\r\n if (data.ImplementationAlias?.Occupation) {\r\n occupationTitle = data.ImplementationAlias.Occupation.toUpperCase()\r\n if (occupationTitle === \"N/A\") {\r\n occupationTitle = \"OCCUPATION\"\r\n }\r\n }\r\n \r\n const occupation = data.Occupation.length > 0 ? `${data.Occupation}` : \"\" \r\n \r\n if (!editing) {\r\n return \r\n }\r\n const values = this.state.userDefinedRecords.filter(item => item['Type'] === \"OC\")\r\n if (values.length === 0) {\r\n return \r\n }\r\n const options: KeyValue[] = values.map(item => {\r\n let rObj: KeyValue = {\r\n Key: item['Code'],\r\n Value: item['Description']\r\n }\r\n return rObj\r\n })\r\n\r\n const input = (\r\n this.handleOccupationChange({ Key: e.target.value, Value: e.target.value })}\r\n />\r\n )\r\n const result = \r\n return result\r\n }\r\n\r\n handleOccupationChange = (value: KeyValue) => {\r\n const { data, personDemographicObject } = this.state\r\n if (data && personDemographicObject) {\r\n this.setState({\r\n data: { ...data, PersonDemographicObj: { ...data.PersonDemographicObj, Occupation: value.Value }, OccupationCode: value.Key, Occupation: value.Key },\r\n personDemographicObject: { ...personDemographicObject, OccupationCode: value.Key, Occupation: value.Key }\r\n });\r\n }\r\n }\r\n\r\n isOccupationValid = () => {\r\n return true\r\n\r\n }\r\n\r\n createRegulatoryModeRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = \r\n const result = \r\n return result\r\n }\r\n\r\n isRegulatoryModeValid = () => {\r\n return true\r\n\r\n }\r\n\r\n handleRegulatoryModeClick = () => {\r\n this.setState({ showEmployeeRegModes: true })\r\n }\r\n\r\n handleRegulatoryModeSave = (items: RegMode[]) => {\r\n const regulatoryModes = items || []\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, RegModCatList: regulatoryModes } : prevState.data, showEmployeeRegModes: false }\r\n })\r\n //this.setState({ showEmployeeRegModes: false })\r\n }\r\n\r\n handleSupervisorsSave = (items: Supervisor[]) => {\r\n const supervisors = items || []\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, Supervisor1Data: items[0], Supervisor2Data: items[1] } : prevState.data, showSupervisors: false }\r\n })\r\n }\r\n\r\n handleRegulatoryModeClose = () => {\r\n this.setState({ showEmployeeRegModes: false })\r\n }\r\n\r\n handleSupervisorsClose = () => {\r\n this.setState({ showSupervisors: false })\r\n }\r\n\r\n createHireDateRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n\r\n if (!editing) {\r\n return \r\n }\r\n\r\n const val = data.HireDate ? new Date(data.HireDate) : null\r\n const input = { if (this.hiredate && this.hiredate.current && e.key === 'Tab') { this.hiredate.current.setOpen(false) } }}\r\n onChange={date => this.handleHireDateChange(date)}\r\n customInput={} />\r\n\r\n\r\n const result = \r\n return result\r\n\r\n }\r\n handleHireDateChange = (date: any) => {\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, HireDate: date } : prevState.data }\r\n })\r\n }\r\n isHireDateValid = () => {\r\n return true\r\n\r\n }\r\n\r\n createTerminationDateRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n\r\n if (!editing) {\r\n return \r\n }\r\n\r\n const val = data.TerminationDate ? new Date(data.TerminationDate) : null\r\n const input = { if (this.terminationDate && this.terminationDate.current && e.key === 'Tab') { this.terminationDate.current.setOpen(false) } }}\r\n onChange={date => this.handleTerminationDateChange(date)}\r\n customInput={} />\r\n\r\n\r\n const result = \r\n return result\r\n\r\n }\r\n handleTerminationDateChange = (date: any) => {\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, TerminationDate: date } : prevState.data }\r\n })\r\n }\r\n isTerminationDateValid = () => {\r\n return true\r\n }\r\n\r\n createDateOfBirthRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n\r\n if (!editing) {\r\n return \r\n }\r\n\r\n const val = data.DOB ? new Date(data.DOB) : null\r\n const input = { if (this.birthdate && this.birthdate.current && e.key === 'Tab') { this.birthdate.current.setOpen(false) } }}\r\n onChange={date => this.handleDateOfBirthChange(date)}\r\n customInput={} />\r\n\r\n\r\n const result = \r\n return result\r\n\r\n }\r\n handleDateOfBirthChange = (date: any) => {\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, DOB: date } : prevState.data }\r\n })\r\n }\r\n isDateOfBirthValid = () => {\r\n return true\r\n\r\n }\r\n\r\n createAddress1Row = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = ) => this.handleAddress1Change(e)} />\r\n const result = \r\n return result\r\n\r\n }\r\n\r\n handleAddress1Change = (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, Address1: value } : prevState.data }\r\n })\r\n }\r\n\r\n isAddress1Valid = () => {\r\n return true\r\n }\r\n\r\n createCityRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = ) => this.handleCityChange(e)} />\r\n const result = \r\n return result\r\n\r\n }\r\n\r\n handleCityChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, City: value } : prevState.data }\r\n })\r\n }\r\n\r\n isCityValid = () => {\r\n return true\r\n }\r\n\r\n createInactiveRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = ) => this.handleInactiveChange(e)} label=\"\" id=\"personnel_inactive\" />\r\n const result = \r\n return result\r\n\r\n }\r\n\r\n handleInactiveChange = (event: React.ChangeEvent) => {\r\n const value = event.target.checked;\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, Inactive: !value } : prevState.data }\r\n })\r\n }\r\n\r\n createReasonForInactiveRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = ) => this.handleReasonForInactiveChange(e)} />\r\n const result = \r\n return result\r\n }\r\n\r\n handleReasonForInactiveChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, ReasonForInactivation: value } : prevState.data }\r\n })\r\n }\r\n\r\n createPreEmploymentTestOnFileRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = ) => this.handlePreEmploymentTestOnFileChange(e)} label=\"\" id=\"pre_employment_test_on_file_row\" className=\"mt-2\" />\r\n const result = \r\n return result\r\n }\r\n\r\n handlePreEmploymentTestOnFileChange = (event: React.ChangeEvent) => {\r\n const value = event.target.checked;\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, PreEmploymentTestOnFile: value } : prevState.data }\r\n })\r\n }\r\n isPreEmploymentTestOnFileValid = () => {\r\n return true\r\n }\r\n\r\n createManagerRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = ) => this.handleManagerChange(e)} label=\"\" id=\"manager_row\" />\r\n const result = \r\n return result\r\n }\r\n\r\n handleManagerChange = (event: React.ChangeEvent) => {\r\n const value = event.target.checked;\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, Manager: value } : prevState.data }\r\n })\r\n }\r\n\r\n isManagerValid = () => {\r\n return true\r\n }\r\n\r\n supervisorInfo = (data: Supervisor) => {\r\n let row = \"\"\r\n if (data.FirstName.length > 0) row += `${data.FirstName} `\r\n if (data.LastName.length > 0) row += `${data.LastName} `\r\n if (data.ContactPhone.length > 0) row += `(${FormatPhone(data.ContactPhone)})`\r\n return row\r\n }\r\n\r\n createSupervisorRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return <>\r\n \r\n \r\n \r\n }\r\n const input = \r\n const result = \r\n return result\r\n }\r\n\r\n\r\n handleSupervisorsClick = () => {\r\n this.setState({ showSupervisors: true })\r\n }\r\n\r\n isSupervisor1Valid = () => true\r\n isSupervisor2Valid = () => true\r\n\r\n createGenderRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n\r\n const input =
\r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n onChange={selected => this.handleGenderChange(selected[0]?.Code || \"\")}\r\n options={genders}\r\n selected={data.Gender !== \"\" ? [genders.find((el) => el?.Code == data.Gender) || genders[0]] : []}\r\n placeholder=\"Select\">\r\n \r\n \r\n
\r\n const result = \r\n return result\r\n\r\n }\r\n\r\n handleGenderChange = (value: string) => {\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, Gender: value } : prevState.data }\r\n })\r\n }\r\n isGenderValid = () => {\r\n return true\r\n }\r\n createStateRow = () => {\r\n\r\n const data: GeneralInformation = this.state.data!\r\n const states = this.state.states\r\n const statetID = data.StateID\r\n const statetCode = states.find(item => item.StateProvinceTerritoryID === statetID)?.Abbreviation || \"\"\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = this.handleStateChange(state)} />\r\n const result = \r\n return result\r\n }\r\n createCompanyRow = (name: string) => {\r\n if (this.state.editing && !!this.props.isPortalAdmin) {\r\n const input = props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n isLoading={this.state.isCompaniesLoading}\r\n isInvalid={!this.isCompanyValid()}\r\n onChange={this.handleCompanyChange}\r\n options={this.state.companies}\r\n selected={this.state.selectedCompany ? [this.state.selectedCompany] : []}\r\n emptyLabel=\"No Companies Found\"\r\n placeholder=\"Select\">\r\n {!this.state.isCompaniesLoading &&\r\n }\r\n \r\n const result = \r\n return result\r\n }\r\n else {\r\n return \r\n }\r\n }\r\n\r\n createLocationRow = (name: string) => {\r\n if (this.state.editing && (!!this.props.isPortalAdmin || !!this.props.isCompanyAdmin)) {\r\n const input = props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n isLoading={this.state.isLocationsLoading}\r\n onChange={this.handleLocationChange}\r\n options={this.state.locations}\r\n selected={this.state.selectedLocation ? [this.state.selectedLocation] : []}\r\n emptyLabel=\"No Locations Found\"\r\n placeholder=\"Select\">\r\n {!this.state.isLocationsLoading &&\r\n }\r\n \r\n const result = \r\n return result\r\n }\r\n else {\r\n return \r\n }\r\n }\r\n\r\n handleStateChange = (value: State) => {\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, State: value.FullName, StateID: value.StateProvinceTerritoryID } : prevState.data }\r\n })\r\n }\r\n isStateValid = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const value = data.StateID ? data.StateID : 0\r\n return value > 0\r\n }\r\n\r\n createZipRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const zipValid = !!data.Zip && ValidZipCode(data.Zip)\r\n const input = ) => this.handleZipChange(e)} />\r\n const result = \r\n return result\r\n\r\n }\r\n\r\n handleZipChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, Zip: value } : prevState.data }\r\n })\r\n }\r\n\r\n createWorkPhoneRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = this.handleWorkPhoneChange(value)} />\r\n const result = \r\n return result\r\n }\r\n\r\n handleWorkPhoneChange = (value: string) => {\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, WPhone: value } : prevState.data }\r\n })\r\n }\r\n\r\n isWorkPhoneValid = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const value = data.WPhone ? data.WPhone.trim() : \"\"\r\n return this.checkIsPhoneValid(value)\r\n }\r\n createMobilePhoneRow = () => {\r\n const { isGov } = this.props\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = this.handleMobilePhoneChange(value)} />\r\n const result = \r\n return result\r\n }\r\n\r\n handleMobilePhoneChange = (value: string) => {\r\n const { isGov } = this.props\r\n if (isGov) {\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, CPhone: value } : prevState.data }\r\n })\r\n }\r\n else {\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, HPhone: value } : prevState.data }\r\n })\r\n }\r\n }\r\n\r\n isMobilePhoneValid = () => {\r\n const { isGov } = this.props\r\n const data: GeneralInformation = this.state.data!\r\n const phone = (isGov ? data.CPhone : data.HPhone) || \"\"\r\n const value = phone ? phone.trim() : \"\"\r\n return this.checkIsPhoneValid(value)\r\n }\r\n\r\n createEmailRow = () => {\r\n const { isGov } = this.props\r\n const data: GeneralInformation = this.state.data!\r\n const editing = this.state.editing\r\n if (!editing) {\r\n return \r\n }\r\n const input = ) => this.handleEmailChange(e)} />\r\n const result = \r\n return result\r\n }\r\n\r\n handleEmailChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n this.state.data && this.setState(prevState => {\r\n return { data: prevState.data ? { ...prevState.data, Email: value } : prevState.data }\r\n })\r\n }\r\n\r\n isEmailValid = () => {\r\n const { isGov } = this.props\r\n const data: GeneralInformation = this.state.data!\r\n const value = data.Email ? data.Email.trim() : \"\"\r\n return this.checkIsEmailValid(value)\r\n }\r\n\r\n handleInputChange = (event: React.ChangeEvent) => {\r\n }\r\n\r\n createInfoRows = () => {\r\n const { isGov } = this.props\r\n const data: GeneralInformation = this.state.data!\r\n let occupationTitle: string = \"OCCUPATION\"\r\n if (data.ImplementationAlias?.Occupation) {\r\n occupationTitle = data.ImplementationAlias.Occupation.toUpperCase()\r\n if (occupationTitle === \"N/A\") {\r\n occupationTitle = \"OCCUPATION\"\r\n }\r\n }\r\n const firstNameRow = this.createFirstNameRow()\r\n const lastNameRow = this.createLastNameRow()\r\n const employerIdRow = this.createEmployerIdRow();\r\n const driverIdRow = this.createDriverIdRow()\r\n const driverStateRow = this.createDriverStateRow();\r\n const ssnRow = this.createSSNRow()\r\n const alternateIdRow = this.createAlternateIdRow()\r\n const companyRow = this.createCompanyRow(data.Company)\r\n const locationRow = this.createLocationRow(data.Location)\r\n const occupationRow = this.createOccupationRow()\r\n const regulatoryModeRow = this.createRegulatoryModeRow()\r\n const superVisorRow = this.createSupervisorRow()\r\n const hireDateRow = this.createHireDateRow()\r\n const terminationDateRow = this.createTerminationDateRow()\r\n const preEmploymentTestOnFileRow = this.createPreEmploymentTestOnFileRow()\r\n const managerRow = this.createManagerRow()\r\n const activeRow = this.createInactiveRow()\r\n const reasonForInactivation = this.createReasonForInactiveRow()\r\n const genderRow = this.createGenderRow()\r\n const dateOfBirthRow = this.createDateOfBirthRow()\r\n const streeAddressRow = this.createAddress1Row()\r\n const cityRow = this.createCityRow()\r\n const stateRow = this.createStateRow()\r\n const zipRow = this.createZipRow()\r\n const workPhoneRow = this.createWorkPhoneRow()\r\n const mobilePhoneRow = this.createMobilePhoneRow()\r\n const emailRow = this.createEmailRow()\r\n const result = {\r\n firstNameRow: firstNameRow,\r\n lastNameRow: lastNameRow,\r\n employerIdRow: employerIdRow,\r\n driverIdRow: driverIdRow,\r\n driverStateRow: driverStateRow,\r\n ssnRow: ssnRow,\r\n alternateIdRow: alternateIdRow,\r\n companyRow: companyRow,\r\n occupationRow: occupationRow,\r\n regulatoryModeRow: regulatoryModeRow,\r\n superVisorRow: superVisorRow,\r\n hireDateRow: hireDateRow,\r\n terminationDateRow: terminationDateRow,\r\n preEmploymentTestOnFileRow: preEmploymentTestOnFileRow,\r\n managerRow: managerRow,\r\n activeRow: activeRow,\r\n reasonForInactivation: reasonForInactivation,\r\n genderRow: genderRow,\r\n dateOfBirthRow: dateOfBirthRow,\r\n streeAddressRow: streeAddressRow,\r\n cityRow: cityRow,\r\n stateRow: stateRow,\r\n zipRow: zipRow,\r\n workPhoneRow: workPhoneRow,\r\n mobilePhoneRow: mobilePhoneRow,\r\n emailRow: emailRow,\r\n locationRow: locationRow\r\n\r\n }\r\n return result\r\n }\r\n\r\n createUser1Row = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const demographicLabels = data.ImplementationAlias\r\n const demographicInfo = data.PersonDemographicObj\r\n const editing = this.state.editing\r\n const title = (demographicLabels.User1Label === \"\" || demographicLabels.User1Label === \"N/A\") ? \"USER 1\" : demographicLabels.User1Label\r\n\r\n if (!editing) {\r\n return \r\n }\r\n if (!this.state.personDemographicObject) {\r\n return \r\n }\r\n const values = this.state.userDefinedRecords.filter(item => item['Type'] === \"UR1\")\r\n if (values.length === 0) {\r\n return \r\n }\r\n const code = this.state.personDemographicObject.User1Code\r\n const value = this.state.personDemographicObject.User1\r\n\r\n const options: KeyValue[] = values.map(item => {\r\n let rObj: KeyValue = {\r\n Key: item['Code'],\r\n Value: item['Description']\r\n }\r\n return rObj\r\n })\r\n const input =
\r\n true}\r\n onChange={selected => this.handleUser1Change(selected[0] || { Key: \"\", Value: \"\" })}\r\n options={options}\r\n selected={code !== \"\" ? [options.find((el) => el?.Key == code) || options[0]] : []}\r\n placeholder=\"Select\">\r\n \r\n \r\n
\r\n const result = \r\n return result\r\n\r\n }\r\n\r\n handleUser1Change = (value: KeyValue) => {\r\n this.state.data && this.state.personDemographicObject && this.setState(prevState => {\r\n const data = prevState.data\r\n ? {\r\n ...prevState.data,\r\n PersonDemographicObj: prevState.data?.PersonDemographicObj ? { ...prevState.data.PersonDemographicObj, User1: value.Value } : prevState.data?.PersonDemographicObj\r\n }\r\n : prevState.data\r\n return {\r\n data: data,\r\n personDemographicObject: prevState.personDemographicObject ? { ...prevState.personDemographicObject, User1Code: value.Key, User1: value.Key } : prevState.personDemographicObject\r\n };\r\n })\r\n }\r\n isUser1Valid = () => {\r\n return true\r\n }\r\n\r\n createUser2Row = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const demographicLabels = data.ImplementationAlias\r\n const demographicInfo = data.PersonDemographicObj\r\n const editing = this.state.editing\r\n const title = (demographicLabels.User2Label === \"\" || demographicLabels.User2Label === \"N/A\") ? \"USER 2\" : demographicLabels.User2Label\r\n\r\n if (!editing) {\r\n return \r\n }\r\n if (!this.state.personDemographicObject) {\r\n return \r\n\r\n }\r\n\r\n const values = this.state.userDefinedRecords.filter(item => item['Type'] === \"UR2\")\r\n if (values.length === 0) {\r\n return \r\n }\r\n const code = this.state.personDemographicObject.User2Code\r\n const value = this.state.personDemographicObject.User2\r\n const options: KeyValue[] = values.map(item => {\r\n let rObj: KeyValue = {\r\n Key: item['Code'],\r\n Value: item['Description']\r\n }\r\n return rObj\r\n })\r\n const input =
\r\n true}\r\n onChange={selected => this.handleUser2Change(selected[0] || { Key: \"\", Value: \"\" })}\r\n options={options}\r\n selected={code !== \"\" ? [options.find((el) => el?.Key == code) || options[0]] : []}\r\n placeholder=\"Select\">\r\n \r\n \r\n
\r\n const result = \r\n return result\r\n\r\n }\r\n\r\n handleUser2Change = (value: KeyValue) => {\r\n this.state.data && this.state.personDemographicObject && this.setState(prevState => {\r\n const data = prevState.data\r\n ? {\r\n ...prevState.data,\r\n PersonDemographicObj: prevState.data?.PersonDemographicObj ? { ...prevState.data.PersonDemographicObj, User2: value.Value } : prevState.data?.PersonDemographicObj\r\n }\r\n : prevState.data\r\n return {\r\n data: data,\r\n personDemographicObject: prevState.personDemographicObject ? { ...prevState.personDemographicObject, User2Code: value.Key, User2: value.Key } : prevState.personDemographicObject\r\n };\r\n })\r\n }\r\n isUser2Valid = () => {\r\n return true\r\n }\r\n createUser3Row = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const demographicLabels = data.ImplementationAlias\r\n const demographicInfo = data.PersonDemographicObj\r\n const editing = this.state.editing\r\n const title = (demographicLabels.User3Label === \"\" || demographicLabels.User3Label === \"N/A\") ? \"USER 3\" : demographicLabels.User3Label\r\n\r\n if (!editing) {\r\n return \r\n }\r\n if (!this.state.personDemographicObject) {\r\n return \r\n\r\n }\r\n\r\n const values = this.state.userDefinedRecords.filter(item => item['Type'] === \"UR3\")\r\n if (values.length === 0) {\r\n return \r\n }\r\n const code = this.state.personDemographicObject.User3Code\r\n const value = this.state.personDemographicObject.User3\r\n\r\n const options: KeyValue[] = values.map(item => {\r\n let rObj: KeyValue = {\r\n Key: item['Code'],\r\n Value: item['Description']\r\n }\r\n return rObj\r\n })\r\n const input =
\r\n true}\r\n onChange={selected => this.handleUser3Change(selected[0] || { Key: \"\", Value: \"\" })}\r\n options={options}\r\n selected={code !== \"\" ? [options.find((el) => el?.Key == code) || options[0]] : []}\r\n placeholder=\"Select\">\r\n \r\n \r\n
\r\n const result = \r\n return result\r\n\r\n }\r\n\r\n handleUser3Change = (value: KeyValue) => {\r\n this.state.data && this.state.personDemographicObject && this.setState(prevState => {\r\n const data = prevState.data\r\n ? {\r\n ...prevState.data,\r\n PersonDemographicObj: prevState.data?.PersonDemographicObj ? { ...prevState.data.PersonDemographicObj, User3: value.Value } : prevState.data?.PersonDemographicObj\r\n }\r\n : prevState.data\r\n return {\r\n data: data,\r\n personDemographicObject: prevState.personDemographicObject ? { ...prevState.personDemographicObject, User3Code: value.Key, User3: value.Key } : prevState.personDemographicObject\r\n };\r\n })\r\n }\r\n isUser3Valid = () => {\r\n return true\r\n }\r\n\r\n createUser4Row = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const demographicLabels = data.ImplementationAlias\r\n const demographicInfo = data.PersonDemographicObj\r\n const editing = this.state.editing\r\n const title = (demographicLabels.User4Label === \"\" || demographicLabels.User4Label === \"N/A\") ? \"USER 4\" : demographicLabels.User4Label\r\n\r\n if (!editing) {\r\n return \r\n }\r\n if (!this.state.personDemographicObject) {\r\n return \r\n\r\n }\r\n\r\n const values = this.state.userDefinedRecords.filter(item => item['Type'] === \"UR4\")\r\n if (values.length === 0) {\r\n return \r\n }\r\n const code = this.state.personDemographicObject.User4Code\r\n const value = this.state.personDemographicObject.User4\r\n\r\n const options: KeyValue[] = values.map(item => {\r\n let rObj: KeyValue = {\r\n Key: item['Code'],\r\n Value: item['Description']\r\n }\r\n return rObj\r\n })\r\n const input =
\r\n true}\r\n onChange={selected => this.handleUser4Change(selected[0] || { Key: \"\", Value: \"\" })}\r\n options={options}\r\n selected={code !== \"\" ? [options.find((el) => el?.Key == code) || options[0]] : []}\r\n placeholder=\"Select\">\r\n \r\n \r\n
\r\n const result = \r\n return result\r\n\r\n }\r\n\r\n handleUser4Change = (value: KeyValue) => {\r\n this.state.data && this.state.personDemographicObject && this.setState(prevState => {\r\n const data = prevState.data\r\n ? {\r\n ...prevState.data,\r\n PersonDemographicObj: prevState.data?.PersonDemographicObj ? { ...prevState.data.PersonDemographicObj, User4: value.Value } : prevState.data?.PersonDemographicObj\r\n }\r\n : prevState.data\r\n return {\r\n data: data,\r\n personDemographicObject: prevState.personDemographicObject ? { ...prevState.personDemographicObject, User4Code: value.Key, User4: value.Key } : prevState.personDemographicObject\r\n };\r\n })\r\n }\r\n isUser4Valid = () => {\r\n return true\r\n }\r\n createUser5Row = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const demographicLabels = data.ImplementationAlias\r\n const demographicInfo = data.PersonDemographicObj\r\n const editing = this.state.editing\r\n const title = (demographicLabels.User5Label === \"\" || demographicLabels.User5Label === \"N/A\") ? \"USER 1\" : demographicLabels.User5Label\r\n\r\n if (!editing) {\r\n return \r\n }\r\n if (!this.state.personDemographicObject) {\r\n return \r\n\r\n }\r\n\r\n const values = this.state.userDefinedRecords.filter(item => item['Type'] === \"UR5\")\r\n if (values.length === 0) {\r\n return \r\n }\r\n const code = this.state.personDemographicObject.User5Code\r\n const value = this.state.personDemographicObject.User5\r\n\r\n const options: KeyValue[] = values.map(item => {\r\n let rObj: KeyValue = {\r\n Key: item['Code'],\r\n Value: item['Description']\r\n }\r\n return rObj\r\n })\r\n const input =
\r\n true}\r\n onChange={selected => this.handleUser5Change(selected[0] || { Key: \"\", Value: \"\" })}\r\n options={options}\r\n selected={code !== \"\" ? [options.find((el) => el?.Key == code) || options[0]] : []}\r\n placeholder=\"Select\">\r\n \r\n \r\n
\r\n const result = \r\n return result\r\n\r\n }\r\n\r\n handleUser5Change = (value: KeyValue) => {\r\n this.state.data && this.state.personDemographicObject && this.setState(prevState => {\r\n const data = prevState.data\r\n ? {\r\n ...prevState.data,\r\n PersonDemographicObj: prevState.data?.PersonDemographicObj ? { ...prevState.data.PersonDemographicObj, User5: value.Value } : prevState.data?.PersonDemographicObj\r\n }\r\n : prevState.data\r\n return {\r\n data: data,\r\n personDemographicObject: prevState.personDemographicObject ? { ...prevState.personDemographicObject, User5Code: value.Key, User5: value.Key } : prevState.personDemographicObject\r\n };\r\n })\r\n }\r\n isUser5Valid = () => {\r\n return true\r\n }\r\n createUser6Row = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const demographicLabels = data.ImplementationAlias\r\n const demographicInfo = data.PersonDemographicObj\r\n const editing = this.state.editing\r\n const title = (demographicLabels.User6Label === \"\" || demographicLabels.User6Label === \"N/A\") ? \"USER 6\" : demographicLabels.User6Label\r\n\r\n if (!editing) {\r\n return \r\n }\r\n if (!this.state.personDemographicObject) {\r\n return \r\n\r\n }\r\n\r\n const values = this.state.userDefinedRecords.filter(item => item['Type'] === \"UR6\")\r\n if (values.length === 0) {\r\n return \r\n }\r\n const code = this.state.personDemographicObject.User6Code\r\n const value = this.state.personDemographicObject.User6\r\n\r\n const options: KeyValue[] = values.map(item => {\r\n let rObj: KeyValue = {\r\n Key: item['Code'],\r\n Value: item['Description']\r\n }\r\n return rObj\r\n })\r\n const input =
\r\n true}\r\n onChange={selected => this.handleUser6Change(selected[0] || { Key: \"\", Value: \"\" })}\r\n options={options}\r\n selected={code !== \"\" ? [options.find((el) => el?.Key == code) || options[0]] : []}\r\n placeholder=\"Select\">\r\n \r\n \r\n
\r\n const result = \r\n return result\r\n\r\n }\r\n\r\n handleUser6Change = (value: KeyValue) => {\r\n this.state.data && this.state.personDemographicObject && this.setState(prevState => {\r\n const data = prevState.data\r\n ? {\r\n ...prevState.data,\r\n PersonDemographicObj: prevState.data?.PersonDemographicObj ? { ...prevState.data.PersonDemographicObj, User6: value.Value } : prevState.data?.PersonDemographicObj\r\n }\r\n : prevState.data\r\n return {\r\n data: data,\r\n personDemographicObject: prevState.personDemographicObject ? { ...prevState.personDemographicObject, User6Code: value.Key, User6: value.Key } : prevState.personDemographicObject\r\n };\r\n })\r\n }\r\n isUser6Valid = () => {\r\n return true\r\n }\r\n createUser7Row = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const demographicLabels = data.ImplementationAlias\r\n const demographicInfo = data.PersonDemographicObj\r\n const editing = this.state.editing\r\n const title = (demographicLabels.User7Label === \"\" || demographicLabels.User7Label === \"N/A\") ? \"USER 7\" : demographicLabels.User7Label\r\n\r\n if (!editing) {\r\n return \r\n }\r\n if (!this.state.personDemographicObject) {\r\n return \r\n\r\n }\r\n\r\n const values = this.state.userDefinedRecords.filter(item => item['Type'] === \"UR7\")\r\n if (values.length === 0) {\r\n return \r\n }\r\n const code = this.state.personDemographicObject.User7Code\r\n const value = this.state.personDemographicObject.User7\r\n\r\n const options: KeyValue[] = values.map(item => {\r\n let rObj: KeyValue = {\r\n Key: item['Code'],\r\n Value: item['Description']\r\n }\r\n return rObj\r\n })\r\n const input =
\r\n true}\r\n onChange={selected => this.handleUser7Change(selected[0] || { Key: \"\", Value: \"\" })}\r\n options={options}\r\n selected={code !== \"\" ? [options.find((el) => el?.Key == code) || options[0]] : []}\r\n placeholder=\"Select\">\r\n \r\n \r\n
\r\n const result = \r\n return result\r\n\r\n }\r\n\r\n handleUser7Change = (value: KeyValue) => {\r\n this.state.data && this.state.personDemographicObject && this.setState(prevState => {\r\n const data = prevState.data\r\n ? {\r\n ...prevState.data,\r\n PersonDemographicObj: prevState.data?.PersonDemographicObj ? { ...prevState.data.PersonDemographicObj, User7: value.Value } : prevState.data?.PersonDemographicObj\r\n }\r\n : prevState.data\r\n return {\r\n data: data,\r\n personDemographicObject: prevState.personDemographicObject ? { ...prevState.personDemographicObject, User7Code: value.Key, User7: value.Key } : prevState.personDemographicObject\r\n };\r\n })\r\n }\r\n isUser7Valid = () => {\r\n return true\r\n }\r\n\r\n createUser8Row = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const demographicLabels = data.ImplementationAlias\r\n const demographicInfo = data.PersonDemographicObj\r\n const editing = this.state.editing\r\n const title = (demographicLabels.User8Label === \"\" || demographicLabels.User8Label === \"N/A\") ? \"USER 8\" : demographicLabels.User8Label\r\n\r\n if (!editing) {\r\n return \r\n }\r\n if (!this.state.personDemographicObject) {\r\n return \r\n\r\n }\r\n\r\n const values = this.state.userDefinedRecords.filter(item => item['Type'] === \"UR8\")\r\n if (values.length === 0) {\r\n return \r\n }\r\n const code = this.state.personDemographicObject.User8Code\r\n const value = this.state.personDemographicObject.User8\r\n\r\n const options: KeyValue[] = values.map(item => {\r\n let rObj: KeyValue = {\r\n Key: item['Code'],\r\n Value: item['Description']\r\n }\r\n return rObj\r\n })\r\n const input =
\r\n true}\r\n onChange={selected => this.handleUser8Change(selected[0] || { Key: \"\", Value: \"\" })}\r\n options={options}\r\n selected={code !== \"\" ? [options.find((el) => el?.Key == code) || options[0]] : []}\r\n placeholder=\"Select\">\r\n \r\n \r\n
\r\n const result = \r\n return result\r\n\r\n }\r\n\r\n handleUser8Change = (value: KeyValue) => {\r\n this.state.data && this.state.personDemographicObject && this.setState(prevState => {\r\n const data = prevState.data\r\n ? {\r\n ...prevState.data,\r\n PersonDemographicObj: prevState.data?.PersonDemographicObj ? { ...prevState.data.PersonDemographicObj, User8: value.Value } : prevState.data?.PersonDemographicObj\r\n }\r\n : prevState.data\r\n return {\r\n data: data,\r\n personDemographicObject: prevState.personDemographicObject ? { ...prevState.personDemographicObject, User8Code: value.Key, User8: value.Key } : prevState.personDemographicObject\r\n };\r\n })\r\n }\r\n isUser8Valid = () => {\r\n return true\r\n }\r\n\r\n createUser9TextRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const demographicLabels = data.ImplementationAlias\r\n const demographicInfo = data.PersonDemographicObj\r\n const editing = this.state.editing\r\n const title = (demographicLabels.User9Label === \"\" || demographicLabels.User9Label === \"N/A\") ? \"USER 9\" : demographicLabels.User9Label\r\n\r\n if (!editing) {\r\n return \r\n }\r\n\r\n const input = ) => this.handleUser9TextChange(e)} />\r\n const result = \r\n return result\r\n }\r\n\r\n handleUser9TextChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value\r\n this.state.data && this.state.personDemographicObject && this.setState(prevState => {\r\n const data = prevState.data\r\n ? {\r\n ...prevState.data,\r\n PersonDemographicObj: prevState.data?.PersonDemographicObj ? { ...prevState.data.PersonDemographicObj, User9: value } : prevState.data?.PersonDemographicObj\r\n }\r\n : prevState.data\r\n return {\r\n data: data,\r\n personDemographicObject: prevState.personDemographicObject ? { ...prevState.personDemographicObject, User9: value } : prevState.personDemographicObject\r\n };\r\n })\r\n }\r\n\r\n isUser9TextValid = () => {\r\n return true\r\n }\r\n\r\n createUser10TextRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const demographicLabels = data.ImplementationAlias\r\n const demographicInfo = data.PersonDemographicObj\r\n const editing = this.state.editing\r\n const title = (demographicLabels.User10Label === \"\" || demographicLabels.User10Label === \"N/A\") ? \"USER 10\" : demographicLabels.User10Label\r\n\r\n if (!editing) {\r\n return \r\n }\r\n const input = ) => this.handleUser10TextChange(e)} />\r\n const result = \r\n return result\r\n }\r\n\r\n handleUser10TextChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value\r\n this.state.data && this.state.personDemographicObject && this.setState(prevState => {\r\n const data = prevState.data\r\n ? {\r\n ...prevState.data,\r\n PersonDemographicObj: prevState.data?.PersonDemographicObj ? { ...prevState.data.PersonDemographicObj, User10: value } : prevState.data?.PersonDemographicObj\r\n }\r\n : prevState.data\r\n return {\r\n data: data,\r\n personDemographicObject: prevState.personDemographicObject ? { ...prevState.personDemographicObject, User10: value } : prevState.personDemographicObject\r\n };\r\n })\r\n }\r\n\r\n isUser10TextValid = () => {\r\n return true\r\n }\r\n\r\n isCompanyValid = () =>{\r\n return this.state.isCompaniesLoading || !!this.state.selectedCompany\r\n }\r\n\r\n isValid = () => {\r\n const { editing } = this.state\r\n return editing && this.isSSNValid() && this.isCompanyValid()\r\n }\r\n createUserRows = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const demographicLabels = data.ImplementationAlias\r\n const demographicInfo = data.PersonDemographicObj\r\n const userRow1 = this.createUser1Row()\r\n const userRow2 = this.createUser2Row()\r\n const userRow3 = this.createUser3Row()\r\n const userRow4 = this.createUser4Row()\r\n const userRow5 = this.createUser5Row()\r\n const userRow6 = this.createUser6Row()\r\n const userRow7 = this.createUser7Row()\r\n const userRow8 = this.createUser8Row()\r\n const userRow9 = this.createUser9TextRow()\r\n const userRow10 = this.createUser10TextRow()\r\n const result = {\r\n userRow1: userRow1,\r\n userRow2: userRow2,\r\n userRow3: userRow3,\r\n userRow4: userRow4,\r\n userRow5: userRow5,\r\n userRow6: userRow6,\r\n userRow7: userRow7,\r\n userRow8: userRow8,\r\n userRow9: userRow9,\r\n userRow10: userRow10\r\n\r\n }\r\n return result\r\n }\r\n\r\n render() {\r\n const { isGov } = this.props\r\n if (!this.state.data) {\r\n return this.state.isGeneralInfoLoading ? : <>\r\n }\r\n const companyAdminOfAnotherCompany = this.props.isCompanyAdmin && this.props.companyID !== this.state.data.CompanyID\r\n const canEdit = !companyAdminOfAnotherCompany && (this.props.userPermissions?.canEditPersonnel || this.props.userPermissions?.CanManageConsortiumPools ? true : false)\r\n const editing = this.state.editing\r\n\r\n const infoRows = this.createInfoRows();\r\n const userRows = this.createUserRows();\r\n\r\n\r\n return (\r\n \r\n this.handleRegulatoryModeClose()}\r\n onSave={(items: RegMode[]) => this.handleRegulatoryModeSave(items)} />\r\n {this.state.showSupervisors && this.handleSupervisorsClose()}\r\n onSave={(items: Supervisor[]) => this.handleSupervisorsSave(items)} />}\r\n \r\n \r\n \r\n {infoRows.firstNameRow}\r\n {infoRows.lastNameRow}\r\n {infoRows.employerIdRow}\r\n {!isGov && \r\n {infoRows.driverIdRow}\r\n {this.showDriverState() && infoRows.driverStateRow}\r\n {infoRows.ssnRow}\r\n {infoRows.alternateIdRow}\r\n }\r\n {isGov && infoRows.companyRow}\r\n {!isGov && \r\n {infoRows.occupationRow}\r\n {infoRows.regulatoryModeRow}\r\n {infoRows.superVisorRow}\r\n {infoRows.hireDateRow}\r\n {infoRows.terminationDateRow}\r\n {infoRows.preEmploymentTestOnFileRow}\r\n {infoRows.managerRow}\r\n }\r\n {infoRows.activeRow}\r\n {this.state.data.Inactive && infoRows.reasonForInactivation}\r\n \r\n {infoRows.genderRow}\r\n {infoRows.dateOfBirthRow}\r\n \r\n {infoRows.streeAddressRow}\r\n {infoRows.cityRow}\r\n {infoRows.stateRow}\r\n {infoRows.zipRow}\r\n {infoRows.workPhoneRow}\r\n {infoRows.mobilePhoneRow}\r\n {infoRows.emailRow}\r\n \r\n {!isGov && \r\n \r\n \r\n {infoRows.companyRow}\r\n {infoRows.locationRow}\r\n {userRows.userRow1}\r\n {userRows.userRow2}\r\n {userRows.userRow3}\r\n {userRows.userRow4}\r\n {userRows.userRow5}\r\n {userRows.userRow6}\r\n {userRows.userRow7}\r\n {userRows.userRow8}\r\n {userRows.userRow9}\r\n {userRows.userRow10}\r\n \r\n }\r\n \r\n \r\n\r\n \r\n )\r\n }\r\n\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): GeneralInfoAuthProps {\r\n const userAccess = BuildUserAccess(state)\r\n const selectedCompany = GetSelectedAssignedClinic(state)\r\n return {\r\n userPermissions: userAccess,\r\n isPortalAdmin: isPortalAdmin(state),\r\n isCompanyAdmin: isCompanyAdmin(state),\r\n companyID: selectedCompany?.AccountID || 0,\r\n }\r\n}\r\nconst ConnectedGeneralInfo = connect(mapStateToProps)(GeneralInfo)\r\nexport default ConnectedGeneralInfo\r\n","enum PhoneType {\r\n Work = \"WorkPhone\",\r\n Cell = \"CellPhone\",\r\n Home = \"HomePhone\",\r\n}\r\n\r\nexport interface PhoneNumber {\r\n number: string\r\n isRequired: boolean\r\n}\r\n\r\nexport default PhoneType\r\n","import { AccountTypeID } from \"../../config/Constants\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport PhoneType from \"../PhoneType\"\r\nimport ServiceDetails from \"./OrderResultModel/ServiceDetails\"\r\nimport TestEventUpdateData from \"./OrderResultModel/TestEventUpdateData\"\r\n\r\ninterface CurrentServiceDetailsParams {\r\n AccountTypeID?: number\r\n TestDetailClinicalID?: string\r\n TestDetailID?: string\r\n CompareMode?:boolean\r\n}\r\n\r\nfunction requestParams(options: CurrentServiceDetailsParams) {\r\n return JSON.stringify({\r\n AccountTypeID: AccountTypeID,\r\n TestDetailClinicalID: options.TestDetailClinicalID,\r\n TestDetailID: options.TestDetailID,\r\n CompareMode:false\r\n })\r\n}\r\nfunction requestParamsForCompare(options: CurrentServiceDetailsParams) {\r\n return JSON.stringify({\r\n AccountTypeID: AccountTypeID,\r\n TestDetailClinicalID: options.TestDetailClinicalID,\r\n TestDetailID: options.TestDetailID,\r\n CompareMode:true\r\n })\r\n}\r\n\r\nexport const CurrentServiceDetails = (params: CurrentServiceDetailsParams) => ObservableFromFetch(\"WorkforceTrack/GetCurrentServiceDetail\", requestParams(params))\r\nexport const CurrentServiceDetailsForCompare = (params: CurrentServiceDetailsParams) => ObservableFromFetch(\"WorkforceTrack/GetCurrentServiceDetail\", requestParamsForCompare(params))\r\n\r\nexport const UpdateServiceData = (params: TestEventUpdateData) => {\r\n const requestBody = JSON.stringify({\r\n TestEventID: params.TestEventID,\r\n FormFoxTestAN: params.FormFoxTestAN,\r\n PersonnelID: params.PersonnelID,\r\n IDType: params.IDType,\r\n FirstName: params.FirstName,\r\n LastName: params.LastName,\r\n HomePhone: params.Phones[PhoneType.Home].number,\r\n WorkPhone: params.Phones[PhoneType.Work].number,\r\n CellPhone: params.Phones[PhoneType.Cell].number,\r\n RegulatoryModeID: params.RegulatoryModeID,\r\n EmployeeCategoryID: params.EmployeeCategoryID,\r\n })\r\n return ObservableFromFetch(\"WorkforceTrack/UpdateCurrentServiceDetail\", requestBody)\r\n}\r\n\r\ninterface ResolveAlertData{\r\n TestEventAlertID: string\r\n}\r\n\r\nexport const ResolveAlert = (params: ResolveAlertData) => {\r\n const requestBody = JSON.stringify({\r\n TestEventAlertID: params.TestEventAlertID\r\n })\r\n return ObservableFromFetch(\"WorkforceTrack/ResolveAlert\", requestBody)\r\n}\r\n","import React from \"react\"\r\nimport { Accordion, Card } from \"react-bootstrap\"\r\n\r\ninterface AccordionCardProps {\r\n eventKey: string\r\n title: JSX.Element | string\r\n children?: React.ReactNode\r\n}\r\nexport default function AccordionCard(props: AccordionCardProps) {\r\n return (\r\n \r\n {props.title}\r\n \r\n \r\n {props.children}\r\n \r\n \r\n \r\n )\r\n}\r\n","export default function FormatTime(date: Date | string | null | undefined, delimiter: string = \":\"): string {\r\n if (date) {\r\n if (typeof date === \"string\") {\r\n if (!isNaN(Date.parse(date))) {\r\n date = new Date(date)\r\n }\r\n }\r\n if (date instanceof Date) {\r\n return [\r\n (\"0\" + date.getHours()).slice(-2),\r\n (\"0\" + date.getMinutes()).slice(-2)\r\n ].join(delimiter)\r\n }\r\n }\r\n return \"\"\r\n}\r\n","import React, { ReactNode } from \"react\"\r\nimport { Col, Row } from \"react-bootstrap\"\r\nimport FormatDate from \"../../../../formatters/FormatDate\"\r\nimport FormatTime from \"../../../../formatters/FormatTime\"\r\n\r\ninterface BreakpointNumbers {\r\n xs?: number\r\n sm?: number\r\n md?: number\r\n lg?: number\r\n xl?: number\r\n}\r\n\r\ninterface CardRowProps {\r\n title: string\r\n value?: any\r\n date?: boolean\r\n time?: boolean\r\n bool?: boolean\r\n titleBreakpoints?: BreakpointNumbers\r\n valueBreakpoints?: BreakpointNumbers\r\n children?: ReactNode\r\n}\r\nexport default function CardRow(props: CardRowProps) {\r\n const { title, value, date, time, bool, titleBreakpoints: titleBr, valueBreakpoints: valueBr, children } = props\r\n const titleXs = titleBr?.xs || 6\r\n const titleMd = titleBr?.md || 4\r\n const valueXs = valueBr?.xs || 6\r\n const valueMd = valueBr?.md || 8\r\n return (\r\n \r\n {title}\r\n \r\n {date ? FormatDate(value) : time ? FormatTime(value) : bool ? (value ? \"Yes\" : \"No\") : value}\r\n {children}\r\n \r\n \r\n )\r\n}\r\n","export default interface ExcuseReason {\r\n Code: string,\r\n Description: string\r\n}\r\nexport const ALT_LOA_CODE = 'ALT_LOA'\r\nexport const ALT_TERM_CODE = 'ALT_TERM'\r\nexport const ALT_OTHER_CODE = 'ALT_OTHER'\r\n\r\nexport const AlternateExcuseReasons: ExcuseReason[] = [\r\n { Code: ALT_LOA_CODE, Description: \"LOA until end of Period\" },\r\n { Code: ALT_TERM_CODE, Description: \"Terminated\" },\r\n { Code: ALT_OTHER_CODE, Description: \"Unavailable to Test/Other\" }\r\n]\r\n\r\nexport function IsAltOtherExcuseReason(code: string) {\r\n if (!code) {\r\n return false\r\n }\r\n if (code === ALT_OTHER_CODE) {\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nexport function AltReasonDescriptionByCode(code: string): string{\r\n if(!code){\r\n return \"\"\r\n }\r\n const ind = AlternateExcuseReasons.findIndex(item => item.Code === code);\r\n if(ind < 0){\r\n return \"\"\r\n }\r\n return AlternateExcuseReasons[ind].Description\r\n}\r\n\r\n","import React from \"react\"\r\nimport { Col, Container, Row, Form } from \"react-bootstrap\"\r\nimport AccordionCard from \"./AccordionCard\"\r\nimport TestCardProps from \"./TestCardProps\"\r\nimport CardRow from \"./CardRow\"\r\nimport { EventData } from \"../../../../api/OrderResults/OrderResultModel/ServiceDetails\"\r\nimport FormatDate from \"../../../../formatters/FormatDate\"\r\nimport { AltReasonDescriptionByCode, IsAltOtherExcuseReason } from \"../../../../api/Randoms/RandomsModel/ExcuseReason\"\r\n\r\ntype SchedulingResult = {\r\n schedulingStatus: string,\r\n schedulingDate: string | null,\r\n}\r\nfunction getSchedulingData(data: EventData): SchedulingResult {\r\n let result: SchedulingResult = { schedulingStatus: \"\", schedulingDate: \"\" }\r\n if (data.DateScheduled) {\r\n result.schedulingStatus = data.ScheduleStatusDescription\r\n result.schedulingDate = FormatDate(data.DateScheduled)\r\n } else if (data.DateNotified) {\r\n result.schedulingStatus = \"Notified\"\r\n result.schedulingDate = FormatDate(data.DateNotified)\r\n } else if (data.DateOrdered) {\r\n result.schedulingStatus = \"Created\"\r\n result.schedulingDate = FormatDate(data.DateOrdered)\r\n }\r\n return result\r\n}\r\n\r\nexport default function CollectionCard(props: TestCardProps) {\r\n const data = props.data.EventData\r\n const schedulingResult = getSchedulingData(data)\r\n const schedulingNotes = data.SchedulingNotes || \"\"\r\n const excuseReasonCode = data.ExcuseReasonCode || \"\"\r\n const excuseReasonText = AltReasonDescriptionByCode(excuseReasonCode)\r\n const excuseComment = data.ExcuseComment || \"\"\r\n const isAltOtherExcuseReason = IsAltOtherExcuseReason(excuseReasonCode)\r\n const showSchedulingNotes = schedulingNotes.trim().length > 0\r\n const showExcuseReason = excuseReasonCode.startsWith(\"ALT_\")\r\n const showExcuseComment = isAltOtherExcuseReason && excuseComment.trim().length > 0\r\n\r\n const title = \r\n SCHEDULING\r\n {schedulingResult.schedulingStatus}\r\n {schedulingResult.schedulingDate}\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {(showSchedulingNotes || showExcuseReason || showExcuseComment) && \r\n \r\n {showSchedulingNotes &&\r\n }\r\n {showExcuseReason && {excuseReasonText}}\r\n {showExcuseComment &&\r\n }\r\n \r\n }\r\n \r\n \r\n \r\n )\r\n}\r\n","import React from \"react\"\r\nimport { Col, Row } from \"react-bootstrap\"\r\nimport AccordionCard from \"./AccordionCard\"\r\nimport TestCardProps from \"./TestCardProps\"\r\nimport CardRow from \"./CardRow\"\r\nimport FormatDate from \"../../../../formatters/FormatDate\"\r\n\r\nexport default function CollectionCard(props: TestCardProps) {\r\n const { data } = props\r\n const title = \r\n COLLECTION\r\n {data.DateCollected ? data.CollectionStatusDescription : \"\"}\r\n {data.DateCollected ? FormatDate(data.DateCollected) : \"\"}\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React from \"react\"\r\nimport { Col, Row } from \"react-bootstrap\"\r\nimport FormatDate from \"../../../../formatters/FormatDate\"\r\nimport AccordionCard from \"./AccordionCard\"\r\nimport CardRow from \"./CardRow\"\r\nimport TestCardProps from \"./TestCardProps\"\r\n\r\nexport default function ExamDetailCard(props: TestCardProps) {\r\n const { data } = props\r\n const title = \r\n EXAM DETAIL\r\n {data.DateCollected ? data.CollectionStatusDescription : \"\"}\r\n {data.DateCollected ? FormatDate(data.DateCollected) : \"\"}\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React from \"react\"\r\nimport { Col, Row } from \"react-bootstrap\"\r\nimport FormatDate from \"../../../../formatters/FormatDate\"\r\nimport AccordionCard from \"./AccordionCard\"\r\nimport CardRow from \"./CardRow\"\r\nimport TestCardProps from \"./TestCardProps\"\r\n\r\nexport default function ExamResultDetailCard(props: TestCardProps) {\r\n const { data } = props\r\n const title = \r\n EXAM RESULT DETAIL\r\n {data.DateCollected ? data.CollectionStatusDescription : \"\"}\r\n {data.DateCollected ? FormatDate(data.DateCollected) : \"\"}\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React from \"react\"\r\nimport { Col, Row } from \"react-bootstrap\"\r\nimport AccordionCard from \"./AccordionCard\"\r\nimport CardRow from \"./CardRow\"\r\nimport FormatDate from \"../../../../formatters/FormatDate\"\r\nimport TestCardProps from \"./TestCardProps\"\r\n\r\nexport default function BATAlcoholTestCard(props: TestCardProps) {\r\n const { data } = props\r\n const title = \r\n BREATH ALCOHOL TEST (BAT) COLLECTION DETAIL\r\n {data.DateCollected ? data.CollectionStatusDescription : \"\"}\r\n {data.DateCollected ? FormatDate(data.DateCollected) : \"\"}\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React from \"react\"\r\nimport { Col, Row, Table } from \"react-bootstrap\"\r\nimport FormatDate from \"../../../../formatters/FormatDate\"\r\nimport AccordionCard from \"./AccordionCard\"\r\nimport TestCardProps from \"./TestCardProps\"\r\n\r\nexport default function BATResultCard(props: TestCardProps) {\r\n const { data } = props\r\n const showConfirm = data.ConfirmLevel > 0.02\r\n const title = \r\n BAT RESULT DETAIL\r\n {data.DateCollected ? data.CollectionStatusDescription : \"\"}\r\n {data.DateCollected ? FormatDate(data.DateCollected) : \"\"}\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {showConfirm && }\r\n {showConfirm && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n {showConfirm && }\r\n {showConfirm && }\r\n \r\n \r\n \r\n \r\n {showConfirm && }\r\n {showConfirm && }\r\n \r\n \r\n \r\n \r\n {showConfirm && }\r\n {showConfirm && }\r\n \r\n \r\n \r\n \r\n {showConfirm && }\r\n {showConfirm && }\r\n \r\n \r\n
INITIAL SCREENINGCONFIRMATION SCREENING
DEVICE NAME{data.ScreenDeviceDescription}DEVICE NAME{data.ConfirmDeviceDescription}
DEVICE SERIAL NUMBER{data.ScreenDeviceSerialNumber}DEVICE SERIAL NUMBER{data.ConfirmDeviceSerialNumber}
TEST NUMBER{data.ScreenSequence}TEST NUMBER{data.ConfirmSequence}
SCREENING-LEVEL{data.ScreenLevel}SCREENING-LEVEL{data.ConfirmLevel}
\r\n
\r\n )\r\n}\r\n","import React from \"react\"\r\nimport { Col, Row } from \"react-bootstrap\"\r\nimport CardRow from \"./CardRow\"\r\nimport TestCardProps from \"./TestCardProps\"\r\nimport AccordionCard from \"./AccordionCard\"\r\nimport ServiceDetails from \"../../../../api/OrderResults/OrderResultModel/ServiceDetails\"\r\nimport FormatDate from \"../../../../formatters/FormatDate\"\r\n\r\ntype TestingResult = {\r\n testingText: string,\r\n testingDate: string | null,\r\n testingStatus: string | null,\r\n resultStatusCode?: string,\r\n testingClassName?: string\r\n}\r\nfunction getTestingResult(data: ServiceDetails, isCovid: boolean): TestingResult {\r\n let result: TestingResult = {testingText: \"\", testingStatus: \"\", testingDate: \"\"}\r\n if (data.ReleaseStatus) {\r\n if (data.ReleaseStatus.Code === \"MCOMP\" || data.ReleaseStatus.Code === \"MPEND\" || data.ReleaseStatus.Code === \"MCREL\") {\r\n result.testingText = \"Laboratory Testing Complete \"\r\n result.testingDate = FormatDate(data.LabReportDate)\r\n result.testingStatus = \"\"\r\n } else if (data.ReleaseStatus.Code === \"LCOMP\" || data.ReleaseStatus.Code === \"LCREL\" || data.ReleaseStatus.Code === \"PCOMP\" || data.ReleaseStatus.Code === \"PCREL\") {\r\n result.testingText = \"\"\r\n result.resultStatusCode = data.ReleaseStatus.Code\r\n result.testingDate = FormatDate(data.LabReportDate)\r\n result.testingStatus = \"\"\r\n if (data.ReleaseStatus.Code === \"LCREL\") {\r\n result.testingStatus = data.LabResultDescription\r\n }\r\n }\r\n }\r\n if (isCovid) {\r\n result.testingStatus = data.LabResultDescription\r\n }\r\n result.testingClassName = (result.testingStatus === '(Negative)' || result.resultStatusCode === 'LCOMP' || result.resultStatusCode === 'LCREL' || result.resultStatusCode === 'PCOMP'|| result.resultStatusCode === 'PCREL' || isCovid) ? \"black-text\" : \"red-text\"\r\n return result\r\n}\r\n\r\nexport default function TestingCard(props: TestCardProps) {\r\n const { data, isCovid } = props\r\n const testingResult = getTestingResult(data, !!isCovid)\r\n const title = \r\n TESTING\r\n \r\n {testingResult.testingText} \r\n {testingResult.testingStatus}\r\n \r\n {testingResult.testingDate}\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isCovid &&

{data.ClinicalLabNotes}

}\r\n
\r\n )\r\n}\r\n","import React from \"react\"\r\nimport AccordionCard from \"./AccordionCard\"\r\nimport TestCardProps from \"./TestCardProps\"\r\nimport CardRow from \"./CardRow\"\r\n\r\nexport default function ReviewCard(props: TestCardProps) {\r\n const { data } = props\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React from \"react\"\r\nimport { Row, Col } from \"react-bootstrap\"\r\nimport TestCardProps from \"./TestCardProps\"\r\nimport CardRow from \"./CardRow\"\r\nimport AccordionCard from \"./AccordionCard\"\r\n\r\nexport default function TestScreeningCard(props: TestCardProps) {\r\n const { data } = props\r\n const title = \r\n TESTING SCREENING: {data.ScreenResultDescription}\r\n TESTING CONFIRMATION: {data.ConfirmResultDescription}\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Accordion, Row, Col, Container } from \"react-bootstrap\"\r\nimport OrderResultRecord from \"../../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport ServiceDetails from \"../../../api/OrderResults/OrderResultModel/ServiceDetails\"\r\n\r\nimport SchedulingCard from \"./Cards/SchedulingCard\"\r\nimport CollectionCard from \"./Cards/CollectionCard\"\r\nimport ExamDetailCard from \"./Cards/ExamDetailCard\"\r\nimport ExamResultDetailCard from \"./Cards/ExamResultDetailCard\"\r\nimport BATAlcoholTestCard from \"./Cards/BATAlcoholTestCard\"\r\nimport BATResultCard from \"./Cards/BATResultCard\"\r\nimport TestingCard from \"./Cards/TestingCard\"\r\nimport ReviewCard from \"./Cards/ReviewCard\"\r\nimport TestScreeningCard from \"./Cards/TestScreeningCard\"\r\n\r\ninterface TestStepsProps {\r\n currentRowInfo: OrderResultRecord,\r\n currentServiceInfo: ServiceDetails,\r\n isOnTrack?: boolean\r\n}\r\nexport default class TestSteps extends Component {\r\n render = () => {\r\n const {currentRowInfo, currentServiceInfo, isOnTrack} = this.props\r\n const EventData = currentServiceInfo.EventData\r\n\r\n // TODO: the logic for constants below was ported from Angular application and *probably* will need to be refactored\r\n const isCollection = currentRowInfo.TestType === \"Drug\" || currentServiceInfo.IsClinical\r\n const isExamDetail = currentRowInfo.TestType === \"Physical\"\r\n const isAlcohol = currentRowInfo.TestType === \"Alcohol\"\r\n const isTesting = (currentServiceInfo.TestTypeDescription !== \"Alcohol\" && currentRowInfo.TestType === \"Drug\") || currentServiceInfo.IsClinical\r\n const isReview = currentServiceInfo.TestTypeDescription !== \"Alcohol\" && currentRowInfo.TestType === \"Drug\"\r\n const isTestScreening = currentServiceInfo.TestTypeDescription === \"Alcohol\" && currentRowInfo.TestType === \"Drug\"\r\n const isCovid = (currentRowInfo.TestDetailClinicalID || \"\").length > 0\r\n\r\n return (\r\n \r\n \r\n
TEST STEPS
\r\n
\r\n \r\n \r\n \r\n \r\n { isCollection && }\r\n { isExamDetail && }\r\n { isExamDetail && }\r\n { isAlcohol && }\r\n { isAlcohol && }\r\n { isTesting && }\r\n { isReview && !isOnTrack && }\r\n { isTestScreening && }\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Container, Row, Col, Spinner } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { CurrentServiceDetails } from \"../../../api/OrderResults/CurrentServiceDetails\"\r\nimport OrderResultRecord from \"../../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport ServiceDetails from \"../../../api/OrderResults/OrderResultModel/ServiceDetails\"\r\nimport SelectionInboxGridRow from \"../../../api/Randoms/SelectionInboxModel/SelectionInboxGridRow\"\r\nimport { ImplementationTypeGovt, StorageKey } from \"../../../config/Constants\"\r\nimport TestSteps from \"../EventDetails/TestSteps\"\r\n\r\ninterface CurrentServiceProps {\r\n details: OrderResultRecord\r\n}\r\n\r\ninterface CurrentServiceState {\r\n data?: ServiceDetails\r\n loading: boolean\r\n}\r\n\r\nexport default class CurrentService extends Component {\r\n subscription?: Subscription\r\n state: CurrentServiceState = { data: undefined, loading:false }\r\n isOnTrack: boolean = sessionStorage.getItem(StorageKey.ImplementationType) === ImplementationTypeGovt\r\n\r\n componentDidMount() {\r\n this.setState({ loading: true })\r\n const details = this.props.details\r\n this.subscription = CurrentServiceDetails({ TestDetailClinicalID: details.TestDetailClinicalID, TestDetailID: details.TestDetailID }).subscribe(\r\n (data: ServiceDetails) => this.setState({ data: data, loading: false }),\r\n (error: string) => {\r\n this.setState({ loading: false })\r\n toast.error(error)\r\n },\r\n () => this.setState({ loading: false })\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n }\r\n\r\n render() {\r\n if (!this.state.data) {\r\n return this.state.loading ? : <>\r\n } else {\r\n const currentServiceInfo = this.state.data\r\n const currentRowInfo = this.props.details\r\n return currentServiceInfo ? (\r\n \r\n \r\n \r\n \r\n
\r\n {currentServiceInfo.TestTypeDescription} TEST: {currentServiceInfo.TestReleaseStatusDescription} - {currentServiceInfo.MROResultDescription}\r\n
\r\n \r\n
\r\n \r\n REASON FOR TEST\r\n {currentServiceInfo.TestReasonDescription}\r\n \r\n \r\n SAMPLE TYPE\r\n {currentServiceInfo.SampleTypeDescription}\r\n \r\n \r\n PANEL\r\n {currentServiceInfo.Panel.Description}\r\n \r\n \r\n FEDERALLY REGULATED\r\n {currentServiceInfo.DOT ? \"Yes\" : \"No\"}\r\n \r\n \r\n REGULATORY MODE\r\n {currentServiceInfo.EventData.RegulatoryModeName}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n ) : null\r\n }\r\n}\r\n}\r\n","import { AccountTypeID } from \"../../config/Constants\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport GridResponse from \"../GridResponse\"\r\nimport OrderResultRecord from \"./OrderResultModel/OrderResultRecord\"\r\n\r\nexport type ServiceHistoryGridResponse = GridResponse\r\n\r\ninterface CurrentServiceHistoryParams {\r\n AccountTypeID?: number\r\n PersonID: number\r\n PoolID?: number\r\n PageNumber: number\r\n PageSize: number\r\n}\r\n\r\nfunction requestParams(options: CurrentServiceHistoryParams) {\r\n return JSON.stringify({\r\n AccountTypeID: AccountTypeID,\r\n PersonID: options.PersonID,\r\n PoolID: options.PoolID,\r\n PageNumber: options.PageNumber,\r\n PageSize: options.PageSize\r\n })\r\n}\r\n\r\nexport const GetCurrentServiceHistory = (params: CurrentServiceHistoryParams) => ObservableFromFetch(\"WorkforceTrack/GetEmployeeTestHistory\", requestParams(params))\r\n","import { Col, Form, Row } from \"react-bootstrap\"\r\n\r\nimport CardRow from \"./CardRow\"\r\nimport PhoneType, { PhoneNumber } from \"../../../../api/PhoneType\"\r\nimport PhoneNumberMaskedInput from \"../../../FormattedInputs/PhoneNumberMaskedInput\"\r\nimport FormatPhone from \"../../../../formatters/FormatPhone\"\r\n\r\ninterface PhoneNumberCardProps {\r\n variant: PhoneType\r\n readonly: boolean\r\n phone: PhoneNumber\r\n onChange: (value: string, type: PhoneType) => void\r\n}\r\n\r\nfunction PhoneNumberCard(props: PhoneNumberCardProps) {\r\n const { variant, readonly, phone, onChange } = props\r\n\r\n const label = () => {\r\n switch (variant) {\r\n case PhoneType.Home:\r\n return \"HOME PHONE\"\r\n case PhoneType.Work:\r\n return \"WORK PHONE\"\r\n case PhoneType.Cell:\r\n return \"MOBILE PHONE\"\r\n default:\r\n return \"\"\r\n }\r\n }\r\n\r\n const onNumberChange = (number: string) => onChange(number, variant)\r\n\r\n const isValid = (phone: string) => {\r\n const phoneNumber = phone.replace(/\\D/g, \"\")\r\n\r\n return phoneNumber.length === 0 || phoneNumber.length === 10\r\n }\r\n\r\n return (\r\n <>\r\n {readonly && }\r\n {!readonly && (\r\n \r\n \r\n {`${label()}`}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default PhoneNumberCard\r\n","import PhoneNumberCard from \"./PhoneNumberCard\"\r\nimport PhoneType, { PhoneNumber } from \"../../../../api/PhoneType\"\r\n\r\ninterface PhoneNumbersProps {\r\n phones: Record\r\n readonly: boolean\r\n onChange: (value: string, type: PhoneType) => void\r\n}\r\n\r\nfunction PhoneNumbers(props: PhoneNumbersProps) {\r\n const { phones, readonly, onChange } = props\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default PhoneNumbers\r\n","import { StorageKey } from \"../config/Constants\"\r\n\r\nconst expirationTimeout: number = 15 * 60 * 1000 // 15 minutes in milliseconds\r\nexport const ProcessingCollectionLabel = \"Processing Collection\"\r\n\r\ninterface CachedCollectionTest {\r\n id: string\r\n timestamp: number\r\n}\r\n\r\nfunction getCachedCollectionTests(): CachedCollectionTest[] {\r\n return JSON.parse(sessionStorage.getItem(StorageKey.CachedCollectionTests) || \"[]\")\r\n}\r\n\r\nfunction getProcessingCollectionTests(): CachedCollectionTest[] {\r\n const tests: CachedCollectionTest[] = getCachedCollectionTests()\r\n return tests.filter((test: CachedCollectionTest) => test.timestamp + expirationTimeout > Date.now())\r\n}\r\n\r\nfunction setProcessingCollectionTests(tests: CachedCollectionTest[]) {\r\n sessionStorage.setItem(StorageKey.CachedCollectionTests, JSON.stringify(tests))\r\n}\r\n\r\nexport function addProcessingCollectionTest(id: string) {\r\n let tests: CachedCollectionTest[] = getProcessingCollectionTests()\r\n const test: CachedCollectionTest = {id: id, timestamp: Date.now() }\r\n tests.push(test)\r\n setProcessingCollectionTests(tests)\r\n}\r\n\r\nexport function refreshProcessingCollectionTests() {\r\n setProcessingCollectionTests(getProcessingCollectionTests())\r\n}\r\n\r\nexport function isProcessingCollection(id: string) {\r\n const tests: CachedCollectionTest[] = getProcessingCollectionTests()\r\n return tests.map(test => test.id).includes(id)\r\n}\r\n\r\nexport function hasCachedCollectionTests() {\r\n return getCachedCollectionTests().length > 0\r\n}\r\n","import { GovPerformCollectionData } from \"./GovPoolModel/GovPerformCollection\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport interface SendResult {\r\n Success: boolean\r\n Text: string\r\n ImageData: string\r\n\r\n}\r\nexport default function GovSendToLab(data: GovPerformCollectionData) {\r\n const params: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"GovOrder/GovSendToLab\", params)\r\n}\r\nexport function GovMarkAsComplete(data: GovPerformCollectionData) {\r\n const params: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"GovOrder/GovMarkAsComplete\", params)\r\n}","import React, { useCallback, useEffect, useRef, useState } from 'react'\r\nimport { Row, Col, Container, Form } from 'react-bootstrap'\r\nimport { useEffectAfterMount } from '../../utils/hooks'\r\n\r\nexport enum Temperature {\r\n NOT_SELECTED = 0,\r\n IN_RANGE = 1,\r\n OUT_OF_RANGE = 2\r\n}\r\n\r\nexport interface RecordTemperatureProps {\r\n temperature: number\r\n required: boolean\r\n disabled?: boolean\r\n validate?: boolean | undefined\r\n onChange: (value: number, isValid: boolean) => void\r\n}\r\n\r\nconst RecordTemperature = (props: RecordTemperatureProps) => {\r\n const [isValid, setIsValid] = useState(true)\r\n const [temperature, setTemperature] = useState(props.temperature)\r\n\r\n const refObj = useRef({ onChange: props.onChange })\r\n const refInput = useRef(null)\r\n\r\n const isRangeSelected = useCallback(() => {\r\n return !props.required || temperature !== Temperature.NOT_SELECTED\r\n }, [props.required, temperature])\r\n\r\n useEffectAfterMount(() => {\r\n if (props.validate !== undefined) {\r\n const valid = isRangeSelected()\r\n if (!valid) { refInput.current?.focus() }\r\n\r\n setIsValid(valid)\r\n }\r\n\r\n }, [isRangeSelected, props.validate])\r\n\r\n useEffect(() => {\r\n refObj.current.onChange(temperature, isRangeSelected())\r\n }, [isRangeSelected, temperature])\r\n\r\n const onChange = (e: React.ChangeEvent) => setTemperature(Number(e.target.value))\r\n\r\n return (\r\n \r\n \r\n
Record Temperature
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {!isValid && Please select temperature range.}\r\n \r\n \r\n
)\r\n}\r\n\r\nexport default RecordTemperature\r\n","import React, { useEffect, useState } from 'react'\r\nimport { Row, Col, Container, Spinner } from 'react-bootstrap'\r\nimport FormatDate from '../../formatters/FormatDate'\r\nimport { GeneralInformationGet } from '../../api/OrderResults/GeneralInformationGet'\r\nimport GeneralInformation from '../../api/OrderResults/OrderResultModel/GeneralInformation'\r\nimport FormatError from '../../formatters/FormatError'\r\nimport { toast } from 'react-toastify'\r\nimport { Subscriber } from 'rxjs'\r\nimport { finalize } from 'rxjs/operators'\r\n\r\nexport interface DonorInfoProps {\r\n personID?: number,\r\n firstName?: string,\r\n lastName?: string,\r\n dateOfBirth?: Date,\r\n gender?: string\r\n}\r\n\r\nconst DonorInfo = (props: DonorInfoProps) => {\r\n const { personID } = props\r\n\r\n const [loading, setLoading] = useState(false)\r\n const [person, setPerson] = useState({ ...props })\r\n\r\n const formatGender = (gender: string = \"\") => {\r\n switch (gender) {\r\n case \"M\":\r\n return \"Male\"\r\n case \"F\":\r\n return \"Female\"\r\n default:\r\n return \"Unknown\"\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n const sub = new Subscriber()\r\n if (!!personID) {\r\n setLoading(true)\r\n const sub = GeneralInformationGet(personID)\r\n .pipe(finalize(() => setLoading(false)))\r\n .subscribe(\r\n (data: GeneralInformation) => {\r\n setPerson({\r\n personID: data.PersonID,\r\n firstName: data.FirstName,\r\n lastName: data.LastName,\r\n dateOfBirth: !!data.DOB ? new Date(data.DOB) : undefined,\r\n gender: data.Gender\r\n })\r\n },\r\n error => toast.error(FormatError(error))\r\n )\r\n }\r\n return () => sub.unsubscribe()\r\n }, [personID])\r\n\r\n return (\r\n \r\n \r\n \r\n
Donor Name:
\r\n {loading ? : `${person.firstName} ${person.lastName}`}\r\n \r\n \r\n
DOB:
\r\n {loading ? : FormatDate(person.dateOfBirth)}\r\n \r\n \r\n
Gender:
\r\n {loading ? : formatGender(person.gender)}\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default DonorInfo\r\n","import { EffectCallback, DependencyList, useRef, useEffect } from \"react\";\r\n\r\n/**\r\n * A custom useEffect hook that only triggers on updates, not on initial mount\r\n * @param {Function} effect\r\n * @param {Array} dependencies\r\n */\r\nexport const useEffectAfterMount = (effect: EffectCallback, dependencies: DependencyList | undefined = []) => {\r\n const mounted = useRef(true);\r\n\r\n useEffect(() => {\r\n if (!mounted.current) {\r\n return effect()\r\n }\r\n mounted.current = false\r\n }, dependencies)\r\n}\r\n","export enum PanelResult {\r\n NOT_SELECTED = 0,\r\n POSITIVE = 1,\r\n INCONCLUSIVE = 2,\r\n NEGATIVE = 3,\r\n}\r\n","import { Form } from \"react-bootstrap\"\r\n\r\ninterface SpecimenIdInputProps {\r\n className?: string\r\n readOnly?: boolean\r\n disabled?: boolean\r\n size?: \"sm\" | \"lg\"\r\n value: string\r\n isValid?: () => boolean\r\n onChange: (value: string) => void\r\n}\r\n\r\nconst SpecimenIdInput = (props: SpecimenIdInputProps) => {\r\n return (\r\n props.onChange(e.target.value)} />\r\n )\r\n}\r\n\r\nexport default SpecimenIdInput\r\n","import { useCallback, useEffect, useRef, useState } from \"react\"\r\nimport { Col, Container, Form, Row } from \"react-bootstrap\"\r\nimport SpecimenIdInput from \"../FormattedInputs/SpecimenIdInput\"\r\nimport { useEffectAfterMount } from \"../../utils/hooks\"\r\n\r\nexport interface InputSpecimenIdProps {\r\n sampleId?: string\r\n required?: boolean\r\n disabled?: boolean\r\n validate?: boolean | undefined\r\n onChange: (value: string, isValid: boolean) => void\r\n}\r\n\r\nconst InputSpecimenId = (props: InputSpecimenIdProps) => {\r\n const { sampleId = \"\", required = false, disabled = false } = props\r\n\r\n const [id, setId] = useState(sampleId)\r\n const [idRepeat, setIdRepeat] = useState(sampleId)\r\n const [isIdValid, setIdValid] = useState(true)\r\n const [isIdRepeatValid, setIdRepeatValid] = useState(true)\r\n const refObj = useRef({ onChange: props.onChange })\r\n\r\n const isIdFormatValid = (value: string, alowEmpty: boolean = false) => {\r\n return value.length === 0 ? alowEmpty : new RegExp(`^[A-Za-z]{1}[0-9]{9}$`).test(value)\r\n }\r\n\r\n const isValid = useCallback(() => {\r\n return isIdFormatValid(id, !required) && id === idRepeat\r\n }, [id, idRepeat, required])\r\n\r\n useEffect(() => {\r\n refObj.current.onChange(id, isValid())\r\n }, [id, isValid])\r\n\r\n useEffectAfterMount(() => {\r\n if (props.validate !== undefined) {\r\n setIdValid(isIdFormatValid(id, !required))\r\n setIdRepeatValid(id === idRepeat)\r\n }\r\n }, [props.validate, required, id, idRepeat])\r\n\r\n return (\r\n \r\n \r\n \r\n
Specimen ID#
\r\n isIdValid}\r\n onChange={value => setId(value)} />\r\n \r\n \r\n
Repeat Specimen ID#
\r\n isIdRepeatValid}\r\n onChange={value => setIdRepeat(value)} />\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {!isIdValid && \r\n {`The SpecimenID must start with an Alpha character followed by 9 digits.`}\r\n }\r\n {!isIdRepeatValid && \r\n The two Specimen ID entries must match each other.\r\n }\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default InputSpecimenId\r\n","import { Container, Row, Col, Form } from \"react-bootstrap\"\r\n\r\nexport interface CollectorNotesProps {\r\n notes: string\r\n disabled?: boolean\r\n onChange: (value: string) => void\r\n}\r\n\r\nconst CollectorNotes = (props: CollectorNotesProps) => {\r\n const { disabled = false } = props\r\n\r\n return (\r\n \r\n \r\n \r\n
Collector Notes
\r\n props.onChange(e.target.value)} />\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default CollectorNotes\r\n","import React, { useEffect, useState } from \"react\"\r\nimport { Row, Col, Form, Table } from \"react-bootstrap\"\r\nimport SelectedGovPanel from \"../../api/Randoms/GovPoolModel/GovPerformCollection\"\r\nimport { Dictionary } from \"../../api/GovPerformCollection/Dictionary\"\r\n\r\nexport interface AdditionalPanelsProps {\r\n panels: Dictionary\r\n onUpdate: (panels: Dictionary) => void\r\n}\r\n\r\nconst AdditionalPanels = (props: AdditionalPanelsProps) => {\r\n const { onUpdate } = props\r\n\r\n const [panels, setPanels] = useState>(props.panels)\r\n\r\n const formatDrugLabel = (label: string) => {\r\n const mappings = [{ from: \" CONF URN\", to: \"\" }].forEach((m) => (label = label.replace(m.from, m.to)))\r\n\r\n return label\r\n }\r\n\r\n const onSelect = (e: React.ChangeEvent) => {\r\n const code = e.target.value\r\n const checked = e.target.checked ? 1 : 0\r\n\r\n setPanels((prev) => ({ ...prev, [code]: { ...prev[code], SendToLab: checked } }))\r\n }\r\n\r\n useEffect(() => {\r\n setPanels(props.panels)\r\n }, [props.panels])\r\n\r\n useEffect(() => {\r\n onUpdate(panels)\r\n }, [onUpdate, panels])\r\n\r\n return (\r\n <>\r\n {Object.values(panels).length > 0 && (\r\n \r\n \r\n
Additional Testing
\r\n \r\n \r\n {Object.values(panels).map((panel, code) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default AdditionalPanels\r\n","import { Form } from \"react-bootstrap\"\r\nimport SelectedGovPanel from \"../../api/Randoms/GovPoolModel/GovPerformCollection\"\r\nimport { PanelResult } from \"../../api/GovPerformCollection/PanelResult\"\r\n\r\nexport interface MainPanelRowProps {\r\n panel: SelectedGovPanel\r\n onUpdatePanel: (panel: SelectedGovPanel) => void\r\n}\r\n\r\nconst MainPanelRow = (props: MainPanelRowProps) => {\r\n const { panel, onUpdatePanel } = props\r\n\r\n const onChange = (e: React.ChangeEvent) => {\r\n const value = Number(e.target.value)\r\n const newPanel = { ...panel, SelectedStatus: value }\r\n if ([PanelResult.POSITIVE, PanelResult.INCONCLUSIVE].includes(value)) {\r\n newPanel.SendToLab = 1\r\n }\r\n onUpdatePanel(newPanel)\r\n }\r\n\r\n const onToggleSendToLab = (e: React.ChangeEvent) => {\r\n onUpdatePanel({ ...panel, SendToLab: e.target.checked ? 1 : 0 })\r\n }\r\n\r\n\r\n if (panel.ExternalID === \"\") {\r\n return (\r\n \r\n \r\n {panel.Label}\r\n \r\n Not Available\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n {panel.Label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default MainPanelRow\r\n","import { Row, Col, Table, Form, Spinner } from \"react-bootstrap\"\r\nimport SelectedGovPanel from \"../../api/Randoms/GovPoolModel/GovPerformCollection\"\r\nimport { useCallback, useEffect, useState } from \"react\"\r\nimport MainPanelRow from \"./MainPanelRow\"\r\nimport { Dictionary } from \"../../api/GovPerformCollection/Dictionary\"\r\nimport { PanelResult } from \"../../api/GovPerformCollection/PanelResult\"\r\n\r\nexport interface MainPanels {\r\n panels: Dictionary\r\n loading?: boolean\r\n onUpdate: (panels: Dictionary) => void\r\n}\r\n\r\nconst MainPanels = (props: MainPanels) => {\r\n const { loading = false, onUpdate } = props\r\n\r\n const [panels, setPanels] = useState>(props.panels)\r\n\r\n const isAllPanelSelected = (type: number) => Object.values(panels)\r\n .filter(panel => panel.ExternalID !== \"\")\r\n .every(panel => panel.SelectedStatus === type)\r\n\r\n const isAllPanelDisabled = () => loading || Object.values(panels).filter(panel => panel.ExternalID !== \"\").length == 0\r\n\r\n const isAllSendToLabSelected = () => {\r\n const values = Object.values(panels).filter(panel => panel.ExternalID !== \"\")\r\n return values.length == 0 || values.every(panel => panel.SendToLab === 1)\r\n }\r\n\r\n const isAllSendToLabDisabled = () => Object.values(panels)\r\n .filter(panel => panel.ExternalID !== \"\")\r\n .every(panel => panel.SelectedStatus === PanelResult.NOT_SELECTED)\r\n\r\n const onSelectAllPanels = (e: React.ChangeEvent) => {\r\n const value = Number(e.target.value)\r\n const uncheckLabOnNegative = (isAllPanelSelected(PanelResult.POSITIVE) || isAllPanelSelected(PanelResult.INCONCLUSIVE)) && value == PanelResult.NEGATIVE\r\n const selectedPanels = Object.entries(panels)\r\n .reduce>((acc, [key, panel]) => {\r\n return {\r\n ...acc,\r\n [key]: {\r\n ...panel,\r\n SelectedStatus: panel.ExternalID !== \"\" ? value : panel.SelectedStatus,\r\n SendToLab: [PanelResult.POSITIVE, PanelResult.INCONCLUSIVE].includes(value) && panel.ExternalID !== \"\" ? 1 : uncheckLabOnNegative ? 0 : panel.SendToLab\r\n }\r\n }\r\n }, {})\r\n\r\n setPanels(prev => ({ ...prev, ...selectedPanels }))\r\n }\r\n\r\n const onSelectAllSendToLab = (e: React.ChangeEvent) => {\r\n const checked = e.target.checked ? 1 : 0\r\n\r\n const selectedPanels = Object.entries(panels)\r\n .reduce((acc, [key, panel]) => {\r\n return {\r\n ...acc,\r\n [key]: {\r\n ...panel,\r\n SendToLab: panel.SelectedStatus !== PanelResult.NOT_SELECTED && panel.ExternalID !== \"\" ? checked : panel.SendToLab\r\n }\r\n }\r\n }, {})\r\n\r\n setPanels(prev => ({ ...prev, ...selectedPanels }))\r\n }\r\n\r\n const onUpdatePanel = useCallback((panel: SelectedGovPanel) => {\r\n setPanels(prev => ({ ...prev, [panel.InternalCode]: { ...prev[panel.InternalCode], ...panel } }))\r\n }, [])\r\n\r\n useEffect(() => {\r\n setPanels(props.panels)\r\n }, [props.panels])\r\n\r\n useEffect(() => {\r\n onUpdate(panels)\r\n }, [onUpdate, panels])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {loading && }\r\n {!loading && Object.values(panels).length == 0 && }\r\n {!loading && Object.values(panels).map((panel) =>\r\n \r\n )}\r\n \r\n
DRUG CODE\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
DATA NOT FOUND
\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default MainPanels\r\n","import { SampleType } from \"./GovPoolModel/CollectionTypeResponse\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function GetPanels(labAccountCode: string, DeviceID: number = 0) {\r\n return ObservableFromFetch(\r\n \"GovPool/GetPanels?labAccountCode=\" + labAccountCode + \"&DeviceID=\" + DeviceID\r\n )\r\n}\r\nexport function GovGetLabDeviceDrugs(sampleTypeCode: string, labAccountCode: string, DeviceID: number = 0, AccountID: number) {\r\n return ObservableFromFetch(\r\n \"GovOrder/GetLabDeviceDrugs?sampleTypeCode=\" +\r\n sampleTypeCode +\r\n \"&labAccountCode=\" +\r\n labAccountCode +\r\n \"&deviceId=\" +\r\n DeviceID +\r\n \"&accountId=\" +\r\n AccountID\r\n )\r\n}\r\n","import { useCallback, useEffect, useState } from \"react\"\r\nimport SelectedGovPanel from \"../../api/Randoms/GovPoolModel/GovPerformCollection\"\r\nimport AdditionalPanels from \"./AdditionalPanels\"\r\nimport MainPanels from \"./MainPanels\"\r\nimport { toast } from \"react-toastify\"\r\nimport { GovGetLabDeviceDrugs } from \"../../api/Randoms/GovGetPanels\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\nimport { SampleType } from \"../../api/Randoms/GovPoolModel/CollectionTypeResponse\"\r\nimport { finalize } from \"rxjs/operators\"\r\nimport { Dictionary } from \"../../api/GovPerformCollection/Dictionary\"\r\nimport { PanelResult } from \"../../api/GovPerformCollection/PanelResult\"\r\n\r\nexport interface PanelsProps {\r\n labCode: string\r\n sampleTypeCode: string\r\n onUpdate: (panels: SelectedGovPanel[]) => void\r\n onLoading: (loading: boolean) => void\r\n deviceID: number\r\n accountID: number\r\n}\r\n\r\nconst Panels = (props: PanelsProps) => {\r\n const { labCode, sampleTypeCode, onUpdate, onLoading, deviceID, accountID } = props\r\n\r\n const [loadingPanels, setLoadingPanels] = useState(false)\r\n const [mainPanels, setMainPanels] = useState>({})\r\n const [additionalPanels, setAdditionalPanels] = useState>({})\r\n\r\n const isPOCTSample = () => [\"QT\", \"QTS\"].includes(sampleTypeCode)\r\n\r\n const isLabSample = useCallback(() => [\"UR\", \"SLD\"].includes(sampleTypeCode), [sampleTypeCode])\r\n\r\n const populatePanels = useCallback(\r\n (data: SampleType[]) => {\r\n return data.reduce>((panels, sampleType) => {\r\n sampleType.Panels.map((panel) => {\r\n panels[panel.InternalCode || panel.ID] = {\r\n SelectedStatus: PanelResult.NOT_SELECTED,\r\n SendToLab: (isLabSample() && panel.InternalCode !== \"\") ? 1 : 0, // Additional panels will have blank InternalCode\r\n SampleTypeID: sampleType.SampleTypeID,\r\n Code: panel.ID,\r\n Name: panel.Name,\r\n Label: panel.Name.split(\" \")[0] || panel.InternalCode || \"\",\r\n ExternalID: panel.ExternalID || \"\",\r\n InternalCode: panel.InternalCode || \"\",\r\n }\r\n })\r\n return panels\r\n }, {})\r\n },\r\n [isLabSample]\r\n )\r\n\r\n useEffect(() => {\r\n setLoadingPanels(true)\r\n const subscription = GovGetLabDeviceDrugs(sampleTypeCode, labCode, deviceID, accountID)\r\n .pipe(finalize(() => setLoadingPanels(false)))\r\n .subscribe(\r\n (data) => {\r\n const mainPanels: Dictionary = {}\r\n const additionalPanels: Dictionary = {}\r\n Object.entries(populatePanels(data)).forEach(([code, panel]) => {\r\n ;(panel.InternalCode == \"\" ? additionalPanels : mainPanels)[code] = panel\r\n })\r\n setMainPanels(mainPanels)\r\n setAdditionalPanels(additionalPanels)\r\n },\r\n (error) => toast.error(FormatError(error))\r\n )\r\n return () => subscription.unsubscribe()\r\n }, [labCode, populatePanels])\r\n\r\n useEffect(() => {\r\n onLoading(loadingPanels)\r\n }, [loadingPanels, onLoading])\r\n\r\n useEffect(() => {\r\n onUpdate(Object.values({ ...mainPanels, ...additionalPanels }))\r\n }, [mainPanels, additionalPanels, onUpdate])\r\n\r\n return (\r\n <>\r\n {loadingPanels && <>Loading...}\r\n {isPOCTSample() && }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default Panels\r\n","import React, { PureComponent } from \"react\"\r\nimport { Col, Container, Modal, Row } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport GovSendToLab, { GovMarkAsComplete, SendResult } from \"../../api/Randoms/GovPerformCollection\"\r\nimport SelectedGovPanel, { GovPerformCollectionData } from \"../../api/Randoms/GovPoolModel/GovPerformCollection\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport printPdf from \"../../utils/printPdf\"\r\nimport DonorInfo from \"../GovPerformCollection/DonorInfo\"\r\nimport RecordTemperature, { Temperature } from \"../GovPerformCollection/RecordTemperature\"\r\nimport { finalize } from \"rxjs/operators\"\r\nimport InputSpecimenId from \"../GovPerformCollection/InputSpecimenId\"\r\nimport CollectorNotes from \"../GovPerformCollection/CollectorNotes\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\nimport Panels from \"../GovPerformCollection/Panels\"\r\nimport { PanelResult } from \"../../api/GovPerformCollection/PanelResult\"\r\n\r\nexport interface GovPerformCollectionProps {\r\n testName?: string\r\n testDetailID: number\r\n testDetailIDHash: string\r\n referenceID: number\r\n sampleTypeCode: string\r\n sampleTypeID: number\r\n labCode: string\r\n sampleID: string\r\n tempInRange?: number\r\n personID?: number\r\n firstName?: string\r\n lastName?: string\r\n dateOfBirth?: Date\r\n gender?: string\r\n collectorNotes?: string\r\n onHide: (collected?: boolean) => void\r\n DeviceID: number\r\n AccountID: number\r\n}\r\n\r\ninterface GovPerformCollectionState {\r\n loading: boolean\r\n collected: boolean\r\n sendingToLab: boolean\r\n markingAsComplete: boolean\r\n isTempRangeValid: boolean\r\n isSampleIdValid: boolean\r\n validate: boolean | undefined\r\n data: GovPerformCollectionData\r\n}\r\n\r\nexport default class GovPerformCollection extends PureComponent {\r\n state: GovPerformCollectionState = {\r\n loading: false,\r\n collected: false,\r\n sendingToLab: false,\r\n markingAsComplete: false,\r\n isTempRangeValid: this.props.tempInRange !== Temperature.NOT_SELECTED,\r\n isSampleIdValid: true,\r\n validate: undefined,\r\n data: {\r\n TestDetailID: this.props.testDetailID,\r\n TestDetailIDHash: this.props.testDetailIDHash,\r\n ReferenceID: this.props.referenceID,\r\n SampleTypeCode: this.props.sampleTypeCode || \"\",\r\n SampleTypeID: this.props.sampleTypeID,\r\n TempInRange: this.props.tempInRange || Temperature.NOT_SELECTED,\r\n SampleID: [\"N/P\"].includes(this.props.sampleID) ? \"\" : this.props.sampleID,\r\n CollectorNotes: this.props.collectorNotes || \"\",\r\n SelectedPanels: [],\r\n DeviceID: this.props.DeviceID || 0\r\n }\r\n }\r\n\r\n markAsCompleteSubscription?: Subscription = undefined\r\n sendToLabSubscription?: Subscription = undefined\r\n\r\n componentWillUnmount() {\r\n this.markAsCompleteSubscription && this.markAsCompleteSubscription.unsubscribe()\r\n this.sendToLabSubscription && this.sendToLabSubscription.unsubscribe()\r\n }\r\n\r\n withoutNotAvailable = () => this.state.data.SelectedPanels.filter(p => p.ExternalID !== \"\")\r\n\r\n isAllMainPanelsSelected = (type: number) => {\r\n const panels = this.withoutNotAvailable().filter(p => !this.isAdditional(p))\r\n return panels.length > 0 && panels.every(p => p.SelectedStatus === type)\r\n }\r\n\r\n isUrineSample = () => [\"UR\", \"QT\"].includes(this.props.sampleTypeCode)\r\n\r\n isPOCTSample = () => [\"QT\", \"QTS\"].includes(this.props.sampleTypeCode)\r\n\r\n isLabSample = () => [\"UR\", \"SLD\"].includes(this.props.sampleTypeCode)\r\n\r\n hasSendToLabPanels = () => this.withoutNotAvailable().some(p => p.SendToLab === 1)\r\n\r\n isCanMarkAsComplete = () => !this.hasSendToLabPanels()\r\n\r\n isCanSendToLab = () => this.isLabSample() || this.hasSendToLabPanels()\r\n\r\n isAdditional = (panel: SelectedGovPanel) => panel.Code.startsWith(\"W\")\r\n\r\n showMarkAsComplete = () => {\r\n return this.isPOCTSample() &&\r\n !this.withoutNotAvailable().some(p => p.SelectedStatus === PanelResult.NOT_SELECTED && !this.isAdditional(p));\r\n }\r\n\r\n showCanSendToLab = () => {\r\n return this.isLabSample() || this.withoutNotAvailable()\r\n .some(p => p.SendToLab === 1);\r\n }\r\n\r\n resultProcessing = (data: SendResult) => {\r\n if (data.Success) {\r\n if (data.ImageData !== \"\") {\r\n printPdf(data.ImageData)\r\n }\r\n this.setState({ collected: true }, this.onHide);\r\n } else {\r\n toast.error(data.Text)\r\n }\r\n }\r\n\r\n onMarkAsComplete = () => {\r\n this.setState({ markingAsComplete: true })\r\n if (!this.validateForm()) {\r\n this.setState({ markingAsComplete: false })\r\n return\r\n }\r\n\r\n const panels = this.state.data.SelectedPanels.filter(p=> !this.isAdditional(p))\r\n const data = {...this.state.data, SelectedPanels: panels}\r\n\r\n this.markAsCompleteSubscription && this.markAsCompleteSubscription.unsubscribe()\r\n this.markAsCompleteSubscription = GovMarkAsComplete(data)\r\n .pipe(finalize(() => this.setState({ markingAsComplete: false })))\r\n .subscribe(\r\n data => this.resultProcessing(data),\r\n error => toast.error(FormatError(error))\r\n )\r\n }\r\n\r\n onSendToLab = () => {\r\n this.setState({ sendingToLab: true })\r\n if (!this.validateForm()) {\r\n this.setState({ sendingToLab: false })\r\n return\r\n }\r\n\r\n this.sendToLabSubscription && this.sendToLabSubscription.unsubscribe()\r\n this.sendToLabSubscription = GovSendToLab(this.state.data)\r\n .pipe(finalize(() => this.setState({ sendingToLab: false })))\r\n .subscribe(\r\n data => this.resultProcessing(data),\r\n error => toast.error(FormatError(error))\r\n )\r\n }\r\n\r\n onHide = () => this.props.onHide(this.state.collected)\r\n\r\n onChangeTemperature = (value: number, isValid: boolean) =>\r\n this.setState(prev => ({ ...prev, isTempRangeValid: isValid, data: { ...prev.data, TempInRange: value } }))\r\n\r\n onChangeSpecimenId = (value: string, isValid: boolean) =>\r\n this.setState(prev => ({ ...prev, isSampleIdValid: isValid, validate: true, data: { ...prev.data, SampleID: value } }))\r\n\r\n onChangeCollectorNotes = (value: string) =>\r\n this.setState(prev => ({ ...prev, data: { ...prev.data, CollectorNotes: value } }))\r\n\r\n onUpdatePanels = (panels: SelectedGovPanel[]) =>\r\n this.setState(prev => ({ ...prev, data: { ...prev.data, SelectedPanels: panels } }))\r\n\r\n onSetLoading = (loading: boolean) =>\r\n this.setState({ loading: loading })\r\n\r\n validateTemp = () => !this.isUrineSample() || this.state.isTempRangeValid\r\n\r\n validateForm = () => {\r\n this.setState(prev => ({ ...prev, validate: !prev.validate }))\r\n return this.state.isSampleIdValid && this.validateTemp()\r\n }\r\n\r\n render() {\r\n const { loading, markingAsComplete, sendingToLab } = this.state\r\n const { SampleID, TempInRange } = this.state.data\r\n\r\n return (\r\n \r\n \r\n PERFORM COLLECTION\r\n \r\n \r\n \r\n \r\n {this.props.testName &&
Test to be performed:
{this.props.testName}
}\r\n {(this.isUrineSample()) && }\r\n \r\n \r\n \r\n
\r\n
\r\n {\r\n {this.showCanSendToLab() && Send To Lab}\r\n {this.showMarkAsComplete() && Mark as Complete}\r\n }\r\n
\r\n )\r\n }\r\n}\r\n","import { FaRandom } from \"react-icons/fa\"\r\n\r\ninterface RandomTestCardProps {\r\n description: string\r\n useIcon?: boolean\r\n}\r\n\r\nfunction RandomTestCard(props: RandomTestCardProps) {\r\n const { description, useIcon } = props\r\n\r\n return (\r\n
\r\n
{description}
\r\n
\r\n {useIcon ? :
R
}\r\n
\r\n
\r\n )\r\n}\r\nRandomTestCard.defaultProps = {\r\n useIcon: false,\r\n}\r\nexport default RandomTestCard\r\n","import React, { Component } from \"react\"\r\n\r\nimport { Button, Col, Container, Form, OverlayTrigger, Popover, Row } from \"react-bootstrap\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { FaAngleDown, FaInfoCircle, FaPencilAlt, FaTimes } from \"react-icons/fa\"\r\nimport { connect } from \"react-redux\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\n\r\nimport CardRow from \"./Cards/CardRow\"\r\nimport PhoneNumbers from \"./Cards/PhoneNumbers\"\r\nimport {\r\n hasCachedCollectionTests,\r\n isProcessingCollection,\r\n ProcessingCollectionLabel,\r\n} from \"../../../api/CachedCollectionTest\"\r\nimport EmployeeCategoriesGetObservable from \"../../../api/LabService/EmployeeCategoriesGet\"\r\nimport EmployeeCategory from \"../../../api/LabService/LabServiceModel/EmployeeCategory\"\r\nimport RegulatoryMode from \"../../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport LabServiceRegulatoryModesGetObservable from \"../../../api/LabService/LabServiceRegulatoryModesGet\"\r\nimport OrderResultRecord from \"../../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport ServiceDetails from \"../../../api/OrderResults/OrderResultModel/ServiceDetails\"\r\nimport TestEventUpdateData from \"../../../api/OrderResults/OrderResultModel/TestEventUpdateData\"\r\nimport PhoneType from \"../../../api/PhoneType\"\r\nimport { AppState } from \"../../../AppState\"\r\nimport { BuildUserAccess } from \"../../../authentication/BuildUserAccess\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport GovPerformCollection, { GovPerformCollectionProps } from \"../../OrderRequests/GovPerformCollection\"\r\nimport RandomTestCard from \"../RandomTestCard\"\r\n\r\nenum TestReleaseStatusID {\r\n PendingCollection = 1,\r\n CollectionInProcess = 2,\r\n PendingLaboratoryTesting = 7\r\n}\r\n\r\ninterface DrugTestProps {\r\n currentRowInfo: OrderResultRecord\r\n currentServiceInfo: ServiceDetails\r\n isOnTrack?: boolean\r\n editModeChanged: (editMode: boolean) => void\r\n updateFields: (testEventData: TestEventUpdateData) => void\r\n onMerge?: () => void\r\n onHide?: (collected?: boolean) => void\r\n}\r\n\r\ninterface DrugTestAuthProps {\r\n canEditPendingOrders?: boolean\r\n canMergeTests?: boolean\r\n}\r\n\r\ninterface DrugTestState {\r\n showPerformCollection: boolean\r\n editing: boolean\r\n ccfPersonnelID: string\r\n ccfName: string\r\n ccfFirstName: string\r\n ccfLastName: string\r\n testEventData: TestEventUpdateData\r\n availableRegulatoryModes: RegulatoryMode[]\r\n isRegulatoryModesLoading: boolean\r\n selectedRegulatoryMode?: RegulatoryMode\r\n availableCategories: EmployeeCategory[]\r\n isCategoriesLoading: boolean\r\n selectedCategory?: EmployeeCategory\r\n}\r\n\r\nclass DrugTestInfo extends Component {\r\n testEventData: TestEventUpdateData = {\r\n PersonnelID: this.props.currentServiceInfo.CCFPersonnelID,\r\n FirstName: this.props.currentServiceInfo.CCFFirstName,\r\n LastName: this.props.currentServiceInfo.CCFLastName,\r\n Phones: {\r\n [PhoneType.Home]: { number: this.props.currentRowInfo.HomePhone, isRequired: false },\r\n [PhoneType.Work]: { number: this.props.currentRowInfo.WorkPhone, isRequired: true },\r\n [PhoneType.Cell]: { number: this.props.currentRowInfo.CellPhone, isRequired: false },\r\n },\r\n RegulatoryModeID: this.props.currentServiceInfo.EventData.RegulatoryModeID ?? 0,\r\n EmployeeCategoryID: this.props.currentServiceInfo.EventData.EmployeeCategoryID ?? 0,\r\n }\r\n\r\n baseNameState = {\r\n ccfName: this.props.currentServiceInfo.CCFName,\r\n ccfFirstName: this.props.currentServiceInfo.CCFFirstName,\r\n ccfLastName: this.props.currentServiceInfo.CCFLastName\r\n }\r\n\r\n state: DrugTestState = {\r\n showPerformCollection: false,\r\n editing: false,\r\n ccfPersonnelID: this.props.currentServiceInfo.CCFPersonnelID,\r\n ...this.baseNameState,\r\n testEventData: this.testEventData,\r\n isRegulatoryModesLoading: false,\r\n isCategoriesLoading: false,\r\n availableRegulatoryModes: [],\r\n availableCategories: [],\r\n }\r\n\r\n subscriptions = new Subscription()\r\n\r\n regulatoryModeTypeahead = React.createRef>()\r\n\r\n categoryTypeahead = React.createRef>()\r\n\r\n componentDidMount() {\r\n const { currentServiceInfo } = this.props\r\n this.subscriptions.add(\r\n LabServiceRegulatoryModesGetObservable().subscribe(\r\n (modes: RegulatoryMode[]) => {\r\n const curMode = modes.find(\r\n (el) => el.RegulatoryModeID === (currentServiceInfo.EventData?.RegulatoryModeID || 0)\r\n )\r\n this.setState(\r\n {\r\n availableRegulatoryModes: modes,\r\n selectedRegulatoryMode: curMode,\r\n isRegulatoryModesLoading: false,\r\n },\r\n () => this.loadCategories(curMode)\r\n )\r\n },\r\n (error) => {\r\n toast.error(FormatError(error))\r\n this.setState({ isRegulatoryModesLoading: false })\r\n }\r\n )\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n showPerformCollection = () => {\r\n this.setState({ showPerformCollection: true })\r\n }\r\n\r\n closePerformCollection = (collected?: boolean) => {\r\n this.setState({ showPerformCollection: false }, () => this.props.onHide && this.props.onHide(collected))\r\n }\r\n\r\n handleToggleEditMode = () => this.setState((prevState) => {\r\n const isEditNow = !prevState.editing\r\n this.props.editModeChanged(isEditNow)\r\n return {\r\n editing: isEditNow,\r\n testEventData: this.testEventData,\r\n ccfPersonnelID: isEditNow ? '' : this.props.currentServiceInfo.CCFPersonnelID,\r\n selectedRegulatoryMode: this.state.availableRegulatoryModes.find((el) => el.RegulatoryModeID === this.testEventData.RegulatoryModeID),\r\n selectedCategory: undefined,\r\n ...this.baseNameState\r\n }\r\n }, () => this.loadCategories(this.state.selectedRegulatoryMode))\r\n\r\n handleDonorIdChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value.trim()\r\n this.setState((prevState) => {\r\n return { testEventData: { ...prevState.testEventData, PersonnelID: value.length > 0 ? value : this.props.currentServiceInfo.CCFPersonnelID }, ccfPersonnelID: value }\r\n },\r\n () => { this.props.updateFields(this.state.testEventData) }\r\n )\r\n }\r\n\r\n handleCcfFirstNameChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value.trim()\r\n this.setState((prevState) => {\r\n return { testEventData: { ...prevState.testEventData, FirstName: value.length > 0 ? value : this.props.currentServiceInfo.CCFFirstName }, ccfFirstName: value }\r\n },\r\n () => { this.props.updateFields(this.state.testEventData) }\r\n )\r\n }\r\n\r\n handleCcfLastNameChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value.trim()\r\n this.setState((prevState) => {\r\n return { testEventData: { ...prevState.testEventData, LastName: value.length > 0 ? value : this.props.currentServiceInfo.CCFLastName }, ccfLastName: value }\r\n },\r\n () => { this.props.updateFields(this.state.testEventData) }\r\n )\r\n }\r\n\r\n handleRegulatoryModeChange = (items: RegulatoryMode[]) => {\r\n this.setState((prevState) => {\r\n return {\r\n testEventData: { ...prevState.testEventData, EmployeeCategoryID: 0, RegulatoryModeID: items.length > 0 ? items[0].RegulatoryModeID : 0 }, \r\n selectedRegulatoryMode: items.length > 0 ? items[0] : undefined,\r\n selectedCategory: undefined,\r\n availableCategories: items.length > 0 ? prevState.availableCategories : [],\r\n }\r\n },\r\n () => {\r\n if (items.length > 0) this.loadCategories(items[0])\r\n this.props.updateFields(this.state.testEventData)\r\n }\r\n )\r\n\r\n }\r\n\r\n handleCategoryChange = (items: EmployeeCategory[]) => {\r\n this.setState((prevState) => {\r\n return {\r\n testEventData: { ...prevState.testEventData, EmployeeCategoryID: items.length > 0 ? items[0].EmployeeCategoryID : this.props.currentServiceInfo.EventData.EmployeeCategoryID ?? 0 }, \r\n selectedCategory: items.length > 0 ? items[0] : undefined,\r\n }\r\n },\r\n () => this.props.updateFields(this.state.testEventData)\r\n )\r\n }\r\n\r\n createGovPerformCollectionProps = (): GovPerformCollectionProps => {\r\n const {currentRowInfo, currentServiceInfo} = this.props\r\n const testDetailID: number = 0\r\n const testDetailIDHash: string = currentRowInfo.TestDetailID || currentServiceInfo.TestDetailID || \"\"\r\n const referenceID: number = currentServiceInfo.FormFoxTestAN || 0\r\n const sampleTypeCode: string = currentServiceInfo.SampleType?.Code || \"\"\r\n const sampleTypeID: number = currentServiceInfo.SampleTypeID\r\n const labCode: string = currentServiceInfo.LabAccountNumber || \"\"\r\n const sampleID: string = currentRowInfo.SampleID || currentServiceInfo.SampleID || \"\"\r\n const tempInRange: number = currentServiceInfo.TemperatureInRange === undefined ? 0 : currentServiceInfo.TemperatureInRange ? 1 : 2\r\n const accountID: number = currentRowInfo.CompanyID as number\r\n const result: GovPerformCollectionProps = {\r\n testDetailID: testDetailID,\r\n testDetailIDHash: testDetailIDHash,\r\n sampleTypeCode: sampleTypeCode,\r\n sampleTypeID: sampleTypeID,\r\n referenceID: referenceID,\r\n labCode: labCode,\r\n sampleID: sampleID,\r\n tempInRange: tempInRange,\r\n personID: currentRowInfo.PersonID,\r\n collectorNotes: currentServiceInfo.TestDetailDocument?.CollectorNotes,\r\n onHide: this.closePerformCollection,\r\n DeviceID: 0,\r\n AccountID: accountID\r\n }\r\n return result\r\n }\r\n\r\n onPhoneNumberChange = (value: string, type: PhoneType) => {\r\n this.setState(prev => ({\r\n ...prev,\r\n testEventData: {\r\n ...prev.testEventData,\r\n Phones: { \r\n ...prev.testEventData.Phones,\r\n [type]: {\r\n ...prev.testEventData.Phones[type], \r\n number: value.replace(/\\D/g, \"\")\r\n }\r\n }\r\n }\r\n }),\r\n () => { this.props.updateFields(this.state.testEventData) })\r\n }\r\n\r\n loadCategories = (regulatoryMode?: RegulatoryMode) => {\r\n if (!regulatoryMode) return\r\n this.setState({ isCategoriesLoading: true })\r\n const { currentServiceInfo } = this.props\r\n this.subscriptions.add(\r\n EmployeeCategoriesGetObservable(regulatoryMode.RegulatoryModeID).subscribe(\r\n (categories: EmployeeCategory[]) => {\r\n const curCat = categories.find(\r\n (el) => el.EmployeeCategoryID === (currentServiceInfo.EventData?.EmployeeCategoryID || 0)\r\n )\r\n this.setState({\r\n availableCategories: categories,\r\n selectedCategory: curCat,\r\n isCategoriesLoading: false,\r\n })\r\n },\r\n (error) => {\r\n toast.error(FormatError(error))\r\n this.setState({ isCategoriesLoading: false })\r\n }\r\n )\r\n )\r\n }\r\n\r\n render() {\r\n const { currentRowInfo, currentServiceInfo, isOnTrack, canEditPendingOrders, canMergeTests } = this.props\r\n const {\r\n editing,\r\n isRegulatoryModesLoading,\r\n availableRegulatoryModes,\r\n selectedRegulatoryMode,\r\n isCategoriesLoading,\r\n availableCategories,\r\n selectedCategory,\r\n testEventData: { Phones },\r\n } = this.state\r\n const panelInfo = currentServiceInfo.Panel\r\n const EventData = currentServiceInfo.EventData\r\n const isPending = currentRowInfo.TestReleaseStatusID === TestReleaseStatusID.PendingCollection\r\n const isProcessing = currentRowInfo.TestReleaseStatusID === TestReleaseStatusID.CollectionInProcess ||\r\n currentRowInfo.TestReleaseStatusID === TestReleaseStatusID.PendingLaboratoryTesting\r\n const isProcessingTest = !hasCachedCollectionTests() || isProcessingCollection(currentRowInfo.TestDetailID)\r\n const isDrug = currentServiceInfo.TestTypeDescription === \"Drug\"\r\n const isEditable = !currentRowInfo.DateCollected\r\n const performCollectionProps = this.createGovPerformCollectionProps()\r\n\r\n const regEl = (\r\n \r\n props.selected.length > 0 || option?.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1\r\n }\r\n onChange={this.handleRegulatoryModeChange}\r\n disabled={isRegulatoryModesLoading || availableRegulatoryModes.length === 0}\r\n options={availableRegulatoryModes}\r\n selected={selectedRegulatoryMode ? [selectedRegulatoryMode] : []}\r\n emptyLabel={isRegulatoryModesLoading ? \"LOADING...\" : \"No Regulatory Modes Found\"}\r\n placeholder=\"Select\"\r\n >\r\n {\r\n this.regulatoryModeTypeahead.current?.toggleMenu()\r\n }}\r\n >\r\n \r\n \r\n \r\n )\r\n\r\n const validCategory =\r\n selectedRegulatoryMode === undefined ||\r\n (!!selectedRegulatoryMode && !isCategoriesLoading && (!!selectedCategory || availableCategories.length === 0))\r\n\r\n const catEl = (\r\n \r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1\r\n }\r\n onChange={this.handleCategoryChange}\r\n disabled={isCategoriesLoading || (!isCategoriesLoading && availableCategories.length === 0)}\r\n isInvalid={!validCategory}\r\n options={availableCategories}\r\n selected={selectedCategory ? [selectedCategory] : []}\r\n emptyLabel={isCategoriesLoading ? \"LOADING...\" : \"No Categories Found\"}\r\n placeholder=\"Select\"\r\n >\r\n {\r\n this.categoryTypeahead.current?.toggleMenu()\r\n }}\r\n >\r\n \r\n \r\n \r\n )\r\n\r\n return (\r\n \r\n {this.state.showPerformCollection &&\r\n \r\n }\r\n\r\n \r\n \r\n
\r\n {!isOnTrack && {currentServiceInfo.TestTypeDescription}} TEST DETAIL {currentServiceInfo.CCFName} {currentRowInfo ? currentRowInfo[\"DonorID\"] : \"\"}\r\n
\r\n \r\n {!isOnTrack && isEditable && canEditPendingOrders && \r\n \r\n }\r\n \r\n {isOnTrack && isProcessing && currentRowInfo.FormFoxTestAN && isProcessingTest &&

{ProcessingCollectionLabel}

}\r\n {isOnTrack && isPending && }\r\n \r\n
\r\n \r\n \r\n \r\n {!this.state.editing && }\r\n {this.state.editing && \r\n \r\n PERSONNEL ID\r\n \r\n Enter new value to update Primary ID\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!this.state.editing && }\r\n {this.state.editing && \r\n NAME\r\n \r\n \r\n \r\n }\r\n {this.state.editing && \r\n  \r\n \r\n \r\n \r\n }\r\n {!isOnTrack && }\r\n {!isOnTrack && !editing && }\r\n {!isOnTrack && !editing && }\r\n {!isOnTrack && editing && }\r\n {!isOnTrack && editing && }\r\n \r\n {!isOnTrack && }\r\n {!isOnTrack && this.props.currentServiceInfo.LabAccountNumber && isDrug && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n {!!canMergeTests && \r\n \r\n }\r\n \r\n \r\n \r\n {currentServiceInfo.IsRandom && } \r\n {!currentServiceInfo.IsRandom && <>{currentServiceInfo.TestReasonDescription} }\r\n \r\n {isOnTrack && }\r\n {!isOnTrack && <>\r\n \r\n TEST TYPE\r\n {currentServiceInfo.TestTypeDescription}\r\n \r\n Specimen / Reference ID\r\n {currentServiceInfo.SampleID}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\nfunction mapStateToProps(state: AppState): DrugTestAuthProps {\r\n const userAccess = BuildUserAccess(state)\r\n return {\r\n canEditPendingOrders: userAccess.canEditPendingOrders,\r\n canMergeTests: userAccess.canMergeTests\r\n }\r\n}\r\nconst ConnectedDrugTestInfo = connect(mapStateToProps, null)(DrugTestInfo)\r\nexport default ConnectedDrugTestInfo\r\n","import React, { Component } from \"react\"\r\nimport { Modal } from \"react-bootstrap\"\r\nimport DrugTestInfo from \"./EventDetails/DrugTestInfo\"\r\nimport TestSteps from \"./EventDetails/TestSteps\"\r\nimport OrderResultRecord from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { toast } from \"react-toastify\"\r\nimport { CurrentServiceDetails, UpdateServiceData } from \"../../api/OrderResults/CurrentServiceDetails\"\r\nimport ServiceDetails from \"../../api/OrderResults/OrderResultModel/ServiceDetails\"\r\nimport { ImplementationTypeGovt, StorageKey } from \"../../config/Constants\"\r\nimport TestEventUpdateData from \"../../api/OrderResults/OrderResultModel/TestEventUpdateData\"\r\nimport PhoneType from \"../../api/PhoneType\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\nimport ActionButton from \"../ActionButton\"\r\n\r\ninterface EventDetailsModalProps {\r\n details: OrderResultRecord\r\n onHide: (updated: boolean) => void\r\n onRefreshGrid?: () => void\r\n onMerge?: () => void\r\n}\r\n\r\ninterface EventDetailsModalState {\r\n data?: ServiceDetails\r\n loading: boolean\r\n saving: boolean\r\n editMode: boolean\r\n testEventData?: TestEventUpdateData\r\n oldRegulatoryModeID?: number,\r\n oldEmployeeCategoryID?: number,\r\n updated: boolean,\r\n showConfirmSave: boolean\r\n}\r\n\r\nexport default class EventDetailsModal extends Component {\r\n subscription?: Subscription\r\n updateSubscription?: Subscription\r\n state: EventDetailsModalState = { data: undefined, loading: false, saving: false, editMode: false, testEventData: undefined, updated: false, showConfirmSave: false }\r\n isOnTrack: boolean = sessionStorage.getItem(StorageKey.ImplementationType) === ImplementationTypeGovt\r\n\r\n componentDidMount() {\r\n this.setState({ loading: true })\r\n const details = this.props.details\r\n this.subscription = CurrentServiceDetails({ TestDetailClinicalID: details.TestDetailClinicalID, TestDetailID: details.TestDetailID }).subscribe(\r\n (data: ServiceDetails) => this.setState({ data: data, loading: false }),\r\n (error: string) => {\r\n this.setState({ loading: false })\r\n toast.error(error)\r\n },\r\n () => this.setState({ loading: false })\r\n )\r\n }\r\n\r\n handleAPIError = (error: Error | APIError) => {\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n handleEditModeChanged = (editMode: boolean) => {\r\n const { details: {HomePhone, WorkPhone, CellPhone} } = this.props\r\n const { CCFPersonnelID, CCFFirstName, CCFLastName } = this.state.data || {}\r\n\r\n const regulatoryModeID = this.state.data?.EventData?.RegulatoryModeID ?? 0\r\n const employeeCategoryID = this.state.data?.EventData?.EmployeeCategoryID ?? 0\r\n\r\n this.setState({\r\n editMode: editMode,\r\n testEventData: {\r\n PersonnelID: CCFPersonnelID || \"\",\r\n FirstName: CCFFirstName || \"\",\r\n LastName: CCFLastName || \"\",\r\n Phones: {\r\n [PhoneType.Home]: { number: HomePhone, isRequired: false },\r\n [PhoneType.Work]: { number: WorkPhone, isRequired: true },\r\n [PhoneType.Cell]: { number: CellPhone, isRequired: false },\r\n },\r\n RegulatoryModeID: regulatoryModeID,\r\n EmployeeCategoryID: employeeCategoryID,\r\n },\r\n oldRegulatoryModeID: regulatoryModeID,\r\n oldEmployeeCategoryID: employeeCategoryID\r\n })\r\n }\r\n\r\n handleUpdateFields = (testEventData: TestEventUpdateData) => {\r\n this.setState({ testEventData: testEventData })\r\n }\r\n\r\n saveChanges = () => {\r\n this.setState({ saving: true })\r\n this.updateSubscription && this.updateSubscription.unsubscribe()\r\n this.updateSubscription = UpdateServiceData(\r\n { ...this.state.testEventData as TestEventUpdateData,\r\n TestEventID: this.props.details.TestEventID,\r\n IDType: this.props.details.IDType,\r\n FormFoxTestAN: this.props.details.FormFoxTestAN\r\n }).subscribe(\r\n (data) => {\r\n toast.success(data)\r\n this.setState({ updated: true, saving: false }, () => this.props.onHide(this.state.updated))\r\n },\r\n (error) => {\r\n this.setState({ saving: false })\r\n this.handleAPIError(error)\r\n this.props.onHide(this.state.updated)\r\n })\r\n }\r\n\r\n handleSaveChanges = () => {\r\n const { oldEmployeeCategoryID, oldRegulatoryModeID, testEventData } = this.state\r\n\r\n if(oldEmployeeCategoryID !== testEventData?.EmployeeCategoryID || oldRegulatoryModeID !== testEventData?.RegulatoryModeID) {\r\n this.setState({showConfirmSave: true})\r\n } else {\r\n this.saveChanges()\r\n }\r\n }\r\n\r\n onHide = (collected?: boolean) => {\r\n if (collected) {\r\n this.props.onHide(this.state.updated)\r\n this.props.onRefreshGrid?.()\r\n }\r\n }\r\n\r\n handleConfirmSave = () => {\r\n this.setState({showConfirmSave:false});\r\n this.saveChanges();\r\n }\r\n\r\n handleConfirmClose = () => {\r\n this.setState({showConfirmSave:false});\r\n }\r\n\r\n isPhonesValid = () => {\r\n const { Phones } = this.state.testEventData || {}\r\n \r\n return (!Phones ||\r\n Object.values(Phones).every(phone =>\r\n !phone.isRequired ||\r\n phone.number.replace(/\\D/g, \"\").length === 10)\r\n )\r\n }\r\n\r\n isValid = () => {\r\n return (\r\n this.state.testEventData && \r\n this.state.testEventData.FirstName.length > 0 &&\r\n this.state.testEventData.LastName.length > 0 && \r\n this.state.testEventData?.PersonnelID.length > 0 && \r\n this.isPhonesValid()\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n this.updateSubscription && this.updateSubscription.unsubscribe()\r\n }\r\n\r\n render() {\r\n const currentRowInfo = this.props.details\r\n const currentServiceInfo = this.state.data\r\n const { saving} = this.state\r\n return currentRowInfo && currentServiceInfo ? (<>\r\n this.props.onHide(this.state.updated)} size=\"xl\" dialogClassName=\"dark\">\r\n \r\n VIEW/EDIT EVENT DETAILS\r\n \r\n \r\n \r\n \r\n \r\n {this.state.editMode && \r\n Save\r\n }\r\n \r\n \r\n \r\n ) : null\r\n }\r\n}\r\n","import { Component } from \"react\"\r\n\r\nimport { Button, Container, Spinner, Table } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { BehaviorSubject, concat, of, Subscription } from \"rxjs\"\r\nimport { catchError, distinctUntilChanged, map, switchMap } from \"rxjs/operators\"\r\n\r\nimport { GetCurrentServiceHistory, ServiceHistoryGridResponse } from \"../../../api/OrderResults/CurrentServiceHistory\"\r\nimport OrderResultRecord from \"../../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport TablePagination from \"../../TablePagination\"\r\nimport EventDetailsModal from \"../EventDetailsModal\"\r\n\r\ninterface CurrentServiceHistoryProps {\r\n PersonID: number\r\n PoolID?: number\r\n PoolName?: string\r\n isOntrack?: boolean\r\n}\r\n\r\ninterface CurrentServiceHistoryState {\r\n loading: boolean\r\n data?: ServiceHistoryGridResponse\r\n detailsModal: boolean\r\n details?: OrderResultRecord\r\n}\r\n\r\nconst PageSize = 10\r\n\r\ninterface GridParams {\r\n pageNumber: number\r\n}\r\n\r\nexport default class CurrentServiceHistory extends Component {\r\n state: CurrentServiceHistoryState = {\r\n loading: false,\r\n detailsModal: false,\r\n }\r\n\r\n page$ = new BehaviorSubject({\r\n pageNumber: 1,\r\n })\r\n\r\n pageSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n const { PersonID, PoolID } = this.props\r\n\r\n this.setState({ loading: true })\r\n\r\n this.pageSubscription = this.page$\r\n .pipe(\r\n distinctUntilChanged(),\r\n switchMap((params: GridParams) =>\r\n concat(\r\n of({ loading: true }),\r\n GetCurrentServiceHistory({ PersonID, PoolID, PageNumber: params.pageNumber, PageSize }).pipe(\r\n map((result: ServiceHistoryGridResponse) => ({ data: result, loading: false })),\r\n catchError((error) => of({ loading: false, errorMessage: FormatError(error) }))\r\n )\r\n )\r\n )\r\n )\r\n .subscribe(\r\n (newState: { loading: boolean; data?: ServiceHistoryGridResponse; errorMessage?: string }) => {\r\n if (newState.data) {\r\n this.setState({ loading: newState.loading, data: newState.data })\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n if (newState.errorMessage) {\r\n toast.error(newState.errorMessage)\r\n }\r\n },\r\n (error) => {\r\n this.setState({ loading: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription?.unsubscribe()\r\n }\r\n\r\n handlePageChange = (pageNumber: number) => this.page$.next({ ...this.page$.value, pageNumber })\r\n\r\n showDetailsModal = (details: OrderResultRecord) => this.setState({ detailsModal: true, details })\r\n\r\n render() {\r\n const { loading, data, detailsModal, details } = this.state\r\n const { PoolID, PoolName, isOntrack } = this.props\r\n\r\n return (\r\n
\r\n {loading && }\r\n {detailsModal && details && (\r\n this.setState({ detailsModal: false })} />\r\n )}\r\n {!loading && data && (\r\n \r\n {PoolID && PoolID > 0 &&
Pool: {PoolName}
}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isOntrack && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n {data.Records.length > 0 &&\r\n data.Records.map((row: OrderResultRecord) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isOntrack && }\r\n \r\n \r\n \r\n \r\n ))}\r\n {data.Records.length === 0 && (\r\n \r\n \r\n \r\n )}\r\n {data.Records.length > 0 && (\r\n \r\n \r\n \r\n )}\r\n \r\n
SERVICESTATUSREASONRESULTCOMPANYREGULATEDREFERENCE IDEVENT DATEREPORT DATE
{row.Service}{row.Status}{row.Reason}{row.Result}{row.CompanyName}{row.Regulated}\r\n \r\n {FormatDate(row.EventDate)}{FormatDate(row.ReportDate)}
No Records Found
\r\n Total records: {data.Total}\r\n \r\n
\r\n
\r\n )}\r\n
\r\n )\r\n }\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport EmployeeToMerge from \"./OrderResultModel/EmployeeToMerge\"\r\n\r\n\r\nexport default function SearchEmployeesToMerge(personId: number, implementationId: number, accountId: number, searchBy: string, searchFor: string) {\r\n const requestBody: string = JSON.stringify({\r\n PersonID: personId,\r\n ImplementationID: implementationId,\r\n AccountID: accountId,\r\n SearchBy: searchBy,\r\n SearchFor: searchFor\r\n })\r\n return ObservableFromFetch(\"WorkforceRandomTest/SearchEmployeesToMerge\", requestBody)\r\n //const result: EmployeeToMerge[] = []\r\n //return result\r\n}\r\n\r\nexport function MergeEmployees(originalPersonId: number, mergePersonId: number, implementationId: number, accountId: number) {\r\n const requestBody: string = JSON.stringify({\r\n OriginalPersonID: originalPersonId,\r\n MergePersonID: mergePersonId,\r\n ImplementationID: implementationId,\r\n AccountID: accountId\r\n })\r\n return ObservableFromFetch(\"WorkforceRandomTest/MergeEmployees\", requestBody)\r\n}\r\n","import React, { PureComponent } from \"react\"\r\nimport { Container, Row, Col, Spinner, Modal, Button, Form } from \"react-bootstrap\"\r\nimport { Subscription } from \"rxjs\"\r\nimport GeneralInformation, { PersonDemographicRecord, PersonDemographicObject, RegMode } from \"../../../api/OrderResults/OrderResultModel/GeneralInformation\"\r\nimport { GeneralInformationGet, GetPersonDemographicsDetail } from \"../../../api/OrderResults/GeneralInformationGet\"\r\nimport { toast } from \"react-toastify\"\r\nimport { AppState } from \"../../../AppState\"\r\nimport FormatSSN from \"../../../formatters/FormatSSN\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\nimport 'react-datepicker/dist/react-datepicker.css'\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport { MergeEmployees } from \"../../../api/OrderResults/SearchEmployesToMerge\"\r\nimport RegulatoryMode from \"../../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport LabServiceRegulatoryModesGetObservable from \"../../../api/LabService/LabServiceRegulatoryModesGet\"\r\n\r\ntype CreateRegModeString = {\r\n EmpCat: string\r\n EmployeeCategoryID: number\r\n PersonRegModeEmpCatID: number\r\n Primary: boolean\r\n RegMode: string\r\n RegulatoryModeID: number\r\n}\r\n\r\nfunction regulatoryModeValue(results: CreateRegModeString[]): string {\r\n if (results.length > 0) {\r\n let primary: CreateRegModeString | undefined = results.find(item => item.Primary)\r\n let result: string = primary ? primary.RegMode : \"\"\r\n let otherRegModes: string = results.filter(item => !item.Primary).map(item => item.RegMode).join(\", \")\r\n if (otherRegModes !== \"\") {\r\n result = `${result} (${otherRegModes})`\r\n }\r\n return result\r\n } else {\r\n return \"N/P\"\r\n }\r\n}\r\n\r\nconst HeaderRow = (props: { title: string }) =>\r\n \r\n
{props.title}
\r\n
\r\n\r\n\r\n\r\nconst InfoRow = (props: { title: string, value: string | null, className?: string }) => \r\n {props.title}\r\n {props.value}\r\n\r\n\r\n\r\n\r\ninterface EmployeeToMergeInfoProps {\r\n OriginalPersonID: number\r\n MergePersonID: number\r\n isGov?: boolean\r\n onHide: () => void\r\n}\r\n\r\n\r\n\r\ninterface EmployeeToMergeInfoState {\r\n data?: GeneralInformation,\r\n saving: boolean\r\n loading: boolean\r\n isRegulatoryModesLoading: boolean\r\n isRegulatoryModesLoaded: boolean\r\n regulatoryModes: RegulatoryMode[]\r\n\r\n\r\n}\r\nexport default class EmployeeToMergeInfo extends PureComponent {\r\n state: EmployeeToMergeInfoState = {\r\n data: undefined,\r\n saving: false,\r\n loading: false,\r\n isRegulatoryModesLoading: false,\r\n isRegulatoryModesLoaded: false,\r\n regulatoryModes: []\r\n }\r\n loadSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n regulatoryModesSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.loadGeneralInfo(this.props.MergePersonID)\r\n this.loadRegulatoryModes()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription?.unsubscribe()\r\n this.regulatoryModesSubscription && this.regulatoryModesSubscription.unsubscribe()\r\n }\r\n\r\n\r\n\r\n loadGeneralInfo(PersonID: number) {\r\n this.setState({ loading: true })\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.loadSubscription = GeneralInformationGet(PersonID).subscribe(\r\n (data: GeneralInformation) => this.setState({ data: data }),\r\n (error) => {\r\n this.setState({ loading: false })\r\n toast.error(FormatError(error))\r\n },\r\n () => this.setState({ loading: false })\r\n )\r\n }\r\n loadRegulatoryModes = () => {\r\n\r\n if (this.state.isRegulatoryModesLoaded) {\r\n return\r\n }\r\n this.setState({ isRegulatoryModesLoading: true, regulatoryModes: [] })\r\n this.regulatoryModesSubscription && this.regulatoryModesSubscription.unsubscribe()\r\n this.regulatoryModesSubscription = LabServiceRegulatoryModesGetObservable(true).subscribe(\r\n (data: RegulatoryMode[]) => this.setState({\r\n regulatoryModes: data,\r\n isRegulatoryModesLoading: false,\r\n isRegulatoryModesLoaded: true\r\n }),\r\n () => this.setState({ isRegulatoryModesLoading: false })\r\n )\r\n }\r\n handleSubmit = () => {\r\n const originalPersonId = this.props.OriginalPersonID\r\n const mergePersonID = this.props.MergePersonID\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription?.unsubscribe()\r\n this.saveSubscription = MergeEmployees(originalPersonId, mergePersonID, 0, 0).subscribe(\r\n ((result) => {\r\n this.setState({ saving: false })\r\n toast.success(\"Merged personnel data successfully.\")\r\n this.props.onHide()\r\n }),\r\n (error) => {\r\n this.setState({ saving: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n return false\r\n }\r\n\r\n createDonorIdTypeRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n\r\n }\r\n createDonorIdRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const idType = data.PrimaryIDType\r\n let val = data.PrimaryIDValue\r\n if (data.CompanyPrimaryID === \"SSN\") {\r\n if (data.SSN) {\r\n val = data.SSN\r\n }\r\n val = FormatSSN(val)\r\n }\r\n return \r\n\r\n }\r\n\r\n createFirstNameRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n\r\n createLastNameRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n\r\n }\r\n\r\n\r\n createCompanyRow = (name: string) => {\r\n return \r\n }\r\n\r\n createLocationRow = (name: string) => {\r\n return \r\n }\r\n\r\n createEmployerIdRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n\r\n }\r\n\r\n createAlternateIdRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n\r\n\r\n createSSNRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n\r\n createDriverIdRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n createGenderRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n createDateOfBirthRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n createHireDateRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n createTerminationDateRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n createInactiveRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n createRegulatoryModeRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n createInfoRows = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const donorIdTypeRow = this.createDonorIdTypeRow()\r\n const donorIdRow = this.createDonorIdRow()\r\n const firstNameRow = this.createFirstNameRow()\r\n const lastNameRow = this.createLastNameRow()\r\n const companyRow = this.createCompanyRow(data.Company)\r\n const locationRow = this.createLocationRow(data.Location)\r\n const employerIdRow = this.createEmployerIdRow();\r\n const driverIdRow = this.createDriverIdRow()\r\n const ssnRow = this.createSSNRow()\r\n const alternateIdRow = this.createAlternateIdRow()\r\n const genderRow = this.createGenderRow()\r\n const dateOfBirthRow = this.createDateOfBirthRow()\r\n const hireDateRow = this.createHireDateRow()\r\n const terminationDateRow = this.createTerminationDateRow()\r\n const activeRow = this.createInactiveRow()\r\n const regulatoryModeRow = this.createRegulatoryModeRow()\r\n\r\n\r\n const result = {\r\n donorIdTypeRow: donorIdTypeRow,\r\n donorIdRow: donorIdRow,\r\n firstNameRow: firstNameRow,\r\n lastNameRow: lastNameRow,\r\n companyRow: companyRow,\r\n locationRow: locationRow,\r\n employerIdRow: employerIdRow,\r\n driverIdRow: driverIdRow,\r\n ssnRow: ssnRow,\r\n alternateIdRow: alternateIdRow,\r\n genderRow: genderRow,\r\n dateOfBirthRow: dateOfBirthRow,\r\n hireDateRow: hireDateRow,\r\n terminationDateRow: terminationDateRow,\r\n activeRow: activeRow,\r\n regulatoryModeRow: regulatoryModeRow,\r\n\r\n }\r\n return result\r\n }\r\n\r\n\r\n\r\n render() {\r\n const { loading, saving } = this.state\r\n if (!this.state.data) {\r\n return this.state.loading ? : <>\r\n }\r\n\r\n const infoRows = this.createInfoRows();\r\n\r\n\r\n return (\r\n \r\n \r\n MERGE DONOR\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {infoRows.companyRow}\r\n {infoRows.donorIdTypeRow}\r\n {infoRows.firstNameRow}\r\n {infoRows.employerIdRow}\r\n {infoRows.ssnRow}\r\n {infoRows.genderRow}\r\n {infoRows.hireDateRow}\r\n {infoRows.activeRow}\r\n \r\n \r\n {infoRows.locationRow}\r\n {infoRows.donorIdRow}\r\n {infoRows.lastNameRow}\r\n {infoRows.driverIdRow}\r\n {infoRows.alternateIdRow}\r\n {infoRows.dateOfBirthRow}\r\n {infoRows.terminationDateRow}\r\n {infoRows.regulatoryModeRow}\r\n \r\n \r\n \r\n \r\n {\r\n {Merge}\r\n {Cancel}\r\n }\r\n \r\n )\r\n }\r\n\r\n}\r\n\r\n","import React from \"react\"\r\nimport { Container, Row, Col, Table, Spinner, Button, Dropdown } from \"react-bootstrap\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { toast } from \"react-toastify\"\r\nimport { AppState, CurrentUserPermissions } from \"../../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport { BuildUserAccess } from \"../../../authentication/BuildUserAccess\"\r\nimport UserAccessSettings from \"../../../authentication/UserAccessSettings\"\r\nimport EmployeeToMerge from \"../../../api/OrderResults/OrderResultModel/EmployeeToMerge\"\r\nimport SearchField from '../../../api/SearchField'\r\nimport SearchBar from '../../SearchBar'\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport SearchEmployeesToMerge from \"../../../api/OrderResults/SearchEmployesToMerge\"\r\nimport EmployeeToMergeInfo from \"./EmployeeToMergeInfo\"\r\n\r\nconst DefaultSearchFields: SearchField[] = [\r\n //{ ID: \"All Personnel IDs\", Name: \"All Personnel IDs\" },\r\n { ID: \"First Name\", Name: \"First Name\" },\r\n { ID: \"Last Name\", Name: \"Last Name\" },\r\n { ID: \"Donor ID\", Name: \"Donor ID\" }\r\n]\r\ninterface EmployesToMergeProps {\r\n PersonID: number\r\n CompanyID: number\r\n isGov: boolean\r\n //onPoolUpdate: () => void\r\n}\r\n\r\n\r\ninterface EmployesToMergeGridState {\r\n loading: boolean\r\n data: EmployeeToMerge[]\r\n mergePersonID: number\r\n showEmployeeToMergeInfo: boolean\r\n}\r\n\r\n\r\nexport class EmployesToMergeGrid extends React.PureComponent {\r\n state: EmployesToMergeGridState = {\r\n loading: false,\r\n data: [],\r\n mergePersonID: 0,\r\n\r\n showEmployeeToMergeInfo: false\r\n }\r\n pageSubscription?: Subscription\r\n\r\n\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n }\r\n\r\n\r\n onSearch = (field: string, text: string) => {\r\n this.setState({ loading: true })\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n this.pageSubscription = SearchEmployeesToMerge(this.props.PersonID, 0, this.props.CompanyID, field, text).subscribe(\r\n (data: EmployeeToMerge[]) => this.setState({ data: data }),\r\n (error) => {\r\n this.setState({ loading: false })\r\n toast.error(FormatError(error))\r\n },\r\n () => this.setState({ loading: false })\r\n )\r\n }\r\n\r\n showEmployeeToMerge = (details: EmployeeToMerge) => {\r\n this.setState({ showEmployeeToMergeInfo: true, mergePersonID: details.PersonID })\r\n }\r\n hideEmployeeToMerge = () => {\r\n this.setState({ showEmployeeToMergeInfo: false, mergePersonID: 0 })\r\n }\r\n\r\n renderRows = () => {\r\n if (this.state.data && this.state.data.length) {\r\n return this.state.data.map((row: EmployeeToMerge, i: number) =>\r\n \r\n \r\n {row.PrimaryIDType}\r\n {row.LastName}\r\n {row.FirstName}\r\n )\r\n } else {\r\n return No Records Found\r\n }\r\n }\r\n\r\n render() {\r\n const { showEmployeeToMergeInfo, mergePersonID } = this.state\r\n return (\r\n <>\r\n {\r\n showEmployeeToMergeInfo && mergePersonID > 0 &&\r\n \r\n\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.state.loading ?\r\n \r\n \r\n : this.renderRows()\r\n }\r\n \r\n
IDID TypeFirst NameLast Name
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): { userPermissions: UserAccessSettings } {\r\n const userAccess = BuildUserAccess(state);\r\n return {\r\n userPermissions: userAccess\r\n }\r\n}\r\nconst ConnectedEmployesToMergeGrid = connect(mapStateToProps, null)(EmployesToMergeGrid)\r\nexport default ConnectedEmployesToMergeGrid\r\n","import React, { Component } from \"react\"\r\nimport { Container, Row, Col, Spinner, Button, Form } from \"react-bootstrap\"\r\nimport { Subscription } from \"rxjs\"\r\nimport GeneralInformation, { PersonDemographicRecord, PersonDemographicObject, RegMode } from \"../../../api/OrderResults/OrderResultModel/GeneralInformation\"\r\nimport { GeneralInformationGet, GetPersonDemographicsDetail } from \"../../../api/OrderResults/GeneralInformationGet\"\r\nimport { toast } from \"react-toastify\"\r\nimport { AppState } from \"../../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport FormatSSN from \"../../../formatters/FormatSSN\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\nimport { BuildUserAccess } from \"../../../authentication/BuildUserAccess\"\r\nimport UserAccessSettings from \"../../../authentication/UserAccessSettings\";\r\nimport 'react-datepicker/dist/react-datepicker.css'\r\nimport { GeneralInformationSave, UpdatePersonDemographic, SaveRegulatoryMode } from \"../../../api/OrderResults/GeneralInformationGet\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport { isCompanyAdmin, isPortalAdmin } from \"../../../authentication/isAdminRole\"\r\nimport { GetSelectedAssignedClinic } from \"../../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport EmployesToMergeGrid from \"./EmployesToMergeGrid\"\r\nimport RegulatoryMode from \"../../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport LabServiceRegulatoryModesGetObservable from \"../../../api/LabService/LabServiceRegulatoryModesGet\"\r\n\r\ntype CreateRegModeString = {\r\n EmpCat: string\r\n EmployeeCategoryID: number\r\n PersonRegModeEmpCatID: number\r\n Primary: boolean\r\n RegMode: string\r\n RegulatoryModeID: number\r\n}\r\nfunction regulatoryModeValue(results: CreateRegModeString[]): string {\r\n if (results.length > 0) {\r\n let primary: CreateRegModeString | undefined = results.find(item => item.Primary)\r\n let result: string = primary ? primary.RegMode : \"\"\r\n let otherRegModes: string = results.filter(item => !item.Primary).map(item => item.RegMode).join(\", \")\r\n if (otherRegModes !== \"\") {\r\n result = `${result} (${otherRegModes})`\r\n }\r\n return result\r\n } else {\r\n return \"N/P\"\r\n }\r\n}\r\nconst HeaderRow = (props: { title: string }) =>\r\n \r\n
{props.title}
\r\n
\r\n\r\n\r\n\r\nconst InfoRow = (props: { title: string, value: string | null, className?: string }) => \r\n {props.title}\r\n {props.value}\r\n\r\n\r\n\r\n\r\ninterface MergeEmployeeProps {\r\n PersonID: number\r\n isGov?: boolean\r\n}\r\n\r\ninterface MergeEmployeeAuthProps {\r\n userPermissions?: UserAccessSettings\r\n isPortalAdmin: boolean\r\n isCompanyAdmin: boolean\r\n companyID: number\r\n}\r\n\r\ninterface MergeEmployeeState {\r\n data?: GeneralInformation,\r\n isGeneralInfoLoading: boolean,\r\n isRegulatoryModesLoading: boolean\r\n isRegulatoryModesLoaded: boolean\r\n regulatoryModes: RegulatoryMode[]\r\n\r\n}\r\nexport class MergeEmployee extends Component {\r\n state: MergeEmployeeState = {\r\n data: undefined,\r\n isGeneralInfoLoading: false,\r\n isRegulatoryModesLoading: false,\r\n isRegulatoryModesLoaded: false,\r\n regulatoryModes: []\r\n }\r\n generalInfoSubscription?: Subscription\r\n generalInfoSaveSubscription?: Subscription\r\n regulatoryModesSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.loadGeneralInfo(this.props.PersonID)\r\n this.loadRegulatoryModes()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.generalInfoSubscription && this.generalInfoSubscription.unsubscribe()\r\n this.generalInfoSaveSubscription && this.generalInfoSaveSubscription?.unsubscribe()\r\n this.regulatoryModesSubscription && this.regulatoryModesSubscription.unsubscribe()\r\n }\r\n\r\n loadGeneralInfo(PersonID: number) {\r\n this.setState({ isGeneralInfoLoading: true })\r\n this.generalInfoSubscription && this.generalInfoSubscription.unsubscribe()\r\n this.generalInfoSubscription = GeneralInformationGet(PersonID).subscribe(\r\n (data: GeneralInformation) => this.setState({ data: data }),\r\n (error) => {\r\n this.setState({ isGeneralInfoLoading: false })\r\n toast.error(FormatError(error))\r\n },\r\n () => this.setState({ isGeneralInfoLoading: false })\r\n )\r\n }\r\n\r\n loadRegulatoryModes = () => {\r\n\r\n if (this.state.isRegulatoryModesLoaded) {\r\n return\r\n }\r\n this.setState({ isRegulatoryModesLoading: true, regulatoryModes: [] })\r\n this.regulatoryModesSubscription && this.regulatoryModesSubscription.unsubscribe()\r\n this.regulatoryModesSubscription = LabServiceRegulatoryModesGetObservable(true).subscribe(\r\n (data: RegulatoryMode[]) => this.setState({\r\n regulatoryModes: data,\r\n isRegulatoryModesLoading: false,\r\n isRegulatoryModesLoaded: true\r\n }),\r\n () => this.setState({ isRegulatoryModesLoading: false })\r\n )\r\n }\r\n createDonorIdTypeRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n\r\n }\r\n createDonorIdRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n const idType = data.PrimaryIDType\r\n let val = data.PrimaryIDValue\r\n if (data.CompanyPrimaryID === \"SSN\") {\r\n if (data.SSN) {\r\n val = data.SSN\r\n }\r\n val = FormatSSN(val)\r\n }\r\n return \r\n\r\n }\r\n\r\n createFirstNameRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n\r\n createLastNameRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n\r\n }\r\n\r\n\r\n createCompanyRow = (name: string) => {\r\n return \r\n }\r\n\r\n createLocationRow = (name: string) => {\r\n return \r\n }\r\n createEmployerIdRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n\r\n }\r\n\r\n createAlternateIdRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n\r\n\r\n createSSNRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n\r\n createDriverIdRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n createGenderRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n createDateOfBirthRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n createHireDateRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n createTerminationDateRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n createInactiveRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n createRegulatoryModeRow = () => {\r\n const data: GeneralInformation = this.state.data!\r\n return \r\n }\r\n\r\n createInfoRows = () => {\r\n const { isGov } = this.props\r\n const data: GeneralInformation = this.state.data!\r\n const donorIdTypeRow = this.createDonorIdTypeRow()\r\n const donorIdRow = this.createDonorIdRow()\r\n const firstNameRow = this.createFirstNameRow()\r\n const lastNameRow = this.createLastNameRow()\r\n const companyRow = this.createCompanyRow(data.Company)\r\n const locationRow = this.createLocationRow(data.Location)\r\n const employerIdRow = this.createEmployerIdRow();\r\n const driverIdRow = this.createDriverIdRow()\r\n const ssnRow = this.createSSNRow()\r\n const alternateIdRow = this.createAlternateIdRow()\r\n const genderRow = this.createGenderRow()\r\n const dateOfBirthRow = this.createDateOfBirthRow()\r\n const hireDateRow = this.createHireDateRow()\r\n const terminationDateRow = this.createTerminationDateRow()\r\n const activeRow = this.createInactiveRow()\r\n const regulatoryModeRow = this.createRegulatoryModeRow()\r\n\r\n\r\n const result = {\r\n donorIdTypeRow: donorIdTypeRow,\r\n donorIdRow: donorIdRow,\r\n firstNameRow: firstNameRow,\r\n lastNameRow: lastNameRow,\r\n companyRow: companyRow,\r\n locationRow: locationRow,\r\n employerIdRow: employerIdRow,\r\n driverIdRow: driverIdRow,\r\n ssnRow: ssnRow,\r\n alternateIdRow: alternateIdRow,\r\n genderRow: genderRow,\r\n dateOfBirthRow: dateOfBirthRow,\r\n hireDateRow: hireDateRow,\r\n terminationDateRow: terminationDateRow,\r\n activeRow: activeRow,\r\n regulatoryModeRow: regulatoryModeRow,\r\n }\r\n return result\r\n }\r\n\r\n\r\n\r\n render() {\r\n const { isGov } = this.props\r\n if (!this.state.data) {\r\n return this.state.isGeneralInfoLoading ? : <>\r\n }\r\n const companyAdminOfAnotherCompany = this.props.isCompanyAdmin && this.props.companyID !== this.state.data.CompanyID\r\n\r\n const infoRows = this.createInfoRows();\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {infoRows.companyRow}\r\n {infoRows.donorIdTypeRow}\r\n {infoRows.firstNameRow}\r\n {infoRows.employerIdRow}\r\n {infoRows.ssnRow}\r\n {infoRows.genderRow}\r\n {infoRows.hireDateRow}\r\n {infoRows.activeRow}\r\n \r\n \r\n {infoRows.locationRow}\r\n {infoRows.donorIdRow}\r\n {infoRows.lastNameRow}\r\n {infoRows.driverIdRow}\r\n {infoRows.alternateIdRow}\r\n {infoRows.dateOfBirthRow}\r\n {infoRows.terminationDateRow}\r\n {infoRows.regulatoryModeRow}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): MergeEmployeeAuthProps {\r\n const userAccess = BuildUserAccess(state)\r\n const selectedCompany = GetSelectedAssignedClinic(state)\r\n return {\r\n userPermissions: userAccess,\r\n isPortalAdmin: isPortalAdmin(state),\r\n isCompanyAdmin: isCompanyAdmin(state),\r\n companyID: selectedCompany?.AccountID || 0,\r\n }\r\n}\r\nconst ConnectedMergeEmployee = connect(mapStateToProps)(MergeEmployee)\r\nexport default ConnectedMergeEmployee\r\n","import React, { Component } from \"react\"\r\nimport { Col, Container, Modal, Row, Tab, Tabs } from \"react-bootstrap\"\r\nimport GeneralInfo from \"./EmployeeDetails/GeneralInfo\"\r\nimport CurrentService from \"./EmployeeDetails/CurrentService\"\r\nimport OrderResultRecord from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport CurrentServiceHistory from \"./EmployeeDetails/CurrentServiceHistory\"\r\nimport MergeEmployee from \"./EmployeeDetails/MergeEmployee\"\r\n\r\nconst GeneralInfoKey = \"general-info\"\r\nconst ServiceKey = \"service\"\r\nconst TestingHistoryKey = \"testing-history\"\r\nconst MergeEmployeeKey = \"merge-employee\"\r\n\r\n\r\ninterface EmployeeDetailsModalProps {\r\n details?: OrderResultRecord\r\n personID: number\r\n poolID?: number\r\n poolName?: string\r\n name: string\r\n id: string\r\n showService?: boolean\r\n onHide: (updated: boolean) => void\r\n isGov?: boolean\r\n}\r\n\r\ninterface EmployeeDetailsModalState {\r\n currentTab: string\r\n updated: boolean\r\n}\r\n\r\nexport default class EmployeeDetailsModal extends Component {\r\n state: EmployeeDetailsModalState = { currentTab: GeneralInfoKey, updated: false }\r\n\r\n render() {\r\n const { details, showService, personID, poolID, poolName, name, id, isGov } = this.props\r\n const modalHeader = isGov ? \"DONOR DETAILS\" : \"EMPLOYEE DETAILS\"\r\n return (\r\n this.props.onHide(this.state.updated)} size=\"xl\" dialogClassName=\"dark\">\r\n \r\n \r\n

{modalHeader}

\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n

\r\n {name} - {id}\r\n

\r\n {\r\n eventKey && this.setState({ currentTab: eventKey })\r\n }}\r\n >\r\n \r\n {GeneralInfoKey === this.state.currentTab && (\r\n this.setState({ updated: true })}\r\n />\r\n )}\r\n \r\n {showService && details && (\r\n \r\n {ServiceKey === this.state.currentTab && }\r\n \r\n )}\r\n {!isGov && !showService && (\r\n \r\n {TestingHistoryKey === this.state.currentTab && (\r\n \r\n )}\r\n \r\n )}\r\n {!isGov && (personID > 0) &&\r\n \r\n {MergeEmployeeKey === this.state.currentTab && (\r\n \r\n )}\r\n \r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { Modal, Button, Container, Col, Row } from \"react-bootstrap\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css'\r\nimport { Subscription } from \"rxjs\"\r\nimport { AutoFilterLocationWithoutRegionGetObservable } from \"../../api/Location/AutoFilterLocationsGet\"\r\nimport AutoFilterLocation from \"../../api/Location/LocationModel/AutoFilterLocation\"\r\nimport LabServiceRegulatoryModesGetObservable from \"../../api/LabService/LabServiceRegulatoryModesGet\"\r\nimport RegulatoryMode from \"../../api/LabService/LabServiceModel/RegulatoryMode\"\r\n\r\ninterface PoolMembersFiltersModalProps {\r\n show: boolean\r\n selectedLocations: AutoFilterLocation[]\r\n selectedRegulatoryModes: RegulatoryMode[]\r\n onSave: (locations: AutoFilterLocation[], regulatoryModes: RegulatoryMode[], close: boolean) => void\r\n onClose: () => void\r\n}\r\n\r\ninterface PoolMembersFiltersModalState {\r\n availableLocations?: AutoFilterLocation[]\r\n isLocationsLoading: boolean\r\n selectedLocations: AutoFilterLocation[]\r\n availableRegulatoryModes?: RegulatoryMode[]\r\n isRegulatoryModesLoading: boolean\r\n selectedRegulatoryModes: RegulatoryMode[]\r\n}\r\n\r\nexport default class PoolMembersFiltersModal extends React.Component {\r\n state: PoolMembersFiltersModalState = {\r\n isLocationsLoading: false,\r\n selectedLocations: this.props.selectedLocations,\r\n isRegulatoryModesLoading: false,\r\n selectedRegulatoryModes: this.props.selectedRegulatoryModes\r\n }\r\n\r\n subscriptions = new Subscription()\r\n\r\n locationTypeahead = React.createRef>()\r\n regulatoryModeTypeahead = React.createRef>()\r\n\r\n componentDidMount() {\r\n this.setState({ isLocationsLoading: true, isRegulatoryModesLoading: true })\r\n this.subscriptions.add(\r\n AutoFilterLocationWithoutRegionGetObservable().subscribe(\r\n (data: AutoFilterLocation[]) => this.setState({ availableLocations: data, isLocationsLoading: false }),\r\n () => this.setState({ isLocationsLoading: false })\r\n )\r\n )\r\n\r\n this.subscriptions.add(\r\n LabServiceRegulatoryModesGetObservable().subscribe(\r\n (data: RegulatoryMode[]) => this.setState({ availableRegulatoryModes: data, isRegulatoryModesLoading: false }),\r\n () => this.setState({ isRegulatoryModesLoading: false })\r\n )\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: PoolMembersFiltersModalProps, prevState: PoolMembersFiltersModalState) {\r\n if (!(this.isLocationsEqual(this.props.selectedLocations, prevProps.selectedLocations)\r\n && this.isRegulatoryModesEqual(this.props.selectedRegulatoryModes, prevProps.selectedRegulatoryModes))) {\r\n this.setState({\r\n selectedLocations: this.props.selectedLocations,\r\n selectedRegulatoryModes: this.props.selectedRegulatoryModes\r\n })\r\n }\r\n }\r\n\r\n isLocationsEqual = (items1: AutoFilterLocation[], items2: AutoFilterLocation[]) => {\r\n const itemsString = (items: AutoFilterLocation[]) => items.map(item => item.Name).sort().join(\",\")\r\n return itemsString(items1) === itemsString(items2)\r\n }\r\n\r\n isRegulatoryModesEqual = (items1: RegulatoryMode[], items2: RegulatoryMode[]) => {\r\n const itemsString = (items: RegulatoryMode[]) => items.map(item => item.Name).sort().join(\",\")\r\n return itemsString(items1) === itemsString(items2)\r\n }\r\n\r\n handleSave = () => this.props.onSave(this.state.selectedLocations, this.state.selectedRegulatoryModes, true)\r\n\r\n handleClearAll = () => {\r\n this.setState({ selectedLocations: [], selectedRegulatoryModes: [] })\r\n\r\n const { selectedLocations, selectedRegulatoryModes } = this.props\r\n const filterAlreadySet = selectedLocations.length > 0 || selectedRegulatoryModes.length > 0\r\n if (filterAlreadySet) {\r\n this.props.onSave([], [], false)\r\n }\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ selectedLocations: this.props.selectedLocations, selectedRegulatoryModes: this.props.selectedRegulatoryModes })\r\n this.props.onClose()\r\n }\r\n\r\n handleAddLocation = (items: AutoFilterLocation[]) => {\r\n if (items[0] && !this.state.selectedLocations.find(item => item.Name === items[0].Name)) {\r\n this.setState({ selectedLocations: [...this.state.selectedLocations, items[0]] })\r\n }\r\n }\r\n\r\n handleRemoveLocation = (removeItem: AutoFilterLocation) => {\r\n this.setState({ selectedLocations: this.state.selectedLocations.filter(item => item.Name !== removeItem.Name) })\r\n }\r\n\r\n handleAddRegulatoryMode = (items: RegulatoryMode[]) => {\r\n if (items[0] && !this.state.selectedRegulatoryModes.find(item => item.RegulatoryModeID === items[0].RegulatoryModeID)) {\r\n this.setState({ selectedRegulatoryModes: [...this.state.selectedRegulatoryModes, items[0]] })\r\n }\r\n }\r\n\r\n handleRemoveRegulatoryMode = (removeItem: RegulatoryMode) => {\r\n this.setState({ selectedRegulatoryModes: this.state.selectedRegulatoryModes.filter(item => item.RegulatoryModeID !== removeItem.RegulatoryModeID) })\r\n }\r\n\r\n render() {\r\n const { selectedLocations, selectedRegulatoryModes } = this.state\r\n\r\n const hasChanges = !(this.isLocationsEqual(this.props.selectedLocations, selectedLocations)\r\n && this.isRegulatoryModesEqual(this.props.selectedRegulatoryModes, selectedRegulatoryModes))\r\n const canClearAll = hasChanges || selectedLocations.length > 0 || selectedRegulatoryModes.length > 0\r\n\r\n return \r\n \r\n ADVANCED FILTERS\r\n \r\n \r\n \r\n \r\n \r\n
\r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n onChange={this.handleAddLocation}\r\n disabled={this.state.isLocationsLoading}\r\n options={(this.state.availableLocations || []).filter(item => !this.state.selectedLocations.includes(item))}\r\n selected={[]}\r\n emptyLabel=\"No Locations Found\"\r\n placeholder=\"Location\">\r\n {!this.state.isLocationsLoading &&\r\n }\r\n \r\n
\r\n
\r\n {this.state.selectedLocations.map(item =>
\r\n {item.Name}\r\n this.handleRemoveLocation(item)}>×\r\n
)}\r\n
\r\n \r\n \r\n
\r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n onChange={this.handleAddRegulatoryMode}\r\n disabled={this.state.isRegulatoryModesLoading}\r\n options={(this.state.availableRegulatoryModes || []).filter(item => !this.state.selectedRegulatoryModes.includes(item))}\r\n selected={[]}\r\n emptyLabel=\"No Regulatory Modes Found\"\r\n placeholder=\"Regulatory Mode\">\r\n {!this.state.isRegulatoryModesLoading && }\r\n \r\n
\r\n
\r\n {this.state.selectedRegulatoryModes.map(item =>
\r\n {item.Name}\r\n this.handleRemoveRegulatoryMode(item)}>×\r\n
)}\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n {hasChanges && }\r\n {canClearAll && }\r\n {!hasChanges && }\r\n \r\n
\r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { Container, Modal, Row, Col, Button, Form } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport EventExcuseObservable from \"../../api/Randoms/EventExcuse\"\r\nimport SelectionInboxGridRow from \"../../api/Randoms/SelectionInboxModel/SelectionInboxGridRow\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\n\r\ninterface QueryNameModalProps {\r\n show: boolean\r\n onSave: (name: string) => void\r\n onClose: () => void\r\n}\r\n\r\ninterface QueryNameModalState {\r\n comment: string\r\n saving: boolean\r\n}\r\n\r\nexport default class QueryNameModal extends React.PureComponent {\r\n state: QueryNameModalState = { comment: \"\", saving: false }\r\n subscription?: Subscription\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n \r\n handleConfirm = () => {\r\n this.props.onSave(this.state.comment.trim())\r\n }\r\n\r\n render() {\r\n return this.props.onClose()}\r\n size=\"lg\"\r\n disableConfirmButton={this.state.comment.trim().length === 0}\r\n spinConfirmButton={this.state.saving}\r\n disableConfirmOnSpin={true}>\r\n
\r\n \r\n Enter query name\r\n \r\n this.setState({ comment: e.target.value })} />\r\n \r\n \r\n
\r\n
\r\n }\r\n}","import React from \"react\"\r\nimport { Form, Col, Row, Button, Container } from \"react-bootstrap\"\r\nimport { FaAngleDoubleDown, FaAngleDoubleLeft, FaAngleDoubleRight, FaAngleDoubleUp, FaAngleDown, FaAngleUp, FaChevronLeft, FaChevronRight } from \"react-icons/fa\"\r\nimport _lodash from \"lodash\"\r\n\r\ninterface DualListBoxProps {\r\n disabled?: boolean\r\n idKey?: keyof T\r\n labelKey?: keyof T\r\n options: T[]\r\n selected: T[]\r\n availableTitle: string\r\n selectedTitle: string\r\n onChange: (selected: T[]) => void\r\n isConsortium?: boolean\r\n}\r\n\r\ninterface DualListBoxState {\r\n selected: T[]\r\n selectionLeft: string[]\r\n selectionRight: string[]\r\n}\r\n\r\nexport default class DualListBox extends React.PureComponent, DualListBoxState> {\r\n state = { selected: this.mapOptions(this.props.selected), selectionLeft: [], selectionRight: [] }\r\n\r\n mapOption(option: any): any {\r\n return this.props.idKey ? option[this.props.idKey].toString() : option\r\n }\r\n\r\n mapOptions(options: any[]): any[] {\r\n return this.props.idKey ? options.map(option => option[this.props.idKey].toString()) : options\r\n }\r\n\r\n optionLabel(option: any): any {\r\n return this.props.labelKey ? option[this.props.labelKey] + (!!option.DisableMessage ? \" (\"+option.DisableMessage+\")\" : \"\") : option\r\n }\r\n\r\n disabledOption(option: any): boolean {\r\n return !!option.DisableMessage\r\n }\r\n\r\n optionTitle(option: any): any {\r\n return !!option.DisableMessage ? option.DisableMessage : \"\"\r\n }\r\n\r\n componentDidUpdate(prevProps: DualListBoxProps, prevState: DualListBoxState) {\r\n if (!_lodash.isEqual(this.props.selected, prevProps.selected)) {\r\n const selection = this.mapOptions(this.props.selected)\r\n this.setState({ selected: selection })\r\n }\r\n if (!_lodash.isEqual(this.state.selected, prevState.selected)) {\r\n const selection = this.props.options.filter(option => this.state.selected.includes(this.mapOption(option)))\r\n this.props.onChange(selection)\r\n }\r\n }\r\n\r\n move(dir: \"ltr\" | \"rtl\", all?: boolean) {\r\n const selectionRight: string[] = this.state.selectionRight\r\n let newSelection = [];\r\n if (dir === \"ltr\") \r\n {\r\n newSelection = this.mapOptions(this.props.options.filter(o => !this.disabledOption(o))); \r\n } \r\n\r\n if (!all)\r\n {\r\n newSelection = [...this.state.selected, ...this.state.selectionLeft]\r\n if (dir === \"rtl\")\r\n {\r\n newSelection = this.state.selected.filter(option => !selectionRight.includes(option))\r\n } \r\n }\r\n dir === \"ltr\" ? this.setState({ selectionLeft: [], selected: newSelection }) : this.setState({ selectionRight: [], selected: newSelection })\r\n }\r\n\r\n render() {\r\n const options: T[] = this.props.options\r\n const selection: string[] = this.state.selected\r\n const availableOptions = options.filter(option => !selection.includes(this.mapOption(option)))\r\n const selectedOptions = options.filter(option => selection.includes(this.mapOption(option)))\r\n return (\r\n <>\r\n \r\n {this.props.availableTitle}\r\n \r\n {this.props.selectedTitle}\r\n \r\n \r\n \r\n
{this.props.availableTitle}
\r\n ) => { this.setState({ selectionLeft: Array.from(e.target.selectedOptions, option => option.value) }) }}>\r\n { availableOptions.map(option => ) }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{this.props.selectedTitle}
\r\n ) => { this.setState({ selectionRight: Array.from(e.target.selectedOptions, option => option.value) }) }}>\r\n { selectedOptions.map(option => ) }\r\n \r\n \r\n
\r\n \r\n )\r\n }\r\n\r\n static defaultProps = { selected: [], availableTitle: \"Available\", selectedTitle: \"Selected\", disabledkeys: [] }\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Form, Col, Row, Button } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport DualListBox from \"../../components/Administration/DualListBox\"\r\nimport RegulatoryMode from \"../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport ActivateAndInActiveLabAccountObservable from \"../../api/Administration/ActivateAndInActiveLabAccount\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\n\r\ninterface RegulatoryModeSelectionProps {\r\n regulatoryModes: RegulatoryMode[]\r\n selectedRegulatoryModes: RegulatoryMode[]\r\n show: boolean\r\n onSave: (regulatoryModes: RegulatoryMode[]) => void\r\n onClose: () => void\r\n}\r\n\r\ninterface RegulatoryModeSelectionState {\r\n show: boolean\r\n regulatoryModes: RegulatoryMode[]\r\n selectedRegulatoryModes: RegulatoryMode[]\r\n}\r\n\r\nexport default class RegulatoryModeSelection extends React.PureComponent {\r\n state: RegulatoryModeSelectionState = {\r\n show: this.props.show,\r\n regulatoryModes: this.props.regulatoryModes,\r\n selectedRegulatoryModes: this.props.selectedRegulatoryModes\r\n }\r\n\r\n\r\n onCancel = () => {\r\n this.props.onClose()\r\n }\r\n\r\n onSubmit = () => {\r\n const { regulatoryModes, selectedRegulatoryModes } = this.state\r\n this.props.onSave(selectedRegulatoryModes)\r\n }\r\n\r\n \r\n render() {\r\n const { regulatoryModes, selectedRegulatoryModes } = this.props\r\n\r\n return (\r\n \r\n \r\n Regulatory Modes\r\n \r\n \r\n \r\n
\r\n this.setState({ selectedRegulatoryModes: [...selected] })}\r\n />\r\n \r\n
\r\n
\r\n \r\n \r\n Save\r\n \r\n
\r\n )\r\n }\r\n\r\n}\r\n","export default \"data:image/png;base64,/9j/4AAQSkZJRgABAQEAlgCWAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCAATABMDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDvNcGu6ZLNqNrM1xCpLFdx+RfQp0IHqOaj0/xVfeJAsGkW628iqDcTTEMIs/3R36cZrH8R6jeeLPFg8LadKY7S3bN3Ivcj72fYdMev0q/q3hw+GZ4PEHh2Bs2qBLy1U5+0Qjqf94dfeue7cny7HqcsFTiqiXO9v0v69PxOwsrdrW0jhe4kuGXO6WU5ZiTk/wA+nailtLqG9tIbq3cPDMgdGHcEZFFdB5jvfUr2ei6dYX93f2tqsdzeENPICTvP4nA/DFXcA0UUWsDbbuyGysrfTrVbW0iEUKFiqAkgZJJxntknjtRRRQJu+rP/2Q==\"","import * as React from \"react\"\r\nimport { Modal, Col, Row, Spinner, Button, Container, Image, Form, InputGroup } from \"react-bootstrap\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css'\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { FilterDataName, GetFilterDataNameIndexByID, DeleteSavedQuery } from \"../../api/Randoms/RandomsModel/PoolCriteria\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport DeleteQueryImg from '../../assets/images/delete_query.png'\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\n\r\ninterface SavedQueriesModalProps {\r\n savedQueries: FilterDataName[]\r\n show: boolean\r\n onSelect: (filterDataId: number, name: string) => void\r\n onDelete: (filterDataId: number) => void\r\n onClose: () => void\r\n}\r\n\r\ninterface SavedQueriesModalState {\r\n saving: boolean\r\n showConfirmation: boolean\r\n idToDelete: number\r\n\r\n}\r\n\r\nexport default class SavedQueriesModal extends React.Component {\r\n subscription?: Subscription\r\n state: SavedQueriesModalState = {\r\n saving: false,\r\n showConfirmation: false,\r\n idToDelete: 0\r\n }\r\n\r\n saveSubscription?: Subscription\r\n\r\n\r\n componentWillUnmount() {\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n\r\n handleClose = () => {\r\n this.props.onClose()\r\n }\r\n\r\n handleSelectQuery = (filterDataId: number, name:string) => {\r\n this.props.onSelect(filterDataId, name)\r\n }\r\n handleDeleteQuery = (filterDataId: number) => {\r\n if (filterDataId <= 0) {\r\n return\r\n }\r\n const itemIndex = GetFilterDataNameIndexByID(this.props.savedQueries, filterDataId);\r\n if (itemIndex < 0) {\r\n return\r\n }\r\n this.setState({ saving:false, showConfirmation: true, idToDelete: filterDataId })\r\n }\r\n deleteSelectedQuery = () => {\r\n const filterDataId = this.state.idToDelete;\r\n if (filterDataId <= 0) {\r\n this.setState({ saving:false, showConfirmation: false, idToDelete: 0 })\r\n return;\r\n }\r\n const itemIndex = GetFilterDataNameIndexByID(this.props.savedQueries, filterDataId);\r\n if (itemIndex < 0) {\r\n this.setState({ saving:false, showConfirmation: false, idToDelete: 0 })\r\n return\r\n }\r\n\r\n this.setState({ saving: true })\r\n\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = DeleteSavedQuery(filterDataId).subscribe(\r\n data => {\r\n this.setState({ saving: false })\r\n this.props.onDelete(filterDataId)\r\n toast.success(\"Record deleted successfully.\")\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n this.closeConfirmation();\r\n }\r\n closeConfirmation = () => {\r\n this.setState({ saving:false, showConfirmation: false, idToDelete: 0 })\r\n }\r\n\r\n\r\n render() {\r\n const savedQueries = this.props.savedQueries\r\n return (\r\n <>\r\n this.deleteSelectedQuery()}\r\n onHide={() => this.closeConfirmation()} />\r\n \r\n \r\n Saved Queries\r\n \r\n \r\n
\r\n {savedQueries.map((savedQuery, i) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleDeleteQuery(savedQuery.FilterDataID)} />\r\n \r\n )\r\n })} \r\n
\r\n
\r\n \r\n {}\r\n \r\n
\r\n \r\n )\r\n }\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Form, Button } from \"react-bootstrap\"\r\nimport DualListBox from \"../../components/Administration/DualListBox\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport AutoFilterLocation from \"../../api/Location/LocationModel/AutoFilterLocation\"\r\n\r\ninterface LocationSelectionProps {\r\n locations: AutoFilterLocation[]\r\n selectedLocations: AutoFilterLocation[]\r\n show: boolean\r\n onSave: (locations: AutoFilterLocation[]) => void\r\n onClose: () => void\r\n}\r\n\r\ninterface LocationSelectionState {\r\n selectedLocations: AutoFilterLocation[]\r\n}\r\n\r\nexport default class LocationSelection extends React.PureComponent {\r\n state: LocationSelectionState = {\r\n selectedLocations: []\r\n }\r\n\r\n onCancel = () => this.props.onClose()\r\n\r\n onSubmit = () => this.props.onSave(this.state.selectedLocations)\r\n\r\n render() {\r\n return (\r\n \r\n \r\n Locations\r\n \r\n \r\n
\r\n this.setState({ selectedLocations: [...selected] })}\r\n />\r\n \r\n
\r\n \r\n \r\n Save\r\n \r\n
\r\n )\r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { AccountTypeID } from \"../../config/Constants\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport AutoFilterCompany from \"../Companies/CompanyModel/AutoFilterCompany\"\r\n\r\nexport function GetConsortiumCompaniesObservable(poolId: number): Observable {\r\n const requestBody: string = JSON.stringify({\r\n AccountTypeID: AccountTypeID,\r\n PoolID: poolId\r\n })\r\n\r\n return ObservableFromFetch(\"RandomTest/GetConsortiumAccounts\", requestBody)\r\n}\r\n\r\nexport function ValidateConsortiumCompanyObservable(poolId: number, accountID: number|string): Observable {\r\n const requestBody: string = JSON.stringify({\r\n accountID: Number(accountID),\r\n poolID: poolId\r\n })\r\n\r\n return ObservableFromFetch(\"RandomTest/ValidateConsortiumAccount\", requestBody)\r\n}","import React from \"react\"\r\nimport { Modal, Form, Button, Spinner, Col } from \"react-bootstrap\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport DualListBox from \"../../components/Administration/DualListBox\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { ValidateConsortiumCompanyObservable } from \"../../api/Randoms/ConsortiumData\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { toast } from \"react-toastify\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\n\r\ninterface CompanySelectionProps {\r\n companies: AutoFilterCompany[]\r\n selectedCompanies: AutoFilterCompany[]\r\n show: boolean\r\n onSave: (companies: AutoFilterCompany[]) => void\r\n onClose: () => void\r\n isConsortium?: boolean\r\n poolID: number\r\n}\r\n\r\ninterface CompanySelectionState {\r\n selectedCompanies: AutoFilterCompany[]\r\n validations: CompanyValidation[]\r\n validating: boolean\r\n showModal: boolean\r\n validationMessage: string\r\n}\r\n\r\ninterface CompanyValidation{\r\n poolID: number\r\n accountID: number\r\n message: string\r\n}\r\n\r\nexport default class CompanySelection extends React.PureComponent {\r\n state: CompanySelectionState = {\r\n selectedCompanies: [],\r\n validations: [],\r\n validating: false,\r\n showModal: false,\r\n validationMessage: \"\"\r\n }\r\n\r\n subscriptions = new Subscription()\r\n validateSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.setState({ selectedCompanies: [...this.props.selectedCompanies] })\r\n if (!!this.props.isConsortium) {\r\n const datStr = localStorage.getItem(\"consortiumCheckCompanies\");\r\n if (datStr) {\r\n const data: CompanyValidation[] = JSON.parse(datStr)\r\n if (data.length > 0) {\r\n this.setState({validations: data})\r\n }\r\n }\r\n else {\r\n this.setState({validations: []})\r\n }\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (!!this.props.isConsortium) {\r\n localStorage.setItem(\"consortiumCheckCompanies\", JSON.stringify(this.state.validations))\r\n }\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n onChange = (selected: AutoFilterCompany[]) => {\r\n const { selectedCompanies } = this.state\r\n if (this.props.isConsortium && selected.length > selectedCompanies.length) {\r\n this.setState({showModal: true, validating: true})\r\n const diff = selected.find(x => !this.state.selectedCompanies.find(el => el.AccountID === x.AccountID))\r\n if (diff) {\r\n this.validate(diff, selected)\r\n }\r\n }\r\n else {\r\n this.setState({ selectedCompanies: [...selected] })\r\n }\r\n }\r\n\r\n validate = (account: AutoFilterCompany, selected: AutoFilterCompany[]) =>\r\n {\r\n ValidateConsortiumCompanyObservable(this.props.poolID, account.AccountID).subscribe(\r\n (message) => {\r\n let validations = [...this.state.validations]\r\n if (message.length === 0) {\r\n let vs = validations.findIndex(v => v.poolID === this.props.poolID && v.accountID === account.AccountID)\r\n if(vs >= 0)\r\n {\r\n validations.splice(vs, 1)\r\n }\r\n this.setState({ selectedCompanies: [...selected], showModal: false })\r\n }\r\n else \r\n {\r\n let vs = validations.find(v => v.poolID === this.props.poolID && v.accountID === account.AccountID)\r\n if (vs !== undefined) {\r\n vs.message = message\r\n }\r\n else {\r\n validations.push({poolID: this.props.poolID, accountID: account.AccountID, message: message})\r\n }\r\n }\r\n this.setState({ validating: false, validationMessage: message, validations: [...validations ] })\r\n },\r\n (error) => this.handleAPIError(error, {validating: false, showModal: false, validationMessage: \"\"})\r\n )\r\n }\r\n\r\n onCancel = () => this.props.onClose()\r\n\r\n onSubmit = () => this.props.onSave(this.state.selectedCompanies)\r\n\r\n render() {\r\n let cs = this.props.companies.map(a => {\r\n let v = this.state.validations.find(v => v.poolID === this.props.poolID && v.accountID === a.AccountID)\r\n let n = !!v?.message ? `${a.Name} (${v.message})` : a.Name\r\n return {...a, Name: n} \r\n })\r\n return (<>\r\n {!this.state.showModal && \r\n \r\n Companies\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n Save\r\n \r\n
}\r\n {this.state.showModal && \r\n \r\n VALIDATION\r\n \r\n \r\n {this.state.validating &&\r\n \r\n \r\n \r\n }\r\n {!this.state.validating &&\r\n \r\n {this.state.validationMessage}\r\n \r\n }\r\n \r\n \r\n {!this.state.validating && }\r\n \r\n }\r\n \r\n )\r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { Modal, Col, Row, Spinner, Button, Form } from \"react-bootstrap\"\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css'\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport RegulatoryMode from \"../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport AutoFilterLocation from \"../../api/Location/LocationModel/AutoFilterLocation\"\r\nimport LabServiceRegulatoryModesGetObservable from \"../../api/LabService/LabServiceRegulatoryModesGet\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport PoolCriteria, { CopyFilterDataNames, CopyPoolCriteria, EmptyPoolCriteria, FilterData, FilterDataName, FilterDataToPoolCriteria, GetCompanyPoolCriteriaItem, GetFilterDataNameIndexByID, GetPoolCriteria, GetPoolCriteriaItemStringValues, GetRegulatoryModePoolCriteriaItem, GetSavedQueries, GetSavedQuery, SavePoolCriteria, SaveQueryAs, GetPoolCriteriaItemByCode, FilterCriteriaCode } from \"../../api/Randoms/RandomsModel/PoolCriteria\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport QueryNameModal from \"./QueryNameModal\"\r\nimport RegulatoryModeSelection from \"./RegulatoryModeSelection\"\r\nimport SavedQueriesModal from \"./SavedQueriesModal\"\r\nimport LocationSelection from \"./LocationSelection\"\r\nimport AutoFilterLocationsGetObservable from \"../../api/Location/AutoFilterLocationsGet\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport CompanySelection from \"./CompanySelection\"\r\nimport { GetConsortiumCompaniesObservable } from \"../../api/Randoms/ConsortiumData\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\n\r\ninterface PoolMembersCriteriaModalProps {\r\n poolId: number\r\n poolName: string\r\n regulated: boolean\r\n show: boolean\r\n onSave: (close: boolean) => void\r\n onClose: () => void\r\n isConsortium: boolean\r\n useFileImportForPoolMembership: boolean\r\n}\r\n\r\ninterface PoolMembersCriteriaModalState {\r\n availableRegulatoryModes: RegulatoryMode[]\r\n isRegulatoryModesLoading: boolean\r\n availableCompanies: AutoFilterCompany[]\r\n selectedCompanies: AutoFilterCompany[]\r\n availableLocations: AutoFilterLocation[]\r\n selectedLocations: AutoFilterLocation[]\r\n loadingLocations: boolean\r\n isPoolCriteriaLoading: boolean\r\n isSavedQueriesLoading: boolean\r\n isSavedQueryLoading: boolean\r\n showRegulatoryModes: boolean\r\n showLocations: boolean\r\n showCompanies: boolean\r\n showSavedQueries: boolean\r\n showQueryName: boolean\r\n poolCriteria: PoolCriteria\r\n savedQueries: FilterDataName[]\r\n criteriaSaving: boolean\r\n querySaving: boolean\r\n querySavingAs: boolean\r\n saveQueryMode: string\r\n originalCompanies: AutoFilterCompany[]\r\n originalLocations: AutoFilterLocation[]\r\n showConfirmSave: boolean\r\n confirmSaveText: string\r\n\r\n}\r\n\r\nexport default class PoolMembersCriteriaModal extends React.Component {\r\n saveSubscription?: Subscription\r\n saveAsSubscription?: Subscription\r\n loadSavedQuerySubscription?: Subscription\r\n state: PoolMembersCriteriaModalState = {\r\n availableRegulatoryModes: [],\r\n isRegulatoryModesLoading: false,\r\n availableLocations: [],\r\n selectedLocations: [],\r\n availableCompanies: [],\r\n selectedCompanies: [],\r\n loadingLocations: true,\r\n isPoolCriteriaLoading: false,\r\n isSavedQueriesLoading: false,\r\n isSavedQueryLoading: false,\r\n showRegulatoryModes: false,\r\n showLocations: false,\r\n showCompanies: false,\r\n showSavedQueries: false,\r\n showQueryName: false,\r\n poolCriteria: EmptyPoolCriteria,\r\n savedQueries: [],\r\n criteriaSaving: false,\r\n querySaving: false,\r\n querySavingAs: false,\r\n saveQueryMode: \"\",\r\n originalCompanies: [],\r\n originalLocations: [],\r\n showConfirmSave: false,\r\n confirmSaveText: \"\"\r\n }\r\n\r\n subscriptions = new Subscription()\r\n locationSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n if (this.props.regulated) {\r\n this.setState({ isRegulatoryModesLoading: true, loadingLocations: true })\r\n this.subscriptions.add(\r\n LabServiceRegulatoryModesGetObservable().subscribe(\r\n (data: RegulatoryMode[]) => this.setState({ availableRegulatoryModes: data, isRegulatoryModesLoading: false }),\r\n () => this.setState({ isRegulatoryModesLoading: false })\r\n )\r\n )\r\n }\r\n\r\n this.setState({ isPoolCriteriaLoading: true, isSavedQueriesLoading: true, loadingLocations: true })\r\n this.subscriptions.add(\r\n GetPoolCriteria(this.props.poolId).subscribe(\r\n (data: PoolCriteria) => {\r\n this.setState({ poolCriteria: data, isPoolCriteriaLoading: false })\r\n const companyItem = GetCompanyPoolCriteriaItem(this.state.poolCriteria)\r\n\r\n if (this.props.isConsortium) {\r\n this.locationSubscription = GetConsortiumCompaniesObservable(this.props.poolId).subscribe(\r\n (data: AutoFilterCompany[]) => {\r\n const selectedCompanies = this.getSelectedCompanies(this.state.poolCriteria, data)\r\n this.setState({ availableCompanies: data, selectedCompanies: selectedCompanies, originalCompanies: selectedCompanies, loadingLocations: false })\r\n },\r\n () => this.setState({ loadingLocations: false })\r\n )\r\n }\r\n else {\r\n const companyID = companyItem.Values.length ? companyItem.Values[0].IntValue : 0\r\n this.locationSubscription = AutoFilterLocationsGetObservable(companyID, \"\", \"\").subscribe(\r\n (data: AutoFilterLocation[]) => {\r\n const selectedLocations = this.getSelectedLocations(this.state.poolCriteria, data)\r\n this.setState({ availableLocations: data, selectedLocations: selectedLocations, originalLocations: selectedLocations, loadingLocations: false })\r\n },\r\n () => this.setState({ loadingLocations: false })\r\n )\r\n }\r\n },\r\n () => this.setState({ isPoolCriteriaLoading: false })\r\n )\r\n )\r\n this.subscriptions.add(\r\n GetSavedQueries(0).subscribe(\r\n (data: FilterDataName[]) => this.setState({ savedQueries: data, isSavedQueriesLoading: false }),\r\n () => this.setState({ isSavedQueriesLoading: false })\r\n )\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveAsSubscription && this.saveAsSubscription.unsubscribe()\r\n this.loadSavedQuerySubscription && this.loadSavedQuerySubscription.unsubscribe()\r\n this.subscriptions.unsubscribe()\r\n this.locationSubscription && this.locationSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n confirmSave = () => {\r\n if (!this.props.isConsortium || !this.props.useFileImportForPoolMembership){\r\n this.handleSave()\r\n return\r\n }\r\n const deletedCompanies = this.getDeletedCompanies()\r\n if (deletedCompanies.length > 0) {\r\n this.setState({ showConfirmSave: true, confirmSaveText:this.getConfirmText(deletedCompanies)})\r\n } else {\r\n this.handleSave()\r\n }\r\n }\r\n\r\n getDeletedCompanies = (): AutoFilterCompany[] => {\r\n const companyCriteria = GetCompanyPoolCriteriaItem(this.state.poolCriteria)\r\n const originalCompanies = this.state.originalCompanies\r\n const deletedCompanies = originalCompanies.filter(c => !companyCriteria.Values.find(item => item.IntValue === c.AccountID))\r\n return deletedCompanies || []\r\n }\r\n\r\n getConfirmText = (deletedCompanies: AutoFilterCompany[]): string => {\r\n if (deletedCompanies.length === 0) {\r\n return \"\"\r\n }\r\n if (deletedCompanies.length === 1) {\r\n return \"You removing a company from the pool and all members in the company will be marked as inactive.\\\r\n Do you want to continue?\"\r\n }\r\n return \"You have removed \" + deletedCompanies.length + \" companies from the pool.\\\r\n All members of these companies will be marked as inactive.\\\r\n Do you want to continue?\"\r\n }\r\n\r\n handleConfirmSave = () => {\r\n this.setState({ showConfirmSave: false})\r\n this.handleSave()\r\n }\r\n\r\n handleConfirmClose = () => {\r\n this.setState({ showConfirmSave: false })\r\n }\r\n\r\n handleSave = () => {\r\n this.setState({ criteriaSaving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n const data = { ...this.state.poolCriteria, IsConsortium: this.props.isConsortium }\r\n this.saveSubscription = SavePoolCriteria(data).subscribe(\r\n (data: PoolCriteria) => {\r\n this.setState({ criteriaSaving: false })\r\n toast.success(\"Criteria saved successfully.\")\r\n this.props.onSave(true)\r\n },\r\n error => this.handleAPIError(error, { criteriaSaving: false })\r\n )\r\n }\r\n\r\n handleSaveQuery = () => {\r\n if ((this.state.poolCriteria.FilterDataID === 0) || (this.state.poolCriteria.SaveAs.length === 0)) {\r\n this.setState({ showQueryName: true, saveQueryMode: \"save\" })\r\n }\r\n else {\r\n this.handleQueryNameSave(this.state.poolCriteria.SaveAs, \"save\")\r\n }\r\n }\r\n handleSaveQueryAs = () => {\r\n this.setState({ showQueryName: true, saveQueryMode: \"save_as\" })\r\n }\r\n\r\n handleQueryNameSave = (name: string, save_mode: string = \"\") => {\r\n if (name.trim().length === 0) {\r\n this.setState({ showQueryName: false, querySaving: false, querySavingAs: false, saveQueryMode: \"\" })\r\n return\r\n }\r\n const save_query_mode = save_mode || this.state.saveQueryMode;\r\n const querySaving = (save_query_mode === \"save\")\r\n const querySavingAs = (save_query_mode === \"save_as\")\r\n this.setState({ showQueryName: false, querySaving: querySaving, querySavingAs: querySavingAs })\r\n this.saveAsSubscription && this.saveAsSubscription.unsubscribe()\r\n this.saveAsSubscription = SaveQueryAs(this.state.poolCriteria, name).subscribe(\r\n (data: FilterData) => {\r\n const filterDataId = data.FilterDataID;\r\n const itemIndex = GetFilterDataNameIndexByID(this.state.savedQueries, filterDataId);\r\n let savedQueries = this.state.savedQueries;\r\n if (itemIndex < 0) {\r\n\r\n const newFilterDataItem = {\r\n FilterDataID: filterDataId,\r\n Name: data.Name\r\n }\r\n savedQueries = CopyFilterDataNames(this.state.savedQueries);\r\n savedQueries.push(newFilterDataItem);\r\n }\r\n\r\n const loadedPoolCriteria: PoolCriteria = FilterDataToPoolCriteria(this.state.poolCriteria.PoolID, data)\r\n const selectedLocations = this.getSelectedLocations(loadedPoolCriteria, this.state.availableLocations)\r\n this.setState({ poolCriteria: loadedPoolCriteria, selectedLocations: selectedLocations, savedQueries: savedQueries, querySaving: false, querySavingAs: false, saveQueryMode: \"\" })\r\n toast.success(data.SaveResultText)\r\n },\r\n error => this.handleAPIError(error, { querySaving: false, querySavingAs: false, saveQueryMode: \"\" })\r\n )\r\n }\r\n\r\n handleQueryNameClose = () => {\r\n this.setState({ showQueryName: false })\r\n }\r\n\r\n handleClearFilter = () => {\r\n const poolCriteria = CopyPoolCriteria(this.state.poolCriteria)\r\n const poolCriteriaItem = GetRegulatoryModePoolCriteriaItem(poolCriteria);\r\n const locationCriteria = GetPoolCriteriaItemByCode(poolCriteria, FilterCriteriaCode.Location)\r\n poolCriteriaItem.Values = []\r\n locationCriteria.Values = []\r\n this.setState({ poolCriteria: poolCriteria, selectedLocations: [] })\r\n }\r\n\r\n handleClose = () => {\r\n this.props.onClose()\r\n }\r\n\r\n handleSelectSavedQuery = (filterDataId: number, name: string) => {\r\n this.setState({ showSavedQueries: false, isSavedQueryLoading: true })\r\n this.loadSavedQuerySubscription && this.loadSavedQuerySubscription.unsubscribe()\r\n this.loadSavedQuerySubscription = GetSavedQuery(filterDataId, name).subscribe(\r\n (data: FilterData) => {\r\n //preserve Company\r\n const companyItem = GetCompanyPoolCriteriaItem(this.state.poolCriteria)\r\n const loadedPoolCriteria: PoolCriteria = FilterDataToPoolCriteria(this.state.poolCriteria.PoolID, data, true)\r\n loadedPoolCriteria.Items.push(companyItem)\r\n\r\n const selectedLocations = this.getSelectedLocations(loadedPoolCriteria, this.state.availableLocations)\r\n const locationCriteria = GetPoolCriteriaItemByCode(loadedPoolCriteria, FilterCriteriaCode.Location, true)\r\n locationCriteria.Values = selectedLocations.map(item => ({ ID: 0, IntValue: item.AccountID || 0, StringValue: item.Name, BoolValue: false }))\r\n\r\n this.setState({ poolCriteria: loadedPoolCriteria, selectedLocations: selectedLocations, isSavedQueryLoading: false })\r\n toast.success(\"Query loaded successfully.\")\r\n },\r\n error => this.handleAPIError(error, { isSavedQueryLoading: false })\r\n )\r\n }\r\n\r\n handleDeleteSavedQuery = (filterDataId: number) => {\r\n\r\n let savedQueries = this.state.savedQueries;\r\n const itemIndex = GetFilterDataNameIndexByID(savedQueries, filterDataId);\r\n if (itemIndex >= 0) {\r\n savedQueries = CopyFilterDataNames(savedQueries);\r\n savedQueries.splice(itemIndex, 1)\r\n }\r\n\r\n this.setState({ showSavedQueries: false, savedQueries: savedQueries })\r\n }\r\n\r\n handleShowSavedQueries = () => {\r\n this.setState({ showSavedQueries: true })\r\n }\r\n\r\n handleRegulatoryModeChange = (items: RegulatoryMode[]) => {\r\n const poolCriteria = this.setRegulatorModes(items)\r\n this.setState({ showRegulatoryModes: false, poolCriteria: poolCriteria })\r\n }\r\n\r\n handleEditRegulatoryMode = () => this.setState({ showRegulatoryModes: true })\r\n\r\n handleLocationChange = (items: AutoFilterLocation[]) => {\r\n const poolCriteria = CopyPoolCriteria(this.state.poolCriteria)\r\n const locationCriteria = GetPoolCriteriaItemByCode(poolCriteria, FilterCriteriaCode.Location, true)\r\n locationCriteria.Values = items.map(item => ({ ID: 0, IntValue: item.AccountID || 0, StringValue: item.Name, BoolValue: false }))\r\n\r\n this.setState({ showLocations: false, poolCriteria: poolCriteria, selectedLocations: items })\r\n }\r\n\r\n handleCompanyChange = (items: AutoFilterCompany[]) => {\r\n const poolCriteria = CopyPoolCriteria(this.state.poolCriteria)\r\n const companyCriteria = GetPoolCriteriaItemByCode(poolCriteria, FilterCriteriaCode.Company, true)\r\n companyCriteria.Values = items.map(item => ({ ID: 0, IntValue: item.AccountID || 0, StringValue: item.Name, BoolValue: false }))\r\n\r\n this.setState({ showCompanies: false, poolCriteria: poolCriteria, selectedCompanies: items })\r\n }\r\n\r\n handleEdiLocation = () => this.setState({ showLocations: true })\r\n handleEditCompany = () => this.setState({ showCompanies: true })\r\n\r\n getSelectedRegulatoryModeModes = () => {\r\n let result: RegulatoryMode[] = [];\r\n let poolCriteriaItem = GetRegulatoryModePoolCriteriaItem(this.state.poolCriteria);\r\n let values = poolCriteriaItem.Values;\r\n let items = this.state.availableRegulatoryModes;\r\n for (let i = 0; i < values.length; i++) {\r\n let val = values[i];\r\n for (let j = 0; j < items.length; j++) {\r\n let item = items[j];\r\n if (item.RegulatoryModeID === val.IntValue) {\r\n result.push(item)\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n setRegulatorModes = (items: RegulatoryMode[]): PoolCriteria => {\r\n const poolCriteria = CopyPoolCriteria(this.state.poolCriteria)\r\n const poolCriteriaItem = GetRegulatoryModePoolCriteriaItem(poolCriteria);\r\n poolCriteriaItem.Values = []\r\n for (let i = 0; i < items.length; i++) {\r\n const item = items[i];\r\n const val = {\r\n ID: 0,\r\n PoolCriteriaID: 0,\r\n PoolCriteriaIntID: 0,\r\n PoolOptionID: 0,\r\n IntValue: item.RegulatoryModeID,\r\n StringValue: item.Name,\r\n BoolValue: false\r\n }\r\n poolCriteriaItem.Values.push(val);\r\n }\r\n return poolCriteria;\r\n }\r\n\r\n\r\n getCompanyNames = () => {\r\n let item = GetCompanyPoolCriteriaItem(this.state.poolCriteria)\r\n const companies = item.Values.map(value => { return { ID: value.IntValue, Name: value.StringValue, CompanyName: value.StringValue2 || \"\", CompanyCode: value.StringValue3 || \"\" } })\r\n let names: string[] = []\r\n for (let i = 0; i < companies.length; i++) {\r\n let name = companies[i].CompanyName || \"\"\r\n let code = companies[i].CompanyCode ? companies[i].CompanyCode.toString() : \"\"\r\n if (code) {\r\n code = \" (Company Code: \" + code + \")\"\r\n }\r\n names[i] = name + code\r\n }\r\n return names\r\n }\r\n\r\n getRegulatoryModeNames = () => {\r\n let item = GetRegulatoryModePoolCriteriaItem(this.state.poolCriteria)\r\n let result = GetPoolCriteriaItemStringValues(item)\r\n return result;\r\n }\r\n\r\n getSelectedLocations = (poolCriteria: PoolCriteria, availableLocations: AutoFilterLocation[]) => {\r\n const locationCriteria = GetPoolCriteriaItemByCode(poolCriteria, FilterCriteriaCode.Location)\r\n const locationIds = locationCriteria.Values.map(value => value.IntValue)\r\n return availableLocations.filter(location => locationIds.includes(location.AccountID || 0))\r\n }\r\n\r\n getSelectedCompanies = (poolCriteria: PoolCriteria, availableCompanies: AutoFilterCompany[]) => {\r\n const companyCriteria = GetPoolCriteriaItemByCode(poolCriteria, FilterCriteriaCode.Company)\r\n const companyIds = companyCriteria.Values.map(value => value.IntValue)\r\n return availableCompanies.filter(company => companyIds.includes(company.AccountID || 0))\r\n }\r\n\r\n getLocationNames = () => this.state.selectedLocations.map(item => item.Name)\r\n\r\n creatCompanyRow = (companyName: string) => {\r\n return {companyName}\r\n }\r\n creatCompanyRows = (items: string[]) => {\r\n let result = []\r\n for (let i = 0; i < items.length; i++) {\r\n result[i] = this.creatCompanyRow(items[i])\r\n }\r\n return result\r\n }\r\n render() {\r\n const { criteriaSaving, querySaving, querySavingAs, availableRegulatoryModes, availableLocations, selectedLocations, savedQueries, availableCompanies, selectedCompanies,\r\n isRegulatoryModesLoading, isPoolCriteriaLoading, isSavedQueriesLoading, showQueryName, isSavedQueryLoading, loadingLocations } = this.state\r\n const { regulated, isConsortium } = this.props\r\n const selectedRegulatoryModes = this.getSelectedRegulatoryModeModes()\r\n const companyNames = this.getCompanyNames() || []\r\n const companyRows = this.creatCompanyRows(companyNames)\r\n const regulatoryModeNames = this.getRegulatoryModeNames()\r\n const regulatoryModeNamesStr = regulatoryModeNames.join(\", \")\r\n const locationNames = this.getLocationNames().join(\", \")\r\n const loading = (regulated && isRegulatoryModesLoading) || isPoolCriteriaLoading || isSavedQueriesLoading || isSavedQueryLoading || loadingLocations\r\n const savedQueriesPresent = savedQueries.length > 0\r\n const isShowSaveQuery = true;\r\n const isShowSaveQueryAs = (this.state.poolCriteria.FilterDataID > 0)\r\n const isShowClose = true;\r\n const isShowClearFilter = true;\r\n const isShowSave = true;\r\n\r\n const saving = criteriaSaving || querySaving || querySavingAs;\r\n\r\n return (\r\n <>\r\n this.handleQueryNameSave(name)}\r\n onClose={this.handleQueryNameClose} />\r\n {savedQueriesPresent &&\r\n this.setState({ showSavedQueries: false })}\r\n onSelect={(filterDataId, name) => this.handleSelectSavedQuery(filterDataId, name)}\r\n onDelete={(filterDataId) => this.handleDeleteSavedQuery(filterDataId)} />\r\n }\r\n {this.props.regulated && this.setState({ showRegulatoryModes: false })}\r\n onSave={(regModes) => this.handleRegulatoryModeChange(regModes)} />}\r\n this.setState({ showLocations: false })}\r\n onSave={(locations) => this.handleLocationChange(locations)} />\r\n {!loadingLocations && this.setState({ showCompanies: false })}\r\n onSave={(companies) => this.handleCompanyChange(companies)}\r\n isConsortium={isConsortium}\r\n poolID={this.props.poolId}\r\n />}\r\n {!loading && !saving &&\r\n this.handleConfirmSave()}\r\n onHide={() => this.handleConfirmClose()} />\r\n }\r\n\r\n \r\n \r\n CRITERIA\r\n \r\n \r\n {(loading || saving) &&\r\n \r\n \r\n }\r\n\r\n {!loading && !saving &&\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {savedQueriesPresent &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n {!isConsortium && Company}\r\n {isConsortium && }\r\n \r\n \r\n {companyRows}\r\n\r\n \r\n \r\n \r\n \r\n \r\n {!isConsortium && \r\n \r\n \r\n \r\n \r\n {locationNames}\r\n \r\n \r\n \r\n \r\n }\r\n {regulated && \r\n \r\n \r\n \r\n \r\n \r\n \r\n {regulatoryModeNamesStr}\r\n \r\n \r\n \r\n \r\n }\r\n
}\r\n
\r\n \r\n {isShowSaveQuery && this.handleSaveQuery()}>Save Query}\r\n {isShowSaveQueryAs && this.handleSaveQueryAs()}>Save Query As}\r\n {isShowClose && this.handleClose()}>Cancel}\r\n {isShowClearFilter && this.handleClearFilter()}>Clear Filter}\r\n {isShowSave && this.confirmSave()}>Save}\r\n \r\n
\r\n \r\n )\r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport CheckPoolMember from \"./RandomsModel/CheckPoolMember\"\r\nimport { PoolCompanyInfo } from \"./RandomsModel/PoolCompanyInfo\"\r\nimport PoolMemberData from \"./RandomsModel/PoolMemberData\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport function PoolMemberCheck(poolId: number, accountType: string, mask: string, searchBy: string): Observable {\r\n const params: string = JSON.stringify({\r\n PoolId: poolId,\r\n AccountType: accountType,\r\n Mask: mask,\r\n SearchBy: searchBy\r\n })\r\n\r\n return ObservableFromFetch(\"/WorkforceRandomTest/CheckPoolMember\", params)\r\n}\r\n\r\nexport function PoolCompanyInfoGet(poolId: number): Observable {\r\n const params: string = JSON.stringify({\r\n PoolId: poolId\r\n })\r\n\r\n return ObservableFromFetch(\"/RandomTest/GetCompanyByPoolID\", params)\r\n}\r\n\r\nexport function PoolMemberAdd(data: PoolMemberData): Observable {\r\n const params: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"/RandomTest/AddPerson\", params)\r\n}\r\n\r\n\r\n\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { AccountTypeID } from \"../../config/Constants\"\r\nimport AutoFilterRegion from \"./Model/AutoFilterRegion\"\r\n\r\nexport default function AutoFilterRegionsGetObservable(company: number, filter: string): Observable {\r\n const requestBody: string = JSON.stringify({\r\n AccountType: AccountTypeID,\r\n ParentAccountID: company,\r\n AutoFilterValue: filter,\r\n IsFilters: true\r\n })\r\n\r\n return ObservableFromFetch(\"Order/GetAutoFilterRegion\", requestBody)\r\n}\r\n","import React from \"react\"\r\nimport { Container, Row, Col, Table, Spinner, Button, Dropdown } from \"react-bootstrap\"\r\nimport { BehaviorSubject, Subscription, concat, of } from \"rxjs\"\r\nimport { map, switchMap } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { FaPrint } from \"react-icons/fa\"\r\nimport FileSaver from \"file-saver\"\r\nimport PoolMemberRecord from \"../../../api/Randoms/PoolMembersModel/PoolMemberRecord\"\r\nimport RandomPersonnelIdentifier from \"../../../api/Randoms/RandomPersonnelModel/RandomPersonnelIdentifier\"\r\nimport { PoolMembersGridObservable, PoolMembersExportCsv, PoolMembersPrint, ChangePersonStatus, PoolMembersOptions, ColumnFilters, PoolMembersGridResponse } from \"../../../api/Randoms/PoolMembersGridGet\"\r\nimport AutoFilterCompany from \"../../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport AutoFilterLocation from \"../../../api/Location/LocationModel/AutoFilterLocation\"\r\nimport AutoFilterRegion from \"../../../api/Regions/Model/AutoFilterRegion\"\r\nimport RegulatoryMode from \"../../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport EmployeeCategory from \"../../../api/LabService/LabServiceModel/EmployeeCategory\"\r\nimport RandomPersonnelCheckbox from \"../RandomPersonnelCheckbox\"\r\nimport ColumnsCustomizeModal from \"../../ColumnsCustomizeModal/ColumnsCustomizeModal\"\r\nimport EmployeeDetailsModal from \"../../OrderResults/EmployeeDetailsModal\"\r\nimport TablePagination from \"../../TablePagination\"\r\nimport ColumnHeaderFilter from \"../../ColumnHeaderFilter\"\r\nimport SearchField from \"../../../api/SearchField\"\r\nimport PoolMembersFiltersModal from \"../PoolMembersFiltersModal\"\r\nimport PoolMembersCriteriaModal from \"../PoolMembersCriteriaModal\"\r\nimport AddPoolMemberModal from \"../AddPoolMemberModal\"\r\nimport FormatSSN from \"../../../formatters/FormatSSN\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\nimport FormatTimestampFileName from \"../../../formatters/FormatTimestampFileName\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport Checkbox from \"../../Checkbox\"\r\nimport { CustomizableFilterColumn } from \"../../ColumnsCustomizeModal/CustomizableColumn\"\r\nimport { AppState, CurrentUserPermissions } from \"../../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport { StorageKey } from \"../../../config/Constants\"\r\nimport { loadCustomized, saveCustomized } from \"../../ColumnsCustomizeModal/ColumnsCustomizeModal\"\r\nimport { BuildUserAccess } from \"../../../authentication/BuildUserAccess\"\r\nimport UserAccessSettings from \"../../../authentication/UserAccessSettings\"\r\n\r\ntype Column = CustomizableFilterColumn\r\n\r\nexport enum RandomPersonnelGridMode {\r\n PersonnelGrid = \"PersonnelGrid\",\r\n PoolMembers = \"PoolMembers\"\r\n}\r\n\r\nenum StatusOptions {\r\n All = \"All\",\r\n Active = \"Active\",\r\n Inactive = \"Inactive\"\r\n}\r\n\r\ninterface PoolMembersGridProps {\r\n poolID: number\r\n poolName: string\r\n useFileImportForPoolMembership: boolean\r\n regulated: boolean\r\n userPermissions?: UserAccessSettings\r\n isConsortium: boolean\r\n isCompanyAdmin?: boolean\r\n onPoolUpdate: () => void\r\n}\r\n\r\ninterface RandomPersonnelGridStateSelectedPersons {\r\n selectedPrintRowIDs: RandomPersonnelIdentifier[]\r\n selectedChangeStatusRowIDs: RandomPersonnelIdentifier[]\r\n}\r\n\r\ninterface PoolMembersGridState extends RandomPersonnelGridStateSelectedPersons {\r\n loading: boolean\r\n loadingCsv: boolean\r\n importing: boolean\r\n removing: boolean\r\n data?: PoolMembersGridResponse\r\n columns: Column[]\r\n customizeModal: boolean\r\n advancedFiltersModal: boolean\r\n addPoolMember: boolean\r\n searchFields?: SearchField[]\r\n selectedCompanies: AutoFilterCompany[]\r\n selectedRegions: AutoFilterRegion[]\r\n selectedLocations: AutoFilterLocation[]\r\n selectedRegulatoryModes: RegulatoryMode[]\r\n selectedCategories: EmployeeCategory[]\r\n status: StatusOptions\r\n accountType: string\r\n employeeDetails: boolean\r\n details?: PoolMemberRecord\r\n showPoolMembersCriteriaModal: boolean\r\n}\r\n\r\nconst defaultColumns: Column[] = [\r\n { name: \"PrimaryID\", filter: \"IDNumber\", label: \"PERSONNEL ID\", visible: true, customize: false },\r\n { name: \"Name\", filter: \"Name\", label: \"NAME\", visible: true, customize: true },\r\n { name: \"Company\", filter: \"Company\", label: \"COMPANY\", visible: true, customize: true },\r\n { name: \"Occupation\", filter: \"Occupation\", label: \"OCCUPATION\", visible: true, customize: true },\r\n { name: \"Location\", filter: \"Location\", label: \"LOCATION\", visible: true, customize: true },\r\n { name: \"RegMode\", filter: \"RegulatoryMode\", label: \"REGULATORY MODE\", visible: true, customize: true },\r\n { name: \"DateActive\", filter: \"ActiveSince\", label: \"ACTIVE SINCE\", visible: true, customize: true },\r\n { name: \"ReasonForInactivation\", filter: \"ReasonForInactivation\", label: \"REASON FOR INACTIVATION\", visible: false, customize: true },\r\n { name: \"Category\", filter: \"Category\", label: \"EMPLOYEE CATEGORY\", visible: false, customize: true },\r\n { name: \"Supervisor1\", filter: \"Supervisor1\", label: \"SUPERVISOR 1\", visible: false, customize: true },\r\n { name: \"Supervisor2\", filter: \"Supervisor2\", label: \"SUPERVISOR 2\", visible: false, customize: true },\r\n { name: \"HireDate\", filter: \"HireDate\", label: \"HIRE DATE\", visible: false, customize: true },\r\n { name: \"TerminationDate\", filter: \"TerminationDate\", label: \"TERMINATION DATE\", visible: false, customize: true },\r\n { name: \"PreEmploymentTestOnFile\", filter: \"PreEmploymentTestOnFile\", label: \"PRE-EMPLOYMENT TEST ON FILE\", visible: false, customize: true },\r\n { name: \"Gender\", filter: \"Gender\", label: \"GENDER\", visible: false, customize: true },\r\n { name: \"DateOfBirth\", filter: \"DateOfBirth\", label: \"DATE OF BIRTH\", visible: false, customize: true },\r\n { name: \"AddressLine1\", filter: \"AddressLine1\", label: \"STREET ADDRESS\", visible: false, customize: true },\r\n { name: \"City\", filter: \"City\", label: \"CITY\", visible: false, customize: true },\r\n { name: \"State\", filter: \"State\", label: \"STATE\", visible: false, customize: true },\r\n { name: \"Zip\", filter: \"Zip\", label: \"ZIP\", visible: false, customize: true },\r\n { name: \"WorkPhone\", filter: \"WorkPhone\", label: \"WORK PHONE\", visible: false, customize: true },\r\n { name: \"CellPhone\", filter: \"CellPhone\", label: \"MOBILE PHONE\", visible: false, customize: true },\r\n { name: \"Email\", filter: \"Email\", label: \"EMAIL\", visible: false, customize: true },\r\n { name: \"User1\", filter: \"User1\", label: \"USER 1\", visible: false, customize: true },\r\n { name: \"User2\", filter: \"User2\", label: \"USER 2\", visible: false, customize: true },\r\n { name: \"User3\", filter: \"User3\", label: \"USER 3\", visible: false, customize: true },\r\n { name: \"User4\", filter: \"User4\", label: \"USER 4\", visible: false, customize: true },\r\n { name: \"User5\", filter: \"User5\", label: \"USER 5\", visible: false, customize: true },\r\n { name: \"User6\", filter: \"User6\", label: \"USER 6\", visible: false, customize: true },\r\n { name: \"User7\", filter: \"User7\", label: \"USER 7\", visible: false, customize: true },\r\n { name: \"User8\", filter: \"User8\", label: \"USER 8\", visible: false, customize: true },\r\n { name: \"User9\", filter: \"User9\", label: \"USER 9\", visible: false, customize: true },\r\n { name: \"User10\", filter: \"User10\", label: \"USER 10\", visible: false, customize: true },\r\n { name: \"Manager\", filter: \"Manager\", label: \"MANAGER\", visible: false, customize: true },\r\n]\r\n\r\nconst PageSize = 20\r\n\r\nexport class PoolMembersGrid extends React.PureComponent {\r\n state: PoolMembersGridState = {\r\n loading: false,\r\n loadingCsv: false,\r\n importing: false,\r\n removing: false,\r\n columns: loadCustomized(StorageKey.PoolMembersGridColumns, defaultColumns) as Column[],\r\n customizeModal: false,\r\n advancedFiltersModal: false,\r\n addPoolMember: false,\r\n selectedPrintRowIDs: [],\r\n selectedChangeStatusRowIDs: [],\r\n selectedCompanies: [],\r\n selectedRegions: [],\r\n selectedLocations: [],\r\n selectedRegulatoryModes: [],\r\n selectedCategories: [],\r\n status: StatusOptions.Active,\r\n accountType: \"master\", // TODO: Get it from Account data once Auth/Account will be implemented\r\n employeeDetails: false,\r\n showPoolMembersCriteriaModal: false\r\n }\r\n page$ = new BehaviorSubject({\r\n poolId: this.props.poolID,\r\n inactive: false,\r\n search: { field: \"\", text: \"\" },\r\n sort: { column: \"\", order: \"\" },\r\n filters: [],\r\n columnFilters: [],\r\n pageNumber: 1,\r\n pageSize: PageSize\r\n })\r\n pageSubscription?: Subscription\r\n\r\n file = React.createRef()\r\n\r\n componentDidMount() {\r\n this.pageSubscription = this.page$.pipe(\r\n switchMap(params => concat(\r\n of({ loading: true }),\r\n PoolMembersGridObservable(params).pipe(\r\n map((result: PoolMembersGridResponse) => ({ data: result, loading: false })))\r\n ))\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: PoolMembersGridResponse }) => {\r\n if (newState.data) {\r\n if (newState.data.ActiveSince?.length) {\r\n newState.data.ActiveSince = newState.data.ActiveSince.map(dateString => FormatDate(dateString))\r\n }\r\n if (newState.data.HireDate?.length) {\r\n newState.data.HireDate = newState.data.HireDate.map(dateString => FormatDate(dateString))\r\n }\r\n if (newState.data.TerminationDate?.length) {\r\n newState.data.TerminationDate = newState.data.TerminationDate.map(dateString => FormatDate(dateString))\r\n }\r\n if (newState.data.DateOfBirth?.length) {\r\n newState.data.DateOfBirth = newState.data.DateOfBirth.map(dateString => FormatDate(dateString))\r\n }\r\n if (!this.props.userPermissions?.isPortalAdmin && newState.data.Manager?.length) {\r\n this.setState({columns: this.state.columns.filter( x => x.name != \"Manager\")})\r\n }\r\n this.setState({ loading: newState.loading, data: newState.data, selectedPrintRowIDs: [], selectedChangeStatusRowIDs: [] })\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n },\r\n (error: string) => {\r\n this.setState({ loading: false })\r\n toast.error(error)\r\n }\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n }\r\n\r\n visibleColumns = () => this.state.columns.filter(col => col.visible)\r\n\r\n renderCell = (row: PoolMemberRecord, colName: keyof PoolMemberRecord, key: number) => {\r\n switch (colName) {\r\n case \"PrimaryID\":\r\n return \r\n case \"DateActive\":\r\n case \"HireDate\":\r\n case \"TerminationDate\":\r\n case \"DateOfBirth\":\r\n return {FormatDate(row[colName] as string)}\r\n case \"Manager\":\r\n return {row[colName].toString().toUpperCase()}\r\n default:\r\n return {row[colName]}\r\n }\r\n }\r\n\r\n sortGrid(column: string, order?: string) {\r\n this.page$.next({ ...this.page$.value, sort: { column: column, order: order || \"\" } })\r\n }\r\n\r\n filterGridColumn(column: string, items: string[]) {\r\n const columnFilters = this.page$.value.columnFilters\r\n const filter = { column: column, values: items }\r\n let index = columnFilters.findIndex(item => item.column === filter.column)\r\n if (index >= 0) {\r\n columnFilters[index] = filter\r\n } else {\r\n columnFilters.push(filter)\r\n }\r\n\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, columnFilters: columnFilters })\r\n }\r\n\r\n handleExportClick(fileName: string) {\r\n this.setState({ loadingCsv: true })\r\n PoolMembersExportCsv(this.page$.value).subscribe(\r\n result => this.export(result, fileName),\r\n error => {\r\n toast.error(error)\r\n this.setState({ loadingCsv: false })\r\n },\r\n (() => this.setState({ loadingCsv: false }))\r\n )\r\n }\r\n\r\n export(csv: string, fileName: string) {\r\n const csvData = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, FormatTimestampFileName(fileName, \"csv\", new Date()), true)\r\n toast.success(\"CSV file downloaded successfully.\")\r\n }\r\n\r\n handlePrintClick() {\r\n PoolMembersPrint(this.state.selectedPrintRowIDs.map(row => row.PersonID), this.page$.value).subscribe(\r\n (data: string) => this.print(data),\r\n error => toast.error(error)\r\n )\r\n }\r\n\r\n print(base64pdf: string) {\r\n const pdfWindow = window.open(\"\")\r\n if (pdfWindow) {\r\n pdfWindow.document.write(\"\")\r\n }\r\n }\r\n\r\n handleChangePersonsStatusClick() {\r\n ChangePersonStatus(this.props.poolID, this.state.selectedChangeStatusRowIDs.map(row => row.PersonID), 0, 0).subscribe(\r\n data => {\r\n this.setState({ removing: false, selectedChangeStatusRowIDs: [] })\r\n this.refreshGrid()\r\n /*data.error\r\n ? toast.error(\"Person activation failed.\")\r\n : toast.success(data.message)*/\r\n toast.success(data)\r\n },\r\n error => toast.error(error)\r\n )\r\n }\r\n\r\n handlePrintSelectAllRowsChange = (e: React.ChangeEvent) => {\r\n const selectedPrintRowIDs = e.target.checked && this.state.data ? this.state.data.Records.map((row: PoolMemberRecord, i: number) => ({ PersonID: row.PersonID, ID: row.PrimaryID })) : []\r\n this.setState({ selectedPrintRowIDs: selectedPrintRowIDs })\r\n }\r\n\r\n changePersonRowSelection = (person: RandomPersonnelIdentifier, checked: boolean, stateFieldName: keyof RandomPersonnelGridStateSelectedPersons) => {\r\n let selectedRows = [...this.state[stateFieldName]]\r\n const index = selectedRows.findIndex(item => item.PersonID === person.PersonID && item.ID === person.ID)\r\n if (index > -1) {\r\n selectedRows = [...selectedRows.slice(0, index), ...selectedRows.slice(index + 1)]\r\n } else {\r\n selectedRows.push(person)\r\n }\r\n this.setState({ ...{}, [stateFieldName]: selectedRows })\r\n }\r\n\r\n handlePrintSelectRowChange = (person: RandomPersonnelIdentifier, checked: boolean) => {\r\n this.changePersonRowSelection(person, checked, \"selectedPrintRowIDs\")\r\n }\r\n\r\n handleChangePersonStatusSelectRowChange = (person: RandomPersonnelIdentifier, checked: boolean) => {\r\n this.changePersonRowSelection(person, checked, \"selectedChangeStatusRowIDs\")\r\n }\r\n\r\n handleChangePage(pageNumber: number) {\r\n this.page$.next({ ...this.page$.value, pageNumber: pageNumber })\r\n }\r\n\r\n handleChangeStatusFilter(status: StatusOptions) {\r\n this.setState({ status: status })\r\n /*const filters = this.page$.value.filters.filter(filter => filter.column !== \"Inactive\")\r\n if (status !== \"All\") {\r\n filters.push({ column: \"Inactive\", values: [status.toString()] })\r\n }*/\r\n const inactive = (status === StatusOptions.All) ? null : status === StatusOptions.Inactive\r\n this.page$.next({ ...this.page$.value, inactive: inactive/*, filters: filters*/ })\r\n }\r\n\r\n handleSearch = (field: string, text: string) => {\r\n this.page$.next({ ...this.page$.value, search: { field: field, text: text } })\r\n }\r\n handlePoolMembersCriteriaSave = (closeModal: boolean) => {\r\n this.setState({\r\n showPoolMembersCriteriaModal: !closeModal\r\n })\r\n this.page$.next({ ...this.page$.value, pageNumber: 1})\r\n this.props.onPoolUpdate()\r\n }\r\n\r\n handleAdvancedFiltersSave = (companies: AutoFilterCompany[], regions: AutoFilterRegion[], locations: AutoFilterLocation[], regulatoryModes: RegulatoryMode[], categories: EmployeeCategory[], closeModal: boolean) => {\r\n this.setState({\r\n selectedCompanies: companies,\r\n selectedRegions: regions,\r\n selectedLocations: locations,\r\n selectedRegulatoryModes: regulatoryModes,\r\n selectedCategories: categories,\r\n advancedFiltersModal: !closeModal\r\n })\r\n const filters = [\r\n { column: \"Company\", values: companies.map(item => item.Name) },\r\n { column: \"Region\", values: regions.map(item => item.Name) },\r\n { column: \"Location\", values: locations.map(item => item.Name) },\r\n { column: \"Reg\", values: regulatoryModes.map(item => item.Name) },\r\n { column: \"Category\", values: categories.map(item => item.Name) }\r\n ]\r\n this.page$.next({ ...this.page$.value, filters: filters })\r\n }\r\n\r\n handleAddIndividualSave = () => {\r\n this.setState({ addPoolMember: false })\r\n this.refreshGrid()\r\n }\r\n\r\n formatSearchString = (ID: string, value: string): string => ID === \"SSN\" ? FormatSSN(value) : value\r\n showEmployeeDetails = (data: PoolMemberRecord) => this.setState({ employeeDetails: true, details: data })\r\n refreshGrid = () => this.page$.next(this.page$.value)\r\n\r\n render() {\r\n const limitedAccess = this.props.isConsortium && this.props.isCompanyAdmin\r\n const headerColumns = this.visibleColumns().map((col: Column, i) => {\r\n const sort = this.page$.value.sort\r\n const filterValues = this.page$.value.filters.find(filter => filter.column === col.name)?.values || []\r\n const message = filterValues.length > 0 ?\r\n (<>\r\n
Some options in this list may be hidden
\r\n
because of the advanced filter configuration.
\r\n
Click this.setState({ advancedFiltersModal: true })}>filters or ADVANCED FILTERS button to configure
\r\n ) :\r\n <>\r\n const columnFilterValues = this.page$.value.columnFilters.find(filter => filter.column === col.filter)?.values || []\r\n return (\r\n \r\n {this.state.data && col.filter && col.filter in this.state.data && 0}\r\n filteredItems={columnFilterValues}\r\n sort={sort && sort.column === col.name ? sort.order === \"asc\" ? \"asc\" : \"desc\" : undefined}\r\n items={this.state.data[col.filter as keyof ColumnFilters] || []}\r\n message={message}\r\n onSort={(order?: string) => this.sortGrid(col.name, order)}\r\n onFilter={(items: string[]) => col.filter && this.filterGridColumn(col.filter, items)}\r\n />}\r\n {(!this.state.data || !col.filter) && (col.label || col.name)}\r\n \r\n )\r\n })\r\n const allPrintChecked = !this.state.loading && this.state.data?.Records?.length === this.state.selectedPrintRowIDs.length\r\n\r\n const { useFileImportForPoolMembership, userPermissions } = this.props\r\n // TODO: Some permissions are missed in AppState:\r\n // *userPermissions.CanUpdatePoolMembership\r\n // const manageIndividual = userPermissions && (userPermissions.CanManagePools || userPermissions.CanUpdatePoolMembership)\r\n const manageIndividual = userPermissions?.canManagePools\r\n return (\r\n <>\r\n {this.state.employeeDetails && this.state.details && (\r\n this.setState({ employeeDetails: false }, () => updated && this.refreshGrid())}\r\n />\r\n )}\r\n x.name != \"Manager\")}\r\n storeKey={StorageKey.PoolMembersGridColumns}\r\n onClose={() => this.setState({ customizeModal: false })}\r\n onSave={(columns) => this.setState({ columns: columns as Column[], customizeModal: false })}\r\n />\r\n {this.state.showPoolMembersCriteriaModal && (\r\n this.setState({ showPoolMembersCriteriaModal: false })}\r\n onSave={(close) => this.handlePoolMembersCriteriaSave(close)}\r\n />\r\n )}\r\n this.setState({ advancedFiltersModal: false })}\r\n onSave={(locations, regModes, close) =>\r\n this.handleAdvancedFiltersSave([], [], locations, regModes, [], close)\r\n }\r\n />\r\n {\r\n this.setState({ addPoolMember: false })}\r\n onAdd={this.handleAddIndividualSave}\r\n />\r\n }\r\n \r\n \r\n \r\n \r\n \r\n {this.state.status}\r\n \r\n \r\n this.handleChangeStatusFilter(StatusOptions.All)}\r\n variant=\"menu-item\"\r\n >\r\n All\r\n \r\n this.handleChangeStatusFilter(StatusOptions.Active)}\r\n variant=\"menu-item\"\r\n >\r\n Active\r\n \r\n this.handleChangeStatusFilter(StatusOptions.Inactive)}\r\n variant=\"menu-item\"\r\n >\r\n Inactive\r\n \r\n \r\n \r\n \r\n \r\n {(!useFileImportForPoolMembership || this.props.isConsortium) && !limitedAccess && (\r\n this.setState({ showPoolMembersCriteriaModal: true })}\r\n >\r\n Criteria\r\n \r\n )}\r\n \r\n \r\n this.setState({ advancedFiltersModal: true })}\r\n >\r\n ADVANCED FILTERS\r\n \r\n this.setState({ customizeModal: true })}\r\n >\r\n CUSTOMIZE\r\n \r\n this.handleExportClick(\"PoolMembers\")}\r\n disabled={!this.state.data?.Records?.length}\r\n spin={this.state.loadingCsv}\r\n disableOnSpin\r\n >\r\n EXPORT CSV\r\n \r\n {manageIndividual && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {headerColumns}\r\n {manageIndividual && (\r\n \r\n )}\r\n \r\n \r\n \r\n {this.state.loading && (\r\n \r\n \r\n \r\n )}\r\n {!this.state.loading &&\r\n (this.state.data && this.state.data.Records && this.state.data.Records.length > 0 ? (\r\n this.state.data.Records.map((row: PoolMemberRecord, i: number) => {\r\n const person = { PersonID: row.PersonID, ID: row.PrimaryID }\r\n return (\r\n \r\n \r\n {this.visibleColumns().map((col, i) =>\r\n this.renderCell(row, col.name as keyof PoolMemberRecord, i)\r\n )}\r\n {manageIndividual && (\r\n \r\n )}\r\n \r\n )\r\n })\r\n ) : (\r\n \r\n \r\n \r\n ))}\r\n \r\n
\r\n \r\n this.handlePrintClick()}\r\n className=\"float-right\"\r\n disabled={this.state.selectedPrintRowIDs.length === 0}\r\n >\r\n \r\n \r\n \r\n this.handleChangePersonsStatusClick()}\r\n disabled={this.state.selectedChangeStatusRowIDs.length === 0}\r\n >\r\n {this.state.status === StatusOptions.All && \"ACTIVATE/INACTIVATE\"}\r\n {this.state.status === StatusOptions.Active && \"INACTIVATE\"}\r\n {this.state.status === StatusOptions.Inactive && \"ACTIVATE\"}\r\n \r\n
\r\n \r\n
\r\n person.PersonID === item.PersonID && person.ID === item.ID\r\n )\r\n }\r\n onChange={this.handlePrintSelectRowChange}\r\n />\r\n \r\n person.PersonID === item.PersonID && person.ID === item.ID\r\n )\r\n }\r\n onChange={this.handleChangePersonStatusSelectRowChange}\r\n />\r\n
NO DATA FOUND
\r\n {this.state.data && !this.state.loading && (\r\n Total records: {this.state.data.Total}\r\n )}\r\n {this.state.data && (\r\n this.handleChangePage(pageNumber)}\r\n />\r\n )}\r\n \r\n
\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): { userPermissions: UserAccessSettings } {\r\n const userAccess = BuildUserAccess(state);\r\n return {\r\n userPermissions: userAccess\r\n }\r\n}\r\nconst ConnectedPoolMembersGrid = connect(mapStateToProps, null)(PoolMembersGrid)\r\nexport default ConnectedPoolMembersGrid\r\n","import * as React from \"react\"\r\nimport { Button, Col, Container, Form, Modal, Row, Spinner } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport { Subscription } from \"rxjs\"\r\nimport SearchBar from \"../SearchBar\"\r\nimport SearchField from \"../../api/SearchField\"\r\nimport FormatSSN from \"../../formatters/FormatSSN\"\r\nimport { PoolMemberCheck, PoolCompanyInfoGet, PoolMemberAdd } from \"../../api/Randoms/PoolMemberProcess\"\r\nimport { PoolCompanyInfo, PoolRegulatoryMode } from \"../../api/Randoms/RandomsModel/PoolCompanyInfo\"\r\nimport CheckPoolMember from \"../../api/Randoms/RandomsModel/CheckPoolMember\"\r\nimport PoolMemberData from \"../../api/Randoms/RandomsModel/PoolMemberData\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport AutoFilterRegion from \"../../api/Regions/Model/AutoFilterRegion\"\r\nimport AutoFilterRegionsGet from \"../../api/Regions/AutoFilterRegionsGet\"\r\nimport AutoFilterLocation from \"../../api/Location/LocationModel/AutoFilterLocation\"\r\nimport AutoFilterLocationsGet from \"../../api/Location/AutoFilterLocationsGet\"\r\nimport Category from \"../../api/LabService/LabServiceModel/EmployeeCategory\"\r\nimport EmployeeCategoriesGetObservable from \"../../api/LabService/EmployeeCategoriesGet\"\r\nimport CompanyInput from \"../FormattedInputs/CompanyInput\"\r\nimport { UpdateMethodID } from \"../../config/Constants\"\r\nimport { GetUserId } from \"../../storage/UserId\"\r\nimport StateSelect from \"../FormattedInputs/StateSelect\"\r\nimport State from \"../../api/OrderRequests/OrderRequestsModel/State\"\r\nimport { StateObservable } from \"../../api/OrderRequests/OrderRequestsConstraintGet\"\r\n\r\ninterface AddPoolMemberModalProps {\r\n show: boolean\r\n poolID: number\r\n accountType: string\r\n onAdd: () => void\r\n onCancel: () => void\r\n}\r\n\r\ninterface AddPoolMemberModalPersonnelCheckData {\r\n id?: string\r\n idType?: string\r\n isPersonnelFound?: boolean\r\n checkMember?: CheckPoolMember\r\n}\r\n\r\ninterface AddPoolMemberModalValidity {\r\n isCompanyValid: boolean\r\n isLastNameValid: boolean\r\n isFirstNameValid: boolean\r\n isStateValid: boolean\r\n}\r\n\r\nexport interface AddPoolMemberModalData {\r\n firstName: string\r\n lastName: string\r\n selectedCompany?: AutoFilterCompany\r\n selectedRegion?: AutoFilterRegion\r\n selectedLocation?: AutoFilterLocation\r\n selectedRegulatoryMode?: PoolRegulatoryMode\r\n selectedCategory?: Category\r\n state?: State\r\n stateCode?: string\r\n}\r\n\r\ninterface AddPoolMemberModalState extends AddPoolMemberModalData, AddPoolMemberModalValidity, AddPoolMemberModalPersonnelCheckData {\r\n isLoading: boolean\r\n isSaving: boolean\r\n showAddPersonnelPanel: boolean\r\n poolCompanyData?: PoolCompanyInfo\r\n isCompaniesLoading: boolean\r\n isRegionsLoading: boolean\r\n isLocationsLoading: boolean\r\n isCategoriesLoading: boolean\r\n companies: AutoFilterCompany[]\r\n regions: AutoFilterRegion[]\r\n locations: AutoFilterLocation[]\r\n regulatoryModes: PoolRegulatoryMode[]\r\n categories: Category[]\r\n states: State[]\r\n statesLoading: boolean\r\n state?: State\r\n stateCode?: string\r\n}\r\n\r\nexport default class AddPoolMemberModal extends React.Component {\r\n emptyData: AddPoolMemberModalData = {\r\n firstName: \"\",\r\n lastName: \"\",\r\n selectedRegulatoryMode: undefined,\r\n selectedCategory: undefined,\r\n state: undefined,\r\n stateCode: undefined\r\n }\r\n positiveValidity: AddPoolMemberModalValidity = { isCompanyValid: true, isLastNameValid: true, isFirstNameValid: true, isStateValid: true }\r\n personnelCheckEmptyData: AddPoolMemberModalPersonnelCheckData = { idType: undefined, id: undefined, isPersonnelFound: false, checkMember: undefined }\r\n state: AddPoolMemberModalState = {\r\n ...this.emptyData,\r\n ...this.positiveValidity,\r\n ...this.personnelCheckEmptyData,\r\n showAddPersonnelPanel: false,\r\n isLoading: false,\r\n isSaving: false,\r\n isCompaniesLoading: false,\r\n isRegionsLoading: false,\r\n isLocationsLoading: false,\r\n isCategoriesLoading: false,\r\n companies: [],\r\n regions: [],\r\n locations: [],\r\n regulatoryModes: [],\r\n categories: [],\r\n states: [],\r\n statesLoading: false\r\n }\r\n idTypes: SearchField[] = [\r\n { ID: \"AlternateID\", Name: \"Alternate ID\" },\r\n { ID: \"DriverID\", Name: \"Driver ID\" },\r\n { ID: \"EmployerID\", Name: \"Employer ID\" },\r\n { ID: \"SSN\", Name: \"SSN\" },\r\n { ID: \"FirstName\", Name: \"First Name\" },\r\n { ID: \"LastName\", Name: \"Last Name\" },\r\n ]\r\n\r\n companyTypeahead = React.createRef>()\r\n regionTypeahead = React.createRef>()\r\n locationTypeahead = React.createRef>()\r\n regulatoryModeTypeahead = React.createRef>()\r\n categoryTypeahead = React.createRef>()\r\n\r\n subscriptions = new Subscription()\r\n\r\n componentDidMount() {\r\n this.setState({ isCompaniesLoading: true })\r\n this.subscriptions.add(\r\n PoolCompanyInfoGet(this.props.poolID).subscribe(\r\n (data: PoolCompanyInfo) => {\r\n const companies: AutoFilterCompany[] = data.CompanyList.length > 0\r\n ? data.CompanyList.map((company) => {return { AccountID: company.ID, Name: company.Description, Description: company.Description, PrimaryIDType: \"SSN\" } as AutoFilterCompany})\r\n : [{ AccountID: data.CompanyID, Name: data.CompanyName, Description: data.CompanyName, PrimaryIDType: data.PrimaryIDType }]\r\n const selectedCompany = companies.length > 1 ? undefined : companies[0]\r\n this.setState({ companies: companies, selectedCompany: selectedCompany, regulatoryModes: data.RegulatoryModes, poolCompanyData: data, isCompaniesLoading: false, idType: selectedCompany?.PrimaryIDType || \"SSN\" })\r\n\r\n if (data.CompanyList.length === 1) {\r\n this.loadAllRegions(selectedCompany)\r\n this.loadAllLocations(selectedCompany)\r\n }\r\n\r\n if (data.HasRegModeBlock && data.RegulatoryModes.length === 1) {\r\n this.setState({ selectedRegulatoryMode: data.RegulatoryModes[0] })\r\n this.loadCategories(data.RegulatoryModes[0])\r\n }\r\n },\r\n () => this.setState({ isCompaniesLoading: false })\r\n ))\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n loadAllRegions = (company?: AutoFilterCompany) => {\r\n this.setState({ isRegionsLoading: true })\r\n this.subscriptions.add(\r\n AutoFilterRegionsGet(company?.AccountID || 0, \"\").subscribe(\r\n (data: AutoFilterRegion[]) => this.setState({ regions: data, isRegionsLoading: false }),\r\n () => this.setState({ isRegionsLoading: false })\r\n )\r\n )\r\n }\r\n\r\n loadAllLocations = (company?: AutoFilterCompany, region?: AutoFilterRegion) => {\r\n this.setState({ isLocationsLoading: true })\r\n this.subscriptions.add(\r\n AutoFilterLocationsGet(company?.AccountID || 0, 0, \"\").subscribe(\r\n (data: AutoFilterLocation[]) => this.setState({ locations: data, isLocationsLoading: false }),\r\n () => this.setState({ isLocationsLoading: false })\r\n )\r\n )\r\n }\r\n\r\n loadCategories = (regulatoryMode: PoolRegulatoryMode) => {\r\n this.setState({ isCategoriesLoading: true })\r\n this.subscriptions.add(\r\n EmployeeCategoriesGetObservable(regulatoryMode.ID).subscribe(\r\n categories => this.setState({ categories: categories, isCategoriesLoading: false }),\r\n () => this.setState({ isCategoriesLoading: false })\r\n )\r\n )\r\n }\r\n\r\n loadStates = () => {\r\n this.setState({ statesLoading: true })\r\n this.subscriptions.add(\r\n StateObservable().subscribe(\r\n (results: State[]) => this.setState({ states: results, statesLoading: false }),\r\n () => { this.setState({ statesLoading: false }) }\r\n )\r\n )\r\n }\r\n\r\n savePoolMember = () => {\r\n const primaryIDType = this.state.idType || \"\"\r\n const id = this.state.id || \"\"\r\n const params: PoolMemberData = {\r\n PoolID: this.props.poolID,\r\n Employer: primaryIDType === \"EmployerID\" ? id : \"\",\r\n Driver: primaryIDType === \"DriverID\" ? id : \"\",\r\n SSN: primaryIDType === \"SSN\" ? id : \"\",\r\n Alternate: primaryIDType === \"AlternateID\" ? id : \"\",\r\n PrimaryIDType: primaryIDType,\r\n CompanyPrimaryID: primaryIDType,\r\n PrimaryIDValue: id,\r\n CompanyID: this.state.selectedCompany?.AccountID || 0,\r\n Company: this.state.selectedCompany?.Name || \"\",\r\n RegionID: this.state.selectedRegion?.Code || \"\",\r\n Region: this.state.selectedRegion?.Name || \"\",\r\n LocationID: this.state.selectedLocation?.AccountID || 0,\r\n Location: this.state.selectedLocation?.Name || \"\",\r\n FirstName: this.state.firstName.replace(/^\\s+|\\s+$/gm, \"\").replace(/\\s+/g, \" \"),\r\n LastName: this.state.lastName.replace(/^\\s+|\\s+$/gm, \"\").replace(/\\s+/g, \" \"),\r\n ConsortiumPoolCode: \"\",\r\n IsConsortiumPool: \"\",\r\n EmployeeCategory: this.state.selectedCategory?.Name || null,\r\n EmployeeCategoryID: this.state.selectedCategory?.EmployeeCategoryID || null,\r\n Inactive: this.state.checkMember?.Inactive || false,\r\n PersonID: this.state.checkMember?.PersonID || \"\",\r\n RegulatoryMode: this.state.selectedRegulatoryMode?.Description || null,\r\n RegulatoryModeID: this.state.selectedRegulatoryMode?.ID || null,\r\n TerminationDate: null,\r\n UpdateMethodID: UpdateMethodID,\r\n UserLoginID: GetUserId(),\r\n searchString: id,\r\n DriverLICStateOfIssue: this.state.stateCode || \"\"\r\n }\r\n\r\n if (this.state.poolCompanyData) {\r\n params.ConsortiumPoolCode = this.state.poolCompanyData.ConsortiumPoolCode;\r\n params.IsConsortiumPool = this.state.poolCompanyData.IsConsortiumPool;\r\n }\r\n\r\n this.setState({ isSaving: true })\r\n this.subscriptions.add(\r\n PoolMemberAdd(params).subscribe(\r\n ((result) => {\r\n this.setState({ isSaving: false })\r\n if (Number(result) > 0) {\r\n toast.success(\"Added member successfully.\")\r\n this.resetState()\r\n this.props.onAdd()\r\n } else {\r\n toast.error(result)\r\n }\r\n }),\r\n error => toast.error(error)\r\n )\r\n )\r\n }\r\n\r\n isValid = (state: AddPoolMemberModalValidity) => state.isCompanyValid && state.isLastNameValid && state.isFirstNameValid && state.isStateValid\r\n validateState = () => {\r\n if (this.state.idType !== \"DriverID\") {\r\n return true\r\n }\r\n if (this.state.stateCode && this.state.stateCode?.trim().length > 0) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n handleFormSubmit = (e: React.FormEvent) => {\r\n e.preventDefault()\r\n const changes: AddPoolMemberModalValidity = {\r\n isCompanyValid: !!this.state.selectedCompany,\r\n isLastNameValid: this.state.lastName.trim().length > 0,\r\n isFirstNameValid: this.state.firstName.trim().length > 0,\r\n isStateValid: this.validateState()\r\n }\r\n const isValid = this.isValid(changes)\r\n\r\n if (isValid) {\r\n this.savePoolMember()\r\n } else {\r\n this.setState(changes)\r\n }\r\n }\r\n\r\n resetState = () => this.setState({ ...this.emptyData, ...this.positiveValidity, ...this.personnelCheckEmptyData, showAddPersonnelPanel: false })\r\n\r\n handleClose = () => {\r\n this.resetState()\r\n this.props.onCancel()\r\n }\r\n\r\n handleAddMember = () => {\r\n if (this.state.idType === \"DriverID\") {\r\n this.loadStates()\r\n }\r\n this.setState({ showAddPersonnelPanel: true })\r\n }\r\n\r\n handleMemberSearch = (field: string, text: string) => {\r\n text = text.replace(/\\s+/g, \"\")\r\n if (field.length === 0 || text.length === 0) {\r\n toast.error(\"Please enter proper search criteria.\")\r\n return\r\n }\r\n if (field === \"SSN\") {\r\n text = text.replace(/\\D/g, \"\")\r\n if (text.length !== 9) {\r\n toast.error(\"Please enter a valid SSN.\")\r\n return\r\n }\r\n }\r\n this.setState({ isLoading: true })\r\n\r\n this.subscriptions.add(\r\n PoolMemberCheck(this.props.poolID, this.props.accountType, text, field).subscribe(\r\n (result: CheckPoolMember) => {\r\n toast.success(result.Message)\r\n result.ID ? this.setState({ firstName: result.FirstName, lastName: result.LastName, id: text, idType: field, isPersonnelFound: true, isLoading: false, checkMember: result }) : this.setState({ isPersonnelFound: false, isLoading: false })\r\n },\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ isLoading: false, checkMember: undefined })\r\n if (error?.errorData?.message) {\r\n this.setState({ isPersonnelFound: true, id: text, idType: field })\r\n }\r\n }\r\n )\r\n )\r\n }\r\n\r\n formatSearchString = (ID: string, value: string): string => {\r\n return ID === \"SSN\" ? FormatSSN(value) : value\r\n }\r\n\r\n handleCompanyChange = (companies: AutoFilterCompany[]) => {\r\n if (companies.length > 0) {\r\n this.setState({ selectedCompany: companies[0], isCompanyValid: true, selectedRegion: undefined, selectedLocation: undefined, })\r\n this.loadAllRegions(companies[0])\r\n this.loadAllLocations(companies[0], undefined)\r\n } else {\r\n this.setState({ isRegionsLoading: false, regions: [], locations: [], selectedCompany: undefined, selectedRegion: undefined, selectedLocation: undefined, isCompanyValid: false, checkMember: undefined })\r\n }\r\n }\r\n\r\n handleRegionChange = (regions: AutoFilterRegion[]) => {\r\n if (regions.length > 0) {\r\n this.setState({ selectedRegion: regions[0], selectedLocation: undefined })\r\n this.loadAllLocations(this.state.selectedCompany, regions[0])\r\n } else {\r\n this.setState({ isLocationsLoading: false, locations: [], selectedRegion: undefined, selectedLocation: undefined })\r\n }\r\n }\r\n handleLocationChange = (locations: AutoFilterLocation[]) => this.setState({ selectedLocation: locations[0] })\r\n handleRegulatoryModeChange = (items: PoolRegulatoryMode[]) => {\r\n if (items.length > 0) {\r\n this.setState({ selectedRegulatoryMode: items[0], selectedCategory: undefined })\r\n this.loadCategories(items[0])\r\n } else {\r\n this.setState({ categories: [], selectedRegulatoryMode: undefined, selectedCategory: undefined })\r\n }\r\n }\r\n handleCategoryChange = (items: Category[]) => this.setState({ selectedCategory: items[0] })\r\n handleStateChange = (state: State) => this.setState({ state: state, stateCode: state.Abbreviation, isStateValid: state.Abbreviation.length > 0 })\r\n\r\n render() {\r\n return \r\n \r\n ADD INDIVIDUAL\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { Button, Spinner, Table } from \"react-bootstrap\"\r\nimport { format, parseISO } from \"date-fns\"\r\nimport { BehaviorSubject, concat, of, Subscription } from \"rxjs\"\r\nimport { distinctUntilChanged, switchMap, map } from \"rxjs/operators\"\r\nimport TablePagination from \"../../TablePagination\"\r\nimport RandomSelectionList from \"../RandomSelectionList\"\r\nimport GetPoolSelectionHistoryList from \"../../../api/Randoms/PoolSelectionHistoryGet\"\r\nimport PoolSelectionHistory, { PoolSelectionHistoryRow, createPoolSelectionRow } from \"../../../api/Randoms/RandomsModel/PoolSelectionHistoryRow\"\r\n\r\ninterface PoolSelectionSearchParams {\r\n pageNumber: number\r\n poolId: number\r\n}\r\n\r\nconst PageSize = 5\r\n\r\ninterface SelectionHistoryGridProps {\r\n poolId: number\r\n poolName: string\r\n poolProgramId: number\r\n companyId: number\r\n}\r\n\r\ninterface SelectionHistoryGridState {\r\n loading: boolean\r\n data?: PoolSelectionHistory\r\n selectionListModal: boolean\r\n poolSelection?: PoolSelectionHistoryRow\r\n}\r\n\r\nexport default class SelectionHistoryGrid extends React.PureComponent {\r\n state: SelectionHistoryGridState = {\r\n loading: false,\r\n selectionListModal: false,\r\n data: undefined\r\n }\r\n\r\n page$ = new BehaviorSubject({\r\n pageNumber: 1,\r\n poolId: this.props.poolId\r\n })\r\n\r\n pageSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.pageSubscription = this.page$.pipe(\r\n distinctUntilChanged(),\r\n switchMap(params => concat(\r\n of({ loading: true }),\r\n GetPoolSelectionHistoryList(this.props.poolId, this.props.poolProgramId, PageSize, params.pageNumber).pipe(\r\n map((result: PoolSelectionHistory) => ({ data: result, loading: false })))\r\n ))\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: PoolSelectionHistory }) => {\r\n if (newState.data) {\r\n this.setState({ loading: newState.loading, data: newState.data })\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n },\r\n () => {\r\n this.setState({ loading: false })\r\n }\r\n )\r\n }\r\n\r\n componentDidUpdate(prevProps: SelectionHistoryGridProps, prevState: SelectionHistoryGridState) {\r\n if (prevProps.poolProgramId !== this.props.poolProgramId) {\r\n this.page$.next({ poolId: this.props.poolId, pageNumber: 1 })\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n }\r\n\r\n pageChanged = (pageNumber: number) => {\r\n this.page$.next({ ...this.page$.value, pageNumber: pageNumber })\r\n }\r\n\r\n convertDate = (date: string) => {\r\n if (date) {\r\n return format(parseISO(date), \"MM/dd/yyyy\")\r\n } else {\r\n return \"\"\r\n }\r\n }\r\n\r\n renderRows = () => {\r\n if (this.state.data && this.state.data.Records && this.state.data.Records.length) {\r\n return this.state.data.Records.map((row: PoolSelectionHistoryRow, i: number) =>\r\n \r\n \r\n {}\r\n \r\n {row.PoolSize}\r\n {this.convertDate(row.SelectionDate)}\r\n {row.DrugSelected}\r\n {row.AlcoholSelected}\r\n {row.DrugExtra}\r\n {row.AlcoholExtra}\r\n {row.DrugPending}\r\n {row.AlcoholPending}\r\n {row.DrugNotComplete}\r\n {row.AlcoholNotComplete}\r\n {row.DrugCompleted}\r\n {row.AlcoholCompleted}\r\n )\r\n } else {\r\n return NO DATA FOUND\r\n }\r\n }\r\n\r\n showSelectionList = (poolSelection: PoolSelectionHistoryRow) => this.setState({ selectionListModal: true, poolSelection: poolSelection })\r\n\r\n hideSelectionList = () => this.setState({ selectionListModal: false, poolSelection: undefined })\r\n\r\n render() {\r\n return <>\r\n
TESTING PERIOD BREAKDOWN
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.state.loading ?\r\n \r\n \r\n : this.renderRows()\r\n }\r\n \r\n
PERIODPOOL SIZESELECTION DATETESTS SELECTEDEXTRA TESTSTESTS PEND COLLTESTS INCMPLTESTS COMPLETED
DRUGALCOHOLDRUGALCOHOLDRUGALCOHOLDRUGALCOHOLDRUGALCOHOL
\r\n \r\n
\r\n {this.state.data && }\r\n {\r\n this.state.selectionListModal && this.state.poolSelection &&\r\n \r\n }\r\n\r\n \r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport PoolProgramYear from \"./RandomsModel/PoolProgramYear\"\r\nimport PoolSelectionHistory from \"./RandomsModel/PoolSelectionHistoryRow\"\r\n\r\n\r\n\r\nexport default function GetPoolSelectionHistoryList(poolId: number, poolProgramId: number, pageSize:number, pageNumber: number,): Observable {\r\n const requestBody: string = new URLSearchParams({\r\n poolId: poolId.toString(),\r\n poolProgramId: poolProgramId.toString(),\r\n pageSize: pageSize.toString(),\r\n pageNumber: pageNumber.toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"RandomTest/PoolSelectionHistoryList?\" + requestBody)\r\n}\r\n\r\n\r\nexport function GetPoolPrograms(poolId: number, count: number): Observable {\r\n const requestBody: string = new URLSearchParams({\r\n poolId: poolId.toString(),\r\n count: count.toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"RandomTest/GetPoolPrograms?\" + requestBody)\r\n}\r\n","import PoolSelectionRow from \"./PoolSelectionRow\"\r\n\r\nexport interface PoolSelectionHistoryRow {\r\n SelectionInterval: string\r\n SelectionMethod: string\r\n Period: string\r\n PoolSize: number\r\n SelectionDate: string\r\n DrugSelected: number \r\n AlcoholSelected: number \r\n DrugExtra: number\r\n AlcoholExtra: number\r\n DrugCompleted: number\r\n AlcoholCompleted: number\r\n DrugNotComplete: number\r\n AlcoholNotComplete: number\r\n DrugPending: number\r\n AlcoholPending: number\r\n PoolSelectionID: number\r\n UseCrews: number\r\n\r\n }\r\n\r\n\r\nexport default interface PoolSelectionHistory {\r\n Records: PoolSelectionHistoryRow[]\r\n Pages: number\r\n Total: number\r\n}\r\n\r\nexport function createPoolSelectionRow(hstRow : PoolSelectionHistoryRow) : PoolSelectionRow\r\n{\r\n\r\n let result = {PoolSelectionID: hstRow.PoolSelectionID,\r\n Period: hstRow.Period,\r\n TimePeriod: \"\",\r\n PoolSize: hstRow.PoolSize,\r\n SelectionDate: hstRow.SelectionDate,\r\n DrugSelected: hstRow.DrugSelected,\r\n AlcoholSelected: hstRow.AlcoholSelected,\r\n DrugExtra: hstRow.DrugExtra,\r\n AlcoholExtra: hstRow.AlcoholExtra,\r\n DrugCompleted: hstRow.DrugCompleted,\r\n AlcoholCompleted: hstRow.AlcoholCompleted\r\n }\r\n return result\r\n}\r\n","import * as React from \"react\"\r\nimport { Container, Row, Col, Spinner, Form } from \"react-bootstrap\"\r\nimport { defaults } from \"react-chartjs-2\"\r\nimport \"chartjs-plugin-datalabels\"\r\nimport { ChartOptions } from \"chart.js\"\r\nimport { Subject, Subscription } from \"rxjs\"\r\nimport { PoolStatisticsDetailsByProgram } from \"../../../api/Randoms/PoolStatisticsDetailsGet\"\r\nimport PoolStatisticsDetails from \"../../../api/Randoms/RandomsModel/PoolStatisticsDetails\"\r\nimport { ExcusedReport, ExcusedReportGenerate } from \"../../../api/Reports/WorkforceReport\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport { toast } from \"react-toastify\"\r\nimport printPdf from \"../../../utils/printPdf\"\r\nimport PoolProgramYear from \"../../../api/Randoms/RandomsModel/PoolProgramYear\"\r\nimport PoolSelectionHistoryRow from \"../../../api/Randoms/RandomsModel/PoolSelectionHistoryRow\"\r\nimport { GetPoolPrograms } from \"../../../api/Randoms/PoolSelectionHistoryGet\"\r\nimport SelectionHistoryGrid from \"./SelectionHistoryGrid\"\r\n\r\ninterface PoolHistoryProps {\r\n poolId: number\r\n poolName: string\r\n isConsortium: boolean\r\n currentCompany: number\r\n allowExcusedReport: boolean\r\n}\r\n\r\ninterface PoolHistoryState {\r\n poolProgramsLoading: boolean\r\n poolProgramsYear: PoolProgramYear[],\r\n selectedPoolProgramId: number,\r\n selectedPoolYear: number\r\n statisticsLoading: boolean\r\n statistics?: PoolStatisticsDetails\r\n historyLoading: boolean\r\n selectionHistory: PoolSelectionHistoryRow[]\r\n\r\n}\r\n\r\nconst options: ChartOptions = {\r\n maintainAspectRatio: false,\r\n layout: {\r\n padding: {\r\n right: 50\r\n }\r\n },\r\n legend: {\r\n position: 'bottom',\r\n labels: {\r\n usePointStyle: true,\r\n boxWidth: 10,\r\n fontSize: 16\r\n }\r\n },\r\n plugins: {\r\n datalabels: {\r\n color: '#000',\r\n display: true\r\n }\r\n },\r\n scales: {\r\n yAxes: [{ ticks: { fontSize: 16 } }],\r\n xAxes: [{ ticks: { min: 0 } }]\r\n }\r\n}\r\n\r\ndefaults.global.defaultFontFamily = '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"'\r\ndefaults.global.defaultFontColor = '#212529'\r\n\r\nexport default class PoolHistory extends React.PureComponent {\r\n state: PoolHistoryState = {\r\n\r\n poolProgramsLoading: false,\r\n poolProgramsYear: [],\r\n selectedPoolProgramId: 0,\r\n selectedPoolYear: 0,\r\n statisticsLoading: false,\r\n statistics: undefined,\r\n historyLoading: false,\r\n selectionHistory: []\r\n }\r\n\r\n poolProgramsSubscription = new Subscription()\r\n poolStatisticSubscription = new Subscription()\r\n subscriptions = new Subscription()\r\n company$ = new Subject()\r\n\r\n componentDidMount() {\r\n this.loadPoolProgramsYear()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.poolProgramsSubscription && this.poolProgramsSubscription.unsubscribe()\r\n this.poolStatisticSubscription && this.poolStatisticSubscription.unsubscribe()\r\n }\r\n\r\n startLoading() {\r\n this.setState({\r\n poolProgramsLoading: true,\r\n selectedPoolProgramId: 0,\r\n selectedPoolYear: 0,\r\n poolProgramsYear: [],\r\n statisticsLoading: false,\r\n statistics: undefined,\r\n historyLoading: false,\r\n selectionHistory: []\r\n })\r\n }\r\n\r\n loadPoolProgramsYear() {\r\n this.startLoading()\r\n this.poolProgramsSubscription && this.poolProgramsSubscription.unsubscribe()\r\n this.poolProgramsSubscription = GetPoolPrograms(this.props.poolId, 5).subscribe(\r\n (data: PoolProgramYear[]) => {\r\n const poolProgramId = (data.length > 0) ? data[0].PoolProgramID : 0\r\n const poolYear = (data.length > 0) ? data[0].Year : 0\r\n this.setState({\r\n poolProgramsYear: data,\r\n selectedPoolProgramId: poolProgramId,\r\n selectedPoolYear: poolYear,\r\n })\r\n this.loadPoolStatistics(poolProgramId)\r\n },\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n },\r\n () => {\r\n this.setState({ poolProgramsLoading: false })\r\n\r\n }\r\n )\r\n }\r\n\r\n loadPoolStatistics(poolProgramId: number) {\r\n this.setState({\r\n statisticsLoading: true,\r\n statistics: undefined,\r\n })\r\n\r\n this.poolStatisticSubscription && this.poolStatisticSubscription.unsubscribe()\r\n this.poolStatisticSubscription = PoolStatisticsDetailsByProgram(this.props.poolId, poolProgramId).subscribe(\r\n (data: PoolStatisticsDetails) => {\r\n this.setState({\r\n statistics: data\r\n })\r\n },\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n },\r\n () => {\r\n this.setState({ statisticsLoading: false })\r\n\r\n }\r\n )\r\n }\r\n\r\n onPoolProgramSelect(event: React.ChangeEvent) {\r\n if (this.state.poolProgramsYear.length === 0) {\r\n return\r\n }\r\n const poolProgramId = Number(event.target.value)\r\n const poolYearItem = this.state.poolProgramsYear.find(item => item.PoolProgramID === poolProgramId)\r\n const poolYear = poolYearItem ? poolYearItem.Year : 0\r\n this.setState({ selectedPoolProgramId: poolProgramId, selectedPoolYear: poolYear })\r\n this.loadPoolStatistics(poolProgramId)\r\n }\r\n\r\n runExcusedReport = () => {\r\n const params: ExcusedReport = {\r\n AccountID: 0,//this.state.selectedCompany,\r\n PoolID: this.props.poolId,\r\n PoolName: this.props.poolName\r\n }\r\n\r\n this.subscriptions.add(\r\n ExcusedReportGenerate(params).subscribe(\r\n (base64pdf: string) => printPdf(base64pdf),\r\n (error) => toast.error(FormatError(error))\r\n )\r\n )\r\n }\r\n\r\n render() {\r\n const { statistics, selectedPoolProgramId, selectedPoolYear, poolProgramsYear, poolProgramsLoading } = this.state\r\n let labels = ['ESTIMATED TESTS REQUIRED', 'TOTAL TESTS COMPLETED', 'TOTAL TESTS PENDING COLLECTION'];\r\n let dataDrug = [statistics?.TotalTestsRequiredDrug, statistics?.TotalTestsCompletedDrug, statistics?.TotalTestsPendingDrug]\r\n let dataAlco = [statistics?.TotalTestsRequiredAlcohol, statistics?.TotalTestsCompletedAlcohol, statistics?.TotalTestsPendingAlcohol]\r\n const totalTestsRequired = (statistics?.TotalTestsRequiredDrug || 0) + (statistics?.TotalTestsRequiredAlcohol || 0)\r\n const totalEstimatedComplete= (statistics?.TotalEstimatedCompleteDrug || 0) + (statistics?.TotalEstimatedCompleteAlcohol || 0)\r\n \r\n const targetDrug = (statistics?.RateOrFixed == 1) ? (statistics?.TargetDrug || 0) : (statistics?.TotalTestsRequiredDrug || 0)\r\n const targetAlcohol = (statistics?.RateOrFixed == 1) ? (statistics?.TargetAlcohol || 0) : (statistics?.TotalTestsRequiredAlcohol || 0)\r\n\r\n const actualDrug = statistics?.ActualDrug || 0\r\n const actualAlcohol = statistics?.ActualAlcohol || 0\r\n\r\n return <>\r\n \r\n {!poolProgramsLoading && \r\n PROGRAM YEAR:\r\n {\r\n ) => this.onPoolProgramSelect(e)}>\r\n {poolProgramsYear.map(item => )}\r\n \r\n }\r\n PROGRAM START DATE: {\"01/01/\" + selectedPoolYear}\r\n PROGRAM END DATE: {\"12/31/\" + selectedPoolYear}\r\n }\r\n \r\n \r\n {this.state.selectedPoolProgramId > 0 && }\r\n \r\n \r\n \r\n \r\n
TESTING TOTALS
\r\n \r\n \r\n PROGRAM YEAR-TO-DATE:\r\n \r\n TOTAL # TESTS REQUIRED:\r\n {totalTestsRequired}\r\n \r\n \r\n \r\n \r\n TOTAL ESTIMATED COMPLETE:\r\n {totalEstimatedComplete}\r\n \r\n \r\n \r\n \r\n DIFFERENCE:\r\n {totalTestsRequired - totalEstimatedComplete}\r\n \r\n\r\n \r\n TARGET DRUG:\r\n {targetDrug}{statistics?.RateOrFixed === 1 && %}\r\n TARGET ALCOHOL:\r\n {targetAlcohol}{statistics?.RateOrFixed === 1 && %}\r\n \r\n \r\n ACTUAL DRUG:\r\n {actualDrug}\r\n ACTUAL ALCOHOL:\r\n {actualAlcohol}\r\n \r\n \r\n \r\n
\r\n {this.state.statisticsLoading && }\r\n {this.state.statistics &&\r\n \r\n \r\n \r\n }\r\n
\r\n \r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { Tab, Tabs, Row, Col, Modal } from \"react-bootstrap\"\r\nimport PoolGridRow from \"../../../api/Randoms/RandomsModel/PoolGridRow\"\r\nimport PoolStatistics from \"./PoolStatistics\"\r\nimport PoolGeneralInfo from \"./PoolGeneralInfo\"\r\nimport ImportPoolMembers from \"./ImportPoolMembers\"\r\nimport RunRandom from \"./RunRandom\"\r\nimport CloseProgramInterval from \"./CloseProgramInterval\"\r\nimport PoolMembersGrid from \"./PoolMembersGrid\"\r\nimport { AppState } from \"../../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport { BuildUserAccess } from \"../../../authentication/BuildUserAccess\"\r\nimport { GetSelectedAssignedClinic } from \"../../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport { isCompanyAdmin, isPortalAdmin } from \"../../../authentication/isAdminRole\"\r\nimport PoolData from \"../../../api/Randoms/RandomsModel/PoolData\"\r\nimport { Subscription } from \"rxjs\"\r\nimport PoolGeneralInfoGetObservable from \"../../../api/Randoms/PoolGeneralInfoGet\"\r\nimport { toast } from \"react-toastify\"\r\nimport PoolHistory from \"./PoolHistory\"\r\nimport PoolNotifications from \"../Notification/PoolNotifications\"\r\n\r\nexport interface PoolDetailsModalProps {\r\n details: PoolGridRow\r\n onHide: () => void\r\n isConsortium: boolean\r\n}\r\nexport interface PoolDetailsModalAppStateProps {\r\n showRunRandom: boolean\r\n showPersonnelImport: boolean\r\n companyID: number\r\n isCompanyAdmin?: boolean\r\n isPortalAdmin?: boolean\r\n}\r\n\r\ninterface PoolDetailsModalState {\r\n currentTab: string\r\n data?: PoolData\r\n}\r\n\r\nconst StatisticsKey = \"statistics\"\r\nconst HistoryKey = \"pool_history\"\r\nconst GeneralInformationKey = \"general_information\"\r\nconst PoolMembersKey = \"pool_members\"\r\nconst RunRandomKey = \"run_random\"\r\nconst CloseProgramIntervalKey = \"close_program_interval\"\r\nconst NotificationKey = \"notification\"\r\n\r\nexport class PoolDetailsModal extends React.PureComponent {\r\n state: PoolDetailsModalState = {\r\n currentTab: StatisticsKey\r\n }\r\n\r\n subscriptions = new Subscription()\r\n\r\n componentDidMount() {\r\n this.loadPoolData()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n loadPoolData = () => {\r\n this.subscriptions.add(\r\n PoolGeneralInfoGetObservable(this.props.details.PoolID).subscribe(\r\n (data: PoolData) => this.setState({ data: data }),\r\n (error: string) => toast.error(error)\r\n ))\r\n }\r\n\r\n handleRunFinish = () => this.setState({ currentTab: StatisticsKey })\r\n\r\n onPoolDetailsUpdate = () => {\r\n this.setState({ data: undefined })\r\n this.loadPoolData()\r\n }\r\n\r\n render() {\r\n const { details, onHide, isConsortium, isCompanyAdmin, isPortalAdmin } = this.props\r\n const limitedCons = isConsortium && isCompanyAdmin\r\n // TODO: Some permissions are missed in AppState:\r\n // *userPermissions.CanRunRandoms\r\n // *userPermissions.CanUpdatePoolMembership\r\n // const showRunRandom = userPermissions && (userPermissions.CanRunRandoms || userPermissions.CanManagePools)\r\n // const showPersonnelImport = userPermissions && (userPermissions.CanManagePersonnel || userPermissions.CanUpdatePoolMembership)\r\n\r\n return (\r\n \r\n \r\n {isConsortium ? \"CONSORTIUM DETAILS\" : \"POOL DETAILS\"}\r\n \r\n \r\n
\r\n \r\n \r\n

{details.Name} ({details.ID})

\r\n { eventKey && this.setState({ currentTab: eventKey }) }}>\r\n \r\n {StatisticsKey === this.state.currentTab && }\r\n \r\n {!isConsortium && \r\n {HistoryKey === this.state.currentTab && }\r\n }\r\n {!limitedCons && \r\n {GeneralInformationKey === this.state.currentTab && !!this.state.data && }\r\n }\r\n \r\n {PoolMembersKey === this.state.currentTab && }\r\n \r\n {this.props.showRunRandom && !limitedCons && \r\n {RunRandomKey === this.state.currentTab && }\r\n }\r\n {this.props.showPersonnelImport && !limitedCons && \r\n \r\n }\r\n {!limitedCons && \r\n {CloseProgramIntervalKey === this.state.currentTab && !!this.state.data && }\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): PoolDetailsModalAppStateProps {\r\n const userAccess = BuildUserAccess(state)\r\n return {\r\n showRunRandom: userAccess.canManagePools || userAccess.CanManageConsortiumPools,\r\n showPersonnelImport: userAccess.canManagePersonnel || userAccess.CanManageConsortiumPools,\r\n companyID: GetSelectedAssignedClinic(state)?.AccountID || 0,\r\n isCompanyAdmin: isCompanyAdmin(state),\r\n isPortalAdmin: isPortalAdmin(state)\r\n }\r\n}\r\nconst ConnectedPoolDetailsModal = connect(mapStateToProps)(PoolDetailsModal)\r\nexport default ConnectedPoolDetailsModal\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport PoolGridData from \"./RandomsModel/PoolGridData\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport { Filter, Sort } from \"../GridRequest\"\r\n\r\nexport function PoolGridGetObservable(pageNumber: number, pageSize: number, sort: Sort, filters: Filter[], search: { field: string, text: string }, isConsortium: boolean = false) {\r\n const requestBody: string = JSON.stringify({\r\n BatchPool: \"\",\r\n BySel: search.field,\r\n Filters: {\r\n ID: filters.find(filter => filter.column === \"ID\")?.values || [],\r\n Name: filters.find(filter => filter.column === \"Name\")?.values || [],\r\n LastMemberImport: filters.find(filter => filter.column === \"LastUpdate\")?.values.map((value) => FormatDate(value)) || [],\r\n LastSelection: filters.find(filter => filter.column === \"LastSelection\")?.values || [],\r\n ReadyToRun: filters.find(filter => filter.column === \"ReadyToRunDate\")?.values || [], // NOTE: this mapping matches 1.0\r\n ReadyToRunDate: [],//filters.find(filter => filter.column === \"ReadyToRunDate\")?.values || [],\r\n SelectionInterval: filters.find(filter => filter.column === \"SelectionInterval\")?.values || [],\r\n },\r\n MatchSel: \"Partial\",\r\n PageNumber: pageNumber,\r\n PageSize: pageSize,\r\n SortGrid: { SortColumn: sort.column, SortOrder: sort.order.toUpperCase() === \"DESC\" ? \"DSC\" : sort.order.toUpperCase() },\r\n SrchFor: search.text,\r\n TypeSel: \"\",\r\n IsConsortium: isConsortium\r\n })\r\n\r\n return ObservableFromFetch(\"RandomTest/GetPoolGrid\", requestBody)\r\n}\r\n\r\nexport function PoolGridCsvGet(filters: Filter[], search: { field: string, text: string }, isConsortium: boolean = false) {\r\n const requestBody: string = JSON.stringify({\r\n BatchPool: \"\",\r\n BySel: search.field,\r\n Filters: {\r\n // Next 4 filters always empty in 1.0: in code we pass array but the array is never filled up\r\n // 1.0 code: src\\app\\pages\\random-testing-pools\\random-testing-pools.component.ts, method \"exportCSV\":\r\n // this.printMemberObj['Filters'].LastMemberImport = lastUpdateArray;\r\n // this.printMemberObj['Filters'].LastSelection = this.selectedLastselectionsList;\r\n // this.printMemberObj['Filters'].ReadyToRun = this.selectedReadytorunList;\r\n // this.printMemberObj['Filters'].SelectionInterval = this.selectedIntervalList;\r\n LastMemberImport: [],\r\n LastSelection: [],\r\n ReadyToRun: [],\r\n SelectionInterval: []\r\n },\r\n MatchSel: \"Partial\",\r\n SrchFor: search.text,\r\n TypeSel: \"\",\r\n IsConsortium: isConsortium\r\n })\r\n\r\n return ObservableFromFetch(\"RandomTest/ExportRandomRecords\", requestBody)\r\n}\r\n\r\nexport function PoolGridPrint(values: number[], filters: { column: string, values: string[] }[], search: { field: string, text: string }, isConsortium: boolean = false) {\r\n const requestBody: string = JSON.stringify({\r\n ContactID: 0, // TODO: VALUESTORAGE.CONTACT_ID Verify parameter value\r\n PoolID: values,\r\n BatchPool: \"\",\r\n BySel: search.field ? search.field : \"All\",\r\n Filters: {\r\n // Next 4 filters always empty in 1.0: in code we pass array but the array is never filled up\r\n // 1.0 code: src\\app\\pages\\random-testing-pools\\random-testing-pools.component.ts, method \"actualPrintFunction\":\r\n // this.printMemberObj['Filters'].LastMemberImport = lastUpdateArray;\r\n // this.printMemberObj['Filters'].LastSelection = this.selectedLastselectionsList;\r\n // this.printMemberObj['Filters'].ReadyToRun = this.selectedReadytorunList;\r\n // this.printMemberObj['Filters'].SelectionInterval = this.selectedIntervalList;\r\n LastMemberImport: [],\r\n LastSelection: [],\r\n ReadyToRun: [],\r\n SelectionInterval: [],\r\n // Next 3 filters always empty in 1.0 - pass them empty too\r\n ReadyToRunDate: [],\r\n ID: [],\r\n Name: [],\r\n },\r\n MatchSel: \"Partial\",\r\n SrchFor: search.text,\r\n TypeSel: \"\",\r\n IsConsortium: isConsortium\r\n })\r\n return ObservableFromFetch(\"WorkforceRandomTest/PrintRandomRecords\", requestBody)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport interface PoolReadyToRunItem {\r\n PoolID: number\r\n ReadyToRun: boolean\r\n}\r\n\r\nexport default function PoolReadyToRunUpdateObservable(list: PoolReadyToRunItem[]): Observable {\r\n const params: string = JSON.stringify({ ReadyToRunList: list })\r\n return ObservableFromFetch(\"RandomTest/UpdatePoolReadyToRun\", params)\r\n}\r\n","import React from \"react\"\r\nimport { Nav, TabContainer } from \"react-bootstrap\"\r\nimport { Link, withRouter } from \"react-router-dom\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { ConsortiumPersonnelRoute, ConsortiumsRoute, RandomsPersonnelRoute, RandomsRoute } from \"../../config/Routes\"\r\n\r\ninterface RandomNavProps extends RouteComponentProps {\r\n canManagePools?: boolean\r\n canManagePersonnel?: boolean\r\n canManageConsortiumPools?: boolean\r\n isConsortium: boolean\r\n}\r\n\r\nconst RandomLink = (props: {name: string, path: string, current: boolean}) => {props.name}\r\n\r\nexport class RandomNav extends React.PureComponent {\r\n render() {\r\n const props = this.props as RouteComponentProps\r\n const path = props.location.pathname\r\n return (\r\n \r\n {!this.props.isConsortium && }\r\n {this.props.isConsortium && }\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(RandomNav)\r\n","import React, { Component } from \"react\"\r\nimport { Button, Col, Container, Form, Modal, Row, Spinner, Table } from \"react-bootstrap\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport { RunCancelPoolsMessages } from \"../../../api/Randoms/RandomSelectionRun\"\r\n\r\nexport interface RunCancelNotificationModalProps {\r\n notes: RunCancelPoolsMessages[]\r\n loading: boolean\r\n isConsortium: boolean\r\n confirmationText: string\r\n onSubmit: () => void\r\n onHide: () => void\r\n}\r\n\r\nexport default class RunCancelNotificationModal extends Component {\r\n\r\n render() {\r\n const { isConsortium, loading, onHide, confirmationText, notes, onSubmit } = this.props\r\n const messageRow = (note: RunCancelPoolsMessages, index: number) => {\r\n return \r\n {note.PoolName}\r\n {note.PoolCode}\r\n {note.Message}\r\n \r\n }\r\n const showNotes = notes.length > 0\r\n\r\n return (\r\n \r\n \r\n {!showNotes && !loading &&

{confirmationText}

}\r\n {!showNotes && loading &&
}\r\n {showNotes && \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {notes.map((note, i) => messageRow(note, i))}\r\n
{`${ isConsortium ? \"Consortium\" : \"Pool\" } Name`}{`${ isConsortium ? \"Consortium\" : \"Pool\" } Code`}Result message
\r\n
\r\n
}\r\n
\r\n {!loading && \r\n {!showNotes && }\r\n {!showNotes && Confirm}\r\n {showNotes && }\r\n }\r\n
)\r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { Modal, Row, Button, Form, Container, Table } from \"react-bootstrap\"\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css'\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { Pool } from \"../../../api/Randoms/RandomsModel/PoolData\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport { APIError } from \"../../../api/ObservableFromFetch\"\r\nimport { RunCancelPoolsMessages, RunCancelPoolsObservable } from \"../../../api/Randoms/RandomSelectionRun\"\r\nimport Checkbox from \"../../Checkbox\"\r\nimport RunCancelNotificationModal from \"./RunCancelNotificationModal\"\r\n\r\ninterface RunCancelModalProps {\r\n poolsData: Pool[]\r\n cancel: boolean\r\n isConsortium: boolean\r\n onClose: () => void\r\n onUpdate: () => void\r\n}\r\n\r\ninterface RunCancelModalState {\r\n saving: boolean\r\n showConfirmation: boolean\r\n selectedPools: Pool[]\r\n selectAll: boolean\r\n messages: RunCancelPoolsMessages[]\r\n}\r\n\r\nexport default class RunCancelModal extends React.Component {\r\n subscription?: Subscription\r\n\r\n state: RunCancelModalState = {\r\n saving: false,\r\n showConfirmation: false,\r\n selectedPools: [],\r\n selectAll: true,\r\n messages: []\r\n }\r\n\r\n saveSubscription?: Subscription\r\n\r\n componentWillUnmount() {\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error(FormatError(error))\r\n }\r\n\r\n\r\n handleClose = () => {\r\n this.props.onClose()\r\n }\r\n\r\n handleCheckPool = (pool: Pool) => {\r\n let selectedPools = [...this.state.selectedPools]\r\n\r\n const index = selectedPools.findIndex(item => item.PoolID === pool.PoolID)\r\n if (index > -1) {\r\n selectedPools = [...selectedPools.slice(0, index), ...selectedPools.slice(index + 1)]\r\n } else {\r\n selectedPools.push(pool)\r\n }\r\n this.setState({ selectedPools: selectedPools })\r\n }\r\n\r\n executeRunCancel = () => {\r\n this.setState({ saving: true })\r\n const { selectAll, selectedPools } = this.state\r\n let pools = selectAll ? this.props.poolsData : selectedPools\r\n const poolsData = pools.map(p => { return { PoolID: p.PoolID, PoolName: p.PoolName, PoolCode: p.Code, IsConsortium: p.IsConsortium } }\r\n )\r\n\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = RunCancelPoolsObservable(this.props.cancel, poolsData).subscribe(\r\n data => {\r\n this.setState({ saving: false, messages: data })\r\n toast.success(\"Action executed successfully.\")\r\n },\r\n error => {\r\n this.handleAPIError(error, { saving: false })\r\n this.closeConfirmation()\r\n }\r\n )\r\n }\r\n\r\n handleConfirm = () => this.setState({ showConfirmation: true })\r\n\r\n closeConfirmation = () => {\r\n this.setState({ showConfirmation: false })\r\n if (this.state.messages.length > 0) this.props.onUpdate()\r\n }\r\n\r\n render() {\r\n const { cancel, poolsData, isConsortium } = this.props\r\n const { selectedPools, selectAll, saving, messages, showConfirmation } = this.state\r\n\r\n const poolRow = (pool: Pool) => {\r\n return \r\n this.handleCheckPool(pool)} id={`checkbox_${pool.PoolID}`} />\r\n {pool.PoolName}\r\n {pool.Code}\r\n {!cancel && <>\r\n {pool.SelectionInterval}\r\n {pool.DrugSampleSize}{pool.DrugRateOrFixed === \"Rate\" && \"%\"}\r\n {pool.AlcoholSampleSize}{pool.AlcoholRateOrFixed === \"Rate\" && \"%\"}\r\n }\r\n \r\n }\r\n\r\n return (\r\n <>\r\n {showConfirmation && this.executeRunCancel()}/>}\r\n \r\n \r\n {`Select ${ isConsortium ? \"Consortiums\" : \"Pools\" } to ${ cancel ? \"Cancel\" : \"Run\" }`}\r\n \r\n \r\n
\r\n \r\n this.setState({ selectAll: true })} />\r\n this.setState({ selectAll: false })} />\r\n \r\n
\r\n {!selectAll && \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!cancel && <>}\r\n \r\n \r\n {poolsData.map((pool) => poolRow(pool))}\r\n
{`${ isConsortium ? \"Consortium\" : \"Pool\" } Name`}{`${ isConsortium ? \"Consortium\" : \"Pool\" } Code`}Selection IntervalDrugAlcohol
\r\n
\r\n
}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n )\r\n }\r\n}\r\n","export const csvHeader = [\r\n \"COMPCODE\",\r\n \"Location CODE\",\r\n \"SSN\",\r\n \"EMPLOYER ID\",\r\n \"DRIVER ID\",\r\n \"State of Issuance\",\r\n \"ALTERNATE ID\",\r\n \"Fname\",\r\n \"Lname\",\r\n \"RegMode\",\r\n \"Employee Category\",\r\n \"OccupationCode\",\r\n \"DOB\",\r\n \"Hire DATE\",\r\n \"MANAGER\",\r\n \"Home Phone\",\r\n \"Work Phone\",\r\n \"STREET ADDRESS\",\r\n \"CITY\",\r\n \"STATE\",\r\n \"ZIP\",\r\n \"Supervisor 1\",\r\n \"Supervisor 2\",\r\n \"ReasonForInactivation\",\r\n]\r\n","import * as React from \"react\"\r\nimport { Container, Row, Col, Table, Spinner, Button } from \"react-bootstrap\"\r\nimport { Subscription, BehaviorSubject, of, concat } from \"rxjs\"\r\nimport { distinctUntilChanged, switchMap, map } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { FiRefreshCw } from \"react-icons/fi\"\r\nimport { FaArrowDown, FaArrowUp, FaPrint } from \"react-icons/fa\"\r\nimport FileSaver from \"file-saver\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport TablePagination from \"../TablePagination\"\r\nimport PoolGridData from \"../../api/Randoms/RandomsModel/PoolGridData\"\r\nimport ColumnFilter from \"../../api/Randoms/RandomsModel/ColumnFilter\"\r\nimport PoolGridRow from \"../../api/Randoms/RandomsModel/PoolGridRow\"\r\nimport ColumnHeaderFilter from \"../ColumnHeaderFilter\"\r\nimport SearchField from \"../../api/SearchField\"\r\nimport SearchBar from \"../SearchBar\"\r\nimport AddPoolModal from \"./AddPoolModal\"\r\nimport PoolDetailsModal from \"./Pools/PoolDetailsModal\"\r\nimport FormatTimestampFileName from \"../../formatters/FormatTimestampFileName\"\r\nimport { PoolGridGetObservable, PoolGridCsvGet, PoolGridPrint } from \"../../api/Randoms/PoolGridGet\"\r\nimport PoolReadyToRunUpdateObservable, { PoolReadyToRunItem } from \"../../api/Randoms/PoolReadyToRunUpdate\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { connect } from \"react-redux\"\r\nimport { AppState} from \"../../AppState\"\r\nimport { BuildUserAccess } from \"../../authentication/BuildUserAccess\"\r\nimport RandomNav from \"./RandomNav\"\r\nimport { Filter, Sort } from \"../../api/GridRequest\"\r\nimport RunCancelModal from \"./Pools/RunCancelModal\"\r\nimport { csvHeader } from \"../../api/Randoms/ImportPersonnelTemplate\"\r\n\r\ninterface RandomPoolsProps {\r\n canManagePools?: boolean\r\n canManagePersonnel?: boolean\r\n canManageConsortiumPools?: boolean\r\n isConsortium?: boolean\r\n isPortalAdmin?: boolean\r\n}\r\n\r\ninterface RandomPoolsState {\r\n loading: boolean\r\n loadingCsv: boolean\r\n updatingReadyToRun: boolean\r\n data?: PoolGridData\r\n details?: PoolGridRow\r\n detailsModal: boolean\r\n modal: boolean\r\n readyToRunChanges: PoolReadyToRunItem[]\r\n selectedPrintRowIDs: number[]\r\n runPools: boolean\r\n cancelPools: boolean\r\n}\r\n\r\ninterface PoolGridSearchParams {\r\n pageNumber: number\r\n sort: Sort\r\n filters: Filter[]\r\n search: { field: string, text: string }\r\n}\r\n\r\nconst PageSize = 10\r\n\r\nconst DefaultSearchFields: SearchField[] = [\r\n { ID: \"All\", Name: \"All\" },\r\n { ID: \"ID\", Name: \"ID\" },\r\n { ID: \"Name\", Name: \"Name\" }\r\n]\r\n\r\nclass RandomPools extends React.PureComponent {\r\n state: RandomPoolsState = {\r\n loading: false,\r\n loadingCsv: false,\r\n updatingReadyToRun: false,\r\n detailsModal: false,\r\n modal: false,\r\n readyToRunChanges: [],\r\n selectedPrintRowIDs: [],\r\n runPools: false,\r\n cancelPools: false,\r\n }\r\n\r\n page$ = new BehaviorSubject({\r\n pageNumber: 1,\r\n sort: { column: \"\", order: \"\" },\r\n filters: [],\r\n search: { field: \"\", text: \"\" }\r\n })\r\n pageSubscription?: Subscription\r\n csvSubscription?: Subscription\r\n printSubscription?: Subscription\r\n updateReadyToRunSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.pageSubscription = this.page$.pipe(\r\n distinctUntilChanged(),\r\n switchMap(params => concat(\r\n of({ loading: true }),\r\n PoolGridGetObservable(params.pageNumber, PageSize, params.sort, params.filters, params.search, !!this.props.isConsortium).pipe(\r\n map((result: PoolGridData) => ({ data: result, loading: false })))\r\n )\r\n )\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: PoolGridData }) => {\r\n if (newState.data) {\r\n this.setState({ loading: newState.loading, data: newState.data, readyToRunChanges: [], selectedPrintRowIDs: [] })\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n },\r\n (error: string) => {\r\n this.setState({ loading: false })\r\n toast.error(error)\r\n }\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n this.csvSubscription && this.csvSubscription.unsubscribe()\r\n this.printSubscription && this.printSubscription.unsubscribe()\r\n this.updateReadyToRunSubscription && this.updateReadyToRunSubscription.unsubscribe()\r\n this.page$.unsubscribe()\r\n }\r\n\r\n pageChanged = (pageNumber: number) => this.page$.next({ ...this.page$.value, pageNumber: pageNumber })\r\n\r\n sortGrid(column: string, order?: string) {\r\n if (column === \"LastUpdate\") {\r\n column = \"LastMemberImport\"\r\n }\r\n const newSort = { column: column, order: order || \"\" }\r\n this.page$.next({ ...this.page$.value, sort: newSort })\r\n }\r\n\r\n filterGrid(column: string, items: string[]) {\r\n const filters = [...this.page$.value.filters]\r\n const filter = { column: column, values: items }\r\n let index = filters.findIndex(item => item.column === filter.column)\r\n if (index >= 0) {\r\n filters[index] = filter\r\n } else {\r\n filters.push(filter)\r\n }\r\n\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, filters: filters })\r\n }\r\n\r\n onSearch = (field: string, text: string) => this.page$.next({ ...this.page$.value, pageNumber: 1, search: { field: field, text: text } })\r\n\r\n handlePrintClick() {\r\n const value = this.page$.value\r\n this.printSubscription && this.printSubscription.unsubscribe()\r\n this.printSubscription = PoolGridPrint(this.state.selectedPrintRowIDs, value.filters, value.search, !!this.props.isConsortium).subscribe(\r\n data => this.print(data),\r\n error => toast.error(error)\r\n )\r\n }\r\n\r\n print(base64pdf: string) {\r\n const pdfWindow = window.open(\"\")\r\n if (pdfWindow) {\r\n pdfWindow.document.write(\"\")\r\n }\r\n }\r\n\r\n handlePrintSelectAllRowsChange = (e: React.ChangeEvent) => {\r\n const selectedPrintRowIDs = e.target.checked && this.state.data && this.state.data.Records ? this.state.data.Records.map(item => item.PoolID) : []\r\n this.setState({ selectedPrintRowIDs: selectedPrintRowIDs })\r\n }\r\n\r\n changePrintRowSelection = (poolID: number, checked: boolean) => {\r\n let selected = [...this.state.selectedPrintRowIDs].filter(item => item !== poolID)\r\n this.setState({ selectedPrintRowIDs: checked ? [...selected, poolID] : selected })\r\n }\r\n\r\n renderHeaderColumn = (columnName: string, title: string) => {\r\n const sort = this.page$.value.sort\r\n return \r\n {this.state.data\r\n ? item.column === columnName)?.values || []}\r\n onSort={(order?: string) => this.sortGrid(columnName, order)}\r\n onFilter={(items: string[]) => this.filterGrid(columnName, items)} />\r\n : title.toUpperCase()}\r\n \r\n }\r\n\r\n renderReadyToRunHeaderColumn = () => {\r\n const sort = this.page$.value.sort\r\n const isReadyToRun = sort.column === \"ReadyToRun\"\r\n const setAscSort = !isReadyToRun || sort.order !== \"asc\"\r\n return \r\n
\r\n this.sortGrid(\"ReadyToRun\", setAscSort ? \"asc\" : \"desc\")} className=\"column-header-title text-uppercase mr-1\">READY TO RUN\r\n {isReadyToRun && <>\r\n \r\n \r\n }\r\n \r\n
\r\n \r\n }\r\n\r\n renderRows = () => {\r\n if (this.state.data?.Records && this.state.data?.Records.length) {\r\n return this.state.data.Records.map((row: PoolGridRow, i: number) =>\r\n \r\n \r\n ) => this.changePrintRowSelection(row.PoolID, e.target.checked)} />\r\n \r\n \r\n {row.ID}\r\n {row.SelectionInterval}\r\n \r\n {row.Selection}\r\n {row.LastSelectionStatus === 1 && ((Canceled))}\r\n \r\n {FormatDate(row.LastMemberImport)}\r\n {FormatDate(row.ReadyToRunDate)}\r\n \r\n {row.RequireManualVerify &&\r\n ) => this.handleChangeReadyToRunChange(row.PoolID, e.target.checked)}\r\n checked={this.state.readyToRunChanges.find(item => item.PoolID === row.PoolID)?.ReadyToRun ?? row.ReadyToRun} />}\r\n \r\n )\r\n } else {\r\n return No Records Found\r\n }\r\n }\r\n\r\n showDetailsModal = (details: PoolGridRow) => this.setState({ detailsModal: true, details: details })\r\n hideDetailsModal = () => {\r\n this.setState({ detailsModal: false, details: undefined })\r\n this.reload()\r\n }\r\n showModal = () => this.setState({ modal: true })\r\n hideModal = () => this.setState({ modal: false })\r\n reload = () => this.page$.next({ ...this.page$.value, pageNumber: 1 })\r\n\r\n handleCreateSuccessful = () => {\r\n this.hideModal()\r\n this.reload()\r\n }\r\n\r\n handleReadyToRunClick = () => {\r\n if (!this.state.readyToRunChanges.length) {\r\n toast.error(\"Please change status of at least one record.\")\r\n return\r\n }\r\n this.setState({ updatingReadyToRun: true })\r\n this.updateReadyToRunSubscription && this.updateReadyToRunSubscription.unsubscribe()\r\n this.updateReadyToRunSubscription = PoolReadyToRunUpdateObservable(this.state.readyToRunChanges).subscribe(\r\n result => {\r\n this.setState({ updatingReadyToRun: false })\r\n toast.success(result)\r\n this.reload()\r\n },\r\n error => {\r\n this.setState({ updatingReadyToRun: false })\r\n toast.error(error)\r\n }\r\n )\r\n }\r\n\r\n handleChangeReadyToRunChange = (poolID: number, checked: boolean) => {\r\n let changes = [...this.state.readyToRunChanges]\r\n\r\n const index = changes.findIndex(item => item.PoolID === poolID)\r\n if (index > -1) {\r\n changes.splice(index, 1);\r\n }\r\n const pool = this.state.data?.Records.find(item => item.PoolID === poolID)\r\n if (pool && pool.ReadyToRun !== checked) {\r\n changes.push({ PoolID: poolID, ReadyToRun: checked })\r\n }\r\n this.setState({ readyToRunChanges: changes })\r\n }\r\n\r\n onRun = () => {\r\n this.setState({ runPools: false, cancelPools: false })\r\n this.reload()\r\n }\r\n\r\n onExportClick = () => {\r\n this.setState({ loadingCsv: true })\r\n const value = this.page$.value\r\n this.csvSubscription && this.csvSubscription.unsubscribe()\r\n this.csvSubscription = PoolGridCsvGet(value.filters, value.search, !!this.props.isConsortium).subscribe(\r\n result => {\r\n this.setState({ loadingCsv: false })\r\n this.export(result)\r\n },\r\n error => {\r\n this.setState({ loadingCsv: false })\r\n toast.error(error)\r\n }\r\n )\r\n }\r\n\r\n downloadTemplate = () => {\r\n // const header = this.props.isPortalAdmin ? csvHeader : csvHeader.filter((item) => item.toUpperCase() !== \"MANAGER\")\r\n const csvData = new Blob([csvHeader.join(\",\") + \"\\r\\n\"], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, \"import-list-template.csv\")\r\n }\r\n\r\n export = (csv: string) => {\r\n const csvData = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, FormatTimestampFileName(\"Pools\", \"csv\", new Date()), true)\r\n toast.success(\"CSV file downloaded successfully.\")\r\n }\r\n\r\n render() {\r\n const allPrintChecked = !this.state.loading && this.state.data?.Records?.length === this.state.selectedPrintRowIDs.length\r\n const { runPools, cancelPools } = this.state\r\n const poolsData = this.state.data?.AllPools\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {this.state.detailsModal && this.state.details && }\r\n {this.state.modal && }\r\n \r\n \r\n \r\n {this.props.isPortalAdmin && this.setState({ runPools: true })} spin={this.state.loading} disableOnSpin className=\"mr-2\">{ this.props.isConsortium ? \"RUN CONSORTIUMS\" : \"RUN POOLS\" }}\r\n {false && this.props.isPortalAdmin && this.setState({ cancelPools: true })} spin={this.state.loading} disableOnSpin className=\"mr-2\">{ this.props.isConsortium ? \"CANCEL CONSORTIUMS RUN\" : \"CANCEL POOLS RUN\" }}\r\n {!this.props.isConsortium && }\r\n {this.props.isConsortium && this.props.canManageConsortiumPools && this.props.isPortalAdmin && }\r\n {!this.props.isConsortium && }\r\n EXPORT CSV\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderHeaderColumn(\"Name\", this.props.isConsortium ? \"Consortium Name\" : \"Pool Name\")}\r\n {this.renderHeaderColumn(\"ID\", \"Pool ID\")}\r\n {this.renderHeaderColumn(\"SelectionInterval\", \"Selection Interval\")}\r\n {this.renderHeaderColumn(\"LastSelection\", \"Last Selection\")}\r\n {this.renderHeaderColumn(\"LastUpdate\", \"Last Update\")}\r\n {this.renderHeaderColumn(\"ReadyToRunDate\", \"Date Ready To Run\")}\r\n {this.renderReadyToRunHeaderColumn()}\r\n \r\n \r\n \r\n {\r\n this.state.loading ?\r\n \r\n \r\n : this.renderRows()\r\n }\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n {this.state.data ?\r\n \r\n \r\n Total records: {this.state.data.Total}\r\n \r\n \r\n : undefined}\r\n
\r\n { (runPools || cancelPools) && poolsData && this.setState({ runPools: false, cancelPools: false })} onUpdate={this.onRun} />}\r\n
\r\n )\r\n }\r\n}\r\nfunction mapStateToProps(state: AppState): RandomPoolsProps {\r\n const userAccess = BuildUserAccess(state)\r\n return {\r\n canManagePools: userAccess.canManagePools,\r\n canManagePersonnel: userAccess.canManagePersonnel,\r\n canManageConsortiumPools: userAccess.CanManageConsortiumPools,\r\n isPortalAdmin: userAccess.isPortalAdmin,\r\n }\r\n}\r\nconst ConnectedRandomPools = connect(mapStateToProps, null)(RandomPools)\r\nexport default ConnectedRandomPools\r\n","import GovPoolCreate from \"./GovPoolModel/GovPoolCreate\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function PoolCreateObservable(data: GovPoolCreate) {\r\n const params: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"GovPool/CreateGovPool\", params, \"put\")\r\n}\r\n","export enum Day {\r\n SUN = 1,\r\n MON = 2,\r\n TUE = 3,\r\n WED = 4,\r\n THU = 5,\r\n FRI = 6,\r\n SAT = 7,\r\n}\r\n\r\nconst DayMap = new Map([\r\n [Day.SUN, \"Sun\"],\r\n [Day.MON, \"Mon\"],\r\n [Day.TUE, \"Tue\"],\r\n [Day.WED, \"Wed\"],\r\n [Day.THU, \"Thu\"],\r\n [Day.FRI, \"Fri\"],\r\n [Day.SAT, \"Sat\"],\r\n])\r\n\r\nexport function getDayName(key: Day) {\r\n return DayMap.get(key) || \"\"\r\n}\r\n\r\nexport const WeekDays: DayOfWeek[] = [\r\n { Id: Day.SUN, Name: getDayName(Day.SUN) },\r\n { Id: Day.MON, Name: getDayName(Day.MON) },\r\n { Id: Day.TUE, Name: getDayName(Day.TUE) },\r\n { Id: Day.WED, Name: getDayName(Day.WED) },\r\n { Id: Day.THU, Name: getDayName(Day.THU) },\r\n { Id: Day.FRI, Name: getDayName(Day.FRI) },\r\n { Id: Day.SAT, Name: getDayName(Day.SAT) }\r\n]\r\n\r\nexport default interface DayOfWeek {\r\n Id: Day\r\n Name: string\r\n}\r\n","export enum DeviceSampleType {\r\n Saliva = \"SL\",\r\n Urine = \"UR\"\r\n}\r\n","import * as React from \"react\"\r\nimport { WeekDays, Day, getDayName } from \"../../../api/Randoms/GovPoolModel/DayOfWeek\"\r\nimport DaysToExclude from \"../../../api/Randoms/GovPoolModel/DaysToExclude\"\r\nimport Checkbox from \"../../Checkbox\"\r\nimport { parseISO } from \"date-fns\"\r\n\r\ninterface WeekdaysToExcludeProps {\r\n daysToExclude: DaysToExclude[]\r\n editable?: boolean\r\n handlerChange: (e: React.ChangeEvent, day: Day) => void\r\n}\r\n\r\nexport class WeekdaysToExclude extends React.PureComponent {\r\n valueText = (daysToExclude: DaysToExclude[]) => {\r\n return [\r\n ...daysToExclude.filter(item => item.DayOfWeekID).map(item => item.DayOfWeekID).sort().map(day => getDayName(day!)),\r\n ].join(\", \")\r\n }\r\n\r\n render() {\r\n const today = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()).getTime()\r\n // Remove past dates\r\n const daysToExclude = this.props.daysToExclude.filter(item => item.DayOfWeekID || (item.DateExclude && parseISO(item.DateExclude)?.getTime() >= today))\r\n const weekdaysToExclude = daysToExclude.filter(item => item.DayOfWeekID).map(item => item.DayOfWeekID as Day)\r\n return <>\r\n {!this.props.editable && this.valueText(daysToExclude)}\r\n {this.props.editable &&\r\n WeekDays.map(\r\n day => {\r\n const checkbox = ) => { this.props.handlerChange(e, day.Id) }}\r\n />\r\n return checkbox\r\n }\r\n )}\r\n \r\n }\r\n}\r\n","import { SampleType } from \"./GovPoolModel/CollectionTypeResponse\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function GovGetCollectionTypes() {\r\n return ObservableFromFetch(\"GovPool/GetCollectionTypes\")\r\n}\r\n","import LabAccount from \"./LabServiceModel/LabAccount\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport LabPanel from \"../Randoms/RandomsModel/LabPanel\";\r\n\r\nexport interface LabAccountsGetParams {\r\n AccountID?: number\r\n CompanyID: number\r\n RegionID: number\r\n LocationID: number\r\n SearchFor: string\r\n SearchBy: string\r\n DOT: boolean\r\n AutoFilter?: string\r\n IsMarketPlace: boolean\r\n Link?: string\r\n}\r\n\r\nexport interface FilteredLabAccountsGetParams {\r\n AccountID?: number\r\n CompanyID: number\r\n RegionID: number\r\n LocationID: number\r\n SearchFor: string\r\n SearchBy: string\r\n DOT: boolean\r\n AutoFilter?: string\r\n IsMarketPlace: boolean\r\n Link?: string\r\n POCT: boolean\r\n Panel: string\r\n}\r\n\r\ninterface LabLookup {\r\n DOT: boolean\r\n LabAccount: string\r\n Laboratory: string\r\n Link?: string\r\n}\r\n\r\nexport default function LabAccountsGetObservable(params: LabAccountsGetParams) {\r\n const requestBody: string = JSON.stringify({\r\n ...params\r\n });\r\n\r\n return ObservableFromFetch(\"order/GetLabAccounts\", requestBody)\r\n}\r\n\r\nexport function FilteredLabAccountsGetObservable(params: FilteredLabAccountsGetParams) {\r\n const requestBody: string = JSON.stringify({\r\n ...params\r\n });\r\n\r\n return ObservableFromFetch(\"order/GetFilteredLabAccounts\", requestBody)\r\n}\r\n\r\nexport function LabAccountLookup(account: string, lab: string, dot: boolean, link: string) {\r\n const params: LabLookup = {\r\n DOT: dot,\r\n LabAccount: account,\r\n Laboratory: lab\r\n }\r\n\r\n if (link !== \"\") { params.Link = link }\r\n\r\n const requestBody: string = JSON.stringify(params);\r\n\r\n return ObservableFromFetch(\"FFOrderUser/GetAccountLookup\", requestBody)\r\n}\r\n\r\n","import GovDevice, { ModifyGovDevice } from \"./GovPoolModel/GovDevice\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function GovDeviceGetObservable(labAccount: string) {\r\n return ObservableFromFetch(`GovPool/GetDevices?laboratoryAccount=${labAccount}`)\r\n}\r\n\r\nexport function DevicesGetObservable(labAccount: string = \"\") {\r\n const params: string = JSON.stringify({\r\n LabAccount: labAccount\r\n })\r\n return ObservableFromFetch(\"GovPool/GetCommonDevices\", params)\r\n}\r\n\r\nexport function GovDeviceModifyObservable(data: ModifyGovDevice) {\r\n const params: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"GovPool/ModifyGovDevice\", params)\r\n}","import * as React from \"react\"\r\nimport { Form, Col, Button, Spinner } from \"react-bootstrap\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { SampleType, GovPanel } from \"../../api/Randoms/GovPoolModel/CollectionTypeResponse\"\r\nimport GovGetCollectionTypes from \"../../api/Randoms/GovGetCollectionTypes\"\r\nimport LabAccountsGetObservable from \"../../api/LabService/LabAccountsGet\"\r\nimport LabAccount from \"../../api/LabService/LabServiceModel/LabAccount\"\r\nimport GovDeviceGetObservable from \"../../api/Randoms/GovDevicesGet\"\r\nimport GovDevice from \"../../api/Randoms/GovPoolModel/GovDevice\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { LabAccountMaxLength } from \"../../config/Constants\"\r\nimport { toast } from \"react-toastify\"\r\nimport GovGetPanels from \"../../api/Randoms/GovGetPanels\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\nimport { DeviceSampleType } from \"./DeviceSampleType\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\n\r\ninterface GovCollectionProps {\r\n editing?: boolean\r\n pendingRandom?: boolean\r\n showHeading?: boolean\r\n labAccount?: string\r\n serviceDOT: boolean\r\n sampleTypeID?: number\r\n panel?: string\r\n device?: string\r\n companyID: number\r\n labelClassName?: string\r\n onTypeChange: (sampleType?: SampleType, isPOCTDevice?: boolean) => void\r\n onLabChange: (labAccount?: LabAccount) => void\r\n onPanelChange: (panel?: GovPanel) => void\r\n onDeviceChange: (device?: GovDevice) => void\r\n}\r\n\r\ninterface LabAccountType {\r\n isUrineLab: boolean\r\n isSalivaLab: boolean\r\n isUrinePOCT: boolean\r\n isSalivaPOCT: boolean\r\n}\r\n\r\nexport const getLabType = (lab: LabAccount): LabAccountType => {\r\n const regionID = (lab.LabAccount || \"\").split(\".\")[1] || \"\"\r\n const isUrineLab = !(regionID.startsWith(\"ORF\") || regionID.startsWith(\"CON\") || regionID.startsWith(\"OCO\") || regionID.startsWith(\"POC\"))\r\n const isSalivaLab = regionID.startsWith(\"ORF\")\r\n const isUrinePOCT = regionID.startsWith(\"CON\")\r\n const isSalivaPOCT = regionID.startsWith(\"OCO\")\r\n return {\r\n isUrineLab: isUrineLab,\r\n isSalivaLab: isSalivaLab,\r\n isUrinePOCT: isUrinePOCT,\r\n isSalivaPOCT: isSalivaPOCT\r\n }\r\n}\r\n\r\nexport const showLabForSelectedCollectionType = (lab: LabAccount, collectionType: string): boolean => {\r\n return (\r\n (getLabType(lab).isSalivaLab && collectionType === \"Saliva Lab Test\") ||\r\n (getLabType(lab).isUrineLab && collectionType === \"Urine Lab Test\") ||\r\n (getLabType(lab).isSalivaPOCT && collectionType === \"Saliva POCT\") ||\r\n (getLabType(lab).isUrinePOCT && collectionType === \"Urine POCT\")\r\n )\r\n}\r\n\r\nexport interface DataLoader {\r\n data?: T[]\r\n loading?: boolean\r\n selected?: T\r\n}\r\n\r\ninterface GovCollectionState {\r\n devices: DataLoader\r\n labAccounts: DataLoader\r\n panels: DataLoader\r\n sampleTypes: DataLoader\r\n isPOCTDevice?: boolean\r\n defaultSampleTypeID?: number\r\n defaultLabAccount?: string\r\n defaultPanel?: string\r\n defaultDevice?: string\r\n}\r\n\r\nexport default class GovCollection extends React.PureComponent {\r\n state: GovCollectionState = {\r\n devices: {},\r\n labAccounts: {},\r\n panels: {},\r\n sampleTypes: {},\r\n isPOCTDevice: false,\r\n defaultSampleTypeID: this.props.sampleTypeID,\r\n defaultLabAccount: this.props.labAccount,\r\n defaultPanel: this.props.panel,\r\n defaultDevice: this.props.device\r\n }\r\n\r\n labAccountRef = React.createRef>()\r\n\r\n subscription = new Subscription()\r\n labAccountSubscription?: Subscription = undefined\r\n panelSubscription?: Subscription = undefined\r\n deviceSubscription?: Subscription = undefined\r\n\r\n componentDidMount() {\r\n this.loadSampleTypes()\r\n }\r\n\r\n componentDidUpdate(prevProps: GovCollectionProps) {\r\n const editModeChanged = prevProps.editing !== this.props.editing\r\n const formChanged = prevProps.sampleTypeID !== this.props.sampleTypeID || prevProps.labAccount !== this.props.labAccount || prevProps.panel !== this.props.panel || prevProps.device !== this.props.device\r\n if (editModeChanged && formChanged) {\r\n this.setState({\r\n defaultSampleTypeID: this.props.sampleTypeID,\r\n defaultLabAccount: this.props.labAccount,\r\n defaultPanel: this.props.panel,\r\n defaultDevice: this.props.device\r\n }, this.loadSampleTypes)\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.labAccountSubscription && this.labAccountSubscription.unsubscribe()\r\n this.panelSubscription && this.panelSubscription.unsubscribe()\r\n this.deviceSubscription && this.deviceSubscription.unsubscribe()\r\n this.subscription.unsubscribe()\r\n }\r\n\r\n loadSampleTypes = () => {\r\n const labAccountNode = this.labAccountRef?.current\r\n if (labAccountNode) {\r\n labAccountNode.getInput().maxLength = LabAccountMaxLength\r\n }\r\n\r\n this.setState({ sampleTypes: { loading: true } })\r\n\r\n this.subscription.add(\r\n GovGetCollectionTypes().subscribe(\r\n (data: SampleType[]) => {\r\n const selectedSampleType = data.find(type => type.SampleTypeID === this.state.defaultSampleTypeID)\r\n const isPOCTDevice = selectedSampleType?.Description.includes(\"POCT\")\r\n\r\n this.setState({ isPOCTDevice: isPOCTDevice, sampleTypes: { data: data, loading: false, selected: selectedSampleType }, defaultSampleTypeID: undefined })\r\n this.props.onTypeChange(selectedSampleType, isPOCTDevice)\r\n this.loadLabAccounts()\r\n },\r\n (error) => {\r\n this.setState({ sampleTypes: { loading: false } })\r\n toast.error(error?.errorData?.message || error.message)\r\n }\r\n )\r\n )\r\n }\r\n\r\n loadLabAccounts = () => {\r\n this.setState({\r\n labAccounts: { data: [], selected: undefined, loading: true },\r\n panels: { data: [], selected: undefined, loading: false },\r\n devices: { data: [], selected: undefined, loading: false }\r\n })\r\n this.labAccountSubscription && this.labAccountSubscription.unsubscribe()\r\n this.labAccountSubscription = LabAccountsGetObservable({\r\n SearchFor: \"\",\r\n SearchBy: \"Account Name\",\r\n CompanyID: this.props.companyID,\r\n RegionID: 0,\r\n LocationID: 0,\r\n DOT: false,\r\n IsMarketPlace: true\r\n }).subscribe(\r\n (data: LabAccount[]) => {\r\n const selectedLabAccount = data.find(item => item.LabAccount === this.state.defaultLabAccount)\r\n this.setState({\r\n labAccounts: { data: data, loading: false, selected: selectedLabAccount }\r\n })\r\n this.loadPanels(0, selectedLabAccount)\r\n this.loadDevices(selectedLabAccount)\r\n this.props.onLabChange(selectedLabAccount)\r\n if (!selectedLabAccount) {\r\n this.setState({ defaultPanel: undefined, defaultDevice: undefined })\r\n }\r\n this.filterSampleTypes()\r\n },\r\n () => this.setState({ labAccounts: { loading: false } })\r\n )\r\n }\r\n\r\n loadPanels = (device: number, selectedLabAccount?: LabAccount) => {\r\n if (!selectedLabAccount?.LabAccount) {\r\n this.setState({ panels: { data: [], selected: undefined, loading: false } })\r\n return\r\n }\r\n this.setState({ panels: { data: [], selected: undefined, loading: true } })\r\n\r\n if (this.state.isPOCTDevice) {\r\n if (!!this.state.devices.selected) {\r\n const selectedPanel = { ID: this.state.devices.selected?.PanelCode, Name: this.state.devices.selected?.PanelCode } as GovPanel\r\n this.setState({ panels: { data: [], selected: selectedPanel, loading: false } })\r\n this.props.onPanelChange(selectedPanel)\r\n }\r\n\r\n return\r\n }\r\n this.panelSubscription && this.panelSubscription.unsubscribe()\r\n this.panelSubscription = GovGetPanels(selectedLabAccount?.LabAccount, this.state.devices.selected?.DeviceID).subscribe(\r\n (data: SampleType[]) => {\r\n const selectedSampleType = data.find(type => type.SampleTypeID === this.state.sampleTypes.selected?.SampleTypeID)\r\n let selectedPanel = selectedSampleType?.Panels.find(p => p.ID === this.state.defaultPanel)\r\n this.setState({ panels: { data: selectedSampleType?.Panels, selected: selectedPanel, loading: false }, defaultPanel: undefined })\r\n this.props.onPanelChange(selectedPanel)\r\n },\r\n (error) => {\r\n this.setState({ panels: { loading: false } })\r\n toast.error(error?.errorData?.message || error.message)\r\n }\r\n )\r\n }\r\n\r\n loadDevices = (selectedLabAccount?: LabAccount) => {\r\n if (!selectedLabAccount?.LabAccount) {\r\n this.setState({ devices: { data: [], selected: undefined, loading: false }})\r\n return\r\n }\r\n this.setState({ devices: {data: [], selected: undefined, loading: true } })\r\n this.deviceSubscription && this.deviceSubscription.unsubscribe()\r\n this.deviceSubscription = GovDeviceGetObservable(selectedLabAccount?.LabAccount).subscribe(\r\n (data: GovDevice[]) => {\r\n const selectedDevice = data.find(item => item.Code === this.state.defaultDevice)\r\n const isPOCTDevice = this.state.isPOCTDevice\r\n const selectedSampleType = this.state.sampleTypes?.selected\r\n\r\n let filtered = data\r\n if (selectedSampleType && isPOCTDevice) {\r\n const sampleTypeCode: DeviceSampleType = DeviceSampleType[selectedSampleType.LabCode as keyof typeof DeviceSampleType]\r\n filtered = data?.filter(device => device.SampleType === sampleTypeCode)\r\n }\r\n\r\n this.setState({ devices: { data: filtered, selected: selectedDevice, loading: false }, defaultDevice: undefined })\r\n this.props.onDeviceChange(selectedDevice)\r\n if (isPOCTDevice) {\r\n const selectedPanel = { ID: selectedDevice?.PanelCode, Name: selectedDevice?.PanelCode } as GovPanel\r\n this.setState({ panels: { ...this.state.panels, selected: selectedPanel } })\r\n this.props.onPanelChange(selectedPanel)\r\n }\r\n },\r\n (error) => {\r\n this.setState({ devices: { loading: false } })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n }\r\n\r\n handleSampleTypeChange = (event: React.ChangeEvent) => {\r\n const sampleTypeId = event.target.value\r\n const selectedSampleType = this.state.sampleTypes?.data?.find(type => type.SampleTypeID == Number(sampleTypeId))\r\n const isPOCTDevice = selectedSampleType?.Description.includes(\"POCT\")\r\n this.setState({\r\n sampleTypes: { ...this.state.sampleTypes, selected: selectedSampleType },\r\n labAccounts: { ...this.state.labAccounts, selected: undefined },\r\n panels: { data: [], selected: undefined, loading: false },\r\n devices: { data: [], selected: undefined, loading: false },\r\n isPOCTDevice: isPOCTDevice,\r\n defaultLabAccount: undefined,\r\n defaultPanel: undefined,\r\n defaultDevice: undefined\r\n })\r\n this.props.onTypeChange(selectedSampleType, !!isPOCTDevice)\r\n }\r\n\r\n handleLabChange = (items: LabAccount[]) => {\r\n const selectedLab = items[0]\r\n this.setState({\r\n labAccounts: { ...this.state.labAccounts, selected: selectedLab },\r\n devices: { data:[], selected: undefined, loading: false },\r\n panels: { data:[], selected: undefined, loading: false }\r\n }, () => {\r\n this.props.onLabChange(selectedLab)\r\n this.loadPanels(0, selectedLab)\r\n this.loadDevices(selectedLab)\r\n })\r\n }\r\n\r\n handlePanelChange = (event: React.ChangeEvent) => {\r\n const panelId = event.target.value\r\n const panel = this.state.panels.data?.find(p => p.ID == panelId)\r\n this.setState({ panels: { ...this.state.panels, selected: panel } })\r\n this.props.onPanelChange(panel)\r\n }\r\n\r\n handleDeviceChange = (event: React.ChangeEvent) => {\r\n const deviceCode = event.target.value\r\n const selectedDevice = this.state.devices.data?.find(d => d.Code === deviceCode)\r\n const selectedPanel = { ID: selectedDevice?.PanelCode, Name: selectedDevice?.PanelCode } as GovPanel\r\n this.setState({ devices: { ...this.state.devices, selected: selectedDevice }, panels: { ...this.state.panels, selected: selectedPanel } })\r\n this.props.onDeviceChange(selectedDevice)\r\n this.props.onPanelChange(selectedPanel)\r\n }\r\n\r\n filterSampleTypes = () => {\r\n const filtered = this.state.sampleTypes.data?.filter(item => this.state.labAccounts.data?.some(lab => showLabForSelectedCollectionType(lab, item.Description)))\r\n this.setState(prevState => ({ sampleTypes: { ...prevState.sampleTypes, data: filtered } }))\r\n }\r\n\r\n populateSelectedOptions = (value: V, description: D, data?: T[], uniqKey?: K) => {\r\n return data?.map((o: T) => {\r\n const optionValue: string = o[value] as unknown as string\r\n const key: string = uniqKey ? o[uniqKey] as unknown as string : optionValue\r\n return \r\n })\r\n }\r\n\r\n render() {\r\n const { showHeading, editing, labelClassName } = this.props\r\n const sampleTypeDisabled = this.state.sampleTypes.loading\r\n const labAccountDisabled = sampleTypeDisabled || this.state.labAccounts.loading || !this.state.sampleTypes.selected\r\n const panelsDisabled = labAccountDisabled || this.state.panels.loading || !this.state.labAccounts.selected\r\n const devicesDisabled = labAccountDisabled || this.state.devices.loading || !this.state.labAccounts.selected\r\n return (\r\n \r\n {showHeading && PLEASE SELECT SERVICE:}\r\n \r\n Type of Collection\r\n \r\n {!editing && this.state.sampleTypes.loading && }\r\n {!editing && this.state.sampleTypes.selected?.Description}\r\n {editing && \r\n \r\n {this.populateSelectedOptions(\"SampleTypeID\", \"Description\", this.state.sampleTypes.data)}\r\n }\r\n \r\n \r\n \r\n {showHeading ? \"\" : \"Default \"}Laboratory / Account Number\r\n \r\n {!editing && this.state.labAccounts.loading && }\r\n {!editing && this.state.labAccounts.selected?.Description}\r\n {editing && showLabForSelectedCollectionType(option, this.state.sampleTypes.selected?.Description || \"\")}\r\n onChange={this.handleLabChange}\r\n options={this.state.labAccounts.data || []}\r\n selected={this.state.labAccounts.selected ? [this.state.labAccounts.selected] : []}\r\n placeholder=\"Enter the Lab Account\">\r\n \r\n }\r\n \r\n \r\n {!this.state.isPOCTDevice && \r\n Test to Perform\r\n \r\n {!editing && this.state.panels.loading && }\r\n {!editing && this.state.panels.selected?.Name}\r\n {editing && \r\n \r\n {this.populateSelectedOptions(\"ID\", \"Name\", this.state.panels.data)}\r\n }\r\n \r\n }\r\n {this.state.isPOCTDevice &&\r\n \r\n POCT Device\r\n \r\n {!editing && this.state.devices.loading && }\r\n {!editing && this.state.devices.selected?.Description}\r\n {editing && \r\n \r\n {this.populateSelectedOptions(\"Code\", \"Description\", this.state.devices.data)}\r\n }\r\n \r\n \r\n }\r\n \r\n )\r\n }\r\n\r\n static defaultProps = {\r\n editing: false,\r\n pendingRandom: false\r\n }\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport DaysToExclude from \"./GovPoolModel/DaysToExclude\"\r\n\r\nexport default function GetDaysToExclude(poolID: number = 0) {\r\n return ObservableFromFetch(`GovPool/GetDaysToExclude?poolID=${poolID}`)\r\n}","import DaysToExclude from \"../../../api/Randoms/GovPoolModel/DaysToExclude\"\r\nimport { FormatShortDate } from \"../../../formatters/FormatDate\"\r\nimport { parseISO } from \"date-fns\"\r\n\r\nexport interface DatesToExcludeProps {\r\n daysToExclude: DaysToExclude[]\r\n}\r\n\r\nconst DatesToExclude = (props: DatesToExcludeProps) => {\r\n const today = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()).getTime()\r\n // Remove past dates\r\n const daysToExclude = props.daysToExclude.filter(item => item.DayOfWeekID || (item.DateExclude && parseISO(item.DateExclude)?.getTime() >= today))\r\n\r\n const toExclude = (daysToExclude: DaysToExclude[]) => {\r\n return daysToExclude\r\n .filter(item => item.DateExclude)\r\n .map(item => parseISO(item.DateExclude || \"\"))\r\n .sort((a, b) => a.getTime() - b.getTime())\r\n .map(date => FormatShortDate(date!, true))\r\n }\r\n\r\n const datesToExclude = toExclude(daysToExclude)\r\n\r\n return (\r\n <>\r\n {datesToExclude.map((date, index) =>\r\n
\r\n {index < datesToExclude.length - 1 ? `${date},` : `${date}`}\r\n
\r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default DatesToExclude\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { format } from \"date-fns\"\r\n\r\nexport default function GovPoolCheckTestsExistObservable(poolID: number, date: Date) {\r\n const params: string = JSON.stringify({\r\n poolId: poolID.toString(),\r\n date: format(date, \"MM/dd/yyyy\")\r\n })\r\n\r\n return ObservableFromFetch(\"GovPool/CheckTestsExist\", params)\r\n}\r\n","import * as React from \"react\"\r\nimport DatePicker from 'react-datepicker'\r\nimport 'react-datepicker/dist/react-datepicker.css'\r\nimport \"../../../assets/scss/RandomSchedulingExclusions.scss\"\r\nimport DaysToExclude from \"../../../api/Randoms/GovPoolModel/DaysToExclude\"\r\nimport { parseISO, format } from \"date-fns\"\r\nimport { Button, Col, Container, Form, Modal, ModalDialog, Row, Spinner } from \"react-bootstrap\"\r\nimport Checkbox from \"../../Checkbox\"\r\nimport { ChangeEvent } from \"react\"\r\nimport ConfirmationModal from \"../../ConfirmationModal\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { toast } from \"react-toastify\"\r\nimport GovPoolCheckTestsExistObservable from \"../../../api/Randoms/GovPoolCheckTestsExist\"\r\nimport Draggable from 'react-draggable'\r\n\r\nexport interface DaysToExcludeExt extends DaysToExclude {\r\n removed?: boolean\r\n DateExcludeDt?: number\r\n}\r\n\r\ninterface RandomSchedulingExclusionsModalProps {\r\n poolID: number\r\n daysToExclude: DaysToExcludeExt[]\r\n onCancel: () => void\r\n onSave: (list: DaysToExcludeExt[]) => void\r\n}\r\n\r\ninterface RandomSchedulingExclusionsModalState {\r\n daysToExclude: DaysToExcludeExt[]\r\n weekdaysToExclude: number[]\r\n selectedDate?: Date\r\n selectedDayToExclude?: DaysToExcludeExt\r\n selectedDayDescription?: string\r\n selectedDayGender?: string\r\n selectedDayPoolID?: number\r\n showRemoveExistingEventsConfirmation: boolean\r\n showAllGroupsConfirmation: boolean\r\n dateCheckInProgress: boolean\r\n}\r\n\r\nexport class DraggableModalDialog extends React.Component {\r\n render() {\r\n return \r\n \r\n }\r\n}\r\n\r\nfunction buildDaysToExcludeList(daysToExclude: DaysToExcludeExt[]) {\r\n const parseISODate = (date: string) => {\r\n const parsed = parseISO(date)\r\n if (parsed) {\r\n return new Date(parsed.getFullYear(), parsed.getMonth(), parsed.getDate())\r\n }\r\n return undefined\r\n }\r\n\r\n return daysToExclude.map(item => ({\r\n ...item,\r\n DateExcludeDt: item.DateExcludeDt || (item.DateExclude ? parseISODate(item.DateExclude!)?.getTime() : undefined)\r\n } as DaysToExcludeExt))\r\n}\r\n\r\nfunction buildWeekdaysToExcludeList(daysToExclude: DaysToExcludeExt[]) {\r\n return daysToExclude.filter(item => item.DayOfWeekID && !item.removed).map(item => item.DayOfWeekID!)\r\n}\r\n\r\nexport default class RandomSchedulingExclusionsModal extends React.PureComponent {\r\n state: RandomSchedulingExclusionsModalState = {\r\n daysToExclude: buildDaysToExcludeList(this.props.daysToExclude),\r\n weekdaysToExclude: buildWeekdaysToExcludeList(this.props.daysToExclude),\r\n showRemoveExistingEventsConfirmation: false,\r\n showAllGroupsConfirmation: false,\r\n dateCheckInProgress: false\r\n }\r\n dateToAdd?: Date\r\n checkTestEventSubscription?: Subscription\r\n\r\n componentWillUnmount() {\r\n this.checkTestEventSubscription && this.checkTestEventSubscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: RandomSchedulingExclusionsModalProps) {\r\n if (this.props.daysToExclude !== prevProps.daysToExclude) {\r\n this.setState({\r\n daysToExclude: buildDaysToExcludeList(this.props.daysToExclude),\r\n weekdaysToExclude: buildWeekdaysToExcludeList(this.props.daysToExclude)\r\n })\r\n }\r\n }\r\n\r\n handleExclusionDateDescriptionChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n\r\n if (this.state.selectedDayToExclude) {\r\n this.state.selectedDayToExclude.Description = value\r\n }\r\n this.setState({ selectedDayDescription: value })\r\n }\r\n\r\n handleExclusionDateGenderChange = (e: ChangeEvent) => {\r\n const value = e.target.checked ? e.target.value : undefined\r\n\r\n if (this.state.selectedDayToExclude) {\r\n this.state.selectedDayToExclude.Gender = value\r\n }\r\n this.setState({ selectedDayGender: value })\r\n }\r\n\r\n handleExclusionDateAllGroupsChange = (e: ChangeEvent) => {\r\n if (e.target.checked) {\r\n this.setState({ showAllGroupsConfirmation: true })\r\n } else {\r\n this.setAllGroups(false)\r\n }\r\n }\r\n\r\n setAllGroups = (checked: boolean) => {\r\n const value = checked ? undefined : this.props.poolID\r\n\r\n if (this.state.selectedDayToExclude) {\r\n this.state.selectedDayToExclude.PoolID = value\r\n }\r\n this.setState({\r\n selectedDayPoolID: value,\r\n showAllGroupsConfirmation: false\r\n })\r\n }\r\n\r\n handleDateEvent = (date: Date | [Date, Date] | null, event: React.SyntheticEvent | undefined) => {\r\n if (!date || !(date instanceof Date)) return\r\n if (!event) {\r\n // Keyboard move\r\n let dayToExclude = this.getDayToExclude(date)\r\n this.setState({\r\n selectedDate: date,\r\n selectedDayToExclude: dayToExclude,\r\n selectedDayDescription: dayToExclude?.Description,\r\n selectedDayGender: dayToExclude?.Gender,\r\n selectedDayPoolID: dayToExclude?.PoolID\r\n })\r\n } else if (event.type === 'click') {\r\n // Mouse click\r\n this.toggleDayExclusion(date)\r\n } else if (event.type === 'keydown' && event.nativeEvent instanceof KeyboardEvent && (event.nativeEvent as KeyboardEvent).code === \"Space\") {\r\n // Space key down\r\n this.toggleDayExclusion(date)\r\n }\r\n }\r\n\r\n toggleDayExclusion = (date: Date) => {\r\n // Do not handle dates covered by weekday exclusion\r\n if (this.state.weekdaysToExclude.includes(date.getDay() + 1)) return\r\n\r\n let dayToExclude = this.getDayToExclude(date)\r\n if (!dayToExclude) {\r\n this.dateToAdd = date\r\n this.setState({ dateCheckInProgress: true })\r\n this.checkTestEventSubscription = GovPoolCheckTestsExistObservable(this.props.poolID, date).subscribe(\r\n result => result\r\n ? this.setState({ showRemoveExistingEventsConfirmation: true, dateCheckInProgress: false })\r\n : this.addDayToExclude(),\r\n error => {\r\n this.setState({ dateCheckInProgress: false })\r\n toast.error(error?.errorData?.message || error.message)\r\n }\r\n )\r\n return\r\n }\r\n if (this.state.selectedDate?.getTime() !== date.getTime()) {\r\n // Click on non-selected exclusion day - just select this day\r\n this.setState({\r\n selectedDate: date,\r\n selectedDayToExclude: dayToExclude,\r\n selectedDayDescription: dayToExclude.Description,\r\n selectedDayGender: dayToExclude.Gender,\r\n selectedDayPoolID: dayToExclude.PoolID\r\n })\r\n return\r\n }\r\n\r\n // Click on already selected exclusion date - remove the exclusion date\r\n dayToExclude.removed = true\r\n\r\n this.setState({\r\n daysToExclude: [...this.state.daysToExclude],\r\n selectedDate: date,\r\n selectedDayToExclude: undefined,\r\n selectedDayDescription: undefined,\r\n selectedDayGender: undefined,\r\n selectedDayPoolID: undefined\r\n })\r\n }\r\n\r\n addDayToExclude = () => {\r\n // Click on day without exclusion date - Add exclusion date\r\n if (this.dateToAdd) {\r\n const dayToExclude: DaysToExcludeExt = {\r\n DaysToExcludeID: 0,\r\n ImplementationID: 0,\r\n AccountID: 0,\r\n PoolID: this.props.poolID,\r\n DateExclude: format(this.dateToAdd, \"yyyy-MM-dd'T'HH:mm:ss\"),\r\n DateExcludeDt: new Date(this.dateToAdd.getFullYear(), this.dateToAdd.getMonth(), this.dateToAdd.getDate()).getTime()\r\n }\r\n this.dateToAdd = undefined\r\n this.setState({\r\n selectedDate: this.dateToAdd,\r\n daysToExclude: [...this.state.daysToExclude, dayToExclude],\r\n selectedDayToExclude: dayToExclude,\r\n selectedDayDescription: dayToExclude.Description,\r\n selectedDayGender: dayToExclude.Gender,\r\n selectedDayPoolID: dayToExclude.PoolID,\r\n showRemoveExistingEventsConfirmation: false,\r\n dateCheckInProgress: false\r\n })\r\n } else {\r\n this.setState({\r\n showRemoveExistingEventsConfirmation: false,\r\n dateCheckInProgress: false\r\n })\r\n }\r\n }\r\n\r\n getDayToExclude = (date: Date) => {\r\n const dateSeconds = date.getTime()\r\n return this.state.daysToExclude.find(item => item.DateExcludeDt === dateSeconds && !item.removed)\r\n }\r\n\r\n render() {\r\n const datesExcluded: { [id: number]: DaysToExcludeExt } = Object.assign({}, ...this.state.daysToExclude.filter(item => item.DateExcludeDt).map((x) => ({ [x.DateExcludeDt!]: x })))\r\n\r\n const dayClassName = (date: Date) => {\r\n if (this.state.weekdaysToExclude.includes(date.getDay() + 1)) {\r\n return \"excluded-day weekday\"\r\n }\r\n const excludedDate = datesExcluded[date.getTime()]\r\n if (excludedDate && !excludedDate.removed) {\r\n return (excludedDate.PoolID ?? undefined) === undefined ? \"excluded-day all-groups\" : \"excluded-day\"\r\n }\r\n return null\r\n }\r\n\r\n const { onCancel, onSave } = this.props\r\n const classNameDisabled = this.state.selectedDayToExclude ? \"\" : \" disabled\"\r\n\r\n return <>\r\n \r\n \r\n Dates to Exclude\r\n \r\n \r\n
\r\n \r\n \r\n This Group\r\n  \r\n \r\n \r\n All Groups\r\n  \r\n \r\n \r\n \r\n \r\n dayClassName(date)}\r\n />\r\n \r\n \r\n \r\n Description\r\n \r\n \r\n \r\n \r\n \r\n Exclude by Gender\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {this.state.dateCheckInProgress &&
}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n this.addDayToExclude()}\r\n onHide={() => this.setState({ showRemoveExistingEventsConfirmation: false })}>\r\n \r\n \r\n \r\n
There are collections scheduled for this date!
If you proceed to exclude this date all pending collections will be cancelled.
\r\n

Do you want to proceed?

\r\n \r\n
\r\n
\r\n
\r\n this.setAllGroups(true)}\r\n onHide={() => this.setState({ showAllGroupsConfirmation: false })} />\r\n \r\n }\r\n}\r\n","import { useCallback, useState } from \"react\"\r\nimport { Button } from \"react-bootstrap\"\r\nimport { FaRegCalendarCheck } from \"react-icons/fa\"\r\nimport RandomSchedulingExclusionsModal, { DaysToExcludeExt } from \"./RandomSchedulingExclusionsModal\"\r\n\r\nexport interface DatesToExcludeModalProps {\r\n daysExcluded: DaysToExcludeExt[]\r\n poolID: number\r\n classNameButton?: string\r\n onSave: (list: DaysToExcludeExt[]) => void\r\n}\r\n\r\nconst DatesToExcludeModal = (props: DatesToExcludeModalProps) => {\r\n const { daysExcluded, poolID, classNameButton, onSave } = props\r\n const [show, setShow] = useState(false)\r\n\r\n const handleSave = useCallback((list: DaysToExcludeExt[]) => {\r\n setShow(false)\r\n onSave(list)\r\n }, [onSave])\r\n\r\n return (\r\n <>\r\n \r\n {show && setShow(false)}\r\n onSave={handleSave} />}\r\n \r\n )\r\n}\r\n\r\nexport default DatesToExcludeModal\r\n","import * as React from \"react\"\r\nimport { Modal, Form, Button, Col, Spinner } from \"react-bootstrap\"\r\nimport { Subscription, Subject } from \"rxjs\"\r\nimport { map, debounceTime, distinctUntilChanged } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport LabAccount from \"../../../api/LabService/LabServiceModel/LabAccount\"\r\nimport GovPoolCreateObservable from \"../../../api/Randoms/GovPoolCreate\"\r\nimport GovPoolCreate from \"../../../api/Randoms/GovPoolModel/GovPoolCreate\"\r\nimport { Day } from \"../../../api/Randoms/GovPoolModel/DayOfWeek\"\r\nimport { isCompanyAdmin, isPortalAdmin } from \"../../../authentication/isAdminRole\"\r\nimport { AppState } from \"../../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport NumericInput from \"react-numeric-input\"\r\nimport { SampleType, GovPanel } from \"../../../api/Randoms/GovPoolModel/CollectionTypeResponse\"\r\nimport { WeekdaysToExclude } from \"./WeekdaysToExclude\"\r\nimport GovDevice from \"../../../api/Randoms/GovPoolModel/GovDevice\"\r\nimport GovCollection from \"../../OrderRequests/GovCollection\"\r\nimport { MaxDateMonthly, MaxDateWeekly, MinDate } from \"../../../config/Constants\"\r\nimport { DaysToExcludeExt } from \"./RandomSchedulingExclusionsModal\"\r\nimport GetDaysToExclude from \"../../../api/Randoms/GovDaysToExclude\"\r\nimport DatesToExclude from \"./DatesToExclude\"\r\nimport DatesToExcludeModal from \"./DatesToExcludeModal\"\r\n\r\ninterface AddPoolModalProps {\r\n onHide: () => void\r\n onSuccess: () => void\r\n}\r\n\r\ninterface AddPoolModalAuthProps {\r\n selectedCompany?: string\r\n isCompanyAdmin?: boolean\r\n isPortalAdmin?: boolean\r\n}\r\n\r\ninterface AddPoolModalState {\r\n groupName: string\r\n selectionInterval: string\r\n selectionFrom: number\r\n selectionTo: number\r\n labAccount: string\r\n sampleType: string\r\n panel: string\r\n device: string\r\n daysToExclude: DaysToExcludeExt[]\r\n groupNameValid: boolean\r\n saving: boolean\r\n loadingAllGroupsExclusions: boolean\r\n isPOCTDevice?: boolean\r\n isAccountServiceAvailable?: boolean\r\n minSelectionFrom: number\r\n maxSelectionFrom: number\r\n minSelectionTo: number\r\n maxSelectionTo: number\r\n}\r\n\r\nexport class AddGovPoolModal extends React.PureComponent {\r\n state: AddPoolModalState = {\r\n groupName: \"\",\r\n selectionInterval: \"\",\r\n selectionFrom: 1,\r\n selectionTo: 1,\r\n labAccount: \"\",\r\n sampleType: \"\",\r\n panel: \"\",\r\n device: \"\",\r\n daysToExclude: [],\r\n groupNameValid: true,\r\n saving: false,\r\n loadingAllGroupsExclusions: false,\r\n isPOCTDevice: false,\r\n isAccountServiceAvailable: true,\r\n minSelectionFrom: MinDate,\r\n maxSelectionFrom: MaxDateMonthly,\r\n minSelectionTo: MinDate,\r\n maxSelectionTo: MaxDateMonthly\r\n }\r\n\r\n groupName$ = new Subject>();\r\n groupNameSubscription?: Subscription\r\n allGroupsExclusionsLoadSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.setState({ loadingAllGroupsExclusions: true })\r\n this.allGroupsExclusionsLoadSubscription = GetDaysToExclude().subscribe(\r\n result => this.setState({ daysToExclude: result, loadingAllGroupsExclusions: false }),\r\n error => {\r\n this.setState({ loadingAllGroupsExclusions: false })\r\n toast.error(error?.errorData?.message || error.message)\r\n }\r\n )\r\n\r\n this.groupNameSubscription = this.groupName$.pipe(\r\n map(e => e.target.value),\r\n debounceTime(500),\r\n distinctUntilChanged()\r\n ).subscribe(value => {\r\n this.setState({ groupName: value, groupNameValid: value.length >= 8 })\r\n });\r\n\r\n const link = sessionStorage.getItem(\"company-selection-link\") || \"\"\r\n }\r\n\r\n componentWillUnmount() {\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.allGroupsExclusionsLoadSubscription && this.allGroupsExclusionsLoadSubscription.unsubscribe()\r\n this.groupNameSubscription && this.groupName$.unsubscribe()\r\n }\r\n\r\n handleGroupNameChange = (event: React.ChangeEvent) => {\r\n this.groupName$.next(event)\r\n }\r\n\r\n handleIntervalChange = (event: React.ChangeEvent) => {\r\n const interval = event.target.value\r\n const { minSelectionFrom, daysToExclude: days = [] } = this.state\r\n const maxSelectionFrom = this.maxSelectionTo(days, interval)\r\n\r\n this.setState({\r\n selectionInterval: interval,\r\n maxSelectionFrom: maxSelectionFrom,\r\n selectionFrom: minSelectionFrom,\r\n selectionTo: minSelectionFrom,\r\n minSelectionTo: minSelectionFrom,\r\n maxSelectionTo: maxSelectionFrom\r\n })\r\n }\r\n\r\n handleNumberOfSelectionChange = (value: React.ChangeEvent) => {\r\n const minSelectionFrom = Number(value)\r\n this.setState({ selectionFrom: minSelectionFrom, minSelectionTo: minSelectionFrom })\r\n }\r\n\r\n handleMaxNumberSelections = (value: React.ChangeEvent) => this.setState({ selectionTo: Number(value) })\r\n handleSampleTypeChange = (sampleType?: SampleType, isPOCTDevice?: boolean) => this.setState({ sampleType: sampleType?.SampleTypeID.toString() || \"\", isPOCTDevice: isPOCTDevice })\r\n handleLabChange = (lab?: LabAccount) => this.setState({ labAccount: lab?.LabAccount || \"\" })\r\n handlePanelChange = (panel?: GovPanel) => this.setState({ panel: panel?.ID || \"\" })\r\n handleDeviceChange = (device?: GovDevice) => this.setState({ device: device?.Code || \"\", panel: device?.PanelCode || \"\" })\r\n\r\n handleWeekdayToExcludeChange = (event: React.ChangeEvent, day: Day) => {\r\n const checked = event.target.checked\r\n const list = [...this.state.daysToExclude]\r\n const index = list.findIndex(item => item.DayOfWeekID === day)\r\n if (index === -1) {\r\n if (checked) {\r\n list.push({ ImplementationID: 0, AccountID: 0, DaysToExcludeID: 0, DayOfWeekID: day })\r\n }\r\n } else {\r\n list[index] = { ...list[index], removed: !checked }\r\n }\r\n\r\n this.putDaysToExcludeToState(list)\r\n }\r\n\r\n handleDaysToExcludeChange = (list: DaysToExcludeExt[]) => this.putDaysToExcludeToState(list)\r\n\r\n putDaysToExcludeToState = (list: DaysToExcludeExt[]) => {\r\n const { selectionInterval, selectionTo, selectionFrom } = this.state\r\n\r\n const activeDaysToExclude = list.filter(item => !item.removed)\r\n const maxSelectionFrom = this.maxSelectionTo(activeDaysToExclude, selectionInterval)\r\n this.setState({\r\n daysToExclude: list,\r\n maxSelectionFrom: maxSelectionFrom,\r\n selectionFrom: this.calcIntervalValue(activeDaysToExclude, selectionInterval, selectionFrom),\r\n maxSelectionTo: maxSelectionFrom,\r\n selectionTo: this.calcIntervalValue(activeDaysToExclude, selectionInterval, selectionTo)\r\n })\r\n }\r\n\r\n maxSelectionTo = (days: DaysToExcludeExt[], selectionInterval: string) => {\r\n switch (selectionInterval) {\r\n case \"Weekly\":\r\n return MaxDateWeekly - days.filter(item => item.DayOfWeekID).length\r\n case \"Monthly\":\r\n return MaxDateMonthly - days.filter(item => item.DayOfWeekID).length * 4\r\n default:\r\n return MaxDateMonthly\r\n }\r\n }\r\n\r\n calcIntervalValue = (days: DaysToExcludeExt[], selectionInterval: string, currentValue: number) => {\r\n const maxSelectionFrom = this.maxSelectionTo(days, selectionInterval)\r\n return currentValue === 0 || currentValue > maxSelectionFrom ? maxSelectionFrom : currentValue\r\n }\r\n\r\n isValid = () => {\r\n return this.state.groupName\r\n && this.state.groupNameValid\r\n && this.state.selectionInterval\r\n && this.state.selectionFrom\r\n && this.state.labAccount\r\n && this.state.panel\r\n && (!this.state.isPOCTDevice || (this.state.isPOCTDevice && this.state.device))\r\n && this.state.selectionFrom <= this.state.selectionTo\r\n }\r\n\r\n performSave = () => {\r\n const pool: GovPoolCreate = {\r\n Name: this.state.groupName,\r\n SelectionInterval: this.state.selectionInterval,\r\n NumberOfSelections: this.state.selectionFrom,\r\n MaxNumberSelections: this.state.selectionTo,\r\n LaboratoryAccount: this.state.labAccount,\r\n SampleTypeID: Number(this.state.sampleType),\r\n DefaultPanel: this.state.panel,\r\n DefaultDevice: this.state.isPOCTDevice ? this.state.device : \"\",\r\n Inactive: false,\r\n DaysExcluded: this.state.daysToExclude.map(item => {\r\n const { removed, ...rest } = item\r\n return { ...rest, DoRemove: (item.DaysToExcludeID ?? 0) > 0 && removed }\r\n })\r\n }\r\n this.setState({ saving: true })\r\n\r\n this.saveSubscription = GovPoolCreateObservable(pool).subscribe(\r\n () => {\r\n toast.success(\"Group created successfully.\")\r\n this.setState({ saving: false })\r\n this.props.onSuccess()\r\n },\r\n error => {\r\n this.setState({ saving: false })\r\n toast.error(error?.errorData?.message || error.message)\r\n }\r\n )\r\n }\r\n \r\n daysToExcludeWithoutRemoved = () => this.state.daysToExclude.filter(item => !item.removed)\r\n\r\n render() {\r\n const { onHide } = this.props\r\n\r\n return <>\r\n \r\n \r\n Create New Group\r\n \r\n \r\n
\r\n \r\n Group Name\r\n \r\n \r\n Group Name should contain at least 8 characters\r\n \r\n \r\n \r\n Selection Interval\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Number of Selections / Interval\r\n \r\n \r\n \r\n \r\n To\r\n \r\n \r\n \r\n \r\n \r\n \r\n Days of Week to Exclude\r\n \r\n {this.state.loadingAllGroupsExclusions\r\n ? \r\n : }\r\n \r\n \r\n \r\n Dates to Exclude\r\n \r\n {!this.state.loadingAllGroupsExclusions &&\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): AddPoolModalAuthProps {\r\n return {\r\n selectedCompany: state.Workforce1State.selectedCompany,\r\n isCompanyAdmin: isCompanyAdmin(state),\r\n isPortalAdmin: isPortalAdmin(state)\r\n }\r\n}\r\nconst ConnectedAddGovPoolModal = connect(mapStateToProps, null)(AddGovPoolModal)\r\nexport default ConnectedAddGovPoolModal\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport function SelectionReportPrint(selectionInterval: string) {\r\n const requestBody: string = new URLSearchParams({\r\n selectionInterval: selectionInterval\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"GovPool/GroupSelectionPdfReport?\" + requestBody)\r\n}\r\n","import * as React from \"react\"\r\nimport { Container, Row, Col, Spinner, Table, Button } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport GovPoolStatisticsDetailsGet from \"../../../api/Randoms/GovPoolStatisticsDetailsGet\"\r\nimport GovPoolStatisticsDetails from \"../../../api/Randoms/RandomsModel/GovPoolStatisticsDetails\"\r\nimport { SelectionReportPrint } from \"../../../api/Randoms/SelectionReportPrint\"\r\n\r\ninterface PoolStatisticsProps {\r\n poolId: number\r\n poolName: string\r\n}\r\n\r\ninterface PoolStatisticsState {\r\n statisticsLoading: boolean\r\n statistics?: GovPoolStatisticsDetails[]\r\n}\r\n\r\nexport default class PoolStatistics extends React.PureComponent {\r\n state: PoolStatisticsState = {\r\n statisticsLoading: false\r\n }\r\n\r\n statisticsSubscription?: Subscription\r\n printSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.setState({ statisticsLoading: true })\r\n this.statisticsSubscription = GovPoolStatisticsDetailsGet(this.props.poolId).subscribe(\r\n (data: GovPoolStatisticsDetails[]) =>\r\n this.setState({\r\n statisticsLoading: false,\r\n statistics: data\r\n }),\r\n () => this.setState({ statisticsLoading: false }))\r\n }\r\n\r\n componentWillUnmount() {\r\n this.printSubscription && this.printSubscription.unsubscribe()\r\n this.statisticsSubscription && this.statisticsSubscription.unsubscribe()\r\n }\r\n\r\n print(base64pdf: string) {\r\n const pdfWindow = window.open(\"\")\r\n if (pdfWindow) {\r\n pdfWindow.document.write(\"\")\r\n }\r\n }\r\n\r\n handleGroupSelectionClick = (row: GovPoolStatisticsDetails) => {\r\n this.printSubscription && this.printSubscription.unsubscribe()\r\n this.printSubscription = SelectionReportPrint(row.Period).subscribe(\r\n data => this.print(data),\r\n error => toast.error(error)\r\n )\r\n }\r\n\r\n renderRows = () => {\r\n const { statistics } = this.state\r\n if (statistics && statistics.length) {\r\n return statistics.map((row: GovPoolStatisticsDetails, i: number) =>\r\n \r\n \r\n {row.GroupSize}\r\n {row.SelectionDate}\r\n {row.TestsCompleted === 0 ? \"\" : row.TestsCompleted}\r\n {row.NoShow === 0 ? \"\" : row.NoShow}\r\n )\r\n } else {\r\n return NO DATA FOUND\r\n }\r\n }\r\n\r\n render() {\r\n return <>\r\n \r\n \r\n \r\n
TESTING PERIOD BREAKDOWN
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.state.statisticsLoading ?\r\n \r\n \r\n : this.renderRows()\r\n }\r\n \r\n
PeriodGroup SizeSelection DateTests CompletedNo Show
\r\n \r\n
\r\n
\r\n \r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport GovPoolStatisticsDetails from \"./RandomsModel/GovPoolStatisticsDetails\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function GovPoolStatisticsDetailsGetObservable(poolId: number): Observable {\r\n const requestBody: string = new URLSearchParams({\r\n govPoolId: poolId.toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"GovPool/GetGovPoolStatistics?\" + requestBody)\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport GridRow from \"./GovPoolModel/GridRow\"\r\n\r\nexport default function PoolUpdateObservable(data: GridRow) {\r\n const params: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"GovPool/UpdateGovPool\", params, \"post\")\r\n}\r\n","import * as React from \"react\"\r\nimport { Form, Button, Col, Spinner } from \"react-bootstrap\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { toast } from \"react-toastify\"\r\nimport { FaPencilAlt, FaTimes } from \"react-icons/fa\"\r\nimport { Day } from \"../../../api/Randoms/GovPoolModel/DayOfWeek\"\r\nimport GovPoolUpdateObservable from \"../../../api/Randoms/GovPoolUpdate\"\r\nimport { WeekdaysToExclude } from \"./WeekdaysToExclude\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport ConfirmationModal from \"../../ConfirmationModal\"\r\nimport GridRow from \"../../../api/Randoms/GovPoolModel/GridRow\"\r\nimport { SampleType, GovPanel } from \"../../../api/Randoms/GovPoolModel/CollectionTypeResponse\"\r\nimport GovDevice from \"../../../api/Randoms/GovPoolModel/GovDevice\"\r\nimport LabAccount from \"../../../api/LabService/LabServiceModel/LabAccount\"\r\nimport GovCollection from \"../../OrderRequests/GovCollection\"\r\nimport { DaysToExcludeExt } from \"./RandomSchedulingExclusionsModal\"\r\nimport GetDaysToExclude from \"../../../api/Randoms/GovDaysToExclude\"\r\nimport DatesToExclude from \"./DatesToExclude\"\r\nimport DatesToExcludeModal from \"./DatesToExcludeModal\"\r\n\r\ninterface GovPoolGeneralInfoProps {\r\n details: GridRow\r\n onUpdate: (updated: boolean) => void\r\n}\r\n\r\ninterface GovPoolGeneralInfoState {\r\n data: GridRow\r\n editing: boolean\r\n saving: boolean\r\n loadingDaysExcluded: boolean\r\n showSaveConfirmModal: boolean\r\n\r\n sampleTypeID?: number\r\n isPOCTDevice?: boolean\r\n labAccount?: string\r\n panelID?: string\r\n deviceCode?: string\r\n\r\n daysExcluded: DaysToExcludeExt[]\r\n}\r\n\r\nexport default class GovPoolGeneralInfo extends React.PureComponent {\r\n state: GovPoolGeneralInfoState = {\r\n data: { ...this.props.details },\r\n sampleTypeID: this.props.details.SampleTypeID,\r\n labAccount: this.props.details.LaboratoryAccount,\r\n panelID: this.props.details.DefaultPanel,\r\n deviceCode: this.props.details.DefaultDevice,\r\n editing: false,\r\n saving: false,\r\n loadingDaysExcluded: false,\r\n showSaveConfirmModal: false,\r\n daysExcluded: [...this.props.details.DaysExcluded]\r\n }\r\n\r\n updateSubscription?: Subscription\r\n loadDaysExcludedSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n this.updateSubscription?.unsubscribe()\r\n this.loadDaysExcludedSubscription?.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: GovPoolGeneralInfoProps, prevState: GovPoolGeneralInfoState) {\r\n if (this.state.data !== prevState.data && this.state.loadingDaysExcluded === prevState.loadingDaysExcluded) {\r\n this.setState({ loadingDaysExcluded: true })\r\n this.loadDaysExcludedSubscription?.unsubscribe()\r\n this.loadDaysExcludedSubscription = GetDaysToExclude(this.state.data.PoolID).subscribe(\r\n result => {\r\n this.setState(prevState => {\r\n return {\r\n ...prevState,\r\n data: { ...prevState.data, DaysExcluded: result },\r\n daysExcluded: result,\r\n loadingDaysExcluded: false\r\n }\r\n })\r\n },\r\n error => {\r\n this.setState({ loadingDaysExcluded: false })\r\n toast.error(error?.errorData?.message || error.message)\r\n }\r\n )\r\n }\r\n }\r\n\r\n handleToggleEditMode = () => {\r\n if (this.state.editing) {\r\n this.setState({\r\n sampleTypeID: this.state.data.SampleTypeID,\r\n labAccount: this.state.data.LaboratoryAccount,\r\n panelID: this.state.data.DefaultPanel,\r\n deviceCode: this.state.data.DefaultDevice,\r\n daysExcluded: this.state.data.DaysExcluded,\r\n isPOCTDevice: this.state.isPOCTDevice\r\n })\r\n }\r\n this.setState({ editing: !this.state.editing })\r\n }\r\n\r\n handleTypeChange = (type?: SampleType, isPOCTDevice?: boolean) => this.setState({ sampleTypeID: type?.SampleTypeID, isPOCTDevice: isPOCTDevice })\r\n handleLabChange = (lab?: LabAccount) => this.setState({ labAccount: lab?.LabAccount })\r\n handlePanelChange = (panel?: GovPanel) => this.setState({ panelID: panel?.ID })\r\n handleDeviceChange = (device?: GovDevice) => this.setState({ deviceCode: device?.Code.toString() })\r\n\r\n handleWeekdayToExcludeChange = (event: React.ChangeEvent, day: Day) => {\r\n const checked = event.target.checked\r\n const list = [...this.state.daysExcluded]\r\n const index = list.findIndex(item => item.DayOfWeekID === day)\r\n if (index === -1) {\r\n if (checked) {\r\n list.push({ ImplementationID: 0, AccountID: 0, DaysToExcludeID: 0, DayOfWeekID: day })\r\n }\r\n } else {\r\n list[index] = { ...list[index], removed: !checked }\r\n }\r\n\r\n this.setState({ daysExcluded: list })\r\n }\r\n\r\n handleDaysToExcludeChange = (list: DaysToExcludeExt[]) => {\r\n const addedAndRemovedDays = list.filter(item => !(item.removed && item.DaysToExcludeID === 0))\r\n this.setState({\r\n daysExcluded: [...addedAndRemovedDays]\r\n })\r\n }\r\n\r\n handleSubmit = () => {\r\n if (!this.isValid()) {\r\n return\r\n }\r\n this.setState({ showSaveConfirmModal: true })\r\n }\r\n\r\n isValid = (): boolean => {\r\n const changes = [\r\n Number(this.state.sampleTypeID) > 0,\r\n !!this.state.labAccount,\r\n !!this.state.panelID,\r\n (!this.state.isPOCTDevice || (this.state.isPOCTDevice && !!this.state.deviceCode))\r\n ]\r\n return changes.every((valid: boolean) => valid)\r\n }\r\n\r\n performSave = () => {\r\n this.setState({ saving: true, showSaveConfirmModal: false })\r\n this.updateSubscription?.unsubscribe()\r\n const data = {\r\n ...this.state.data,\r\n SampleTypeID: Number(this.state.sampleTypeID),\r\n LaboratoryAccount: String(this.state.labAccount),\r\n DefaultPanel: String(this.state.panelID),\r\n DefaultDevice: String(this.state.deviceCode),\r\n DaysExcluded: this.state.daysExcluded.filter(item => !(item.removed && item.DaysToExcludeID === 0)).map(item => {\r\n const { removed, ...rest } = item\r\n return { ...rest, DoRemove: (item.DaysToExcludeID ?? 0) > 0 && removed }\r\n })\r\n }\r\n\r\n this.updateSubscription = GovPoolUpdateObservable(data).subscribe(\r\n () => {\r\n toast.success(\"Updated group details successfully.\")\r\n this.setState({ saving: false, data: data })\r\n this.props.onUpdate(true)\r\n this.handleToggleEditMode()\r\n },\r\n () => {\r\n this.setState({ saving: false })\r\n toast.error(\"Error updating group details\")\r\n }\r\n )\r\n }\r\n\r\n daysToExcludeWithoutRemoved = () => this.state.daysExcluded.filter(item => !item.removed)\r\n\r\n render() {\r\n const { editing, daysExcluded } = this.state\r\n\r\n return <>\r\n
\r\n \r\n {
MODIFY GROUP CONFIGURATION
}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n Group Name\r\n \r\n {this.props.details.Name}\r\n \r\n \r\n \r\n Selection Interval\r\n \r\n {this.props.details.SelectionInterval}\r\n \r\n \r\n \r\n Number of Selections / Interval \r\n \r\n {this.props.details.NumberOfSelections} to {this.props.details.MaxNumberSelections || this.props.details.NumberOfSelections}\r\n \r\n \r\n \r\n \r\n Days of Week to Exclude\r\n \r\n {this.state.loadingDaysExcluded\r\n ? \r\n : }\r\n \r\n \r\n \r\n Dates to Exclude\r\n \r\n {!this.state.loadingDaysExcluded && editing &&\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showSaveConfirmModal: false })} />\r\n \r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { Tab, Tabs, Row, Col, Modal } from \"react-bootstrap\"\r\nimport PoolStatistics from \"../GovPools/PoolStatistics\"\r\nimport GovPoolGeneralInfo from \"./PoolGeneralInfo\"\r\nimport ImportPoolMembers from \"../Pools/ImportPoolMembers\"\r\nimport { AppState, CurrentUserPermissions } from \"../../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport GridRow from \"../../../api/Randoms/GovPoolModel/GridRow\"\r\nimport { BuildUserAccess } from \"../../../authentication/BuildUserAccess\"\r\nimport { control } from \"leaflet\"\r\n\r\nexport interface PoolDetailsModalProps {\r\n details: GridRow\r\n onHide: (hasUpdates: boolean) => void\r\n}\r\nexport interface PoolDetailsModalAppStateProps {\r\n showRunRandom: boolean\r\n showPersonnelImport: boolean\r\n}\r\n\r\ninterface PoolDetailsModalState {\r\n currentTab: string\r\n updated: boolean\r\n}\r\n\r\nconst StatisticsKey = \"statistics\"\r\nconst GeneralInformationKey = \"general_information\"\r\n\r\nexport class PoolDetailsModal extends React.PureComponent {\r\n state: PoolDetailsModalState = {\r\n currentTab: StatisticsKey,\r\n updated: false\r\n }\r\n\r\n onHide = () => { this.props.onHide(this.state.updated) }\r\n onUpdate = () => this.setState({ updated: true })\r\n handleRunFinish = () => this.setState({ currentTab: StatisticsKey })\r\n\r\n render() {\r\n const {details } = this.props\r\n\r\n return (\r\n \r\n \r\n GROUP DETAILS\r\n \r\n \r\n
\r\n \r\n \r\n

{details.Name}

\r\n { eventKey && this.setState({ currentTab: eventKey }) }}>\r\n \r\n {StatisticsKey === this.state.currentTab && }\r\n \r\n \r\n {GeneralInformationKey === this.state.currentTab && }\r\n \r\n {this.props.showPersonnelImport && \r\n \r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): PoolDetailsModalAppStateProps{\r\n const userAccess = BuildUserAccess(state);\r\n return {\r\n showRunRandom: userAccess.CanManageGovPools,\r\n showPersonnelImport: userAccess.CanManageGovDonors,\r\n }\r\n}\r\nconst ConnectedPoolDetailsModal = connect(mapStateToProps)(PoolDetailsModal)\r\nexport default ConnectedPoolDetailsModal\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function GovPoolSelectionUpdate(DateSelected: string, DaysSelectedID: number) {\r\n const params = JSON.stringify({\r\n DateSelected: DateSelected,\r\n DaysSelectedID: DaysSelectedID\r\n })\r\n\r\n return ObservableFromFetch(\"GovPool/UpdateGovDaysSelected\", params, \"post\")\r\n}\r\n","import * as React from \"react\"\r\nimport { Row, Col, Modal, Form } from \"react-bootstrap\"\r\nimport DatePicker from 'react-datepicker'\r\nimport 'react-datepicker/dist/react-datepicker.css'\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport GovPoolSelection from \"../../../api/Randoms/GovPoolModel/GovPoolSelection\"\r\nimport { GovPoolSelectionGet } from \"../../../api/Randoms/GovPoolSelectionGet\"\r\nimport GovPoolSelectionUpdate from \"../../../api/Randoms/GovPoolSelectioUpdate\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport { BirthdayInput } from \"../../FormattedInputs/BirthdayInput\"\r\nimport DaysToExclude from \"../../../api/Randoms/GovPoolModel/DaysToExclude\"\r\nimport { parseISO } from \"date-fns\"\r\n\r\ntype SelectionInterval = 'Monthly' | 'Weekly'\r\n\r\nexport interface GovPoolDateSelectedModalProps {\r\n onHide: () => void\r\n onSuccess: () => void\r\n dateSelected: Date\r\n dateSelectedID: number\r\n interval: SelectionInterval\r\n daysExcluded: DaysToExclude[]\r\n}\r\n\r\ninterface GovPoolDateSelectedModalState {\r\n govPoolSelection?: GovPoolSelection\r\n dateSelected: Date\r\n maxDate: Date\r\n minDate: Date\r\n}\r\n\r\nexport default class GovPoolDateSelected extends React.PureComponent {\r\n\r\n state: GovPoolDateSelectedModalState = {\r\n govPoolSelection: undefined,\r\n dateSelected: new Date(this.props.dateSelected),\r\n maxDate: new Date(),\r\n minDate: new Date()\r\n }\r\n\r\n govPoolSelectionSubcription?: Subscription\r\n govSelectionSubcriptionUpdate?: Subscription\r\n\r\n componentDidMount() {\r\n this.loadGovPoolSelection()\r\n }\r\n\r\n componentDidUpdate(prevProps: GovPoolDateSelectedModalProps) {\r\n if (this.props.dateSelectedID != prevProps.dateSelectedID) {\r\n this.loadGovPoolSelection()\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.govPoolSelectionSubcription && this.govPoolSelectionSubcription.unsubscribe()\r\n this.govSelectionSubcriptionUpdate && this.govSelectionSubcriptionUpdate.unsubscribe()\r\n }\r\n\r\n loadGovPoolSelection() {\r\n this.govPoolSelectionSubcription = GovPoolSelectionGet(this.props.dateSelectedID).subscribe(\r\n (data: GovPoolSelection) => {\r\n let selectionPeriod = data?.SelectionPeriod\r\n let { minDate, maxDate } = this.calcDateRange()\r\n this.setState({ govPoolSelection: data, minDate: minDate, maxDate: maxDate })\r\n },\r\n )\r\n }\r\n\r\n addDays(date: Date, days: number): Date {\r\n var result = new Date(date)\r\n result.setDate(result.getDate() + days)\r\n return result\r\n }\r\n\r\n calcSelectionPeriod(dateEnd: Date, dateSelected: Date): number {\r\n let resultingDate = new Date(dateEnd.getTime() - dateSelected.getTime())\r\n return resultingDate.getDate()\r\n }\r\n\r\n calcDateRange() {\r\n let minDate = new Date()\r\n minDate.setDate(minDate.getDate() + 1)\r\n\r\n let maxDate = new Date()\r\n let selectionDays = this.props.interval === \"Weekly\" ? 7 : this.props.interval === \"Monthly\" ? 30 : 120\r\n maxDate = this.addDays(maxDate, selectionDays)\r\n\r\n return { minDate, maxDate }\r\n }\r\n\r\n onHide = () => { this.props.onHide() }\r\n\r\n dateValid = () => {\r\n return this.state.dateSelected\r\n }\r\n\r\n performSave = () => {\r\n this.govSelectionSubcriptionUpdate = GovPoolSelectionUpdate(FormatDate(this.state.dateSelected), this.props.dateSelectedID).subscribe(\r\n data => {\r\n toast.success(data)\r\n this.props.onSuccess()\r\n },\r\n (error) => {\r\n toast.error(FormatError(error))\r\n })\r\n }\r\n\r\n render() {\r\n const { dateSelected, maxDate, minDate } = this.state\r\n const weekdaysExcluded = this.props.daysExcluded.filter(item => item.DayOfWeekID).map(item => item.DayOfWeekID!)\r\n const datesExcluded = this.props.daysExcluded.filter(item => item.DateExclude).map(item => parseISO(item.DateExclude!).getTime())\r\n return (\r\n \r\n \r\n CHANGE DATE\r\n \r\n \r\n \r\n \r\n Date Scheduled\r\n \r\n this.setState({ dateSelected: date as Date || undefined })}\r\n filterDate={date => !weekdaysExcluded.includes(date.getDay() + 1) && !datesExcluded.includes(date.getTime())}\r\n customInput={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Save\r\n \r\n \r\n )\r\n }\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport GovPoolSelection from \"./GovPoolModel/GovPoolSelection\"\r\n\r\nexport function GovPoolSelectionGet(dateSelectedID: number) {\r\n return ObservableFromFetch(\"GovPool/GovPoolSelection?dateSelectedID=\" + dateSelectedID)\r\n}\r\n\r\n","import * as React from \"react\"\r\nimport { Container, Row, Col, Table, Spinner, Button } from \"react-bootstrap\"\r\nimport { Subscription, BehaviorSubject, of, concat } from \"rxjs\"\r\nimport { distinctUntilChanged, switchMap, map } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { AppPageWrapper } from \"../../NavMenu/AppPageWrapper\"\r\nimport TablePagination from \"../../TablePagination\"\r\nimport GridData from \"../../../api/Randoms/GovPoolModel/GridData\"\r\nimport GridRow from \"../../../api/Randoms/GovPoolModel/GridRow\"\r\nimport { ColumnFilter } from \"../../../api/Randoms/GovPoolModel/ColumnFilter\"\r\nimport ColumnHeaderFilter from \"../../ColumnHeaderFilter\"\r\nimport AddGovPoolModal from \"./AddGovPoolModal\"\r\nimport GovPoolDetailsModal from \"./PoolDetailsModal\"\r\nimport GovPoolDateSelectedModal from \"./GovPoolDateSelectedModal\"\r\nimport { PoolGridGetObservable } from \"../../../api/Randoms/GovPoolGridGet\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\nimport { connect } from \"react-redux\"\r\nimport { AppState } from \"../../../AppState\"\r\nimport { Filter, Sort } from \"../../../api/GridRequest\"\r\nimport { CustomizableFilterColumn } from \"../../ColumnsCustomizeModal/CustomizableColumn\"\r\nimport { Day, getDayName } from \"../../../api/Randoms/GovPoolModel/DayOfWeek\"\r\nimport GenderInfo from \"../../../api/Randoms/GovPoolModel/GenderInfo\"\r\nimport DaySelected from \"../../../api/Randoms/GovPoolModel/DaySelected\"\r\nimport { BuildUserAccess } from \"../../../authentication/BuildUserAccess\"\r\n\r\ntype Column = CustomizableFilterColumn\r\ntype SelectionInterval = 'Monthly' | 'Weekly'\r\n\r\ninterface PoolsProps {\r\n canManagePools?: boolean\r\n canManagePersonnel?: boolean\r\n}\r\n\r\ninterface PoolsState {\r\n loading: boolean\r\n data?: GridData\r\n details?: GridRow\r\n detailsModal: boolean\r\n dateSelectedModal: boolean\r\n modal: boolean\r\n columns: Column[]\r\n dateSelectedID?: number\r\n dateSelected?: Date\r\n}\r\n\r\ninterface PoolGridSearchParams {\r\n pageNumber: number\r\n sort: Sort\r\n filters: Filter[]\r\n search: { field: string, text: string }\r\n}\r\n\r\nconst PageSize = 10\r\n\r\nconst defaultColumns: Column[] = [\r\n { name: \"Name\", label: \"GROUP NAME\", visible: true, filter: \"Name\" },\r\n { name: \"SelectionInterval\", label: \"SELECTION INTERVAL\", visible: true, filter: \"SelectionInterval\" },\r\n { name: \"SelectionDate\", label: \"SELECTION DATE\", visible: true, filter: \"SelectionDate\" },\r\n { name: \"DaysToSelect\", label: \"DAYS TO SELECT\", visible: true, filter: \"DaysToSelect\" },\r\n { name: \"GroupSize\", label: \"GROUP SIZE\", visible: true, filter: \"GroupSize\" },\r\n { name: \"GendersInfo\", label: \"GENDER\", visible: true },\r\n { name: \"DaysSelected\", label: \"DAYS SELECTED\", visible: true }\r\n]\r\n\r\nclass RandomGovPools extends React.PureComponent {\r\n state: PoolsState = {\r\n loading: false,\r\n detailsModal: false,\r\n dateSelectedModal: false,\r\n modal: false,\r\n columns: defaultColumns,\r\n dateSelectedID: undefined,\r\n dateSelected: undefined\r\n }\r\n\r\n page$ = new BehaviorSubject({\r\n pageNumber: 1,\r\n sort: { column: \"\", order: \"\" },\r\n filters: [],\r\n search: { field: \"\", text: \"\" }\r\n })\r\n\r\n pageSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.pageSubscription = this.page$.pipe(\r\n distinctUntilChanged(),\r\n switchMap((params: PoolGridSearchParams) => concat(\r\n of({ loading: true }),\r\n PoolGridGetObservable(params.pageNumber, PageSize, params.sort, params.filters, params.search).pipe(\r\n map((result: GridData) => ({ data: result, loading: false })))\r\n )\r\n )\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: GridData }) => {\r\n if (newState.data) {\r\n if (newState.data.SelectionDate?.length) {\r\n newState.data.SelectionDate = newState.data.SelectionDate.map(dateString => FormatDate(dateString))\r\n }\r\n this.setState({ loading: newState.loading, data: newState.data })\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n },\r\n (error: string) => {\r\n this.setState({ loading: false })\r\n toast.error(error)\r\n }\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n this.page$.unsubscribe()\r\n }\r\n\r\n handlePageChange = (pageNumber: number) => this.page$.next({ ...this.page$.value, pageNumber: pageNumber })\r\n\r\n sortGrid(column: string, order?: string) {\r\n const newSort = { column: column, order: order || \"\" }\r\n this.page$.next({ ...this.page$.value, sort: newSort })\r\n }\r\n\r\n filterGrid(column: string, items: string[]) {\r\n const filters = [...this.page$.value.filters]\r\n const filter = { column: column, values: items }\r\n let index = filters.findIndex(item => item.column === filter.column)\r\n if (index >= 0) {\r\n filters[index] = filter\r\n } else {\r\n filters.push(filter)\r\n }\r\n\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, filters: filters })\r\n }\r\n\r\n visibleColumns = () => this.state.columns.filter(col => col.visible)\r\n\r\n headerColumns = () => this.visibleColumns().map((col: Column, i) => {\r\n const sort = this.page$.value.sort\r\n return (\r\n \r\n {this.state.data && col.filter && col.filter in this.state.data && item.column === col.filter)?.values || []}\r\n sort={sort.column === col.name ? sort.order === \"asc\" ? \"asc\" : \"desc\" : undefined}\r\n items={this.state.data[col.filter as keyof ColumnFilter]?.filter(item => !!item) || []}\r\n onSort={(order?: string) => this.sortGrid(col.name, order)}\r\n onFilter={(items: string[]) => col.filter && this.filterGrid(col.filter, items)}\r\n />}\r\n {(!this.state.data || !col.filter) && (col.label || col.name)}\r\n \r\n )\r\n })\r\n\r\n formatGender = (values: GenderInfo[]) => values?.map(o => `${o.Type}:${o.Count}`).join(', ')\r\n\r\n intersperse = (arr: React.ReactElement[], sep: string) => {\r\n if (arr.length === 0) {\r\n return []\r\n }\r\n return arr.slice(1).reduce(function (xs, x, i) {\r\n return xs.concat([{sep}, x]);\r\n }, [arr[0]])\r\n }\r\n\r\n formatDaysSelected = (row: GridRow) => {\r\n const { DaysSelected: daysSelected, SelectionInterval: selectionInterval } = row\r\n let days: React.ReactElement[] = []\r\n if (selectionInterval === \"Weekly\") {\r\n days = daysSelected?.sort((a, b) => a.DayOfWeek - b.DayOfWeek).map(elem => {\r\n if (new Date(elem.DateSelected) > new Date()) {\r\n return ()\r\n }\r\n else {\r\n return ({getDayName(elem.DayOfWeek)})\r\n }\r\n })\r\n }\r\n if (selectionInterval === \"Monthly\") {\r\n days = daysSelected?.sort((a, b) => new Date(a.DateSelected).getTime() - new Date(b.DateSelected).getTime()).map(elem => {\r\n if (new Date(elem.DateSelected) > new Date()) {\r\n return ()\r\n }\r\n else {\r\n return ({FormatDate(elem.DateSelected)})\r\n }\r\n })\r\n }\r\n return this.intersperse(days, \", \");\r\n }\r\n\r\n renderRows = () => {\r\n if (this.state.data?.Records && this.state.data?.Records.length) {\r\n return this.state.data.Records.map((row: GridRow, i: number) =>\r\n \r\n \r\n {row.SelectionInterval}\r\n {FormatDate(row.SelectionDate)}\r\n {row.DaysToSelect > 0 && row.DaysToSelect}\r\n {row.GroupSize > 0 && row.GroupSize}\r\n {this.formatGender(row.GendersInfo)}\r\n {this.formatDaysSelected(row)}\r\n )\r\n } else {\r\n return No Records Found\r\n }\r\n }\r\n\r\n showDetailsModal = (details: GridRow) => this.setState({ detailsModal: true, details: details })\r\n\r\n showChangeDateModal = (dateSelectedID: number, dateSelected: Date, details: GridRow) => {\r\n this.setState({ dateSelectedModal: true, dateSelectedID: dateSelectedID, dateSelected: dateSelected, details: details })\r\n }\r\n\r\n hideDetailsModal = (hasUpdates: boolean) => {\r\n if (hasUpdates) {\r\n this.handlePageChange(1)\r\n }\r\n this.setState({ detailsModal: false, details: undefined })\r\n }\r\n\r\n hideDateSelectedModal = () => {\r\n this.setState({ dateSelectedModal: false })\r\n }\r\n\r\n showModal = () => this.setState({ modal: true })\r\n hideModal = () => this.setState({ modal: false })\r\n reload = () => this.page$.next({ ...this.page$.value, pageNumber: 1 })\r\n\r\n handleCreateSuccessful = () => {\r\n this.hideModal()\r\n this.reload()\r\n }\r\n\r\n handleUpdateSuccessful = () => {\r\n this.hideDateSelectedModal()\r\n this.reload()\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n IVR Phone Number: (833) 589-2187\r\n \r\n \r\n {this.state.detailsModal && this.state.details && }\r\n {this.state.dateSelectedModal && this.state.details &&\r\n }\r\n {this.state.modal && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.headerColumns()}\r\n \r\n \r\n \r\n {\r\n this.state.loading ?\r\n \r\n \r\n : this.renderRows()\r\n }\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n {this.state.data ?\r\n \r\n \r\n Total records: {this.state.loading ? \" ... \" : this.state.data.Total}\r\n \r\n \r\n : undefined}\r\n
\r\n
\r\n )\r\n }\r\n}\r\nfunction mapStateToProps(state: AppState): PoolsProps {\r\n const userAccess = BuildUserAccess(state);\r\n return {\r\n canManagePools: userAccess.canManagePools,\r\n canManagePersonnel: userAccess.canManagePersonnel,\r\n }\r\n}\r\nconst ConnectedRandomGovPools = connect(mapStateToProps, null)(RandomGovPools)\r\nexport default ConnectedRandomGovPools\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport GridData from \"./GovPoolModel/GridData\"\r\nimport { Filter, Sort } from \"../GridRequest\"\r\n\r\nexport function PoolGridGetObservable(pageNumber: number, pageSize: number, sort: Sort, filters: Filter[], search: { field: string, text: string }) {\r\n const requestBody: string = JSON.stringify({\r\n Filters: {\r\n Name: filters.find(filter => filter.column === \"Name\")?.values || [],\r\n SelectionInterval: filters.find(filter => filter.column === \"SelectionInterval\")?.values || [],\r\n SelectionDate: filters.find(filter => filter.column === \"SelectionDate\")?.values || [],\r\n DaysToSelect: filters.find(filter => filter.column === \"DaysToSelect\")?.values || [],\r\n GroupSize: filters.find(filter => filter.column === \"GroupSize\")?.values || [],\r\n },\r\n PageNumber: pageNumber,\r\n PageSize: pageSize,\r\n SortGrid: { SortColumn: sort.column, SortOrder: sort.order.toUpperCase() },\r\n })\r\n\r\n return ObservableFromFetch(\"GovPool/GetGrid\", requestBody)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport GovPoolData from \"./RandomsModel/GovPoolData\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function GovPoolsObservable(): Observable {\r\n return ObservableFromFetch(\"GovDonor/GetGovPools\")\r\n}\r\n","import { Observable } from \"rxjs\";\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport DonorRecord from \"../Randoms/RandomsModel/DonorRecord\"\r\n\r\nexport function GovDonorAddObservable(data: DonorRecord): Observable {\r\n const params: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"GovDonor/CreateDonor\", params)\r\n}\r\n","import { Observable } from \"rxjs\";\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport DonorRecord from \"../Randoms/RandomsModel/DonorRecord\"\r\n\r\nexport function GovDonorEditObservable(data: DonorRecord): Observable {\r\n const params: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"GovDonor/UpdateDonor\", params)\r\n}\r\n","import React from 'react'\r\nimport { Button, Col, Container, Form } from 'react-bootstrap'\r\nimport DatePicker from \"react-datepicker\"\r\nimport { EmailRegexp, PhoneRegexp, NameRegexp, InvalidNameMessage, MaxDonorIdLength, InvalidDonorIdLength, DonorIdRegexp, InvalidDonorId } from '../../config/Constants';\r\nimport FormatZipCode from '../../formatters/FormatZipCode';\r\nimport PhoneNumberMaskedInput from '../FormattedInputs/PhoneNumberMaskedInput';\r\nimport State from '../../api/OrderRequests/OrderRequestsModel/State';\r\nimport { Subscription } from 'rxjs';\r\nimport { StateObservable } from '../../api/OrderRequests/OrderRequestsConstraintGet';\r\nimport StateSelect from '../FormattedInputs/StateSelect';\r\nimport AutoFilterLocation from '../../api/Location/LocationModel/AutoFilterLocation';\r\nimport AutoFilterCompany from '../../api/Companies/CompanyModel/AutoFilterCompany';\r\nimport AutoFilterRegion from '../../api/Regions/Model/AutoFilterRegion';\r\nimport AutoFilterLocationsGet from '../../api/Location/AutoFilterLocationsGet';\r\nimport CompanyInput from '../FormattedInputs/CompanyInput';\r\nimport GovPoolData from '../../api/Randoms/RandomsModel/GovPoolData';\r\nimport GovPoolGet from '../../api/Randoms/GovPoolGet';\r\nimport { AppState } from '../../AppState';\r\nimport { connect } from 'react-redux';\r\nimport { isCompanyAdmin, isLocationAdmin, isPortalAdmin } from \"../../authentication/isAdminRole\";\r\nimport { GetSelectedAssignedClinic } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\";\r\nimport DonorRecord from '../../api/Randoms/RandomsModel/DonorRecord';\r\nimport { GovDonorAddObservable } from '../../api/GovDonor/GovDonorAddObservable';\r\nimport { toast } from 'react-toastify';\r\nimport ActionButton from '../ActionButton';\r\nimport GridRow from '../../api/GovDonor/GridRow'\r\nimport { GovDonorEditObservable } from '../../api/GovDonor/GovDonorEditObservable';\r\nimport FormatPhone from '../../formatters/FormatPhone';\r\nimport { FaPencilAlt, FaTimes } from \"react-icons/fa\"\r\nimport FormatError from '../../formatters/FormatError';\r\nimport FormatDate from '../../formatters/FormatDate';\r\n\r\ntype StateKey = \"WorkPhone\" | \"MobilePhone\"\r\ntype StateValidKey = \"isWorkPhoneValid\" | \"isMobilePhoneValid\"\r\n\r\ninterface EditGovDonorProps {\r\n PersonID?: number\r\n editing: boolean\r\n onHide: (hasUpdates: boolean) => void\r\n onSuccess: () => void\r\n row?: GridRow\r\n}\r\n\r\ninterface EditGovDonorAuthProps {\r\n companyID?: number\r\n isLocationAdmin?: boolean\r\n isCompanyAdmin?: boolean\r\n isPortalAdmin?: boolean\r\n}\r\n\r\ninterface DonorDetailsValidity {\r\n isDonorIdValid: boolean\r\n isLastNameValid: boolean\r\n isFirstNameValid: boolean\r\n isMobilePhoneValid: boolean\r\n isWorkPhoneValid: boolean\r\n isGenderValid: boolean\r\n isGroupAssignmentValid: boolean\r\n isEmailValid: boolean\r\n}\r\n\r\ninterface EditGovDonorState extends DonorDetailsValidity {\r\n HireDate: string\r\n Gender?: string\r\n Birthday: string\r\n FirstName: string\r\n LastName: string\r\n DonorId: string\r\n GroupAssignment: string\r\n GroupAssignmentName: string\r\n Zip: string\r\n City: string\r\n Address1: string\r\n WorkPhone: string\r\n MobilePhone: string\r\n Email: string\r\n Active: boolean\r\n states: State[]\r\n state?: State\r\n locations: AutoFilterLocation[]\r\n selectedLocation?: AutoFilterLocation\r\n companies: AutoFilterCompany[]\r\n selectedCompany?: AutoFilterCompany\r\n govPools: GovPoolData[]\r\n saving: boolean\r\n editing: boolean\r\n\r\n isStatesLoading: boolean\r\n isLocationsLoading: boolean\r\n isCompaniesLoading: boolean\r\n isGovPoolsLoading: boolean\r\n}\r\n\r\nclass EditGovDonorForm extends React.Component {\r\n subscriptions = new Subscription()\r\n saveSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.setState({ isStatesLoading: true, isCompaniesLoading: true, isGovPoolsLoading: true })\r\n this.setState({ editing: this.props.editing })\r\n\r\n this.subscriptions.add(\r\n GovPoolGet().subscribe(\r\n (results: GovPoolData[]) => this.setState({ govPools: results, isGovPoolsLoading: false }),\r\n (error) => {\r\n this.setState({ isGovPoolsLoading: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n )\r\n\r\n this.subscriptions.add(\r\n StateObservable().subscribe(\r\n (results: State[]) => {\r\n if (this.props.row?.PersonID) {\r\n var selectedState = results.find(state => state.Abbreviation === this.props.row?.StateCode);\r\n if (selectedState !== undefined) {\r\n this.setState({ state: selectedState })\r\n }\r\n }\r\n this.setState({ states: results, isStatesLoading: false }),\r\n () => {\r\n this.setState({ isStatesLoading: false })\r\n }\r\n },\r\n )\r\n )\r\n\r\n this.loadPersonData()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n this.saveSubscription?.unsubscribe()\r\n }\r\n\r\n loadPersonData() {\r\n if (!this.props.row || !this.props.PersonID) {\r\n return\r\n }\r\n this.setState({\r\n HireDate: this.props.row?.HireDate,\r\n Gender: this.props.row?.Gender,\r\n Birthday: this.props.row?.DateOfBirth,\r\n LastName: this.props.row?.LastName!,\r\n FirstName: this.props.row?.FirstName!,\r\n DonorId: this.props.row?.EmployerID.toString(),\r\n GroupAssignment: (this.props.row?.GovPoolID || \"\").toString(),\r\n GroupAssignmentName: this.props.row?.GovPoolName,\r\n Zip: this.props.row?.Zip,\r\n City: this.props.row?.City,\r\n Address1: this.props.row?.Address,\r\n WorkPhone: this.props.row?.WorkPhone,\r\n MobilePhone: this.props.row?.CellPhone,\r\n Email: this.props.row?.Email,\r\n Active: this.props.row?.Active\r\n })\r\n }\r\n\r\n performSave = () => {\r\n const donor: DonorRecord = {\r\n PersonID: this.props.PersonID,\r\n FirstName: this.state.FirstName.trim(),\r\n LastName: this.state.LastName.trim(),\r\n DonorId: this.state.DonorId.replace(/\\s+/g, \" \").replace(/[-']/g,\"\"),\r\n GovPoolId: this.state.GroupAssignment,\r\n IntakeDate: FormatDate(this.state.HireDate),\r\n Gender: this.state.Gender,\r\n Birthday: FormatDate(this.state.Birthday),\r\n Company: this.state.selectedCompany?.AccountID,\r\n Location: this.state.selectedLocation?.AccountID,\r\n Address1: this.state.Address1,\r\n City: this.state.City,\r\n State: this.state.state?.StateProvinceTerritoryID,\r\n WorkPhone: this.state.WorkPhone.replace(/\\D/g, \"\"),\r\n MobilePhone: this.state.MobilePhone.replace(/\\D/g, \"\"),\r\n Email: this.state.Email,\r\n Inactive: !this.state.Active,\r\n Zip: this.state.Zip,\r\n isPortalAdmin: this.props.isPortalAdmin\r\n }\r\n if (!donor.Company) {\r\n donor.Company = this.props.companyID\r\n }\r\n this.setState({ saving: true })\r\n\r\n this.saveSubscription = ((this.props.PersonID === undefined) ? GovDonorAddObservable(donor) : GovDonorEditObservable(donor)).subscribe(\r\n data => {\r\n toast.success(data)\r\n this.setState({ saving: false })\r\n this.props.onSuccess();\r\n },\r\n error => {\r\n this.setState({ saving: false })\r\n toast.error(error?.errorData?.message || error.message)\r\n }\r\n )\r\n }\r\n\r\n loadAllLocations = (company?: AutoFilterCompany, region?: AutoFilterRegion) => {\r\n this.setState({ isLocationsLoading: true })\r\n this.subscriptions.add(\r\n AutoFilterLocationsGet(company?.AccountID || 0, region?.Code || \"\", \"\").subscribe(\r\n data => {\r\n let location = data.find(l => l.AccountID === this.props.row?.LocationID)\r\n if (this.props.isLocationAdmin && !this.props.PersonID) {\r\n location = data[0]\r\n }\r\n this.setState({ locations: data, isLocationsLoading: false, selectedLocation: location })\r\n },\r\n () => this.setState({ isLocationsLoading: false })\r\n )\r\n )\r\n }\r\n\r\n defaultState: EditGovDonorState = {\r\n HireDate: \"\",\r\n Gender: \"\",\r\n Birthday: \"\",\r\n FirstName: \"\",\r\n LastName: \"\",\r\n DonorId: \"\",\r\n GroupAssignment: \"\",\r\n GroupAssignmentName: \"\",\r\n Zip: \"\",\r\n City: \"\",\r\n Address1: \"\",\r\n WorkPhone: \"\",\r\n MobilePhone: \"\",\r\n Email: \"\",\r\n Active: true,\r\n states: [],\r\n state: undefined,\r\n locations: [],\r\n selectedLocation: undefined,\r\n companies: [],\r\n selectedCompany: undefined,\r\n govPools: [],\r\n\r\n isDonorIdValid: true,\r\n isLastNameValid: true,\r\n isFirstNameValid: true,\r\n isMobilePhoneValid: true,\r\n isWorkPhoneValid: true,\r\n isGenderValid: true,\r\n isGroupAssignmentValid: true,\r\n isEmailValid: true,\r\n\r\n isStatesLoading: true,\r\n isLocationsLoading: false,\r\n isCompaniesLoading: false,\r\n isGovPoolsLoading: false,\r\n saving: false,\r\n editing: false,\r\n }\r\n\r\n state: EditGovDonorState = { ...this.defaultState }\r\n\r\n handleFirstNameChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value || \"\"\r\n this.setState({ FirstName: value, isFirstNameValid: this.isNameValid(value) })\r\n }\r\n\r\n handleLastNameChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value || \"\"\r\n this.setState({ LastName: value, isLastNameValid: this.isNameValid(value) })\r\n }\r\n\r\n handleDonorIdChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value.trim()\r\n this.setState({ DonorId: value, isDonorIdValid: this.isDonorIdValid(value) })\r\n }\r\n handleGenderChange = (event: React.ChangeEvent) => this.setState({ Gender: event.target.value })\r\n handleCompanyChange = (selected: AutoFilterCompany) => {\r\n this.setState({ selectedCompany: selected })\r\n if (!this.props.isPortalAdmin) {\r\n this.loadAllLocations(selected, undefined)\r\n }\r\n }\r\n\r\n handleLocationChange = (event: React.ChangeEvent) => {\r\n let location = this.state.locations.find(l => l.AccountID === Number(event.target.value))\r\n this.setState({ selectedLocation: location })\r\n }\r\n handleStreetAddressChange = (event: React.ChangeEvent) => this.setState({ Address1: event.target.value })\r\n handleCityChange = (event: React.ChangeEvent) => this.setState({ City: event.target.value })\r\n handleStateChange = (state: State) => this.setState({ state: state })\r\n handleZipChange = (event: React.ChangeEvent) => this.setState({ Zip: FormatZipCode(event.target.value) })\r\n handleWorkPhoneChange = (value: string, stateKey: StateKey, stateValidKey: StateValidKey) => this.setState({ ...{}, [stateKey]: value, [stateValidKey]: this.isPhoneValid(value) })\r\n handleMobilePhoneChange = (value: string, stateKey: StateKey, stateValidKey: StateValidKey) => this.setState({ ...{}, [stateKey]: value, [stateValidKey]: this.isPhoneValid(value) })\r\n handleEmailChange = (event: React.ChangeEvent) => this.setState({ Email: event.target.value, isEmailValid: this.emailValid(event.target.value) })\r\n handleGroupAssignmentChange = (event: React.ChangeEvent) => this.setState({ GroupAssignment: event.target.value })\r\n isNameValid = (value: string) => (value.length > 0 && NameRegexp.test(value))\r\n emailValid = (value: string) => (value.length === 0) || EmailRegexp.test(value)\r\n isPhoneValid = (value: string) => (value.length === 0 || value.toLowerCase() === 'n/p' || PhoneRegexp.test(FormatPhone(value)))\r\n isDonorIdValid = (value: string) => (value.length > 0 && value.length <= MaxDonorIdLength && DonorIdRegexp.test(value))\r\n handleToggleEditMode = () => this.setState((prevState) => { return { editing: !prevState.editing } })\r\n isValid = () => {\r\n return this.isNameValid(this.state.FirstName) && this.isNameValid(this.state.LastName) && this.isDonorIdValid(this.state.DonorId) && !!this.state.Gender &&\r\n this.isPhoneValid(this.state.WorkPhone) && this.isPhoneValid(this.state.MobilePhone) && this.emailValid(this.state.Email) && !!this.state.Birthday\r\n }\r\n\r\n render() {\r\n const editable = this.state.editing ? \"form-group required\" : \"form-group\"\r\n const donorInfoLabel = this.props.PersonID ? \"DONOR INFO\" : \"\"\r\n return
\r\n \r\n
\r\n {this.props.PersonID && \r\n \r\n \r\n \r\n }\r\n \r\n
{donorInfoLabel}
\r\n \r\n \r\n \r\n
Group Assignment
\r\n \r\n \r\n {!this.state.editing && {this.state.GroupAssignmentName}}\r\n {this.state.editing && \r\n \r\n {this.state.govPools.map(gp => )}\r\n }\r\n \r\n
\r\n \r\n
\r\n \r\n First Name\r\n \r\n {!this.state.editing && {this.state.FirstName}}\r\n {this.state.editing && }\r\n {this.state.editing && {InvalidNameMessage}}\r\n \r\n \r\n \r\n Last Name\r\n \r\n {!this.state.editing && {this.state.LastName}}\r\n {this.state.editing && }\r\n {this.state.editing && {InvalidNameMessage}}\r\n \r\n \r\n \r\n Donor ID\r\n \r\n {!this.state.editing && {this.state.DonorId}}\r\n {this.state.editing && }\r\n {this.state.editing && \r\n {!DonorIdRegexp.test(this.state.DonorId) ? InvalidDonorId : InvalidDonorIdLength}\r\n }\r\n \r\n \r\n \r\n Intake Date\r\n \r\n {!this.state.editing && {FormatDate(this.state.HireDate)}}\r\n {this.state.editing && this.setState({ HireDate: date?.toString() || \"\" })}\r\n />}\r\n \r\n \r\n \r\n Gender\r\n \r\n {!this.state.editing && {this.state.Gender === \"M\" ? \"Male\" : \"Female\"}}\r\n {this.state.editing && \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n Date of Birth\r\n \r\n {!this.state.editing && {FormatDate(this.state.Birthday)}}\r\n {this.state.editing && this.setState({ Birthday: date?.toString() || \"\" })} />}\r\n \r\n \r\n \r\n Company\r\n \r\n {(!this.props.isPortalAdmin || (this.props.isPortalAdmin && !this.state.editing)) && {this.state.selectedCompany?.Name}}\r\n {this.state.editing && this.props.isPortalAdmin && this.handleCompanyChange(items[0])} placeholder=\"Choose a company...\" />}\r\n \r\n \r\n \r\n Location\r\n \r\n {(this.props.isLocationAdmin || ((this.props.isPortalAdmin || this.props.isCompanyAdmin) && !this.state.editing)) && {this.state.selectedLocation?.Name}}\r\n {(this.props.isPortalAdmin || this.props.isCompanyAdmin) && this.state.editing && \r\n \r\n {this.state.locations.map(l => )}\r\n }\r\n \r\n \r\n \r\n Street Address\r\n \r\n {!this.state.editing && {this.state.Address1}}\r\n {this.state.editing && }\r\n \r\n \r\n \r\n City\r\n \r\n {!this.state.editing && {this.state.City}}\r\n {this.state.editing && }\r\n \r\n \r\n \r\n State\r\n \r\n {!this.state.editing && {this.state.state?.FullName}}\r\n {this.state.editing && this.handleStateChange(state)} />}\r\n \r\n \r\n \r\n Zip\r\n \r\n {!this.state.editing && {this.state.Zip}}\r\n {this.state.editing && }\r\n \r\n \r\n \r\n Work Phone\r\n \r\n {!this.state.editing && {FormatPhone(this.state.WorkPhone)}}\r\n {this.state.editing && this.handleWorkPhoneChange(value, \"WorkPhone\", \"isWorkPhoneValid\")} isInvalid={!this.state.isWorkPhoneValid} />}\r\n \r\n \r\n \r\n Mobile Phone\r\n \r\n {!this.state.editing && {FormatPhone(this.state.MobilePhone)}}\r\n {this.state.editing && this.handleMobilePhoneChange(value, \"MobilePhone\", \"isMobilePhoneValid\")} isInvalid={!this.state.isMobilePhoneValid} />}\r\n \r\n \r\n \r\n Email\r\n \r\n {!this.state.editing && {this.state.Email}}\r\n {this.state.editing && }\r\n \r\n \r\n {this.props.PersonID && \r\n ACTIVE\r\n \r\n {this.state.editing && ) => this.setState({ Active: e.target.checked })} className=\"mt-2\" />}\r\n {!this.state.editing && {this.state.Active ? \"Yes\" : \"No\"} }\r\n \r\n }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): EditGovDonorAuthProps {\r\n const selectedCompany = GetSelectedAssignedClinic(state) \r\n return {\r\n companyID: selectedCompany?.AccountID || 0,\r\n isLocationAdmin: isLocationAdmin(state),\r\n isCompanyAdmin: isCompanyAdmin(state),\r\n isPortalAdmin: isPortalAdmin(state)\r\n }\r\n}\r\n\r\nconst ConnectedEditGovDonor = connect(mapStateToProps, null)(EditGovDonorForm)\r\nexport default ConnectedEditGovDonor\r\n","import React, { PureComponent } from 'react'\r\nimport { Modal } from 'react-bootstrap'\r\nimport EditGovDonorForm from './EditGovDonorForm';\r\n\r\ninterface AddGovDonorProps {\r\n show: boolean\r\n onHide: () => void\r\n onSuccess: () => void\r\n}\r\n\r\nexport default class AddGovDonorModal extends React.Component {\r\n\r\n render() {\r\n const { show, onHide } = this.props\r\n\r\n return \r\n \r\n Add Donor\r\n \r\n \r\n this.props.onSuccess()} onHide={this.props.onHide} editing PersonID={undefined} />\r\n \r\n \r\n }\r\n}\r\n\r\n","import React, { PureComponent } from 'react'\r\nimport { Button, Col, Container, Form, Modal, Row, Tab, Table, Tabs } from 'react-bootstrap'\r\nimport { toast } from 'react-toastify'\r\nimport { BehaviorSubject, concat, of, Subscription } from 'rxjs'\r\nimport { distinctUntilChanged, switchMap, map } from 'rxjs/operators'\r\nimport { IVRCallLogObservable } from '../../api/GovDonor/IVRCallLogObservable'\r\nimport { IVRCallLogRequest } from '../../api/GovDonor/Model/IVRCallLogRequest'\r\nimport { IVRLog } from '../../api/GovDonor/Model/IVRLog'\r\nimport FormatDate from '../../formatters/FormatDate'\r\nimport DatePicker from \"react-datepicker\"\r\nimport ActionButton from '../ActionButton'\r\nimport FormatPhone from '../../formatters/FormatPhone'\r\n\r\ninterface IVRLogProps {\r\n PersonID: number\r\n}\r\n\r\ninterface IVRLogState {\r\n from: Date\r\n to: Date\r\n data: IVRLog[]\r\n loading: boolean\r\n}\r\n\r\n\r\nexport default class IVRLogForm extends PureComponent {\r\n state = {loading: false, from: new Date(new Date().setDate(new Date().getDate() - 30)), to: new Date(), data: []}\r\n\r\n pageSubscription?: Subscription\r\n page$ = new BehaviorSubject({\r\n PersonId: this.props.PersonID,\r\n FromDate: this.state.from.toDateString(),\r\n ToDate: this.state.to.toDateString(),\r\n })\r\n\r\n componentDidMount() {\r\n this.pageSubscription = this.page$.pipe(\r\n distinctUntilChanged(),\r\n switchMap((params: IVRCallLogRequest) => concat(\r\n of({ loading: true }),\r\n IVRCallLogObservable(params).pipe(\r\n map((result: IVRLog[]) => ({ data: result, loading: false })))\r\n )\r\n )\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: IVRLog[] }) => {\r\n if (newState.data) {\r\n this.setState({ loading: newState.loading, data: newState.data })\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n },\r\n (error: string) => {\r\n this.setState({ loading: false })\r\n toast.error(error)\r\n }\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n this.page$.unsubscribe()\r\n }\r\n\r\n applyFilter = () => this.page$.next({ ...this.page$.value, FromDate: this.state.from.toDateString(), ToDate: new Date((new Date()).setDate(this.state.to.getDate() + 1)).toDateString() })\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n From\r\n this.setState({ from: date as Date})}\r\n />\r\n To\r\n this.setState({ to: date as Date})}\r\n />\r\n Search\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.data && this.state.data.map((row: IVRLog) => \r\n \r\n \r\n \r\n )}\r\n {!this.state.data?.length && }\r\n \r\n
DateFromPhoneMessage
{FormatDate(row.CallDate)}{row.PhoneNumber}{row.Message}
No Records Found
\r\n
)\r\n }\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { IVRCallLogRequest } from \"./Model/IVRCallLogRequest\"\r\nimport { IVRLog } from \"./Model/IVRLog\"\r\n\r\nexport function IVRCallLogObservable(request: IVRCallLogRequest) {\r\n const requestBody: string = JSON.stringify(request)\r\n\r\n return ObservableFromFetch(\"GovDonor/GetIVRCallLog\", requestBody)\r\n}\r\n","import React, { PureComponent } from 'react'\r\nimport { Button, Container, Modal, Row, Col, Tab, Tabs, Image } from 'react-bootstrap'\r\nimport { Link } from 'react-router-dom'\r\nimport GridRow from '../../api/GovDonor/GridRow'\r\nimport CurrentServiceHistory from '../OrderResults/EmployeeDetails/CurrentServiceHistory'\r\nimport EditGovDonorForm from './EditGovDonorForm'\r\nimport IVRLogForm from './IVRLogForm'\r\n\r\nconst IVRLogKey = \"ivr-log\"\r\nconst GeneralInformation = \"general-informatioh\"\r\nconst ServiceKey = \"service\"\r\n\r\ninterface GovDonorDetailsProps {\r\n details: GridRow\r\n onHide: (hasUpdates: boolean) => void\r\n}\r\n\r\ninterface GovDonorDetailsState {\r\n currentTab: string\r\n editing: boolean\r\n}\r\n\r\nexport default class GovDonorDetailsModal extends PureComponent {\r\n state = { currentTab: GeneralInformation, editing: false }\r\n\r\n handleSuccessful = () => {\r\n this.props.onHide(true)\r\n }\r\n\r\n render() {\r\n const { PersonID, FirstName, LastName, EmployerID, GovAccessCode } = this.props.details\r\n return (\r\n this.props.onHide(false)}>\r\n Donor Details\r\n \r\n \r\n \r\n \r\n

{`${LastName}, ${FirstName}`} - {EmployerID}

\r\n \r\n \r\n

Access Code: {GovAccessCode}

\r\n \r\n \r\n ORDER TEST\r\n \r\n
\r\n \r\n \r\n { eventKey && this.setState({ currentTab: eventKey }) }}>\r\n \r\n {GeneralInformation === this.state.currentTab && this.handleSuccessful()} onHide={this.props.onHide} editing={false} PersonID={PersonID} />}\r\n \r\n \r\n {IVRLogKey === this.state.currentTab && }\r\n \r\n {\r\n {ServiceKey === this.state.currentTab && }\r\n }\r\n \r\n \r\n \r\n
\r\n
\r\n {this.state.currentTab !== GeneralInformation && \r\n \r\n }\r\n
\r\n )\r\n }\r\n}\r\n","import React, { PureComponent } from 'react'\r\nimport { Button, Col, Container, Row, Spinner, Table } from 'react-bootstrap'\r\nimport { Subscription, BehaviorSubject, of, concat } from \"rxjs\"\r\nimport { distinctUntilChanged, switchMap, map, catchError } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { connect } from \"react-redux\"\r\nimport { ColumnFilter } from '../../api/GovDonor/ColumnFilter'\r\nimport GridData from '../../api/GovDonor/GridData'\r\nimport GridRow from '../../api/GovDonor/GridRow'\r\nimport { AppState } from '../../AppState'\r\nimport { Filter, Sort } from \"../../api/GridRequest\"\r\nimport ColumnHeaderFilter from '../ColumnHeaderFilter'\r\nimport { CustomizableFilterColumn } from '../ColumnsCustomizeModal/CustomizableColumn'\r\nimport { AppPageWrapper } from '../NavMenu/AppPageWrapper'\r\nimport TablePagination from '../TablePagination'\r\nimport AddGovDonorModal from './AddGovDonorModal'\r\nimport GovDonorDetailsModal from './GovDonorDetailsModal'\r\nimport { GovDonorGridGetObservable } from '../../api/GovDonor/GovDonorGridGetObservable'\r\nimport SearchField from '../../api/SearchField'\r\nimport SearchBar from '../SearchBar'\r\nimport { FaArrowDown, FaArrowUp } from 'react-icons/fa'\r\nimport { GetSelectedAssignedClinic } from '../../authentication/SelectedCompany/CompanySelectionDrivenSelectors'\r\nimport { Link } from 'react-router-dom'\r\nimport { BuildUserAccess } from \"../../authentication/BuildUserAccess\"\r\nimport FormatError from '../../formatters/FormatError'\r\nimport { isProcessingCollection, ProcessingCollectionLabel, refreshProcessingCollectionTests } from '../../api/CachedCollectionTest'\r\n\r\ntype Column = CustomizableFilterColumn\r\n\r\ninterface GovDonorState {\r\n loading: boolean\r\n data?: GridData\r\n details?: GridRow\r\n detailsModal: boolean\r\n addDonorModal: boolean\r\n columns: Column[]\r\n}\r\n\r\ninterface GovDonorProps {\r\n canManageGovDonors?: boolean\r\n company?: number\r\n}\r\n\r\nconst PageSize = 30\r\n\r\nconst DefaultSearchFields: SearchField[] = [\r\n { ID: \"EmployerID\", Name: \"Donor ID\" },\r\n { ID: \"FirstName\", Name: \"First Name\" },\r\n { ID: \"LastName\", Name: \"Last Name\" },\r\n { ID: \"AccessCode\", Name: \"Access Code\" }\r\n]\r\n\r\nconst DefaultColumns: Column[] = [\r\n { name: \"EmployerID\", label: \"DONOR ID\", visible: true },\r\n { name: \"LastName\", label: \"LAST NAME\", visible: true },\r\n { name: \"FirstName\", label: \"FIRST NAME\", visible: true },\r\n { name: \"GovAccessCode\", label: \"ACCESS CODE\", visible: true },\r\n { name: \"GovPoolName\", label: \"GROUP\", visible: true, filter: \"GovPoolName\" },\r\n { name: \"LastTestDate\", label: \"LAST TEST DATE\", visible: true },\r\n { name: \"Result\", label: \"RESULT\", visible: true },\r\n { name: \"DateScheduled\", label: \"PENDING RANDOM\", visible: true }\r\n]\r\n\r\ninterface GridSearchParams {\r\n pageNumber: number\r\n sort: Sort\r\n filters: Filter[]\r\n search: { field: string, text: string }\r\n}\r\n\r\nclass GovDonorGrid extends PureComponent {\r\n pageSubscription?: Subscription\r\n\r\n state: GovDonorState = {\r\n loading: false,\r\n detailsModal: false,\r\n addDonorModal: false,\r\n columns: DefaultColumns\r\n }\r\n\r\n page$ = new BehaviorSubject({\r\n pageNumber: 1,\r\n sort: { column: \"\", order: \"\" },\r\n filters: [],\r\n search: { field: \"\", text: \"\" }\r\n })\r\n\r\n sortGrid(column: string, order?: string) {\r\n const newSort = { column: column, order: order || \"\" }\r\n this.page$.next({ ...this.page$.value, sort: newSort })\r\n }\r\n\r\n filterGrid(column: string, items: string[]) {\r\n const filters = [...this.page$.value.filters]\r\n const filter = { column: column, values: items }\r\n let index = filters.findIndex(item => item.column === filter.column)\r\n if (index >= 0) {\r\n filters[index] = filter\r\n } else {\r\n filters.push(filter)\r\n }\r\n\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, filters: filters })\r\n }\r\n\r\n onSearch = (field: string, text: string) => this.page$.next({ ...this.page$.value, pageNumber: 1, search: { field: field, text: text } })\r\n handlePageChange = (pageNumber: number) => this.page$.next({ ...this.page$.value, pageNumber: pageNumber })\r\n showDetailsModal = (details: GridRow) => this.setState({ detailsModal: true, details: details })\r\n hideDetailsModal = (hasUpdates: boolean) => {\r\n if (hasUpdates) {\r\n this.handlePageChange(1)\r\n }\r\n this.setState({ detailsModal: false, details: undefined })\r\n }\r\n\r\n showAddDonor = () => this.setState({ addDonorModal: true })\r\n hideAddDonor = () => this.setState({ addDonorModal: false })\r\n reload = () => this.page$.next({ ...this.page$.value, pageNumber: 1 })\r\n\r\n handleCreateSuccessful = () => {\r\n this.hideAddDonor()\r\n this.reload()\r\n }\r\n\r\n componentDidMount() {\r\n this.pageSubscription = this.page$.pipe(\r\n distinctUntilChanged(),\r\n switchMap((params: GridSearchParams) => concat(\r\n of({ loading: true }),\r\n GovDonorGridGetObservable(params.pageNumber, PageSize, params.sort, params.filters, params.search, this.props.company).pipe(\r\n map((result: GridData) => ({ data: result, loading: false })),\r\n catchError((error) => of({ loading: false, errorMessage: FormatError(error) }))\r\n )))\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: GridData, errorMessage?: string }) => {\r\n if (newState.data) {\r\n this.setState({ loading: newState.loading, data: newState.data })\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n newState.errorMessage && toast.error(newState.errorMessage)\r\n },\r\n (error) => {\r\n this.setState({ loading: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n this.page$.unsubscribe()\r\n }\r\n\r\n visibleColumns = () => this.state.columns.filter(col => col.visible)\r\n\r\n renderHeader = () => this.visibleColumns().map((col: Column, i) => {\r\n const sort = this.page$.value.sort\r\n return (\r\n \r\n {this.state.data && col.filter && col.filter in this.state.data && item.column === col.filter)?.values || []}\r\n sort={sort.column === col.name ? sort.order === \"asc\" ? \"asc\" : \"desc\" : undefined}\r\n items={this.state.data[col.filter as keyof ColumnFilter]?.filter(item => !!item) || []}\r\n onSort={(order?: string) => this.sortGrid(col.name, order)}\r\n onFilter={(items: string[]) => col.filter && this.filterGrid(col.filter, items)}\r\n />}\r\n {(this.state.data && !col.filter) && this.renderHeaderColumn(col.name, col.label || col.name)}\r\n \r\n )\r\n })\r\n\r\n renderHeaderColumn = (columnName: string, title: string) => {\r\n const sort = this.page$.value.sort\r\n const setAscSort = sort.order !== \"asc\"\r\n return <>\r\n
\r\n this.sortGrid(columnName, setAscSort ? \"asc\" : \"desc\")} className=\"column-header-title text-uppercase mr-1\">{title}\r\n \r\n \r\n
\r\n \r\n }\r\n\r\n renderRows = () => {\r\n if (this.state.data?.Records && this.state.data?.Records.length) {\r\n return this.state.data.Records.map((row: GridRow, i: number) =>\r\n \r\n \r\n {row.LastName}\r\n {row.FirstName}\r\n {row.GovAccessCode}\r\n {row.GovPoolName}\r\n {row.LastTestDate}\r\n {row.Result}\r\n {row.DateScheduled && (isProcessingCollection(row.TestDetailID) ? ProcessingCollectionLabel : \r\n Random Test)}\r\n \r\n )\r\n } else {\r\n return No Records Found\r\n }\r\n }\r\n\r\n render() {\r\n refreshProcessingCollectionTests()\r\n return (\r\n \r\n \r\n \r\n \r\n {this.state.detailsModal && this.state.details && }\r\n {this.state.addDonorModal && this.hideAddDonor()} onSuccess={() => this.handleCreateSuccessful()} />}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderHeader()}\r\n \r\n \r\n \r\n {\r\n this.state.loading ?\r\n \r\n \r\n : this.renderRows()\r\n }\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n {this.state.data ?\r\n \r\n \r\n Total records: {this.state.loading ? \" ... \" : this.state.data.Total}\r\n \r\n \r\n : undefined}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): GovDonorProps {\r\n const userAccess = BuildUserAccess(state);\r\n\r\n return {\r\n canManageGovDonors: userAccess.CanManageGovDonors,\r\n company: GetSelectedAssignedClinic(state)?.AccountID\r\n }\r\n}\r\nconst ConnectedGovDonor = connect(mapStateToProps, null)(GovDonorGrid)\r\nexport default ConnectedGovDonor\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { Filter, Sort } from \"../GridRequest\"\r\nimport GridData from \"./GridData\"\r\n\r\nexport function GovDonorGridGetObservable(pageNumber: number, pageSize: number, sort: Sort, filters: Filter[], search: { field: string, text: string }, accountID?: number) {\r\n const requestBody: string = JSON.stringify({\r\n Filters: {\r\n GovPoolName: filters.find(filter => filter.column === \"GovPoolName\")?.values || [],\r\n },\r\n AccountID: accountID,\r\n PageNumber: pageNumber,\r\n PageSize: pageSize,\r\n SearchBy: search.field || \"\",\r\n SearchText: search.text || \"\",\r\n SortGrid: { SortColumn: sort.column, SortOrder: sort.order.toUpperCase() },\r\n })\r\n\r\n return ObservableFromFetch(\"GovDonor/GetGrid\", requestBody)\r\n}\r\n","export default interface ServiceType {\r\n ServiceTypeID: number\r\n ServiceTypeName: string\r\n ServiceTypeCode: string\r\n DisplayOrder: number\r\n}\r\n\r\nexport enum ServiceTypeCode {\r\n Drug = \"Drug\",\r\n Alcohol = \"Alcohol\",\r\n Physical = \"Physical\",\r\n OHS = \"OHS\",\r\n POCT = \"POCT\",\r\n Background = \"Background\",\r\n Audiogram = \"Audiogram\",\r\n CHS = \"CHS\",\r\n None = \"\"\r\n}\r\n\r\n\r\nlet emptyServiceType = {\r\n ServiceTypeID: 0,\r\n ServiceTypeName: \"\",\r\n ServiceTypeCode: \"\",\r\n DisplayOrder: 0\r\n}\r\nexport function ServiceTypeById(items: ServiceType[], serviceTypeId: number): ServiceType {\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].ServiceTypeID === serviceTypeId) {\r\n return items[i];\r\n }\r\n }\r\n return emptyServiceType;\r\n}\r\n\r\nexport function ServiceTypeByCode(items: ServiceType[], code: ServiceTypeCode): ServiceType {\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].ServiceTypeCode === code) {\r\n return items[i];\r\n }\r\n }\r\n \r\n return emptyServiceType;\r\n}\r\n\r\n\r\nexport function GetDrugServiceType(items: ServiceType[]): ServiceType {\r\n return ServiceTypeByCode(items, ServiceTypeCode.Drug);\r\n}\r\n\r\nexport function GetAlcoholServiceType(items: ServiceType[]): ServiceType {\r\n return ServiceTypeByCode(items, ServiceTypeCode.Alcohol);\r\n}\r\n\r\nexport function GetPhysicalServiceType(items: ServiceType[]): ServiceType {\r\n return ServiceTypeByCode(items, ServiceTypeCode.Physical);\r\n}\r\n\r\nexport function GetOHSServiceType(items: ServiceType[]): ServiceType {\r\n return ServiceTypeByCode(items, ServiceTypeCode.OHS);\r\n}\r\n\r\nexport function GettPOCTServiceType(items: ServiceType[]): ServiceType {\r\n return ServiceTypeByCode(items, ServiceTypeCode.POCT);\r\n}\r\n\r\nexport function GettBackgroundServiceType(items: ServiceType[]): ServiceType {\r\n return ServiceTypeByCode(items, ServiceTypeCode.Background);\r\n}\r\nexport function GetCHSServiceType(items: ServiceType[]): ServiceType {\r\n return ServiceTypeByCode(items, ServiceTypeCode.CHS);\r\n}\r\n\r\nexport function IsServiceTypeDrug(data: ServiceType): boolean {\r\n if (data.ServiceTypeCode === ServiceTypeCode.Drug) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function IsServiceTypeAlcohol(data: ServiceType): boolean {\r\n if (data.ServiceTypeCode === ServiceTypeCode.Alcohol) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function IsServiceTypePhysical(data: ServiceType): boolean {\r\n if (data.ServiceTypeCode === ServiceTypeCode.Physical) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function IsServiceTypeOHS(data: ServiceType): boolean {\r\n if (data.ServiceTypeCode === ServiceTypeCode.OHS) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n\r\nexport function IsServiceTypePOCT(data: ServiceType): boolean {\r\n if (data.ServiceTypeCode === ServiceTypeCode.POCT) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n\r\nexport function IsServiceTypeBackground(data: ServiceType): boolean {\r\n if (data.ServiceTypeCode === ServiceTypeCode.Background) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function IsServiceTypeCHS(data: ServiceType): boolean {\r\n return data.ServiceTypeCode === ServiceTypeCode.CHS\r\n}\r\n\r\nexport function IsServiceTypeCodeDrug(code: ServiceTypeCode): boolean {\r\n if (code === ServiceTypeCode.Drug) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function IsServiceTypeCodeAlcohol(code: ServiceTypeCode): boolean {\r\n if (code === ServiceTypeCode.Alcohol) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function IsServiceTypeCodePhysical(code: ServiceTypeCode): boolean {\r\n if (code === ServiceTypeCode.Physical) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function IsServiceTypeCodeOHS(code: ServiceTypeCode): boolean {\r\n if (code === ServiceTypeCode.OHS) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n\r\nexport function IsServiceTypeCodePOCT(code: ServiceTypeCode): boolean {\r\n if (code === ServiceTypeCode.POCT) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n\r\nexport function IsServiceTypeCodeBackground(code: ServiceTypeCode): boolean {\r\n if (code === ServiceTypeCode.Background) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function IsServiceTypeCodeCHS(code: ServiceTypeCode): boolean {\r\n return code === ServiceTypeCode.CHS\r\n}","import React, { Component } from 'react'\r\nimport { Button, Collapse } from 'react-bootstrap'\r\n\r\nexport interface TogglePanelProps {\r\n collapsibleId: string,\r\n header: React.ReactNode,\r\n children: React.ReactNode,\r\n isOpen: boolean,\r\n isDisabled: boolean,\r\n onHeaderClick: () => void\r\n}\r\n\r\nexport default class TogglePanel extends Component {\r\n render() {\r\n const { collapsibleId, header, isOpen, isDisabled, onHeaderClick, children } = this.props\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import React, { Component } from 'react'\r\nimport { Form, Col, Button } from 'react-bootstrap'\r\nimport TogglePanel from '../TogglePanel'\r\nimport { ServiceDataModel } from '../OrderModels'\r\n\r\nexport interface SelectServiceTogglePanelProps {\r\n title: string,\r\n data: ServiceDataModel,\r\n collapsibleId: string,\r\n disabled: boolean,\r\n open?: boolean,\r\n onClose: () => void,\r\n onSubmit: () => void,\r\n onValidate: (data: ServiceDataModel) => boolean\r\n}\r\n\r\ninterface SelectServiceTogglePanelState {\r\n open: boolean\r\n}\r\n\r\nexport default class SelectServiceTogglePanel extends Component {\r\n constructor(props: SelectServiceTogglePanelProps) {\r\n super(props)\r\n\r\n this.state = { open: props.open || false }\r\n }\r\n\r\n onSubmit = (e: React.FormEvent) => {\r\n e.preventDefault()\r\n this.props.onSubmit()\r\n this.setOpen(false)\r\n }\r\n\r\n onHeaderClick = () => this.state.open ? null : this.setOpen(true)\r\n\r\n onCloseClick = () => {\r\n this.setOpen(false)\r\n this.props.onClose()\r\n }\r\n\r\n setOpen = (open: boolean) => this.setState({open: open}) // Closing clears all entered data\r\n\r\n render() {\r\n const { title, disabled, onValidate, collapsibleId, data } = this.props\r\n const isValid = onValidate(data)\r\n const header =
{title}+
\r\n return (\r\n \r\n
\r\n {this.props.children}\r\n \r\n \r\n {!this.props.open && }\r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import AccountService, {AccountServicesByServiceId, HasActiveAccountServicesByServiceId} from \"./AccountService\"\r\n\r\nexport default interface Service {\r\n ServiceID: number\r\n ServiceName: string\r\n ServiceDescription: string\r\n ServiceCode: string\r\n SampleType?: string\r\n ServiceTypeID: number\r\n DOT: boolean\r\n ActiveWorkForce: boolean\r\n ActivateAll: boolean\r\n Marketplace: boolean\r\n DisplayOrder: number\r\n FFServiceCode: string\r\n MPSku: string\r\n}\r\n\r\nexport enum ServiceCode {\r\n DrugDOT = \"DOTU\",\r\n Drug = \"NDOTU\",\r\n AlcoholBreath = \"BALC\",\r\n AlcoholSaliva = \"SALC\",\r\n AlcoholBreathDOT = \"DOTBALC\",\r\n AlcoholSalivaDOT = \"DOTSALC\",\r\n PhysicalDOT = \"DOTPHY\",\r\n Physical = \"FFPPE\",\r\n POCT = \"IDRUG\",\r\n FLEX = \"FLEX\",\r\n Audiogram = \"AUDIOGRAM\",\r\n Clinical = \"CLINICAL\",\r\n COVID = \"COVID\",\r\n Pulmonary = \"PULMONARY\",\r\n RespiratorFit = \"RESPIRATOR\",\r\n RespiratorMedical = \"RESPMEQ\",\r\n Tuberculosis = \"TBSKIN\",\r\n Wellness = \"WELLNESS\",\r\n DOTOral = \"DOTO\",\r\n NonDOTOral = \"SDRG\",\r\n None = \"\",\r\n}\r\n\r\nlet emptyService = {\r\n ServiceID: 0,\r\n ServiceName: \"\",\r\n ServiceDescription: \"\",\r\n ServiceCode: \"\",\r\n SampleType: \"\",\r\n ServiceTypeID: 0,\r\n DOT: false,\r\n ActiveWorkForce: false,\r\n ActivateAll: false,\r\n Marketplace: false,\r\n DisplayOrder: 0,\r\n FFServiceCode: \"\",\r\n MPSku: \"\"\r\n}\r\n\r\nexport function ServiceById(items: Service[], serviceId: number) { return items.find(item => item.ServiceID === serviceId) || emptyService }\r\n\r\nexport function ServiceByCode(items: Service[], code: ServiceCode): Service {\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].FFServiceCode === code) {\r\n return items[i];\r\n }\r\n }\r\n return emptyService;\r\n}\r\n\r\nexport function ServicesByServiceTypeId(items: Service[], serviceTypeId: number) { return items.filter(item => item.ServiceTypeID === serviceTypeId) }\r\n\r\nexport function ServicesByServiceSampleType(items: Service[], sampleType: string): Service[] {\r\n let result = []\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].SampleType === sampleType) {\r\n result.push(items[i])\r\n }\r\n }\r\n return result\r\n}\r\n\r\nexport function AccountsForServices(services: Service[], accountServices: AccountService[]): AccountService[] {\r\n let result = []\r\n for (let i = 0; i < services.length; i++) {\r\n let accounts = AccountServicesByServiceId(accountServices, services[i].ServiceID);\r\n for (let j = 0; j < accounts.length; j++) {\r\n result.push(accounts[j])\r\n }\r\n }\r\n return result\r\n}\r\n\r\nexport function IsServiceActive(service: Service, accountServices: AccountService[]): boolean{\r\n if (!service.ActiveWorkForce) {\r\n return false\r\n }\r\n let result = HasActiveAccountServicesByServiceId(accountServices, service.ServiceID)\r\n return result\r\n}\r\n\r\nexport function IsServiceDrug(data: Service): boolean {\r\n if (data.FFServiceCode === ServiceCode.Drug) {\r\n return true\r\n }\r\n if (data.FFServiceCode === ServiceCode.DrugDOT) {\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nexport function IsServiceDrugDOT(data: Service): boolean {\r\n if (!data.DOT) {\r\n return false\r\n }\r\n if (!IsServiceDrug(data)) {\r\n return false\r\n }\r\n return true\r\n}\r\n\r\nexport function IsServiceDrugNonDOT(data: Service): boolean {\r\n if (data.DOT) {\r\n return false\r\n }\r\n if (!IsServiceDrug(data)) {\r\n return false\r\n }\r\n return true\r\n}\r\n\r\nexport function IsServicePOCT(data: Service): boolean {\r\n if (data.FFServiceCode === ServiceCode.POCT) {\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nexport function IsServiceFLEX(data: Service): boolean {\r\n return data.FFServiceCode === ServiceCode.FLEX\r\n}\r\n\r\nexport function IsServiceCodeTypeDrug(code: ServiceCode): boolean {\r\n if (code === ServiceCode.Drug) {\r\n return true\r\n }\r\n if (code === ServiceCode.DrugDOT) {\r\n return true\r\n }\r\n if (code === ServiceCode.POCT || code === ServiceCode.FLEX) {\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nexport function IsServiceCodePOCT(code: ServiceCode): boolean {\r\n if (code === ServiceCode.POCT ) {\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nexport function IsServiceCodeFLEX(code: ServiceCode): boolean {\r\n return code === ServiceCode.FLEX\r\n}\r\n\r\nexport function IsServiceCodeWellness(code: ServiceCode): boolean {\r\n return code === ServiceCode.Wellness\r\n}\r\n\r\n\r\nexport function IsServiceCodeCHSBL(code: ServiceCode | string): boolean {\r\n return code === ServiceCode.Clinical\r\n}\r\n","export default interface AccountService {\r\n AccountServiceID: number\r\n ImplementationID: number\r\n AccountID?: number\r\n ServiceID: number\r\n Active: boolean\r\n IsDefault: boolean\r\n}\r\n\r\n\r\n\r\n\r\nexport function AccountServicesByServiceId(items: AccountService[], serviceId: number): AccountService[] {\r\n let result = [];\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].ServiceID === serviceId) {\r\n result.push(items[i]);\r\n }\r\n }\r\n return result;\r\n}\r\n\r\n\r\nexport function ActiveAccountServicesByServiceId(items: AccountService[], serviceId: number): AccountService[] {\r\n let result = [];\r\n for (let i = 0; i < items.length; i++) {\r\n if (((!!items[i].AccountID && items[i].Active) || (!items[i].AccountID && items[i].Active && items[i].IsDefault)) && (items[i].ServiceID === serviceId)) {\r\n result.push(items[i]);\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nexport function HasActiveAccountServicesByServiceId(items: AccountService[], serviceId: number): boolean{\r\n let activeItems = ActiveAccountServicesByServiceId(items, serviceId);\r\n \r\n if(activeItems.length > 0){\r\n return true;\r\n }\r\n return false;\r\n}","import EmployeeCategory from \"../../api/LabService/LabServiceModel/EmployeeCategory\"\r\nimport LabAccount from \"../../api/LabService/LabServiceModel/LabAccount\"\r\nimport TestToBePerform from \"../../api/LabService/LabServiceModel/TestToBePerform\"\r\nimport RegulatoryMode from \"../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport State from \"../../api/OrderRequests/OrderRequestsModel/State\"\r\nimport { ServiceTypeCode } from \"../../api/Administration/Model/ServiceType\"\r\nimport Service, {ServiceCode} from \"../../api/Administration/Model/Service\"\r\nimport { SampleType } from \"../../api/OrderRequests/OrderRequestsModel/SampleType\"\r\n\r\nexport const OTHER_REASON_TEXT = 'Other'\r\n\r\nexport enum ServiceTypeOld {\r\n Drug = \"DRUG\",\r\n Alcohol = \"ALCOHOL\",\r\n Physical = \"PHYSICAL\",\r\n POCT = \"POINT OF CARE TEST (POCT)\",\r\n Background = \"BACKGROUND\"\r\n}\r\n\r\nexport const EmptyServiceData: ServiceDataModel = {\r\n id: 0,\r\n serviceTypeCode: ServiceTypeCode.None,\r\n serviceCode: ServiceCode.None,\r\n isMarketplace: false,\r\n isDOT: undefined,\r\n testToPerform: '',\r\n testToPerformObj: undefined,\r\n labAccount: '',\r\n labAccountObj: undefined,\r\n reqSpecimenCollection: '',\r\n observedCollection: false,\r\n regulatoryMode: '',\r\n regulatoryModeObj: undefined,\r\n category: '',\r\n categoryObj: undefined,\r\n selectedTests: [],\r\n selectedServices: [],\r\n selectedTestType: undefined,\r\n isValidMode: false\r\n}\r\n\r\nexport interface ServiceDataModel {\r\n id: number\r\n serviceTypeCode: ServiceTypeCode\r\n serviceCode: ServiceCode\r\n isMarketplace: boolean\r\n isDOT?: boolean\r\n testToPerform: string\r\n testToPerformObj?: AlcoholTestSampleType | TestToBePerform\r\n labAccount: string\r\n labAccountObj?: LabAccount\r\n reqSpecimenCollection: string\r\n observedCollection: boolean\r\n regulatoryMode: string\r\n regulatoryModeObj?: RegulatoryMode\r\n category: string | number\r\n categoryObj?: EmployeeCategory\r\n selectedTests: TestToBePerform[]\r\n selectedServices: Service[]\r\n selectedTestType?: SampleType\r\n isValidMode: boolean\r\n}\r\n\r\nexport interface ServiceOrderedModel {\r\n serviceCode: ServiceCode,\r\n serviceTypeCode: ServiceTypeCode,\r\n isDOT?: boolean,\r\n labAccountDesc?: string\r\n testToPerformDesc?: string\r\n}\r\n\r\nexport interface GovLabModel {\r\n labAccount?: string\r\n labCode?: string\r\n labClientMemberId?: number\r\n}\r\n\r\nexport interface GovPanelModel {\r\n panelCode?: string\r\n panelDescription?: string\r\n testToPerform?: string\r\n}\r\n\r\nexport interface GovServiceDataModel extends GovLabModel, GovPanelModel {\r\n id?: number\r\n serviceType?: ServiceTypeOld\r\n sampleType?: string\r\n isDOT?: boolean\r\n testDetailID?: string\r\n}\r\n\r\n\r\nexport interface DonorInformationModel {\r\n idType?: string\r\n idTypeObj?: GetRegulatoryModeDonor\r\n state?: State | undefined\r\n stateCode?: string | undefined\r\n states?: State[] | undefined\r\n donorId?: string\r\n firstName?: string\r\n middleInitial?: string\r\n lastName?: string\r\n eveningPhone?: string\r\n daytimePhone?: string\r\n birthdate?: Date\r\n gender?: string\r\n personId?: number\r\n accessCode?: number\r\n email?: string\r\n firstNameReadOnly?: boolean\r\n middleInitialReadOnly?: boolean\r\n lastNameReadOnly?: boolean\r\n homePhoneReadOnly?: boolean\r\n workPhoneReadOnly?: boolean\r\n genderReadOnly?: boolean\r\n stateReadOnly?: boolean\r\n showPotentialMatches?: boolean\r\n idReadOnly?: boolean\r\n address?: DonorAddressModel\r\n}\r\n\r\nexport interface DonorAddressModel {\r\n Address1: string\r\n Address2: string | null\r\n City: string\r\n State: string\r\n Zip: string\r\n}\r\n\r\nexport interface ScheduleModel {\r\n timezone: string | undefined,\r\n overrideAllowed: boolean,\r\n hoursUntilExpires: number | undefined,\r\n expirationDate: Date | undefined,\r\n formattedExpirationDate: string,\r\n displayExpirationDate: string,\r\n comment: string,\r\n proceedImmediately:boolean\r\n extendExpirationHours: number\r\n}\r\n\r\nexport interface Reason {\r\n BeginEffectiveDate: string,\r\n Code: string | number | null,\r\n Description: string,\r\n EndEffectiveDate: string,\r\n TestReasonID: number,\r\n UpdateDate: string,\r\n UpdateMethod: string | number | null,\r\n UserLogin: string | number | null\r\n}\r\n\r\nexport interface AlcoholTestSampleType {\r\n BeginEffectiveDate: string,\r\n ClientID: number,\r\n Code: string,\r\n Description: string,\r\n EndEffectiveDate: string,\r\n IsAlcohol: boolean,\r\n IsPoct: boolean,\r\n SampleTypeID: string | number,\r\n TestDetails: string | number | null,\r\n UpdateDate: string,\r\n UpdateMethod: string | number | null,\r\n UserLogin: string | number | null\r\n PanelID?: number\r\n SampleTypeCode?: string\r\n}\r\n\r\nexport interface GetRegulatoryModeDonor {\r\n Description: string\r\n PrimaryIDType: string\r\n Rank: number\r\n DisplayState: boolean\r\n}\r\n\r\nexport interface Collector {\r\n VendorID: string | number\r\n ParentVendorID: string | null\r\n FFID: string\r\n Name: string\r\n Code: string\r\n Type: string | null\r\n Address1: string\r\n Address2: string | null\r\n City: string\r\n State: string\r\n Zip: string\r\n Phone: string | null\r\n HoursOfOperation: string\r\n Private: boolean\r\n Distance: number\r\n Latitude: number\r\n Longitude: number\r\n UseDOTForm: boolean\r\n FFEnabled: boolean\r\n OutOfNetwork: boolean\r\n iVendorID: number\r\n SiteID: string | null\r\n Fax: string | null\r\n}\r\n","export enum SampleType {\r\n UR = \"UR\",\r\n SD = \"SD\",\r\n SLD = \"SLD\",\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAACKUlEQVR42q2UT0gUURzHf5rtzswiqaRlpZC2CDbasDNvwQ5ihMcO0s3AAomCrl4k0kBMvXSShKBDmx4MIchLkERU7KlTRLe6lGJuYrq1ju7Ojt+3vrfq4uwI+oMPu+/35/ve7zePR0RUSv5WAsp8ck6CMyQSw8D0KYgViT0E38Bp6SgHd8AEeASi4lTSdOGXxrtqB49FzXUQ8NqtCUyDt6ADhMAlMCT+XwFxMAWqvOazn68e9IhWufgH8AzcALUedSRnyItmD8lr0EZBK91JR2kqc35oUdeVqJbzMRDJdMk4fMMac/7k48yZ2a5Lx3bXSbYFWTqRqzbdE6qV/a5ZmQQ1JmsUY/2WylxHMdMDudno/zqxtpH/NT9DYzWcE8LvzgmlIC8y1i7zhICR6sZpX2jMXSE9VSfjiuU811h2mS4kqw8kSPpyHU9QzI0hCL5EcYKMlYpdIxpXWXY1qNuNBxJUI3YfTyhrTV5VmPNEjWbXgoYd3hHMzGGTJWpKlHsKIuk/nIOYzwjWSazjdO6nGjA3WuSH4nG0O8XXQTNzN99RoSAG/gA7LkiOm5s391yDVjeED/VJxtFB19743/M4yDy1LDZI11k6YusocvvnwC9gg3XwG7zzyI0Ve+KOgWvgCxgB/eA2uA8+g26R42u6eNuegnvglPAPixgJXy8YB6PAKhSvBHygk+A9uLjPRmPiWSs0XvcKvAH5y2+JB7K5yMnbfTqrEI906RYqNPeJ/mi8SQAAAABJRU5ErkJggg==\"","import { Component } from 'react'\r\nimport { ServiceDataModel } from '../OrderModels'\r\nimport ServiceType from \"../../../api/Administration/Model/ServiceType\"\r\nimport Service from \"../../../api/Administration/Model/Service\"\r\nimport AccountService from \"../../../api/Administration/Model/AccountService\"\r\nimport { OrderDefault } from '../../../api/Administration/OrderDefaults'\r\n\r\n\r\nexport interface SelectServiceProps {\r\n disabled: boolean,\r\n open?: boolean,\r\n isDot?: boolean,\r\n selectedTestCode?: string,\r\n labAccountNumber?: string,\r\n panelId?: number,\r\n canAddDOT: boolean,\r\n canAddNonDOT: boolean,\r\n orderableServiceType: ServiceType,\r\n orderableServices: Service[],\r\n orderableAccountServices: AccountService[],\r\n defaults?: OrderDefault[],\r\n marketplaceServicesCount: number,\r\n notMarketplaceServicesCount: number,\r\n denyAddService: boolean\r\n regulatoryModeID?: number\r\n employeeCategoryID?: number\r\n onAdd: (data: ServiceDataModel) => void\r\n}\r\n\r\nexport interface SelectServiceState extends ServiceDataModel { \r\n\r\n}\r\n\r\nexport default class SelectService

extends Component {\r\n isAllServicesDisabled: boolean = true;\r\n static getDerivedStateFromProps(props: SelectServiceProps, state: SelectServiceState) {\r\n let shouldResetDOT = !props.canAddDOT && state.isDOT === true\r\n shouldResetDOT = shouldResetDOT || (!props.canAddNonDOT && state.isDOT === false)\r\n if (shouldResetDOT) {\r\n return {...state, isDOT: undefined}\r\n }\r\n return null\r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport TestToBePerformWithCompanyName from \"./LabServiceModel/TestToBePerformWithCompanyName\"\r\n\r\nexport interface LabServicesGetParams {\r\n ImplementationID?: number\r\n LabAccountNumber: string\r\n VendorID: number\r\n IsDOT: boolean\r\n IsPoct: boolean\r\n AutoFilterValue?: string\r\n IsMarketPlace: boolean\r\n Link?: string\r\n}\r\n\r\nexport default function TestToBePerformGetObservable(params: LabServicesGetParams): Observable {\r\n const requestBody: string = JSON.stringify(params)\r\n return ObservableFromFetch(\"order/GetTestToBePerformsWithCompanyName\", requestBody)\r\n}","import { Form } from \"react-bootstrap\"\r\n\r\nimport TestToBePerform from \"../../../api/LabService/LabServiceModel/TestToBePerform\"\r\nimport { SampleType } from \"../../../api/OrderRequests/OrderRequestsModel/SampleType\"\r\n\r\ninterface SelectSampleTestTypeProps {\r\n selectedValue?: SampleType\r\n availableTests: TestToBePerform[]\r\n disabled?: boolean\r\n onChange: (e: React.ChangeEvent) => void\r\n}\r\n\r\nfunction SelectSampleTestType(props: SelectSampleTestTypeProps) {\r\n const { selectedValue, availableTests, disabled, onChange } = props\r\n\r\n const disabledSalivaTests = () => availableTests.every((p) => p.SampleTypeCode === SampleType.UR)\r\n const disabledUrineTests = () => availableTests.every((p) => p.SampleTypeCode === SampleType.SLD)\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nSelectSampleTestType.defaultProps = {\r\n selectedValue: undefined,\r\n disabled: false,\r\n}\r\n\r\nexport default SelectSampleTestType\r\n","import { Form } from \"react-bootstrap\"\r\n\r\ninterface SelectSpecimenCollectionProps {\r\n selectedValue?: string\r\n disabled?: boolean\r\n onChange: (e: React.ChangeEvent) => void\r\n}\r\n\r\nfunction SelectSpecimenCollection(props: SelectSpecimenCollectionProps) {\r\n const { selectedValue, disabled, onChange } = props\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nSelectSpecimenCollection.defaultProps = {\r\n selectedValue: \"\",\r\n disabled: false,\r\n}\r\n\r\nexport default SelectSpecimenCollection\r\n","import { Form } from \"react-bootstrap\"\r\n\r\nimport Checkbox from \"../../Checkbox\"\r\n\r\ninterface SelectObservedProps {\r\n checked?: boolean\r\n disabled?: boolean\r\n onChange: (e: React.ChangeEvent) => void\r\n}\r\n\r\nfunction SelectObserved(props: SelectObservedProps) {\r\n const { checked, disabled, onChange } = props\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nSelectObserved.defaultProps = {\r\n checked: false,\r\n disabled: false,\r\n}\r\n\r\nexport default SelectObserved\r\n","import React from \"react\"\r\nimport { Button, Modal, Table, Spinner, Col, Form, Row } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription, forkJoin } from \"rxjs\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { Home } from \"../../config/Routes\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\nimport OrderDefaultsGet, { OrderDefault, OrderDefaultsReset, OrderDefaultsSave, SaveOrderDefaults } from \"../../api/Administration/OrderDefaults\"\r\nimport LabServiceRegulatoryModesGetObservable from \"../../api/LabService/LabServiceRegulatoryModesGet\"\r\nimport RegulatoryMode from \"../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport EmployeeCategoriesGetObservable from \"../../api/LabService/EmployeeCategoriesGet\"\r\nimport EmployeeCategory from \"../../api/LabService/LabServiceModel/EmployeeCategory\"\r\nimport { TestReasonsObservable } from \"../../api/OrderRequests/OrderRequestsConstraintGet\"\r\nimport { TestReasonType } from \"../../api/OrderRequests/OrderRequestsModel/TestReasonType\"\r\nimport NumericInput from \"react-numeric-input\"\r\nimport { AppState } from \"../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport { isSiteAdmin, isPortalAdmin } from \"../../authentication/isAdminRole\"\r\nimport ImplementationsGetObservable from \"../../api/Implementations/ImplementationsGet\"\r\nimport ImplementationData from \"../../api/Implementations/Model/ImplementationData\"\r\nimport CompanyInput from \"../FormattedInputs/CompanyInput\"\r\n\r\nexport enum DefaultLookupCode {\r\n RegMode = \"REGMODE\",\r\n TestReason = \"REASON\",\r\n ExpTime = \"EXPIRATION\",\r\n FAAEmployee = \"FAAEMPLOYEE\"\r\n}\r\n\r\ninterface Lookup {\r\n Code: DefaultLookupCode\r\n Label: string\r\n IsInput: boolean\r\n IsNumeric: boolean\r\n}\r\n\r\nconst LookupMap: Lookup[] = [\r\n {Code: DefaultLookupCode.RegMode, Label: \"Regulatory Mode\", IsInput: false, IsNumeric: false},\r\n {Code: DefaultLookupCode.TestReason, Label: \"Reason\", IsInput: false, IsNumeric: false},\r\n {Code: DefaultLookupCode.ExpTime, Label: \"Hours Until Order Expires\", IsInput: true, IsNumeric: true},\r\n {Code: DefaultLookupCode.FAAEmployee, Label: \"FAA Employee Category\", IsInput: false, IsNumeric: false}\r\n]\r\n\r\ninterface OrderDefaultsAuthProps {\r\n isPortalAdmin?: boolean\r\n isSiteAdmin?: boolean\r\n}\r\n\r\ninterface OrderDefaultsProps { }\r\n\r\ninterface OrderDefaultsState {\r\n saving: boolean\r\n loading: boolean\r\n resetting: boolean\r\n loadingDefaults: boolean\r\n portalDefaults: OrderDefault[]\r\n defaults: OrderDefault[]\r\n data: OrderDefault[]\r\n portals: ImplementationData[]\r\n selectedPortal?: ImplementationData\r\n selectedCompany?: AutoFilterCompany\r\n selectedLookup?: Lookup\r\n showWarning: boolean\r\n}\r\n\r\nexport class OrderDefaults extends React.PureComponent {\r\n emptyState: OrderDefaultsState = {\r\n loading: false,\r\n saving: false,\r\n resetting: false,\r\n loadingDefaults: false,\r\n portalDefaults: [],\r\n defaults: [],\r\n data: [],\r\n portals: [],\r\n selectedPortal: undefined,\r\n selectedCompany: undefined,\r\n selectedLookup: undefined,\r\n showWarning: false\r\n }\r\n state: OrderDefaultsState = { ...this.emptyState }\r\n\r\n portalTypeahead = React.createRef>()\r\n loadPortalsSubscription?: Subscription\r\n loadCompanyDefaultsSubscription?: Subscription\r\n loadPortalDefaultsSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.setState({loading: true})\r\n\r\n if (this.props.isSiteAdmin) {\r\n this.loadPortalsSubscription = ImplementationsGetObservable().subscribe(\r\n data => this.setState({ portals: data.Records, loading: false }),\r\n error => this.handleAPIError(error, { loading: false, portals: [] })\r\n )\r\n }\r\n\r\n\r\n if (this.props.isPortalAdmin) {\r\n this.loadPortalDefaultsSubscription = OrderDefaultsGet({ImplementationID: 0, AccountID: 0, LookupCode: \"\"})\r\n .subscribe(\r\n data => this.setState({portalDefaults: data, loading: false}),\r\n error => this.handleAPIError(error, {})\r\n )\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.loadPortalsSubscription && this.loadPortalsSubscription.unsubscribe()\r\n this.loadPortalDefaultsSubscription && this.loadPortalDefaultsSubscription.unsubscribe()\r\n this.loadCompanyDefaultsSubscription && this.loadCompanyDefaultsSubscription.unsubscribe()\r\n }\r\n\r\n loadDefaults = (lookup?: Lookup) => {\r\n this.setState({loadingDefaults: true})\r\n let defaults: OrderDefault[] = []\r\n const requestData = { ImplementationID: this.state.selectedPortal?.ImplementationID || 0, AccountID: this.state.selectedCompany?.AccountID, LookupCode: lookup?.Code || \"\" }\r\n switch (lookup?.Code) {\r\n case DefaultLookupCode.RegMode:\r\n this.loadCompanyDefaultsSubscription = forkJoin({\r\n modes: LabServiceRegulatoryModesGetObservable(true),\r\n modeDefaults: OrderDefaultsGet(requestData)\r\n }).subscribe(\r\n ({ modes, modeDefaults }) => {\r\n defaults = this.remapToOrderDefault(modes, modeDefaults, lookup.Code)\r\n this.setState({loadingDefaults: false, defaults: defaults, data: defaults, showWarning: modeDefaults.length === 0})\r\n },\r\n (error) => this.handleAPIError(error, { loadingDefaults: false, defaults: [] })\r\n )\r\n break\r\n case DefaultLookupCode.TestReason:\r\n this.loadCompanyDefaultsSubscription = forkJoin({\r\n reasons: TestReasonsObservable(),\r\n reasonDefaults: OrderDefaultsGet(requestData)\r\n }).subscribe(\r\n ({ reasons, reasonDefaults }) => {\r\n defaults = this.remapToOrderDefault(reasons, reasonDefaults, lookup.Code)\r\n this.setState({loadingDefaults: false, defaults: defaults, data: defaults, showWarning: reasonDefaults.length === 0})\r\n },\r\n (error) => this.handleAPIError(error, { loadingDefaults: false, defaults: [] })\r\n )\r\n break\r\n case DefaultLookupCode.ExpTime:\r\n this.loadCompanyDefaultsSubscription = OrderDefaultsGet(requestData)\r\n .subscribe(\r\n (timeDefaults) => {\r\n defaults = this.singleDefault(lookup.Label, timeDefaults, lookup.Code)\r\n this.setState({loadingDefaults: false, defaults: defaults, data: defaults, showWarning: timeDefaults.length === 0})\r\n },\r\n (error) => this.handleAPIError(error, { loadingDefaults: false, defaults: [] })\r\n )\r\n break\r\n case DefaultLookupCode.FAAEmployee:\r\n this.loadCompanyDefaultsSubscription = forkJoin({\r\n categories: EmployeeCategoriesGetObservable(3), //3 to get FAA employee categories\r\n categoryDefaults: OrderDefaultsGet(requestData)\r\n }).subscribe(\r\n ({ categories, categoryDefaults }) => {\r\n defaults = this.remapToOrderDefault(categories, categoryDefaults, lookup.Code)\r\n this.setState({loadingDefaults: false, defaults: defaults, data: defaults, showWarning: categoryDefaults.length === 0})\r\n },\r\n (error) => this.handleAPIError(error, { loadingDefaults: false, defaults: [] })\r\n )\r\n break\r\n default:\r\n this.setState({loadingDefaults: false, defaults: [], data: []})\r\n break\r\n }\r\n }\r\n\r\n createOrderDefaultElement = (fieldName: string, lookup: string, existingDefault?: OrderDefault): OrderDefault => {\r\n return {\r\n OrderDefaultID: existingDefault?.OrderDefaultID,\r\n ImplementationID: existingDefault?.ImplementationID || this.state.selectedPortal?.ImplementationID || 0,\r\n AccountID: existingDefault?.AccountID || this.state.selectedCompany?.AccountID,\r\n LookupCode: existingDefault?.LookupCode || lookup,\r\n FieldName: fieldName,\r\n DefaultValue: existingDefault?.DefaultValue,\r\n Show: existingDefault?.Show || false,\r\n IsDefault: existingDefault?.IsDefault || false,\r\n Disable: !this.elementVisibleOnPortalLevel(existingDefault?.LookupCode || lookup, fieldName)\r\n }\r\n }\r\n\r\n elementVisibleOnPortalLevel = (lookup: string, fieldName: string) => {\r\n if (this.state.portalDefaults.length === 0) {\r\n return true\r\n }\r\n const relatedDefault = this.state.portalDefaults.find(el => el.LookupCode === lookup && el.FieldName === fieldName)\r\n if (relatedDefault) {\r\n return relatedDefault.Show\r\n }\r\n else {\r\n return true\r\n }\r\n }\r\n\r\n singleDefault = (fieldName: string, defaults: OrderDefault[], lookup: string) => {\r\n const savedDefault = defaults.find(x => x.FieldName === fieldName)\r\n const newEl = this.createOrderDefaultElement(fieldName, lookup, savedDefault)\r\n return [newEl]\r\n }\r\n\r\n remapToOrderDefault = (objects: RegulatoryMode[] | TestReasonType[] | EmployeeCategory[], defaults: OrderDefault[], lookup: string) : OrderDefault[] => {\r\n let result: OrderDefault[] = []\r\n objects.forEach((obj: RegulatoryMode | TestReasonType | EmployeeCategory) => {\r\n let FieldName = \"\"\r\n\r\n if (\"Name\" in obj) {\r\n FieldName = obj.Name\r\n }\r\n else if (\"Description\" in obj) {\r\n FieldName = obj.Description\r\n }\r\n\r\n let savedDefault = defaults.find(x => x.FieldName === FieldName)\r\n let newEl = this.createOrderDefaultElement(FieldName, lookup, savedDefault)\r\n result.push(newEl)\r\n })\r\n\r\n return result\r\n }\r\n\r\n handleCancel = () => (this.props as RouteComponentProps).history?.push(Home)\r\n\r\n handleSave = () => {\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.setState({ saving: true })\r\n\r\n var saveObj: SaveOrderDefaults = {\r\n Defaults: this.state.data\r\n }\r\n this.saveSubscription = OrderDefaultsSave(saveObj).subscribe(\r\n (data) => {\r\n this.setState({saving: false, showWarning: false})\r\n this.loadDefaults(this.state.selectedLookup)\r\n toast.success(data)\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n handleReset = () => {\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.setState({ resetting: true })\r\n this.saveSubscription = OrderDefaultsReset({ImplementationID: this.state.selectedPortal?.ImplementationID || 0, AccountID: this.state.selectedCompany?.AccountID, LookupCode: this.state.selectedLookup?.Code || \"\"}).subscribe(\r\n (data) => {\r\n this.setState({resetting: false, selectedLookup: undefined, data: [], defaults: []})\r\n toast.success(data)\r\n },\r\n (error) => this.handleAPIError(error, { resetting: false })\r\n )\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error(FormatError(error))\r\n }\r\n\r\n toggleShow = (index: number) => {\r\n const newData: OrderDefault[] = [...this.state.data]\r\n newData[index].Show = !newData[index].Show\r\n newData[index].IsDefault = false\r\n this.setState({ data: newData })\r\n }\r\n\r\n toggleDefault = (index: number) => {\r\n const newData: OrderDefault[] = [...this.state.data]\r\n const defaultValue = !newData[index].IsDefault\r\n newData.forEach(el => el.IsDefault = false)\r\n newData[index].IsDefault = defaultValue\r\n this.setState({ data: newData })\r\n }\r\n\r\n handleCompanyChange = (selected: AutoFilterCompany[]) => {\r\n const selectedCompany = selected[0]\r\n this.setState({ selectedCompany: selectedCompany })\r\n if (selectedCompany) {\r\n this.setState({ selectedLookup: undefined, defaults: [], data: [], showWarning: false })\r\n }\r\n }\r\n\r\n handleEmpty = (company: string) => {\r\n if (company == \"\") {\r\n this.setState({ defaults: [], data: [], selectedPortal: undefined, selectedLookup: undefined, showWarning: false })\r\n }\r\n }\r\n\r\n handlePortalChange = (selected: ImplementationData[]) => {\r\n const selectedPortal = selected[0]\r\n this.setState({ selectedPortal: selectedPortal })\r\n if (selectedPortal) {\r\n this.setState({ selectedLookup: undefined, defaults: [], data: [], showWarning: false })\r\n }\r\n }\r\n\r\n handleLookupChange = (selected: string) => {\r\n const lookup = LookupMap.find(el => el.Code === selected)\r\n this.setState({ selectedLookup: lookup })\r\n if (!!lookup) {\r\n this.loadDefaults(lookup)\r\n }\r\n else {\r\n this.setState({ defaults: [], data: [], showWarning: false })\r\n }\r\n }\r\n\r\n handleDefaultValueChange = (value: string, index: number) => {\r\n const newData: OrderDefault[] = [...this.state.data]\r\n newData[index].DefaultValue = value\r\n this.setState({ data: newData })\r\n }\r\n\r\n isAnyShowSelected = () => this.state.data.some(el => !!el.Show)\r\n\r\n DataRow = (data: OrderDefault, index: number, lookup?: Lookup) => {\r\n return \r\n {data.FieldName}\r\n {!lookup?.IsInput && <>\r\n this.toggleShow(index)} className=\"mr-auto\" />\r\n this.toggleDefault(index)} className=\"mr-auto\" />\r\n }\r\n {lookup?.IsInput && !lookup?.IsNumeric && this.handleDefaultValueChange(e.target.value, index)}/>}\r\n {lookup?.IsInput && lookup?.IsNumeric && this.handleDefaultValueChange(value, index)} />}\r\n \r\n }\r\n\r\n render() {\r\n const { saving, loading, resetting, loadingDefaults, data, selectedCompany, selectedPortal, selectedLookup, portals, showWarning } = this.state\r\n const disableButtons = (!selectedCompany && !selectedPortal) || !selectedLookup || loading || saving || resetting || loadingDefaults\r\n const { isSiteAdmin, isPortalAdmin } = this.props\r\n const showSaveWarning = data.length > 0 && !this.isAnyShowSelected() && !this.state.selectedLookup?.IsInput\r\n\r\n return (\r\n \r\n \r\n \r\n Order Defaults\r\n \r\n \r\n {isPortalAdmin && \r\n Company:\r\n \r\n \r\n \r\n }\r\n {isSiteAdmin && \r\n Portal:\r\n \r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n isLoading={loading}\r\n onChange={this.handlePortalChange}\r\n onInputChange={text => this.handleEmpty(text)}\r\n disabled={loading || loadingDefaults}\r\n options={portals || []}\r\n selected={selectedPortal ? [selectedPortal || \"\"] : []}\r\n placeholder=\"Select Portal\"\r\n emptyLabel=\"No Portals Found\">\r\n {!loading && }\r\n \r\n \r\n }\r\n \r\n Order Field:\r\n \r\n this.handleLookupChange(e.target.value)}>\r\n \r\n {LookupMap.map(el => )}\r\n \r\n \r\n \r\n {showWarning && No defaults configured for selected Order Field}\r\n {showSaveWarning && At least one option should be selected to Show before update}\r\n {data.length > 0 && \r\n \r\n \r\n \r\n {!selectedLookup?.IsInput && <>}\r\n {selectedLookup?.IsInput && <>}\r\n \r\n \r\n {this.state.loadingDefaults ? :\r\n data.map((value, index) => this.DataRow(value, index, this.state.selectedLookup))}\r\n
Field ValueShowMake DefaultFieldDefault Value
\r\n
}\r\n
\r\n \r\n this.handleReset()} disabled={disableButtons || showWarning} spin={resetting}>Reset Defaults\r\n this.handleSave()} disabled={disableButtons || showSaveWarning} spin={saving}>Update\r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): OrderDefaultsAuthProps {\r\n return {\r\n isPortalAdmin: isPortalAdmin(state),\r\n isSiteAdmin: isSiteAdmin(state)\r\n }\r\n}\r\nconst ConnectedOrderDefaults = connect(mapStateToProps, null)(OrderDefaults)\r\nexport default ConnectedOrderDefaults","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport interface OrderDefault {\r\n OrderDefaultID?: number\r\n ImplementationID: number\r\n AccountID?: number\r\n LookupCode: string\r\n FieldName: string\r\n DefaultValue?: string\r\n Show: boolean\r\n IsDefault: boolean\r\n Disable: boolean\r\n}\r\n\r\nexport interface SaveOrderDefaults {\r\n Defaults: OrderDefault[]\r\n}\r\n\r\ninterface GetResetDefaults {\r\n ImplementationID: number,\r\n AccountID?: number | string,\r\n LookupCode: string\r\n}\r\n\r\nexport default function OrderDefaultsGet(data: GetResetDefaults) {\r\n const requestBody: string = JSON.stringify(data)\r\n return ObservableFromFetch(\"WorkforceOrder/GetOrderDefaults\", requestBody)\r\n}\r\n\r\nexport function OrderDefaultsSave(data: SaveOrderDefaults) {\r\n const requestBody: string = JSON.stringify(data)\r\n return ObservableFromFetch(\"WorkforceOrder/SaveOrderDefaults\", requestBody )\r\n}\r\n\r\nexport function OrderDefaultsReset(data: GetResetDefaults) {\r\n const requestBody: string = JSON.stringify(data)\r\n return ObservableFromFetch(\"WorkforceOrder/ResetOrderDefaults\", requestBody )\r\n}","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { ImplementationGroupID_Workforce } from \"../../config/Constants\"\r\nimport ImplementationData from \"./Model/ImplementationData\"\r\nimport GridResponse from \"../GridResponse\"\r\n\r\nexport type UserDetailGridResponse = GridResponse\r\n\r\nexport default function ImplementationsGetObservable() {\r\n const requestBody: string = JSON.stringify({ ImplementationGroupID: ImplementationGroupID_Workforce, SortGrid: { SortColumn: \"Name\", SortOrder: \"ASC\" }, ReturnAll: true })\r\n return ObservableFromFetch(\"/SuperUser/ImplementationDetails\", requestBody)\r\n}\r\n","import { Component } from \"react\"\r\n\r\nimport { Col, Form } from \"react-bootstrap\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { filter, map, switchMap } from \"rxjs/operators\"\r\n\r\nimport { OrderDefault } from \"../../api/Administration/OrderDefaults\"\r\nimport EmployeeCategoriesGetObservable from \"../../api/LabService/EmployeeCategoriesGet\"\r\nimport EmployeeCategory from \"../../api/LabService/LabServiceModel/EmployeeCategory\"\r\nimport RegulatoryMode from \"../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport LabServiceRegulatoryModesGetObservable from \"../../api/LabService/LabServiceRegulatoryModesGet\"\r\nimport { DefaultLookupCode } from \"../Administration/OrderDefaults\"\r\n\r\ninterface RegulatoryModeProps {\r\n defaults?: OrderDefault[]\r\n regulatoryModeID?: number\r\n employeeCategoryID?: number\r\n onChange: (isValid: boolean, mode?: RegulatoryMode, cat?: EmployeeCategory) => void\r\n}\r\n\r\ninterface RegulatoryModeState {\r\n regulatoryModesLoading: boolean\r\n categoriesLoading: boolean\r\n regulatoryModes: RegulatoryMode[]\r\n filteredModes: RegulatoryMode[]\r\n categories: EmployeeCategory[]\r\n regulatoryModeObj?: RegulatoryMode\r\n categoryObj?: EmployeeCategory\r\n}\r\n\r\nexport default class RegulatoryModeControl extends Component {\r\n state: RegulatoryModeState = {\r\n regulatoryModesLoading: false,\r\n categoriesLoading: false,\r\n regulatoryModes: [],\r\n filteredModes: [],\r\n categories: [],\r\n regulatoryModeObj: undefined,\r\n categoryObj: undefined,\r\n }\r\n\r\n subscriptions = new Subscription()\r\n\r\n regulatoryMode$ = new Subject()\r\n\r\n componentDidMount() {\r\n const { employeeCategoryID, defaults, regulatoryModeID } = this.props\r\n const { regulatoryModeObj } = this.state\r\n\r\n this.subscriptions.add(\r\n this.regulatoryMode$.subscribe((selected) =>\r\n this.setState({\r\n regulatoryModeObj: selected,\r\n categories: [],\r\n })\r\n )\r\n )\r\n\r\n this.subscriptions.add(\r\n this.regulatoryMode$\r\n .pipe(\r\n filter((selected) => !!selected),\r\n switchMap((selected: RegulatoryMode) =>\r\n concat(\r\n of({ isLoading: true }),\r\n EmployeeCategoriesGetObservable(selected.RegulatoryModeID).pipe(\r\n map((data) => ({ isLoading: false, result: data }))\r\n )\r\n )\r\n )\r\n )\r\n .subscribe((data: { isLoading: boolean; result?: EmployeeCategory[] }) => {\r\n const items = data.result || []\r\n const categoryObj = items.find((item) => item.EmployeeCategoryID === employeeCategoryID)\r\n if (regulatoryModeObj?.RegulatoryModeID.toString() === \"3\") {\r\n const filteredCategories: EmployeeCategory[] = []\r\n const FAADefaults = defaults?.filter((item) => item.LookupCode === DefaultLookupCode.FAAEmployee)\r\n if (FAADefaults && FAADefaults.length > 0) {\r\n const defaultFAA = FAADefaults.find((item) => !!item.Show && !!item.IsDefault)\r\n items.forEach((item) => {\r\n const def = FAADefaults?.find((el) => el.FieldName === item.Name)\r\n if (!def || def?.Show) filteredCategories.push(item)\r\n })\r\n if (defaultFAA) {\r\n this.setState({\r\n categories: filteredCategories,\r\n categoriesLoading: data.isLoading,\r\n categoryObj: filteredCategories.find((item) => item.Name === defaultFAA?.FieldName),\r\n })\r\n } else {\r\n this.setState({ categories: filteredCategories, categoriesLoading: data.isLoading })\r\n }\r\n } else {\r\n this.setState({ categoriesLoading: data.isLoading, categories: items })\r\n }\r\n } else {\r\n this.setState({\r\n categoriesLoading: data.isLoading,\r\n categories: items,\r\n categoryObj,\r\n })\r\n }\r\n this.onCategoryChange(categoryObj)\r\n })\r\n )\r\n\r\n this.setState({ regulatoryModesLoading: true })\r\n this.subscriptions.add(\r\n LabServiceRegulatoryModesGetObservable(true).subscribe(\r\n (result: RegulatoryMode[]) => {\r\n const regMode = result.find((item) => item.RegulatoryModeID === regulatoryModeID)\r\n this.setState({\r\n regulatoryModes: result,\r\n regulatoryModesLoading: false,\r\n regulatoryModeObj: regMode,\r\n })\r\n\r\n if (regMode) {\r\n this.regulatoryMode$.next(regMode)\r\n } else {\r\n this.filterFields()\r\n }\r\n },\r\n () => this.setState({ regulatoryModesLoading: false })\r\n )\r\n )\r\n }\r\n\r\n componentDidUpdate(prevProps: RegulatoryModeProps) {\r\n const { defaults, regulatoryModeID } = this.props\r\n if (defaults !== prevProps.defaults && !regulatoryModeID) {\r\n this.filterFields()\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n onCategoryChange = (selected?: EmployeeCategory) => {\r\n const { onChange } = this.props\r\n const { regulatoryModeObj } = this.state\r\n this.setState({ categoryObj: selected })\r\n onChange(this.isValidSelection(selected), regulatoryModeObj, selected)\r\n }\r\n\r\n filterFields = () => {\r\n const { defaults } = this.props\r\n const { regulatoryModes } = this.state\r\n let modeDefaults = defaults?.filter((item) => item.LookupCode === DefaultLookupCode.RegMode)\r\n if (modeDefaults && modeDefaults.length === 0)\r\n modeDefaults = defaults?.filter((item) => item.LookupCode === DefaultLookupCode.RegMode && !item.AccountID)\r\n if (modeDefaults && modeDefaults.length > 0) {\r\n const filteredModes: RegulatoryMode[] = []\r\n const defaultMode = modeDefaults.find((item) => !!item.Show && !!item.IsDefault)\r\n regulatoryModes.forEach((item) => {\r\n const def = modeDefaults?.find((el) => el.FieldName === item.Name)\r\n if (!def || def?.Show) filteredModes.push(item)\r\n })\r\n this.setState({ filteredModes })\r\n if (defaultMode) this.regulatoryMode$.next(filteredModes.find((item) => item.Name === defaultMode?.FieldName))\r\n } else {\r\n this.setState({ filteredModes: [...regulatoryModes] })\r\n }\r\n }\r\n\r\n isValidSelection = (category?: EmployeeCategory) => {\r\n const { categories, categoriesLoading } = this.state\r\n return !!category || (categories.length === 0 && !categoriesLoading)\r\n }\r\n\r\n render() {\r\n const { regulatoryModesLoading, regulatoryModeObj, filteredModes, categoriesLoading, categories, categoryObj } =\r\n this.state\r\n const { regulatoryModeID, employeeCategoryID } = this.props\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n REGULATORY MODE\r\n {\r\n return props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1\r\n }}\r\n disabled={regulatoryModesLoading || !!regulatoryModeID}\r\n isInvalid={!regulatoryModeObj}\r\n onChange={(selected) => this.regulatoryMode$.next(selected[0])}\r\n options={filteredModes || []}\r\n placeholder=\"Enter the Regulatory Mode name\"\r\n selected={regulatoryModeObj ? [regulatoryModeObj] : []}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n CATEGORY\r\n {!categoriesLoading && categories.length === 0 && None}\r\n {(categories.length > 0 || categoriesLoading) && (\r\n {\r\n return (\r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1\r\n )\r\n }}\r\n onChange={(selected) => this.onCategoryChange(selected[0])}\r\n isInvalid={!categoryObj}\r\n options={categories}\r\n disabled={categoriesLoading || !!employeeCategoryID}\r\n placeholder=\"Enter the Category name\"\r\n selected={categoryObj ? [categoryObj] : []}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n static defaultProps = { defaults: [], regulatoryModeID: undefined, employeeCategoryID: undefined }\r\n}\r\n","import React from \"react\"\r\nimport { Form, Col, Image, Spinner } from \"react-bootstrap\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { BehaviorSubject, concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { filter, map, switchMap } from \"rxjs/operators\"\r\nimport SelectServiceTogglePanel from \"./SelectServiceTogglePanel\"\r\nimport { ServiceDataModel, EmptyServiceData } from \"../OrderModels\"\r\nimport dotImage from \"../../../assets/images/dot-img.png\"\r\nimport SelectService, { SelectServiceProps, SelectServiceState } from \"./SelectService\"\r\n\r\nimport TestToBePerformGetObservable from \"../../../api/LabService/TestToBePerformGet\"\r\nimport LabAccountsGetObservable from \"../../../api/LabService/LabAccountsGet\"\r\nimport LabAccount from \"../../../api/LabService/LabServiceModel/LabAccount\"\r\nimport TestToBePerform from \"../../../api/LabService/LabServiceModel/TestToBePerform\"\r\nimport { ServiceTypeCode } from \"../../../api/Administration/Model/ServiceType\"\r\nimport Service, { ServiceCode, IsServiceActive, IsServicePOCT, IsServiceDrugDOT, IsServiceDrugNonDOT, ServiceByCode, IsServiceCodePOCT, IsServiceFLEX } from \"../../../api/Administration/Model/Service\"\r\nimport TestToBePerformWithCompanyName from \"../../../api/LabService/LabServiceModel/TestToBePerformWithCompanyName\"\r\nimport SelectSampleTestType from \"./SelectSampleTestType\"\r\nimport { SampleType } from \"../../../api/OrderRequests/OrderRequestsModel/SampleType\"\r\nimport SelectSpecimenCollection from \"./SelectSpecimenCollection\"\r\nimport SelectObserved from \"./SelectObserved\"\r\nimport RegulatoryModeControl from \"../RegulatoryModeControl\"\r\n\r\nexport interface SelectDrugTestProps extends SelectServiceProps {\r\n company?: number\r\n location?: number\r\n canAddPOCT: boolean\r\n canAddFLEX: boolean\r\n isObservedMandatory: boolean\r\n}\r\n\r\ninterface SelectDrugTestState extends SelectServiceState {\r\n labAccountsLoading: boolean\r\n testsLoading: boolean\r\n labAccounts: LabAccount[]\r\n availableTests: TestToBePerform[]\r\n tests: TestToBePerform[]\r\n dotTestCount: number\r\n ndotTestCount: number\r\n poctTestCount: number\r\n flexTestCount: number\r\n labAccountCompanyName?: string\r\n}\r\n\r\nexport default class SelectDrugTest extends SelectService {\r\n defaultService: ServiceDataModel = {\r\n ...EmptyServiceData,\r\n serviceTypeCode: ServiceTypeCode.Drug,\r\n serviceCode: ServiceCode.None,\r\n observedCollection: false,\r\n }\r\n state: SelectDrugTestState = {\r\n ...this.defaultService,\r\n labAccountsLoading: false,\r\n testsLoading: false,\r\n labAccounts: [],\r\n availableTests: [],\r\n tests: [],\r\n dotTestCount: 0,\r\n ndotTestCount: 0,\r\n poctTestCount: 0,\r\n flexTestCount: 0,\r\n isDOT: this.props.isDot,\r\n reqSpecimenCollection: this.props.isDot ? \"split\" : \"single\",\r\n }\r\n\r\n subscriptions = new Subscription()\r\n company$ = new BehaviorSubject(0)\r\n labAccount$ = new Subject()\r\n service$ = new Subject()\r\n\r\n componentDidMount() {\r\n this.subscriptions.add(\r\n this.company$\r\n .pipe(\r\n switchMap((company: number) =>\r\n !company\r\n ? of({ isLoading: false })\r\n : concat(\r\n of({ isLoading: true }),\r\n LabAccountsGetObservable({\r\n SearchFor: \"\",\r\n SearchBy: \"Account Name\",\r\n CompanyID: company,\r\n RegionID: 0,\r\n LocationID: this.props.location || 0,\r\n DOT: !!this.state.isDOT,\r\n IsMarketPlace: true,\r\n }).pipe(map((data) => ({ isLoading: false, result: data })))\r\n )\r\n )\r\n )\r\n .subscribe((data: { isLoading: boolean; result?: LabAccount[] }) => {\r\n this.setState({\r\n labAccountsLoading: data.isLoading,\r\n labAccounts: data.result || [],\r\n })\r\n const selectedLabAccount = this.props.labAccountNumber\r\n ? data.result?.find((item) => item.LabAccount === this.props.labAccountNumber)\r\n : undefined\r\n this.labAccount$.next(selectedLabAccount)\r\n })\r\n )\r\n\r\n this.subscriptions.add(\r\n this.labAccount$.subscribe((selected) =>\r\n this.setState({\r\n labAccount: selected?.LabCode || \"\",\r\n labAccountObj: selected,\r\n availableTests: [],\r\n tests: [],\r\n testToPerform: \"\",\r\n testToPerformObj: undefined,\r\n labAccountCompanyName: undefined,\r\n })\r\n )\r\n )\r\n this.subscriptions.add(\r\n this.labAccount$\r\n .pipe(\r\n filter((selected) => !!selected),\r\n switchMap((selected: LabAccount) =>\r\n concat(\r\n of({ isLoading: true }),\r\n TestToBePerformGetObservable({\r\n LabAccountNumber: selected.LabAccount,\r\n VendorID: selected.LabClientMemberId,\r\n IsDOT: !!this.state.isDOT,\r\n IsPoct: IsServiceCodePOCT(this.state.serviceCode),\r\n IsMarketPlace: true,\r\n }).pipe(map((data) => ({ isLoading: false, result: data })))\r\n )\r\n )\r\n )\r\n .subscribe((data: { isLoading: boolean; result?: TestToBePerformWithCompanyName }) => {\r\n const availableTests = data.result?.Panels || []\r\n const companyName = data.result?.CompanyName\r\n const labAccount = this.state.labAccountObj\r\n\r\n if (!!companyName && companyName.length > 0 && labAccount) {\r\n const newLabAccount = {\r\n ...labAccount,\r\n Description: labAccount.Description.replace(\"Undefined\", companyName),\r\n }\r\n if (newLabAccount.Description !== labAccount.Description) {\r\n const index = this.state.labAccounts.indexOf(labAccount)\r\n const newLabAccountsArray: LabAccount[] = [\r\n ...this.state.labAccounts.slice(0, index),\r\n newLabAccount,\r\n ...this.state.labAccounts.slice(index + 1),\r\n ]\r\n\r\n this.setState({ labAccountObj: newLabAccount, labAccounts: newLabAccountsArray })\r\n }\r\n }\r\n\r\n this.setState(\r\n {\r\n testsLoading: data.isLoading,\r\n availableTests: availableTests,\r\n labAccountCompanyName: data.result?.CompanyName,\r\n tests: this.filterTests(availableTests),\r\n testToPerform: \"\",\r\n testToPerformObj: undefined,\r\n dotTestCount: this.dotTestsCount(availableTests),\r\n ndotTestCount: this.ndotTestsCount(availableTests),\r\n poctTestCount: this.poctTestsCount(availableTests),\r\n flexTestCount: this.flexTestsCount(availableTests),\r\n },\r\n () => {\r\n const selectedService = availableTests.find((item) => item.PanelID === this.props.panelId)\r\n if (!selectedService) {\r\n const { dotTestCount, ndotTestCount, poctTestCount, flexTestCount } = this.state\r\n if (flexTestCount > 0) {\r\n this.onChangeTestType(ServiceCode.FLEX)\r\n } else {\r\n if (dotTestCount > 0 && ndotTestCount === 0 && poctTestCount === 0)\r\n this.onChangeTestType(ServiceCode.DrugDOT)\r\n if (dotTestCount === 0 && ndotTestCount > 0 && poctTestCount === 0)\r\n this.onChangeTestType(ServiceCode.Drug)\r\n if (dotTestCount === 0 && ndotTestCount === 0 && poctTestCount > 0)\r\n this.onChangeTestType(ServiceCode.POCT)\r\n }\r\n } else {\r\n let serviceCode = ServiceCode.Drug\r\n if (selectedService?.DOT) serviceCode = ServiceCode.DrugDOT\r\n if (selectedService?.POCT) serviceCode = ServiceCode.POCT\r\n if (selectedService?.FLEX) serviceCode = ServiceCode.FLEX\r\n this.onChangeTestType(serviceCode)\r\n }\r\n }\r\n )\r\n })\r\n )\r\n\r\n this.subscriptions.add(\r\n this.service$.subscribe((selected) => {\r\n const selectedSampleType = selected?.SampleTypeCode as SampleType\r\n\r\n this.setState((prev) => ({\r\n testToPerform: selected?.Code || \"\",\r\n testToPerformObj: selected,\r\n selectedTestType: selectedSampleType,\r\n tests: this.filterTests(prev.availableTests, undefined,selectedSampleType),\r\n }))\r\n })\r\n )\r\n\r\n this.props.company && this.company$.next(this.props.company)\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: SelectDrugTestProps) {\r\n if (\r\n this.props.company &&\r\n (this.props.company !== prevProps.company || (this.props.location && this.props.location !== prevProps.location))\r\n ) {\r\n this.company$.next(this.props.company)\r\n }\r\n }\r\n\r\n setInitialState = () => this.setState({ ...this.defaultService, labAccountCompanyName: undefined })\r\n\r\n filterTests = (\r\n tests: TestToBePerform[],\r\n service: Service | undefined = undefined, \r\n sampleType: SampleType | undefined = undefined\r\n ) => {\r\n const { orderableServices } = this.props\r\n const { serviceCode } = this.state \r\n \r\n const selectedService = service || ServiceByCode(orderableServices, serviceCode) \r\n const isPoct = IsServicePOCT(selectedService)\r\n const isFlex = IsServiceFLEX(selectedService)\r\n const isDOT = isPoct ? undefined : selectedService.DOT\r\n \r\n let filteredTests = tests\r\n if (isPoct) {\r\n filteredTests = tests.filter((test) => test.POCT)\r\n } else if (isFlex) {\r\n filteredTests = tests.filter((test) => test.FLEX)\r\n } else if (isDOT === true) {\r\n filteredTests = tests.filter((test) => test.DOT)\r\n } else if (isDOT === false) {\r\n filteredTests = tests.filter((test) => test.NDOT)\r\n }\r\n if (sampleType) {\r\n filteredTests = filteredTests.filter((t) => t.SampleTypeCode === sampleType)\r\n }\r\n return filteredTests\r\n }\r\n\r\n dotTestsCount = (tests: TestToBePerform[]) => tests.filter((t) => t.DOT).length\r\n\r\n ndotTestsCount = (tests: TestToBePerform[]) => tests.filter((t) => t.NDOT).length\r\n\r\n poctTestsCount = (tests: TestToBePerform[]) => tests.filter((t) => t.POCT).length\r\n\r\n flexTestsCount = (tests: TestToBePerform[]) => tests.filter((t) => t.FLEX).length\r\n\r\n setDefaultDrugSampleType = () => {\r\n const { tests } = this.state\r\n\r\n //const tests = this.filterTests(availableTests)\r\n let sampleType: SampleType | undefined = undefined\r\n \r\n if (tests.every((test) => test.SampleTypeCode === SampleType.UR)) {\r\n sampleType = SampleType.UR\r\n } else if (tests.every((test) => test.SampleTypeCode === SampleType.SLD)) {\r\n sampleType = SampleType.SLD\r\n }\r\n\r\n if (sampleType) {\r\n this.setState((prev) => ({\r\n ...prev,\r\n tests: this.filterTests(prev.availableTests, undefined, sampleType),\r\n selectedTestType: sampleType\r\n })) \r\n }\r\n }\r\n\r\n onChangeLab = (lab: LabAccount) => {\r\n this.setState({ ...this.defaultService }, () => this.labAccount$.next(lab))\r\n }\r\n\r\n onChangeTestType = (value: string) => {\r\n const orderableServices = this.props.orderableServices\r\n const serviceCode = value as ServiceCode\r\n const service = ServiceByCode(orderableServices, serviceCode)\r\n const isPOCT = IsServicePOCT(service)\r\n const isDOT = service.DOT\r\n const req_specimen_collection = isPOCT ? \"single\" : isDOT ? \"split\" : \"single\"\r\n const selectedTest = this.props.panelId\r\n ? this.state.availableTests.find((item) => item.PanelID === this.props.panelId)\r\n : undefined\r\n\r\n this.setState((prev) => ({\r\n serviceCode: serviceCode,\r\n isDOT: isDOT,\r\n isMarketplace: service.Marketplace,\r\n reqSpecimenCollection: req_specimen_collection,\r\n tests: this.filterTests(prev.availableTests, service),\r\n testToPerform: selectedTest?.Description || \"\",\r\n testToPerformObj: selectedTest,\r\n selectedTestType: undefined\r\n }), this.setDefaultDrugSampleType)\r\n }\r\n\r\n onChange = (e: React.ChangeEvent) => {\r\n const value = e.target.type === \"checkbox\" ? e.target.checked : e.target.value\r\n this.setState({ ...{}, [e.target.name]: value })\r\n }\r\n\r\n onChangeSampleTestsType = (e: React.ChangeEvent) => {\r\n const selectedTestType = e.target.value as SampleType\r\n\r\n this.setState((prev) => ({\r\n ...prev,\r\n observedCollection: selectedTestType === SampleType.UR ? prev.observedCollection : false,\r\n selectedTestType: selectedTestType,\r\n tests: this.filterTests(prev.availableTests, undefined,selectedTestType),\r\n testToPerform: \"\",\r\n testToPerformObj: undefined,\r\n }))\r\n }\r\n\r\n onServiceAdd = () => {\r\n const observedCollection = this.state.observedCollection || (this.props.isObservedMandatory && this.state.isDOT)\r\n this.props.onAdd({ ...this.state, observedCollection: observedCollection } as ServiceDataModel)\r\n this.setInitialState()\r\n }\r\n\r\n onPanelClose = () => {\r\n // Clear all entered values\r\n this.setInitialState()\r\n }\r\n\r\n isValid = (data: ServiceDataModel): boolean => {\r\n if (this.isAllServicesDisabled || this.props.denyAddService) {\r\n return false\r\n }\r\n\r\n return (IsServiceCodePOCT(data.serviceCode) || typeof data.isDOT === \"boolean\") // POCT or DOT or Non-DOT type is set\r\n && !!data.testToPerform && data.testToPerform.length > 0 // testToPerform is set\r\n && !!data.labAccount && data.labAccount.length > 0 // labAccount is set\r\n && (data.isDOT !== true || this.state.isValidMode)\r\n }\r\n\r\n hasAvailableTests = () => {\r\n const { availableTests, labAccountObj } = this.state\r\n\r\n return labAccountObj && availableTests.length > 0\r\n }\r\n\r\n showSelectSampleTestType = () => {\r\n const { serviceCode, isDOT } = this.state\r\n\r\n return (\r\n this.hasAvailableTests() &&\r\n !isDOT &&\r\n ![ServiceCode.None, ServiceCode.POCT, ServiceCode.FLEX].includes(serviceCode)\r\n )\r\n }\r\n\r\n showSpecimenCollection = () => {\r\n const { selectedTestType } = this.state\r\n const showSelectSampleTestType = this.showSelectSampleTestType()\r\n\r\n return (\r\n (!showSelectSampleTestType && this.hasAvailableTests()) ||\r\n (showSelectSampleTestType && selectedTestType !== undefined)\r\n )\r\n }\r\n\r\n showObserved = () => {\r\n const { selectedTestType } = this.state\r\n const showSelectSampleTestType = this.showSelectSampleTestType()\r\n\r\n return (\r\n (!showSelectSampleTestType && this.hasAvailableTests()) ||\r\n (showSelectSampleTestType && selectedTestType === SampleType.UR)\r\n )\r\n }\r\n\r\n showDOTRelatedControls = () => {\r\n const { isDOT } = this.state\r\n\r\n return this.hasAvailableTests() && isDOT === true\r\n }\r\n\r\n render() {\r\n const { disabled, isObservedMandatory } = this.props\r\n const {\r\n labAccounts,\r\n labAccountObj,\r\n labAccountsLoading,\r\n availableTests,\r\n tests,\r\n testToPerformObj,\r\n testsLoading,\r\n labAccountCompanyName,\r\n isDOT,\r\n reqSpecimenCollection,\r\n observedCollection,\r\n selectedTestType,\r\n } = this.state\r\n\r\n const observedCheckedDisabled = isObservedMandatory && isDOT\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n LAB ACCOUNT\r\n {\r\n return (\r\n props.selected.length > 0 ||\r\n option.Description.toLowerCase().indexOf(props.text.toLowerCase()) !== -1\r\n )\r\n }}\r\n onChange={(selected: LabAccount[]) => this.onChangeLab(selected[0])}\r\n options={labAccounts}\r\n isInvalid={!labAccountObj}\r\n disabled={!!this.props.labAccountNumber}\r\n placeholder=\"Enter the Lab Account name\"\r\n selected={labAccountObj ? [labAccountObj] : []}\r\n />\r\n \r\n \r\n \r\n {labAccountCompanyName && (\r\n \r\n {labAccountCompanyName}\r\n \r\n )}\r\n {labAccountObj && availableTests.length === 0 && !labAccountsLoading && !testsLoading && (\r\n \r\n No services found for lab account\r\n \r\n )}\r\n {testsLoading && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {this.hasAvailableTests() && (\r\n \r\n \r\n \r\n {this.getServicesComponents()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {this.showSelectSampleTestType() && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {this.showSpecimenCollection() && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {this.showObserved() && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {this.showDOTRelatedControls() && this.setState({ isValidMode: isValid, regulatoryModeObj: mode, categoryObj: cat })}\r\n />}\r\n {this.hasAvailableTests() && (\r\n \r\n \r\n \r\n TEST TO BE PERFORMED\r\n {\r\n return (\r\n props.selected.length > 0 ||\r\n option.Description.toLowerCase().indexOf(props.text.toLowerCase()) !== -1\r\n )\r\n }}\r\n onChange={(selected) => this.service$.next(selected[0])}\r\n isInvalid={!testToPerformObj}\r\n options={tests}\r\n disabled={testsLoading || !!this.props.panelId}\r\n placeholder=\"Enter the Test name\"\r\n selected={testToPerformObj ? [testToPerformObj as TestToBePerform] : []}\r\n />\r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n }\r\n\r\n getServicesComponents() {\r\n const { canAddDOT, canAddNonDOT, canAddPOCT, canAddFLEX } = this.props\r\n const { serviceCode, dotTestCount, ndotTestCount, poctTestCount, flexTestCount } = this.state\r\n const selectedTest = this.state.testToPerformObj as TestToBePerform\r\n\r\n const orderableServices = this.props.orderableServices;\r\n const orderableAccountServices = this.props.orderableAccountServices\r\n const marketplaceServicesCount = this.props.marketplaceServicesCount;\r\n const notMarketplaceServicesCount = this.props.notMarketplaceServicesCount;\r\n const canAddMarketplace = notMarketplaceServicesCount === 0;\r\n const canAddNotMarketplace = marketplaceServicesCount === 0;\r\n\r\n let servicesComponents = [];\r\n this.isAllServicesDisabled = true;\r\n for (let i = 0; i < orderableServices.length; i++) {\r\n const orderableService = orderableServices[i];\r\n\r\n const is_poct = IsServicePOCT(orderableService)\r\n const is_flex = IsServiceFLEX(orderableService)\r\n\r\n //if ((is_poct && flexTestCount > 0) || (is_flex && flexTestCount === 0)) { continue }\r\n\r\n const serviceActive = IsServiceActive(orderableService, orderableAccountServices);\r\n const is_dot = IsServiceDrugDOT(orderableService)\r\n const is_non_dot = IsServiceDrugNonDOT(orderableService)\r\n\r\n let item_type = \"\"\r\n if (is_poct) {\r\n item_type = \"poct\"\r\n } else if (is_flex) {\r\n item_type = \"flex\"\r\n } else {\r\n item_type = orderableService.DOT ? \"regulated\" : \"non-regulated\"\r\n }\r\n\r\n const item_id = `${item_type}-drug-test-radio`\r\n const item_value = orderableService.FFServiceCode;\r\n\r\n let item_disabled = !serviceActive\r\n || (is_dot && (!canAddDOT || (dotTestCount === 0)))\r\n || (is_non_dot && (!canAddNonDOT || (ndotTestCount === 0)))\r\n || (is_poct && (!canAddPOCT || (poctTestCount === 0)))\r\n || (orderableService.Marketplace && !canAddMarketplace)\r\n || (!orderableService.Marketplace && !canAddNotMarketplace)\r\n || (is_flex && (!canAddFLEX || (flexTestCount === 0)))\r\n || (!is_flex && flexTestCount > 0)\r\n\r\n if (!item_disabled) {\r\n this.isAllServicesDisabled = false;\r\n }\r\n\r\n let item_checked = (serviceCode === orderableService.FFServiceCode && !item_disabled)\r\n\r\n if (!!selectedTest && !!this.props.labAccountNumber) {\r\n item_disabled = !item_checked\r\n }\r\n\r\n const serviceComponent = this.onChangeTestType(e.target.value)}\r\n checked={item_checked} />\r\n servicesComponents.push(serviceComponent)\r\n }\r\n\r\n return {servicesComponents}\r\n }\r\n}\r\n","import React from 'react'\r\nimport { Form, Col, Image } from 'react-bootstrap'\r\nimport { Subscription } from \"rxjs\"\r\nimport { Typeahead } from 'react-bootstrap-typeahead'\r\nimport { toast } from \"react-toastify\"\r\nimport SelectServiceTogglePanel from './SelectServiceTogglePanel'\r\nimport { ServiceDataModel, EmptyServiceData } from '../OrderModels'\r\nimport dotImage from '../../../assets/images/dot-img.png'\r\nimport SelectService, { SelectServiceProps, SelectServiceState } from './SelectService'\r\nimport { AlcoholTestSampleTypesObservable } from \"../../../api/OrderRequests/OrderRequestsConstraintGet\"\r\nimport { AlcoholTestSampleType } from \"../../../api/OrderRequests/OrderRequestsModel/AlcoholTestSampleType\"\r\nimport { ServiceTypeCode } from \"../../../api/Administration/Model/ServiceType\"\r\nimport { ServiceCode, IsServiceActive, ServicesByServiceSampleType, ServiceByCode } from \"../../../api/Administration/Model/Service\"\r\nimport { EventType } from '../../../config/Constants'\r\nimport RegulatoryModeControl from '../RegulatoryModeControl'\r\n\r\ninterface SelectAlcoholTestState extends SelectServiceState {\r\n // TODO: 2.0 API availableAlcoholTestSampleTypes: OrderFieldListItem[]\r\n availableAlcoholTestSampleTypes: AlcoholTestSampleType[]\r\n}\r\n\r\nexport default class SelectAlcoholTest extends SelectService {\r\n defaultService: ServiceDataModel = { ...EmptyServiceData, serviceTypeCode: ServiceTypeCode.Alcohol, serviceCode: ServiceCode.None }\r\n\r\n subscriptions = new Subscription()\r\n\r\n constructor(props: SelectServiceProps) {\r\n super(props)\r\n\r\n this.defaultService = { ...EmptyServiceData, serviceTypeCode: ServiceTypeCode.Alcohol, serviceCode: ServiceCode.None, isDOT: props.isDot }\r\n this.state = { ...this.defaultService, availableAlcoholTestSampleTypes: [] }\r\n }\r\n\r\n componentDidMount() {\r\n const selectedTest = this.props.selectedTestCode\r\n const isDot = this.props.isDot\r\n this.subscriptions.add(\r\n AlcoholTestSampleTypesObservable().subscribe(\r\n (results: AlcoholTestSampleType[]) => {\r\n this.setState({\r\n availableAlcoholTestSampleTypes: results,\r\n testToPerform: selectedTest && results.find(type => type.Code === selectedTest)?.Description || \"\",\r\n testToPerformObj: selectedTest ? results.find(type => type.Code === selectedTest) : undefined\r\n })\r\n if (selectedTest) {\r\n let serviceCode = ServiceCode.AlcoholBreath\r\n if (selectedTest === EventType.Breath && isDot) serviceCode = ServiceCode.AlcoholBreathDOT\r\n if (selectedTest === EventType.Saliva && isDot) serviceCode = ServiceCode.AlcoholSalivaDOT\r\n if (selectedTest === EventType.Saliva && !isDot) serviceCode = ServiceCode.AlcoholSaliva\r\n this.onChangeTestType(serviceCode)\r\n }\r\n },\r\n error => toast.error(error)\r\n )\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n setInitialState = () => this.setState({ ...this.defaultService })\r\n \r\n onChangeTestType = (value: string) => {\r\n const orderableServices = this.props.orderableServices;\r\n const serviceCode = value as ServiceCode;\r\n const service = ServiceByCode(orderableServices, serviceCode);\r\n this.setState(\r\n {\r\n serviceCode: serviceCode,\r\n isDOT: service.DOT,\r\n isMarketplace: service.Marketplace\r\n })\r\n }\r\n\r\n onChangeTestToPerform = (selected: AlcoholTestSampleType[]) => {\r\n const item = selected.length > 0 ? selected[0] : undefined\r\n this.setState({ testToPerform: item?.Description || '', testToPerformObj: item })\r\n }\r\n\r\n onServiceAdd = () => {\r\n this.props.onAdd(this.state as ServiceDataModel)\r\n this.setInitialState()\r\n }\r\n\r\n onPanelClose = () => {\r\n // Clear all entered values\r\n this.setInitialState()\r\n }\r\n\r\n isValid = (data: ServiceDataModel): boolean => {\r\n if(this.isAllServicesDisabled || this.props.denyAddService){\r\n return false;\r\n }\r\n\r\n return typeof data.isDOT === \"boolean\" // type is set\r\n && !!data.testToPerform && data.testToPerform.length > 0 // testToPerform is set\r\n && (data.isDOT !== true || this.state.isValidMode)\r\n }\r\n\r\n render() {\r\n const { disabled, canAddDOT, canAddNonDOT, open } = this.props\r\n const { testToPerformObj, isDOT } = this.state\r\n const orderableServiceType = this.props.orderableServiceType;\r\n\r\n const marketplaceServicesCount = this.props.marketplaceServicesCount;\r\n const notMarketplaceServicesCount = this.props.notMarketplaceServicesCount;\r\n\r\n const canAddMarketplace = notMarketplaceServicesCount === 0;\r\n const canAddNotMarketplace = marketplaceServicesCount === 0;\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n ALCOHOL TEST TO BE PERFORMED\r\n `${option.Description}`}\r\n filterBy={(option, props) => {\r\n return props.selected.length > 0 || (option?.Description || \"\").toLowerCase().indexOf(props.text.toLowerCase()) !== -1;\r\n }}\r\n onChange={this.onChangeTestToPerform}\r\n options={this.state.availableAlcoholTestSampleTypes || []}\r\n placeholder=\"Enter the Sample Type name\"\r\n isInvalid={!testToPerformObj}\r\n disabled={!!this.props.selectedTestCode}\r\n selected={testToPerformObj ? [testToPerformObj as AlcoholTestSampleType] : []} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.getServicesComponents()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {isDOT && this.setState({ isValidMode: isValid, regulatoryModeObj: mode, categoryObj: cat })}\r\n />}\r\n \r\n )\r\n }\r\n\r\n getServicesComponents() {\r\n const { disabled, canAddDOT, canAddNonDOT, open } = this.props\r\n const { testToPerformObj, isDOT, availableAlcoholTestSampleTypes } = this.state\r\n\r\n let sampleType = \"\";\r\n if(testToPerformObj){\r\n sampleType = testToPerformObj.Code;\r\n }\r\n if(sampleType === \"\"){\r\n if(availableAlcoholTestSampleTypes){\r\n if(availableAlcoholTestSampleTypes.length > 0){\r\n sampleType = availableAlcoholTestSampleTypes[0].Code;\r\n }\r\n }\r\n }\r\n if(sampleType === \"\"){\r\n if(this.props.orderableServices.length > 0){\r\n sampleType = this.props.orderableServices[0].SampleType || \"\";\r\n }\r\n }\r\n \r\n const orderableServices = ServicesByServiceSampleType(this.props.orderableServices, sampleType);\r\n const orderableAccountServices = this.props.orderableAccountServices\r\n const marketplaceServicesCount = this.props.marketplaceServicesCount;\r\n const notMarketplaceServicesCount = this.props.notMarketplaceServicesCount;\r\n\r\n const canAddMarketplace = notMarketplaceServicesCount === 0;\r\n const canAddNotMarketplace = marketplaceServicesCount === 0;\r\n\r\n let servicesComponents = [];\r\n this.isAllServicesDisabled = true;\r\n for (let i = 0; i < orderableServices.length; i++) {\r\n const orderableService = orderableServices[i];\r\n const serviceActive = IsServiceActive(orderableService, orderableAccountServices);\r\n const item_id = orderableService.DOT ? \"regulated-alcohol-test-radio\" : \"non-regulated-alcohol-test-radio\";\r\n //const item_value = orderableService.DOT ? \"regulated\" : \"non-dot\";\r\n const item_value = orderableService.FFServiceCode;\r\n\r\n const item_disabled = !serviceActive \r\n || (orderableService.DOT && (!canAddDOT || (!!this.props.selectedTestCode && isDOT !== true))) \r\n || (!orderableService.DOT && (!canAddNonDOT || (!!this.props.selectedTestCode && isDOT !== false)))\r\n || (orderableService.Marketplace && !canAddMarketplace)\r\n || (!orderableService.Marketplace && !canAddNotMarketplace)\r\n\r\n if(!item_disabled){\r\n this.isAllServicesDisabled = false;\r\n } \r\n\r\n const item_checked = (isDOT === true && orderableService.DOT) || (isDOT === false && !orderableService.DOT)\r\n const serviceComponent = this.onChangeTestType(e.target.value)}\r\n checked={item_checked} />\r\n servicesComponents.push(serviceComponent)\r\n }\r\n return <>{servicesComponents}\r\n\r\n\r\n }\r\n\r\n}\r\n","import React from 'react'\r\nimport { Form } from 'react-bootstrap'\r\nimport { ServiceDataModel, EmptyServiceData } from '../OrderModels'\r\nimport SelectServiceTogglePanel from './SelectServiceTogglePanel'\r\nimport SelectService, { SelectServiceProps, SelectServiceState } from './SelectService'\r\nimport { ServiceTypeCode } from \"../../../api/Administration/Model/ServiceType\"\r\nimport { ServiceCode, IsServiceActive, ServiceByCode } from \"../../../api/Administration/Model/Service\"\r\nimport RegulatoryModeControl from '../RegulatoryModeControl'\r\n\r\nexport default class SelectPhysicalExam extends SelectService {\r\n defaultService: ServiceDataModel = {...EmptyServiceData, serviceTypeCode: ServiceTypeCode.Physical, serviceCode: ServiceCode.None}\r\n state: SelectServiceState = { ...this.defaultService }\r\n\r\n setInitialState = () => this.setState({ ...this.defaultService })\r\n\r\n onChangeTestType = (e: React.ChangeEvent) => {\r\n const orderableServices = this.props.orderableServices;\r\n const serviceCode = e.target.value as ServiceCode;\r\n const service = ServiceByCode(orderableServices, serviceCode);\r\n this.setState(\r\n {\r\n serviceCode: serviceCode,\r\n isDOT: service.DOT,\r\n isMarketplace: service.Marketplace\r\n })\r\n }\r\n onServiceAdd = () => {\r\n this.props.onAdd(this.state as ServiceDataModel)\r\n this.setInitialState()\r\n }\r\n\r\n onPanelClose = () => {\r\n // Clear all entered values\r\n this.setInitialState()\r\n }\r\n\r\n isValid = (data: ServiceDataModel): boolean => {\r\n if(this.isAllServicesDisabled || this.props.denyAddService){\r\n return false\r\n }\r\n return typeof data.isDOT === \"boolean\" && (data.isDOT !== true || this.state.isValidMode)\r\n }\r\n render() {\r\n const { disabled } = this.props\r\n const orderableServiceType = this.props.orderableServiceType;\r\n\r\n const marketplaceServicesCount = this.props.marketplaceServicesCount;\r\n const notMarketplaceServicesCount = this.props.notMarketplaceServicesCount;\r\n\r\n const canAddMarketplace = notMarketplaceServicesCount === 0;\r\n const canAddNotMarketplace = marketplaceServicesCount === 0;\r\n\r\n\r\n return (\r\n \r\n \r\n {this.getServicesComponents()}\r\n \r\n {this.state.isDOT && this.setState({ isValidMode: isValid, regulatoryModeObj: mode, categoryObj: cat })}\r\n />}\r\n \r\n )\r\n }\r\n\r\n getServicesComponents() {\r\n const { disabled, canAddDOT, canAddNonDOT } = this.props\r\n const orderableServiceType = this.props.orderableServiceType;\r\n const orderableServices = this.props.orderableServices;\r\n const orderableAccountServices = this.props.orderableAccountServices\r\n const marketplaceServicesCount = this.props.marketplaceServicesCount;\r\n const notMarketplaceServicesCount = this.props.notMarketplaceServicesCount;\r\n const canAddMarketplace = notMarketplaceServicesCount === 0;\r\n const canAddNotMarketplace = marketplaceServicesCount === 0;\r\n\r\n let servicesComponents = [];\r\n this.isAllServicesDisabled = true;\r\n for (let i = 0; i < orderableServices.length; i++) {\r\n const orderableService = orderableServices[i];\r\n const serviceActive = IsServiceActive(orderableService, orderableAccountServices);\r\n const item_id = orderableService.DOT ? \"regulated-physical-exam\" : \"non-regulated-physical-exam\";\r\n //const item_value = orderableService.DOT ? \"regulated\" : \"non-dot\";\r\n const item_value = orderableService.FFServiceCode;\r\n\r\n const item_disabled = !serviceActive\r\n || (orderableService.DOT && !canAddDOT)\r\n || (!orderableService.DOT && !canAddNonDOT)\r\n || (orderableService.Marketplace && !canAddMarketplace)\r\n || (!orderableService.Marketplace && !canAddNotMarketplace)\r\n\r\n if(!item_disabled){\r\n this.isAllServicesDisabled = false;\r\n }\r\n\r\n\r\n const item_checked = (canAddDOT && this.state.isDOT === true && orderableService.DOT) || (canAddNonDOT && this.state.isDOT === false && !orderableService.DOT)\r\n const serviceComponent = \r\n servicesComponents.push(serviceComponent)\r\n }\r\n return {servicesComponents}\r\n }\r\n}\r\n","import React from 'react'\r\nimport { Col, Form, Spinner } from 'react-bootstrap'\r\nimport { ServiceDataModel, EmptyServiceData } from '../OrderModels'\r\nimport SelectServiceTogglePanel from './SelectServiceTogglePanel'\r\nimport SelectService, { SelectServiceProps, SelectServiceState } from './SelectService'\r\nimport { ServiceTypeCode } from \"../../../api/Administration/Model/ServiceType\"\r\nimport { ServiceCode, IsServiceActive, ServiceByCode, IsServiceCodeWellness } from \"../../../api/Administration/Model/Service\"\r\nimport LabAccount from \"../../../api/LabService/LabServiceModel/LabAccount\"\r\nimport TestToBePerformGetObservable from \"../../../api/LabService/TestToBePerformGet\"\r\nimport TestToBePerformWithCompanyName from \"../../../api/LabService/LabServiceModel/TestToBePerformWithCompanyName\"\r\nimport TestToBePerform from \"../../../api/LabService/LabServiceModel/TestToBePerform\"\r\nimport { BehaviorSubject, concat, of, Subject, Subscription } from 'rxjs'\r\nimport { catchError, map, switchMap } from 'rxjs/operators'\r\nimport LabAccountsGetObservable from '../../../api/LabService/LabAccountsGet'\r\nimport FormatError from '../../../formatters/FormatError'\r\nimport { toast } from 'react-toastify'\r\nimport { APIError } from '../../../api/ObservableFromFetch'\r\nimport { Typeahead } from 'react-bootstrap-typeahead'\r\n\r\ninterface SelectOHSProps extends SelectServiceProps {\r\n services: ServiceDataModel[]\r\n company?: number\r\n location?: number\r\n}\r\n\r\ninterface SelectOHSTestState extends SelectServiceState {\r\n labAccountsLoading: boolean\r\n labAccounts: LabAccount[]\r\n testsLoading: boolean\r\n availableTests: TestToBePerform[]\r\n labAccountCompanyName?: string\r\n}\r\n\r\nexport default class SelectOHS extends SelectService {\r\n defaultService: ServiceDataModel = {...EmptyServiceData, serviceTypeCode: ServiceTypeCode.OHS, serviceCode: ServiceCode.None}\r\n state: SelectOHSTestState = {\r\n ...this.defaultService,\r\n labAccountsLoading: false,\r\n labAccounts: [],\r\n testsLoading: false,\r\n availableTests: [] }\r\n\r\n subscriptions = new Subscription()\r\n company$ = new BehaviorSubject(0)\r\n labAccount$ = new Subject()\r\n service$ = new Subject()\r\n\r\n componentDidMount() {\r\n this.subscriptions.add(\r\n this.company$.pipe(\r\n switchMap((company: number) =>\r\n !company\r\n ? of({ isLoading: false })\r\n : concat(\r\n of({ isLoading: true }),\r\n LabAccountsGetObservable({\r\n SearchFor: \"\",\r\n SearchBy: \"Account Name\",\r\n CompanyID: company,\r\n RegionID: 0,\r\n LocationID: this.props.location || 0,\r\n DOT: false,\r\n IsMarketPlace: true\r\n }).pipe(\r\n map((data) => ({ isLoading: false, result: data })),\r\n catchError((error) => of({ isLoading: false, error: error }))\r\n )\r\n ))\r\n ).subscribe(\r\n (data: { isLoading: boolean, result?: LabAccount[], error?: Error | APIError }) => {\r\n if (data.error) {\r\n toast.error(FormatError(data.error))\r\n }\r\n this.setState({ labAccountsLoading: data.isLoading, labAccounts: data.result || [] })\r\n this.labAccount$.next(undefined)\r\n }))\r\n\r\n this.subscriptions.add(\r\n this.labAccount$.subscribe(\r\n selected => this.setState({\r\n labAccount: selected?.LabCode || \"\",\r\n labAccountObj: selected,\r\n availableTests: [],\r\n testToPerform: \"\",\r\n testToPerformObj: undefined,\r\n labAccountCompanyName: undefined\r\n })\r\n ))\r\n\r\n this.subscriptions.add(\r\n this.labAccount$.pipe(\r\n switchMap((selected: LabAccount) =>\r\n !selected\r\n ? of({ isLoading: false }) : concat(\r\n of({ isLoading: true }),\r\n TestToBePerformGetObservable({\r\n LabAccountNumber: selected.LabAccount,\r\n VendorID: selected.LabClientMemberId,\r\n IsDOT: false,\r\n IsPoct: false,\r\n IsMarketPlace: true\r\n }).pipe(\r\n map((data) => ({ isLoading: false, result: data })),\r\n catchError((error) => of({ isLoading: false, error: error }))\r\n )\r\n ))\r\n ).subscribe(\r\n (data: { isLoading: boolean, result?: TestToBePerformWithCompanyName, error?: Error | APIError }) => {\r\n if (data.error) {\r\n toast.error(FormatError(data.error))\r\n }\r\n this.setState({\r\n testsLoading: data.isLoading,\r\n availableTests: data.result?.Panels || [],\r\n labAccountCompanyName: data.result?.CompanyName,\r\n testToPerform: \"\",\r\n testToPerformObj: undefined\r\n })\r\n }))\r\n\r\n this.subscriptions.add(\r\n this.service$.subscribe(selected => this.setState({ testToPerform: selected?.Code || \"\", testToPerformObj: selected }))\r\n )\r\n\r\n this.props.company && this.company$.next(this.props.company)\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: SelectOHSProps) {\r\n if (this.props.company && (this.props.company !== prevProps.company || (this.props.location && this.props.location !== prevProps.location))) {\r\n this.company$.next(this.props.company)\r\n }\r\n }\r\n\r\n setInitialState = () => this.setState({ ...this.defaultService })\r\n\r\n onChangeLab = (lab: LabAccount) => this.labAccount$.next(lab)\r\n\r\n onChangeTestType = (e: React.ChangeEvent) => {\r\n const orderableServices = this.props.orderableServices;\r\n const serviceCode = e.target.value as ServiceCode;\r\n const service = ServiceByCode(orderableServices, serviceCode);\r\n this.setState(\r\n {\r\n serviceCode: serviceCode,\r\n isDOT: service.DOT,\r\n isMarketplace: service.Marketplace,\r\n testToPerform: service.ServiceDescription\r\n })\r\n }\r\n onServiceAdd = () => {\r\n this.props.onAdd(this.state as ServiceDataModel)\r\n this.setInitialState()\r\n }\r\n\r\n onPanelClose = () => {\r\n // Clear all entered values\r\n this.setInitialState()\r\n }\r\n\r\n isValid = (data: ServiceDataModel): boolean => {\r\n if (this.isAllServicesDisabled || this.props.denyAddService){\r\n return false\r\n }\r\n if (IsServiceCodeWellness(this.state.serviceCode) && (!this.state.labAccountObj || !this.state.testToPerformObj)) {\r\n return false\r\n }\r\n return !!this.state.serviceCode\r\n }\r\n\r\n render() {\r\n const { disabled, orderableServiceType } = this.props\r\n const { labAccounts, labAccountObj, labAccountsLoading,\r\n labAccountCompanyName, availableTests, testsLoading,\r\n testToPerformObj, serviceCode } = this.state\r\n const showPanels = labAccountObj && availableTests.length\r\n\r\n return (\r\n \r\n\r\n \r\n {this.getServicesComponents()}\r\n \r\n {IsServiceCodeWellness(serviceCode) && <>\r\n \r\n \r\n \r\n LAB ACCOUNT\r\n {\r\n return props.selected.length > 0 || option.Description.toLowerCase().indexOf(props.text.toLowerCase()) !== -1;\r\n }}\r\n onChange={(selected: LabAccount[]) => this.onChangeLab(selected[0])}\r\n options={labAccounts}\r\n disabled={!!this.props.labAccountNumber}\r\n placeholder=\"Enter the Lab Account name\"\r\n selected={labAccountObj ? [labAccountObj] : []} />\r\n \r\n \r\n \r\n {labAccountCompanyName && \r\n {labAccountCompanyName}\r\n }\r\n {labAccountObj && availableTests.length === 0 && !labAccountsLoading && !testsLoading && \r\n No services found for lab account\r\n }\r\n {testsLoading && \r\n \r\n }\r\n \r\n }\r\n \r\n )\r\n }\r\n\r\n getServicesComponents() {\r\n const { canAddDOT, canAddNonDOT, orderableServices, orderableAccountServices, marketplaceServicesCount, notMarketplaceServicesCount } = this.props\r\n const canAddMarketplace = notMarketplaceServicesCount === 0\r\n const canAddNotMarketplace = marketplaceServicesCount === 0\r\n\r\n let servicesComponents = []\r\n this.isAllServicesDisabled = true\r\n for (let i = 0; i < orderableServices.length; i++) {\r\n const orderableService = orderableServices[i]\r\n const serviceActive = IsServiceActive(orderableService, orderableAccountServices)\r\n const alreadySelected = this.props.services.filter(item => item.serviceCode === orderableService.FFServiceCode)\r\n const item_id = `${orderableService.FFServiceCode}_${orderableService.ServiceID}`\r\n const item_value = orderableService.FFServiceCode\r\n\r\n const item_disabled = !serviceActive || alreadySelected.length > 0 && !IsServiceCodeWellness(orderableService.ServiceCode as ServiceCode)\r\n || (orderableService.DOT && !canAddDOT)\r\n || (!orderableService.DOT && !canAddNonDOT)\r\n || (orderableService.Marketplace && !canAddMarketplace)\r\n || (!orderableService.Marketplace && !canAddNotMarketplace)\r\n\r\n if(!item_disabled){\r\n this.isAllServicesDisabled = false;\r\n }\r\n\r\n const item_checked = this.state.serviceCode === item_value\r\n const serviceComponent = \r\n servicesComponents.push(serviceComponent)\r\n }\r\n\r\n return {servicesComponents}\r\n }\r\n}\r\n","import { Form } from \"react-bootstrap\"\r\n\r\nimport Service, { ServiceCode } from \"../../../../api/Administration/Model/Service\"\r\n\r\ninterface CHSServiceProps {\r\n service: Service\r\n selected: boolean\r\n disabled: boolean\r\n onSelectService: (serviceCode: ServiceCode, add: boolean) => void\r\n}\r\n\r\nfunction CHSService(props: CHSServiceProps) {\r\n const {\r\n service: { ServiceID, ServiceDescription, FFServiceCode },\r\n selected,\r\n disabled,\r\n onSelectService,\r\n } = props\r\n\r\n const onChange = (e: React.ChangeEvent) => {\r\n onSelectService(e.target.value as ServiceCode, e.target.checked)\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default CHSService\r\n","import { useEffect } from \"react\"\r\n\r\nimport { Form } from \"react-bootstrap\"\r\n\r\nimport CHSService from \"./CHSService\"\r\nimport AccountService from \"../../../../api/Administration/Model/AccountService\"\r\nimport Service, { IsServiceActive, IsServiceCodeCHSBL, ServiceCode } from \"../../../../api/Administration/Model/Service\"\r\nimport { ServiceDataModel } from \"../../OrderModels\"\r\n\r\ninterface CHSServicesProps {\r\n services: ServiceDataModel[]\r\n orderableServices: Service[]\r\n selectedServices: Service[]\r\n accountServices: AccountService[]\r\n canAddDOT: boolean\r\n canAddNonDOT: boolean\r\n canAddMarketplace: boolean\r\n canAddNotMarketplace: boolean\r\n onSelectService: (serviceCode: ServiceCode, add: boolean) => void\r\n}\r\n\r\nfunction CHSServices(props: CHSServicesProps) {\r\n const {\r\n services,\r\n orderableServices,\r\n selectedServices,\r\n accountServices,\r\n canAddDOT,\r\n canAddNonDOT,\r\n canAddMarketplace,\r\n canAddNotMarketplace,\r\n onSelectService,\r\n } = props\r\n\r\n useEffect(() => {\r\n if (orderableServices.length === 1 && selectedServices.length === 0) {\r\n onSelectService(orderableServices[0].FFServiceCode as ServiceCode, true)\r\n }\r\n }, [onSelectService, selectedServices, orderableServices])\r\n\r\n const isSelected = (service: Service) => {\r\n return !!selectedServices.find((item) => item.FFServiceCode === service.FFServiceCode)\r\n }\r\n\r\n const isDisabled = (service: Service) => {\r\n return (\r\n !IsServiceActive(service, accountServices) ||\r\n services.filter((item) => item.serviceCode === service.FFServiceCode).length > 0 ||\r\n !IsServiceCodeCHSBL(service.FFServiceCode) ||\r\n (service.DOT && !canAddDOT) ||\r\n (!service.DOT && !canAddNonDOT) ||\r\n (service.Marketplace && !canAddMarketplace) ||\r\n (!service.Marketplace && !canAddNotMarketplace)\r\n )\r\n }\r\n\r\n return (\r\n \r\n {orderableServices.map((service) => (\r\n \r\n ))}\r\n \r\n )\r\n}\r\n\r\nexport default CHSServices\r\n","import { Form } from \"react-bootstrap\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\n\r\nimport TestToBePerform from \"../../../../api/LabService/LabServiceModel/TestToBePerform\"\r\n\r\ninterface CHSTestsProps {\r\n selectedTests: TestToBePerform[]\r\n availableTests: TestToBePerform[]\r\n disabled?: boolean\r\n onChange: (selected: TestToBePerform[]) => void\r\n}\r\n\r\nfunction CHSTests(props: CHSTestsProps) {\r\n const { selectedTests, availableTests, disabled, onChange } = props\r\n\r\n return (\r\n \r\n TEST TO BE PERFORMED\r\n \r\n \r\n )\r\n}\r\n\r\nCHSTests.defaultProps = {\r\n disabled: false,\r\n}\r\n\r\nexport default CHSTests\r\n","import React, { PureComponent } from \"react\"\r\n\r\nimport { Col, Form, Spinner } from \"react-bootstrap\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { toast } from \"react-toastify\"\r\nimport { BehaviorSubject, concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { catchError, map, switchMap } from \"rxjs/operators\"\r\n\r\nimport CHSServices from \"./CHS/CHSServices\"\r\nimport CHSTests from \"./CHS/CHSTests\"\r\nimport { SelectServiceProps } from \"./SelectService\"\r\nimport SelectServiceTogglePanel from \"./SelectServiceTogglePanel\"\r\nimport { ServiceByCode, ServiceCode } from \"../../../api/Administration/Model/Service\"\r\nimport { ServiceTypeCode } from \"../../../api/Administration/Model/ServiceType\"\r\nimport LabAccountsGetObservable from \"../../../api/LabService/LabAccountsGet\"\r\nimport LabAccount from \"../../../api/LabService/LabServiceModel/LabAccount\"\r\nimport TestToBePerform from \"../../../api/LabService/LabServiceModel/TestToBePerform\"\r\nimport TestToBePerformWithCompanyName from \"../../../api/LabService/LabServiceModel/TestToBePerformWithCompanyName\"\r\nimport TestToBePerformGetObservable from \"../../../api/LabService/TestToBePerformGet\"\r\nimport { APIError } from \"../../../api/ObservableFromFetch\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport { EmptyServiceData, ServiceDataModel } from \"../OrderModels\"\r\n\r\ninterface SelectCHSProps extends SelectServiceProps {\r\n company?: number\r\n location?: number\r\n services: ServiceDataModel[]\r\n}\r\n\r\ninterface SelectCHSTestState {\r\n serviceData: ServiceDataModel\r\n labAccountsLoading: boolean\r\n labAccounts: LabAccount[]\r\n testsLoading: boolean\r\n availableTests: TestToBePerform[]\r\n labAccountCompanyName?: string\r\n}\r\n\r\nexport default class SelectCHS extends PureComponent {\r\n defaultService = {\r\n ...EmptyServiceData,\r\n serviceTypeCode: ServiceTypeCode.CHS,\r\n serviceCode: ServiceCode.None,\r\n selectedTests: [],\r\n selectedServices: [],\r\n }\r\n\r\n state: SelectCHSTestState = {\r\n serviceData: { ...this.defaultService },\r\n labAccountsLoading: false,\r\n labAccounts: [],\r\n testsLoading: false,\r\n availableTests: [],\r\n }\r\n\r\n subscriptions = new Subscription()\r\n\r\n company$ = new BehaviorSubject(0)\r\n\r\n labAccount$ = new Subject()\r\n\r\n componentDidMount() {\r\n const { company, location } = this.props\r\n\r\n this.subscriptions.add(\r\n this.company$\r\n .pipe(\r\n switchMap((companyId: number) =>\r\n !companyId\r\n ? of({ isLoading: false })\r\n : concat(\r\n of({ isLoading: true }),\r\n LabAccountsGetObservable({\r\n SearchFor: \"\",\r\n SearchBy: \"Account Name\",\r\n CompanyID: companyId,\r\n RegionID: 0,\r\n LocationID: location || 0,\r\n DOT: false,\r\n IsMarketPlace: true,\r\n }).pipe(\r\n map((data) => ({ isLoading: false, result: data })),\r\n catchError((error) => of({ isLoading: false, error }))\r\n )\r\n )\r\n )\r\n )\r\n .subscribe((data: { isLoading: boolean; result?: LabAccount[]; error?: Error | APIError }) => {\r\n if (data.error) {\r\n toast.error(FormatError(data.error))\r\n }\r\n this.setState({ labAccountsLoading: data.isLoading, labAccounts: data.result || [] })\r\n this.labAccount$.next(undefined)\r\n })\r\n )\r\n\r\n this.subscriptions.add(\r\n this.labAccount$.subscribe((selected) =>\r\n this.setState((prev) => ({\r\n ...prev,\r\n serviceData: {\r\n ...prev.serviceData,\r\n labAccount: selected?.LabCode || \"\",\r\n labAccountObj: selected,\r\n availableTests: [],\r\n testToPerform: \"\",\r\n testToPerformObj: undefined,\r\n labAccountCompanyName: undefined,\r\n },\r\n }))\r\n )\r\n )\r\n\r\n this.subscriptions.add(\r\n this.labAccount$\r\n .pipe(\r\n switchMap((selected: LabAccount) =>\r\n !selected\r\n ? of({ isLoading: false })\r\n : concat(\r\n of({ isLoading: true }),\r\n TestToBePerformGetObservable({\r\n LabAccountNumber: selected.LabAccount,\r\n VendorID: selected.LabClientMemberId,\r\n IsDOT: false,\r\n IsPoct: false,\r\n IsMarketPlace: true,\r\n }).pipe(\r\n map((data) => ({ isLoading: false, result: data })),\r\n catchError((error) => of({ isLoading: false, error }))\r\n )\r\n )\r\n )\r\n )\r\n .subscribe(\r\n (data: { isLoading: boolean; result?: TestToBePerformWithCompanyName; error?: Error | APIError }) => {\r\n if (data.error) {\r\n toast.error(FormatError(data.error))\r\n }\r\n this.setState((prev) => ({\r\n ...prev,\r\n testsLoading: data.isLoading,\r\n availableTests: data.result?.Panels || [],\r\n labAccountCompanyName: data.result?.CompanyName,\r\n serviceData: {\r\n ...prev.serviceData,\r\n testToPerform: \"\",\r\n testToPerformObj: undefined,\r\n selectedTests: [],\r\n selectedServices: [],\r\n },\r\n }))\r\n }\r\n )\r\n )\r\n\r\n if (company) {\r\n this.company$.next(company)\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: SelectCHSProps) {\r\n const { company, location } = this.props\r\n\r\n if (company && (company !== prevProps.company || (location && location !== prevProps.location))) {\r\n this.company$.next(company)\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n onChangeLab = (lab: LabAccount) => this.labAccount$.next(lab)\r\n\r\n onSelectService = (serviceCode: ServiceCode, add: boolean) => {\r\n const { orderableServices } = this.props\r\n const service = ServiceByCode(orderableServices, serviceCode)\r\n\r\n this.setState((prev) => {\r\n const { selectedServices } = prev.serviceData\r\n\r\n if (add && !selectedServices.find((item) => item.ServiceCode === service.ServiceCode)) {\r\n return {\r\n ...prev,\r\n serviceData: {\r\n ...prev.serviceData,\r\n selectedServices: [...prev.serviceData.selectedServices, service],\r\n },\r\n }\r\n }\r\n return {\r\n ...prev,\r\n serviceData: {\r\n ...prev.serviceData,\r\n selectedServices: prev.serviceData.selectedServices.filter((s) => s.ServiceCode !== service.ServiceCode),\r\n },\r\n }\r\n })\r\n }\r\n\r\n onServiceAdd = () => {\r\n const { onAdd } = this.props\r\n const { serviceData } = this.state\r\n\r\n onAdd(serviceData)\r\n this.setInitialState()\r\n }\r\n\r\n onPanelClose = () => this.setInitialState()\r\n\r\n onClinicalTestToBePerformedChange = (selected: TestToBePerform[]) => {\r\n this.setState((prev) => ({\r\n ...prev,\r\n serviceData: {\r\n ...prev.serviceData,\r\n testToPerform: selected.map((test) => test.Code).join(\", \") || \"\",\r\n selectedTests: selected,\r\n },\r\n }))\r\n }\r\n\r\n setInitialState = () => this.setState({ serviceData: this.defaultService })\r\n\r\n isValid = (): boolean => {\r\n const { denyAddService } = this.props\r\n const {\r\n serviceData: { labAccountObj, selectedTests, selectedServices },\r\n } = this.state\r\n\r\n // TODO: Should returns false if all services are disabled\r\n\r\n return !denyAddService && !!labAccountObj && selectedTests.length > 0 && selectedServices.length > 0\r\n }\r\n\r\n render() {\r\n const {\r\n services,\r\n disabled,\r\n orderableServiceType,\r\n labAccountNumber,\r\n orderableServices,\r\n orderableAccountServices,\r\n canAddDOT,\r\n canAddNonDOT,\r\n notMarketplaceServicesCount,\r\n marketplaceServicesCount,\r\n } = this.props\r\n\r\n const {\r\n labAccounts,\r\n labAccountsLoading,\r\n labAccountCompanyName,\r\n availableTests,\r\n testsLoading,\r\n serviceData,\r\n serviceData: { labAccountObj, selectedTests, selectedServices },\r\n } = this.state\r\n\r\n const showPanels = labAccountObj && availableTests.length > 0\r\n const showNoServicesFound = !labAccountsLoading && labAccountObj && !testsLoading && availableTests.length === 0\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n LAB ACCOUNT\r\n {\r\n return (\r\n props.selected.length > 0 ||\r\n option.Description.toLowerCase().indexOf(props.text.toLowerCase()) !== -1\r\n )\r\n }}\r\n onChange={(selected: LabAccount[]) => this.onChangeLab(selected[0])}\r\n isInvalid={!labAccountObj}\r\n options={labAccounts}\r\n disabled={!!labAccountNumber}\r\n placeholder=\"Enter the Lab Account name\"\r\n selected={labAccountObj ? [labAccountObj] : []}\r\n />\r\n \r\n \r\n \r\n {labAccountCompanyName && (\r\n \r\n \r\n {labAccountCompanyName}\r\n \r\n \r\n )}\r\n {showNoServicesFound && (\r\n \r\n \r\n No services found for lab account\r\n \r\n \r\n )}\r\n {testsLoading && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {showPanels && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {orderableServices.length > 0 && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n }\r\n\r\n static defaultProps = {\r\n company: 0,\r\n location: 0,\r\n }\r\n}\r\n","import { Component } from 'react'\r\nimport SelectDrugTest from './OrderServices/SelectDrugTest'\r\nimport SelectAlcoholTest from './OrderServices/SelectAlcoholTest'\r\nimport SelectPhysicalExam from './OrderServices/SelectPhysicalExam'\r\nimport { ServiceDataModel } from './OrderModels'\r\nimport { TestReasonType } from '../../api/OrderRequests/OrderRequestsModel/TestReasonType'\r\nimport { TestData } from './OrderRequest'\r\nimport ServiceType, { ServiceTypeCode, GetDrugServiceType, GetAlcoholServiceType, GetPhysicalServiceType, GetOHSServiceType, GetCHSServiceType } from \"../../api/Administration/Model/ServiceType\"\r\nimport Service, { ServiceCode, ServicesByServiceTypeId, AccountsForServices, IsServiceCodePOCT, IsServiceCodeCHSBL } from \"../../api/Administration/Model/Service\"\r\nimport AccountService from \"../../api/Administration/Model/AccountService\"\r\nimport SelectOHS from './OrderServices/SelectOHS'\r\nimport SelectCHS from './OrderServices/SelectCHS'\r\nimport { OrderDefault } from '../../api/Administration/OrderDefaults'\r\nimport RegulatoryMode from '../../api/LabService/LabServiceModel/RegulatoryMode'\r\nimport EmployeeCategory from '../../api/LabService/LabServiceModel/EmployeeCategory'\r\n\r\ninterface ServicesSelectionProps {\r\n company?: number\r\n location?: number\r\n reason?: TestReasonType\r\n services: ServiceDataModel[]\r\n selectedRegMode?: RegulatoryMode\r\n selectedCategory?: EmployeeCategory\r\n maximumDrugTests: number\r\n maximumAlcoholTests: number\r\n maximumPhysicalTests: number\r\n showDrugSection?: boolean\r\n showAlcoholSection?: boolean\r\n showPhysicalSection?: boolean\r\n showOHSSection?: boolean\r\n showCHSSection?: boolean\r\n denyAddServices: boolean\r\n completingPendingOrders?: boolean\r\n drugTestData?: TestData\r\n alcoholTestData?: TestData,\r\n orderableServiceTypes: ServiceType[],\r\n orderableServices: Service[],\r\n orderableAccountServices: AccountService[],\r\n defaults: OrderDefault[],\r\n onAddService: (data: ServiceDataModel) => void\r\n}\r\n\r\nconst ReasonReturnToDuty = \"Return To Duty\"\r\nconst ReasonFollowUp = \"Follow-up\"\r\n\r\nexport default class ServicesSelection extends Component {\r\n render() {\r\n const { onAddService } = this.props\r\n const isDot = this.props.completingPendingOrders && (this.props.drugTestData?.dot || this.props.alcoholTestData?.dot)\r\n const hasServices = (isDOT: boolean) => {\r\n return this.props.services\r\n .filter(item => ![ServiceCode.POCT, ServiceCode.Physical, ServiceCode.PhysicalDOT, ServiceCode.Drug, ServiceCode.DrugDOT].includes(item.serviceCode))\r\n .filter(item => ![ServiceTypeCode.OHS].includes(item.serviceTypeCode))\r\n .filter(item => ![ServiceTypeCode.CHS].includes(item.serviceTypeCode))\r\n .filter(item => item.isDOT === isDOT)\r\n .length > 0\r\n }\r\n const filterServicesByType = (types: ServiceTypeCode[]) => {\r\n return this.props.services.filter(item => types.includes(item.serviceTypeCode))\r\n }\r\n const filterServicesByMarketplace = (marketplace: boolean) => {\r\n return this.props.services.filter(item => item.isMarketplace === marketplace)\r\n }\r\n\r\n // Regulated (DOT) test type is available to select if no any Non-Regulated (NON-DOT) test types in ordered services list\r\n const canAddDOT = this.props.completingPendingOrders && !isDot ? false : !hasServices(false)\r\n // Non-Regulated (NON-DOT) test type is available to select if no any Regulated (DOT) test types in ordered services list\r\n const canAddNonDOT = this.props.completingPendingOrders && isDot ? false : !hasServices(true)\r\n const canAddPOCT = !this.props.completingPendingOrders\r\n const canAddFLEX = !this.props.completingPendingOrders\r\n const canAddDrugDOT = !(this.props.completingPendingOrders && !isDot)\r\n const canAddDrugNonDOT = !(this.props.completingPendingOrders && isDot)\r\n\r\n // Whether panels should be disabled\r\n const canAddDrugService = true\r\n const canAddAlcoholService = filterServicesByType([ServiceTypeCode.Alcohol]).length < this.props.maximumAlcoholTests\r\n const canAddPhysicalService = filterServicesByType([ServiceTypeCode.Physical]).length < this.props.maximumPhysicalTests\r\n const canAddOHSService = true\r\n const canAddCHSService = true\r\n\r\n // Observed checkbox should be checked and unable to change for Reasons \"Return To Duty\" and \"Follow-up\"\r\n // Implemented according to Steve W. decision made on scrum 5/19/2021\r\n // Matching by name according to WF 1.0 logic (src\\app\\pages\\order\\order.component.ts:1949)\r\n const isObservedMandatory = this.props.reason && (this.props.reason.Description === ReasonReturnToDuty || this.props.reason.Description === ReasonFollowUp) || false\r\n const orderableServiceTypes = this.props.orderableServiceTypes;\r\n const orderableServices = this.props.orderableServices;\r\n const orderableAccountServices = this.props.orderableAccountServices;\r\n\r\n const drugServiceType = GetDrugServiceType(orderableServiceTypes);\r\n const alcoholServiceType = GetAlcoholServiceType(orderableServiceTypes);\r\n const physicalServiceType = GetPhysicalServiceType(orderableServiceTypes);\r\n const ohsServiceType = GetOHSServiceType(orderableServiceTypes)\r\n const chsServiceType = GetCHSServiceType(orderableServiceTypes)\r\n\r\n const drugServices = ServicesByServiceTypeId(orderableServices, drugServiceType.ServiceTypeID);\r\n const alcoholServices = ServicesByServiceTypeId(orderableServices, alcoholServiceType.ServiceTypeID);\r\n const physicalServices = ServicesByServiceTypeId(orderableServices, physicalServiceType.ServiceTypeID);\r\n const ohsServices = ServicesByServiceTypeId(orderableServices, ohsServiceType.ServiceTypeID)\r\n const chsServices = ServicesByServiceTypeId(orderableServices, chsServiceType.ServiceTypeID)\r\n\r\n const drugAccountServices = AccountsForServices(drugServices, orderableAccountServices);\r\n const alcoholAccountServices = AccountsForServices(alcoholServices, orderableAccountServices);\r\n const physicalAccountServices = AccountsForServices(physicalServices, orderableAccountServices);\r\n const ohsAccountServices = AccountsForServices(ohsServices, orderableAccountServices)\r\n const chsAccountServices = AccountsForServices(chsServices, orderableAccountServices)\r\n\r\n const marketplaceServicesCount = filterServicesByMarketplace(true).length;\r\n const notMarketplaceServicesCount = filterServicesByMarketplace(false).length;\r\n\r\n return (\r\n

\r\n {(this.props.showDrugSection || this.props.showAlcoholSection || this.props.showPhysicalSection) && PLEASE SELECT SERVICES:}\r\n {this.props.showDrugSection && }\r\n {this.props.showAlcoholSection && }\r\n {this.props.showPhysicalSection && }\r\n {this.props.showOHSSection && }\r\n {this.props.showCHSSection && }\r\n
\r\n )\r\n }\r\n}\r\n","import { Form } from 'react-bootstrap'\r\n\r\nexport interface TextFormControlProps {\r\n value: string | undefined\r\n maxLength?: number\r\n disabled?: boolean\r\n readOnly?: boolean\r\n changeHandler: (value: string) => void\r\n isValid?: () => boolean\r\n blurHandler?: () => void\r\n enterTapHandler?: () => void\r\n formatFunction?: (value: string) => string\r\n}\r\n\r\nexport default (props: TextFormControlProps) => {\r\n\r\n const onChange = (value: string) => {\r\n if (props.formatFunction) { value = props.formatFunction(value) }\r\n props.changeHandler(value)\r\n }\r\n\r\n return (\r\n onChange(e.target.value)}\r\n disabled={props.disabled}\r\n maxLength={props.maxLength}\r\n readOnly={props.readOnly}\r\n isInvalid={props.value !== undefined && (props.isValid !== undefined && !props.isValid())}\r\n onBlur={() => { onChange(props.value || ''); if (props.blurHandler) { props.blurHandler() } }}\r\n onKeyDown={(e: { keyCode: number }) => { if (props.enterTapHandler && e.keyCode === 13) { props.enterTapHandler() } }} />\r\n )\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { Donor } from \"./OrderRequestsModel/Donor\"\r\n\r\nexport interface GetDonorRequest {\r\n Identifier?: string\r\n IdentifierType?: number | string\r\n DonorID?: string\r\n CompanyID: number\r\n RegulatoryModeID: number\r\n LastName?: string\r\n EveningPhone?: string\r\n DayTimePhone?: string\r\n Mobile?: null\r\n DateOfBirth?: string\r\n isPortalAdmin?: boolean\r\n}\r\n\r\nexport function SearchDonorGetObservable(parameters: GetDonorRequest): Observable {\r\n const requestBody: string = JSON.stringify(parameters)\r\n return ObservableFromFetch(\"Workforceorder/SearchDonorInformationByIDV2\", requestBody)\r\n}\r\n\r\nexport function AdvanceSearchDonorGetObservable(parameters: GetDonorRequest): Observable {\r\n const requestBody: string = JSON.stringify(parameters)\r\n return ObservableFromFetch(\"Workforceorder/AdvanceSearchDonorInformation\", requestBody)\r\n}","import React, { Component, createRef } from 'react'\r\nimport { toast } from 'react-toastify'\r\nimport { Form, Col, InputGroup, Button, Spinner } from 'react-bootstrap'\r\nimport TextFormControl from './TextFormControl'\r\nimport DatePicker from 'react-datepicker'\r\nimport 'react-datepicker/dist/react-datepicker.css'\r\nimport FormatPhone from '../../formatters/FormatPhone'\r\nimport FormatSSN from '../../formatters/FormatSSN'\r\nimport { DonorInformationModel, GetRegulatoryModeDonor } from './OrderModels'\r\nimport { Subscription } from \"rxjs\"\r\nimport { StateObservable } from \"../../api/OrderRequests/OrderRequestsConstraintGet\"\r\nimport State from \"../../api/OrderRequests/OrderRequestsModel/State\"\r\nimport StateSelect from \"../FormattedInputs/StateSelect\"\r\nimport { Donor } from \"../../api/OrderRequests/OrderRequestsModel/Donor\"\r\nimport { SearchDonorGetObservable } from \"../../api/OrderRequests/SearchDonorGet\"\r\nimport { FaSearch } from \"react-icons/fa\"\r\nimport { BirthdayInput } from \"../FormattedInputs/BirthdayInput\"\r\nimport { DonorData } from './OrderRequest'\r\nimport { DonorIdRegexp, InvalidDonorId, InvalidDonorIdLength, InvalidNameMessage, MaxDonorIdLength, NameRegexp } from '../../config/Constants';\r\nimport { DonorDetail } from \"../../api/OrderRequests/SSOOrderRequest\"\r\nimport RegulatoryMode from '../../api/LabService/LabServiceModel/RegulatoryMode'\r\n\r\ntype PhoneField = \"WorkPhone\" | \"CellPhone\" | \"HomePhone\"\r\n\r\nexport interface DonorInformationProps {\r\n companyId?: number\r\n completingPendingOrders?: boolean\r\n orderFormData?: DonorData\r\n donor: DonorInformationModel\r\n idTypes: GetRegulatoryModeDonor[]\r\n isBirthDateRequired?: boolean\r\n regulatoryMode?: RegulatoryMode\r\n showIdType: boolean\r\n showMiddleInitial: boolean\r\n eveningPhoneLabel: string\r\n daytimePhoneLabel: string\r\n eveningPhoneField: PhoneField\r\n daytimePhoneField: PhoneField\r\n daytimePhoneRequired: boolean\r\n showGenderField: boolean\r\n validateDonorIdFormat?: boolean\r\n maxDonorIdLength?: number\r\n SSODonorData?: DonorDetail\r\n onDonorChange: (donor: DonorInformationModel, isValid: boolean, isDonorInfoSuccess: boolean) => void\r\n}\r\n\r\ninterface DonorInformationState extends DonorInformationModel {\r\n loading: boolean\r\n statesLoading: boolean\r\n}\r\n\r\nexport default class DonorInformation extends Component {\r\n state: DonorInformationState = {\r\n ...this.props.donor,\r\n idTypeObj: this.props.donor.idType && this.props.idTypes.find(item => item.PrimaryIDType === this.props.donor.idType) ? this.props.donor.idTypeObj : this.props.idTypes.sort((a, b) => (a.Rank < b.Rank ? -1 : 1))[0],\r\n loading: false,\r\n statesLoading: false\r\n }\r\n birthDateInput = createRef()\r\n isDonorInfoSuccess: boolean = false\r\n lastSearch: string = \"\"\r\n\r\n subscriptions = new Subscription()\r\n\r\n componentDidMount() {\r\n this.handleDonorIdChange(this.state.donorId || \"\")\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions && this.subscriptions.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: DonorInformationProps) {\r\n const objEq = (obj1: GetRegulatoryModeDonor[], obj2: GetRegulatoryModeDonor[]) => obj1.every((val, index) => val === obj2[index])\r\n if (!prevProps.idTypes.length && this.props.idTypes.length || prevProps.idTypes.length && !objEq(prevProps.idTypes, this.props.idTypes)) {\r\n if (this.props.completingPendingOrders && this.props.orderFormData) {\r\n this.fillPendingFormData(this.props.orderFormData)\r\n }\r\n else {\r\n this.handleIdTypeChange(this.props.donor.idType)\r\n this.populateSSODonorData()\r\n }\r\n }\r\n }\r\n\r\n fillPendingFormData(data: DonorData) {\r\n const idType = data.IDType\r\n const idTypeObj = this.props.idTypes.find(item => item.PrimaryIDType === idType) || this.props.idTypes[0]\r\n if (this.displayState(idTypeObj)) {\r\n this.loadStates()\r\n }\r\n this.setState({\r\n personId: data.PersonID,\r\n firstName: data.FirstName,\r\n lastName: data.LastName,\r\n donorId: data.DonorID,\r\n idType: data.IDType,\r\n idTypeObj: idTypeObj,\r\n })\r\n SearchDonorGetObservable({\r\n CompanyID: this.props.companyId || 0,\r\n DonorID: data.MockDonorID,\r\n Identifier: idType,\r\n IdentifierType: idTypeObj.Rank,\r\n RegulatoryModeID: this.props.regulatoryMode?.RegulatoryModeID || 0,\r\n }).subscribe(\r\n response => this.getDonorInfoSuccess(response),\r\n error => this.getDonorError(error)\r\n )\r\n }\r\n\r\n loadStates = () => {\r\n if (!this.state.states && !this.state.statesLoading) {\r\n this.setState({ statesLoading: true })\r\n this.subscriptions.add(\r\n StateObservable().subscribe(\r\n (results: State[]) => this.setState({ states: results, statesLoading: false }),\r\n () => { this.setState({ statesLoading: false }) }\r\n )\r\n )\r\n }\r\n }\r\n\r\n populateSSODonorData = () => {\r\n const data = this.props.SSODonorData\r\n if (!data) return\r\n\r\n this.handleIdTypeChange(data.DonorIDType)\r\n if (data.DonorID) {\r\n this.handleDonorIdChange(data.DonorID)\r\n }\r\n this.setState({\r\n idReadOnly: !!data.DonorID,\r\n firstName: data.DonorFirstName,\r\n lastName: data.DonorLastName,\r\n donorId: data.DonorID,\r\n idType: data.DonorIDType,\r\n birthdate: data.DonorDOB ? new Date(data.DonorDOB) : undefined,\r\n daytimePhone: data.DonorPhone,\r\n email: data.DonorEmail,\r\n address: { Address1: data.Address?.Line1 || \"\", Address2: data.Address?.Line2 || \"\", City: data.Address?.City || \"\", State: data.Address?.State || \"\", Zip: data.Address?.Zip || \"\" }\r\n }, () => this.onDonorSearch())\r\n }\r\n\r\n handleIdTypeChange = (idType?: string) => {\r\n const idTypeObject = this.props.idTypes.find(item => item.PrimaryIDType === idType) || this.props.idTypes.sort((a, b) => (a.Rank < b.Rank ? -1 : 1))[0]\r\n\r\n if (this.displayState(idTypeObject)) {\r\n this.loadStates()\r\n }\r\n\r\n this.updateState({ donorId: \"\", idTypeObj: idTypeObject }, true)\r\n }\r\n\r\n handleDonorIdChange = (value: string) => {\r\n value = this.state.idTypeObj?.PrimaryIDType === \"SSN\" ? FormatSSN(value) : value\r\n this.updateState({ donorId: value })\r\n }\r\n\r\n handleStateChange = (state: State) => this.updateState({ state: state, stateCode: state?.Abbreviation }, true)\r\n handleBirthDateChange = (value: Date | undefined) => this.updateState({ birthdate: value }, true)\r\n handleChange = (name: string, value: string) => this.updateState({ [name]: value })\r\n isPhoneValid = (value: string | undefined, require: boolean) => (require === false && !value) || (value || '').replace(/\\D/g, \"\").length === 10 || value === \"n/p\" || value === \"N/P\" || value === \"np\" || value === \"NP\"\r\n isFirstNameValid = (value: string | undefined, require: boolean) => (require === false && !value) || ((value || '').trim().length > 0 && NameRegexp.test((value || '').trim()))\r\n isLastNameValid = (value: string | undefined, require: boolean) => (require === false && !value) || ((value || '').trim().length > 0 && NameRegexp.test((value || '').trim()))\r\n isSSNValid = (value: string) => this.props.completingPendingOrders || value.replace(/\\D/g, \"\").length === 9\r\n\r\n updateState(changes: object, sendDonorInformation: boolean = false) {\r\n this.setState(changes, () => {\r\n if (sendDonorInformation) {\r\n const newInfo = { ...this.state, ...changes }\r\n this.sendDonorInformation(newInfo)\r\n }\r\n })\r\n }\r\n\r\n onDonorSearch = () => {\r\n const identifier = (this.state.donorId?.toString().replace(/-/g, \"\") || \"\").trim()\r\n if(identifier.length === 0){\r\n return\r\n }\r\n if (identifier === this.lastSearch) {\r\n return\r\n }\r\n this.lastSearch = identifier\r\n\r\n if (this.state.idTypeObj?.PrimaryIDType === \"SSN\" && !this.isSSNValid(this.state.donorId || \"\")) {\r\n toast.error(\"Please enter valid 9 digit ID.\")\r\n return\r\n }\r\n\r\n if (!this.props.companyId) {\r\n return\r\n }\r\n\r\n this.setState({ loading: true })\r\n SearchDonorGetObservable({ CompanyID: this.props.companyId || 0, Identifier: identifier, IdentifierType: this.state.idTypeObj?.Rank || 0, RegulatoryModeID: this.props.regulatoryMode?.RegulatoryModeID || 0 }).subscribe(\r\n response => this.getDonorInfoSuccess(response),\r\n error => this.getDonorError(error)\r\n )\r\n }\r\n\r\n getDonorInfoSuccess = (response: Donor[]) => {\r\n if (response.length === 0) {\r\n this.isDonorInfoSuccess = false\r\n toast.error(\"Donor was not found. New donor will be created.\")\r\n if (this.props.SSODonorData) {\r\n this.setState({\r\n loading: false,\r\n firstNameReadOnly: false,\r\n middleInitialReadOnly: false,\r\n lastNameReadOnly: false,\r\n homePhoneReadOnly: false,\r\n workPhoneReadOnly: false,\r\n stateReadOnly: false,\r\n genderReadOnly: false,\r\n idReadOnly: true\r\n })\r\n } else {\r\n this.setState(this.props.completingPendingOrders ? {\r\n loading: false,\r\n firstNameReadOnly: !!this.state.firstName,\r\n middleInitialReadOnly: !!this.state.middleInitial,\r\n lastNameReadOnly: !!this.state.lastName,\r\n homePhoneReadOnly: (this.state.eveningPhone || \"\") !== \"\",\r\n workPhoneReadOnly: (this.state.daytimePhone || \"\") !== \"\",\r\n stateReadOnly: (this.state.stateCode || \"\") !== \"\",\r\n genderReadOnly: !!this.state.gender\r\n } : {\r\n loading: false,\r\n firstName: \"\",\r\n middleInitial: \"\",\r\n lastName: \"\",\r\n eveningPhone: \"\",\r\n daytimePhone: \"\",\r\n birthdate: undefined,\r\n firstNameReadOnly: false,\r\n middleInitialReadOnly: false,\r\n lastNameReadOnly: false,\r\n homePhoneReadOnly: false,\r\n workPhoneReadOnly: false,\r\n state: undefined,\r\n stateCode: undefined,\r\n personId: undefined,\r\n accessCode: undefined,\r\n gender: \"\",\r\n email: \"\",\r\n genderReadOnly: false\r\n })\r\n }\r\n } else if (this.props.SSODonorData) {\r\n this.isDonorInfoSuccess = true\r\n const data = response[0]\r\n const fetchedDate = data.DateOfBirth ? new Date(data.DateOfBirth) : undefined\r\n const validDate = fetchedDate && fetchedDate.getTime && !isNaN(fetchedDate.getTime())\r\n const { firstName, middleInitial, lastName, eveningPhone, daytimePhone, birthdate } = this.state\r\n let newData = { firstName: firstName , middleInitial: middleInitial, lastName: lastName, eveningPhone: eveningPhone, daytimePhone: daytimePhone, birthdate: birthdate }\r\n if (this.noValueOrEmpty(firstName)) newData.firstName = data.FirstName\r\n if (this.noValueOrEmpty(middleInitial)) newData.middleInitial = data.MiddleInitial\r\n if (this.noValueOrEmpty(lastName)) newData.lastName = data.LastName\r\n if (this.noValueOrEmpty(eveningPhone)) newData.eveningPhone = FormatPhone(data[this.props.eveningPhoneField] || '')\r\n if (this.noValueOrEmpty(daytimePhone)) newData.daytimePhone = FormatPhone(data[this.props.daytimePhoneField] || '')\r\n if (this.noValueOrEmpty(birthdate)) newData.birthdate = validDate ? fetchedDate : undefined\r\n this.setState({ loading: false, personId: data.PersonID, ...newData })\r\n }\r\n else {\r\n this.isDonorInfoSuccess = true\r\n const data = response[0]\r\n const fetchedDate = data.DateOfBirth ? new Date(data.DateOfBirth) : undefined\r\n const validDate = fetchedDate && fetchedDate.getTime && !isNaN(fetchedDate.getTime())\r\n\r\n this.setState({\r\n loading: false,\r\n personId: data.PersonID,\r\n firstName: data.FirstName,\r\n middleInitial: data.MiddleInitial.substring(0,1),\r\n lastName: data.LastName,\r\n eveningPhone: FormatPhone(data[this.props.eveningPhoneField] || ''),\r\n daytimePhone: FormatPhone(data[this.props.daytimePhoneField] || ''),\r\n birthdate: validDate ? fetchedDate : undefined,\r\n accessCode: data.GovAccessCode,\r\n gender: data.Gender,\r\n email: data.Email,\r\n firstNameReadOnly: !!data.FirstName,\r\n middleInitialReadOnly: !!data.MiddleInitial,\r\n lastNameReadOnly: !!data.LastName,\r\n homePhoneReadOnly: (data.HomePhone || \"\") !== \"N/P\",\r\n workPhoneReadOnly: (data.WorkPhone || \"\") !== \"N/P\",\r\n stateReadOnly: (data.DriverLICStateOfIssue !== \"\"),\r\n genderReadOnly: !!data.Gender,\r\n state: undefined,\r\n stateCode: data.DriverLICStateOfIssue ? data.DriverLICStateOfIssue : undefined\r\n })\r\n }\r\n this.sendDonorInformation()\r\n }\r\n\r\n noValueOrEmpty = (value: string | Date | undefined) => !value || value === \"\"\r\n\r\n getDonorError = (error: string): void => {\r\n this.isDonorInfoSuccess = false\r\n this.setState({ loading: false })\r\n toast.error(\"Donor was not found. New donor will be created.\")\r\n }\r\n\r\n isDonorIdValid = (info: DonorInformationModel = this.state) => {\r\n const { donorId, idTypeObj } = info\r\n if (donorId === undefined) { return true }\r\n if (idTypeObj?.PrimaryIDType === \"SSN\") {\r\n return this.isSSNValid(donorId)\r\n }\r\n const value = donorId.trim()\r\n return value.length > 0 && value.length <= MaxDonorIdLength && (this.props.validateDonorIdFormat ? DonorIdRegexp.test(value) : true)\r\n }\r\n\r\n sendDonorInformation = (info: DonorInformationModel = this.state) => {\r\n const { firstName, lastName, eveningPhone, daytimePhone, birthdate, gender } = info\r\n const isFormValid = this.isDonorIdValid(info) &&\r\n this.isStateValid(info) &&\r\n this.isPhoneValid(eveningPhone, false) &&\r\n this.isPhoneValid(daytimePhone, this.props.daytimePhoneRequired) &&\r\n this.isFirstNameValid(firstName, true) &&\r\n this.isLastNameValid(lastName, true) &&\r\n (this.props.isBirthDateRequired ? !!birthdate : true) &&\r\n ((gender || \"\").trim().length > 0 || !this.props.showGenderField)\r\n\r\n this.props.onDonorChange(info, isFormValid, this.isDonorInfoSuccess)\r\n }\r\n\r\n displayState = (idType?: GetRegulatoryModeDonor) => idType?.PrimaryIDType === \"DriverID\"\r\n isStateValid = (info: DonorInformationModel = this.state) => !this.displayState(info.idTypeObj) || !!info.stateCode\r\n\r\n render() {\r\n const { idTypeObj, donorId, firstName, middleInitial, lastName, eveningPhone, daytimePhone, birthdate, gender, statesLoading } = this.state\r\n const { showIdType, showMiddleInitial, eveningPhoneLabel, daytimePhoneLabel, daytimePhoneRequired, showGenderField, validateDonorIdFormat } = this.props\r\n const validDonorIdFormat = validateDonorIdFormat ? DonorIdRegexp.test(donorId || \"\") : true\r\n\r\n const label = (text: string, required: boolean) => {text}\r\n const idTypesOptions = () => this.props.idTypes.sort((a, b) => (a.Rank > b.Rank) ? 1 : -1).map(item => )\r\n return (\r\n
\r\n \r\n DONOR INFORMATION\r\n \r\n \r\n {showIdType && \r\n \r\n {label('ID TYPE', false)}\r\n this.handleIdTypeChange(e.target.value)}\r\n onBlur={() => this.sendDonorInformation}>\r\n {idTypesOptions()}\r\n \r\n \r\n }\r\n \r\n \r\n {label('DONOR ID', true)}\r\n \r\n this.handleDonorIdChange(value)}\r\n isValid={() => this.props.completingPendingOrders || this.isDonorIdValid()}\r\n blurHandler={() => { this.sendDonorInformation(); this.onDonorSearch(); }}\r\n enterTapHandler={this.onDonorSearch} />\r\n {!validDonorIdFormat ? InvalidDonorId : InvalidDonorIdLength}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!showIdType && }\r\n \r\n \r\n {label('FIRST NAME', true)}\r\n this.handleChange('firstName', value)}\r\n isValid={() => this.isFirstNameValid(firstName, true)}\r\n blurHandler={this.sendDonorInformation} />\r\n {InvalidNameMessage}\r\n \r\n \r\n {showMiddleInitial && \r\n \r\n {label('MIDDLE INITIAL', false)}\r\n this.handleChange('middleInitial', value)}\r\n blurHandler={this.sendDonorInformation} />\r\n \r\n }\r\n \r\n \r\n {label('LAST NAME', true)}\r\n this.handleChange('lastName', value)}\r\n isValid={() => this.isFirstNameValid(lastName, true)}\r\n blurHandler={this.sendDonorInformation} />\r\n {InvalidNameMessage}\r\n \r\n \r\n \r\n \r\n {label(eveningPhoneLabel, false)}\r\n this.handleChange('eveningPhone', value)}\r\n formatFunction={(value) => FormatPhone(value)}\r\n isValid={() => this.isPhoneValid(eveningPhone, false)}\r\n blurHandler={this.sendDonorInformation} />\r\n \r\n \r\n \r\n \r\n {label(daytimePhoneLabel, daytimePhoneRequired)}\r\n this.handleChange('daytimePhone', value)}\r\n formatFunction={(value) => FormatPhone(value)}\r\n isValid={() => this.isPhoneValid(daytimePhone, daytimePhoneRequired)}\r\n blurHandler={this.sendDonorInformation} />\r\n \r\n \r\n \r\n \r\n {label(\"DATE OF BIRTH\", !!this.props.isBirthDateRequired)}\r\n { if (this.birthDateInput.current && (e.key === 'Tab')) { this.birthDateInput.current.setOpen(false) } }}\r\n onChange={date => this.handleBirthDateChange(date as Date || undefined)}\r\n customInput={} />\r\n \r\n \r\n {showGenderField &&\r\n \r\n \r\n {label(\"GENDER\", true)}\r\n ) => this.updateState({ gender: e.target.value }, true)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n
\r\n )\r\n }\r\n\r\n static defaultProps = {\r\n showIdType: true,\r\n showMiddleInitial: true,\r\n eveningPhoneLabel: 'EVENING PHONE',\r\n daytimePhoneLabel: 'DAYTIME PHONE',\r\n eveningPhoneField: 'HomePhone',\r\n daytimePhoneField: 'WorkPhone',\r\n daytimePhoneRequired: true,\r\n showGenderField: false\r\n }\r\n\r\n}\r\n","import {\r\n Alabama, Alaska, Arizona, Arkansas, California, Colorado,\r\n Connecticut, Delaware, Florida, Georgia,\r\n Hawaii, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana,\r\n Maine, Maryland, Massachusetts, Michigan, Minnesota,\r\n Mississippi, Missouri, Montana,\r\n Nebraska, Nevada, NewHampshire, NewJersey,\r\n NewMexico, NewYork, NorthCarolina, NorthDakota,\r\n Ohio, Oklahoma, Oregon, Pennsylvania,\r\n RhodeIsland, SouthCarolina, SouthDakota,\r\n Tennessee, Texas, Utah, Vermont, Virginia, Washington,\r\n WestVirginia, Wisconsin, Wyoming, CommonWealthStateListing, CommonWealthState\r\n} from \"./CommonWealthState\";\r\n\r\nconst statesAbbreviationsRegx = new RegExp(\r\n \"^(?:(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY]))$\"\r\n);\r\nconst statesFullNamesAbbreviationsRegx = new RegExp(\r\n \"^(Alabama|Alaska|Arizona|Arkansas|California|Colorado|Connecticut|Delaware|Florida|Georgia|Hawaii|Idaho|Illinois|Indiana|Iowa|\"+\r\n \"Kansas|Kentucky|Louisiana|Maine|Maryland|Massachusetts|Michigan|Minnesota|Mississippi|Missouri|Montana|Nebraska|\"+\r\n \"Nevada|New\\\\sHampshire|New\\\\sJersey|New\\\\sMexico|New\\\\sYork|North\\\\sCarolina|North\\\\sDakota|Ohio|Oklahoma|Oregon|\"+\r\n \"Pennsylvania|Rhode\\\\sIsland|South\\\\sCarolina|South\\\\sDakota|Tennessee|Texas|Utah|Vermont|Virginia|Washington|\" +\r\n \"West\\\\sVirginia|Wisconsin|Wyoming)$\", \"i\"\r\n);\r\nexport default function FindCommonWealthStatesInText(text: string): CommonWealthState[]{\r\n let statesFound: CommonWealthState[] = [];\r\n text.toUpperCase().split(\",\").map( (value: string) => {\r\n let trimmedInput = value.trim();\r\n if(statesFullNamesAbbreviationsRegx.test(trimmedInput)){\r\n const stateFound = CommonWealthStateListing.filter((y: string) => y == trimmedInput);\r\n if(stateFound.length > 0) {\r\n statesFound.push(stateFound[0]);\r\n }\r\n }\r\n else if(statesAbbreviationsRegx.test(value)){\r\n statesFound.push(stateAbbreviationsToCommonWealthState[trimmedInput]);\r\n }\r\n }\r\n )\r\n return statesFound;\r\n}\r\n\r\nexport const stateAbbreviationsToCommonWealthState: {[key: string]: CommonWealthState} = {\r\n \"AL\":Alabama,\r\n \"AK\": Alaska,\r\n \"AZ\": Arizona,\r\n \"AR\": Arkansas,\r\n \"CA\": California,\r\n \"CO\": Colorado,\r\n \"CT\": Connecticut,\r\n \"DE\": Delaware,\r\n \"FL\": Florida,\r\n \"GA\": Georgia,\r\n \"HI\": Hawaii,\r\n \"ID\": Idaho,\r\n \"IL\": Illinois,\r\n \"IN\": Indiana,\r\n \"IA\": Iowa,\r\n \"KS\": Kansas,\r\n \"KY\": Kentucky,\r\n \"LA\": Louisiana,\r\n \"ME\": Maine,\r\n \"MD\": Maryland,\r\n \"MA\": Massachusetts,\r\n \"MI\": Michigan,\r\n \"MN\": Minnesota,\r\n \"MS\": Mississippi,\r\n \"MO\": Missouri,\r\n \"MT\": Montana,\r\n \"NE\": Nebraska,\r\n \"NV\": Nevada,\r\n \"NH\": NewHampshire,\r\n \"NJ\": NewJersey,\r\n \"NM\": NewMexico,\r\n \"NY\": NewYork,\r\n \"NC\": NorthCarolina,\r\n \"ND\": NorthDakota,\r\n \"OH\": Ohio,\r\n \"OK\": Oklahoma,\r\n \"OR\": Oregon,\r\n \"PA\": Pennsylvania,\r\n \"RI\": RhodeIsland,\r\n \"SC\": SouthCarolina,\r\n \"SD\": SouthDakota,\r\n \"TN\": Tennessee,\r\n \"TX\": Texas,\r\n \"UT\": Utah,\r\n \"VT\": Vermont,\r\n \"VA\": Virginia,\r\n \"WA\": Washington,\r\n \"WV\": WestVirginia,\r\n \"WI\": Wisconsin,\r\n \"WY\": Wyoming,\r\n}\r\nexport type TimeZone = \"CST\" | \"AKST\" | \"MST\" | \"HST\" | \"EDT\" | \"PST\";\r\nexport const StateToTimeZone: {[key in CommonWealthState]: TimeZone} = {\r\n Alabama: \"CST\",\r\n Alaska: \"AKST\",\r\n Arizona: \"MST\",\r\n Arkansas: \"CST\",\r\n California: \"PST\",\r\n Colorado: \"MST\",\r\n Connecticut: \"EDT\",\r\n Delaware: \"EDT\",\r\n Florida: \"EDT\",\r\n Georgia: \"EDT\",\r\n Hawaii: \"HST\",\r\n Idaho: \"MST\",\r\n Illinois: \"CST\",\r\n Indiana: \"EDT\",\r\n Iowa: \"CST\",\r\n Kansas: \"CST\",\r\n Kentucky: \"EDT\",\r\n Louisiana: \"CST\",\r\n Maine: \"EDT\",\r\n Maryland: \"EDT\",\r\n Massachusetts: \"EDT\",\r\n Michigan: \"CST\",\r\n Minnesota: \"CST\",\r\n Mississippi: \"CST\",\r\n Missouri: \"CST\",\r\n Montana: \"MST\",\r\n Nebraska: \"CST\",\r\n Nevada: \"PST\",\r\n NewHampshire: \"EDT\",\r\n NewJersey: \"EDT\",\r\n NewMexico: \"MST\",\r\n NewYork: \"EDT\",\r\n NorthCarolina: \"EDT\",\r\n NorthDakota: \"CST\",\r\n Ohio: \"EDT\",\r\n Oklahoma: \"CST\",\r\n Oregon: \"PST\",\r\n Pennsylvania: \"EDT\",\r\n RhodeIsland: \"EDT\",\r\n SouthCarolina: \"EDT\",\r\n SouthDakota: \"CST\",\r\n Tennessee: \"EDT\",\r\n Texas: \"CST\",\r\n Utah: \"MST\",\r\n Vermont: \"EDT\",\r\n Virginia: \"EDT\",\r\n Washington: \"PST\",\r\n WestVirginia: \"EDT\",\r\n Wisconsin: \"CST\",\r\n Wyoming: \"MST\"\r\n}\r\n","export const Alabama = \"Alabama\";\r\nexport const Alaska = \"Alaska\";\r\nexport const Arizona = \"Arizona\";\r\nexport const Arkansas = \"Arkansas\";\r\nexport const California = \"California\";\r\nexport const Colorado = \"Colorado\";\r\nexport const Connecticut = \"Connecticut\";\r\nexport const Delaware = \"Delaware\";\r\nexport const Florida = \"Florida\";\r\nexport const Georgia = \"Georgia\";\r\nexport const Hawaii = \"Hawaii\";\r\nexport const Idaho = \"Idaho\";\r\nexport const Illinois = \"Illinois\";\r\nexport const Indiana = \"Indiana\";\r\nexport const Iowa = \"Iowa\";\r\nexport const Kansas = \"Kansas\";\r\nexport const Kentucky = \"Kentucky\";\r\nexport const Louisiana = \"Louisiana\";\r\nexport const Maine = \"Maine\";\r\nexport const Maryland = \"Maryland\";\r\nexport const Massachusetts = \"Massachusetts\";\r\nexport const Michigan = \"Michigan\";\r\nexport const Minnesota = \"Minnesota\";\r\nexport const Mississippi = \"Mississippi\";\r\nexport const Missouri = \"Missouri\";\r\nexport const Montana = \"Montana\";\r\nexport const Nebraska = \"Nebraska\";\r\nexport const Nevada = \"Nevada\";\r\nexport const NewHampshire = \"NewHampshire\";\r\nexport const NewJersey = \"NewJersey\";\r\nexport const NewMexico = \"NewMexico\";\r\nexport const NewYork = \"NewYork\";\r\nexport const NorthCarolina = \"NorthCarolina\";\r\nexport const NorthDakota = \"NorthDakota\";\r\nexport const Ohio = \"Ohio\";\r\nexport const Oklahoma = \"Oklahoma\";\r\nexport const Oregon = \"Oregon\";\r\nexport const Pennsylvania = \"Pennsylvania\";\r\nexport const RhodeIsland = \"RhodeIsland\";\r\nexport const SouthCarolina = \"SouthCarolina\";\r\nexport const SouthDakota = \"SouthDakota\";\r\nexport const Tennessee = \"Tennessee\";\r\nexport const Texas = \"Texas\";\r\nexport const Utah = \"Utah\";\r\nexport const Vermont = \"Vermont\";\r\nexport const Virginia = \"Virginia\";\r\nexport const Washington = \"Washington\";\r\nexport const WestVirginia = \"WestVirginia\";\r\nexport const Wisconsin = \"Wisconsin\";\r\nexport const Wyoming = \"Wyoming\";\r\nexport type CommonWealthState = \"Alabama\" | \"Alaska\" | \"Arizona\" | \"Arkansas\" | \"California\" | \"Colorado\" | \"Connecticut\" | \"Delaware\" | \"Florida\" | \"Georgia\" | \"Hawaii\" | \"Idaho\" | \"Illinois\" | \"Indiana\" | \"Iowa\" | \"Kansas\" | \"Kentucky\" | \"Louisiana\" | \"Maine\" | \"Maryland\" | \"Massachusetts\" | \"Michigan\" | \"Minnesota\" | \"Mississippi\" | \"Missouri\" | \"Montana\" | \"Nebraska\" | \"Nevada\" | \"NewHampshire\" | \"NewJersey\" | \"NewMexico\" | \"NewYork\" | \"NorthCarolina\" | \"NorthDakota\" | \"Ohio\" | \"Oklahoma\" | \"Oregon\" | \"Pennsylvania\" | \"RhodeIsland\" | \"SouthCarolina\" | \"SouthDakota\" | \"Tennessee\" | \"Texas\" | \"Utah\" | \"Vermont\" | \"Virginia\" | \"Washington\" | \"WestVirginia\" | \"Wisconsin\" | \"Wyoming\";\r\nexport const CommonWealthStateListing:CommonWealthState[] = [\"Alabama\" , \"Alaska\" , \"Arizona\" , \"Arkansas\" , \"California\" , \"Colorado\" , \"Connecticut\" , \"Delaware\" , \"Florida\" , \"Georgia\" , \"Hawaii\" , \"Idaho\" , \"Illinois\" , \"Indiana\" , \"Iowa\" , \"Kansas\" , \"Kentucky\" , \"Louisiana\" , \"Maine\" , \"Maryland\" , \"Massachusetts\" , \"Michigan\" , \"Minnesota\" , \"Mississippi\" , \"Missouri\" , \"Montana\" , \"Nebraska\" , \"Nevada\" , \"NewHampshire\" , \"NewJersey\" , \"NewMexico\" , \"NewYork\" , \"NorthCarolina\" , \"NorthDakota\" , \"Ohio\" , \"Oklahoma\" , \"Oregon\" , \"Pennsylvania\" , \"RhodeIsland\" , \"SouthCarolina\" , \"SouthDakota\" , \"Tennessee\" , \"Texas\" , \"Utah\" , \"Vermont\" , \"Virginia\" , \"Washington\" , \"WestVirginia\" , \"Wisconsin\" , \"Wyoming\"];\r\n","export const TimeZoneMapping: {[key: string]: string} = {\r\n \"CST\": \"America/Chicago\",\r\n \"AKST\": \"America/Anchorage\",\r\n \"MST\": \"America/Denver\",\r\n \"HST\": \"Pacific/Honolulu\",\r\n \"EDT\": \"America/New_York\",\r\n \"PST\": \"America/Los_Angeles\"\r\n}\r\n\r\nexport interface DateStrings {\r\n formattedDate: string\r\n gmtFullDate: string\r\n gmtShortDate: string\r\n}\r\n\r\nexport default function CalculateDateStrings(date: Date, timezoneCode: string | undefined): DateStrings {\r\n const result: DateStrings = {\r\n formattedDate: \"\",\r\n gmtFullDate: \"\",\r\n gmtShortDate: \"\"\r\n }\r\n const timezone = timezoneCode ? TimeZoneMapping[timezoneCode] : undefined\r\n\r\n const timezoneDateString = date.toLocaleString(\"en-US\", { timeZone: timezone })\r\n const timezoneDate = new Date(timezoneDateString)\r\n\r\n const diff = Math.round((timezoneDate.getTime() - date.getTime()) / (1000 * 60 * 60)) // in hours\r\n const localOffset = Math.round(new Date(date).getTimezoneOffset() / 60) // local offset in hours\r\n const offset = diff - localOffset //time zone offset in hours\r\n\r\n const sign = Math.sign(offset) === -1 ? \"-\" : \"+\";\r\n\r\n const dt = new Date(timezoneDate.getTime() - localOffset * 60 * 60 * 1000)\r\n result.formattedDate = `${dt.toISOString().replace(\"Z\", \"\")}${sign}${Math.abs(offset).toString().padStart(2, \"0\")}:00`\r\n\r\n const userDate = timezoneDate.toLocaleString(\"en-US\", { month: \"long\", day: \"numeric\", year: 'numeric', hour: \"numeric\", minute: \"numeric\" })\r\n result.gmtFullDate = `${userDate} GMT${sign}${Math.abs(offset)}`\r\n\r\n const shortDate = timezoneDate.toLocaleString(\"en-US\" , { month: \"2-digit\", day: \"2-digit\", year: '2-digit', hour: \"numeric\", minute: \"2-digit\" }).replace(\",\", \"\")\r\n result.gmtShortDate = `${shortDate} GMT${sign}${Math.abs(offset)}`\r\n\r\n return result\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Form } from \"react-bootstrap\"\r\nimport DatePicker from \"react-datepicker\"\r\nimport CalculateDateStrings from \"./OrderRequests/CalculateDateStrings\"\r\n\r\ninterface ExpirationDateProps {\r\n expirationDate: Date | undefined\r\n disabled?: boolean\r\n timezone: string | undefined\r\n onChange(date: Date | [Date, Date] | null): void\r\n}\r\n\r\ninterface ExpirationDateState {\r\n expirationDate: Date | undefined\r\n}\r\n\r\nexport default class ExpirationDate extends Component {\r\n state: ExpirationDateState = { expirationDate: undefined }\r\n datePickerRef = React.createRef()\r\n\r\n componentDidUpdate(prevProps: Readonly) {\r\n if (this.props.expirationDate !== prevProps.expirationDate) {\r\n this.setState({ expirationDate: this.props.expirationDate })\r\n }\r\n }\r\n\r\n addHoursToCurrentDate = (hours: number) => {\r\n const newDate = new Date()\r\n newDate.setHours(newDate.getHours() + hours)\r\n return newDate\r\n }\r\n\r\n onChangeDate = (date: Date | [Date, Date] | null) => {\r\n this.setState({ expirationDate: date as Date || undefined })\r\n this.props.onChange(date)\r\n }\r\n\r\n render() {\r\n const { expirationDate } = this.state\r\n const displayExpirationDate = expirationDate ? CalculateDateStrings(expirationDate, this.props.timezone).gmtShortDate : \"\"\r\n\r\n return <>\r\n { if (this.datePickerRef && this.datePickerRef.current && e.key === 'Tab') { this.datePickerRef.current.setOpen(false) } }}\r\n onChange={this.onChangeDate} />\r\n \r\n }\r\n}\r\n","import React, { ChangeEvent, Component } from 'react'\r\nimport { Form, Col } from 'react-bootstrap'\r\nimport { ScheduleModel } from './OrderModels'\r\nimport CollectionSite from \"../../api/Location/LocationModel/CollectionSite\"\r\nimport { stateAbbreviationsToCommonWealthState, StateToTimeZone } from \"../../api/Location/LocationModel/CommonWealthStateTextMapping\"\r\nimport Checkbox from '../Checkbox'\r\nimport { OrderDefault } from '../../api/Administration/OrderDefaults'\r\nimport CalculateDateStrings from './CalculateDateStrings'\r\nimport ExpirationDate from '../ExpirationDate'\r\n\r\nexport interface ScheduleProps {\r\n allowDonorSelect: boolean,\r\n schedule: ScheduleModel,\r\n clinic?: CollectionSite,\r\n defaultExpiration?: OrderDefault\r\n onScheduleChange: (schedule: ScheduleModel) => void\r\n}\r\nexport const DefaultExtendExpirationHours: number = 24\r\nconst DefaultExtendExpirationMS: number = DefaultExtendExpirationHours * 60 * 60 * 1000\r\nconst ExpirationDateChangeMarker = -999999999\r\nexport default class Schedule extends Component {\r\n // TODO: Change to get date from clinic's coordinates\r\n //\r\n // Current implementation of Timezone and Estimated Expiration Date calculation is a sample\r\n // implementation and relies on browser local datetime because we cannot obtain local time of\r\n // selected clinic due to blocker described in GitHub issue #5 (https://github.com/chcinc1/web-crl-workforce/issues/5)\r\n //\r\n state: ScheduleModel = { ...this.props.schedule }\r\n\r\n handleOverrideAllowedChange = (e: ChangeEvent) => {\r\n this.updateState({ \r\n overrideAllowed: e.target.checked,\r\n extendExpirationHours: e.target.checked ? e.target.value : 0,\r\n }, true)\r\n }\r\n\r\n handleHoursToExpireChange = (value: string) => {\r\n var r = value.replace(/\\D/g, \"\") // Only digits\r\n r = r.length > 3 ? r.slice(0, 3) : r // Maxlength 3 digits\r\n this.updateState({\r\n hoursUntilExpires: !!r ? +r : undefined\r\n })\r\n }\r\n\r\n handleChange = (name: string, value: string) => {\r\n this.updateState({ [name]: value })\r\n }\r\n\r\n updateState = (changes: object, sendSchedule: boolean = false) => {\r\n this.setState((prevState) => { return { ...prevState, ...changes } }, () => { if (sendSchedule) { this.sendSchedule() } })\r\n }\r\n\r\n sendSchedule = () => {\r\n this.props.onScheduleChange(this.state)\r\n }\r\n\r\n calculateExpirationDate = (prevExpirationDate: Date | undefined, expirationHours: number = 0) => {\r\n const estimatedExpiration = prevExpirationDate || new Date()\r\n let expirationMS: number = 0\r\n if (expirationHours !== ExpirationDateChangeMarker) {\r\n expirationMS = expirationHours * 60 * 60 * 1000\r\n }\r\n if (this.state.overrideAllowed) {\r\n expirationMS = expirationMS + DefaultExtendExpirationMS\r\n }\r\n else {\r\n if (expirationHours === 0) {\r\n expirationMS = expirationMS - DefaultExtendExpirationMS\r\n }\r\n }\r\n const expirationDate = expirationMS !== 0\r\n ? new Date(estimatedExpiration.getTime() + expirationMS)\r\n : prevExpirationDate\r\n\r\n let formattedExpirationDate = \"\"\r\n let displayExpirationDate = \"\"\r\n\r\n if (expirationDate) {\r\n const dateStrings = CalculateDateStrings(expirationDate, this.state.timezone || \"\")\r\n formattedExpirationDate = dateStrings.formattedDate\r\n displayExpirationDate = dateStrings.gmtFullDate\r\n }\r\n\r\n this.updateState({ expirationDate: expirationDate, formattedExpirationDate, displayExpirationDate }, true)\r\n }\r\n\r\n initializeTimezone = () => {\r\n this.updateTimeZone(this.props.clinic)\r\n }\r\n\r\n componentDidMount() {\r\n this.initializeTimezone()\r\n }\r\n\r\n componentDidUpdate(prevProps: ScheduleProps) {\r\n if (prevProps.clinic !== this.props.clinic) {\r\n this.updateTimeZone(this.props.clinic)\r\n }\r\n const defaultExpirationHours = +(this.props.defaultExpiration?.DefaultValue || 0)\r\n if (prevProps.schedule.timezone !== this.props.schedule.timezone) {\r\n this.calculateExpirationDate(new Date(), defaultExpirationHours)\r\n }\r\n\r\n let prevOrderDefaultId = prevProps.defaultExpiration?.OrderDefaultID || 0\r\n let propsOrderDefaultId = this.props.defaultExpiration?.OrderDefaultID || 0\r\n if ((prevOrderDefaultId !== propsOrderDefaultId) || (prevProps.allowDonorSelect !== this.props.allowDonorSelect)) {\r\n this.handleHoursToExpireChange(this.props.defaultExpiration?.DefaultValue || \"\")\r\n this.calculateExpirationDate(new Date(), defaultExpirationHours)\r\n }\r\n\r\n if (prevProps.schedule.overrideAllowed !== this.props.schedule.overrideAllowed) {\r\n this.calculateExpirationDate(this.props.schedule.expirationDate, 0)\r\n }\r\n }\r\n\r\n updateTimeZone = (clinic?: CollectionSite) => {\r\n let timezone = undefined\r\n if (clinic?.State) {\r\n const state = stateAbbreviationsToCommonWealthState[clinic?.State]\r\n timezone = clinic.TimeZone || StateToTimeZone[state]\r\n }\r\n this.updateState({ timezone: timezone }, true)\r\n }\r\n\r\n proceedImmediatelyChange = (e: ChangeEvent) => {\r\n const enabled = !!e.target.checked\r\n this.updateState({ proceedImmediately: enabled }, true)\r\n }\r\n\r\n render() {\r\n const { expirationDate, overrideAllowed, comment, timezone, proceedImmediately } = this.state\r\n return (\r\n <>\r\n \r\n \r\n )\r\n }\r\n}\r\n","import { Observable } from \"rxjs\";\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport Address from \"./LocationModel/Address\";\r\n\r\nexport default function LocationQueryGetObservable(query: string): Observable {\r\n const requestBody: string = JSON.stringify({ AutoCompleteString: query })\r\n return ObservableFromFetch(\"Order/SmartyStreetsAutoComplete\", requestBody)\r\n}\r\n","import { Component, createRef } from \"react\"\r\nimport { InputGroup, Button, Spinner } from \"react-bootstrap\"\r\nimport { BehaviorSubject, Subscription, of, concat } from \"rxjs\"\r\nimport { catchError, debounceTime, filter, map, switchMap } from \"rxjs/operators\"\r\nimport { AsyncTypeahead } from \"react-bootstrap-typeahead\"\r\nimport { FaSearch } from \"react-icons/fa\"\r\nimport LocationQueryGet from \"../../api/Location/LocationQueryGet\"\r\nimport Address from \"../../api/Location/LocationModel/Address\"\r\n\r\nexport interface AddressSearchProps {\r\n onSearch: (query: string | undefined) => void\r\n isSearching: boolean\r\n disabledSearch: boolean\r\n defaultAddress?: string,\r\n disableSuggestions?: boolean\r\n isSSO: boolean\r\n}\r\n\r\ninterface AddressSearchState {\r\n options: Address[],\r\n selectedOption?: Address,\r\n isOptionsLoading: boolean\r\n defaultAddressInitialized: boolean\r\n}\r\n\r\nexport default class AddressSearch extends Component {\r\n state: AddressSearchState = {\r\n options: [],\r\n isOptionsLoading: false,\r\n defaultAddressInitialized: (this.props.defaultAddress || \"\") === \"\"\r\n }\r\n searchQuery: string = \"\"\r\n typeahead = createRef>()\r\n addressesQuery$?: BehaviorSubject\r\n addressesSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.addressesQuery$ = new BehaviorSubject(this.props.defaultAddress || \"\")\r\n this.addressesSubscription = this.addressesQuery$.pipe(\r\n debounceTime(500),\r\n filter(query => (query ?? \"\").trim().length > 0),\r\n switchMap((query) => concat(\r\n of({ isOptionsLoading: true }),\r\n LocationQueryGet(query).pipe(\r\n map((options) => ({ isOptionsLoading: false, options: options })),\r\n catchError(() => of({ isOptionsLoading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (state: { isOptionsLoading: boolean, options?: Address[] }) => {\r\n state.options ?\r\n this.setState({ isOptionsLoading: state.isOptionsLoading, options: state.options }) :\r\n this.setState({ isOptionsLoading: state.isOptionsLoading })\r\n if (!this.state.defaultAddressInitialized && !state.isOptionsLoading) {\r\n this.setState({ defaultAddressInitialized: true })\r\n if (state?.options?.length) {\r\n this.setState({ selectedOption: state?.options[0] })\r\n this.performSearch();\r\n }\r\n else {\r\n if (this.props.isSSO) {\r\n this.setState({ selectedOption: {Text: this.props.defaultAddress} })\r\n this.performSearch();\r\n }\r\n }\r\n }\r\n },\r\n () => this.setState({ isOptionsLoading: false })\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.addressesSubscription && this.addressesSubscription.unsubscribe()\r\n }\r\n\r\n performSearch = (selected?: Address) => {\r\n let address = selected || this.selectedPrediction() || this.state.selectedOption\r\n let query = address ? address.Text : this.searchQuery\r\n\r\n this.typeahead.current?.blur()\r\n this.props.onSearch(query)\r\n }\r\n\r\n selectedPrediction = (): Address | null => {\r\n // We have to know whether some prediction is under focus because Typeahead component shows prediction under focus inside input box.\r\n // It looks like to the user as he just typed this text and it forces user to think that\r\n // if he clicks on Search button then it will search by that text.\r\n const { activeItem } = this.typeahead.current?.state as { activeItem: Address | null }\r\n return activeItem\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n option.Text || \"\"}\r\n emptyLabel=\"No Result Found\"\r\n minLength={3}\r\n placeholder=\"City and State or Zip or FF Site ID\"\r\n promptText=\"City and State or Zip or FF Site ID\"\r\n isLoading={this.state.isOptionsLoading}\r\n onSearch={(query) => !this.props.disableSuggestions && this.addressesQuery$ && this.addressesQuery$.next(query)}\r\n open={!!this.props.disableSuggestions ? false : undefined}\r\n options={this.state.options}\r\n filterBy={() => true}\r\n ref={this.typeahead}\r\n onInputChange={input => this.searchQuery = input}\r\n onKeyDown={(e: Event) => {\r\n if (e.type === \"keydown\" && (e as KeyboardEvent).key === \"Enter\") {\r\n // Start search on Enter only if no any selections in prompted items\r\n // If any prompt item is selected then search will be initiated via onChange event\r\n !this.selectedPrediction() && this.performSearch()\r\n }\r\n }}\r\n onChange={selected => {\r\n this.setState({ selectedOption: selected[0] })\r\n // Start search only if an option has been selected\r\n selected[0] && this.performSearch(selected[0])\r\n }}\r\n selected={this.state.selectedOption ? [this.state.selectedOption] : []} />\r\n \r\n {\r\n const selectedPrediction = this.selectedPrediction()\r\n if (selectedPrediction) {\r\n // Set prediction in focus as selected.\r\n this.setState({ selectedOption: selectedPrediction })\r\n this.performSearch(selectedPrediction)\r\n } else {\r\n this.performSearch()\r\n }\r\n }}>\r\n {this.props.isSearching && }\r\n {!this.props.isSearching && }\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n static defaultProps = {\r\n disableSuggestions: true\r\n }\r\n}\r\n","import { ChangeEvent, Component } from \"react\"\r\nimport { Col, Form, Button, Image } from \"react-bootstrap\"\r\nimport ClinicSearchOptions from \"../../api/Clinics/Models/ClinicSearchOptions\"\r\nimport CollectionSite from \"../../api/Location/LocationModel/CollectionSite\"\r\nimport clearFiltersIcon from \"../../assets/images/clear-filters.png\"\r\nimport ClinicSearchPrice from \"../../api/Clinics/Models/ClinicSearchPrice\"\r\n\r\ntype FilterFunction = (site: CollectionSite) => boolean\r\n\r\nexport interface FilterProps {\r\n sites: CollectionSite[]\r\n radius: number\r\n clinicSearchOptions?: ClinicSearchOptions\r\n priceTiers?: ClinicSearchPrice[]\r\n filter?: FilterFunction\r\n onRadiusChanged: (radius: number) => void\r\n onFilterChanged: (filter?: FilterFunction) => void\r\n}\r\n\r\nconst DEFAULT_MIN_RADIUS = 15\r\nconst DEFAULT_MAX_RADIUS = 50\r\n\r\nexport default class Filter extends Component {\r\n\r\n handleRadiusChange = (e: ChangeEvent) => this.props.onRadiusChanged(parseInt(e.target.value) as number)\r\n\r\n getFilters() {\r\n if (this.props.sites.length === 0 ) return []\r\n const result = [\r\n { name: \"Primary\", filter: (site: CollectionSite) => site.GroupName === \"Primary\" || site.GroupName === \"Favorite\" },\r\n ]\r\n const sites = this.props.sites.map(item => {\r\n const newSite = {...item}\r\n newSite.PriceTier = item.IsMarketPlace ? item.PriceTier : \"\"\r\n return newSite\r\n })\r\n\r\n if (this.props.priceTiers) {\r\n this.props.priceTiers.forEach(pt => {\r\n const existsTier = sites.some(item => item.PriceTier === pt.Name)\r\n if (existsTier) {\r\n result.push({\r\n name: pt.DisplayName || pt.Name,\r\n filter: (site: CollectionSite) => site.PriceTier?.toLowerCase() === pt.Name.toLowerCase()\r\n })\r\n }\r\n })\r\n }\r\n\r\n result.push({ name: \"Non MarketPlace\", filter: (site: CollectionSite) => site.GroupName === \"NonMarketplace\" })\r\n\r\n return result\r\n }\r\n \r\n render() {\r\n const minRadius = this.props.clinicSearchOptions?.SearchRadius1 || DEFAULT_MIN_RADIUS\r\n const maxRadius = this.props.clinicSearchOptions?.SearchRadius2 || DEFAULT_MAX_RADIUS\r\n\r\n const filters = this.getFilters()\r\n return (\r\n
\r\n \r\n \r\n Radius\r\n ) => this.props.onRadiusChanged(parseInt(e.target.value) as number)} />\r\n ) => this.props.onRadiusChanged(parseInt(e.target.value) as number)} />\r\n \r\n \r\n {filters.length > 0 && \r\n Filter\r\n \r\n \r\n \r\n }\r\n {filters.map(filter => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {this.props.sites.filter(site => filter.filter(site)).length.toString()}\r\n \r\n )\r\n })}\r\n
\r\n )\r\n }\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Col, Button, Image, Container, Row } from \"react-bootstrap\"\r\nimport CollectionSite from \"../../api/Location/LocationModel/CollectionSite\"\r\nimport clinicIcons_FFEnabled from \"../../assets/images/clinic-icons_formfox-enabled.png\"\r\nimport clinicIcons_NotFFEnabled from \"../../assets/images/clinic-icons_not-formfox-enabled.png\"\r\nimport clinicIcons_Marketplace from \"../../assets/images/clinic-icons_marketplace.png\"\r\nimport priceTier_Silver from \"../../assets/images/seal-icons_silver.png\"\r\nimport priceTier_Gold from \"../../assets/images/seal-icons_gold.png\"\r\nimport priceTier_Platinum from \"../../assets/images/seal-icons_platinum.png\"\r\nimport priceTier_GoldPlus from \"../../assets/images/seal-icons_goldplus.png\"\r\nimport clinicRating_3Stars from \"../../assets/images/price-icons_3-star.png\"\r\nimport clinicRating_4Stars from \"../../assets/images/price-icons_4-star.png\"\r\nimport clinicRating_5Stars from \"../../assets/images/price-icons_5-star.png\"\r\nimport { FaChevronUp, FaChevronDown } from \"react-icons/fa\"\r\nimport FormatPhone from \"../../formatters/FormatPhone\"\r\nimport SiteService from \"../../api/Location/LocationModel/SiteService\"\r\nimport { SiteServices } from \"./SiteServices\"\r\n\r\ninterface ImagesMap { [key: string]: string }\r\nconst PRICE_TIER_IMAGES: ImagesMap = {\r\n 'silver': priceTier_Silver,\r\n 'gold': priceTier_Gold,\r\n 'platinum': priceTier_Platinum,\r\n 'gold plus': priceTier_GoldPlus,\r\n}\r\n\r\nexport interface SiteCardProps {\r\n site: CollectionSite\r\n onSiteSelected?: (site: CollectionSite) => void\r\n}\r\n\r\nexport default class SiteCard extends Component {\r\n state = { open: false }\r\n \r\n getServiceItem(service: SiteService, isMP: boolean) {\r\n if (!service) {\r\n return <>\r\n }\r\n\r\n if (!isMP) {\r\n return <>\r\n
{service.Name}
\r\n \r\n }\r\n\r\n let imageSrc = PRICE_TIER_IMAGES[service.PriceTier?.toLowerCase() || ''];\r\n if (imageSrc) {\r\n return <>\r\n {service.Name}\r\n \r\n } else {\r\n let displayName = service.PriceTierDisplayName || service.PriceTier;\r\n return <>\r\n {displayName !== \"\" && {displayName}}\r\n
{service.Name}
\r\n \r\n }\r\n }\r\n\r\n render() {\r\n const { site } = this.props\r\n return (\r\n \r\n \r\n \r\n {(site.FFEnabled && !site.IsMarketPlace) && }\r\n {(!site.FFEnabled && !site.IsMarketPlace) && }\r\n {(site.IsMarketPlace) && }\r\n \r\n \r\n \r\n
\r\n {site.Name}\r\n {site.IsMarketPlace && (Marketplace Enabled)}\r\n
\r\n {site.Distance &&
({site.Distance.toFixed(2)} Miles)
}\r\n
{site.Address1}{site.Address2 && ` ${site.Address2}`}
\r\n
{site.City && ` ${site.City}`}{site.State && ` ${site.State}`}{site.Zip && ` ${site.Zip}`}
\r\n \r\n
\r\n \r\n \r\n \r\n {this.props.onSiteSelected && }\r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAACHCAMAAAALObo4AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAdFQTFRFAAAAtra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6tra6t7e7vLzAwsLFxcXIyMjLxcXJ1NTW4eHj7e3u9vb3/v7+////w8PG2Nja7Ozt/Pz9wcHE3Nzd9PT1zs7RuLi89vb20dHU9/f3xsbJ8PDx6Ojp39/h19fZ0dHTzc3PysrNubm94ODi/f39x8fLubm89fX2z8/S5+fo9fX1vb3A+vr6wMDE4uLju7u+9/f4/Pz8zc3Q+/v72trc5OTl1dXX8vLyy8vO39/gu7u/0NDTTJYffAAAAGB0Uk5TAAeufhVVJvhh/WUBvbB1Xgn1hxPrTJkDnpuoBj8C6LcK1xw3xA+AVPeMhtAn+dFg8HwM1dzGaOdsInDeXHHSTcB7xY+ToBAZp6VpLvG4fUK7/M2SV8yQlLxdIzj2ZJi2Rp1ONQAAAAFiS0dEbMwBMDsAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAiVSURBVHjazVxpQxM7FB0EFcTKJsgiiwtFEZ+CgggiKCCyg7s+nwakQBeLFWURQVFwwb0FWvi1r+0kM8lMJpMpU8n5drOeSW5ubraRpB0jZU/KzguxAakgdTeqTdtLyvv2g/37yKC9aX+BR3rGAVzMPAgAOJiJBx3ISP8LPBwAHMLELBBDFhZyCABH8mlk50SrzVW+P+9wnMfhPKV9cqNiTnbSeeTH6y04AsVC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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAACHCAMAAAALObo4AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAhxQTFRFAAAA08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF08CF1MGG18aP2sqY3M2d3tCj1MGH3c6e5dq37OXN9O/h+vfw/v7+////28yb596+9O/f/f372sqX6eHE+PXt4tWu1MKI+ffw08GG5Niz+vjx3c6f9vLn//7+8evY6+TJ5t285Niy4dSq39Gl1cOL7OXL/v388+7g3s+i1cKJ+fbv/v794tav5t29+vjy1cOK8OrW+fbu18aQ/Pr22cmW7eXO1sSN2smW8erX/fz64tWt/Pv41sWP49ez6N/E9O/j5tu82cmY+Pbu8evb4NKr+ffx6+PM9vPq5tq37ufT3M6h596/SODn5gAAAGh0Uk5TAAeufhVVJvhh/WUBvWSwdV4J9YcT64b2TJkDnpibqAY/Aui3Cte2HDfED4A4VPeM0Cf5YPB8DNXcxmjnbCRw3lxx0sDFkJSgEBmlaS4a8bh9Qrzf/M2SV8y5Q5wUXU0j0XZWIo+Tp7sSI0ThAAAAAWJLR0R1qGqY+wAAAAlwSFlzAAAASAAAAEgARslrPgAACKpJREFUeNrNXPdDFDkUXgQVBNcGiCBVFAXBQhEQRWwoeFhOgWvq3VlCWfq6CCiCUlSUYsF+KrKLx6LA/YO3O5PMZGaSmczuIPl+S/Ley7fJm5e+NlvQCFkR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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAACHCAMAAAALObo4AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgpQTFRFAAAApqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6pqq6p6u7rrHAtLjFuLvIvL/LubzJys3W2tzj6eru9PX3/v7+////trnG0NLa6Ont/Pz9s7fE1Nbd8fL0xMbRqKy89PT2yMrU9fX37e7x8vL14+Tp2NrhztDZx8nTwsTPvsHNqq692dvi/f39u77Lqa288/P2/f3+xMfSztHZ9fb3z9Haqa294uPo8vP1x8rUqKy7rrLA+Pn6s7bE8/T2293jrK++9vb44uTp/Pz8w8bQ+vr70NLb5OXp0tTcur3JzM/X3t/l7/Dy2Nrgy83WwMPOxsnTrbC/qgkMigAAAGZ0Uk5TAAeufhVVJvhh/WQBvWWwdV4J9oYT64f1TJgDnpmbqAY/Aui2Cte3HDjED4A3VPeM0Cf50WDwfAzV3MZo52wkInDeXHHSwE17xZCPlJOgEBmnpWku8bh9Qry7/M2SV8ycFF0jrHZWh/xJkgAAAAFiS0dEcjYODVgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAgpSURBVHjazVz5Q9NIFC6CAgtWlEMEoYAoCgLiQlGQXZDDE5FbOdzV3Z0CpdAilwhYbgUFQQFvZcVlV/R/3DaZJJNkJpm0qc3325uZ9+bLHG/umEx+I2RPiP9GdEAoCA1GtmF7xfK+cBC+Txy0N+wH8IiI/AkVo6IBANFRaND+yIgfwMMMwAFEjAFexCAhBwAwB57GwUOebGP574+LZ3jEx/Hlk+ARDx8MOI9EJt8jSVBMBiySoZx0lBETA84jhc031cJIaYBDGiNbUlkpJdA00jNgvscyPVLIcZ7Hca8TyTwBpYx03XNOTMlCpJN8xqeyTaYcICDHZMo+xUunEZ2sFD2qKRfk5fOt0BQrZHwmrOAswuNsQdjPghTLa8Tl54FcHXgUeqwWWYuhdA7J+XwJQFFyHhHOwfTF1iKPVKgDj1LG7oUypmH+Amjxqze5pewCI5TqwKMcGq646Gl7ldQ8Kj1t+mIFFMp14GHlTVclmqqpeVSbaqp44ZIOPNA+cTmSmkfkZUTI0YHHFeqsybiqA49rOvC4rgOPWh141PqU8406VEpVysDW1d1jt9t7urtsSsluogbrblDyqAMV9Q2N3AhhJjDodfT1O10DHFzO/j5HL4ENNx9Jb2yorwB1lDxMTLdvam5p9XrRWxi79weHhgdwGB4avI9Jf9tjp7i1pbnJK1RQV0w9p9/W3tF5R2p0ZPTBgBIejI5IVe50drS3cUI9NY8GhQYx1j+gjv4xhebSQM2jkWTioWOcgoUX446HJCON1DzSm/BlMTFJycKLyQl8mTRpmCI14wz0PpLk5HJPTc/Mzs3b5+dmZ6an3C5J/KNenJlmehqmFrn6wmNRHk+GBheXJEmWFgeHnohSPV6QG2rRwKNVXhhPEfPPppYxGbB0l6eeISmfyoukVQOP4jaJ8gpS5s9Xu4ASulafI3W3IoltK9bAw9Qu0l17IRh+ub4B1LCx/lJQeLEmimvXQsPUgapuCg30lcOmysILm+OV0Fw30ZgOTTw6Ec3Xb3iTb99RsfDi3Vte681rJLxTLevE3MLScmvOlWu1qeZbiDN//Z73CHZqFl7YeW/zHiFy55Y5tfbalRxreWlhLm5d8xvemkDjA31hwCL5gCOCArf8zMrDpdzkKsU1qJGFF4NcN3uziYvOy8JVTD4m5RrXRD9+8oEGAJ8+co11DRObj20gvxfJU3Iddktb0xBg3+K6rzyuKA7LA1mpcFjhaPSq50hAL0dkRRZlJfSY4gypDVi9H30tDaZEYNW4pN+SQfSsZeKEC3BMcfnWNjh8gl/zVDImlRFdiKVClJAbYX3pKSj+5kZfUWiFhezLLopqhfMbftIAYApaEtXMXQWfmi4sjYENdtlJre5LjnfQsz5CBqcqxWlZjZBwAn6EP22Ugx3amhCCakyK4FfpD+E3vNWBBgBw0JvkJ88lSiTuVVbzGwsOOND7XytMzcBpgIMLiKyuvIdvGidj0b0v27hE0U/AzxpHpy/nYk9KGsnBxBSJDxuDsy+6aY86bHCGNiYOzkhJ5LfAwyLMh2R6cNW2rhMNANZZg/2yiEPmCPaYZC9ms2kETok3iHaly8v+z9tflHhswMnziDwqEp7o7JdHjbJKq2S7uGWu8x8FIqtsmlF5DH+ec0AW5WZ0niksEPDLbSe5TLrYdY1bFoGc5iRIou6zVqcUPo+w7N8iE4HeXbo/Eov0l6ij4rhBVmVZO4+BrRGSxjJ21DwiOlJLEu+CDTEaT0iLRyUemB4BscCufYdEgalJYg9iOYFE2oYxGngezm0GO/8KRIg1w37dMOqSjskG/0zh7IQb8RXnHf2Srx/5j+OxQ1IZlI3+pzLljj1bOD2BTnhRCw8Atrk+Q1JZZOO/8gFnsnEjTBh/ftLHpHctAQXIeQBuRkxSWWIniH2cfB5/3FxQIs7DDZSA4fEZ8tgl6bjFKiUFGBYhOcIhl1PVe2B5bKvxmJLU29lQ2Q2FNOHkEdjY8pvWncc0W99IhzmeJmIRl4wm72LNzeheLzNsvGi0SBYWdVEx8aLk3WzyWa08nJAH0aPOsvHdosD4GOhR90VLkvewyec08vjGORCizhwb3yMJjvZe2wgJDZcmh7PreW08vnDdlujYwTybQLYCCA+1mPbIk9sJyRV47H7b4f36NlGHbPgPf8tDjq3vPpWHn+1DDnJxKLYPP/uLDDsKOsr9xS//oYWGmv/wx5+K4fymqKPqT30fX1ASO7tAGRTji6/jLZyPbe/ufgeqoBlvdZh/qIFu/uH3fEwVVPMxf+enFKCZn/o6X9fCg2K+7vP6RQMPivWL7+s5DTwo1nMJEhX69a0GHoT1bYJA40+ZDvV6n56H+nrfn/0Peh7k/Y/9LI2/fNoP0gr1/aCwCPNh0uf+gP2xw9z+mMkg+4Us0k8HYf/0NH6T3Qj7yRCG2F83zHmDUc5fDHIeZZTzOYOcVxrl/NYqsxGU82yjnO8b5L6DUe5/GOU+DLwfdPV67U3z7QDeD7ptvll7/WrOJdL9IBGCeF9KBKPcHzPIfTqj3C80yn3LFkwGwbh/apD7uEa5n2yU+9pGub+udp/frUjCrdt9foO8b6B87/FV9t7jq77vPYzy/kWM4L0HEsMo76OM8l7M1/dz6ONLPd7PWXlrVTXBfE/ox/vKu3q+r2Tfm2ZofW/K7PZYytilqh7vTY3y/lbDe+QzgqT/e2Sl99mhCI/QAL/PFkPlvfoxKAXgvboEBnm/r/o/gyOMGPj/GRjl/w5G+d+FYf7/YZT/ocgQpP/DyKDL/3L+BzafMU6NTiDqAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE5LTA3LTIzVDE4OjEzOjE4KzAwOjAwcSiqUAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxOS0wNy0yM1QxODoxMzoxOCswMDowMAB1EuwAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJ0AAAAmCAMAAADp9WlSAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAM9QTFRFU1da////AAAAU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1da////h25I+QAAAEN0Uk5TAAAAJOSQ3y9+zh0ebLsQ+1qqIW1w8uDzS/Ej0AiaXfUr1gykaPhHY7IL91GhA+3qQMIaj4kEiO5NLsqUBqxXT/bNJrse7+MAAAABYktHRAH/Ai3eAAAACXBIWXMAAABIAAAASABGyWs+AAACpElEQVRYw82Yx1bjQBBFWwMYwxBNzjlnGIYc9f//hCV1UoXXvfCCWlmte+65C6vkY2PIDA0PD9GzIhrKFWRSPpW3IJSZkbIcyalzXKqO+lTegriuU5adnDrHpeqoT+UtCGWjZX9G03WeS9Qxn8Y7ENZ1K6ibrvNcoo75NN6BsG6sgsbSdZ5L1DGfxjsQycbLev6m6gKH67hP4T2I6iYaaCJVFzhcx30K70FUN9lAk6m6wOE67lN4DwLZ1HQDTU/huoiDdYJP5gMI6mZKOzO4LuJgneCT+QCCulkHzeK6iIN1gk/mA9i+2ZubD7PgoIXocK5XgYPmskCzWCZnsZINmssCzVIaWqpkg+ayQLO8kmJWlivZoLks0JjVNcysrTbf5DTXfJEzuSxh/3lZ30DMxrp7zlKcewbzuCxh/TxvbmnI1ma8BRAXb4gcLkvYrJvtHZnZ2W7vKJ1r7y/ga2+7hNDuyN09idnbpRtU4+h21X1kGWOh3+H7BxQ52Jf2u8RJ7wrNx94VSBjeOocUOpTfZJyT32SKj7/JgDDUHVHoSK7jnFyn+HgdEIa6Ywody3Wck+sUH68DQi87OaXQ6YlUJ3FSneZjdUjo685KNmdSncRJdZqP1SGhrzvn0LlUJ3FSneZjdUjoZBeX7tbVlft0ecHrZI7XqT5aB4Wu7trdubm9vXGfr3mdzPE61UfroNDV3dnzf/fG3P+3F3e8TuZ4neqjdVDo6jr16cNjc/X4UF92eJ3M8TrVR+ug0Mqe6sPnnovtPdcHT7RO42id7iNxWGgP6/9YXl7Dbn59qU66tE7jaJ3uI3VYaM/e+j/i301r3vs//N9oHeeKmqN1uo/UMbCIhfbs4/Pr25D5/vr8oHWcK4qKo3W6j9QxsIiF5s9vnt9d9wOB70xVD9p7YAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOS0wNy0yNFQxODoyODowOCswMDowMCF5z00AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTktMDctMjRUMTg6Mjg6MDgrMDA6MDBQJHfxAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMYAAAAmCAMAAACoARTtAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAMxQTFRFU1da////U1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1daU1da////QJPOqAAAAEJ0Uk5TAAAk5JDfL37OHR5suxD7WqohbXDy4PNL8SPQCJpd9SvWDKRo+Edjsgv3UaED7epAwhqPiQSI7k0uypQGrFdP9s0mSyI+DgAAAAFiS0dEAf8CLd4AAAAJcEhZcwAAAEgAAABIAEbJaz4AAAMISURBVFjD3ZjXVuMwFEUlIIQZahh6770PQ6/+/4+auMi2zm168BP3KXH22tJeC1sJzsGMjI6O4DXfGuQ8jOUT+Qr0xqCQX9WNZdlYSkbgrAz0iXwFmhkgFDJ6WdZLyQiclYE+ka9AMwOE/Krj2XDG7YyaMzKIT+IDaGWgkM/o51Tfzqg5I4P4JD6AVgYK+YyJnJqwM2rOyCA+iQ+glYFCdtVfWTG/rYyG0zOoT+Br0KggQjZjsqQmrYyG0zOoT+Br0MggQjZjqqSmrIyG0zOoT+Br0MggQm7V6ZmSmpnWM1qcmsH4eL4B9Qoq5DJms2pm9YwWp2YwPp5vQD2DCrmMuUDN6RktTs1gfDzfgHoGFVaWwfyfZhYCtdC6OD/Iwa65boVuMTNnMbd1zXUrdEs2tZTbuua6FbrlFQtaWc5tXXPdCp1bXdOhtdXyNrK58mZL5JKFSdzwXl/f0KCN9fA0sLjw5EnjkoVJXPHQ2tySmK3N9kNS49oP0BQuWZjElQ/f7R0e2tmOn/UyF58Dii8+BxKESVx1iOzucdDeLh5ZEofHmeyD88wW6hye4vsHyBzscycvx9FTWfbh/pwl1BZmvowcInXIfxmhnOcyJB/JsIT18ELMOELqiM+gHJ8h+GiGIayHF2LGMVLHfAbl+AzBRzMMYT28EFY9OUXq9ITL4DguQ/KRDEuoLUwzzjIyZ1wGx3EZko9kWEJtYZpxTqlzLoPjuAzJRzIsobYwybi4DJ9dXYVXlxc0g+dohujD3ZlClcOM6/DRze3tTXh9TTN4jmaIPtyeKVQ5zLirPvh779z9v+rNHc3gOZoh+nB7plDlMKNXXH54LN89PhRvezSD52iG6MPtmUKVg4yn4urzIFQNnosLT5ghcZgh+2B3tjDmPAqjjOIfvC+vzWH4+pJf6WOGxGGG7IPt2cKIa/58gjDKeBv+oH130bwPfwS/YQblfMFhhuyD7RHQo7DFte+CIIwyPj6/vh3M99fnB2ZQzvucwwzZB9sjoEdhw/k4oxRWq/ofMT8k4z/mGdJ03nXm0QAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOS0wNy0yNFQxODoyODoxNiswMDowML3stI4AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTktMDctMjRUMTg6Mjg6MTYrMDA6MDDMsQwyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==\"","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport ServiceType from \"./Model/ServiceType\"\r\nimport Service from \"./Model/Service\"\r\nimport AccountService from \"./Model/AccountService\"\r\n\r\nexport default function ServicesGet() {\r\n return ObservableFromFetch(\"WorkforceService/GetServices\")\r\n}\r\n\r\nexport function ServiceTypesGet() {\r\n return ObservableFromFetch(\"WorkforceService/GetServiceTypes\")\r\n}\r\n\r\nexport function AccountServicesGet(implementationID: number, accountID?: number) {\r\n var body: {ImplementationID: string, AccountID?: string} = { ImplementationID: implementationID.toString(), AccountID: \"0\" } \r\n if (accountID) body.AccountID = accountID.toString()\r\n const requestBody = JSON.stringify(body);\r\n return ObservableFromFetch(\"WorkforceService/GetAccountServices\", requestBody )\r\n}\r\n\r\n\r\nexport interface SaveService {\r\n ServiceID: number\r\n ActiveWorkForce: boolean\r\n ActivateAll: boolean\r\n}\r\n\r\nexport interface SaveAccountService {\r\n AccountServiceID?: number\r\n Active: boolean\r\n ServiceID: number\r\n}\r\n\r\nexport interface SaveServices {\r\n Services: SaveService[]\r\n AccountServices: SaveAccountService[]\r\n AccountID?: number\r\n ImplementationID?: number\r\n}\r\n\r\nexport function AccountServicesSave(data: SaveServices) {\r\n const requestBody: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"WorkforceService/UpdateServices\", requestBody )\r\n}","import React, { Component } from \"react\"\r\nimport { Row, Col, Container } from \"react-bootstrap\"\r\nimport { connect } from \"react-redux\"\r\nimport { toast } from \"react-toastify\"\r\nimport { forkJoin, Subscription } from \"rxjs\"\r\nimport AccountService from \"../../api/Administration/Model/AccountService\"\r\nimport Service, { ServiceCode } from \"../../api/Administration/Model/Service\"\r\nimport ServiceType, { ServiceTypeCode } from \"../../api/Administration/Model/ServiceType\"\r\nimport ServicesGet, { AccountServicesGet, ServiceTypesGet } from \"../../api/Administration/OrderableServices\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { AppState, AssignedClinic, WorkforceClinicPortal } from \"../../AppState\"\r\nimport { GetSelectedAssignedClinic, GetSelectedPortal } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport Checkbox from \"../Checkbox\"\r\n\r\ninterface SiteServicesAuthProps {\r\n Company?: AssignedClinic,\r\n Portal?: WorkforceClinicPortal\r\n}\r\n\r\ninterface ServiceGroup {\r\n name: string\r\n code: string\r\n services: { name: string, value: string, enabled: boolean }[]\r\n}\r\n\r\nexport interface SiteServicesProps {\r\n hidden: boolean,\r\n services: string[],\r\n onChange: (services: string[]) => void\r\n}\r\n\r\ninterface SiteServicesState {\r\n loadingServices: boolean\r\n types: ServiceType[]\r\n services: Service[]\r\n accountServices: AccountService[],\r\n serviceGroups: ServiceGroup[]\r\n}\r\n\r\nexport class SiteServices extends Component {\r\n emptyState: SiteServicesState = {\r\n loadingServices: false,\r\n types: [],\r\n services: [],\r\n accountServices: [],\r\n serviceGroups: []\r\n }\r\n state:SiteServicesState = { ...this.emptyState }\r\n\r\n loadSubscription?: Subscription\r\n loadAccountServicesSubscription?: Subscription\r\n\r\n componentWillMount() {\r\n this.loadInitialData()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.loadAccountServicesSubscription && this.loadAccountServicesSubscription.unsubscribe()\r\n }\r\n\r\n loadInitialData() {\r\n if (this.props.hidden) return\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.setState({ loadingServices: true })\r\n\r\n this.loadSubscription = forkJoin({\r\n types: ServiceTypesGet(),\r\n services: ServicesGet()\r\n }).subscribe(\r\n ({ types, services }) => {\r\n this.setState({ types: types, services: services })\r\n this.loadAccountServices(this.props.Portal?.ImplementationID || 0, this.props.Company?.AccountID)\r\n },\r\n (error) => this.handleAPIError(error, { loadingServices: false })\r\n )\r\n }\r\n\r\n loadAccountServices = (implementationID: number, accountID?: number) => {\r\n this.loadAccountServicesSubscription && this.loadAccountServicesSubscription.unsubscribe()\r\n let accountServices: AccountService[] = []\r\n this.loadAccountServicesSubscription = AccountServicesGet(implementationID, accountID).subscribe(\r\n data => {\r\n if (data?.length) {\r\n accountServices = data\r\n }\r\n else {\r\n if (accountID) {\r\n this.loadAccountServices(implementationID)\r\n }\r\n else {\r\n accountServices = this.state.services.map(service => {return {AccountServiceID: 0, ImplementationID: implementationID, ServiceID: service.ServiceID, Active: false, IsDefault: false}})\r\n }\r\n }\r\n if (accountServices.length) {\r\n this.setState({accountServices: accountServices, loadingServices: false})\r\n this.populateServiceData()\r\n }\r\n },\r\n (error) => this.handleAPIError(error, { loadingServices: false })\r\n )\r\n }\r\n\r\n populateServiceData = () => {\r\n let serviceGroups = this.state.types.map((type) => ({name: type.ServiceTypeName, code: type.ServiceTypeCode, services: this.populateServices(type.ServiceTypeID)}))\r\n this.addNonDOTOralService(serviceGroups)\r\n this.setState({ serviceGroups: serviceGroups })\r\n }\r\n\r\n addNonDOTOralService = (groups: ServiceGroup[]) => {\r\n let drugGroup = groups.find(g => g.code === ServiceTypeCode.Drug)\r\n if (!!drugGroup) {\r\n const nonDotEnabled = drugGroup.services.find(s => s.value === ServiceCode.Drug)?.enabled\r\n drugGroup.services.push({name: \"NON-REGULATED SALIVA TESTING\", value: ServiceCode.NonDOTOral, enabled: !!nonDotEnabled})\r\n }\r\n }\r\n\r\n populateServices = (typeID: number) => {\r\n return this.state.services.filter(service => service.ServiceTypeID === typeID).map((service) => (\r\n {name: service.ServiceDescription || service.ServiceName || \"\", value: service.FFServiceCode, enabled: this.checkEnabled(service.ServiceID)}\r\n ))\r\n }\r\n\r\n checkEnabled = (serviceID: number): boolean => {\r\n const relatedService = this.state.accountServices.find(accService => accService.ServiceID === serviceID)\r\n const companyMode = !!this.props.Company?.AccountID\r\n const enabledForPortal = relatedService ? !companyMode && relatedService?.Active : false\r\n const enabledForCompany = relatedService ? (!!relatedService.AccountID && relatedService?.Active) || (companyMode && !relatedService.AccountID && relatedService.IsDefault) : false\r\n return enabledForPortal || enabledForCompany\r\n }\r\n\r\n onChange = (e: React.ChangeEvent) => {\r\n const name = e.target.name\r\n const services = this.props.services.filter(service => service !== name)\r\n if (e.target.checked) {\r\n services.push(name)\r\n }\r\n this.props.onChange(services)\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n render() {\r\n if (this.props.hidden) {\r\n return <>\r\n }\r\n\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): SiteServicesAuthProps {\r\n return {\r\n Company: GetSelectedAssignedClinic(state) || undefined,\r\n Portal: GetSelectedPortal(state)\r\n }\r\n}\r\nconst ConnectedSiteServices = connect(mapStateToProps, null)(SiteServices)\r\nexport default ConnectedSiteServices\r\n","import React from \"react\"\r\nimport { GMapApiKey, DefaultMapLatitude, DefaultMapLongitude } from \"../../config/Constants\"\r\nimport GoogleMapReact from \"google-map-react\"\r\nimport CollectionSite from \"../../api/Location/LocationModel/CollectionSite\"\r\n\r\n\r\nconst handleApiLoaded = (map: any, maps: any, sites: CollectionSite[]) => {\r\n const markers: any[] = []\r\n const infoWindows: any[] = []\r\n\r\n sites.forEach((site) => {\r\n markers.push(new maps.Marker({\r\n position: {\r\n lat: site.Latitude,\r\n lng: site.Longitude,\r\n },\r\n map,\r\n }))\r\n\r\n infoWindows.push(new maps.InfoWindow({ content: getInfoWindowString(site) }))\r\n })\r\n if (markers.length) {\r\n var bounds = new google.maps.LatLngBounds()\r\n markers.forEach((marker, i) => {\r\n marker.addListener(\"click\", () => {\r\n infoWindows.forEach((infoWindow) => infoWindow.close(map))\r\n infoWindows[i].open(map, marker)\r\n })\r\n bounds.extend(marker.position)\r\n })\r\n map.fitBounds(bounds);\r\n }\r\n}\r\n\r\nconst getInfoWindowString = (site: CollectionSite) => `\r\n \r\n \r\n \r\n \r\n \r\n \r\n

${site.Name}

Phone:${site.Phone}
Fax:${site.Fax}
Hours:${site.HoursOfOperation}
Distance:${site.Distance && site.Distance.toFixed(2)} Miles
\r\n
Services:
    ${site.VendorService ? site.VendorService.map(service => { `
  • ${service}
  • ` }) : \"\"}
\r\n `\r\n\r\ninterface MapContainerProps {\r\n sites: CollectionSite[]\r\n center: {\r\n lat: number,\r\n lng: number\r\n },\r\n zoom: number\r\n}\r\n\r\nexport default class MapContainer extends React.Component {\r\n state = { mapReactKey: Math.random().toString() }\r\n\r\n componentDidUpdate(prevProps: MapContainerProps) {\r\n if (this.props.sites !== prevProps.sites) {\r\n this.setState({ mapReactKey: Math.random().toString() })\r\n }\r\n }\r\n\r\n render() {\r\n const { sites } = this.props\r\n const style = {\r\n width: \"100%\",\r\n height: \"600px\"\r\n }\r\n return (\r\n
\r\n handleApiLoaded(map, maps, sites)}>\r\n \r\n
\r\n )\r\n }\r\n\r\n static defaultProps = {\r\n center: {\r\n lat: DefaultMapLatitude,\r\n lng: DefaultMapLongitude\r\n },\r\n zoom: 1\r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport Clinic from \"./Models/Clinic\"\r\nimport ClinicSearchPrice from \"./Models/ClinicSearchPrice\"\r\nimport ClinicSearchOptions from \"./Models/ClinicSearchOptions\"\r\nimport ClinicSearchListType from \"./Models/ClinicSearchListType\"\r\nimport ClinicSearchAdditionalOption from \"./Models/ClinicSearchAdditionalOption\"\r\nimport { AdditionalOption } from \"../../components/Administration/ClinicSearchOptions/AdditionalOptions\"\r\n\r\nexport function ClinicGetObservable(clinicSearchListTypeID: number): Observable {\r\n const requestBody: string = new URLSearchParams({\r\n clinicSearchListTypeID: clinicSearchListTypeID.toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"WorkforceClinics/GetClinicLists?\" + requestBody)\r\n}\r\n\r\nexport function ClinicSearchPriceSetObservable(list: ClinicSearchPrice[]): Observable {\r\n var counter = 0;\r\n const ClinicSearchPriceTiers = list.map((el) => {\r\n el.SortOrder = ++counter\r\n return el\r\n })\r\n const requestBody: string = JSON.stringify({\r\n ClinicSearchPriceTiers\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceClinics/SetClinicSearchPrice\", requestBody)\r\n}\r\n\r\nexport function ClinicSearchPriceGetObservable(): Observable {\r\n return ObservableFromFetch(\"WorkforceClinics/GetClinicSearchPrice\")\r\n}\r\n\r\nexport function ClinicSearchOptionsSetObservable(radius1: number, radius2: number, mpSitesOnly: boolean = false): Observable {\r\n const requestBody: string = JSON.stringify({\r\n radius1: radius1,\r\n radius2: radius2,\r\n mpSitesOnly: mpSitesOnly\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceClinics/SetClinicSearchRadius\", requestBody)\r\n}\r\n\r\nexport function ClinicSearchOptionsGetObservable(): Observable {\r\n const requestBody: string = JSON.stringify({})\r\n\r\n return ObservableFromFetch(\"WorkforceClinics/GetClinicSearchRadius\", requestBody)\r\n}\r\n\r\nexport function ClinicSearchListTypesGetObservable(): Observable {\r\n return ObservableFromFetch(\"WorkforceClinics/GetClinicSearchListType\")\r\n}\r\n\r\nexport function ClinicSearchListRemoveObservable(clinicSearchListTypeID: number, clinicSearchListIDs: number[]): Observable {\r\n const requestBody: string = JSON.stringify({\r\n clinicSearchListTypeID: clinicSearchListTypeID,\r\n clinicSearchListID: clinicSearchListIDs,\r\n isRemove: true\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceClinics/SetClinicLists\", requestBody)\r\n}\r\n\r\nexport function ClinicSearchListAddObservable(clinicSearchListTypeID: number, code: string, name: string): Observable {\r\n const requestBody: string = JSON.stringify({\r\n clinicSearchListTypeID: clinicSearchListTypeID,\r\n code: code,\r\n name: name\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceClinics/SetClinicLists\", requestBody)\r\n}\r\n\r\nexport function ClinicSearchPriceForSiteSearchGetObservable(): Observable {\r\n return ObservableFromFetch(\"WorkforceClinics/GetClinicSearchPriceForSiteSearch\")\r\n}\r\n\r\nexport function ClinicSearchAdditionalOptionsGetObservable(): Observable {\r\n return ObservableFromFetch(\"WorkforceClinics/GetClinicSearchOptions\")\r\n}\r\n\r\nexport function ClinicSearchAdditionalOptionsSetObservable(options: AdditionalOption[]): Observable {\r\n const requestBody: string = JSON.stringify(\r\n options\r\n )\r\n return ObservableFromFetch(\"WorkforceClinics/SetClinicSearchOptions\", requestBody)\r\n}\r\n\r\ninterface OwnedSitesData {\r\n UsePrimarySitesOnly: boolean\r\n Clinics: Clinic[]\r\n}\r\n\r\nexport function RetrieveOwnedSitesObservable() {\r\n const requestBody: string = JSON.stringify({})\r\n\r\n return ObservableFromFetch(\"WorkforceClinics/RetrieveOwnedSites\", requestBody)\r\n}\r\n\r\nexport function UpdateOwnedSitesObservable(data: OwnedSitesData) {\r\n const requestBody: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"WorkforceClinics/UpdateOwnedSites\", requestBody)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ServiceTypeCode } from \"../Administration/Model/ServiceType\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport OrderData from \"./OrderRequestsModel/OrderData\"\r\n\r\nexport interface SSOOrderRequestData {\r\n OrderRequest?: OrderRequest\r\n Donor?: DonorDetail\r\n}\r\ninterface OrderRequest {\r\n UserName?: string\r\n Password?: string\r\n CustomerId?: number\r\n ExternalUserName?: string\r\n WFUserName?: string\r\n ClientID?: number\r\n CompanyAccount?: number\r\n ReferenceTestId?: string\r\n PostBackURL?: string\r\n}\r\nexport interface DonorDetail {\r\n DonorFirstName?: string\r\n DonorLastName?: string\r\n DonorID?: string\r\n DonorIDType?: string\r\n DonorDOB?: string\r\n DonorPhone?: string\r\n DonorEmail?: string\r\n Donoremail?: string\r\n Address?: DonorAddress\r\n}\r\ninterface DonorAddress {\r\n Line1?: string\r\n Line2?: string\r\n City?: string\r\n State?: string\r\n Zip?: string\r\n}\r\nconst emptyOrderRequest = {\r\n UserName: \"\",\r\n Password: \"\",\r\n CustomerId: 0,\r\n ExternalUserName: \"\",\r\n WFUserName: \"\",\r\n ClientID: 0,\r\n CompanyAccount: 0,\r\n ReferenceTestId: \"\",\r\n PostBackURL: \"\"\r\n}\r\nconst emptyDonorAddress = {\r\n Line1: \"\",\r\n Line2: \"\",\r\n City: \"\",\r\n State: \"\",\r\n Zip: \"\"\r\n}\r\nconst emptyDonorDetail = {\r\n DonorFirstName: \"\",\r\n DonorLastName: \"\",\r\n DonorID: \"\",\r\n DonorIDType: \"\",\r\n DonorDOB: \"\",\r\n DonorPhone: \"\",\r\n Donoremail: \"\",\r\n Address: emptyDonorAddress\r\n}\r\n\r\nexport const EmptySSOOrderRequestData = {\r\n OrderRequest: emptyOrderRequest,\r\n Donor: emptyDonorDetail\r\n}\r\n\r\nexport interface EmbededTestEventWithDetail {\r\n TestEventID: number\r\n PersonID: number\r\n ImplementationID: number\r\n OrderUserLoginID: number\r\n FirstName: string\r\n LastName: string\r\n SSN: string\r\n EmployerID: string\r\n AllowDonorClinicSelect: boolean\r\n TestDetailID: number\r\n DOT: boolean\r\n FLEX: boolean\r\n Observed: boolean\r\n LabCode: string\r\n FormFoxTestAN: number\r\n FormFoxVendorAN: number\r\n FFVendorCode: string\r\n TestTypeID: number\r\n TestTypeDescription: ServiceTypeCode\r\n SampleTypeID: number\r\n SampleTypeDescription: string\r\n SampleTypeCode: string\r\n SampleTypeIsPoct: boolean\r\n SampleTypeIsAlcohol: boolean\r\n FFCode: string\r\n IsClinical: boolean\r\n}\r\n\r\nexport interface FFSiteSearchData {\r\n DefaultAddress: string\r\n Radius: number\r\n CallbackLink: string\r\n ReferenceTestID: number\r\n PriceTierOverride?: string[]\r\n}\r\n\r\nexport interface PendingOrderRequest {\r\n OrderRequestID: number\r\n ExternalUserID: number\r\n FormFoxTestAN: number\r\n RequestToken: string\r\n ExpiredAt: Date\r\n CreatedAt: Date\r\n RequestText: string\r\n SendLink: boolean\r\n SendCallback: boolean\r\n IsFFOrder: boolean\r\n}\r\n\r\nexport interface ServicePriceTierParameter {\r\n ServiceCode: string\r\n ServicePriceTier: string\r\n}\r\n\r\nexport interface SetTestDetailVendorParameters {\r\n formFoxTestAN: number\r\n collectionVendorID: number\r\n formFoxVendorAN: number\r\n FFVendorCode: string\r\n collectorVendorName: string\r\n servicePriceTiers: ServicePriceTierParameter[]\r\n ssoToken?: string\r\n expirationDate?: string\r\n timeZone: string\r\n sendLink: boolean\r\n sendCallback: boolean\r\n isFFOrder: boolean\r\n ReferenceTestID: number\r\n ProceedImmediately:boolean\r\n ExtendExpirationHours: number\r\n}\r\n\r\nexport function GetEmbededTestEventWithDetail(formFoxTestAN: number) {\r\n const requestBody: string = JSON.stringify({\r\n FormFoxTestAN: formFoxTestAN\r\n })\r\n return ObservableFromFetch(\"Workforceorder/GetEmbededTestEventWithDetail\", requestBody)\r\n}\r\n\r\nexport function GetFFTestData(token: string) {\r\n const requestBody: string = new URLSearchParams({\r\n requestToken: token\r\n }).toString()\r\n return ObservableFromFetch(\"Workforceorder/GetFFTestData?\" + requestBody)\r\n}\r\n\r\nexport function SetTestDetailVendor(parameters: SetTestDetailVendorParameters) {\r\n const requestBody: string = JSON.stringify(parameters)\r\n return ObservableFromFetch(\"Workforceorder/SetTestDetailVendor\", requestBody)\r\n}\r\n\r\nexport function SetFFTestDetailVendor(parameters: SetTestDetailVendorParameters) {\r\n const requestBody: string = JSON.stringify(parameters)\r\n return ObservableFromFetch(\"Workforceorder/SetTestDetailVendor\", requestBody)\r\n}\r\n\r\nexport function GetOrderRequest(token: string) {\r\n const requestBody: string = new URLSearchParams({\r\n requestToken: token\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"WorkforceApiRequest/GetApiRequest?\" + requestBody)\r\n}\r\n\r\nexport function GetOrderRequestData(token: string) {\r\n const requestBody: string = new URLSearchParams({\r\n requestToken: token\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"WorkforceApiRequest/GetApiRequestData?\" + requestBody)\r\n}\r\n","import { ChangeEvent, Component } from \"react\"\r\nimport { Row, Col, Container, Button, Form } from \"react-bootstrap\"\r\nimport { BehaviorSubject, Subscription, of, concat, combineLatest } from \"rxjs\"\r\nimport { catchError, filter, map, switchMap } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport LocationsListGet, { LocationsListGetParams } from \"../../api/Location/LocationsListGet\"\r\nimport CollectionSite from \"../../api/Location/LocationModel/CollectionSite\"\r\nimport AddressSearch from \"./AddressSearch\"\r\nimport Filter from \"./Filter\"\r\nimport SiteCard from \"./SiteCard\"\r\nimport SiteServices from \"./SiteServices\"\r\nimport { ServiceDataModel } from \"../OrderRequests/OrderModels\"\r\nimport { EventType } from \"../../config/Constants\"\r\nimport MapContainer from \"./MapContainer\"\r\nimport { FaChevronLeft, FaChevronRight, FaChevronUp, FaChevronDown } from \"react-icons/fa\"\r\nimport { ClinicSearchOptionsGetObservable, ClinicSearchPriceForSiteSearchGetObservable } from \"../../api/Clinics/ClinicOptionsGet\"\r\nimport ClinicSearchOptions from \"../../api/Clinics/Models/ClinicSearchOptions\"\r\nimport { ServiceCode } from \"../../api/Administration/Model/Service\"\r\nimport { IsServiceTypeCodeAlcohol, IsServiceTypeCodeDrug, IsServiceTypeCodePhysical } from \"../../api/Administration/Model/ServiceType\"\r\nimport { SSOOrderRequestData, EmptySSOOrderRequestData, EmbededTestEventWithDetail, GetEmbededTestEventWithDetail, FFSiteSearchData, GetFFTestData } from \"../../api/OrderRequests/SSOOrderRequest\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport ClinicSearchPrice from \"../../api/Clinics/Models/ClinicSearchPrice\"\r\nimport { GetSSOToken } from \"../../storage/AuthToken\"\r\nimport { SampleType } from \"../../api/OrderRequests/OrderRequestsModel/SampleType\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport _lodash from \"lodash\"\r\n\r\nexport type FilterFunction = (site: CollectionSite) => boolean\r\n\r\ninterface SiteSearchProps {\r\n tests?: ServiceDataModel[]\r\n defaultAddress?: string\r\n isSSO?: boolean\r\n onSiteSelect?: (site: CollectionSite, callbackParams: {сallbackLink?: string, referenceTestID: number} ) => void\r\n formFoxTestAN?: number\r\n isFFOrder?: boolean\r\n forceShowFilter: boolean\r\n accountID?: number\r\n}\r\n\r\ninterface Geolocation {\r\n available?: boolean\r\n enabled?: boolean\r\n latitude?: any\r\n longitude?: any\r\n error?: string\r\n}\r\n\r\ninterface SiteSearchState {\r\n isFilterShown: boolean\r\n isMapShown: boolean\r\n siteServices: string[]\r\n sites: CollectionSite[]\r\n filteredSites: CollectionSite[]\r\n filter?: FilterFunction\r\n isLocationsSearching: boolean\r\n dataLoaded: boolean\r\n radius: number\r\n clinicSearchOptions?: ClinicSearchOptions\r\n ssoOrderRequest: SSOOrderRequestData\r\n searchCompleted: boolean\r\n tests?: EmbededTestEventWithDetail[]\r\n FFSiteSearchData?: FFSiteSearchData\r\n defaultAddress?: string\r\n сallbackLink?: string\r\n referenceTestID?: number\r\n priceTiers?: ClinicSearchPrice[]\r\n priceTiersOverride?: string[]\r\n customRadius: number\r\n geolocation?: Geolocation\r\n}\r\n\r\nconst INITIAL_RADIUS = 15\r\n\r\nexport default class SiteSearch extends Component {\r\n state: SiteSearchState = {\r\n isFilterShown: true,\r\n isMapShown: true,\r\n siteServices: [],\r\n sites: [],\r\n filteredSites: [],\r\n radius: INITIAL_RADIUS,\r\n isLocationsSearching: false,\r\n ssoOrderRequest: EmptySSOOrderRequestData,\r\n searchCompleted: false,\r\n dataLoaded: false,\r\n customRadius: 0,\r\n geolocation: { available: !!navigator.geolocation }\r\n }\r\n locationsQuery$ = new BehaviorSubject(undefined)\r\n radius$ = new BehaviorSubject(INITIAL_RADIUS)\r\n locationsSubscription?: Subscription\r\n radiusOptionsSubscription?: Subscription\r\n testEventSubscription?: Subscription\r\n ssoOrderSubscription?: Subscription\r\n priceTierSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.locationsSubscription = combineLatest([\r\n this.locationsQuery$.pipe(\r\n filter(query => query !== undefined),\r\n map((query) => query!.replace(/\\s+/g, \" \").trim()),\r\n filter(query => !!query)\r\n ),\r\n this.radius$\r\n ]).pipe(\r\n filter(_ => this.isSearchAllowed()),\r\n switchMap(([query, radius]) => concat(\r\n of({ isLoading: true }),\r\n LocationsListGet(this.buildSearchCriteria(query, radius)).pipe(\r\n map((data) => ({ isLoading: false, result: data })),\r\n catchError(() => of({ isLoading: false }))\r\n )))\r\n ).subscribe(\r\n (o: { isLoading: boolean, result?: CollectionSite[] }) => {\r\n this.setState({ isLocationsSearching: o.isLoading, searchCompleted: !o.isLoading })\r\n !!o.result && this.handleSearchCompleted(o.result)\r\n },\r\n (error) => {\r\n this.setState({ isLocationsSearching: false })\r\n error && error.message && toast.error(error.message)\r\n }\r\n )\r\n this.radiusOptionsSubscription = ClinicSearchOptionsGetObservable().subscribe(\r\n (response: ClinicSearchOptions) => {\r\n this.setState({ clinicSearchOptions: response, radius: response.SearchRadius1 || INITIAL_RADIUS })\r\n if (this.props.formFoxTestAN || !!this.props.isFFOrder) {\r\n if (this.props.isFFOrder) {\r\n var token = GetSSOToken()\r\n this.testEventSubscription = GetFFTestData(token).subscribe(\r\n (data: FFSiteSearchData) => this.setState({\r\n referenceTestID: data.ReferenceTestID,\r\n сallbackLink: data.CallbackLink,\r\n defaultAddress: data.DefaultAddress,\r\n radius: data.Radius,\r\n priceTiersOverride: data.PriceTierOverride,\r\n clinicSearchOptions: {SearchRadius1: data.Radius, SearchRadius2: data.Radius},\r\n dataLoaded: true\r\n }),\r\n error => this.handleAPIError(error)\r\n )\r\n }\r\n else {\r\n this.testEventSubscription = GetEmbededTestEventWithDetail(this.props.formFoxTestAN || 0).subscribe(\r\n (data: EmbededTestEventWithDetail[]) => this.setState({tests: data, dataLoaded: true}),\r\n error => this.handleAPIError(error)\r\n )\r\n }\r\n }\r\n },\r\n (error: string) => toast.error(error)\r\n )\r\n\r\n this.priceTierSubscription = ClinicSearchPriceForSiteSearchGetObservable().subscribe(\r\n (response: ClinicSearchPrice[]) => this.setState({ priceTiers: response }),\r\n (error: string) => toast.error(error)\r\n )\r\n\r\n if (this.props.formFoxTestAN) {\r\n this.testEventSubscription = GetEmbededTestEventWithDetail(this.props.formFoxTestAN).subscribe(\r\n (data: EmbededTestEventWithDetail[]) => this.setState({tests: data}),\r\n error => this.handleAPIError(error)\r\n )\r\n }\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n this.locationsSubscription && this.locationsSubscription.unsubscribe()\r\n this.radiusOptionsSubscription && this.radiusOptionsSubscription.unsubscribe()\r\n this.testEventSubscription && this.testEventSubscription.unsubscribe()\r\n this.ssoOrderSubscription && this.ssoOrderSubscription.unsubscribe()\r\n this.priceTierSubscription && this.priceTierSubscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: SiteSearchProps, prevState: SiteSearchState) {\r\n if (this.state.radius !== prevState.radius) {\r\n this.radius$.next(this.state.radius)\r\n }\r\n }\r\n\r\n handleAPIError = (error: Error | APIError) => {\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n buildSearchCriteria = (query: string, radius: number): LocationsListGetParams => {\r\n if (this.props.tests) {\r\n const { tests } = this.props\r\n\r\n const serviceCodes = tests.map(test => {\r\n if (test.selectedTestType && [(SampleType.SD, SampleType.SLD)].includes(test.selectedTestType)) {\r\n if (test.serviceCode === ServiceCode.Drug) {\r\n return ServiceCode.NonDOTOral\r\n } else if (test.serviceCode === ServiceCode.DrugDOT) {\r\n return ServiceCode.DOTOral\r\n }\r\n }\r\n return test.serviceCode\r\n })\r\n\r\n return {\r\n Address: query, //anything in the address line from UI goes in this parameter\r\n Radius: radius, //miles selected for search\r\n LabCode: tests.find(item => IsServiceTypeCodeDrug(item.serviceTypeCode))?.labAccountObj?.LabCode, //lab code from the lab account selected\r\n IsObserved: !!tests.find(item => IsServiceTypeCodeDrug(item.serviceTypeCode) && item.observedCollection),\r\n Codes: serviceCodes,\r\n IsSSO: !!this.props.isSSO || !!this.props.formFoxTestAN,\r\n ReferenceTestID: 0,\r\n IsFFOrder: false,\r\n AccountID: this.props.accountID,\r\n PriceTierOverride: []\r\n }\r\n }\r\n else if (!!this.props.isFFOrder) {\r\n const { referenceTestID } = this.state\r\n return {\r\n Address: query,\r\n Radius: radius,\r\n LabCode: \"CRL\",//other labs not supported at this time, hard coding will have to be removed if other labs added in future\r\n IsObserved: false,\r\n Codes: [],\r\n ReferenceTestID: referenceTestID || 0,\r\n IsSSO: !!this.props.isSSO,\r\n IsFFOrder: true,\r\n AccountID: this.props.accountID,\r\n PriceTierOverride: this.state.priceTiersOverride || [],\r\n Latitude: this.state.geolocation?.enabled ? this.state.geolocation?.latitude ?? \"0.0\" : null,\r\n Longitude: this.state.geolocation?.enabled ? this.state.geolocation?.longitude ?? \"0.0\" : null\r\n }\r\n }\r\n else if (this.state.tests) {\r\n const { tests } = this.state\r\n return {\r\n Address: query,\r\n Radius: radius,\r\n LabCode: tests.find(item => IsServiceTypeCodeDrug(item.TestTypeDescription))?.LabCode,\r\n IsObserved: !!tests.find(item => IsServiceTypeCodeDrug(item.TestTypeDescription) && item.Observed),\r\n Codes: this.embeddedTestsCodes(tests),\r\n ReferenceTestID: 0,\r\n IsSSO: !!this.props.isSSO,\r\n IsFFOrder: false,\r\n AccountID: this.props.accountID,\r\n PriceTierOverride: []\r\n }\r\n }\r\n else {\r\n return {\r\n Address: query,\r\n Radius: radius,\r\n IsObserved: false,\r\n LabCode: \"\",\r\n Codes: this.state.siteServices,\r\n IsSSO: false,\r\n ReferenceTestID: 0,\r\n IsFFOrder: false,\r\n AccountID: this.props.accountID,\r\n PriceTierOverride: []\r\n }\r\n }\r\n }\r\n\r\n embeddedTestsCodes = (tests: EmbededTestEventWithDetail[]) => {\r\n let codes: string[] = []\r\n\r\n tests.forEach((test) => {\r\n if (test.IsClinical) {\r\n codes.push(test.FFCode)\r\n }\r\n else {\r\n if (IsServiceTypeCodeDrug(test.TestTypeDescription)) {\r\n if (test.DOT) {\r\n if (test.SampleTypeCode === SampleType.SD) {\r\n codes.push(ServiceCode.DOTOral)\r\n } else {\r\n codes.push(ServiceCode.DrugDOT)\r\n }\r\n }\r\n else if (test.FLEX) {\r\n codes.push(ServiceCode.FLEX)\r\n }\r\n else if (test.SampleTypeIsPoct) {\r\n codes.push(ServiceCode.POCT)\r\n } else {\r\n if (test.SampleTypeCode === SampleType.SD) {\r\n codes.push(ServiceCode.NonDOTOral)\r\n } else {\r\n codes.push(ServiceCode.Drug)\r\n }\r\n }\r\n }\r\n if (IsServiceTypeCodeAlcohol(test.TestTypeDescription) && test.SampleTypeCode === EventType.Breath) {\r\n if (test.DOT) {\r\n codes.push(ServiceCode.AlcoholBreathDOT)\r\n }\r\n else {\r\n codes.push(ServiceCode.AlcoholBreath)\r\n }\r\n }\r\n if (IsServiceTypeCodeAlcohol(test.TestTypeDescription) && test.SampleTypeCode === EventType.Saliva) {\r\n if (test.DOT) {\r\n codes.push(ServiceCode.AlcoholSalivaDOT)\r\n }\r\n else {\r\n codes.push(ServiceCode.AlcoholSaliva)\r\n }\r\n }\r\n if (IsServiceTypeCodePhysical(test.TestTypeDescription)) {\r\n if (test.DOT) {\r\n codes.push(ServiceCode.PhysicalDOT)\r\n }\r\n else {\r\n codes.push(ServiceCode.Physical)\r\n }\r\n }\r\n }\r\n })\r\n\r\n return codes\r\n }\r\n\r\n isSearchAllowed = () => !!this.props.tests || this.state.siteServices.length > 0 || !!this.state.tests || !!this.props.isFFOrder\r\n\r\n handleSearchCompleted = (sites: CollectionSite[]) => {\r\n this.setState({\r\n sites: sites,\r\n filteredSites: this.state.filter ? sites.filter(site => this.state.filter!(site)) : sites\r\n })\r\n if (sites.length > 0) {\r\n toast.success(\"Sites found successfully.\")\r\n } else {\r\n toast.error(\"We are currently unable to locate any locations in your area.\")\r\n }\r\n }\r\n handleFilterChange = (filter?: FilterFunction) => this.setState({ filter: filter, filteredSites: filter ? this.state.sites.filter(site => filter(site)) : this.state.sites })\r\n handleRadiusChange = (radius: number) => this.setState({ radius: radius })\r\n applyCustomRadius = (radius: number) => this.radius$.next(radius)\r\n ApplyCustomRadiusDebounced = _lodash.debounce(this.applyCustomRadius, 500)\r\n handleCustomRadiusChange = (radius: number) => {\r\n this.setState({ customRadius: radius })\r\n this.ApplyCustomRadiusDebounced(radius)\r\n }\r\n\r\n handleSiteSelection = (site: CollectionSite) => {\r\n this.props.onSiteSelect && this.props.onSiteSelect(site, {сallbackLink: this.state.сallbackLink, referenceTestID: this.state.referenceTestID || 0})\r\n }\r\n\r\n handleGeoLocationChange = (e: ChangeEvent) => {\r\n const enabled = !!e.target.checked\r\n if (navigator.geolocation) {\r\n this.setState({ geolocation: { available: true, enabled: enabled } }, () => enabled && navigator.geolocation.getCurrentPosition(this.setPosition, this.setError))\r\n } else {\r\n this.setState({ geolocation: { available: false, enabled: false, error: \"Geolocation is not supported by this browser.\" } })\r\n }\r\n }\r\n\r\n setPosition = (position: GeolocationPosition) => this.setState({ geolocation: {...this.state.geolocation, latitude: position.coords.latitude, longitude: position.coords.longitude } })\r\n setError = (error: GeolocationPositionError) => {\r\n var message: string\r\n switch (error.code) {\r\n case error.PERMISSION_DENIED:\r\n message = \"This site has been blocked from accessing your location.\"\r\n break;\r\n case error.POSITION_UNAVAILABLE:\r\n message = \"Location information is unavailable.\"\r\n break;\r\n case error.TIMEOUT:\r\n message = \"The request to get your location timed out.\"\r\n break;\r\n default:\r\n message = \"An unknown error occurred.\"\r\n break;\r\n }\r\n message && toast.error(message)\r\n this.setState({ geolocation: { error: message, available: false, enabled: false } })\r\n }\r\n\r\n render() {\r\n const isSSO = this.props.isSSO || !!this.props.formFoxTestAN || !!this.props.isFFOrder\r\n const showFilter = !isSSO || this.props.forceShowFilter\r\n return (\r\n \r\n \r\n {showFilter && this.state.isFilterShown && \r\n
Hierarchy
\r\n \r\n }\r\n \r\n {!this.state.isFilterShown && }\r\n
FIND A SITE
\r\n {!this.state.isMapShown && }\r\n \r\n {this.state.isMapShown && \r\n \r\n }\r\n
\r\n \r\n \r\n \r\n
FIND A SITE
\r\n \r\n
\r\n \r\n {showFilter && this.state.isFilterShown && \r\n \r\n }\r\n \r\n {(((this.props.formFoxTestAN || !!this.props.isFFOrder) && this.state.dataLoaded) || (!this.props.formFoxTestAN && !this.props.isFFOrder)) && this.locationsQuery$?.next(query)}\r\n isSearching={this.state.isLocationsSearching}\r\n disabledSearch={!this.isSearchAllowed()}\r\n defaultAddress={this.props.defaultAddress || this.state.defaultAddress}\r\n isSSO={isSSO}\r\n />}\r\n {isSSO && \r\n \r\n Radius (Miles):\r\n \r\n \r\n this.handleCustomRadiusChange(+e.target.value)} />\r\n \r\n \r\n {/**/}\r\n \r\n }\r\n \r\n
\r\n )\r\n }\r\n\r\n static defaultProps = { forceShowFilter: false }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport CollectionSite from \"./LocationModel/CollectionSite\"\r\n\r\nexport interface LocationsListGetParams {\r\n Radius: number\r\n Address: string\r\n LabCode?: string\r\n IsObserved: boolean\r\n Codes: string[]\r\n IsSSO: boolean\r\n ReferenceTestID: number\r\n IsFFOrder: boolean\r\n AccountID?: number\r\n PriceTierOverride: string[]\r\n Latitude?: string\r\n Longitude?: string\r\n}\r\n\r\nexport default function LocationsListGetObservable(params: LocationsListGetParams): Observable {\r\n const requestBody: string = JSON.stringify(params)\r\n return ObservableFromFetch(\"order/FindCollectionSitesV2\", requestBody)\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAeGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAACAAAAAABAAAIAAAAAAEAAqACAAQAAAABAAAAEKADAAQAAAABAAAAEAAAAADMEAlUAAAACXBIWXMAATr2AAE69gE6sVc6AAACZmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cm/MiYMAAAFqSURBVDgRjZI9LwVREIbv9RkfIfERUZGIVqfzC/S0dP6ChlLiBwhaoVWKittoaEQhERWVBAkRQnw+z+6Zzc29W3iTZ2fOmTlzZme3WsnVgvmFKrQmH1Mqc8z9iugMzjFsQk9s/te2kWg1WYIPOIJe+AZvq5d57fAANXiHiu2rDTDhDSxUhjFzzmAEMtmFmoZHMMHbf0pw3/gyqOysbUaRXXwTPpO1iGtxaNpz6AMV3WeTd8OBvoI3WcRDoh9FF/BVXJqveMbADvHj1kZbI9ZZl1tUiW87TnASTuAaTLYb/w2HupZs/Dcsc5mgtsFBTkE/DMNgYgg7AaOgso4b3+OZwAAcQBf4CspkZ+HePixCViB7sAjZ8nxa+JN0JN8B2qXdnCY8GxcUn2OOzUtYgUatsnEBsylQfELXMYMdfKvewhiYJPo3YGwPVHYmDuZblcoVTjdsgV8iXvEJ/w5eYB3uoUmR3BQo2Shy/wCqp2Bb+7QaowAAAABJRU5ErkJggg==\"","import React, { Component } from \"react\"\r\nimport { Button, Table, Image } from \"react-bootstrap\"\r\nimport { ServiceDataModel } from \"../OrderModels\"\r\nimport { FaTimes } from \"react-icons/fa\"\r\nimport ConfirmationModal from \"../../ConfirmationModal\"\r\nimport dotImage from \"../../../assets/images/dot-img.png\"\r\nimport shoppingCarImage from \"../../../assets/images/shopping-cart.png\"\r\n\r\nexport interface OrderedServicesProps {\r\n services: ServiceDataModel[],\r\n canConfirm: boolean,\r\n canRemove: boolean,\r\n onRemoveService: (id: number) => void,\r\n onConfirm: () => void\r\n}\r\n\r\ninterface OrderedServicesState {\r\n showRemoveConfirmation: boolean\r\n idToRemove?: number\r\n}\r\n\r\nexport default class OrderedServices extends Component {\r\n state: OrderedServicesState = { showRemoveConfirmation: false }\r\n\r\n closeRemoveConfirmation = () => this.setState({ showRemoveConfirmation: false, idToRemove: undefined })\r\n performRemove = () => {\r\n if (!this.props.canRemove) {\r\n return\r\n }\r\n this.closeRemoveConfirmation()\r\n this.props.onRemoveService(this.state.idToRemove || 0)\r\n }\r\n\r\n render() {\r\n const { services, canConfirm, onConfirm } = this.props\r\n if (services.length === 0) {\r\n return <>\r\n }\r\n return (\r\n
\r\n
CART 
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.props.canRemove && }\r\n \r\n \r\n \r\n {services.map((service, index) =>\r\n \r\n \r\n \r\n \r\n \r\n {this.props.canRemove && }\r\n )}\r\n \r\n
SERVICE TYPEACCOUNTTEST TO BE PERFORMEDREMOVE
\r\n {service.serviceTypeCode}\r\n {service.labAccount}{service.testToPerform}\r\n \r\n
\r\n \r\n
Count: {services.length}
\r\n \r\n
\r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport { Table, Button } from 'react-bootstrap'\r\n\r\nexport interface StepData {\r\n title: string\r\n disabled: boolean\r\n current: boolean\r\n onClick: () => void\r\n}\r\n\r\nexport interface OrderRequestsHeaderProps {\r\n steps: StepData[]\r\n title?: string\r\n}\r\n\r\nexport default (props: OrderRequestsHeaderProps) => {\r\n const steps = () => props.steps.map(step => (\r\n \r\n ))\r\n const stepsWithDelimiters = () => steps().reduce((r: JSX.Element[], step: JSX.Element) => r.length ? [...r,
, step] : [step], [])\r\n const trs = stepsWithDelimiters().map((item, index) => {item})\r\n return (\r\n <>\r\n

{ props.title || \"ORDER FORM\" }

\r\n \r\n \r\n \r\n {trs}\r\n \r\n \r\n
\r\n \r\n )\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport OrderData from \"./OrderRequestsModel/OrderData\"\r\nimport SaveOrder from \"./OrderRequestsModel/SaveOrder\"\r\nimport { FinishData } from \"../../components/OrderRequests/OrderFinish\"\r\n\r\nexport default function OrderSubmitObservable(params: SaveOrder): Observable {\r\n const requestBody: string = JSON.stringify(params)\r\n\r\n return ObservableFromFetch(\"/workforceorder/saveorder\", requestBody)\r\n}\r\n\r\nexport function OrderFinishObservable(data: FinishData) {\r\n const requestBody: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"WorkforceOrder/FinishOrder\", requestBody)\r\n}","import { Component } from 'react'\r\nimport { Form, Button, Table, Modal } from 'react-bootstrap'\r\nimport { Donor } from \"../../api/OrderRequests/OrderRequestsModel/Donor\"\r\n\r\ninterface PotentialDonorMatchProps {\r\n potentialDonorMatchList: Donor[]\r\n onClose: () => void\r\n onSubmit: (match: Donor) => void\r\n show?: boolean\r\n}\r\n\r\ninterface PotentialDonorMatchState {\r\n selectedDonorMatch?: Donor\r\n}\r\n\r\nexport default class PotentialDonorMatchModal extends Component {\r\n state = { selectedDonorMatch: undefined }\r\n selectDonorMatch = (donorMatch: Donor) => this.setState({ selectedDonorMatch: donorMatch })\r\n render() {\r\n return (\r\n \r\n \r\n POTENTIAL DONOR MATCH\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n { this.props.potentialDonorMatchList.map(donorMatch => this.selectDonorMatch(donorMatch) } >\r\n \r\n \r\n \r\n \r\n ) }\r\n \r\n
 NameExisting IDMatch
\r\n this.selectDonorMatch(donorMatch) } />\r\n { donorMatch?.FirstName } { donorMatch?.LastName }{ donorMatch?.CCFPersonnelID }{ donorMatch?.Match }
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { Typeahead, AsyncTypeahead } from \"react-bootstrap-typeahead\"\r\nimport { Button, Form } from \"react-bootstrap\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { catchError, debounceTime, filter, map, switchMap } from \"rxjs/operators\"\r\nimport { DataLoader } from \"../OrderRequests/GovCollection\"\r\nimport { RouteComponentProps, withRouter } from \"react-router\"\r\nimport { AutoFilterLocationsGet } from \"../../api/Location/AutoFilterLocationsGet\"\r\nimport { WorkforceClinicPortal } from \"../../AppState\"\r\n\r\ninterface LocationInputState {\r\n locations: DataLoader\r\n}\r\n\r\ninterface LocationInputProps {\r\n defaultValue?: string\r\n companyID: number\r\n id?: string\r\n disabled?: boolean\r\n filter?: boolean\r\n placeholder?: string\r\n emptyLabel?: string\r\n hideInactive?: boolean\r\n onChange?: (items: AutoFilterCompany[]) => void\r\n}\r\n\r\nclass LocationInput extends React.PureComponent {\r\n locationAsyncTypeahead = React.createRef>()\r\n locationTypeahead = React.createRef>()\r\n locations$ = new Subject()\r\n subscription?: Subscription\r\n state: LocationInputState = { locations: {} }\r\n defaultLocationName: string = this.props.defaultValue || this.getLocationName()\r\n\r\n componentDidMount() {\r\n this.subscribeLocations()\r\n this.onInputChange(this.defaultLocationName)\r\n }\r\n\r\n componentDidUpdate(prevProps: LocationInputProps & RouteComponentProps, prevState: LocationInputState) {\r\n if (!this.defaultLocationName && this.props.location.pathname !== prevProps.location.pathname) {\r\n this.locationAsyncTypeahead?.current?.clear()\r\n this.onInputChange(\"\")\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n }\r\n\r\n onInputChange(value: string) {\r\n if (value === \"\") {\r\n this.setState({ locations: { selected: undefined } }, () => this.props.onChange && this.props.onChange([]))\r\n }\r\n else {\r\n this.locations$.next(value)\r\n }\r\n }\r\n\r\n getLocationName() {\r\n const participation = sessionStorage.getItem(\"company-selection\")\r\n const portals: WorkforceClinicPortal[] = JSON.parse(sessionStorage.getItem(\"wf2-STRY0045127-portals\") || \"{}\")\r\n var company = undefined\r\n for (const p of portals) {\r\n for (const c of p.AssignedClientDetailsOfClinic) {\r\n if (c.ParticipationID.toString() == participation) {\r\n company = c\r\n break\r\n }\r\n }\r\n if (company) {\r\n break\r\n }\r\n }\r\n return company?.LocationName || \"\"\r\n }\r\n\r\n onChange = (locations: AutoFilterCompany[]) => {\r\n const selectedLocation = locations[0]\r\n this.setState({ locations: {...this.state.locations, selected: selectedLocation} })\r\n this.props.onChange && this.props.onChange(locations)\r\n }\r\n\r\n subscribeLocations() {\r\n this.subscription = this.locations$.pipe(\r\n debounceTime(500),\r\n filter(filter => filter.length >= 1 || filter.length === 0),\r\n switchMap((filter) => filter.length === 0 ?\r\n of({ loading: false, locations: this.state.locations.data }) :\r\n concat(\r\n of({ loading: true }),\r\n AutoFilterLocationsGet(this.props.companyID, filter, !!this.props.hideInactive).pipe(\r\n map((data) => ({ loading: false, locations: data })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n )\r\n )\r\n ).subscribe(\r\n (state: { loading: boolean, locations?: AutoFilterCompany[] }) => {\r\n state.locations ?\r\n this.setState({ locations: { loading: state.loading, data: state.locations, selected: this.defaultLocationName ? state.locations[0] : undefined} }, () => this.defaultLocationName && this.onChange((state.locations || []))) :\r\n this.setState({ locations: { loading: state.loading } })\r\n },\r\n () => this.setState({ locations: { loading: false } })\r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n { !this.defaultLocationName ? this.props.filter ? props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1 : true}\r\n id={this.props.id || \"location\"}\r\n isLoading={!!this.state.locations.loading}\r\n labelKey=\"Name\"\r\n minLength={0}\r\n onInputChange={input => this.onInputChange(input)}\r\n onChange={items => this.onChange(items)}\r\n onSearch={() => { }}\r\n options={this.state.locations.data || []}\r\n placeholder={this.props.placeholder || \"Enter the Location name\"}\r\n ref={this.locationAsyncTypeahead}\r\n selected={this.state.locations.selected ? [this.state.locations.selected] : []}>\r\n {!this.state.locations.loading && !this.props.disabled &&\r\n }\r\n : }\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(LocationInput)\r\n","import { Component } from \"react\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Container, Row, Col, Button, Modal, Form } from \"react-bootstrap\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { Subscription, forkJoin } from \"rxjs\"\r\nimport ServicesSelection from \"./ServicesSelection\"\r\nimport DonorInformation from \"./DonorInformation\"\r\nimport Schedule from \"./Schedule\"\r\nimport SiteSearch from \"../SiteSearch/SiteSearch\"\r\nimport CollectionSite from \"../../api/Location/LocationModel/CollectionSite\"\r\nimport OrderedServices from \"./OrderServices/OrderedServices\"\r\nimport { ServiceDataModel, DonorInformationModel, ScheduleModel, OTHER_REASON_TEXT, GetRegulatoryModeDonor, ServiceOrderedModel } from \"./OrderModels\"\r\nimport OrderRequestsHeader, { StepData } from \"./OrderRequestsHeader\"\r\nimport OrderSubmitObservable from \"../../api/OrderRequests/OrderSubmit\"\r\nimport SelectionInboxGridRow from \"../../api/Randoms/SelectionInboxModel/SelectionInboxGridRow\"\r\nimport PotentialDonorMatchModal from \"./PotentialDonorMatchModal\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport FormatPhone from \"../../formatters/FormatPhone\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport CompanyInput from \"../FormattedInputs/CompanyInput\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\n\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport { TestReasonsObservable, RegulatoryModeObservable } from \"../../api/OrderRequests/OrderRequestsConstraintGet\"\r\nimport { TestReasonType } from \"../../api/OrderRequests/OrderRequestsModel/TestReasonType\"\r\nimport { AdvanceSearchDonorGetObservable } from \"../../api/OrderRequests/SearchDonorGet\"\r\nimport { Donor } from \"../../api/OrderRequests/OrderRequestsModel/Donor\"\r\nimport OrderData from \"../../api/OrderRequests/OrderRequestsModel/OrderData\"\r\nimport SaveOrder from \"../../api/OrderRequests/OrderRequestsModel/SaveOrder\"\r\nimport { EmailRegexp, EventType, StorageKey } from \"../../config/Constants\"\r\nimport { AlcoholTestSampleType } from \"../../api/OrderRequests/OrderRequestsModel/AlcoholTestSampleType\"\r\nimport { FaChevronRight } from \"react-icons/fa\"\r\nimport { OrderFinishRoute, SSOOrderFinishRoute } from \"../../config/Routes\"\r\nimport ServicesGet, { ServiceTypesGet, AccountServicesGet } from \"../../api/Administration/OrderableServices\"\r\nimport ServiceType, { IsServiceTypeCodeAlcohol, IsServiceTypeCodeDrug, IsServiceTypeCodePhysical, IsServiceTypeCodeBackground, IsServiceTypeCodeOHS, IsServiceTypeCodeCHS } from \"../../api/Administration/Model/ServiceType\"\r\nimport Service, { IsServiceCodePOCT, IsServiceCodeFLEX, ServiceCode } from \"../../api/Administration/Model/Service\"\r\nimport AccountService from \"../../api/Administration/Model/AccountService\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport { GetOrderRequest, SSOOrderRequestData, GetOrderRequestData } from \"../../api/OrderRequests/SSOOrderRequest\"\r\nimport { GetSSOToken } from \"../../storage/AuthToken\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport ConfiramtionModal from \"../ConfirmationModal\"\r\nimport { AutoFilterLocationsGet } from \"../../api/Location/AutoFilterLocationsGet\"\r\nimport { AppState } from \"../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport { GetSelectedAssignedClinic } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport OrderDefaultsGet, { OrderDefault } from \"../../api/Administration/OrderDefaults\"\r\nimport { DefaultLookupCode } from \"../Administration/OrderDefaults\"\r\nimport LocationInput from \"../FormattedInputs/LocationInput\"\r\nimport { FullBaseUrl } from \"../../api/ApiUrl\"\r\nimport RegulatoryMode from \"../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport EmployeeCategory from \"../../api/LabService/LabServiceModel/EmployeeCategory\"\r\n\r\ninterface OrderRequestProps {\r\n location: {\r\n state?: {\r\n formData?: SelectionInboxGridRow[]\r\n }\r\n }\r\n}\r\n\r\ninterface OrderRequestAuthProps {\r\n isLocation?: boolean\r\n}\r\n\r\ninterface OrderRequestData {\r\n issuerType: string\r\n company?: string\r\n location?: string\r\n selectedCompany?: AutoFilterCompany\r\n selectedLocation?: AutoFilterCompany\r\n regulatoryModeObj?: RegulatoryMode\r\n categoryObj?: EmployeeCategory\r\n reasonObj?: TestReasonType\r\n reasonOther?: string\r\n reason?: string\r\n donor: DonorInformationModel\r\n services: ServiceDataModel[]\r\n clinic?: CollectionSite\r\n schedule: ScheduleModel\r\n}\r\n\r\ninterface OrderRequestState extends OrderRequestData {\r\n formKey: string\r\n step: number\r\n isDonorInfoSuccess: boolean\r\n showSiteSearch: boolean\r\n showPotentialMatches: boolean\r\n potentialDonorMatchList: Donor[]\r\n nextServiceID: number,\r\n isDonorValid: boolean\r\n isServicesConfirmed: boolean\r\n reasonsLoading: boolean\r\n defaultsLoading: boolean\r\n defaults: OrderDefault[]\r\n pendingDefaults: OrderDefault[]\r\n reasons: TestReasonType[]\r\n filteredReasons: TestReasonType[]\r\n idTypes: GetRegulatoryModeDonor[],\r\n orderSubmitting: boolean\r\n submittedOrder: boolean\r\n orderableServiceTypes: ServiceType[]\r\n orderableServices: Service[]\r\n orderableAccountServices: AccountService[],\r\n allowDonorClinicSelect: boolean\r\n ssoOrderRequest?: SSOOrderRequestData\r\n defaultAddress?: string\r\n showDrugWarning: boolean\r\n showLocations: boolean\r\n email?: string\r\n emailValid: boolean\r\n}\r\n\r\nexport interface TestData {\r\n eventType: string\r\n dot: boolean\r\n testDetailID: string\r\n labAccountNumber?: string\r\n panelID?: number\r\n regulatoryModeID?: number\r\n employeeCategoryID?: number\r\n}\r\n\r\nexport interface DonorData {\r\n PersonID: number\r\n FirstName: string\r\n LastName: string\r\n DonorID: string\r\n IDType: string\r\n MockDonorID: string\r\n}\r\n\r\nconst IssuerTypeIndividual = \"individual\"\r\nconst RandomReason = \"Random\"\r\nconst FMCSARegulatoryMode = \"FMCSA\"\r\nconst DefaultExpirationHours: number = 72\r\nconst emptyDonor: DonorInformationModel = {\r\n idType: undefined,\r\n idTypeObj: undefined,\r\n state: undefined,\r\n stateCode: undefined,\r\n donorId: undefined,\r\n firstName: undefined,\r\n middleInitial: undefined,\r\n lastName: undefined,\r\n eveningPhone: undefined,\r\n daytimePhone: undefined,\r\n birthdate: undefined\r\n}\r\nconst emptySchedule: ScheduleModel = {\r\n timezone: undefined,\r\n overrideAllowed: false,\r\n hoursUntilExpires: undefined,\r\n expirationDate: undefined,\r\n formattedExpirationDate: \"\",\r\n displayExpirationDate: \"\",\r\n comment: \"\",\r\n proceedImmediately:false,\r\n extendExpirationHours: 0\r\n}\r\nconst emptyData: OrderRequestData = {\r\n issuerType: IssuerTypeIndividual, // In Angular app for Non-MCP users it is only choice and it is selected by default\r\n company: undefined,\r\n location: undefined,\r\n selectedCompany: undefined,\r\n reasonObj: undefined,\r\n reasonOther: undefined,\r\n reason: undefined,\r\n donor: { ...emptyDonor },\r\n services: [],\r\n clinic: undefined,\r\n schedule: { ...emptySchedule }\r\n}\r\n\r\nconst buildOrderRequestData = (orderFormData?: SelectionInboxGridRow[]) => ({\r\n ...emptyData,\r\n company: orderFormData ? orderFormData[0]?.CompanyName : undefined,\r\n location: orderFormData ? orderFormData[0]?.LocationName : undefined,\r\n reason: orderFormData ? RandomReason : undefined,\r\n donor: {\r\n ...emptyDonor,\r\n idType: orderFormData ? orderFormData[0]?.IDType : undefined,\r\n donorId: orderFormData ? orderFormData[0]?.DonorID : undefined,\r\n }\r\n})\r\n\r\nexport class OrderRequest extends Component {\r\n orderRequestToken = GetSSOToken()\r\n showAlcoholSection: boolean = false\r\n showDrugSection: boolean = false\r\n showPhysicalSection: boolean = false\r\n showOHSSection: boolean = false\r\n showCHSSection: boolean = false\r\n completingPendingOrders: boolean = false\r\n drugTestData?: TestData\r\n alcoholTestData?: TestData\r\n orderFormData?: SelectionInboxGridRow[]\r\n donorData?: DonorData\r\n\r\n constructor(props: OrderRequestProps) {\r\n super(props)\r\n\r\n this.orderFormData = props.location.state?.formData\r\n if (this.orderFormData) {\r\n this.completingPendingOrders = true\r\n this.donorData = {\r\n PersonID: this.orderFormData[0].PersonID,\r\n FirstName: this.orderFormData[0].FirstName,\r\n LastName: this.orderFormData[0].LastName,\r\n DonorID: this.orderFormData[0].DonorID,\r\n IDType: this.orderFormData[0].IDType,\r\n MockDonorID: this.orderFormData[0].MockDonorID\r\n }\r\n this.orderFormData.forEach(data => {\r\n if (data.EventType === EventType.Urine) {\r\n this.showDrugSection = true\r\n this.drugTestData = {\r\n eventType: EventType.Urine,\r\n dot: data.DOT,\r\n testDetailID: data.TestDetailID,\r\n labAccountNumber: data.LabAccountNumber,\r\n panelID: data.PanelID,\r\n regulatoryModeID: data.RegulatoryModeID,\r\n employeeCategoryID: data.EmployeeCategoryID\r\n }\r\n } else if (data.EventType === EventType.Breath || data.EventType === EventType.Saliva) {\r\n this.showAlcoholSection = true\r\n this.alcoholTestData = {\r\n eventType: data.EventType,\r\n dot: data.DOT,\r\n testDetailID: data.TestDetailID,\r\n regulatoryModeID: data.RegulatoryModeID,\r\n employeeCategoryID: data.EmployeeCategoryID\r\n }\r\n }\r\n })\r\n } else {\r\n this.showDrugSection = true\r\n this.showAlcoholSection = true\r\n this.showPhysicalSection = true\r\n this.showOHSSection = true\r\n this.showCHSSection = true\r\n this.completingPendingOrders = false\r\n }\r\n\r\n const data = buildOrderRequestData(this.orderFormData)\r\n this.state = {\r\n ...data,\r\n formKey: \"OrderRequestForm\",\r\n step: 1,\r\n showSiteSearch: false,\r\n isDonorInfoSuccess: false,\r\n showPotentialMatches: false,\r\n potentialDonorMatchList: [],\r\n nextServiceID: 1,\r\n services: [],\r\n isDonorValid: false,\r\n isServicesConfirmed: false,\r\n reasonsLoading: false,\r\n defaultsLoading: false,\r\n defaults: [],\r\n pendingDefaults: [],\r\n reasons: [],\r\n filteredReasons: [],\r\n idTypes: [],\r\n submittedOrder: false,\r\n orderSubmitting: false,\r\n orderableServiceTypes: [],\r\n orderableServices: [],\r\n orderableAccountServices: [],\r\n showDrugWarning: false,\r\n showLocations: false,\r\n emailValid: true,\r\n allowDonorClinicSelect: false\r\n }\r\n }\r\n\r\n subscriptions = new Subscription()\r\n advanceSearchDonorSubscription?: Subscription\r\n loaInitialDataSubscription?: Subscription\r\n loadAccountServicesSubscription?: Subscription\r\n loadLocationsSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.loadInitialData()\r\n\r\n if (this.isSSO()) {\r\n this.subscriptions.add(\r\n GetOrderRequest(this.orderRequestToken).subscribe(\r\n data => this.parseOrderRequest(data.RequestText),\r\n error => this.handleAPIError(error, {})\r\n )\r\n )\r\n }\r\n }\r\n\r\n parseOrderRequest = (text: string) => {\r\n const request: SSOOrderRequestData = JSON.parse(text)\r\n this.setState({ ssoOrderRequest: request, defaultAddress: this.formatAddress(request) })\r\n }\r\n\r\n formatAddress = (ssoOrderRequest: SSOOrderRequestData) => {\r\n const address = ssoOrderRequest?.Donor?.Address\r\n return address ? `${address.Line1}, ${address.City} ${address.State}` : \"\"\r\n }\r\n\r\n isSSO = () => {\r\n return this.orderRequestToken !== \"\"\r\n }\r\n\r\n loadInitialData() {\r\n this.loaInitialDataSubscription && this.loaInitialDataSubscription.unsubscribe()\r\n this.setState({ reasonsLoading: true })\r\n this.loaInitialDataSubscription = forkJoin({\r\n orderableServiceTypes: ServiceTypesGet(),\r\n orderableServices: ServicesGet(),\r\n reasons: TestReasonsObservable()\r\n }).subscribe(\r\n ({ orderableServiceTypes, orderableServices, reasons }) => {\r\n this.setState({ orderableServiceTypes: orderableServiceTypes, orderableServices: orderableServices, reasons: reasons, filteredReasons: reasons, reasonsLoading: false, reasonObj: this.orderFormData && reasons.find(item => item.Description === RandomReason) })},\r\n (error) => this.handleAPIError(error, { companiesLoading: false, reasonsLoading: false })\r\n )\r\n }\r\n\r\n loadAllDefaults = (accountID: number) => {\r\n if (this.completingPendingOrders || this.orderFormData) {\r\n return\r\n }\r\n this.setState({ defaultsLoading: true })\r\n this.subscriptions.add(\r\n OrderDefaultsGet({ ImplementationID: 0, AccountID: accountID, LookupCode: \"\" }).subscribe(\r\n data => {\r\n this.populateDefaults(data)\r\n this.setState({ defaults: data, defaultsLoading: false })\r\n this.filterFields()\r\n },\r\n error => this.handleAPIError(error, { defaultsLoading: false })\r\n )\r\n )\r\n }\r\n loadPendingDefaults = (accountID: number) => {\r\n if (!this.completingPendingOrders || accountID <= 0) {\r\n return\r\n }\r\n this.setState({ defaultsLoading: true })\r\n this.subscriptions.add(\r\n OrderDefaultsGet({ ImplementationID: 0, AccountID: accountID, LookupCode: \"\" }).subscribe(\r\n data => {\r\n this.populateDefaults(data)\r\n this.setState({ pendingDefaults: data, defaultsLoading: false })\r\n },\r\n error => this.handleAPIError(error, { defaultsLoading: false })\r\n )\r\n )\r\n }\r\n\r\n populateDefaults = (defaults: OrderDefault[]) => {\r\n if (!Array.isArray(defaults)) {\r\n return\r\n }\r\n this.populateDefaultExpTime(defaults)\r\n\r\n }\r\n\r\n populateDefaultExpTime = (defaults: OrderDefault[]) => {\r\n if (!Array.isArray(defaults)) {\r\n return\r\n }\r\n let defaultExpTime = defaults.find(item => item.LookupCode === DefaultLookupCode.ExpTime && !!item.AccountID)\r\n if (!defaultExpTime) {\r\n defaultExpTime = defaults.find(item => item.LookupCode === DefaultLookupCode.ExpTime && !item.AccountID)\r\n }\r\n if (!defaultExpTime) {\r\n let accountId = 0\r\n const selectedCompany = this.state.selectedCompany\r\n if (selectedCompany) {\r\n accountId = selectedCompany.AccountID\r\n }\r\n defaultExpTime = {\r\n OrderDefaultID: 0,\r\n ImplementationID: 0,\r\n AccountID: accountId,\r\n LookupCode: DefaultLookupCode.ExpTime,\r\n FieldName: \"\",\r\n DefaultValue: DefaultExpirationHours.toString(),\r\n Show: false,\r\n IsDefault: false,\r\n Disable: false\r\n }\r\n defaults.push(defaultExpTime)\r\n }\r\n const defaultValue = defaultExpTime.DefaultValue || \"\"\r\n if (defaultValue === \"\") {\r\n defaultExpTime.DefaultValue = DefaultExpirationHours.toString()\r\n }\r\n }\r\n\r\n filterFields = () => {\r\n let reasonsDefaults = this.state.defaults.filter(item => item.LookupCode === DefaultLookupCode.TestReason && !!item.AccountID)\r\n if (reasonsDefaults.length === 0) reasonsDefaults = this.state.defaults.filter(item => item.LookupCode === DefaultLookupCode.TestReason && !item.AccountID)\r\n if (reasonsDefaults.length > 0) {\r\n let filteredReasons: TestReasonType[] = []\r\n const defaultReason = reasonsDefaults.find(item => !!item.Show && !!item.IsDefault)\r\n this.state.reasons.forEach((item, index) => {\r\n const def = reasonsDefaults.find(el => el.FieldName === item.Description)\r\n if (!def || def?.Show) filteredReasons.push(item)\r\n })\r\n this.setState({ filteredReasons: filteredReasons })\r\n if (defaultReason) this.onReasonChange(defaultReason.FieldName)\r\n }\r\n else {\r\n this.setState({ filteredReasons: [...this.state.reasons], })\r\n }\r\n }\r\n\r\n defaultExpirationTime = () => {\r\n let defaults = this.state.defaults\r\n if (this.completingPendingOrders) {\r\n defaults = this.state.pendingDefaults\r\n }\r\n let def = defaults.find(item => item.LookupCode === DefaultLookupCode.ExpTime && !!item.AccountID)\r\n if (!def) {\r\n def = defaults.find(item => item.LookupCode === DefaultLookupCode.ExpTime && !item.AccountID)\r\n }\r\n return def\r\n }\r\n\r\n loadAccountServices = (implementationID: number, accountID?: number) => {\r\n this.loadAccountServicesSubscription && this.loadAccountServicesSubscription.unsubscribe()\r\n let accountServices: AccountService[] = []\r\n this.loadAccountServicesSubscription = AccountServicesGet(implementationID, accountID).subscribe(\r\n data => {\r\n if (data?.length) {\r\n accountServices = data\r\n }\r\n else {\r\n if (accountID) {\r\n this.loadAccountServices(implementationID)\r\n }\r\n else {\r\n accountServices = this.state.orderableServices.map(service => { return { AccountServiceID: 0, ImplementationID: implementationID, ServiceID: service.ServiceID, Active: false, IsDefault: false } })\r\n }\r\n }\r\n if (accountServices.length) {\r\n this.setState({ orderableAccountServices: accountServices, services: [], isServicesConfirmed: false })\r\n }\r\n },\r\n (error) => this.handleAPIError(error, {})\r\n )\r\n }\r\n\r\n loadLocations = (accountID: number) => {\r\n this.loadLocationsSubscription && this.loadLocationsSubscription.unsubscribe()\r\n this.loadLocationsSubscription = AutoFilterLocationsGet(accountID, \"\", true).subscribe(\r\n data => {\r\n const showLocations = data.length > 0\r\n if (this.props.isLocation) {\r\n const locationName = this.state.location || data[0]?.Name || \"\"\r\n this.setState({ showLocations: showLocations, location: locationName })\r\n }\r\n else {\r\n this.setState({ showLocations: showLocations })\r\n }\r\n },\r\n error => this.handleAPIError(error, { companiesLoading: false })\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n this.advanceSearchDonorSubscription && this.advanceSearchDonorSubscription.unsubscribe()\r\n this.loaInitialDataSubscription && this.loaInitialDataSubscription.unsubscribe()\r\n this.loadAccountServicesSubscription && this.loadAccountServicesSubscription.unsubscribe()\r\n this.loadLocationsSubscription && this.loadLocationsSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n resetForm = () => {\r\n const data = buildOrderRequestData(this.orderFormData)\r\n const company = data.company || this.state.selectedCompany?.Name || \"\"\r\n const selectedCompany = company ? this.state.selectedCompany : undefined\r\n const reasonObj = data.reason ? this.state.reasons.find(item => item.Description === data.reason) : undefined\r\n const idTypeObj = data.donor.idType ? this.state.idTypes.find(item => item.PrimaryIDType === data.donor.idType) : undefined\r\n\r\n this.setState({\r\n ...data,\r\n formKey: Math.random().toString(),\r\n company: company,\r\n selectedCompany: selectedCompany,\r\n reasonObj: reasonObj,\r\n clinic: undefined,\r\n donor: { ...data.donor, idTypeObj: idTypeObj },\r\n step: 1,\r\n showSiteSearch: false,\r\n isDonorInfoSuccess: false,\r\n showPotentialMatches: false,\r\n potentialDonorMatchList: [],\r\n nextServiceID: 1,\r\n isDonorValid: false,\r\n isServicesConfirmed: false,\r\n submittedOrder: false,\r\n orderSubmitting: false\r\n })\r\n }\r\n\r\n onCompanyChange = (companies: AutoFilterCompany[]) => {\r\n const selectedCompany = companies[0]\r\n if (selectedCompany) {\r\n this.loadAccountServices(selectedCompany?.ImplementationID || 0, selectedCompany.AccountID)\r\n this.loadAllDefaults(selectedCompany.AccountID)\r\n this.loadPendingDefaults(selectedCompany.AccountID)\r\n this.setState({ company: selectedCompany?.Name, selectedCompany: selectedCompany, showLocations: false, selectedLocation: undefined, reasonObj: (this.orderFormData ? this.state.reasonObj : undefined), reason: (this.orderFormData ? this.state.reason : undefined), reasonOther: undefined })\r\n this.loadLocations(selectedCompany.AccountID)\r\n }\r\n else {\r\n this.setState({ selectedCompany: selectedCompany, reasonObj: undefined, reason: undefined, reasonOther: undefined, services: [], orderableAccountServices: [], isServicesConfirmed: false })\r\n }\r\n }\r\n\r\n onLocationChange = (locations: AutoFilterCompany[]) => {\r\n const selectedLocation = locations[0]\r\n this.setState({ selectedLocation: selectedLocation })\r\n if (selectedLocation) {\r\n this.setState({ selectedLocation: selectedLocation, services: [], isServicesConfirmed: false })\r\n }\r\n else {\r\n this.setState({ selectedLocation: selectedLocation })\r\n }\r\n }\r\n\r\n onReasonChange = (value: string) => {\r\n const reasonObject = this.state.reasons?.find((item: TestReasonType) => item.Description === value)\r\n this.setState({ reason: reasonObject?.Description, reasonObj: reasonObject, submittedOrder: false })\r\n }\r\n onDonorChange = (donor: DonorInformationModel, isValid: boolean, isDonorInfoSuccess: boolean) => this.setState({ donor: donor, isDonorValid: isValid, isDonorInfoSuccess: isDonorInfoSuccess, submittedOrder: false, email: donor.email })\r\n onScheduleChange = (schedule: ScheduleModel) => this.setState({ schedule: schedule, submittedOrder: false })\r\n\r\n hasDragService = (services: ServiceDataModel[], isDot: boolean) => services.find(service => IsServiceTypeCodeDrug(service.serviceTypeCode) && service.isDOT === isDot)\r\n\r\n onAddService = (data: ServiceDataModel) => {\r\n // Add service to list\r\n // Reset confirmation status\r\n const { services, nextServiceID } = this.state\r\n \r\n let newServices = [ ...services ]\r\n let newServiceID = nextServiceID\r\n\r\n if(data.selectedServices.length > 0) {\r\n data.selectedServices.map((service) => {\r\n if (!newServices.find((s) => s.serviceCode === service.FFServiceCode)){\r\n newServices.push({\r\n ...data,\r\n id: newServiceID++,\r\n serviceCode: service.FFServiceCode as ServiceCode,\r\n isDOT: service.DOT,\r\n isMarketplace: service.Marketplace,\r\n })\r\n }\r\n })\r\n } else {\r\n newServices = [...services, ...[{...data, id: newServiceID++}]]\r\n }\r\n \r\n const showDrugWarning = \r\n IsServiceTypeCodeDrug(data.serviceTypeCode) &&\r\n !!this.hasDragService(services, true) && !!this.hasDragService(services, false) &&\r\n (!this.hasDragService(this.state.services, true) || !this.hasDragService(this.state.services, false))\r\n\r\n const modeObj = !!this.state.regulatoryModeObj ? this.state.regulatoryModeObj : data.regulatoryModeObj\r\n const catObj = !!this.state.categoryObj ? this.state.categoryObj : data.categoryObj\r\n\r\n this.setState({\r\n showDrugWarning: showDrugWarning,\r\n nextServiceID: newServiceID,\r\n services: newServices,\r\n isServicesConfirmed: false,\r\n submittedOrder: false,\r\n regulatoryModeObj: modeObj,\r\n categoryObj: catObj,\r\n })\r\n }\r\n\r\n onRemoveService = (id: number) => {\r\n // Remove service from list\r\n // Reset confirmation status\r\n const services = this.state.services.filter(item => item.id !== id)\r\n\r\n if (services.length === 0) {\r\n this.setState({ services: services, isServicesConfirmed: false, submittedOrder: false, regulatoryModeObj: undefined, categoryObj: undefined })\r\n }\r\n {\r\n this.setState({ services: services, isServicesConfirmed: false, submittedOrder: false })\r\n }\r\n }\r\n\r\n onConfirmServices = () => this.setState({ isServicesConfirmed: true })\r\n\r\n // Navigation methods\r\n onCancel = () => {\r\n localStorage.removeItem(StorageKey.SavedOrderData)\r\n localStorage.removeItem(StorageKey.OrderedServices)\r\n localStorage.removeItem(StorageKey.CanViewOrderFinish)\r\n if (this.props.location.state?.formData) {\r\n (this.props as RouteComponentProps).history.goBack()\r\n } else {\r\n this.resetForm()\r\n }\r\n }\r\n\r\n handleAllowDonorClinicSelect = (event: React.ChangeEvent) => {\r\n const lastValue = this.state.allowDonorClinicSelect\r\n if(!this.isSSO()){\r\n this.setState({ allowDonorClinicSelect: event.target.checked, schedule: (lastValue ? { ...emptySchedule } : this.state.schedule)})\r\n return\r\n }\r\n let donor_email = this.state.email || \"\"\r\n if(donor_email === \"\"){\r\n donor_email = this.state.ssoOrderRequest?.Donor?.Donoremail || \"\"\r\n } \r\n this.setState({ \r\n allowDonorClinicSelect: event.target.checked, schedule: (lastValue ? { ...emptySchedule } : this.state.schedule),\r\n email: donor_email, emailValid: this.isEmailValid(donor_email)\r\n })\r\n }\r\n\r\n getIdTypes = () => {\r\n this.subscriptions.add(\r\n RegulatoryModeObservable(this.regulatoryModeFromServices()).subscribe(\r\n results => this.setState({ idTypes: results }),\r\n error => toast.error(error)\r\n )\r\n )\r\n }\r\n\r\n onGoToStep1 = () => this.setState({ step: 1 })\r\n onGoToStep2 = () => {\r\n this.setState({ step: 2 })\r\n this.getIdTypes()\r\n }\r\n\r\n onSubmit = () => {\r\n if (this.state.isDonorInfoSuccess) {\r\n this.saveOrder()\r\n }\r\n else {\r\n this.advanceSearchDonorSubscription && this.advanceSearchDonorSubscription.unsubscribe()\r\n const params = {\r\n CompanyID: this.state.selectedCompany?.AccountID || 0,\r\n DayTimePhone: this.state.donor?.daytimePhone || \"\",\r\n EveningPhone: this.state.donor?.eveningPhone || \"\",\r\n Mobile: null,\r\n RegulatoryModeID: this.regulatoryModeFromServices(),\r\n LastName: this.state.donor?.lastName,\r\n DateOfBirth: this.state.donor?.birthdate ? FormatDate(this.state.donor?.birthdate) : undefined\r\n }\r\n this.advanceSearchDonorSubscription = AdvanceSearchDonorGetObservable(params).subscribe(\r\n (response: Donor[]) => {\r\n if (response.length) {\r\n this.setState({ potentialDonorMatchList: response, showPotentialMatches: true })\r\n }\r\n else {\r\n this.saveOrder()\r\n }\r\n },\r\n (error: string) => toast.error(error)\r\n )\r\n }\r\n }\r\n\r\n // TODO: Verify logic src\\app\\pages\\order\\order.component.ts:2793\r\n regulatoryModeFromServices = () => this.state.services.find(item => item.isDOT && item.regulatoryModeObj)?.regulatoryModeObj?.RegulatoryModeID || 0\r\n categoryFromServices = () => this.state.services.find(item => item.isDOT && item.categoryObj)?.categoryObj?.EmployeeCategoryID || 0\r\n\r\n saveOrder() {\r\n const formatPhone = (phone?: string) => {\r\n if (!phone || phone === \"np\" || phone === \"n/p\" || phone === \"NP\" || phone === \"N/P\") {\r\n return \"N/P\"\r\n }\r\n return phone.replace(/-/g, \"\")\r\n }\r\n\r\n const formatDate = (date?: Date) => {\r\n if (!date) {\r\n return \"\"\r\n }\r\n return FormatDate(date)\r\n }\r\n\r\n const order: SaveOrder = {\r\n MultipleDrug: [],\r\n MultipleAlcohol: this.state.services.filter(service => IsServiceTypeCodeAlcohol(service.serviceTypeCode)).map((service) => { return { DOT: !!service.isDOT, SampleTypeID: (service.testToPerformObj as AlcoholTestSampleType).SampleTypeID } }),\r\n MultiplePOCT: [],\r\n MultipleClinical: [],\r\n MultiplePhysical: {},\r\n POCTCount: 0,\r\n CollectionVendorID: this.state.clinic?.VendorID || \"\",\r\n FormFoxVendorAN: this.state.clinic?.FormFoxVendorAN || 0,\r\n Collector: {\r\n VendorID: this.state.clinic?.VendorID || 0,\r\n ParentVendorID: this.state.clinic?.ParentVendorID || null,\r\n FFID: this.state.clinic?.FFID || \"\",\r\n Name: this.state.clinic?.Name || \"\",\r\n Code: this.state.clinic?.Code || \"\",\r\n Type: this.state.clinic?.Type || null,\r\n Address1: this.state.clinic?.Address1 || \"\",\r\n Address2: this.state.clinic?.Address2 || \"\",\r\n City: this.state.clinic?.City || \"\",\r\n State: this.state.clinic?.State || \"\",\r\n Zip: this.state.clinic?.Zip || \"\",\r\n Phone: this.state.clinic?.Phone || \"\",\r\n HoursOfOperation: this.state.clinic?.HoursOfOperation || \"\",\r\n Private: this.state.clinic?.Private || false,\r\n Distance: this.state.clinic?.Distance || 0,\r\n Latitude: this.state.clinic?.Latitude || 0,\r\n Longitude: this.state.clinic?.Longitude || 0,\r\n UseDOTForm: this.state.clinic?.UseDOTForm || false,\r\n FFEnabled: this.state.clinic?.FFEnabled || false,\r\n OutOfNetwork: this.state.clinic?.OutOfNetwork || false,\r\n iVendorID: this.state.clinic?.iVendorID || 0,\r\n SiteID: this.state.clinic?.SiteID || null,\r\n Fax: this.state.clinic?.Fax || \"\",\r\n },\r\n CollectorPhone: null,\r\n CollectorVendorName: this.state.clinic?.Name || \"\",\r\n ConfirmDeviceCode: \"\",\r\n ConfirmDeviceDescription: \"\",\r\n ConfirmDeviceExpirationDate: null,\r\n ConfirmDeviceID: null,\r\n ConfirmDeviceSerialNumber: \"\",\r\n EventData: {\r\n AccountID: this.state.selectedCompany?.AccountID || 0,\r\n CompanyID: this.state.selectedCompany?.AccountID || 0,\r\n CompanyCode: this.state.selectedCompany?.Code || \"\",\r\n CompanyFullName: this.state.selectedCompany?.Code ? `${this.state.selectedCompany?.Name || \"\"} (${this.state.selectedCompany?.Code || \"\"})` : \"\",\r\n CompanyName: this.state.selectedCompany?.Name || \"\",\r\n DateOrdered: \"\",\r\n DateScheduled: \"\",\r\n ExpirationDate: this.state.schedule.formattedExpirationDate,\r\n LocationID: this.state.selectedLocation?.AccountID.toString() || \"\",\r\n PrimaryID: (this.state.donor.donorId || \"\").replace(/-/g, \"\"),\r\n PrimaryIDRank: this.state.donor.idTypeObj?.Rank || 0,\r\n PrimaryIDType: this.state.donor.idTypeObj?.PrimaryIDType || \"\",\r\n RegulatoryModeID: this.regulatoryModeFromServices(),\r\n EmployeeCategoryID: this.categoryFromServices(),\r\n RegionID: \"\",\r\n RegionName: \"\",\r\n TimeZone: this.state.schedule.timezone,\r\n AllowDonorClinicSelect: this.state.allowDonorClinicSelect || false,\r\n ProceedImmediately: this.state.schedule.proceedImmediately,\r\n ExtendExpirationHours: this.state.schedule.extendExpirationHours || 0\r\n },\r\n Panel: {\r\n PanelID: \"\",\r\n Description: \"\",\r\n Code: \"\",\r\n ClientID: \"\",\r\n BeginEffectiveDate: \"\",\r\n EndEffectiveDate: \"\",\r\n UserLogin: \"\",\r\n UpdateMethod: \"\",\r\n UpdateDate: \"\"\r\n },\r\n PanelDescription: \"\",\r\n IsAlcohol: \"\",\r\n IsAssociatedWithPool: false,\r\n IsCompleted: false,\r\n IsDrug: \"\",\r\n IsBackground: false,\r\n IsNew: false,\r\n IsPhysical: false,\r\n IsAudiogram: false,\r\n IsPoct: false,\r\n IsRandom: false,\r\n IsReleased: false,\r\n LaboratoryVendorCode: \"\",\r\n LaboratoryVendorID: \"\",\r\n LaboratoryVendorName: \"\",\r\n LabPanelID: 0,\r\n TestReasonID: this.state.reasonObj?.TestReasonID || 0,\r\n TestReasonDescription: this.state.reasonObj?.Description || \"\",\r\n TestTypeDescription: this.state.services.some(item => IsServiceTypeCodeDrug(item.serviceTypeCode)) ? \"Drug\" : \"\",\r\n TestTypeID: this.state.services.some(item => IsServiceTypeCodeDrug(item.serviceTypeCode)) ? 1 : 0,\r\n SampleTypeID: \"\",\r\n SampleTypeDescription: \"\",\r\n Labbased: this.state.services.some(item => IsServiceTypeCodeDrug(item.serviceTypeCode)),\r\n OrderComment: this.state.schedule.comment,\r\n SplitSpecimen: \"\",\r\n Observed: \"\",\r\n DOT: this.state.services.some(item => item.isDOT),\r\n Normal: \"\",\r\n SampleTypeCode: \"\",\r\n PersonDetail: {\r\n PersonID: this.state.donor.personId || 0,\r\n DateOfBirth: formatDate(this.state.donor.birthdate),\r\n HomePhone: formatPhone(this.state.donor.eveningPhone),\r\n CellPhone: \"\",\r\n WorkPhone: formatPhone(this.state.donor.daytimePhone),\r\n MiddleInitial: (this.state.donor.middleInitial || \"\").substring(0,1),\r\n AlternateID: \"\",\r\n DriverID: \"\",\r\n EmployerID: \"\",\r\n SSN: \"\",\r\n FirstName: this.state.donor.firstName || \"\",\r\n LastName: this.state.donor.lastName || \"\",\r\n CCFPersonnelID: (this.state.donor.donorId || \"\").replace(/-/g, \"\"),\r\n MockCCFPersonnelID: this.orderFormData ? this.orderFormData[0].MockDonorID : \"\",\r\n DriverLicStateOfIssue: this.state.donor?.stateCode || this.state.donor?.state?.Abbreviation || \"\",\r\n Email: this.state.email || \"\"\r\n },\r\n MockAlcoholTestDetailID: this.alcoholTestData?.testDetailID || \"\",\r\n MockDrugTestDetailID: this.drugTestData?.testDetailID || \"\",\r\n PoolMembersID: this.orderFormData ? this.orderFormData[0]?.PoolMembersID : undefined,\r\n SSOToken: this.orderRequestToken,\r\n BaseUrl: FullBaseUrl(),\r\n }\r\n\r\n if (this.orderRequestToken) {\r\n order.PersonDetail.Address = this.state.donor.address\r\n }\r\n\r\n if (this.state.services.some(item => IsServiceTypeCodePhysical(item.serviceTypeCode))) {\r\n order.MultiplePhysical.DOT = this.state.services.find(item => IsServiceTypeCodePhysical(item.serviceTypeCode))?.isDOT\r\n order.IsPhysical = true\r\n }\r\n\r\n this.state.services.filter(service => IsServiceTypeCodeDrug(service.serviceTypeCode)).forEach((service) => {\r\n const is_poct = IsServiceCodePOCT(service.serviceCode)\r\n const is_flex = IsServiceCodeFLEX(service.serviceCode)\r\n order.MultipleDrug.push(\r\n {\r\n DOT: !!service.isDOT,\r\n IsPoct: is_poct || is_flex,\r\n IsFlex: is_flex,\r\n SplitSpecimen: service.reqSpecimenCollection === \"single\" ? false : true,\r\n Observed: service.observedCollection,\r\n Normal: !service.observedCollection,\r\n RegulatoryModeID: service.regulatoryModeObj?.RegulatoryModeID || \"\",\r\n RegulatoryModeName: service.regulatoryModeObj?.Name || \"\",\r\n EmployeeCategoryID: service.categoryObj?.EmployeeCategoryID || \"\",\r\n EmployeeCategoryName: service.categoryObj?.Name || \"\",\r\n LabAccountNumber: service.labAccountObj?.LabAccount || \"\",\r\n LaboratoryVendorCode: service.labAccountObj?.LabCode || \"\",\r\n LaboratoryVendorID: service.labAccountObj?.LabClientMemberId || 0,\r\n LabPanelID: service.testToPerformObj?.PanelID || 0,\r\n PanelDescription: service.testToPerformObj?.Description || \"\",\r\n PanelCode: service.testToPerformObj?.Code || \"\",\r\n SampleTypeCode: service.testToPerformObj?.SampleTypeCode || \"\",\r\n }\r\n )\r\n })\r\n\r\n this.state.services.filter(service => IsServiceTypeCodeOHS(service.serviceTypeCode) || IsServiceTypeCodeCHS(service.serviceTypeCode)).forEach((service) => {\r\n order.MultipleClinical.push({\r\n DOT: !!service.isDOT,\r\n IsPoct: false,\r\n SplitSpecimen: false,\r\n Observed: false,\r\n Normal: true,\r\n RegulatoryModeID: \"\",\r\n RegulatoryModeName: \"\",\r\n EmployeeCategoryID: \"\",\r\n EmployeeCategoryName: \"\",\r\n LabAccountNumber: service.labAccountObj?.LabAccount || \"\",\r\n LaboratoryVendorCode: service.labAccountObj?.LabCode || \"\",\r\n LaboratoryVendorID: service.labAccountObj?.LabClientMemberId || 0,\r\n LabPanelID: service.testToPerformObj?.PanelID || 0,\r\n PanelDescription: service.testToPerformObj?.Description || \"\",\r\n PanelCode: service.testToPerformObj?.Code || \"\",\r\n ClinicalTestType: service.serviceCode,\r\n SelectedPanels:[]\r\n })\r\n const item = order.MultipleClinical[order.MultipleClinical.length - 1]\r\n const selectedTests = service.selectedTests || []\r\n for(let i = 0; i < selectedTests.length; i++){\r\n const panel = {\r\n LabPanelID: selectedTests[i].PanelID || 0,\r\n PanelDescription: selectedTests[i].Description || \"\",\r\n PanelCode: selectedTests[i].Code || \"\",\r\n PanelID: selectedTests[i].PanelID || 0,\r\n ClientID: selectedTests[i].ClientID || 0,\r\n Code: selectedTests[i].Code || \"\",\r\n Description: selectedTests[i].Description || \"\",\r\n DOT: !!selectedTests[i].DOT ,\r\n POCT: !!selectedTests[i].POCT,\r\n FLEX: !!selectedTests[i].FLEX,\r\n NDOT: !!selectedTests[i].NDOT,\r\n SampleTypeCode: selectedTests[i].SampleTypeCode || \"\"\r\n }\r\n item.SelectedPanels.push(panel)\r\n }\r\n })\r\n\r\n this.setState({ orderSubmitting: true })\r\n this.subscriptions.add(\r\n OrderSubmitObservable(order).subscribe(\r\n (results: OrderData) => {\r\n this.setState({ submittedOrder: true, orderSubmitting: false })\r\n this.saveSuccess(results)\r\n },\r\n error => {\r\n this.setState({ submittedOrder: false, orderSubmitting: false })\r\n toast.error(error)\r\n }\r\n )\r\n )\r\n }\r\n\r\n saveSuccess = (orderFinishData: OrderData) => {\r\n localStorage.setItem(StorageKey.SavedOrderData, JSON.stringify(orderFinishData))\r\n const isTest = true // TODO: remove hard-coded value when Background test is added, remap to: isTest = (this.findLocationObj.IsDrug === true || this.findLocationObj.IsPoct === true || this.findLocationObj.IsAlcohol === true || this.findLocationObj.IsPhysical === true))\r\n const isBackground = false // TODO: remove hard-coded value when Background test is added, remap to: isBackground = this.findLocationObj.IsBackground === true\r\n if (orderFinishData.FormFoxTestAN > 0 || orderFinishData.ProfileNumber) {\r\n if (orderFinishData.FormFoxTestAN === 0 && isTest) {\r\n toast.error(orderFinishData.FFresult)\r\n }\r\n if (!orderFinishData.ProfileNumber && isBackground) {\r\n toast.error(orderFinishData.CSresult)\r\n }\r\n\r\n localStorage.setItem(StorageKey.OrderedServices, JSON.stringify(this.normalizeOrderedServices()))\r\n localStorage.setItem(StorageKey.CanViewOrderFinish, JSON.stringify(true))\r\n localStorage.setItem(StorageKey.FromSelectionInbox, JSON.stringify(!!this.orderFormData))\r\n localStorage.setItem(StorageKey.OrderDonorSiteSelect, JSON.stringify(!this.state.clinic))\r\n\r\n const props = this.props as RouteComponentProps\r\n props.history.push(this.isSSO() ? SSOOrderFinishRoute : OrderFinishRoute)\r\n } else {\r\n if (isTest) {\r\n toast.error(orderFinishData.FFresult)\r\n }\r\n if (isBackground) {\r\n toast.error(orderFinishData.CSresult)\r\n }\r\n }\r\n }\r\n\r\n normalizeOrderedServices = (): ServiceOrderedModel[] => {\r\n return this.state.services.map(service => {\r\n const { serviceTypeCode, serviceCode, isDOT, testToPerform, testToPerformObj, labAccountObj } = service\r\n return { serviceTypeCode, serviceCode, isDOT, testToPerformDesc: testToPerformObj?.Description || testToPerform, labAccountDesc: labAccountObj?.Description }\r\n })\r\n }\r\n\r\n closePotentialDonorMatchModal = () => {\r\n //this.PersonID = 0\r\n toast.error(\"Donor was not found. New donor will be created.\")\r\n this.setState({ showPotentialMatches: false }, () => this.saveOrder())\r\n }\r\n\r\n submitPotentialDonorMatchModal = (response: Donor) => {\r\n toast.success(\"Your Order will be placed with the selected ID Type.\")\r\n const fetchedDate = response.DateOfBirth ? new Date(response.DateOfBirth) : undefined\r\n const validDate = fetchedDate && fetchedDate.getTime && !isNaN(fetchedDate.getTime())\r\n const newDonor: DonorInformationModel = {\r\n ...this.state.donor,\r\n personId: response.PersonID,\r\n firstName: response.FirstName,\r\n middleInitial: response.MiddleInitial,\r\n lastName: response.LastName,\r\n eveningPhone: FormatPhone(response.HomePhone),\r\n daytimePhone: FormatPhone(response.WorkPhone),\r\n birthdate: validDate ? fetchedDate : undefined,\r\n\r\n firstNameReadOnly: !!response.FirstName,\r\n middleInitialReadOnly: !!response.MiddleInitial,\r\n lastNameReadOnly: !!response.LastName,\r\n homePhoneReadOnly: !!(response.HomePhone && response.HomePhone !== \"N/P\"),\r\n workPhoneReadOnly: !!(response.WorkPhone && response.WorkPhone !== \"N/P\"),\r\n state: undefined,\r\n stateCode: response.DriverLICStateOfIssue ? response.DriverLICStateOfIssue : undefined\r\n }\r\n this.setState({\r\n donor: newDonor,\r\n showPotentialMatches: false\r\n }, () => this.saveOrder())\r\n }\r\n\r\n closeDrugWarning = () => this.setState({ showDrugWarning: false })\r\n\r\n isEmailValid = (value: string) => EmailRegexp.test(value)\r\n\r\n handleEmailChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value\r\n this.setState({ email: value, emailValid: this.isEmailValid(value) })\r\n }\r\n\r\n render() {\r\n const { issuerType, company, reasonObj, reasonOther, submittedOrder, selectedCompany, clinic, showLocations } = this.state\r\n const isIssuerValid = !!issuerType && !!company && !!reasonObj && (reasonObj?.Description !== OTHER_REASON_TEXT || !!reasonOther)\r\n // Step 2 is available when services list is confirmed, company is set and reason is set\r\n const canGoToOrderFeatures = this.state.isServicesConfirmed && isIssuerValid\r\n const isStep2Available = this.state.step !== 2 && canGoToOrderFeatures\r\n const allowClinicSelectValid = (!!this.state.clinic && !this.state.allowDonorClinicSelect) || (this.state.allowDonorClinicSelect && (this.isSSO() || (this.state.emailValid && this.state.email && this.state.email !== \"\")))\r\n const isOrderCanBeSubmitted = canGoToOrderFeatures && this.state.isDonorValid && allowClinicSelectValid && !submittedOrder\r\n const isBirthDateRequired = this.state.services.filter(service => IsServiceTypeCodePhysical(service.serviceTypeCode) || IsServiceTypeCodeBackground(service.serviceTypeCode)).length > 0\r\n // Confirm button is enabled when at least one service is added to ordered services list and confirmation status is not set\r\n const canConfirm = this.completingPendingOrders ? this.state.services.length === this.orderFormData?.length && !this.state.isServicesConfirmed : this.state.services.length > 0 && !this.state.isServicesConfirmed\r\n const disableReason = this.state.services.length > 0 || !selectedCompany || this.state.defaultsLoading\r\n\r\n const headerSteps: StepData[] = [\r\n {\r\n title: '1',\r\n disabled: this.state.step === 1,\r\n current: this.state.step === 1,\r\n onClick: () => this.setState({ step: 1 })\r\n },\r\n {\r\n title: '2',\r\n disabled: !isStep2Available,\r\n current: this.state.step === 2,\r\n onClick: () => this.setState({ step: 2 })\r\n },\r\n {\r\n title: '3',\r\n disabled: true,\r\n current: this.state.step === 3,\r\n onClick: () => { }\r\n }\r\n ]\r\n\r\n //2022-09-29. Yanek Dogel. DFCT0011749 Donor Self Schedule does not work in conjunction with Embedded Ordering. \r\n //Do not hide email for SSO. \r\n \r\n return (<>\r\n \r\n \r\n this.setState({ showSiteSearch: false })} size=\"xl\" dialogClassName=\"dark modal-90w\">\r\n \r\n SITE SEARCH\r\n \r\n \r\n this.setState({ clinic: site, showSiteSearch: false, submittedOrder: false })} \r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Do you want to order for?\r\n
\r\n \r\n { }} />\r\n \r\n \r\n COMPANY\r\n \r\n \r\n {showLocations && \r\n LOCATION\r\n \r\n }\r\n \r\n REASON\r\n this.onReasonChange(e.target.value)}\r\n isInvalid={this.state.selectedCompany && !this.state.reasonObj}\r\n disabled={this.state.reasonsLoading || this.completingPendingOrders || disableReason}>\r\n )}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Clinic\r\n \r\n \r\n \r\n {clinic && (!!clinic?.Phone || !!clinic?.Fax) && \r\n \r\n {clinic?.Phone && Phone: {FormatPhone(clinic?.Phone)}}\r\n {clinic?.Fax && Fax: {FormatPhone(clinic?.Fax)}}\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): OrderRequestAuthProps {\r\n return {\r\n isLocation: (GetSelectedAssignedClinic(state)?.LocationID || 0) > 0\r\n }\r\n}\r\nconst ConnectedOrderRequest = connect(mapStateToProps, null)(OrderRequest)\r\nexport default ConnectedOrderRequest\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport AuthFormParams, {AuthFormByTokenParams} from \"./OrderResultModel/AuthFormParams\"\r\n\r\nexport default function AuthFormProcessObservable(params: AuthFormParams): Observable {\r\n const requestBody: string = JSON.stringify({\r\n FormFoxTestAN: params.FormFoxTestAN,\r\n PersonID: params.PersonID,\r\n VendorID: params.VendorID,\r\n SendToEmail: params.SendToEmail,\r\n SendText: params.SendText,\r\n EmailAddress: params.EmailAddress,\r\n ClientDetails: { },\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceReport/TrackingAuthorizationForm\", requestBody)\r\n}\r\n\r\nexport function AuthFormByToken(params: AuthFormByTokenParams): Observable {\r\n const requestBody: string = JSON.stringify({\r\n requestToken: params.requestToken,\r\n FormFoxTestAN: params.FormFoxTestAN\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceReport/AuthorizationFormByToken\", requestBody)\r\n}","import React, { Component } from \"react\"\r\nimport { toast, ToastContainer } from \"react-toastify\"\r\nimport { Container, Row, Col, Button, Table, Image, Form } from \"react-bootstrap\"\r\nimport { ServiceOrderedModel } from \"./OrderModels\"\r\nimport { FaMinus, FaPlus } from \"react-icons/fa\"\r\nimport PhoneNumberMaskedInput from \"../FormattedInputs/PhoneNumberMaskedInput\"\r\nimport SendEmailObservable from \"../../api/OrderRequests/SendEmail\"\r\nimport OrderReportPrintObservable from \"../../api/OrderRequests/OrderReportPrint\"\r\nimport OrderRequestsHeader, { StepData } from \"./OrderRequestsHeader\"\r\nimport OrderData, { OrderDataSSO, SSOConfig } from \"../../api/OrderRequests/OrderRequestsModel/OrderData\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { EmailRegexp, PhoneRegexp, StorageKey } from \"../../config/Constants\"\r\nimport SendMessageObservable from \"../../api/OrderRequests/SendMessage\"\r\nimport dotImage from \"../../assets/images/dot-img.png\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { OrderRoute, SelectionInboxRoute } from \"../../config/Routes\"\r\nimport ServiceType, { ServiceTypeCode } from \"../../api/Administration/Model/ServiceType\"\r\nimport Service, { ServiceCode, IsServiceCodePOCT } from \"../../api/Administration/Model/Service\"\r\nimport { OrderFinishObservable } from \"../../api/OrderRequests/OrderSubmit\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { GetSSOToken } from \"../../storage/AuthToken\"\r\nimport { FullBaseUrl } from \"../../api/ApiUrl\"\r\nimport AuthFormProcessObservable from \"../../api/OrderResults/AuthForm\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\n\r\ninterface OrderFinishProps {\r\n isSSO?: boolean\r\n isFFOrder?: boolean\r\n}\r\n\r\ninterface OrderFinishState {\r\n step: number\r\n authorizationID?: number,\r\n emailItems: string[]\r\n mobileItems: string[]\r\n sendingEmail: boolean\r\n sendingText: boolean\r\n}\r\n\r\nexport interface FinishData {\r\n FormFoxTestAN: number\r\n ApiRequestToken: string\r\n BaseUrl: string\r\n AccountID: number\r\n Email: string\r\n SendSelectClinicLink: boolean\r\n MarketplaceAuthNum: string\r\n PersonID: number\r\n TestReason: string\r\n TestDetailIDs: number[],\r\n TestDetailClinicalIDs: number[]\r\n}\r\n\r\nexport default class OrderFinish extends Component {\r\n orderObj?: OrderData = undefined\r\n TestDetailIDs: number[] = []\r\n TestDetailClinicalIDs: number[] = []\r\n authorizationID?: number\r\n servicesOrderedList: ServiceOrderedModel[] = []\r\n siteSelected: boolean = false\r\n\r\n constructor(props: OrderFinishProps) {\r\n super(props)\r\n\r\n this.getSavedOrder()\r\n\r\n this.state = {\r\n step: 3,\r\n authorizationID: this.authorizationID,\r\n emailItems: [\"\"],\r\n mobileItems: [\"\"],\r\n sendingEmail: false,\r\n sendingText: false\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n localStorage.removeItem(StorageKey.CanViewOrderFinish)\r\n localStorage.removeItem(StorageKey.OrderedServices)\r\n localStorage.removeItem(StorageKey.OrderDonorSiteSelect)\r\n }\r\n\r\n handlePrintClick = (): void => {\r\n const params = {\r\n PersonID: this.orderObj?.PersonID,\r\n VendorID: this.orderObj?.VendorID,\r\n XMLFile: this.orderObj?.OrderXML,\r\n SendToEmail: false,\r\n EmailAddress: [],\r\n TestDetailIDs: this.TestDetailIDs,\r\n TestDetailClinicalIDs: this.TestDetailClinicalIDs\r\n }\r\n OrderReportPrintObservable(params).subscribe(\r\n (data) => this.print(data),\r\n error => toast.error(error)\r\n )\r\n }\r\n\r\n print(base64pdf: string) {\r\n const pdfWindow = window.open(\"\")\r\n if (pdfWindow) {\r\n pdfWindow.document.write(\"\")\r\n }\r\n }\r\n\r\n addEmail = (index: number, email: string = \"\") => {\r\n if (email !== this.state.emailItems[index]) {\r\n this.setState({ emailItems: [...this.state.emailItems, email] })\r\n }\r\n }\r\n\r\n removeEmail = (email: string, index: number) => {\r\n var array = [...this.state.emailItems]\r\n if (index > -1) {\r\n array.splice(index, 1)\r\n this.setState({ emailItems: array })\r\n }\r\n }\r\n\r\n changeEmail = (email: string, index: number) => {\r\n var array = [...this.state.emailItems]\r\n if (index > -1) {\r\n array[index] = email\r\n this.setState({ emailItems: array })\r\n }\r\n }\r\n\r\n sendEmail = () => {\r\n if (this.state.emailItems.filter(Boolean).length > 0) {\r\n if (Array.from(new Set(this.state.emailItems.map(value => value.toLowerCase()))).length !== this.state.emailItems.length) {\r\n toast.error(\"Duplicate email address is present in the list.\")\r\n return\r\n }\r\n const params = {\r\n TestDetailID: this.orderObj ? this.orderObj.DrugTestDetailID > 0 ? this.orderObj.DrugTestDetailID : this.orderObj.AlcoholTestDetailID > 0 ? this.orderObj.AlcoholTestDetailID : this.orderObj.PhysicalTestDetailID > 0 ? this.orderObj.PhysicalTestDetailID : this.orderObj.POCTTestDetailID > 0 ? this.orderObj.POCTTestDetailID : 0 : 0,\r\n EmailAddress: this.state.emailItems,\r\n Message: this.orderObj?.Message || \"\",\r\n TestDetailIDs: this.TestDetailIDs,\r\n TestDetailClinicalIDs: this.TestDetailClinicalIDs,\r\n PersonID: this.orderObj?.PersonID,\r\n VendorID: this.orderObj?.VendorID,\r\n XMLFile: this.orderObj?.OrderXML\r\n }\r\n this.setState({ sendingEmail: true })\r\n SendEmailObservable(params).subscribe(\r\n (response) => toast.success(response),\r\n (response) => toast.error(response),\r\n () => this.setState({ sendingEmail: false })\r\n )\r\n }\r\n else {\r\n toast.error(\"Please enter email address.\")\r\n }\r\n }\r\n\r\n isEmailValid = (value: string): boolean => {\r\n if (value.length === 0) {\r\n return true\r\n }\r\n return EmailRegexp.test(value)\r\n }\r\n\r\n canAddEmail = (email: string): boolean => email.length > 0 && this.isEmailValid(email)\r\n\r\n addMobile = (index: number, phone: string = \"\") => {\r\n if (phone !== this.state.mobileItems[index]) {\r\n this.setState({ mobileItems: [...this.state.mobileItems, phone] })\r\n }\r\n }\r\n\r\n removeMobile = (phone: string, index: number) => {\r\n var array = [...this.state.mobileItems]\r\n if (index > -1) {\r\n array.splice(index, 1)\r\n this.setState({ mobileItems: array })\r\n }\r\n }\r\n\r\n changeMobile = (phone: string, index: number) => {\r\n var array = [...this.state.mobileItems]\r\n if (index > -1) {\r\n array[index] = phone\r\n this.setState({ mobileItems: array })\r\n }\r\n }\r\n\r\n sendText = () => {\r\n if (this.state.mobileItems.filter(Boolean).length > 0) {\r\n if (Array.from(new Set(this.state.mobileItems.map(value => value.toLowerCase()))).length !== this.state.mobileItems.length) {\r\n toast.error(\"Duplicate mobile number is present in the list.\")\r\n return\r\n }\r\n\r\n if (!!this.props.isSSO) {\r\n const params = {\r\n EmailAddress: this.state.mobileItems,\r\n FormFoxTestAN: this.state.authorizationID || 0,\r\n PersonID: 0,\r\n VendorID: 0,\r\n SendToEmail: false,\r\n SendText: true\r\n }\r\n this.setState({ sendingText: true })\r\n AuthFormProcessObservable(params).subscribe(\r\n data => toast.success(\"Text sent successfully\"),\r\n error => toast.error(FormatError(error))\r\n )\r\n this.setState({ sendingText: false })\r\n }\r\n else {\r\n const params = {\r\n TestDetailID: this.orderObj?.DrugTestDetailID || this.orderObj?.AlcoholTestDetailID || this.orderObj?.PhysicalTestDetailID || this.orderObj?.POCTTestDetailID || 0,\r\n EmailAddress: this.state.mobileItems,\r\n Message: this.orderObj?.Message || \"\",\r\n TestDetailIDs: this.TestDetailIDs,\r\n TestDetailClinicalIDs: this.TestDetailClinicalIDs,\r\n }\r\n this.setState({ sendingText: false })\r\n SendMessageObservable(params).subscribe(\r\n () => toast.success(\"Text sent successfully\"),\r\n (err) => toast.error(\"No data found\"),\r\n () => this.setState({ sendingText: false })\r\n )\r\n }\r\n }\r\n else {\r\n toast.error(\"Please enter mobile number.\")\r\n }\r\n }\r\n isPhoneValid = (value: string): boolean => value.length === 0 || PhoneRegexp.test(value)\r\n canAddMobile = (mobile: string): boolean => mobile.length > 0 && this.isPhoneValid(mobile)\r\n\r\n getSavedOrder(): void {\r\n const orderDonorSiteSelect = localStorage.getItem(StorageKey.OrderDonorSiteSelect) || \"\"\r\n this.siteSelected = orderDonorSiteSelect === \"\" || !JSON.parse(orderDonorSiteSelect)\r\n const data = localStorage.getItem(StorageKey.SavedOrderData)\r\n\r\n if (!data) {\r\n return\r\n }\r\n const savedOrderData: OrderData = JSON.parse(data)\r\n if (Array.isArray(savedOrderData)) {\r\n this.orderObj = savedOrderData[0]\r\n }\r\n else {\r\n this.orderObj = savedOrderData\r\n }\r\n if (this.orderObj) {\r\n if (this.orderObj.FormFoxTestAN) {\r\n this.authorizationID = this.orderObj.FormFoxTestAN\r\n }\r\n this.TestDetailIDs = []\r\n if (this.orderObj.AlcoholTestDetailIDList && this.orderObj.AlcoholTestDetailIDList.length > 0) {\r\n this.TestDetailIDs = this.TestDetailIDs.concat(this.orderObj.AlcoholTestDetailIDList)\r\n }\r\n if (this.orderObj.DrugTestDetailIDList && this.orderObj.DrugTestDetailIDList.length > 0) {\r\n this.TestDetailIDs = this.TestDetailIDs.concat(this.orderObj.DrugTestDetailIDList)\r\n }\r\n if (this.orderObj.POCTTestDetailIDList && this.orderObj.POCTTestDetailIDList.length > 0) {\r\n this.TestDetailIDs = this.TestDetailIDs.concat(this.orderObj.POCTTestDetailIDList)\r\n }\r\n if (this.orderObj.PhysicalTestDetailID) {\r\n this.TestDetailIDs.push(this.orderObj.PhysicalTestDetailID)\r\n }\r\n if (this.orderObj.ClinicalTestDetailIDList && this.orderObj.ClinicalTestDetailIDList.length > 0) {\r\n this.TestDetailClinicalIDs = this.TestDetailClinicalIDs.concat(this.orderObj.ClinicalTestDetailIDList)\r\n }\r\n }\r\n\r\n const savedServices = localStorage.getItem(StorageKey.OrderedServices)\r\n if (savedServices && savedServices.length) {\r\n this.servicesOrderedList = JSON.parse(savedServices)\r\n }\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n finishOrder = () => {\r\n const token = GetSSOToken()\r\n const sendLink = this.orderObj?.SendSelectClinicLink || false\r\n\r\n if (token != \"\" || sendLink) {\r\n const data: FinishData = {\r\n FormFoxTestAN: this.authorizationID || 0,\r\n ApiRequestToken: token,\r\n BaseUrl: FullBaseUrl(),\r\n AccountID: this.orderObj?.AccountID || 0,\r\n Email: this.orderObj?.Email || \"\",\r\n SendSelectClinicLink: sendLink,\r\n MarketplaceAuthNum: this.orderObj?.MarketplaceAuthNum?.toString() || \"\",\r\n PersonID: this.orderObj?.PersonID || 0,\r\n TestReason: this.orderObj?.TestReasonDescription || \"\",\r\n TestDetailIDs: this.TestDetailIDs,\r\n TestDetailClinicalIDs: this.TestDetailClinicalIDs\r\n }\r\n\r\n OrderFinishObservable(data).subscribe(\r\n data => {\r\n toast.success(data)\r\n this.returnToStart()\r\n },\r\n error => this.handleAPIError(error, {})\r\n )\r\n }\r\n else {\r\n this.returnToStart()\r\n }\r\n }\r\n\r\n returnToStart = () => {\r\n const props = this.props as RouteComponentProps\r\n const returnToSelectionInbox = localStorage.getItem(StorageKey.FromSelectionInbox) === \"true\"\r\n localStorage.removeItem(StorageKey.OrderedServices)\r\n localStorage.removeItem(StorageKey.SavedOrderData)\r\n localStorage.removeItem(StorageKey.FromSelectionInbox)\r\n props.history.push(returnToSelectionInbox ? SelectionInboxRoute : OrderRoute)\r\n }\r\n\r\n render() {\r\n const headerSteps: StepData[] = [{\r\n title: '1',\r\n disabled: true,\r\n current: this.state.step === 1,\r\n onClick: () => this.setState({ step: 1 })\r\n },{\r\n title: '2',\r\n disabled: true,\r\n current: this.state.step === 2,\r\n onClick: () => this.setState({ step: 2 })\r\n },{\r\n title: '3',\r\n disabled: false,\r\n current: this.state.step === 3,\r\n onClick: () => this.setState({ step: 3 })\r\n }\r\n ]\r\n\r\n const serviceTypesList = this.servicesOrderedList.map((service: ServiceOrderedModel) => IsServiceCodePOCT(service.serviceCode) ? \"POCT\" : service.serviceTypeCode)\r\n const serviceTypesString = serviceTypesList.filter((item, index) => serviceTypesList.indexOf(item) === index).join(', ').replace(/, ([^,]*)$/, ' AND $1')\r\n\r\n if (!!this.props.isFFOrder)\r\n return (\r\n \r\n \r\n Your order has been updated.\r\n \r\n \r\n )\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n { !this.props.isSSO && }\r\n \r\n \r\n \r\n

\r\n { serviceTypesString }\r\n AUTHORIZATION # \r\n ({ this.state.authorizationID })\r\n

\r\n \r\n
\r\n \r\n \r\n { !this.props.isSSO && \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n { this.servicesOrderedList.map((service: ServiceOrderedModel, index: number) => \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n { !this.servicesOrderedList?.length && }\r\n \r\n
SERVICE TYPE ACCOUNTTEST TO BE PERFORMED
{service.serviceTypeCode}\r\n \r\n {service.labAccountDesc}\r\n {service.testToPerformDesc}\r\n
NO DATA FOUND
}\r\n {!this.props.isSSO && Count: {this.servicesOrderedList?.length}}\r\n {this.siteSelected && Your order has been placed. Please choose from the following options to send authorization form.}\r\n {this.siteSelected && \r\n Print form:\r\n \r\n }\r\n { this.siteSelected && this.state.emailItems.map((email, index) => \r\n \r\n { index === 0 && \"Email form:\" }\r\n \r\n \r\n this.changeEmail(e.target.value, index) } readOnly={ this.state.emailItems.length !== index + 1 } isInvalid={ !this.isEmailValid(email) } />\r\n \r\n \r\n { this.state.emailItems.length === index + 1 ? : }\r\n \r\n \r\n ) }\r\n {this.siteSelected && \r\n \r\n this.isEmailValid(email))} spin={this.state.sendingEmail} disableOnSpin>Send Email\r\n }\r\n {this.siteSelected && this.state.mobileItems.map((mobile, index) => \r\n \r\n { index === 0 && \"Text form:\" }\r\n \r\n \r\n this.changeMobile(value, index)} readOnly={ this.state.mobileItems.length !== index + 1 } isInvalid={ !this.isPhoneValid(mobile) } />\r\n \r\n \r\n { this.state.mobileItems.length === index + 1 ? : }\r\n \r\n \r\n ) }\r\n {this.siteSelected && \r\n \r\n this.isPhoneValid(mobile)) } spin={this.state.sendingText} disableOnSpin>Send Text\r\n }\r\n \r\n {!this.props.isSSO && }\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport OrderReportPrintParams from \"./OrderRequestsModel/OrderReportPrintParams\"\r\n\r\nexport default function OrderReportPrintObservable(params: OrderReportPrintParams): Observable {\r\n const requestBody: string = JSON.stringify({\r\n SendToEmail: false,\r\n EmailAddress: [],\r\n TestDetailIDs: params.TestDetailIDs,\r\n TestDetailClinicalIDs: params.TestDetailClinicalIDs,\r\n PersonID: params.PersonID,\r\n VendorID: params.VendorID,\r\n XMLFile: params.XMLFile,\r\n ClientDetails: {\r\n // TODO: ContactID: VALUESTORAGE.CONTACT_ID\r\n },\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceReport/AuthorizationFormReport\", requestBody)\r\n}","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport OrderReportPrintParams from \"./OrderRequestsModel/OrderReportPrintParams\"\r\n\r\nexport default function SendEmailObservable(params: OrderReportPrintParams): Observable {\r\n const requestBody: string = JSON.stringify({\r\n SendToEmail: true,\r\n EmailAddress: params.EmailAddress,\r\n TestDetailIDs: params.TestDetailIDs,\r\n TestDetailClinicalIDs: params.TestDetailClinicalIDs,\r\n PersonID: params.PersonID,\r\n VendorID: params.VendorID,\r\n XMLFile: params.XMLFile,\r\n ClientDetails: {\r\n // TODO: ContactID: VALUESTORAGE.CONTACT_ID\r\n },\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceReport/AuthorizationFormReport\", requestBody)\r\n}","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport SendTextMessage from \"./OrderRequestsModel/SendTextMessage\"\r\nimport SentTextMessage from \"./OrderRequestsModel/SentTextMessage\"\r\n\r\nexport default function SendMessageObservable(params: SendTextMessage): Observable {\r\n const requestBody: string = JSON.stringify({\r\n EmailAddress: params.EmailAddress,\r\n Message: params.Message,\r\n TestDetailIDs: params.TestDetailIDs,\r\n TestDetailID: params.TestDetailID ,\r\n TestDetailClinicalIDs: params.TestDetailClinicalIDs,\r\n ClientDetails: {\r\n // TODO: ContactID: VALUESTORAGE.CONTACT_ID\r\n },\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceOrder/SendTextMessage\", requestBody)\r\n}\r\n","import { AccountTypeID } from \"../../config/Constants\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { OrderResultsGridRequest } from \"./OrderResultModel/OrderResultGridRequest\"\r\nimport { OrderResultGridResponse } from \"./OrderResultModel/OrderResultGridResponse\"\r\n\r\nfunction columnFilters(options: OrderResultsGridRequest) {\r\n const filters = options.filters || []\r\n return {\r\n AuthorizationID: filters.find(filter => filter.column === \"AuthorizationID\")?.values || [],\r\n Clinic: filters.find(filter => filter.column === \"Clinic\")?.values || [],\r\n Company: filters.find(filter => filter.column === \"Company\")?.values || [],\r\n EventDate: filters.find(filter => filter.column === \"EventDate\")?.values || [],\r\n CollectionTime: filters.find(filter => filter.column === \"CollectionTime\")?.values || [],\r\n IDNumber: filters.find(filter => filter.column === \"IDNumber\")?.values || [],\r\n LabAccountNumber: filters.find(filter => filter.column === \"LabAccountNumber\")?.values || [],\r\n Location: filters.find(filter => filter.column === \"Location\")?.values || [],\r\n Name: filters.find(filter => filter.column === \"Name\")?.values || [],\r\n OrderDate: filters.find(filter => filter.column === \"OrderDate\")?.values || [],\r\n OrderedBy: filters.find(filter => filter.column === \"OrderedBy\")?.values || [],\r\n OrderUpdatedAt: filters.find(filter => filter.column === \"OrderUpdatedAt\")?.values || [],\r\n OrderUpdatedBy: filters.find(filter => filter.column === \"OrderUpdatedBy\")?.values || [],\r\n RAImageID: filters.find(filter => filter.column === \"RAImageID\")?.values || [],\r\n Reason: filters.find(filter => filter.column === \"Reason\")?.values || [],\r\n Region: filters.find(filter => filter.column === \"Region\")?.values || [],\r\n Regulated: filters.find(filter => filter.column === \"Regulated\")?.values || [],\r\n ReportDate: filters.find(filter => filter.column === \"ReportDate\")?.values || [],\r\n Result: filters.find(filter => filter.column === \"Result\")?.values || [],\r\n SampleID: filters.find(filter => filter.column === \"SampleID\")?.values || [],\r\n Service: filters.find(filter => filter.column === \"Service\")?.values || [],\r\n MarketPlaceOrderNum: filters.find(filter => filter.column === \"MarketPlaceOrderNum\")?.values || [],\r\n\r\n }\r\n}\r\n\r\nfunction gridParams(options: OrderResultsGridRequest, accountTypeID: number): string {\r\n return JSON.stringify({\r\n AccountTypeID: accountTypeID,\r\n ColumnFilters: columnFilters(options),\r\n DateFrom: \"1/01/0001 00:00:00\",\r\n DateTo: \"1/01/0001 00:00:00\",\r\n ExportDateFrom: options.exportDateFrom,\r\n ExportDateTo: options.exportDateTo,\r\n Exact: false,\r\n Filters: {\r\n Company: [],\r\n DateRange: \"\",\r\n DateType: \"\",\r\n EndDate: \"\",\r\n Location: [],\r\n Reason: [],\r\n Region: [],\r\n Regulated: \"Regulated & Non-Regulated\",\r\n Service: [],\r\n StartDate: \"\",\r\n Status: \"In Process\"\r\n },\r\n InProcessStatus: true,\r\n IsMarketPlace: true,\r\n IsReviewed: options.complete,\r\n IncludeArchived: options.includeArchived,\r\n Mask: options.text || \"\",\r\n PageNumber: options.pageNumber,\r\n PageSize: options.pageSize || 20,\r\n Pending: true,\r\n SearchBy: options.field || \"AllIDs\",\r\n SortGrid: { SortColumn: options.sort?.column || \"\", SortOrder: options.sort?.order.toUpperCase() === \"DESC\" ? \"DSC\" : options.sort?.order.toUpperCase() },\r\n Type: \"All\"\r\n })\r\n}\r\n\r\nfunction printParams(options: OrderResultsGridRequest, accountTypeID: number) {\r\n const request = JSON.stringify({\r\n AccountTypeID: accountTypeID,\r\n ColumnFilters: columnFilters(options),\r\n Filters: {\r\n Company: [],\r\n Location: [],\r\n Reason: [],\r\n Region: [],\r\n Service: [],\r\n Status: \"In Process\"\r\n },\r\n IsSearch: !!options.text,\r\n SearchBy: options.field || \"AllIDs\",\r\n SearchString: options.text || \"\",\r\n TrackPersonID: options.print || []\r\n })\r\n return request\r\n}\r\n\r\nexport const ResultsGridObservable = (params: OrderResultsGridRequest, accountTypeID: number = AccountTypeID) => ObservableFromFetch(\"WorkforceTrack/GetColumnTrackingGrid\", gridParams(params, accountTypeID))\r\nexport const OrderResultsExportCsv = (params: OrderResultsGridRequest, accountTypeID: number = AccountTypeID) => ObservableFromFetch(\"WorkforceTrack/ExportTrackRecord\", gridParams(params, accountTypeID))\r\nexport const OrderResultsPrint = (params: OrderResultsGridRequest, accountTypeID: number = AccountTypeID) => ObservableFromFetch(\"WorkforceTrack/PrintTrackRecord\", printParams(params, accountTypeID))\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function ResultsWatchObservable(testEventIDs: number[], modifiedBy: string): Observable {\r\n const params: string = JSON.stringify({\r\n TestEventIDS: testEventIDs.map(testEventID => ({ TestEventID: testEventID })),\r\n ModifiedBy: modifiedBy\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderWatchResolve/Watch\", params)\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport SearchField from \"../SearchField\"\r\n\r\nexport const SearchFieldsGet = () => ObservableFromFetch(\"RandomTest/GetEventSearchDropdowns\")","import { TestToProcess } from \"../../components/OrderResults/CompleteModal\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function CompleteTest(test: TestToProcess) {\r\n const requestBody: string = JSON.stringify({\r\n TestDetailID: test.TestDetailID,\r\n TestDetailClinicalID: test.TestDetailClinicalID,\r\n PersonID: test.PersonID,\r\n HireDate: FormatDate(test.HireDate),\r\n PoolID: test.PoolID,\r\n Images: test.Images\r\n })\r\n return ObservableFromFetch(\"WorkforceTrack/CompleteTest\", requestBody)\r\n}\r\n\r\nexport function UnarchiveTest(test: TestToProcess) {\r\n const requestBody: string = JSON.stringify({\r\n TestDetailID: test.TestDetailID,\r\n TestDetailClinicalID: test.TestDetailClinicalID,\r\n PersonID: test.PersonID\r\n })\r\n return ObservableFromFetch(\"WorkforceTrack/UnarchiveTest\", requestBody)\r\n}","export enum Status {\r\n None = 0, // No Color\r\n Completed = 1, // Green\r\n InProcess = 2, // Yellow\r\n Alert = 3, // Red\r\n NoStatus = 4, // Grey\r\n Cancelled = 5, // Grey\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Button, Col, Container, Form, Modal, Row } from \"react-bootstrap\"\r\nimport DatePicker from 'react-datepicker'\r\nimport { Subscription } from \"rxjs\"\r\nimport 'react-datepicker/dist/react-datepicker.css'\r\nimport { BirthdayInput } from \"../FormattedInputs/BirthdayInput\"\r\nimport { toast } from \"react-toastify\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport CompanyPoolsGet, { CompanyPool } from \"../../api/OrderResults/CompanyPoolsGet\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport CompleteTest, { UnarchiveTest } from \"../../api/OrderResults/CompleteTest\"\r\n\r\nexport interface TestToProcess {\r\n TestEventID?: number\r\n TestDetailID: string\r\n TestDetailClinicalID: string\r\n PersonID: number\r\n HireDate: Date | undefined\r\n PoolID: number | string | null\r\n Images: string[]\r\n DonorName?: string\r\n AuthorizationID?: string\r\n}\r\n\r\ninterface CompleteModalProps {\r\n selectedTests: TestToProcess[]\r\n unarchive: boolean\r\n show: boolean\r\n onHide: () => void\r\n onSave: () => void\r\n}\r\n\r\ninterface CompleteModalState {\r\n currentTest: TestToProcess\r\n hireDate: Date | undefined\r\n pools: CompanyPool[]\r\n saving: boolean\r\n didHire: boolean | undefined\r\n showHireModal: boolean\r\n showCompleteModal: boolean\r\n testsToProcess: TestToProcess[]\r\n processedTests: TestToProcess[]\r\n currentDonorIndex: number\r\n}\r\n\r\n\r\nexport default class CompleteModal extends Component {\r\n state: CompleteModalState = {\r\n pools: [],\r\n hireDate: undefined,\r\n saving: false,\r\n didHire: undefined,\r\n currentTest: this.props.selectedTests[0],\r\n currentDonorIndex: 0,\r\n showHireModal: this.props.selectedTests.length !== 1,\r\n showCompleteModal: this.props.selectedTests.length === 1,\r\n testsToProcess: this.props.selectedTests,\r\n processedTests: []\r\n }\r\n\r\n hiredate = React.createRef()\r\n poolSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.poolSubscription = CompanyPoolsGet(this.state.testsToProcess[0]?.TestEventID || 0).subscribe(\r\n (data) => this.setState({ pools: data }),\r\n (error) => this.handleAPIError(error, {})\r\n )\r\n this.completeAllTests(0)\r\n }\r\n\r\n componentWillUnmount() {\r\n this.poolSubscription && this.poolSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n handlePoolChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value\r\n this.setState({ currentTest: { ...this.state.currentTest, PoolID: value } })\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n onCancelHireModal = () => {\r\n this.setState({ showHireModal: false })\r\n this.props.onHide()\r\n }\r\n\r\n onSubmitHireModal = () => {\r\n if (this.state.didHire) {\r\n this.setState({ showCompleteModal: true })\r\n }\r\n else {\r\n this.setState({ saving: true })\r\n this.completeAllTests(0)\r\n }\r\n }\r\n\r\n completeTest = () => {\r\n this.setState({ saving: true })\r\n const { currentTest } = this.state\r\n\r\n const testToComplete: TestToProcess = {\r\n TestDetailID: currentTest.TestDetailID,\r\n TestDetailClinicalID: currentTest.TestDetailClinicalID,\r\n PersonID: currentTest.PersonID,\r\n HireDate: this.state.hireDate,\r\n PoolID: currentTest.PoolID || null,\r\n Images: currentTest.Images || []\r\n }\r\n\r\n this.saveSubscription = CompleteTest(testToComplete).subscribe(\r\n (data) => {\r\n toast.success(\"Test was successfully marked archived.\")\r\n this.setState({ saving: false, processedTests: [ ...this.state.processedTests, testToComplete ] })\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n completeAllTests = (currentIndex: number) => {\r\n const currentTest = this.state.testsToProcess[currentIndex]\r\n const testToComplete: TestToProcess = {\r\n TestDetailID: currentTest.TestDetailID,\r\n TestDetailClinicalID: currentTest.TestDetailClinicalID,\r\n PersonID: currentTest.PersonID,\r\n HireDate: undefined,\r\n PoolID: 0,\r\n Images: []\r\n }\r\n\r\n if (!!this.props.unarchive) {\r\n this.saveSubscription = UnarchiveTest(testToComplete).subscribe(\r\n (data) => {\r\n if (currentIndex + 1 === this.state.testsToProcess.length) {\r\n toast.success(\"Tests were successfully unarchived.\")\r\n this.setState({ showHireModal: false, saving: false })\r\n this.props.onHide()\r\n this.props.onSave()\r\n }\r\n else this.completeAllTests(currentIndex + 1)\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n else {\r\n this.saveSubscription = CompleteTest(testToComplete).subscribe(\r\n (data) => {\r\n if (currentIndex + 1 === this.state.testsToProcess.length) {\r\n toast.success(\"Tests were successfully marked archived.\")\r\n this.setState({ showHireModal: false, saving: false })\r\n this.props.onHide()\r\n this.props.onSave()\r\n }\r\n else this.completeAllTests(currentIndex + 1)\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n }\r\n\r\n onSubmit = () => {\r\n this.completeTest()\r\n }\r\n\r\n onCancel = () => {\r\n const { testsToProcess, currentDonorIndex } = this.state\r\n if (testsToProcess.length === 1 || currentDonorIndex + 1 === testsToProcess.length) {\r\n this.props.onHide()\r\n this.props.onSave()\r\n }\r\n else {\r\n const newDonorIndex = currentDonorIndex + 1\r\n const newDonorTest = this.state.testsToProcess[newDonorIndex]\r\n const testForSameDonor = this.state.processedTests.find(item => item.PersonID === newDonorTest.PersonID && item.HireDate)\r\n const hireDate = testForSameDonor?.HireDate ? testForSameDonor.HireDate : undefined\r\n this.setState({ currentTest: { ...newDonorTest}, currentDonorIndex: newDonorIndex, hireDate: hireDate })\r\n }\r\n }\r\n\r\n render() {\r\n const { testsToProcess, currentTest, pools, currentDonorIndex, showHireModal, showCompleteModal, processedTests, hireDate } = this.state\r\n const lastDonor = currentDonorIndex + 1 === testsToProcess.length\r\n const testForSameDonor = processedTests.some(item => item.PersonID === currentTest.PersonID && item.TestDetailID !== currentTest.TestDetailID && item.HireDate)\r\n return (\r\n <>\r\n \r\n )\r\n }\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport interface CompanyPool {\r\n PoolID: number\r\n PoolName: string\r\n}\r\n\r\nexport default function CompanyPoolsGet(testEventId: number) {\r\n const requestBody: string = JSON.stringify({\r\n TestEventID: testEventId\r\n })\r\n return ObservableFromFetch(\"WorkforceRandomTest/GetCompanyPools\", requestBody)\r\n}\r\n","export default \"data:image/png;base64,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\"","import React from \"react\"\r\nimport { Container, Row, Col } from \"react-bootstrap\"\r\nimport OrderResultRecord from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport Stage, { StatusDetail, Collect } from \"../../api/OrderResults/OrderResultModel/Stage\"\r\nimport { Status } from \"../../api/OrderResults/OrderResultModel/Status\"\r\nimport ImageOrderExpired from \"../../assets/images/order-expired.png\"\r\n\r\nconst stepStatusColor = (stage: Stage, showCompleteOrders: boolean) => {\r\n // TODO: code below was ported from angular application, refactor into meaningful class names (e.g. success, warning error etc)\r\n if (stage.Status === Status.None) {\r\n return \"status-none\"\r\n }\r\n if (stage.Status === Status.Completed) {\r\n return showCompleteOrders ? \"status-completed-close\": \"status-completed\"\r\n }\r\n if (stage.Status === Status.InProcess) {\r\n return \"status-in-progress\"\r\n }\r\n if (stage.Status === Status.Alert) {\r\n return \"status-alert\"\r\n }\r\n if (stage.Status === Status.Cancelled) {\r\n return \"status-no-status\"\r\n }\r\n if ((stage.Status === Status.NoStatus) || (showCompleteOrders && stage.Status !== Status.Completed)) {\r\n return \"status-no-status\"\r\n }\r\n}\r\n\r\nexport default function GridStatusInfo(props: {value: OrderResultRecord, showCompleteOrders: boolean}) {\r\n if (!props.value.Stages) {\r\n return <>\r\n }\r\n\r\n function isCollect(statusDetail: StatusDetail | undefined): statusDetail is Collect {\r\n return statusDetail !== undefined && 'SiteName' in statusDetail && 'SiteAddress' in statusDetail && 'CollectionDate' in statusDetail && 'CollectionStatus' in statusDetail;\r\n }\r\n const stages: Stage[] = props.value.Stages\r\n const complete = props.showCompleteOrders\r\n const scheduleStatusId = props.value.ScheduleStatusID\r\n const testEventStatus = props.value.TestEventStatus\r\n const testDetailClinicalId = props.value.TestDetailClinicalID || \"\"\r\n const showEventStatus = (scheduleStatusId > 0) && (testDetailClinicalId != \"\") && (testEventStatus === \"Cancelled\")\r\n const collect = stages.find((s: Stage) => s.Name === \"Collect\")?.StatusDetail\r\n const collectDetail = collect !== undefined && isCollect(collect) ? collect.CollectionStatus : undefined\r\n const extraStatus = scheduleStatusId == 11 ? testEventStatus : props.value.ColStatus !== \"\" && collectDetail != \"Collected\" ? props.value.ColStatus : \"\"\r\n let shownStage = stages.find((stage: Stage) => stage.Status === Status.Completed)\r\n const isOrderExpired = props.value.IsExpired\r\n const expirationDate = props.value.ExpirationDate || \"\"\r\n\r\n if (!shownStage)\r\n shownStage = stages[stages.length - 1]\r\n \r\n return (\r\n <>\r\n \r\n {shownStage && shownStage.IsStatusVisible && \r\n \r\n {complete && shownStage.Status !== 1 ? 'X' : shownStage.Sequence}\r\n {showEventStatus ? testEventStatus : shownStage.StatusDetail.Description}\r\n {(scheduleStatusId > 0) && !shownStage.StatusDetail.Detail ? extraStatus : shownStage.StatusDetail.Detail}\r\n \r\n {isOrderExpired && {\"Expired\"}}\r\n \r\n \r\n }\r\n {shownStage && !shownStage.IsStatusVisible && {shownStage.Name}}\r\n \r\n \r\n {stages.slice(-2).map((stage: Stage, key: number) => {\r\n if (stage.IsStatusVisible) {\r\n return (\r\n
\r\n \r\n {stage.Name}\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n } else {\r\n return {stage.Name}\r\n }\r\n })}\r\n
\r\n \r\n )\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Container, Modal, Row } from \"react-bootstrap\"\r\nimport OrderResultRecord from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport Stage, { Exam, Investigation, Notification, SiteAssigned, Laboratory, Screen, Collect, MRO, Confirm, POCT } from \"../../api/OrderResults/OrderResultModel/Stage\"\r\nimport { Status } from \"../../api/OrderResults/OrderResultModel/Status\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\n\r\nconst stageStatus = (status: Status): string => {\r\n switch (status.toString()) {\r\n case Status.None.toString(): return \"status-none\"\r\n case Status.Completed.toString(): return \"status-completed\"\r\n case Status.InProcess.toString(): return \"status-in-progress\"\r\n case Status.Alert.toString(): return \"status-alert\"\r\n case Status.NoStatus.toString(): return \"status-no-status\"\r\n default: return \"\"\r\n }\r\n}\r\n\r\ninterface ModalStatusInfoProps {\r\n details: OrderResultRecord\r\n onHide: () => void\r\n}\r\n\r\nexport default class ModalStatusInfo extends Component {\r\n render() {\r\n const renderStatus = (status: OrderResultRecord) => {\r\n if (!status.Stages) {\r\n return <>\r\n }\r\n return status.Stages.map((stage: Stage, key: number) => {\r\n let fields = []\r\n const header = (label: string) => {label}\r\n const field = (label: string, value: string | number): JSX.Element | null => value ? {label}: {value} : null\r\n if (stage.Name === \"Investigation\") {\r\n const detail = stage.StatusDetail as Investigation\r\n fields.push(header(\"INVESTIGATION\"))\r\n fields.push(field(\"Title\", detail.Title))\r\n fields.push(field(\"Date Order\", FormatDate(detail.DateOrder)))\r\n fields.push(field(\"Reference ID\", detail.ReferenceID))\r\n fields.push(field(\"Processed By\", detail.ProcessedBy))\r\n }\r\n if (stage.Name === \"Exam\") {\r\n const detail = stage.StatusDetail as Exam\r\n fields.push(header(\"EXAM\"))\r\n fields.push(field(\"Title\", detail.Title))\r\n fields.push(field(\"Site Name\", detail.SiteName))\r\n fields.push(field(\"Site Address\", detail.SiteAddress))\r\n fields.push(field(\"Collection Date\", FormatDate(detail.CollectionDate)))\r\n fields.push(field(\"Status\", detail.Status))\r\n }\r\n if (stage.Name === \"Notification\") {\r\n const detail = stage.StatusDetail as Notification\r\n fields.push(header(\"NOTIFICATION\"))\r\n fields.push(field(\"Title\", detail.Title))\r\n fields.push(field(\"Notification Date\", FormatDate(detail.NotificationDate)))\r\n fields.push(field(\"Recipient\", detail.Recipient))\r\n fields.push(field(\"Method\", detail.Method))\r\n }\r\n if (stage.Name === \"Site Assigned\") {\r\n const detail = stage.StatusDetail as SiteAssigned\r\n fields.push(header(\"SITE ASSIGNED\"))\r\n fields.push(field(\"Title\", detail.Title))\r\n fields.push(field(\"Site Name\", detail.SiteName))\r\n fields.push(field(\"Site Address\", detail.SiteAddress))\r\n }\r\n if (stage.Name === \"Laboratory\") {\r\n const detail = stage.StatusDetail as Laboratory\r\n fields.push(header(\"LABORATORY\"))\r\n fields.push(field(\"Title\", detail.Title))\r\n fields.push(field(\"Laboratory Name\", detail.LaboratoryName))\r\n fields.push(field(\"Date Received\", FormatDate(detail.DateReceived)))\r\n fields.push(field(\"Report Date\", FormatDate(detail.ReportDate)))\r\n }\r\n if (stage.Name === \"MRO\") {\r\n const detail = stage.StatusDetail as MRO\r\n fields.push(header(\"MRO\"))\r\n fields.push(field(\"Title\", detail.Title))\r\n fields.push(field(\"Date Received\", FormatDate(detail.DateReceived)))\r\n fields.push(field(\"MRO Status\", detail.MROStatus))\r\n }\r\n if (stage.Name === \"Collect\") {\r\n const detail = stage.StatusDetail as Collect\r\n fields.push(header(\"COLLECT\"))\r\n fields.push(field(\"Title\", detail.Title))\r\n fields.push(field(\"Site Name\", detail.SiteName))\r\n fields.push(field(\"Site Address\", detail.SiteAddress))\r\n fields.push(field(\"Collection Date\", FormatDate(detail.CollectionDate)))\r\n fields.push(field(\"Collection Status\", detail.CollectionStatus))\r\n }\r\n if (stage.Name === \"Screen\") {\r\n const detail = stage.StatusDetail as Screen\r\n fields.push(header(\"SCREEN\"))\r\n fields.push(field(\"Title\", detail.Title))\r\n fields.push(field(\"Site Name\", detail.SiteName))\r\n fields.push(field(\"Site Address\", detail.SiteAddress))\r\n fields.push(field(\"Collection Date\", FormatDate(detail.CollectionDate)))\r\n }\r\n if (stage.Name === \"Confirm\") {\r\n const detail = stage.StatusDetail as Confirm\r\n fields.push(header(\"CONFIRM\"))\r\n fields.push(field(\"Title\", detail.Title))\r\n fields.push(field(\"Site Name\", detail.SiteName))\r\n fields.push(field(\"Site Address\", detail.SiteAddress))\r\n fields.push(field(\"Collection Date\", FormatDate(detail.CollectionDate)))\r\n }\r\n if (stage.Name === \"POCT\") {\r\n const detail = stage.StatusDetail as POCT\r\n fields.push(header(\"POCT Reported\"))\r\n fields.push(field(\"Title\", detail.Title))\r\n }\r\n return (\r\n 0 ? \"pb-3\" : \"\"}>\r\n {fields}\r\n \r\n )\r\n })\r\n }\r\n const status = this.props.details\r\n return (\r\n \r\n \r\n STATUS INFORMATION\r\n \r\n \r\n {status ? renderStatus(status) : \"\"}\r\n \r\n \r\n )\r\n }\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\ninterface ImageRequest {\r\n TestImageID: number\r\n TestDetailID: string\r\n TestDetailClinicalID: string\r\n IsMarketPlace: boolean\r\n TestDescription: string\r\n}\r\n\r\nexport interface ImageData {\r\n Base64String: Base64String[]\r\n ImageType: string\r\n ExceptionMessage?: string\r\n}\r\n\r\nexport interface Base64String {\r\n Base64Strings: string\r\n ImageType: string\r\n Title: string\r\n}\r\n\r\nexport enum TestReleaseStatusID {\r\n PoctComplete = 5,\r\n PoctCompleteReleased = 6,\r\n LaboratoryTestingComplete = 8,\r\n LaboratoryTestingCompleteReleased = 9,\r\n MroReviewComplete = 11,\r\n MroReviewCompleteReleased = 12\r\n}\r\n\r\nexport default function ImageGet(request: ImageRequest) {\r\n const requestBody: string = JSON.stringify(request)\r\n return ObservableFromFetch(\"CCFImage/GetCCFImage\", requestBody)\r\n}\r\n\r\nexport function GenerateMROReport(testDetailID: string) {\r\n const requestBody: string = JSON.stringify({\r\n ReportKey: 1,\r\n PrintRecords: testDetailID\r\n })\r\n\r\n return ObservableFromFetch(\"Report/EventsReport\", requestBody)\r\n}\r\n\r\nexport function GetMROLetter(testDetailID: string) {\r\n const requestBody: string = JSON.stringify({\r\n PrintRecords: testDetailID\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceReport/MroLetter\", requestBody)\r\n}\r\n","export enum TestTypes {\r\n CRLCovidClearAntibody = \"CRL Covid Clear - Antibody\",\r\n CRLRapidResponseCovid = \"CRL Rapid Response - Covid\"\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAYCAYAAAD6S912AAAByElEQVQ4EbVVv2vCQBR+p7GzDkUcHNrJpYVCR13awd1/w1lwcOnmP+B/4NRgQZcOUhfXgoWK6CIZrIOCraSlQUzse9feeYlp8YQ+OO679+PLdy93CfM8bwN7WqVSgX6/T9mJVqv1FlYWQULYdzDGoF6vQyQSeQ0jI5/huu5vsR1/NBoF27ahVqtBLBajnSVM0/Qp1VboOA7QqFargA/YUXqQQiG9XC6DYRhcKbaCKzWof/sa9g7G47EvvVAoQLPZJKWMAloKi8Wij0wshsOhgKClUFYFACkXpqVQFAVnH6FOD4NEYu0j1DmHgiA40/kUJnu4Mk3wJhPh15pPBwN4BrihImZZFr/LT9ksHB9IqD5dKvxE74caQXy1XnNPxzB8+Prnuj4oWxWl8i2/o2fbCYCLdhvukIjsrNGQmNaz2Qy6qRTBHZN32dlsuEJSScNNp+V6FY9LTLHlcgnneJhFrjpLhTYmfm8QAdp9JgOX3S7HnVxO4kfE8/kcaA4zhh9M/lJu83k4enkJy9HybRXiltUearEoyazX63GF0+lUcetB+jiUSqUTrHKkwmQyqceiZC8WC/qNWOSS51CJa8P/vcuj0Uhb0V8FX23+DaPCz0G5AAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAYCAYAAAD6S912AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAHISURBVEhL1VW/a8JAFH4XpQhdunS0UHAoDh1tB1dxc3BwMrj4R6h/gbMgLh0cnCoUhEIHB8cugh1EHYQK/lgtJtpQTK73jlwSraGJdukHX973jnffvbsjCRiGQb2yVCrRVCpFVVWlbpBYIZp6IiEEGo0GZLNZcIOk6zp4ZSAQAEVRoFqtQiaTgfV6bdrY8N2hpmmc5XIZ8vm8aWPjqA4FC4UCyLIMm83GtAMgq9WKmvpXVCoViEajZmaj1WpBvV7nmiyXS8+GbqjValAsFrn2dYZulCSJmyF8naEbdwwPreiXf94h3r4AmU6n/FK+mk0wZjM+6BeDwQDuYzGuyWQy4YZv8ThcHmnohHWGnyzBF0nwbrv9kQvujznrrDNUWfLh4HunA9ftNtcYx+MxPAWDPM7Z2NVoxHMkajHP6lCjdGclPRyG50QCblkxRgTq15sbrhGiFiG01aHCErEKdhCJRHjBi2mA+QPTMtsi1uA4aiRqMZf0+31+KY/JJJzN0WoX54yiC5xw4YiHYHfItixWcRKXEBrhjPsaSXq9Hu9wsVhgOAojdrbpdBpCoRCQbrd78tdmOBxav4V/8C6zL+3JW0bkcjn2BPgGptflkvZmYZIAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAYCAYAAAD6S912AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGSSURBVEhLzZQxa8JAFMffRencDl07lA5OXduCn8BRcFPwYwRx6uQXENdA3cTFpe4OXRwqiDpICESXZEglLQ1Fk753zaW5qjTRDv3Dj3vvkrz73zs95vt+AAlVr9dhPB5TeNbr9V745A8pWBCSwhiDdrsNiqI44fdbUjabDSQlk8mA67rQbDahVCoFyGlYJ1Jqh57ncRqNBi2w5fQghwJVVaFcLgdI5DSVQ+wd6LouUSwWJafMcZzEp7xPrVYLarUaoziVw32Qc6FUPdyHVHDXimn5c4d0+kLMNE1+KB+dDviLBZ9Mq8lkApf9/j3FzDAMXvA5n4fzAwvGFfXwHZO3GDfrNSeex8db3KpAvENEPXzFZBlyMZvBQzbLoZjm5vO5NFqWBV3sHUHXjiBy6AW//77vsLjQarWCa8yJnQ6T6CmXC6OvOJ4LRQ5dTITtR3zxajDgUExztm1Lo3gucgEbjUZ8r91CAU6W1J3j9O0Qexhf6VDYcDg8+raZTqdQqVT+8W0j/Zc1TTt6y6RqtYpbBvgEl2HI6eJHZ08AAAAASUVORK5CYII=\"","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport interface TestResolveData {\r\n TestEventID: number\r\n AlertResolved: boolean\r\n WatchResolved: boolean\r\n TimingAlertResolved: boolean\r\n ResultsAcknowledged: boolean\r\n}\r\nexport default function ResultsResolveObservable(testsData: TestResolveData[], modifiedBy: string): Observable {\r\n const params: string = JSON.stringify({ TestEventIDS: testsData, ModifiedBy: modifiedBy })\r\n return ObservableFromFetch(\"FFOrderWatchResolve/Resolve\", params)\r\n}\r\n","import * as React from \"react\"\r\n\r\nimport { OverlayTrigger, Popover } from \"react-bootstrap\"\r\nimport { FaArchive } from \"react-icons/fa\"\r\n\r\nimport OrderResultRecordIdentifier from \"../../api/OrderResults/OrderResultModel/OrderResultRecordIdentifier\"\r\nimport Checkbox from \"../Checkbox\"\r\n\r\nexport interface OrderTrackingCheckboxProps {\r\n idPrefix: string\r\n item: OrderResultRecordIdentifier\r\n checked: boolean\r\n disabled: boolean\r\n onChange: (item: OrderResultRecordIdentifier, checked: boolean) => void\r\n}\r\n\r\nfunction OrderTrackingCheckbox(props: OrderTrackingCheckboxProps) {\r\n const { idPrefix, item, checked, disabled, onChange } = props\r\n\r\n const handleChange = (e: React.ChangeEvent) => onChange(item, e.target.checked)\r\n\r\n return (\r\n
\r\n {item.Archived && (\r\n \r\n The sample is archived.\r\n \r\n }\r\n >\r\n \r\n \r\n )}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default OrderTrackingCheckbox\r\n","import React, { Component } from \"react\"\r\nimport { Button, Col, Container, Form, Modal, Row } from \"react-bootstrap\"\r\nimport OrderResultRecord from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport { toast } from \"react-toastify\"\r\nimport AuthFormProcessObservable from \"../../api/OrderResults/AuthForm\"\r\nimport printPdf from \"../../utils/printPdf\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\nimport { EmailRegexp, PhoneRegexp } from \"../../config/Constants\"\r\nimport PhoneNumberMaskedInput from \"../FormattedInputs/PhoneNumberMaskedInput\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { FaMinus, FaPlus } from \"react-icons/fa\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { AppState } from \"../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport { BuildUserAccess } from \"../../authentication/BuildUserAccess\"\r\n\r\ninterface AuthFormModalProps {\r\n details?: OrderResultRecord\r\n onHide: () => void\r\n onEdit?: (data: OrderResultRecord) => void\r\n isAfterUpdate?: boolean\r\n}\r\n\r\ninterface AuthFormModalAuthProps {\r\n canEditPendingOrders?: boolean\r\n}\r\n\r\ninterface AuthFormModalState {\r\n emailItems: string[]\r\n mobileItems: string[]\r\n sendingEmail: boolean\r\n sendingText: boolean\r\n}\r\n\r\nclass AuthFormModal extends Component {\r\n state: AuthFormModalState = {\r\n emailItems: [\"\"],\r\n mobileItems: [\"\"],\r\n sendingEmail: false,\r\n sendingText: false\r\n }\r\n\r\n loadSubscription?: Subscription\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n }\r\n\r\n handlePrintClick = (): void => {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n const params = {\r\n FormFoxTestAN: Number(this.props.details?.FormFoxTestAN || 0),\r\n PersonID: this.props.details?.PersonID || 0,\r\n VendorID: this.props.details?.CollectionVendorID || 0,\r\n SendToEmail: false,\r\n SendText: false,\r\n EmailAddress: []\r\n }\r\n this.loadSubscription = AuthFormProcessObservable(params).subscribe(\r\n data => printPdf(data),\r\n error => toast.error(FormatError(error))\r\n )\r\n }\r\n\r\n addEmail = (index: number, email: string = \"\") => {\r\n if (email !== this.state.emailItems[index]) {\r\n this.setState({ emailItems: [...this.state.emailItems, email] })\r\n }\r\n }\r\n\r\n removeEmail = (email: string, index: number) => {\r\n var array = [...this.state.emailItems]\r\n if (index > -1) {\r\n array.splice(index, 1)\r\n this.setState({ emailItems: array })\r\n }\r\n }\r\n\r\n changeEmail = (email: string, index: number) => {\r\n var array = [...this.state.emailItems]\r\n if (index > -1) {\r\n array[index] = email\r\n this.setState({ emailItems: array })\r\n }\r\n }\r\n\r\n sendEmail = () => {\r\n if (this.state.emailItems.filter(Boolean).length > 0) {\r\n if (Array.from(new Set(this.state.emailItems.map(value => value.toLowerCase()))).length !== this.state.emailItems.length) {\r\n toast.error(\"Duplicate email address is present in the list.\")\r\n return\r\n }\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n const params = {\r\n EmailAddress: this.state.emailItems,\r\n FormFoxTestAN: Number(this.props.details?.FormFoxTestAN || 0),\r\n PersonID: this.props.details?.PersonID || 0,\r\n VendorID: this.props.details?.CollectionVendorID || 0,\r\n SendToEmail: true,\r\n SendText: false\r\n }\r\n this.setState({ sendingEmail: true })\r\n this.loadSubscription = AuthFormProcessObservable(params).subscribe(\r\n data => toast.success(data),\r\n error => toast.error(FormatError(error))\r\n )\r\n this.setState({ sendingEmail: false })\r\n }\r\n else {\r\n toast.error(\"Please enter email address.\")\r\n }\r\n }\r\n\r\n isEmailValid = (value: string): boolean => {\r\n if (value.length === 0) {\r\n return true\r\n }\r\n return EmailRegexp.test(value)\r\n }\r\n\r\n canAddEmail = (email: string): boolean => email.length > 0 && this.isEmailValid(email)\r\n\r\n addMobile = (index: number, phone: string = \"\") => {\r\n if (phone !== this.state.mobileItems[index]) {\r\n this.setState({ mobileItems: [...this.state.mobileItems, phone] })\r\n }\r\n }\r\n\r\n removeMobile = (phone: string, index: number) => {\r\n var array = [...this.state.mobileItems]\r\n if (index > -1) {\r\n array.splice(index, 1)\r\n this.setState({ mobileItems: array })\r\n }\r\n }\r\n\r\n changeMobile = (phone: string, index: number) => {\r\n var array = [...this.state.mobileItems]\r\n if (index > -1) {\r\n array[index] = phone\r\n this.setState({ mobileItems: array })\r\n }\r\n }\r\n\r\n sendText = () => {\r\n if (this.state.mobileItems.filter(Boolean).length > 0) {\r\n if (Array.from(new Set(this.state.mobileItems.map(value => value.toLowerCase()))).length !== this.state.mobileItems.length) {\r\n toast.error(\"Duplicate mobile number is present in the list.\")\r\n return\r\n }\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n const params = {\r\n EmailAddress: this.state.mobileItems,\r\n FormFoxTestAN: Number(this.props.details?.FormFoxTestAN || 0),\r\n PersonID: this.props.details?.PersonID || 0,\r\n VendorID: this.props.details?.CollectionVendorID || 0,\r\n SendToEmail: false,\r\n SendText: true\r\n }\r\n this.setState({ sendingText: true })\r\n this.loadSubscription = AuthFormProcessObservable(params).subscribe(\r\n data => toast.success(\"Text sent successfully\"),\r\n error => toast.error(FormatError(error))\r\n )\r\n this.setState({ sendingText: false })\r\n }\r\n else {\r\n toast.error(\"Please enter mobile number.\")\r\n }\r\n }\r\n\r\n isPhoneValid = (value: string): boolean => value.length === 0 || PhoneRegexp.test(value)\r\n canAddMobile = (mobile: string): boolean => mobile.length > 0 && this.isPhoneValid(mobile)\r\n\r\n render() {\r\n const { sendingEmail, sendingText, mobileItems, emailItems } = this.state\r\n const { details, onHide, canEditPendingOrders } = this.props\r\n\r\n return (\r\n \r\n \r\n \r\n {!this.props.isAfterUpdate &&

AUTHORIZATION #{ details?.FormFoxTestAN }

}\r\n {!!this.props.isAfterUpdate &&

Resend Authorization #{ details?.FormFoxTestAN }

}\r\n
\r\n
\r\n \r\n \r\n \r\n Print form:\r\n \r\n \r\n {emailItems.map((email, index) => \r\n \r\n { index === 0 && \"Email form:\" }\r\n \r\n \r\n this.changeEmail(e.target.value, index) } readOnly={ emailItems.length !== index + 1 } isInvalid={ !this.isEmailValid(email) } />\r\n \r\n \r\n { emailItems.length === index + 1 ? : }\r\n \r\n {index === 0 && !this.isEmailValid(email)) || sendingEmail || sendingText} spin={sendingEmail}>Send Email}\r\n \r\n )}\r\n {mobileItems.map((mobile, index) => \r\n \r\n { index === 0 && \"Text form:\" }\r\n \r\n \r\n this.changeMobile(value, index)} readOnly={ mobileItems.length !== index + 1 } isInvalid={ !this.isPhoneValid(mobile) } />\r\n \r\n \r\n { mobileItems.length === index + 1 ? : }\r\n \r\n {index === 0 && !this.isPhoneValid(mobile)) || sendingEmail || sendingText } spin={sendingText}>Send Text}\r\n \r\n )}\r\n \r\n \r\n \r\n {details && canEditPendingOrders && !this.props.isAfterUpdate && }\r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): AuthFormModalAuthProps {\r\n const userAccess = BuildUserAccess(state)\r\n return {\r\n canEditPendingOrders: userAccess.canEditPendingOrders\r\n }\r\n}\r\nconst ConnectedAuthFormModal = connect(mapStateToProps, null)(AuthFormModal)\r\nexport default ConnectedAuthFormModal","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function OrderCancel(testDetailID?: string, testDetailClinicalID?: string, formFoxTestAN?: string) {\r\n const requestBody: string = JSON.stringify({\r\n MockTestDetailID: testDetailID,\r\n MockTestDetailClinicalID: testDetailClinicalID,\r\n FormFoxTestAN: formFoxTestAN\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceOrder/CancelOrder\", requestBody)\r\n}","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { SetTestDetailVendorParameters } from \"./SSOOrderRequest\"\r\n\r\nexport default function OrderUpdate(parameters: SetTestDetailVendorParameters) {\r\n const requestBody: string = JSON.stringify(parameters)\r\n return ObservableFromFetch(\"WorkforceOrder/UpdateOrder\", requestBody)\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Container, Modal, Spinner } from \"react-bootstrap\"\r\n\r\nexport interface ProcessingModalProps {\r\n message: string\r\n}\r\nexport default class ProcessingModal extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n

{this.props.message}

\r\n
\r\n
\r\n
\r\n
)\r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { toast } from \"react-toastify\"\r\nimport CollectionSite from \"../../api/Location/LocationModel/CollectionSite\"\r\nimport { stateAbbreviationsToCommonWealthState, StateToTimeZone } from \"../../api/Location/LocationModel/CommonWealthStateTextMapping\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { GetOrderRequest, ServicePriceTierParameter, SetFFTestDetailVendor, SetTestDetailVendor, SetTestDetailVendorParameters } from \"../../api/OrderRequests/SSOOrderRequest\"\r\nimport { StorageKey } from \"../../config/Constants\"\r\nimport { GetSSOToken } from \"../../storage/AuthToken\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport OrderFinish from \"../OrderRequests/OrderFinish\"\r\nimport ProcessingModal from \"../ProcessingModal\"\r\nimport SiteSearch from \"../SiteSearch/SiteSearch\"\r\n\r\nexport const TimeZoneMapping: {[key: string]: string} = {\r\n \"CST\": \"Central Standard Time\",\r\n \"AKST\": \"Alaskan Standard Time\",\r\n \"MST\": \"Mountain Standard Time\",\r\n \"HST\": \"Hawaiian Standard Time\",\r\n \"EDT\": \"Eastern Daylight Time\",\r\n \"PST\": \"Pacific Standard Time\",\r\n \"EST\": \"Eastern Standard Time\"\r\n}\r\n\r\ninterface SiteSearchPageState {\r\n formFoxTestAN: number\r\n sendLink: boolean\r\n sendCallback: boolean\r\n isLoading: boolean\r\n ssoToken: string\r\n isSaving: boolean\r\n showFinish: boolean\r\n isFFOrder: boolean\r\n spinnerMessage: string\r\n}\r\nexport default class SiteSearchPage extends React.PureComponent<{}, SiteSearchPageState> {\r\n state: SiteSearchPageState = {\r\n formFoxTestAN: 0,\r\n sendLink: false,\r\n sendCallback: false,\r\n isLoading: true,\r\n ssoToken: GetSSOToken(),\r\n isSaving: false,\r\n showFinish: false,\r\n isFFOrder: false,\r\n spinnerMessage: \"Data is loading..\"\r\n }\r\n\r\n componentDidMount() {\r\n localStorage.removeItem(StorageKey.CanViewOrderFinish)\r\n localStorage.removeItem(StorageKey.OrderedServices)\r\n localStorage.removeItem(StorageKey.SavedOrderData)\r\n localStorage.removeItem(StorageKey.OrderDonorSiteSelect)\r\n localStorage.removeItem(StorageKey.FromSelectionInbox)\r\n this.retrieveFFTestAN()\r\n }\r\n\r\n retrieveFFTestAN = () => {\r\n GetOrderRequest(this.state.ssoToken).subscribe(\r\n data => this.setState({ formFoxTestAN: data.FormFoxTestAN, sendLink: data.SendLink, sendCallback: data.SendCallback, isFFOrder: data.IsFFOrder, isLoading: false }),\r\n error => this.handleAPIError(error, { isLoading: false })\r\n )\r\n }\r\n\r\n updateOrder = (site: CollectionSite, params: {сallbackLink?: string, referenceTestID: number}) => {\r\n this.setState({ isSaving: true, spinnerMessage: \"Saving..\" })\r\n let timezone = \"\"\r\n let serviceTiers: ServicePriceTierParameter[] = []\r\n\r\n if (site.State) {\r\n const state = stateAbbreviationsToCommonWealthState[site.State]\r\n const statetimezone = StateToTimeZone[state]\r\n timezone = TimeZoneMapping[statetimezone] || \"\"\r\n }\r\n if (this.state.isFFOrder && !!site.SiteServices) {\r\n serviceTiers = site.SiteServices.map(el => { return {ServiceCode: el.Code, ServicePriceTier: (el.PriceTier ?? \"\")}})\r\n }\r\n\r\n const parameters: SetTestDetailVendorParameters = {\r\n formFoxTestAN: this.state.formFoxTestAN,\r\n collectionVendorID: site.VendorID,\r\n formFoxVendorAN: site.FormFoxVendorAN || 0,\r\n FFVendorCode: site.Code,\r\n collectorVendorName: site.Name || \"\",\r\n servicePriceTiers: serviceTiers,\r\n ssoToken: this.state.ssoToken,\r\n timeZone: timezone,\r\n sendLink: this.state.sendLink,\r\n sendCallback: this.state.sendCallback,\r\n isFFOrder: this.state.isFFOrder,\r\n ReferenceTestID: params.referenceTestID,\r\n ProceedImmediately:false,\r\n ExtendExpirationHours: 0\r\n }\r\n\r\n if (this.state.isFFOrder) {\r\n SetFFTestDetailVendor(parameters).subscribe(\r\n data => {\r\n const message = !!data && data.length > 0 ? data : \"Your order has been updated.\"\r\n toast.success(message)\r\n if (!!params.сallbackLink && params.сallbackLink != \"\") {\r\n this.setState({spinnerMessage: \"Redirecting...\"})\r\n setTimeout(() => {\r\n this.setState({ isSaving: false, showFinish: false })\r\n window.location.replace(params.сallbackLink || \"\")\r\n }, 3000);\r\n }\r\n else {\r\n this.setState({ isSaving: false, showFinish: true })\r\n }\r\n },\r\n error => this.handleAPIError(error, { isSaving: false })\r\n )\r\n }\r\n else {\r\n SetTestDetailVendor(parameters).subscribe(\r\n data => {\r\n localStorage.setItem(StorageKey.SavedOrderData, JSON.stringify(data))\r\n this.setState({ isSaving: false, showFinish: true })\r\n },\r\n error => this.handleAPIError(error, { isSaving: false })\r\n )\r\n }\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n render() {\r\n const { isLoading, formFoxTestAN, isSaving, showFinish } = this.state;\r\n\r\n return \r\n {(isLoading || isSaving) && }\r\n {!isLoading && !showFinish && this.updateOrder(site, callbackAction)} />}\r\n {showFinish && }\r\n \r\n }\r\n}\r\n","import React, { ChangeEvent, Component } from \"react\"\r\nimport { Button, Col, Form, FormLabel, Modal, OverlayTrigger, Popover, Spinner } from \"react-bootstrap\"\r\nimport DatePicker from 'react-datepicker'\r\nimport 'react-datepicker/dist/react-datepicker.css'\r\nimport { FaChevronRight, FaInfoCircle } from \"react-icons/fa\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport CollectionSite from \"../../api/Location/LocationModel/CollectionSite\"\r\nimport { stateAbbreviationsToCommonWealthState, StateToTimeZone } from \"../../api/Location/LocationModel/CommonWealthStateTextMapping\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport OrderCancel from \"../../api/OrderRequests/OrderCancel\"\r\nimport OrderResultRecord from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport CollectionSiteInfoGet from \"../../api/Vendor/CollectionSiteInfoGet\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\nimport FormatPhone from \"../../formatters/FormatPhone\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\nimport CalculateDateStrings from \"../OrderRequests/CalculateDateStrings\"\r\nimport SiteSearch from \"../SiteSearch/SiteSearch\"\r\nimport { SetTestDetailVendorParameters } from \"../../api/OrderRequests/SSOOrderRequest\"\r\nimport OrderUpdate from \"../../api/OrderRequests/OrderUpdate\"\r\nimport { CurrentServiceDetails } from \"../../api/OrderResults/CurrentServiceDetails\"\r\nimport ServiceDetails from \"../../api/OrderResults/OrderResultModel/ServiceDetails\"\r\nimport { TimeZoneMapping } from \"../sso/SiteSearchPage\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport ExpirationDate from \"../ExpirationDate\"\r\n\r\ninterface OrderEditModalProps {\r\n details?: OrderResultRecord\r\n onHide: () => void\r\n onOrderUpdated: () => void\r\n}\r\n\r\ninterface OrderEditModalState {\r\n loading: boolean\r\n data?: ServiceDetails\r\n clinicLoading: boolean\r\n cancelling: boolean\r\n saving: boolean\r\n clinic?: CollectionSite\r\n newClinic?: CollectionSite\r\n expirationDate: Date | undefined\r\n timezone: string | undefined\r\n showSiteSearch: boolean\r\n showConfirmCancelOrderModal: boolean\r\n showConfirmSaveModal: boolean\r\n proceedImmediately: boolean\r\n selectedExpirationDate: Date | undefined\r\n extendExpirationHours: number\r\n}\r\n\r\nexport default class OrderEditModal extends Component {\r\n state: OrderEditModalState = {\r\n loading: false,\r\n clinicLoading: false,\r\n cancelling: false,\r\n saving: false,\r\n showSiteSearch: false,\r\n showConfirmCancelOrderModal: false,\r\n showConfirmSaveModal: false,\r\n expirationDate: undefined,\r\n timezone: undefined,\r\n proceedImmediately: false,\r\n selectedExpirationDate: undefined,\r\n extendExpirationHours: 0\r\n }\r\n\r\n expirationDate = React.createRef()\r\n subscription?: Subscription\r\n loadClinicSubscription?: Subscription\r\n cancelSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n const { details } = this.props\r\n const { FormFoxVendorAN, CollectionVendorID, TestDetailClinicalID, TestDetailID } = details || { FormFoxVendorAN: undefined, CollectionVendorID: undefined, TestDetailID: undefined, TestDetailClinicalID: undefined }\r\n if (FormFoxVendorAN || CollectionVendorID) {\r\n this.setState({ clinicLoading: true })\r\n this.loadClinicSubscription = CollectionSiteInfoGet(FormFoxVendorAN, CollectionVendorID).subscribe(\r\n data => {\r\n const clinic = data?.Name ? data : undefined\r\n const timezone = this.calculateTimezone(clinic)\r\n this.setState({\r\n clinicLoading: false,\r\n clinic: clinic,\r\n showSiteSearch: false,\r\n timezone: data?.TimeZone || timezone\r\n })\r\n },\r\n error => this.handleAPIError(error, { clinicLoading: false })\r\n )\r\n }\r\n\r\n if (TestDetailID || TestDetailClinicalID) {\r\n this.setState({ loading: true })\r\n this.subscription = CurrentServiceDetails({ TestDetailClinicalID: TestDetailClinicalID, TestDetailID: TestDetailID || \"\" }).subscribe(\r\n (data: ServiceDetails) => {\r\n const selectedExpirationDate = data.EventData.ExpirationDate ? new Date(data.EventData.ExpirationDate) : undefined\r\n selectedExpirationDate?.setHours(selectedExpirationDate.getHours() - data.EventData.ExtendExpirationHours)\r\n \r\n this.setState({\r\n data: data,\r\n loading: false,\r\n expirationDate: data.EventData.ExpirationDate ? new Date(data.EventData.ExpirationDate) : undefined,\r\n proceedImmediately: data.EventData.ProceedImmediately,\r\n selectedExpirationDate,\r\n extendExpirationHours: data.EventData.ExtendExpirationHours\r\n })},\r\n (error) => this.handleAPIError(error, { loading: false })\r\n )\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n this.loadClinicSubscription && this.loadClinicSubscription.unsubscribe()\r\n this.cancelSubscription && this.cancelSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error(FormatError(error))\r\n }\r\n\r\n onClinicChange = (site: CollectionSite) => {\r\n const timezone = this.calculateTimezone(site)\r\n this.setState({\r\n newClinic: site,\r\n showSiteSearch: false,\r\n timezone: site.TimeZone || timezone\r\n })\r\n }\r\n\r\n addHoursToCurrentDate = (hours: number) => {\r\n const newDate = new Date()\r\n newDate.setHours(newDate.getHours() + hours)\r\n return newDate\r\n }\r\n\r\n calculateTimezone = (clinic?: CollectionSite) => {\r\n const stateAbbr = clinic?.State\r\n if (stateAbbr) {\r\n const state = stateAbbreviationsToCommonWealthState[stateAbbr]\r\n return StateToTimeZone[state]\r\n }\r\n return undefined\r\n }\r\n\r\n performCancelOrder = () => {\r\n this.setState({ cancelling: true, showConfirmCancelOrderModal: false })\r\n this.cancelSubscription && this.cancelSubscription.unsubscribe()\r\n this.cancelSubscription = OrderCancel(this.props.details?.TestDetailID, this.props.details?.TestDetailClinicalID, this.props.details?.FormFoxTestAN).subscribe(\r\n data => {\r\n toast.success(data)\r\n this.props.onOrderUpdated()\r\n },\r\n error => this.handleAPIError(error, { cancelling: false })\r\n )\r\n }\r\n\r\n performSave = () => {\r\n this.setState({ saving: true, showConfirmSaveModal: false })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n\r\n const { clinic, newClinic, expirationDate, timezone, proceedImmediately } = this.state\r\n const { details, onOrderUpdated } = this.props\r\n\r\n const site = newClinic || clinic\r\n const formFoxTestAN: number = parseInt(details?.FormFoxTestAN || \"0\");\r\n const formattedExpirationDate = expirationDate ? CalculateDateStrings(expirationDate, timezone).formattedDate : undefined\r\n\r\n const timeZoneName = TimeZoneMapping[timezone || \"\"]\r\n const parameters: SetTestDetailVendorParameters = {\r\n formFoxTestAN: formFoxTestAN,\r\n collectionVendorID: site?.VendorID || 0,\r\n formFoxVendorAN: site?.FormFoxVendorAN || 0,\r\n FFVendorCode: site?.Code || \"\",\r\n collectorVendorName: site?.Name || \"\",\r\n servicePriceTiers: [],\r\n expirationDate: formattedExpirationDate,\r\n sendLink: false,\r\n sendCallback: false,\r\n timeZone: timeZoneName || \"\",\r\n isFFOrder: false,\r\n ReferenceTestID: 0,\r\n ProceedImmediately: proceedImmediately,\r\n ExtendExpirationHours: this.state.extendExpirationHours,\r\n }\r\n this.saveSubscription = OrderUpdate(parameters).subscribe(\r\n data => {\r\n toast.success(data)\r\n onOrderUpdated()\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n proceedImmediatelyChange = (e: ChangeEvent) => {\r\n const enabled = !!e.target.checked\r\n this.setState({ proceedImmediately: enabled })\r\n }\r\n\r\n calculateExpirationDate = (date: Date | undefined, extendHours: number, toggle: boolean) => {\r\n if (!date) {\r\n return\r\n }\r\n\r\n const newExpirationDate = new Date(date)\r\n newExpirationDate.setHours(newExpirationDate.getHours() + (toggle ? extendHours : -extendHours))\r\n \r\n return newExpirationDate\r\n }\r\n\r\n handleChangeExtendExpirationHours = (e: ChangeEvent) => {\r\n const hours = Number(e.target.value)\r\n const checked = e.target.checked\r\n\r\n this.setState((prev) => {\r\n const currentExpirationDate = prev.expirationDate ? new Date(prev.expirationDate) : new Date()\r\n return {\r\n ...prev,\r\n expirationDate: this.calculateExpirationDate(currentExpirationDate, hours, checked),\r\n extendExpirationHours: checked ? hours : 0,\r\n }\r\n })\r\n }\r\n\r\n handleChangeExpirationDate = (date: Date) => {\r\n const extendExpirationHours = date ? this.state.extendExpirationHours : 0\r\n\r\n this.setState((prev) => ({ \r\n ...prev,\r\n selectedExpirationDate: date || undefined,\r\n extendExpirationHours: extendExpirationHours,\r\n expirationDate: this.calculateExpirationDate(date, extendExpirationHours, extendExpirationHours > 0),\r\n }))\r\n }\r\n\r\n render() {\r\n const {\r\n clinicLoading,\r\n cancelling,\r\n saving,\r\n clinic,\r\n newClinic,\r\n expirationDate,\r\n timezone,\r\n showSiteSearch,\r\n showConfirmCancelOrderModal,\r\n showConfirmSaveModal,\r\n loading,\r\n data,\r\n proceedImmediately,\r\n extendExpirationHours\r\n } = this.state\r\n const { details, onHide } = this.props\r\n\r\n const clinicToDisplay = newClinic || clinic\r\n const formFoxTestAN: number = parseInt(details?.FormFoxTestAN || \"0\");\r\n\r\n return <>\r\n {showSiteSearch && this.setState({ showSiteSearch: false })} size=\"xl\" dialogClassName=\"dark modal-90w\">\r\n \r\n SITE SEARCH\r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n

AUTHORIZATION #{details?.FormFoxTestAN}

\r\n
\r\n
\r\n \r\n
\r\n {clinicLoading && \r\n \r\n \r\n \r\n }\r\n {!clinicLoading && <>\r\n \r\n Clinic\r\n \r\n {clinicToDisplay && <>\r\n \r\n \r\n {clinicToDisplay?.Name}\r\n \r\n \r\n \r\n \r\n {clinicToDisplay?.Address1} {clinicToDisplay?.Address2} {clinicToDisplay?.Zip}\r\n \r\n \r\n {(!!clinicToDisplay?.Phone || !!clinicToDisplay?.Fax) && \r\n \r\n {clinicToDisplay?.Phone && Phone: {FormatPhone(clinicToDisplay?.Phone)}}\r\n {clinicToDisplay?.Fax && Fax: {FormatPhone(clinicToDisplay?.Fax)}}\r\n \r\n \r\n }\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n SCHEDULE\r\n \r\n \r\n Clinic Time Zone\r\n {timezone}\r\n \r\n {/* \r\n Hide Expiration Date\r\n \r\n {}\r\n \r\n */}\r\n \r\n \r\n Expiration Date\r\n \r\n \r\n {proceedImmediately ? \r\n <>Proceed Immediately to the Collection Site\r\n :\r\n <>\r\n \r\n {!!extendExpirationHours && expirationDate && (\r\n \r\n Extended Expiration Date\r\n \r\n {expirationDate.toLocaleString('en-US', { \r\n year: 'numeric',\r\n month: '2-digit',\r\n day: '2-digit',\r\n hour: 'numeric',\r\n minute: 'numeric'\r\n })}\r\n \r\n }>\r\n \r\n \r\n )}\r\n \r\n }\r\n \r\n \r\n {!proceedImmediately && (\r\n \r\n \r\n Extend Expiration by 24 Hours\r\n \r\n \r\n 0}\r\n onChange={this.handleChangeExtendExpirationHours}\r\n />\r\n \r\n )}\r\n }\r\n
\r\n
\r\n \r\n {!!data && this.setState({ showConfirmCancelOrderModal: true })}>Cancel Order}\r\n this.setState({ showConfirmSaveModal: true })}>Save Changes\r\n \r\n \r\n
\r\n this.setState({ showConfirmCancelOrderModal: false })} />\r\n this.setState({ showConfirmSaveModal: false })} />\r\n \r\n }\r\n}\r\n","import CollectionSite from \"../Location/LocationModel/CollectionSite\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function CollectionSiteInfoGet(formFoxVendorAN?: number, collectionVendorID?: number) {\r\n let params = {}\r\n if (formFoxVendorAN) {\r\n params = {...params, formFoxVendorAN: formFoxVendorAN.toString()}\r\n }\r\n if (collectionVendorID) {\r\n params = {...params, collectionVendorID: collectionVendorID.toString()}\r\n }\r\n const requestBody: string = new URLSearchParams(params).toString()\r\n return ObservableFromFetch(\"WorkforceOrder/GetCollectionSiteInfo?\" + requestBody)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport SendSelectClinicLinkParams from \"./OrderResultModel/SendSelectClinicLinkParams\"\r\n\r\nexport default function SendSelectClinicLinkObservable(params: SendSelectClinicLinkParams): Observable {\r\n const requestBody: string = JSON.stringify(params)\r\n\r\n return ObservableFromFetch(\"workforceorder/SendSelectClinicLink\", requestBody)\r\n}","import React, { Component } from \"react\"\r\nimport { Button, Col, Container, Form, Modal, Row } from \"react-bootstrap\"\r\nimport OrderResultRecord from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport { toast } from \"react-toastify\"\r\nimport printPdf from \"../../utils/printPdf\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\nimport { EmailRegexp, PhoneRegexp } from \"../../config/Constants\"\r\nimport PhoneNumberMaskedInput from \"../FormattedInputs/PhoneNumberMaskedInput\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { FaMinus, FaPlus } from \"react-icons/fa\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { AppState } from \"../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport { BuildUserAccess } from \"../../authentication/BuildUserAccess\"\r\nimport { GetSSOToken } from \"../../storage/AuthToken\"\r\nimport { FullBaseUrl } from \"../../api/ApiUrl\"\r\nimport SendSelectClinicLinkParams from \"../../api/OrderResults/OrderResultModel/SendSelectClinicLinkParams\"\r\nimport SendSelectClinicLinkObservable from \"../../api/OrderResults/SendClinicSelectLink\"\r\n\r\n\r\ninterface SendSelectClinicLinkProps {\r\n details?: OrderResultRecord\r\n onHide: () => void\r\n onEdit?: (data: OrderResultRecord) => void\r\n isAfterUpdate?: boolean\r\n}\r\n\r\n\r\ninterface SendSelectClinicLinkState {\r\n emailItems: string[]\r\n email: string\r\n sendingEmail: boolean\r\n}\r\n\r\nexport default class SendSelectClinicLink extends Component {\r\n state: SendSelectClinicLinkState = {\r\n emailItems: [\"\"],\r\n email: \"\",\r\n sendingEmail: false\r\n }\r\n\r\n loadSubscription?: Subscription\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n }\r\n\r\n \r\n\r\n\r\n changeEmail = (email: string) => {\r\n this.setState({ email: email || \"\" })\r\n }\r\n\r\n sendEmail = () => {\r\n const email = this.state.email || \"\"\r\n if (!this.isEmailValid(email)) {\r\n toast.error(\"Please enter valid email address.\")\r\n return\r\n }\r\n\r\n let formFoxTestAN = parseInt(this.props.details?.FormFoxTestAN || \"0\")\r\n if (isNaN(formFoxTestAN)) {\r\n formFoxTestAN = 0\r\n }\r\n \r\n let accountID = 0\r\n if(this.props.details?.CompanyID){\r\n accountID = parseInt(this.props.details?.CompanyID.toString())\r\n }\r\n if (isNaN(accountID)) {\r\n accountID = 0\r\n }\r\n\r\n let testDetailID = 0\r\n if(this.props.details?.TestDetailID){\r\n testDetailID = parseInt(this.props.details?.TestDetailID.toString())\r\n }\r\n if (isNaN(testDetailID)) {\r\n testDetailID = 0\r\n }\r\n let testDetailClinicalID = 0\r\n if(this.props.details?.TestDetailClinicalID){\r\n testDetailClinicalID = parseInt(this.props.details?.TestDetailClinicalID.toString())\r\n }\r\n if (isNaN(testDetailClinicalID)) {\r\n testDetailClinicalID = 0\r\n }\r\n const params: SendSelectClinicLinkParams = {\r\n FormFoxTestAN: formFoxTestAN,\r\n ApiRequestToken: \"\",\r\n BaseUrl: FullBaseUrl(),\r\n AccountID: accountID,\r\n Email: email,\r\n MarketplaceAuthNum: this.props.details?.MarketPlaceOrderNum || \"\",\r\n PersonID: this.props.details?.PersonID || 0,\r\n TestReason: this.props.details?.Reason || \"\",\r\n TestDetailID: this.props.details?.TestDetailID || \"\",\r\n TestDetailClinicalID: this.props.details?.TestDetailClinicalID || \"\"\r\n }\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.setState({ sendingEmail: true })\r\n this.loadSubscription = SendSelectClinicLinkObservable(params).subscribe(\r\n data => {\r\n toast.success(\"Email sent successfully\")\r\n this.setState({ sendingEmail: false })\r\n this.props.onHide()\r\n },\r\n error => {\r\n toast.error(FormatError(error))\r\n this.setState({ sendingEmail: false })\r\n }\r\n )\r\n\r\n }\r\n\r\n isEmailValid = (value: string): boolean => {\r\n if (value.length === 0) {\r\n return false\r\n }\r\n return EmailRegexp.test(value)\r\n }\r\n\r\n\r\n\r\n render() {\r\n const { sendingEmail, email } = this.state\r\n const { details, onHide } = this.props\r\n return (\r\n \r\n \r\n \r\n {

Resend Email (Authorization #{details?.FormFoxTestAN})

}\r\n
\r\n
\r\n \r\n \r\n {\r\n \r\n {\"Donor Email:\"}\r\n \r\n \r\n this.changeEmail(e.target.value)} isInvalid={!this.isEmailValid(email)} />\r\n \r\n \r\n }\r\n \r\n \r\n \r\n Send Email\r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAASAAAAEgARslrPgAAEKZJREFUeNrtnXuwVVUdxz/nQGKJ+QBJA+Ei4BPE4uS70pTCVCyfM46v0so0Hd/PGcUSH/jAyozUmnTGP9RyGsx01MRquD649Edg6aCJV9REcEThcq/A3f3x2/vew+Gce35r77X22nvf85lZg1z33Xv9fr8va6+9Hr9VYnAzDhgPtIVlHDACGBn+OQIoA0OBbcPf+QTYCPQCq6vKKuAtYHlY3gz/XmiCIKj785LviqXIHsAhwDRgSli2d/zMj4AlYVkMtAOv+naETQajsCYCM4DpwEHATr4rFPIB8ALwDPAU8LrvCiWhkbCKRAkR0J3AMiDISVkGzA3rnrt/6EEQ1C1FYG/gNqRf41skScvy0JZ9fDtVS9GEtQ1wFtJn8S0GV6U9tHEb384eiKIIa2dgNvIV5jvwaZXVoc07+3Z+PfIurHHAvUA3/gPtq3SHPhjnOxjV5FVYo4F7gB78BzYrpSf0yRjfwYH8CWs4cCPQhf9AZrV0hT4a7jNQjYSVtc/bEnAq8mW0SwrP60RGyJeH5S36R9GjEfVeZKT9k/B3tkVG4sv0j85Ho/Xj6B/FHw+MTcGG94ArgIcQwaVKlluniInAc7j7F74SeBA4H/gasEMKNu0QPuv88NkrHdr3HDAptWiFZPlVOBS4EjevvVeAWcg0TlaYBlwf1s3F6/HK0KepkFVh7QYstOzcFcDPgH19G6dg37Cub1v2wcLQt87JorBOA9ZYdOZjyNxgXpkR2mDLH2uA011XOkvCGgbcZ9GBtyMd5aIwPrTJln/uC33uhKwIayzwsiWHzQZGpW5BeowKbbThq5dx9IWaBWEdCLxvwUm3kp0lMGmwE3CLBb+9j8TAKr6FdQLJv/rmIeNDg5W20AdJvxpPtFkpn8K6CNiUwBnPAEelUtN8MAN4mvj+3ARcbKsyvoR1XQIHBMgYVIv6zCKZb6+zUYm0hVVC+kJxjV6ArElvMTBTEF8l6a8mmtZLW1hzEhg721mtikuSr8c5SR6cprDivv42AMc5cvxg4DjEh6m+FtMS1sUxDXsL2M+t3wcF+yG+jBODS+I8MA1hzSTe1187MCEdvw8KJhBv/rWXGG8M18I6AFgXw5jHychKyIIxBvGtaTzWIbFU41JYuxJvndF9vrw+iIgzJ7sSg+kfV8IaBiyKUfm7fHt8EHEX5vFZhHLi2pWw7o9R6bm+PT0ImYt5nO7X3NiFsE6LUdnW688fcV6LpzW7qW1htWG+SO9x355twXzMYraGJmvdbAprCOZb2xfR+vrLAqMxXw/XjsS8LjaFdaVhxTqRHTgtssFEJCYmMbyq0c1sCWsiZuuqNgJTfXuyxRZMxWz6Zz0NtpbZEFYJ831/M317sEVDZmIWywXUWQlhYyf0GcADBtffBFzr23vN6JA/SsBJSNqg8ci+PNP2vIzsnH4KuLMiHd+sMxu4xuD6s6jRQNJUkcOR3Jmjldc/DxyeooNiEwrrQmRnzGcs3fYJ4KSKvEKyzgLgMOW17wB7AmujHzQSVll5wyvRiwokUHlhd+Rfri1RARwNnOLbMCUXGFw7GtFCUzTCGg1cZvDwG5AswXlhf9xkbDnat2FKlmK2BPwyFI2MRljXAFsrH/qsYSWzQDeyZMQ2NltA19yAbFrRsDWKvnMzYbUB5xhU8DYvbknGOmQdmW3e9W2YISaxO5smW/GaCesqYCvlw36DbEvKGz24abE+9G2YIc8gMdSwFXD1QBcMJKxdkCEGLbf69Uts1uKmxVqb/BapYxLDMxkgOd5AwjoP+KzyIXOQzHh5ZD1uWqw8DDXU8ib6XTvDEI3UpZGwPgeca1Ch2317JAGuXoV5FBaYxfLcUqlUNw99I2GdguTU1DAbOR8mr3Qh4rJJQH/O0rzxAfq9nSOBk+v9j0bCOtugInf79kRCVmB/+qUX+drMK78wuLbuqEE9Ye2DHL+m4Xbgf769YAHbLdYm8vsqBNlQoX0lHlwqlSbX/rCesM40qMA83x6wxKeW77eJfH4VVmMS2y00UyusEg3emXV4DHjDt/WW6LJ8v17sizVt3kBirOHkUqm02YKGWmEdgP6slt/6ttwitvtYAfkXFih36iD7EA+q/kGtsLQz8iuAv/i22iK2O9pFaLEAnkRShWs4qfovtcI6RnkTkwV/ecC2sDYhS3+LgDbWx1b/pVpYE9BvenjEt7WWsf0q/Ih8j+1Vo431hFKp1JfcpVpY31be4D/Av3xbaxnbQwNrKvkdIK1lCXI8i4a+NWjVwjpS+csP+7bUAbZFYPsr0zePKq87IvqPSFgl4GDlL//Zt5UOsC2EPA+O1kO7i/3gaNghEtYe6OYGVwGLfVvpANstVtGE9U8k9s0Yiewh6BOWdgqnSEMM1dhusYrSv6rmCeV1h0K/sLTn+b3k2zpH2B5usD33mAVeVl43DfqFpc2pnqfdNyZ0W75fnlc2NEIb+ynQElbE+9hdnlzEV6GxsMYC2yl+4W1k4K+IbMBuq1XEV+FH6KZ3tiuVSmPL6I94/a9vyxyyAbtfcnlfMtMIrQZ2K6M/qm25b6sc0oPdflERWyzQa6CtjP7Y27zuwtHQarF0aNffTYj6WBo6fVvlkI3Y7WO949sgR6xQXjemDIxQXrzat1UO+RR7r8IA+cosIprRd4CRZfTnKxdlGUg9bL4Ko/OEioiRsFotlt3hho242QCbBbQaGFEGPq+8+GPfVjlkA/bmC7spzurRWrQa+HwZfe4r29MeWcNWK7Oe4gpLq4Gty+jTRRa1eY/YaOk+6yjGRop6aKe9hpSBbZUXF3H+qxpbr8Ieittiacfnhmtbq8GArSmrHtzk28oVZQxU6LuyjrE13NBFcV+FWg2sLWPw3vRtlWNsfZx0UdxXoVYDm8oY9PR9W+UYWyPvPdj7EMga6hGEMgZjE76tckw3dvpGayvFbbHUY57R+S8atCP0eaULOy1Nkcf71LM0ZfRzgNo5xbyyGjstVt7ScJugTR+6qtVi9fNvZP9cEj6lmDvFI4yEpU1Ts6tvqxyzFriI+Hkp1gIXVOSY4qKiPX55xVAM1jH7tioFFgPfRJL7Tka3/KWErL96qNJ3Sl1hUe+PGIrBOmbfVqXE+8ghnioqvmubLupl7GVaLVYLPeoWq4ysZdckHtsV2N63ZS28sT26fvaaIAg6o0loo12ug5QhyMjzUN8V8YTRbvmhVX85VHnzf/i2MCWGIB34KcDewL7IEqP1yPnYrwNLOqCjUsxcDbXEEpY259UBwD2+LXTMUCSt0zlI+swd61zzrfDPHmBhh2S8e7RS7H0B+yuvWwz9p9jvieQWbcYqCjYCXzM+sCNwOfB9YJThrf4EXFGBZb5tcsQH6AZI9wqC4NWoj/Ua+oxt2lxaeWMU8HPkVFlTUQF8B5jfAQf6NsQBX0YnqtWIlvrWuwdAu/Ih2lzweWIUMBc4LeF99gQe7YAv+TbIMscqr1sYBEEAm2+keFb5y9rTK/LERcCplu41BvhlR7HmVk9SXvfX6D+qhaXNL7oX8oVUFI5AhGWTQ4CfdPT3YfPMFOSoQQ19eUqrhfUG8gmtQXtCWKbpkNPYL0V/9rUJP0RO+8g72li/EQRBXzaa2l062hzuJqfbZ5kK7j5Gvggc79tAC2jPr9wsF3ytsLRriXZFf0RKlvkG8b4AtXzdt4EJOQr9cqnNTq+oFdZLwFvKG5mcG51V2hzff5JvAxNyjvK6TuCF6h/UCitAf9rT8eS/D+GytYJ8T9pPQP8qfyQaZoiotxP6QYOHn+vb+oS43tI2zLeBCTCJ7RZnGtYT1lJgofKGlwFf8O2BBLjeUZPXrfajkNhqaA+CYGntDxvlbjA57/kC315IwHuO72/7gM20uNDg2rrnRjcS1sPo0wJeS34nprUfKnHRZhnOEjshMdWwigZ98kbC6gLmGVRG22xmjSdwm1v1774NjIFJLOcFQVB3LdpAUw67IOvhtR3c8eTskIFw5P1hZGWCbd4Gjqnk65jjNvT5/HuA8UEQ1O1ODJQf6z3MvhCv8u0VUyqywfRu3By1+1DORAVmMXyAAfqozRKv3Yw+19OPgOl+/RKLvyHrsGzSjgg2T0xHYqjhU0QbDWkmrOWYfSFe7s0t8dmIOOlJS/d7HZnYfte3YYaYxO53NOn2aFJFzkY/3jMduN6LW5LxCXAJ+kO1G7EY+EEFXqzk6xCB69G/bbqBG5tdpBHWO8AdBpWchexuyRuvIYv9ZmM+/rQJ+ANwZgWe922IIZORmGm5A8VZQdqFaMORLU+jldc/Dxyenm/iUyfZwhDgK8CPgcMY+BCrD5EkIL8Cnq7k8zi559DH6l1gD6ry1tZMEfZhssLxTOD3BtffhH6gzRsDZPEYgmwpn4ysMh2F5LovIaeNLkX2WL5ayW+ytRsxi9FZ1MwLNhKWCSVgAdJ30JaZvj3XoiEzMYvlAuo0REEQ1C2mTEJ2AmsrswGY6tuDLbZgKhIbbRzX02BtmS1hgQyimSi9E5jo25Mt+piIxMQkhg0HTm0KawgyAGhSsRfRd/xbuGM05rFrZ4D87jaFBdKpXWNYwfm+vdqC+ZjF7GOa5MSyLSyQXcMmlQyAe317dhBzL+bxOr3ZTV0IC2SRl2ll7/Tt4UHInZjHSTWV50pYw5ABQtNKz/Xt6UHEXMzjswjlen1XwgIZmV4Zo/Kt16J74rz+VjLwbMNmuBQWSEK2dTGMmE/ra9EFozHvqAdIDA8weZBrYQF8F5nyMDVmIfnfn5gldkN8ahqHXuAE04elISyQpSemBgXI2p7WCH1ypiK+jBODS+M8MC1hgaztiWPYBlpzi0mYidk0TXW5Pu5D0xQWwG0xDQyQ9VAtzJhNfH/fluTBaQurBMxJYOwC8rlYMG32wXzFSXWZQ8LkcGkLKyLuazEqs5zXML/MIplvY7/+qvElLICLife1GJWnyefuH1ccifgkrj97kZhYwaewAE5E9u4l+Rc2j8FzAlk92kIfJPHheiQW1vAtLICDiDdCX1tuIb+5IuKwU2hzUr+tRGJglSwIC2SqIM7cYr1yI+4Tp/lkVGijDV8twmCaxoSsCAskF0ScVRGNyu3oD2jMA+NDm2z5534cJpjLkrAizsB8seBA5TFghleLkjED+KNFf6whhezWWRQWxJ/XGqh0Aj8lH+Ngk8O6mq5Bb1YWktKJuFkVFsgxbleR/KuxXnkFGa/J0sFS08I6veLA3i7galI8rDPLwoqYRLJRZM1X0YPAecBXSSej8fbhs84Ln23jq7hRWQDsnlKs+mgkrKyd9VJC+gU3I4nfXNOJJBpbjiSZ60SORqsuvUjanihz3TZIwrYychBTdRmLdL6j4uRLrIb3gGuQHcqpNxVZa52aMRz51HbxeixK6Qp9NNxnoPLwKqzHGODXSLIN34HMSukJfTLGd3Agv8KKaEPWb3fjP7C+SjdwHxmb1sq7sCJ2RtYercZ/oNMqq0Obd/bt/HoURVgR2yApdUy3i+eptAPfC23NLEUTVjWTkSkQ24OMPkpnaEseBneBYgsrooTM3s8FluFfJNqyLKzzQeTwqN+8jGPZZCIy/zYdOBgY6btCIauQ19wzwFPoj0vOJDZSReaZErAn0ipUkAO0pwDbOX7uGmBJWDqQwyJfRVqqQjDYhdWIccgIeRsyaTuWLUfTy8hIe9SJXoeMxPey5Sh9NJIfFdeHQHmnkbD+D4tVQ8h19tcmAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE5LTA0LTE1VDE0OjM4OjUzKzAwOjAwbg6/VAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxOS0wNC0xNVQxNDozODo1MyswMDowMB9TB+gAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAASAAAAEgARslrPgAAFZ5JREFUeNrtnXl4VdW5h98TsaCghikGmcIgtBBEG0VBvdoqTgwBGoJSHNrbP7z63Ns6QQCtWKFEpGLvUK3aOrQOWBkCt+LVCre9gjKER2SQQTBEMBASBZVJhXP/+PYJh5MzrLXP3mvtk5z3edZjiCd7r/Wt31njt74VonnTHegBFDipO9Ae6OD8tz2QA7QAznD+5kvgW+A4UB+V6oCdQJWTPnb+3aQJh8Nxfx+ynTGD9AUuBYqAAU7K9fmd+4H1TqoEVgCbbRvCS5qjsHoD1wFDgcFAR9sZctgHvAu8BbwBfGQ7Q+mQSFhNiRAioMeAbUA4Q9I2YI6T94z7oofD4bipKdAPeBQZ19gWSbqpyilLf9tGVaWpCas1cBsyZrEtBr/SCqeMrW0bOxlNRVj5wAxkFma74k2leqfM+baNH49MF1Z34CngCPYr2lY64tigu+3KiCZThdUZ+B1wFPsVG5R01LFJF9uVA5knrDbAdOAQ9isyqOmQY6M2NisqkbCCNr0NAeORmVEnA++rRlbIq5y0kxOr6JEV9ePISvuXzt+cgazE53BidT6yWt+dE6v4PYBuBspQA0wEXkQEZ5Qgt04RegNL8e8bXgu8ANwJ/BPQ1kCZ2jrvutN5d62P5VsKnGusthyC3BW2ACbhT7e3EZiGbOMEhSLgQSdvfnSPkxybGiGowuoJLPfYuLuAh4HzbBdOgfOcvH7isQ2WO7b1nSAKawJwwENjzkf2BjOV65wyeGWPA8DNfmc6SMJqCTztoQFnIwPlpkIPp0xe2edpx+a+EBRhdQNWeWSwGUCe8RKYI88poxe2WoVPM9QgCOsSYK8HRnqE4LjAmKAjUO6B3fYideAptoX1I9Kf9T2JrA81VwocG6Q7ayzxMlM2hfUL4FgaxngLuN5ITjOD64A3cW/PY8BdXmXGlrB+mYYBwsgaVJb4TCM92/7Si0yYFlYIGQu5LfQyxCc9S3IGILZKZ7ya1raeaWHNSqOwM3zLVdMlndnjrHRebFJYbru/b4BinwzfHChGbGi0WzQlrLtcFmwncL6/dm8WnI/Y0k0d3O3mhSaENRJ3s78VQC8zdm8W9MLd/utxXPQYfgvrYuCgi8IsJiCekE2MLohtdevjIFKXyvgprK648zN62pbVmxFu9mRr0dj+8UtYLYHVLjL/uG2LNyMeR79+VqO4ce2XsJ5xkek5ti3dDJmDfj09o/JgP4Q1wUVms92fPdx0ixNSPdRrYRWg76S32LZls7AIvTo7QApfNy+FdQr6R9tXk539BYHO6PvDrUDqPC5eCmuSZsaqkRM4WYJBb6ROdOqwLNHDvBJWb/T8qr4FBtq2ZJZGDERv++cwCY6WeSGsEPrn/kbatmCWhIxEry6XEccTwgth3aKZkayXQvDR9Yq4NfYB6QqrDXJeT0fdWTKDZajX6y5iYkWkK6yHNV4eJuukl0kUole3D0f/cTpBQTojAVhbKWb0IUy6FJd7dnq+FbJH1geJt5CLTFbykCPrLYFTnfQl8IWT6pDAHFWIV0ENJsNwl1V68ZQHUa+zI45ddgMJWyeVM/5TUBfV3zQyGATaI7v5gxAx9QXOJsm6jUOi84yHkKjIa4B3gJXIGt63tguagoeQUOVDFT7bCpgK3JHsQ6larAJgC/AdxQxei5wgMYd+i9UCEdNoREwX+Zi7Q8iX7SXgbaR18xZvWiwQUanW3dfIl7AqUYuVkyrbqIvq9xoZs8EpiJCeASqAe/BXVACnI9P6lxFh/QJxMwoibyF1qMJ3gMnJPpCsxeoEbAdOU3xZTySImVnUWqyLgHuB4Uhl2+R94DkknujhtJ/mXYsFsi+4Q/GzR4Ee4XC4Jt7/TNZi3YG6qGZhQ1SpaYccFFgClGJfVCB+6Y8jreaVtjMTw8eon9ppSZJxViJhnQ7crpGh2bYtEofLEY+Kh5BBetAYCsxDKrKd7cxEoVOXt4dCobhx6BMJaxwSU1OFGchMKCjkIt3ePGCI7cykoB1wH/A8MhgOAvtQ3zXpgPQEjUgkrH/WyMh/2rZEFG2BmUhw3EyKSDMceB0JnhIE/l3jsz+L98t4wuqPrGmoMBvYY9sKDvlINBadLjxI9ETit99kOyPIgQrVLnFIKBQqjP1lPGHdqvCwCE/atoBDZ6Q7KU33QZbJQ8R1m+2MoFe3jTQTK6wQ6pUzH1mOsE174AngGtsZ8YhcZNY43nI+tiN1rEJpKBQ6aekqVlgXo35Xyx8sFxzKi9ohJ1BG2M6Kx5wF/Aa4wXI+lE7qIHusg6N/ESuscYoP2oUMNm0zCQORgS2Rj0yMbM4WlyChwlUYG/2PWGENV3zI8xYLK5QXlSBbJE2ZHkjLZXMdTrWuT+o1ooXVC/VDD69aLCiUFw1CDK66j5nJDCPJYQYDqNZ1r1Ao1BDcJVpYqv35h8AH1opZXnQa4ppj4gKkoHAHcDV27oxej1zPosKwyA/Rwrpa8Y/nWihcNONpOjNAVU4HfoW9rZ+/KH7uqsgPEWGFUN/++G9LhYPyoh6Iu0YqR7ymyGDkQIsNVE+xD4ksO0SE1Re1vcE6wFM/DU3upHkHabsdO0OAtag5KXZAXLsbhKW6hWNviaG86HxiprSZRu+2XZlbPJOVtzzP1ME/5ZRQKj/LRvRBhgI2xlp/VfzcZXDC513Vv3elhQJFGE4GD9j7d+jJKyNnUthRGtxBnfrT+Yw8fv632XxzXMslfgLwLHKFiUlWobbdVwT8IfKVUT2utd5wYYTyog7Y3+JwTd923fnLqEcaRBXhXy4o4ZnrH+D0U1XPqgDSanl6bYkiqnU/AE50hcEWlrgWG7nY0Wv6dejJa6Nm8b328aMB3VI4jN9fO4XWp6o663Iqcu3JqYaLoi2sbsjeVCo+AfYbLkyEUny8c88vCjv2YsHo2Y1aqlgm9L+ByYN/ovPoKzAfvnw/ats7Z4VCoW45qLcEqk723lJeVEjwfMNT0t9pqfq0UxsWDut1mc7jzwB+YKFYqhromYP6VW1VFgoCss2kmsdAcH5eH+aNfpS+7VQdReCjz1X3ehu4CvPdYZXi5wpyUL/21sbRrhCZcWl4AwNdiGpj3Q7K/vc/dF/1XeAcw8VT9b/rFRljqVBtuBAgx8+utfBeVxR27MXc4pn0zO2s/Deb6nZQWlHG9v27dF+Xj/nDr6qZ7JKDuktGveFCgKzkqteSRS7M70fFmMe0Wqp1tVspnn8Pm+pcDV+/g/r+rleohgjo0AL10yw2jnjlEawzd3EZmNeHV0eV0+Ms9Z5pw77tjF1Y5mZsFY3pL52WsILcYuUiM6C0uOScAYzu8wO+OPoVz65fzKdfefcdGdSpP68Uz9QS1fu1WylZMNFN9xeL6tlPr1DVQPsWwJmKH/7CcCHAg8C41/ccwp+GP0z702Sp7tqegxm/aCq7vqxNO3MX5vfjtVGz6Hrm2cp/U7nnQ8YunMTHBz71wj7q/a43qGrgzBzUY18dMVwISHOZofjcK3hp5IwGUQFc3uUCXi0up8sZeWk8GS7tMpDXRj+iJaq1ezdT4p2owIPWXBNVDbTKIXUoowjHDRcC1IOSNKKk71W8OGI6uS0b235w5/N4ZeRMup2Z7+rZV3Yr4rVRs+h+Ziflv1lVs5GSBROp8k5UYN41+5ji507JQV31XxouBMQEUlXlym5FPDdsWtL9t0u7DGTe6FkUaIyNAK7o+n3mFs8kv7X6+YbVNZsYs+A+L1uqCK6/eC75SvFzbbQdggzjynB3XDBWaVP3wvx+vDLy18ot15XdinileCZ5p6tPVFfXbGJcRRm7PRjTxSGwnrQ5aKjQQv5cxe48euxr5c9efE4h80bP4ty2ydeJf9j9IuaNflSrpXp39wcUz7/bj5YqgmrX5BWqGvgqRyNzNr4d6gqJYvaqP1P9hXqskgvz+/HqqPKEY6bLu1zASyNm0K6V6gRaWqobF02h5ivvw45GYXpCpaqBYzkamdPyRvMIV+O6dbVbKa0o02opzncWOXvlnnxJ2TU9LuG10Y9wdmv17u+dXe8zesG9WuI2aZ80UF5ByEFjbcJwIQA+d/uHKz/dQOlCvT24QZ36M2/0CVeXH3a/iJdGzNAaU727+wNK/RtTeWYflyiveeagsZpquBCQ5sHYNXs2UbqwTGuKPzCvD8/eMI0f97ueF0dMP2kNLBXLd62jZOEkv7u/aGrSf4QWyrs0OajvAdqIkLeTNIPvr927mXEVk7X25IZ0Po8/j3hYa6D+90/WUrJwoqfbRQqY3mZT3UKqC3qLtReJLpcWq2o2UrJwkhd7c3H5xydrubFiMnsOGt9ONR2fTEtYql9lG4Hva/AoFOW62q2Mq5jsubiWVa9hnB1RHQb+z/A7Va9f3pWDhh+z4UIAHAT+4dXDKvd8yJj597n1f2rEsuo1jF04yYaoQFrz3YbfqXw+IgcNP2bDhYCyyjAeH5L9YN82blw0Je2Wa+nO1dy0aAr1hw8YN4vDOswP3pXd2IPeYoHMDLd5+cD1+z6iZMFENrpsud78+D1KK8rYe/AzSyYB5Mi76VvFtFqsakDla9cVcbwzS1nlJuR4t6e8X7uVkoUT+bBe74zI2ztX8ePF99tsqUDWr9YYfmcuauPsA+FwuDqyCa11ytUC/4PL7Z1kbK6vorSijA371CZXb1Wt5KZFU6k7vN+SGRpYhvlT6Vqn5TNFWK/j09R6w77tlCycyLrarUk/98aOFYyrmMy+Q6YXuxvxLXJNnelu0JWwVGNeXWy4MEJZZT3wgl+P3/LZTsZVTE7Ycr2+fTnjF9/P50dseGc3YgNyuaZpBil+rhJOCGu54h/ZjDu+BB/PNm75bGfclmv+1qWMXzw1KKIC+C/UxsReM0zxc8vhhLC2oB6xzbPbvbUoq1yHeixMV2z5bCdjFtzHi5uW8MG+bfx2zcvc+tdpHDiq6rLmO6uQUJ3hdB+kyfdRW3WvR7TUEHgtDKxArplNxXDshYt8ArnL2beljx37dzNh8QOWipeUo8jVujYuxVK9+WN52LkkOto1WbXfVr29wnvKKrcDj1h7v12WIJeW20A1ROfbkR+ihaUaX/R72A3U8SJyMXZzoha5h9HGEbwByFWDKjTEKY0W1nbgI8UH2Lu+razyIPAA5rczbPIEPiwSK6Ja19vD4XDDtDr2lI5qDHdb8caFssqVwD34sGgaQOYCv7X4ftX7K0+KBR8rLNVbJ7pi+8qzssqX0btiNhPZiNxwZmtV9nrU3aVOmrHHCmsl4rWpgs690X7xayQ0dVNkN2Jj1frwg58pfq4aeDf6F7HCCqN+29MYbN8SUVb5OdIl2pot+cUe5BYOW+MqkLodo/jZVyPLDBHinYTW2ToJwsXenwM/x+fFU4PUILd9LcL8Qmg0OnXb6E7DeMLagPoWz72AergV/6hDKsO3/URDVCHd3wLsiioPqVsVVoTD4Q2xv0wUu0Hnvud/tWiAaOqQlutx7ETGSZflyI0TS2xnBPg3jc/GvTc6kbDmoh4WcCp2jobFYz8wEfgp5v3B3XIM+SKXYPdmtQgdkTpVoY4EY/JEwjoEPKmRGdVm0wTfIH3+GOAd25lJwUfAT5AWwsYeYDx06vLJcDh8MN7/SBbG6HeobyFMJHhB/lcBo5Brfo2cd9fgW2SyMRb4E/JFDgIFSF2qcBTRSFySCasGvcGwzQuxE1EPPIRcavQc9u4CimY5spQwHnjfdmZi0KnD50myrZbqQsUCxL9GNSThNZjeIC7Xcg+7DLgZKMbsbPYY4pb0PLJR6123V+bZsGwo8KbiZ79GbuWtilm+aiBVRL8q9GaI93lVSp94B1mWuAFxv1mNjMn8YgvwR2Rgfi1iy6CMpWLRqbs/kuI8aguFh8xABpgqsZGGAg8i3U9QOYbccbwWCUVZhFzkfQVyP00e7qMR70W636XA35Ej8KZvQnXDg0jdqXAEmJ7qQ6p3C09HfQoK4sOzQePz7tHrCpPRCgl8cg5ycKA30BZxyc0FWiN3JoaQVu4IJ+7wqwPeAzY7P5sLOZN+V1iI3lGyGcD9kX8k6gpVaYNc0BNWTMu8tF0WX1mKer3uJiYOaTgcjpt0uFUjA2FE2VmCzXT06rSRb5YXwgohLZFORlQOZ2Sxw0j06nIZcYZOXggL4FwkLpNqZr7Bg/twsnjOQKRuVOvxMFL3jfBKWCCLaDpKr0YGwlmCQW+kTnTqMOHCqZfCOgVZ7NPJ2HtkyIWWTZzO6NfdCpLEd/dSWCAHRg9oZnCRbatmaXAeVE1fkOJwsNfCApigmckw8JRtyzZjnkK/vm5O9VA/hAXi5KWb2cdsW7gZ8hj69aS0leeXsFoi+226mZ5j29LNiDno189qpG5T4pewALoh/k7ZbjF4uOn+apE6VcJPYYEEZDvoohCLyM4W/aAz+gP1MFKHWsH1/BYWSHih4y4Ksxzb5xObFj0Rm+rWw3HgR7ovMyEsgLtdFCiM+PZkV+jTZyBiSzd1cI+bF5oSFohvj5uCfUN2bzEdRqK3TROdHnT7UpPCAnjUZQHDZL0i3DAD9/Z+NJ0XmxZWCJiVRmGXIQ5oWZLTH32Pk+g0C3Vnz7iYFlYEt91iJE3zPYeZyzTSs63r7i8aW8ICuAt3s8VIehN1f+zmwNWITdza8zhSJ55gU1ggp1QOpWGMMHIyu8BYjoNHgWODdGx4GKkLz7AtLJCTMG5W6GNTOcGJFWGCjk6Z07VbLVIHnhIEYYFsFbjZW4yXpiNHtZoqeej7pCdKq9HYptEhKMICOWblxisiUZqN+gWNmUAPp0xe2ecZ1M6EuiJIwopwC/rOgsnSfCRGQ6ZyHTDPQ3scwEB06yAKC9zvayVL1cCvyIx1sEInr7o+6KnScgzdiBtUYYEc8y8j/VljvLQRWa+xc7FUfIqcPG30obyHgMmohU7whCALK8K5pLeKrDIregEJCnI5Zq4hznXeFYmP6sWsOFFaBvQxVFcNJBJWWsv5PhBCxgUzgU4G3lcNfIx4BOxw/l0fk44jYXsiketaI2GdcpBYD9GpGzL4jiRfZmIx1ABTkBBJxpuKoLVOqWiDTLX96B6bSjrk2OikWAqmyYSuMB5dkAuKjmK/IoOSjjo26WK7ciBzhRWhAPHfPoL9irWVjgBPE7BtrUwXVoR8xPeoHvsVbSrVO2XOt238eDQVYUVoDdyG/nHxTEorkEiKrW0bOxlNTVjRFCJbIF4vMtpI1U5ZMmFxF2jawooQQnbv5wDbsC8S1bTNyfNg0vTmtEGmrGN5SW9k/20oMASJJRoE6pBu7i3gDdSvSw4kiVqnpiys2HJ+F2kVLkSC7w4AzvL5vQeQwLHrgTXIZZGbkZaqSdDchZWI7sgKeQGyaduNxqvpOchKe2QQfRBZiT9O41X6yEp+JNm8HdUIiYT1/4BdpxoYQLWmAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE5LTA0LTE1VDE0OjM4OjU0KzAwOjAwq6mB2gAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxOS0wNC0xNVQxNDozODo1NCswMDowMNr0OWYAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC\"","import { debug } from \"console\"\r\nimport React, { Component } from \"react\"\r\nimport { Container, Row, Col, Button, Form, Modal, Spinner } from \"react-bootstrap\"\r\nimport { FaAngleDown, FaPencilAlt, FaTimes } from \"react-icons/fa\"\r\nimport { BehaviorSubject, concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { addProcessingCollectionTest, hasCachedCollectionTests, isProcessingCollection, ProcessingCollectionLabel } from \"../../../api/CachedCollectionTest\"\r\nimport AutoFilterCompany from \"../../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport AutoFilterLocationsGet from \"../../../api/Location/AutoFilterLocationsGet\"\r\nimport AutoFilterLocation from \"../../../api/Location/LocationModel/AutoFilterLocation\"\r\nimport OrderResultRecord from \"../../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport ServiceDetails from \"../../../api/OrderResults/OrderResultModel/ServiceDetails\"\r\nimport AutoFilterRegion from \"../../../api/Regions/Model/AutoFilterRegion\"\r\nimport PersonnelRegulatoryModes from \"../../Accounts/RegulatoryMode/PersonnelRegulatoryModes\"\r\nimport CompanyInput from \"../../FormattedInputs/CompanyInput\"\r\nimport CardRow from \"./Cards/CardRow\"\r\nimport Category from \"../../../api/LabService/LabServiceModel/EmployeeCategory\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { PoolRegulatoryMode } from \"../../../api/Randoms/RandomsModel/PoolCompanyInfo\"\r\nimport EmployeeCategoriesGetObservable from \"../../../api/LabService/EmployeeCategoriesGet\"\r\nimport EmployeeCategory from \"../../../api/LabService/LabServiceModel/EmployeeCategory\"\r\nimport TestEventUpdateData from \"../../../api/OrderResults/OrderResultModel/TestEventUpdateData\"\r\nimport { filter, map, switchMap } from \"rxjs/operators\"\r\nimport LabAccountsGetObservable, { FilteredLabAccountsGetObservable } from \"../../../api/LabService/LabAccountsGet\"\r\nimport LabAccount from \"../../../api/Randoms/RandomsModel/LabAccount\"\r\nimport TestToBePerform from \"../../../api/LabService/LabServiceModel/TestToBePerform\"\r\n\r\n\r\ninterface DrugTestCompareProps {\r\n currentRowInfo: OrderResultRecord\r\n currentServiceInfoNew: ServiceDetails\r\n currentServiceInfoOld: ServiceDetails\r\n isOnTrack?: boolean\r\n hasChanges: boolean\r\n}\r\n\r\ninterface DrugTestCompareState {\r\n\r\n}\r\n\r\nexport default class DrugTestCompare extends Component {\r\n\r\n dataRow(title: string, newValue: string, oldValue: string, ignoreChanges: boolean = false) {\r\n\r\n //{date ? FormatDate(value) : time ? FormatTime(value) : bool ? (value ? \"Yes\" : \"No\") : value}\r\n if ((newValue !== oldValue) || ignoreChanges){\r\n return (\r\n \r\n {title}\r\n {newValue}\r\n \r\n {oldValue}\r\n \r\n )\r\n }\r\n return \"\"\r\n\r\n }\r\n\r\n render = () => {\r\n const { currentRowInfo, currentServiceInfoNew, currentServiceInfoOld, isOnTrack } = this.props\r\n const panelInfoNew = currentServiceInfoNew.Panel\r\n const panelInfoOld = currentServiceInfoOld.Panel\r\n const EventDataNew = currentServiceInfoNew.EventData\r\n const EventDataOld = currentServiceInfoOld.EventData\r\n const isDrug = currentServiceInfoNew.TestTypeDescription === \"Drug\"\r\n\r\n const primaryIdNew = (currentRowInfo.DonorID || \"\") + \" \" + EventDataNew?.PrimaryIDType\r\n const primaryIdOld = \"\"\r\n\r\n const personelIdNew = primaryIdNew\r\n const personelIdOld = primaryIdOld\r\n const testTypeOrSampleIDChanged = ((currentServiceInfoNew.TestTypeDescription !== currentServiceInfoOld.TestTypeDescription) || (currentServiceInfoNew.SampleID !== currentServiceInfoOld.SampleID))\r\n return (\r\n \r\n \r\n \r\n
\r\n {!isOnTrack && {currentServiceInfoNew.TestTypeDescription}}TEST DETAIL COMP {currentServiceInfoNew.CCFName} {currentRowInfo ? currentRowInfo[\"DonorID\"] : \"\"}\r\n
\r\n \r\n
\r\n \r\n \r\n {this.dataRow(\"PRIMARY ID\", primaryIdNew, primaryIdOld)}\r\n {this.dataRow(\"PERSONNEL ID\", personelIdNew, personelIdOld)}\r\n {this.dataRow(\" \", \" \", \" \")}\r\n {this.props.hasChanges &&\r\n \r\n Changes\r\n New Value\r\n \r\n Old Value\r\n \r\n }\r\n {this.dataRow(\"NAME\", currentServiceInfoNew.CCFName, currentServiceInfoOld.CCFName)}\r\n {!isOnTrack && this.dataRow(\"REGULATORY MODE\", EventDataNew?.RegulatoryModeName, EventDataOld?.RegulatoryModeName)}\r\n {!isOnTrack && this.dataRow(\"EMPLOYEE CATEGORY\", EventDataNew?.EmployeeCategoryName, EventDataOld?.EmployeeCategoryName)}\r\n {this.dataRow(\"COMPANY NAME\", EventDataNew?.CompanyName, EventDataOld?.CompanyName)}\r\n {!isOnTrack && this.dataRow(\"LOCATION\", EventDataNew?.LocationName, EventDataOld?.LocationName)}\r\n {!isOnTrack && this.dataRow(\"LAB ACCOUNT\", currentServiceInfoNew.LabAccountNumber, currentServiceInfoOld.LabAccountNumber)}\r\n {this.dataRow(\"REASON FOR TEST\", currentServiceInfoNew.TestReasonDescription, currentServiceInfoOld.TestReasonDescription)}\r\n {isOnTrack && this.dataRow(\"Specimen / Reference ID\", currentServiceInfoNew.SampleID, currentServiceInfoOld.SampleID)}\r\n {!isOnTrack && testTypeOrSampleIDChanged && this.dataRow(\"TEST TYPE\", currentServiceInfoNew.TestTypeDescription, currentServiceInfoOld.TestTypeDescription, true)}\r\n {!isOnTrack && testTypeOrSampleIDChanged && this.dataRow(\"Specimen / Reference ID\", currentServiceInfoNew.SampleID, currentServiceInfoOld.SampleID, true)}\r\n {!isOnTrack && this.dataRow(\"SAMPLE TYPE\", currentServiceInfoNew.SampleTypeDescription, currentServiceInfoOld.SampleTypeDescription)}\r\n {!isOnTrack && this.dataRow(\"PANEL\", panelInfoNew?.Description, panelInfoOld?.Description)}\r\n {!isOnTrack && this.dataRow(\"REGULATED\", currentServiceInfoNew.DOT ? \"Yes\" : \"No\", currentServiceInfoOld.DOT ? \"Yes\" : \"No\")}\r\n {this.dataRow(\"EVENT STATUS\", currentServiceInfoNew.TestReleaseStatusDescription, currentServiceInfoOld.TestReleaseStatusDescription)}\r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Button, Modal } from \"react-bootstrap\"\r\nimport TestSteps from \"./EventDetails/TestSteps\"\r\nimport OrderResultRecord from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { toast } from \"react-toastify\"\r\nimport { CurrentServiceDetailsForCompare, ResolveAlert } from \"../../api/OrderResults/CurrentServiceDetails\"\r\nimport ServiceDetails from \"../../api/OrderResults/OrderResultModel/ServiceDetails\"\r\nimport { ImplementationTypeGovt, StorageKey } from \"../../config/Constants\"\r\nimport TestEventUpdateData from \"../../api/OrderResults/OrderResultModel/TestEventUpdateData\"\r\nimport DrugTestCompare from \"./EventDetails/DrugTestCompare\"\r\n\r\ninterface EventDetailsCompareProps {\r\n details: OrderResultRecord\r\n onHide: () => void\r\n onRefreshGrid?: () => void\r\n}\r\n\r\ninterface EventDetailsCompareState {\r\n dataNew?: ServiceDetails\r\n dataOld?: ServiceDetails\r\n loadingNew: boolean\r\n loadingOld: boolean\r\n}\r\n\r\nexport default class EventDetailsCompare extends Component {\r\n subscriptionNew?: Subscription\r\n subscriptionOld?: Subscription\r\n updateSubscription?: Subscription\r\n state: EventDetailsCompareState = { dataNew: undefined, dataOld: undefined, loadingNew: false, loadingOld: false}\r\n isOnTrack: boolean = sessionStorage.getItem(StorageKey.ImplementationType) === ImplementationTypeGovt\r\n\r\n componentDidMount() {\r\n this.setState({ loadingNew: true, loadingOld: true, dataNew: undefined, dataOld: undefined })\r\n const details = this.props.details\r\n this.subscriptionNew = CurrentServiceDetailsForCompare({ TestDetailClinicalID: undefined, TestDetailID: details.TestDetailID }).subscribe(\r\n (data: ServiceDetails) => {\r\n this.setState({ dataNew: data, loadingNew: false })\r\n this.subscriptionOld = CurrentServiceDetailsForCompare({ TestDetailClinicalID: undefined, TestDetailID: details.MergeFrom }).subscribe(\r\n (data: ServiceDetails) => this.setState({ dataOld: data, loadingOld: false }),\r\n (error: string) => {\r\n this.setState({ loadingOld: false })\r\n toast.error(error)\r\n }\r\n )\r\n },\r\n (error: string) => {\r\n this.setState({ loadingNew: false })\r\n toast.error(error)\r\n }\r\n )\r\n }\r\n\r\n handleSave = () => {\r\n this.updateSubscription = ResolveAlert({TestEventAlertID: this.props.details.TestEventAlertID}).subscribe(\r\n (data: string) => {\r\n toast.success(data)\r\n this.props.onHide();\r\n this.props.onRefreshGrid && this.props.onRefreshGrid();\r\n }),\r\n (error: string) => {\r\n toast.error(error)\r\n this.props.onHide();\r\n }\r\n }\r\n handleCancel = () => {\r\n this.props.onHide();\r\n this.props.onRefreshGrid && this.props.onRefreshGrid();\r\n }\r\n componentWillUnmount() {\r\n this.subscriptionNew && this.subscriptionNew.unsubscribe()\r\n this.subscriptionOld && this.subscriptionOld.unsubscribe()\r\n this.updateSubscription && this.updateSubscription.unsubscribe()\r\n }\r\n hasChanges() {\r\n const currentRowInfo = this.props.details\r\n const currentServiceInfoNew = this.state.dataNew\r\n if (!currentServiceInfoNew) {\r\n return false\r\n }\r\n const currentServiceInfoOld = this.state.dataOld\r\n if (!currentServiceInfoOld) {\r\n return false\r\n }\r\n const panelInfoNew = currentServiceInfoNew.Panel\r\n const panelInfoOld = currentServiceInfoOld.Panel\r\n const EventDataNew = currentServiceInfoNew.EventData\r\n const EventDataOld = currentServiceInfoOld.EventData\r\n\r\n if (currentServiceInfoNew.CCFName !== currentServiceInfoOld.CCFName) {\r\n return true\r\n }\r\n if (EventDataNew?.RegulatoryModeName !== EventDataOld?.RegulatoryModeName) {\r\n return true\r\n }\r\n if (EventDataNew?.EmployeeCategoryName !== EventDataOld?.EmployeeCategoryName) {\r\n return true\r\n }\r\n if (EventDataNew?.CompanyName !== EventDataOld?.CompanyName) {\r\n return true\r\n }\r\n if (EventDataNew?.LocationName !== EventDataOld?.LocationName) {\r\n return true\r\n }\r\n if (currentServiceInfoNew.LabAccountNumber !== currentServiceInfoOld.LabAccountNumber) {\r\n return true\r\n }\r\n if (currentServiceInfoNew.TestReasonDescription !== currentServiceInfoOld.TestReasonDescription) {\r\n return true\r\n }\r\n if (currentServiceInfoNew.SampleID !== currentServiceInfoOld.SampleID) {\r\n return true\r\n }\r\n if ((currentServiceInfoNew.TestTypeDescription !== currentServiceInfoOld.TestTypeDescription) || (currentServiceInfoNew.SampleID !== currentServiceInfoOld.SampleID)) {\r\n return true\r\n }\r\n if ((currentServiceInfoNew.TestTypeDescription !== currentServiceInfoOld.TestTypeDescription) || (currentServiceInfoNew.SampleID !== currentServiceInfoOld.SampleID)) {\r\n return true\r\n }\r\n if (currentServiceInfoNew.SampleTypeDescription !== currentServiceInfoOld.SampleTypeDescription) {\r\n return true\r\n }\r\n if (panelInfoNew?.Description !== panelInfoOld?.Description) {\r\n return true\r\n }\r\n if (currentServiceInfoNew.DOT !== currentServiceInfoOld.DOT) {\r\n return true\r\n }\r\n if (currentServiceInfoNew.TestReleaseStatusDescription !== currentServiceInfoOld.TestReleaseStatusDescription) {\r\n return true\r\n }\r\n return false\r\n }\r\n render() {\r\n const currentRowInfo = this.props.details\r\n const currentServiceInfoNew = this.state.dataNew\r\n const currentServiceInfoOld = this.state.dataOld\r\n const hasChanges = this.hasChanges()\r\n return currentRowInfo && currentServiceInfoNew && currentServiceInfoOld ? (\r\n \r\n \r\n EVENT DETAILS COMPARE\r\n \r\n \r\n \r\n \r\n {\r\n \r\n {hasChanges && }\r\n {hasChanges && }\r\n {!hasChanges && }\r\n }\r\n \r\n ) : null\r\n }\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Button, Modal, Spinner, Col, Row, Table, Container } from \"react-bootstrap\"\r\nimport OrderResultRecord from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport { Subscription, BehaviorSubject, of, concat } from \"rxjs\"\r\nimport { distinctUntilChanged, switchMap, map, catchError } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport ColumnHeaderFilter from \"../ColumnHeaderFilter\"\r\nimport ColumnFilter from \"../../api/Randoms/RandomsModel/ColumnFilter\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport TestEventUpdateData from \"../../api/OrderResults/OrderResultModel/TestEventUpdateData\"\r\nimport SearchField from \"../../api/SearchField\"\r\nimport SearchBar from \"../SearchBar\"\r\nimport { Filter, Sort } from \"../../api/GridRequest\"\r\nimport FormatSSN from \"../../formatters/FormatSSN\"\r\nimport { TestToMergeGetObservable, MergeTest } from \"../../api/OrderResults/TestToMergeGet\"\r\nimport TestToMergeViewModel from \"../../api/OrderResults/OrderResultModel/TestToMergeRecord\"\r\nimport { TestToMergeRecord } from \"../../api/OrderResults/OrderResultModel/TestToMergeRecord\"\r\nimport TablePagination from \"../TablePagination\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\n\r\ninterface SearchTestToMergeProps {\r\n details: OrderResultRecord\r\n onHide: () => void\r\n}\r\n\r\ninterface SearchTestToMergeState {\r\n data?: TestToMergeViewModel\r\n loading: boolean\r\n searchFields: SearchField[]\r\n selectedTest?: TestToMergeRecord\r\n dataSaving: boolean\r\n showMergeFullCopyConfirmation: boolean\r\n showMergeUpdateEmptyConfirmation: boolean\r\n}\r\nconst DefaultSearchFields: SearchField[] = [\r\n { ID: \"AllPersonnelIDs\", Name: \"All Personnel IDs\" },\r\n { ID: \"AlternateID\", Name: \"Alternate ID\" },\r\n { ID: \"DriverID\", Name: \"Driver ID\" },\r\n { ID: \"EmployerID\", Name: \"Employer ID\" },\r\n { ID: \"SSN\", Name: \"SSN\" },\r\n { ID: \"FirstName\", Name: \"First Name\" },\r\n { ID: \"LastName\", Name: \"Last Name\" },\r\n { ID: \"FullName\", Name: \"Full Name\" },\r\n { ID: \"SampleID\", Name: \"Sample ID\" }\r\n]\r\ninterface TesToMergeSearchParams {\r\n pageNumber: number\r\n sort: Sort\r\n filters: Filter[]\r\n search: { field: string, text: string }\r\n}\r\ninterface ResultColumn {\r\n ID: string\r\n Name: string\r\n}\r\nconst ResultColumns: ResultColumn[] = [\r\n { ID: \"ID\", Name: \"ID\" },\r\n { ID: \"Name\", Name: \"Name\" },\r\n { ID: \"CollDate\", Name: \"Coll Date\" },\r\n { ID: \"ReferenceID\", Name: \"Reference ID\" },\r\n { ID: \"Reason\", Name: \"Reason\" },\r\n { ID: \"Type\", Name: \"Type\" },\r\n { ID: \"Result\", Name: \"Result\" },\r\n { ID: \"Status\", Name: \"Status\" },\r\n { ID: \"Company\", Name: \"Company\" },\r\n]\r\n\r\nconst PageSize = 20\r\nexport default class SearchTestToMerge extends Component {\r\n subscription?: Subscription\r\n mergeSubscription?: Subscription\r\n pageSubscription?: Subscription\r\n state: SearchTestToMergeState = {\r\n data: undefined, loading: false, searchFields: DefaultSearchFields,\r\n selectedTest: undefined, dataSaving: false, showMergeFullCopyConfirmation: false, showMergeUpdateEmptyConfirmation: false\r\n }\r\n\r\n page$ = new BehaviorSubject({\r\n pageNumber: 1,\r\n sort: { column: \"\", order: \"\" },\r\n filters: [],\r\n search: { field: \"\", text: \"\" }\r\n })\r\n\r\n componentDidMount() {\r\n this.pageSubscription = this.page$.pipe(\r\n distinctUntilChanged(),\r\n switchMap(params => concat(\r\n of({ loading: true }),\r\n TestToMergeGetObservable(params.pageNumber, PageSize, params.sort, params.filters, params.search, this.props.details.TestDetailID, this.props.details.TestType).pipe(\r\n map((result: TestToMergeViewModel) => ({ data: result, loading: false })))\r\n )\r\n )\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: TestToMergeViewModel }) => {\r\n if (newState.data) {\r\n this.setState({ loading: newState.loading, data: newState.data })\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n },\r\n (error: string) => {\r\n this.setState({ loading: false })\r\n toast.error(error)\r\n }\r\n )\r\n }\r\n\r\n\r\n componentWillUnmount() {\r\n this.mergeSubscription && this.mergeSubscription.unsubscribe()\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n }\r\n\r\n\r\n onCancel = () => {\r\n this.props.onHide()\r\n\r\n }\r\n confirmMergeFullCopy = () => {\r\n this.setState({ showMergeFullCopyConfirmation: true })\r\n }\r\n onMergeFullCopy = () => {\r\n\r\n this.setState({ showMergeFullCopyConfirmation: false })\r\n if (this.state.selectedTest) {\r\n this.mergeTest(1)\r\n //this.props.onHide()\r\n return\r\n }\r\n this.props.onHide()\r\n }\r\n confirmMergeUpdateEmpty = () => {\r\n this.setState({ showMergeUpdateEmptyConfirmation: true })\r\n }\r\n onMergeUpdateEmpty = () => {\r\n this.setState({ showMergeUpdateEmptyConfirmation: false })\r\n if (this.state.selectedTest) {\r\n this.mergeTest(2)\r\n //this.props.onHide()\r\n return\r\n }\r\n this.props.onHide()\r\n }\r\n createMergeParams(mergeMode: number) {\r\n return {\r\n TestDetailID: this.props.details.TestDetailID,\r\n MergeTestDetailID: this.state.selectedTest?.TestDetailID || 0,\r\n MergeMode: mergeMode,\r\n KeepReleased: false\r\n }\r\n }\r\n mergeTest(mergeMode: number) {\r\n this.setState({ dataSaving: true, loading: false })\r\n const updateData = this.createMergeParams(mergeMode)\r\n this.mergeSubscription && this.mergeSubscription.unsubscribe()\r\n this.mergeSubscription = MergeTest(updateData).subscribe(\r\n data => {\r\n this.setState({ dataSaving: false })\r\n toast.success(data),\r\n // this.onSubmit()\r\n this.props.onHide()\r\n },\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ dataSaving: false })\r\n },\r\n () => {\r\n this.setState({ dataSaving: false })\r\n this.props.onHide()\r\n }\r\n )\r\n\r\n }\r\n sortGrid(column: string, order?: string) {\r\n const newSort = { column: column, order: order || \"\" }\r\n this.page$.next({ ...this.page$.value, sort: newSort })\r\n }\r\n\r\n filterGrid(column: string, items: string[]) {\r\n const filters = [...this.page$.value.filters]\r\n const filter = { column: column, values: items }\r\n let index = filters.findIndex(item => item.column === filter.column)\r\n if (index >= 0) {\r\n filters[index] = filter\r\n } else {\r\n filters.push(filter)\r\n }\r\n\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, filters: filters })\r\n }\r\n onSearch = (field: string, text: string) => {\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, search: { field: field, text: text } })\r\n }\r\n formatSearchString = (ID: string, value: string): string => {\r\n return ID === \"SSN\" ? FormatSSN(value) : value\r\n }\r\n pageChanged = (pageNumber: number) => {\r\n this.page$.next({ ...this.page$.value, pageNumber: pageNumber })\r\n }\r\n filterItems = (columnName: string): any[] => {\r\n if (columnName === \"ID\") {\r\n return this.state.data?.ID || []\r\n }\r\n if (columnName === \"Name\") {\r\n return this.state.data?.Name || []\r\n }\r\n if (columnName === \"DateCollected\") {\r\n return this.state.data?.DateCollected || []\r\n }\r\n if (columnName === \"Reason\") {\r\n return this.state.data?.Reason || []\r\n }\r\n if (columnName === \"Type\") {\r\n return this.state.data?.Type || []\r\n }\r\n if (columnName === \"Result\") {\r\n return this.state.data?.Result || []\r\n }\r\n if (columnName === \"Status\") {\r\n return this.state.data?.Status || []\r\n }\r\n if (columnName === \"Company\") {\r\n return this.state.data?.Company || []\r\n }\r\n return []\r\n }\r\n renderHeaderColumn = (columnName: string, title: string) => {\r\n const sort = this.page$.value.sort\r\n return \r\n {this.state.data\r\n ? !!item) || []}\r\n filteredItems={this.page$.value.filters.find(item => item.column === columnName)?.values || []}\r\n onSort={(order?: string) => this.sortGrid(columnName, order)}\r\n onFilter={(items: string[]) => this.filterGrid(columnName, items)} />\r\n : title.toUpperCase()}\r\n \r\n }\r\n\r\n selectTest = (row: TestToMergeRecord) => {\r\n this.setState({ selectedTest: row })\r\n }\r\n\r\n renderRows = () => {\r\n if (this.state.data?.Records && this.state.data?.Records.length) {\r\n return this.state.data.Records.map((row: TestToMergeRecord, i: number) =>\r\n this.selectTest(row)}>\r\n {row.ID}\r\n {row.Name}\r\n {FormatDate(row.DateCollected)}\r\n {row.TestReasonCode}\r\n {row.SampleTypeCode}\r\n {row.EventResultCode}\r\n {row.EventStatusCode}\r\n {row.Company}\r\n )\r\n } else {\r\n return No Records Found\r\n }\r\n }\r\n\r\n render() {\r\n const selectedTest = this.state.selectedTest\r\n const fullCopyConfirmationText = \"Please be aware all original test information will be retained. All merge data will overwrite the fields on the existing test. Press 'Continue' to merge the two records or 'Cancel' to return.\"\r\n const updateEmptyConfirmationText = \"Please be aware all original test information will be retained. Any merge data will be lost except for values that can be populated to null fields on the original test. Press 'Continue' to merge the two records or 'Cancel' to return. \"\r\n\r\n const content = <>\r\n \r\n Merge\r\n \r\n \r\n {\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {\r\n \r\n \r\n \r\n \r\n \r\n {this.renderHeaderColumn(\"ID\", \"ID\")}\r\n {this.renderHeaderColumn(\"Name\", \"Name\")}\r\n {this.renderHeaderColumn(\"DateCollected\", \"Coll Date\")}\r\n {this.renderHeaderColumn(\"Reason\", \"Reason\")}\r\n {this.renderHeaderColumn(\"Type\", \"Type\")}\r\n {this.renderHeaderColumn(\"Result\", \"Result\")}\r\n {this.renderHeaderColumn(\"Status\", \"Status\")}\r\n {this.renderHeaderColumn(\"Company\", \"Company\")}\r\n\r\n\r\n\r\n \r\n \r\n \r\n {\r\n this.state.loading ?\r\n \r\n \r\n : this.renderRows()\r\n }\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n {this.state.data ?\r\n \r\n \r\n Total records: {this.state.data.Total}\r\n \r\n \r\n : undefined}\r\n {(this.state.data && this.state.selectedTest) ?\r\n \r\n \r\n \r\n Donor ID: {this.state.selectedTest.ID || \"\"}\r\n Reason For Test: {this.state.selectedTest.TestReason || \"\"}\r\n \r\n \r\n First Name: {this.state.selectedTest.FirstName}\r\n Sample Type: {this.state.selectedTest.SampleType || \"\"}\r\n \r\n \r\n Last Name: {this.state.selectedTest.LastName}\r\n Federal Regulated: {this.state.selectedTest.DOT ? \"Yes\" : \"No\"}\r\n \r\n \r\n : undefined\r\n }\r\n
}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showMergeFullCopyConfirmation: false })} />\r\n\r\n this.setState({ showMergeUpdateEmptyConfirmation: false })} />\r\n \r\n\r\n return <>\r\n {\r\n {content}}\r\n {{content}}\r\n \r\n }\r\n}\r\n","import { useState } from \"react\"\r\nimport { Button, Container, Form, Modal, Spinner } from \"react-bootstrap\"\r\nimport { FaPrint } from \"react-icons/fa\"\r\n\r\nenum PrintMode {\r\n REPORTS = \"REPORTS\",\r\n RECORDS = \"RECORDS\"\r\n}\r\n\r\ninterface PrintFormModalProps {\r\n disabled: boolean\r\n hasReports: boolean\r\n printing: boolean\r\n onPrintRecords: () => void\r\n onPrintReports: () => void\r\n}\r\n\r\nconst PrintFormModal = (props: PrintFormModalProps) => {\r\n const [printMode, setPrintMode] = useState(PrintMode.REPORTS)\r\n const [showPrintModal, setShowPrintModal] = useState(false)\r\n const { disabled, printing, hasReports, onPrintRecords } = props\r\n\r\n const showPrintForm = () => hasReports ? setShowPrintModal(true) : onPrintRecords()\r\n\r\n const hidePrintForm = () => setShowPrintModal(false)\r\n\r\n const onChange = (e: React.ChangeEvent) => setPrintMode(e.target.value as PrintMode)\r\n\r\n const onPrint = (): void => {\r\n switch (printMode) {\r\n case PrintMode.RECORDS:\r\n props.onPrintRecords()\r\n break\r\n case PrintMode.REPORTS:\r\n props.onPrintReports()\r\n break\r\n }\r\n hidePrintForm()\r\n }\r\n\r\n return (\r\n <>\r\n \r\n hidePrintForm()} dialogClassName=\"dark\">\r\n \r\n \r\n CHOOSE OPTION\r\n \r\n \r\n \r\n \r\n onChange(e)} />\r\n onChange(e)} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\nexport default PrintFormModal\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport TestToMergeViewModel, {MergeEventParameters} from \"./OrderResultModel/TestToMergeRecord\"\r\nimport { Filter, Sort } from \"../GridRequest\"\r\n\r\nexport function TestToMergeGetObservable(pageNumber: number, pageSize: number, sort: Sort, filters: Filter[], search: { field: string, text: string }, testDetailID: string, testType: string) {\r\n const requestBody: string = JSON.stringify({\r\n BatchPool: \"\",\r\n BySel: search.field,\r\n Filters: {\r\n ID: filters.find(filter => filter.column === \"ID\")?.values || [],\r\n Name: filters.find(filter => filter.column === \"Name\")?.values || [],\r\n DateCollected: filters.find(filter => filter.column === \"DateCollected\")?.values || [],\r\n Reason: filters.find(filter => filter.column === \"Reason\")?.values || [],\r\n Type: filters.find(filter => filter.column === \"Type\")?.values || [],\r\n Result: filters.find(filter => filter.column === \"Result\")?.values || [],\r\n Status: filters.find(filter => filter.column === \"Status\")?.values || [],\r\n Company: filters.find(filter => filter.column === \"Company\")?.values || [],\r\n },\r\n MatchSel: \"Partial\",\r\n PageNumber: pageNumber,\r\n PageSize: pageSize,\r\n SortGrid: { SortColumn: sort.column, SortOrder: sort.order.toUpperCase() === \"DESC\" ? \"DSC\" : sort.order.toUpperCase() },\r\n SrchFor: search.text,\r\n TypeSel: \"\",\r\n TestDetailID: testDetailID,\r\n TestType: testType\r\n \r\n })\r\n\r\n return ObservableFromFetch(\"WorkForceTrack/SearchTestsToMerge\", requestBody)\r\n}\r\nexport function MergeTest(data: MergeEventParameters) {\r\n const requestBody = JSON.stringify({\r\n TestDetailID: data.TestDetailID,\r\n MergeTestDetailID: data.MergeTestDetailID,\r\n MergeMode: data.MergeMode,\r\n KeepReleased: data.KeepReleased\r\n })\r\n\r\n return ObservableFromFetch(\"WorkForceTrack/MergeTest\", requestBody)\r\n}","import RandomTestCard from \"./RandomTestCard\"\r\nimport OrderResultRecord from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\n\r\ninterface ReasonForTestCellProps {\r\n row: OrderResultRecord\r\n useIcon?: boolean\r\n}\r\n\r\nfunction ReasonForTestCell(props: ReasonForTestCellProps) {\r\n const { row, useIcon } = props\r\n\r\n if (row.IsRandom) {\r\n return \r\n }\r\n return
{row.Reason}
\r\n}\r\n\r\nReasonForTestCell.defaultProps = {\r\n useIcon: false,\r\n}\r\nexport default ReasonForTestCell\r\n","import FileSaver from \"file-saver\"\r\nimport { toast } from \"react-toastify\"\r\n\r\nexport default function exportCsv(csv: string, fileName: string) {\r\n const csvData = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, fileName, true)\r\n toast.success(\"CSV file downloaded successfully.\")\r\n}\r\n","import { useState } from \"react\"\r\n\r\nimport { Button, Col, Form, Modal, Row } from \"react-bootstrap\"\r\nimport { FaFileCsv, FaSync } from \"react-icons/fa\"\r\n\r\nimport { Filter, Sort } from \"../../api/GridRequest\"\r\nimport { OrderResultsExportCsv } from \"../../api/OrderResults/OrderResultsListGet\"\r\nimport { AccountTypeID } from \"../../config/Constants\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport FormatTimestampFileName from \"../../formatters/FormatTimestampFileName\"\r\nimport exportCsv from \"../../utils/exportCsv\"\r\nimport handleAPIError from \"../../utils/handleAPIError\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport FromToDates from \"../Reports/FromToDates\"\r\n\r\ninterface ExportSearchParams {\r\n field: string\r\n text: string\r\n sort?: Sort\r\n filters: Filter[]\r\n}\r\n\r\ninterface ExportCSVModalProps {\r\n isPortalAdmin: boolean\r\n searchParams: ExportSearchParams\r\n onClose: () => void\r\n}\r\n\r\nfunction ExportCSVModal(props: ExportCSVModalProps) {\r\n const { isPortalAdmin, searchParams, onClose } = props\r\n const [generatingCsv, setGeneratingCsv] = useState(false)\r\n const [from, setFrom] = useState()\r\n const [to, setTo] = useState()\r\n const [includeAllDates, setIncludeAllDates] = useState(false)\r\n const [includeArchivedOrders, setIncludeArchivedOrders] = useState(true)\r\n const [includeActiveOrders, setIncludeActiveOrders] = useState(true)\r\n\r\n const minDate = new Date(new Date().setFullYear(new Date().getFullYear() - 2))\r\n const accountType = isPortalAdmin ? 0 : AccountTypeID\r\n\r\n const handleCancelClick = () => onClose()\r\n\r\n const handleClearClick = () => {\r\n setFrom(undefined)\r\n setTo(undefined)\r\n setIncludeAllDates(false)\r\n setIncludeArchivedOrders(true)\r\n setIncludeActiveOrders(true)\r\n }\r\n\r\n const handelActiveChange = (event: React.ChangeEvent) => {\r\n setIncludeActiveOrders(event.target.checked)\r\n }\r\n\r\n const handelArchivedChange = (event: React.ChangeEvent) => {\r\n setIncludeArchivedOrders(event.target.checked)\r\n }\r\n\r\n const getReportParams = () => ({\r\n ...searchParams,\r\n exportDateFrom: FormatDate(from),\r\n exportDateTo: FormatDate(to),\r\n includeArchived: includeArchivedOrders && includeActiveOrders,\r\n complete: includeArchivedOrders && !includeActiveOrders,\r\n })\r\n\r\n const checkAllDates = (checked: boolean) => {\r\n setIncludeAllDates(checked)\r\n setFrom(undefined)\r\n setTo(undefined)\r\n }\r\n\r\n const handleGenerateCsvClick = () => {\r\n setGeneratingCsv(true)\r\n OrderResultsExportCsv(getReportParams(), accountType).subscribe(\r\n (results: string) => {\r\n setGeneratingCsv(false)\r\n exportCsv(results, FormatTimestampFileName(\"Tracking\", \"csv\", new Date()))\r\n },\r\n (error) => handleAPIError(error, () => setGeneratingCsv(false))\r\n )\r\n }\r\n\r\n const isParamsValid = () => (includeArchivedOrders || includeActiveOrders) && (includeAllDates || (!!from && !!to))\r\n\r\n return (\r\n \r\n \r\n EXPORT CSV OPTIONS:\r\n \r\n \r\n
\r\n \r\n \r\n Include All Dates\r\n \r\n \r\n checkAllDates(e.target.checked)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Include Orders\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Export CSV \r\n \r\n \r\n \r\n
\r\n )\r\n}\r\nexport default ExportCSVModal\r\n","import { Image } from \"react-bootstrap\"\r\n\r\nimport OrderResultRecord from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport watchResolvedImage from \"../../assets/images/watch-resolved.png\"\r\nimport watchImage from \"../../assets/images/watch.png\"\r\n\r\ninterface WatchCellProps {\r\n row: OrderResultRecord\r\n}\r\n\r\nfunction WatchCell(props: WatchCellProps) {\r\n const { row } = props\r\n\r\n return (\r\n \r\n {row.TestEventAlert?.Watch && (\r\n
\r\n {!row.TestEventAlert.WatchResolved && }\r\n {row.TestEventAlert.WatchResolved && }\r\n
\r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default WatchCell\r\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import React, { useCallback, useEffect, useRef, useState } from \"react\"\r\n\r\nimport { fromEvent, Subscription } from \"rxjs\"\r\nimport { debounceTime } from \"rxjs/operators\"\r\n\r\ninterface HorizontalScrollWrapperProps {\r\n gridRef: React.RefObject\r\n recalculateWidth: boolean\r\n visible?: boolean\r\n children: React.ReactNode\r\n offsetVertical?: number\r\n}\r\n\r\nfunction HorizontalScrollWrapper(props: HorizontalScrollWrapperProps) {\r\n const { gridRef, recalculateWidth, visible, children, offsetVertical } = props\r\n const [gridWidth, setGridWidth] = useState(0)\r\n\r\n const scrollWrapper = useRef(null)\r\n const gridWrapper = useRef(null)\r\n\r\n const updateWidth = useCallback(() => {\r\n if (gridRef.current && gridWrapper.current) {\r\n const { clientWidth, offsetWidth } = gridWrapper.current\r\n const verticalScrollBoxWidth = offsetWidth - clientWidth\r\n setGridWidth(Math.round(gridRef.current.offsetWidth + verticalScrollBoxWidth))\r\n }\r\n }, [gridRef])\r\n\r\n const onSyncScroll = (event: Event) => {\r\n if (gridWrapper.current) {\r\n gridWrapper.current.scrollLeft = (event.target as HTMLDivElement).scrollLeft\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n const resizeSubscription: Subscription = fromEvent(window, \"resize\").pipe(debounceTime(50)).subscribe(updateWidth)\r\n\r\n const scrollSubscription: Subscription = fromEvent(scrollWrapper.current!, \"scroll\")\r\n .pipe(debounceTime(5))\r\n .subscribe(onSyncScroll)\r\n\r\n updateWidth()\r\n\r\n return () => {\r\n resizeSubscription.unsubscribe()\r\n scrollSubscription.unsubscribe()\r\n }\r\n }, [updateWidth])\r\n\r\n useEffect(() => {\r\n if (recalculateWidth) {\r\n updateWidth()\r\n } else {\r\n setGridWidth(0)\r\n }\r\n }, [recalculateWidth, updateWidth])\r\n\r\n const visibleHorizontalScroll = () => {\r\n if (gridWrapper.current) {\r\n const { scrollWidth, clientWidth } = gridWrapper.current\r\n return visible && gridWidth > 0 && scrollWidth > clientWidth\r\n }\r\n return false\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
\r\n
\r\n \r\n {children}\r\n
\r\n \r\n )\r\n}\r\n\r\nHorizontalScrollWrapper.defaultProps = {\r\n visible: true,\r\n offsetVertical: 0,\r\n}\r\n\r\nexport default HorizontalScrollWrapper\r\n","import { Button } from \"react-bootstrap\"\r\n\r\nimport OrderResultRecord from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport { ScheduleStatus } from \"../../config/Constants\"\r\n\r\ninterface FormFoxTestANColumnProps {\r\n row: OrderResultRecord\r\n showAuthFormModal: (row: OrderResultRecord) => void\r\n}\r\n\r\nfunction FormFoxTestANColumn(props: FormFoxTestANColumnProps) {\r\n const { row, showAuthFormModal } = props\r\n\r\n const isLinkVisible =\r\n row.FormFoxTestAN !== \"\" &&\r\n !row.DateCollected &&\r\n row.ScheduleStatusID !== ScheduleStatus.Cancelled &&\r\n !row.IsExpired\r\n\r\n return isLinkVisible ? (\r\n \r\n ) : (\r\n
{row.FormFoxTestAN}
\r\n )\r\n}\r\n\r\nexport default FormFoxTestANColumn\r\n","import React from \"react\"\r\nimport { Container, Row, Col, Table, Button, Spinner, Image } from \"react-bootstrap\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { toast } from \"react-toastify\"\r\nimport { FaFileCsv, FaSync } from \"react-icons/fa\"\r\nimport { OrderResultGridResponse, ColumnFilters } from \"../../api/OrderResults/OrderResultModel/OrderResultGridResponse\"\r\nimport OrderResultRecordIdentifier from \"../../api/OrderResults/OrderResultModel/OrderResultRecordIdentifier\"\r\nimport OrderResultRecord, { RAImage } from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport { Sort, Filter } from \"../../api/GridRequest\"\r\nimport { ResultsGridObservable, OrderResultsPrint } from \"../../api/OrderResults/OrderResultsListGet\"\r\nimport ResultsWatchObservable from \"../../api/OrderResults/ResultsWatch\"\r\nimport { SearchFieldsGet } from \"../../api/OrderResults/SearchFieldsGet\"\r\nimport SearchField from \"../../api/SearchField\"\r\nimport SearchBar from \"../SearchBar\"\r\nimport ColumnsCustomizeModal from \"../ColumnsCustomizeModal/ColumnsCustomizeModal\"\r\nimport CompleteModal from \"./CompleteModal\"\r\nimport { CustomizableFilterColumn } from \"../ColumnsCustomizeModal/CustomizableColumn\"\r\nimport ColumnHeaderFilter from \"../ColumnHeaderFilter\"\r\nimport TablePagination from \"../TablePagination\"\r\nimport EmployeeDetailsModal from \"./EmployeeDetailsModal\"\r\nimport EventDetailsModal from \"./EventDetailsModal\"\r\nimport GridStatusInfo from \"./GridStatusInfo\"\r\nimport ModalStatusInfo from \"./ModalStatusInfo\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport FormatSSN from \"../../formatters/FormatSSN\"\r\nimport FormatTimestampFileName from \"../../formatters/FormatTimestampFileName\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport ImageCCF from \"../../assets/images/CCF.png\"\r\nimport ImageMRO from \"../../assets/images/MRO.png\"\r\nimport ImageOHS from \"../../assets/images/OHS.png\"\r\nimport { AppState } from \"../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport ImageGet, { ImageData, GetMROLetter, GenerateMROReport, TestReleaseStatusID } from \"../../api/OrderResults/GenerateCCFImage\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport FormatData from \"../../formatters/FormatBase64\"\r\nimport { isPortalAdmin } from \"../../authentication/isAdminRole\"\r\nimport { AccountTypeID, ImplementationTypeGovt, ScheduleStatus, StorageKey } from \"../../config/Constants\"\r\nimport { loadCustomized } from \"../ColumnsCustomizeModal/ColumnsCustomizeModal\"\r\nimport { getLoggedInUserName } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport ResultsResolveObservable from \"../../api/OrderResults/ResultsResolve\"\r\nimport { BuildUserAccess } from \"../../authentication/BuildUserAccess\"\r\nimport { ServiceTypeCode } from '../../api/Administration/Model/ServiceType';\r\nimport printPdf from \"../../utils/printPdf\"\r\nimport { TestTypes } from \"../../api/Administration/Model/TestType\"\r\nimport OrderTrackingCheckbox from \"./OrderTrackingCheckbox\"\r\nimport ConnectedAuthFormModal from \"./AuthFormModal\"\r\nimport OrderEditModal from \"./OrderEditModal\"\r\nimport SendSelectClinicLink from \"./SendSelectClinicLink\"\r\nimport ImageAlert from \"../../assets/images/alert.png\"\r\nimport ImageAlertResolved from \"../../assets/images/alert-resolved.png\"\r\nimport EventDetailsCompare from \"./EventDetailsCompare\"\r\nimport SearchTestToMerge from \"./SearchTestToMerge\"\r\nimport PrintFormModal from \"./PrintFormModal\"\r\nimport ReasonForTestCell from \"./ReasonForTestCell\"\r\nimport ExportCSVModal from \"./ExportCSVModal\"\r\nimport WatchCell from \"./WatchCell\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport HorizontalScrollWrapper from \"../HorizontalScrollWrapper\"\r\nimport FormFoxTestANColumn from \"./FormFoxTestANColumn\"\r\n\r\ntype Column = CustomizableFilterColumn\r\n\r\ninterface OrderTrackingProps {\r\n isPortalAdmin: boolean\r\n canCompleteEvents?: boolean\r\n canVieweCCFCopy2PreMRO?: boolean\r\n LoginName: string\r\n implementationType: string\r\n}\r\n\r\ninterface OrderTrackingState {\r\n loading: boolean\r\n data?: OrderResultGridResponse\r\n columns: Column[]\r\n showStatusModal: boolean\r\n searchField: string\r\n searchText: string\r\n showArchivedOrders: boolean\r\n sort?: Sort\r\n filters: Filter[]\r\n pageNumber: number\r\n showExportOptions: boolean\r\n selectedTests: OrderResultRecordIdentifier[]\r\n customizeModal: boolean\r\n completeModal: boolean\r\n searchFields?: SearchField[]\r\n statusInfo: boolean\r\n employeeDetails: boolean\r\n eventDetails: boolean\r\n details?: OrderResultRecord\r\n updatingWatchList: boolean\r\n resolving: boolean\r\n showAuthFormModal: boolean\r\n showResendAuth: boolean\r\n showOrderEditModal: boolean\r\n eventCompare: boolean\r\n showMergeEvent: boolean\r\n printing: boolean\r\n showSelectClinicEmail: boolean\r\n}\r\n\r\nconst defaultColumns: Column[] = [\r\n { name: \"DonorID\", filter: \"IDNumber\", label: \"ID NUMBER\", visible: true, customize: false },\r\n { name: \"DonorName\", filter: \"Name\", label: \"NAME\", visible: true, customize: true },\r\n { name: \"Service\", filter: \"Service\", label: \"SERVICE\", visible: true, customize: true },\r\n { name: \"Result\", filter: \"Result\", label: \"SAMPLE RESULT\", visible: true, customize: true },\r\n { name: \"Status\", label: \"STATUS\", visible: true, customize: true },\r\n { name: \"CompanyName\", filter: \"Company\", label: \"COMPANY\", visible: true, customize: true },\r\n { name: \"RegionName\", filter: \"Region\", label: \"COMPANY REGION\", visible: false, customize: true },\r\n { name: \"LocationName\", filter: \"Location\", label: \"COMPANY LOCATION\", visible: false, customize: true },\r\n { name: \"RAImageID\", label: \"eDocs\", visible: true, customize: true },\r\n { name: \"DOT\", filter: \"Regulated\", label: \"REGULATED\", visible: true, customize: true },\r\n { name: \"FormFoxTestAN\", filter: \"AuthorizationID\", label: \"AUTHORIZATION ID\", visible: true, customize: true },\r\n { name: \"SampleID\", filter: \"SampleID\", label: \"SAMPLE ID\", visible: true, customize: true },\r\n { name: \"OrderedDate\", filter: \"OrderDate\", label: \"ORDER DATE\", visible: true, customize: true },\r\n { name: \"SiteName\", filter: \"Clinic\", label: \"CLINIC\", visible: true, customize: true },\r\n { name: \"LabAccountNumber\", filter: \"LabAccountNumber\", label: \"LAB ACCOUNT\", visible: false, customize: true },\r\n { name: \"OrderedBy\", filter: \"OrderedBy\", label: \"ORDERED BY\", visible: false, customize: true },\r\n { name: \"OrderUpdatedBy\", filter: \"OrderUpdatedBy\", label: \"UPDATED BY\", visible: true, customize: true },\r\n { name: \"OrderUpdatedAt\", filter: \"OrderUpdatedAt\", label: \"UPDATE DATE\", visible: true, customize: true },\r\n { name: \"EventDate\", filter: \"EventDate\", label: \"COLLECTION DATE\", visible: false, customize: true },\r\n { name: \"CollectionTime\", filter: \"CollectionTime\", label: \"COLLECTION TIME\", visible: false, customize: true },\r\n { name: \"Reason\", filter: \"Reason\", label: \"REASON FOR TEST\", visible: true, customize: true },\r\n { name: \"MarketPlaceOrderNum\", filter: \"MarketPlaceOrderNum\", label: \"MPO#\", visible: false, customize: true },\r\n]\r\n\r\nconst GridIDNumber = (props: { value: OrderResultRecord }) => {\r\n const idType = (type: string) => {\r\n switch (type) {\r\n case \"SSN\":\r\n return \"SSN\";\r\n case \"DriverID\":\r\n return \"CL\";\r\n case \"EmployeerID\":\r\n return \"EID\";\r\n case \"AlternateID\":\r\n return \"Alt\";\r\n default: return type;\r\n }\r\n }\r\n\r\n const idRow = (idValue: string, idType: string, mockId:string=\"\") => {\r\n return <>{idType}\r\n }\r\n const value = props.value\r\n return (\r\n {idRow(value.DonorID, idType(value.IDType), value.MockDonorID)}\r\n )\r\n}\r\n\r\nconst PageSize = 40\r\n\r\ntype ReportProps = {\r\n canView: boolean\r\n canDownload: boolean\r\n MROReport: boolean\r\n MROStage: string\r\n}\r\n\r\nexport class OrderTracking extends React.PureComponent {\r\n subscription?: Subscription\r\n searchFieldsSubscription?: Subscription\r\n loadImageSubscription?: Subscription\r\n loadReportSubscription?: Subscription\r\n watchSubscription?: Subscription\r\n resolveSubscription?: Subscription\r\n\r\n state: OrderTrackingState = {\r\n loading: false,\r\n data: undefined,\r\n columns: loadCustomized(StorageKey.OrderTrackingGridColumns, defaultColumns) as Column[],\r\n showStatusModal: false,\r\n searchField: \"\",\r\n searchText: \"\",\r\n showArchivedOrders: false,\r\n showExportOptions: false,\r\n sort: undefined,\r\n filters: [],\r\n pageNumber: 1,\r\n selectedTests: [],\r\n customizeModal: false,\r\n completeModal: false,\r\n statusInfo: false,\r\n employeeDetails: false,\r\n eventDetails: false,\r\n updatingWatchList: false,\r\n resolving: false,\r\n showAuthFormModal: false,\r\n showResendAuth: false,\r\n showOrderEditModal: false,\r\n eventCompare: false,\r\n showMergeEvent: false,\r\n printing: false,\r\n showSelectClinicEmail: false\r\n }\r\n\r\n gridRef = React.createRef()\r\n\r\n componentDidMount() {\r\n this.refreshGrid()\r\n this.searchFieldsSubscription = SearchFieldsGet().subscribe(\r\n (data: SearchField[]) => this.setState({ searchFields: data }),\r\n error => toast.error(error)\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n this.searchFieldsSubscription && this.searchFieldsSubscription.unsubscribe()\r\n this.loadImageSubscription && this.loadImageSubscription.unsubscribe()\r\n this.loadReportSubscription && this.loadReportSubscription.unsubscribe()\r\n this.watchSubscription && this.watchSubscription.unsubscribe()\r\n this.resolveSubscription && this.resolveSubscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: OrderTrackingProps, prevState: OrderTrackingState) {\r\n if (this.state.searchField !== prevState.searchField ||\r\n this.state.searchText !== prevState.searchText ||\r\n this.state.showArchivedOrders !== prevState.showArchivedOrders ||\r\n this.state.sort !== prevState.sort ||\r\n this.state.filters !== prevState.filters ||\r\n this.state.pageNumber !== prevState.pageNumber) {\r\n this.refreshGrid()\r\n }\r\n }\r\n\r\n refreshGrid() {\r\n this.setState({ loading: true })\r\n this.subscription && this.subscription.unsubscribe()\r\n this.subscription = ResultsGridObservable({\r\n field: this.state.searchField,\r\n text: this.state.searchText,\r\n complete: this.state.showArchivedOrders,\r\n sort: this.state.sort,\r\n filters: this.state.filters,\r\n pageNumber: this.state.pageNumber,\r\n pageSize: PageSize,\r\n includeArchived: this.state.showArchivedOrders,\r\n }, this.props.isPortalAdmin ? 0 : AccountTypeID).subscribe(\r\n (data: OrderResultGridResponse) => this.setState({ data: data, loading: false, selectedTests: [] }),\r\n error => {\r\n this.setState({ loading: false })\r\n toast.error(error)\r\n }\r\n )\r\n }\r\n\r\n pageChanged = (pageNumber: number) => {\r\n this.setState({ pageNumber: pageNumber })\r\n }\r\n checkArchivedOrders(e: React.ChangeEvent) {\r\n this.setState({ showArchivedOrders: e.target.checked, pageNumber: 1 })\r\n }\r\n sortGrid(column: string, order?: string) {\r\n this.setState({ sort: { column: column, order: order || \"\" }, pageNumber: 1 })\r\n }\r\n filterGrid(column: string, items: string[]) {\r\n this.setState(prevState => {\r\n const filters = [...prevState.filters]\r\n const filter = { column: column, values: items }\r\n let index = filters.findIndex(item => item.column === filter.column)\r\n if (index >= 0) {\r\n filters[index] = filter\r\n } else {\r\n filters.push(filter)\r\n }\r\n return { filters: filters, pageNumber: 1 }\r\n })\r\n }\r\n onSearch(searchField?: string, searchText?: string) {\r\n this.setState({ searchField: searchField || \"\", searchText: searchText || \"\", pageNumber: 1 })\r\n }\r\n onExportClick() {\r\n this.setState({ showExportOptions: true })\r\n }\r\n\r\n generateCCFImage = (image: RAImage, row: OrderResultRecord, canDownload: boolean) => {\r\n if (!canDownload) return\r\n this.loadImageSubscription && this.loadImageSubscription.unsubscribe()\r\n const data = {\r\n TestImageID: image.RAImageID,\r\n TestDetailID: row.TestDetailID,\r\n TestDetailClinicalID: row.TestDetailClinicalID || \"\",\r\n IsMarketPlace: true,\r\n TestDescription: image.Description\r\n }\r\n\r\n this.loadImageSubscription = ImageGet(data).subscribe(\r\n (data: ImageData) => this.processCCF(data),\r\n (error) => this.handleAPIError(error, {})\r\n )\r\n }\r\n\r\n isMroLetter = (item: RAImage) => item.Description == \"MroLetter\"\r\n isMroLetterRow = (row: OrderResultRecord) => row.RAImage?.filter(this.isMroLetter).length ?? 0 > 0 // assume there would be no multiple MRO images\r\n\r\n isMroCopy = (item: RAImage) => {\r\n if (!item.Description) {\r\n return false\r\n }\r\n const desc = item.Description.toLowerCase()\r\n return desc == \"mrocopy\"\r\n }\r\n isMroCopyRow = (row: OrderResultRecord) => {\r\n const mroImages = row.RAImage?.filter(this.isMroCopy)\r\n return (mroImages?.length ?? 0 > 0) // assume there would be no multiple MRO images\r\n }\r\n\r\n printMROReport = (row: OrderResultRecord) => {\r\n this.loadReportSubscription && this.loadReportSubscription.unsubscribe()\r\n\r\n const method = this.isMroLetterRow(row) ? GetMROLetter : GenerateMROReport\r\n\r\n this.loadReportSubscription = method(row.TestDetailID).subscribe(\r\n (data) => this.processReport(data),\r\n (error) => this.handleAPIError(error, {})\r\n )\r\n }\r\n\r\n processCCF = (data: ImageData) => {\r\n if (data && data.Base64String) {\r\n const currentDate = new Date()\r\n data.Base64String.forEach((item, index) => {\r\n const type = item.ImageType\r\n const fileName = FormatTimestampFileName(\"CCF_Image_Report\" + index, type.split('/')[1], currentDate)\r\n const fileData = new Blob([FormatData(item.Base64Strings)], { type: type || data.ImageType })\r\n var fileURL = URL.createObjectURL(fileData)\r\n window.open(fileURL)\r\n })\r\n } else {\r\n toast.error(\"Service is not able to return CCF image for this record.\")\r\n }\r\n }\r\n\r\n processReport = (data: string) => {\r\n if (data && data !== \"\") {\r\n const fileName = FormatTimestampFileName(this.props.implementationType === ImplementationTypeGovt ? \"POCT_Report_\" : \"MRO_Report_\", \"pdf\", new Date())\r\n const fileData = new Blob([FormatData(data)], { type: \"application/pdf\" })\r\n var fileURL = URL.createObjectURL(fileData)\r\n window.open(fileURL)\r\n } else {\r\n toast.error(\"Data not found.\")\r\n }\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n handleAllTestDetailChange(e: React.ChangeEvent) {\r\n const selectedTests = e.target.checked && this.state.data && this.state.data.Records\r\n ? this.state.data.Records\r\n .map((rows: OrderResultRecord[]) => rows\r\n .map((row: OrderResultRecord) => ({ TestDetailID: row.TestDetailID, TestDetailClinicalID: row.TestDetailClinicalID, Archived: row.Reviewed })\r\n ))\r\n : []\r\n this.setState({ selectedTests: selectedTests.reduce((acc, val) => acc.concat(val), []) })\r\n }\r\n\r\n handleTestDetailChange = (row: OrderResultRecordIdentifier, checked: boolean) => {\r\n let selectedRows = [...this.state.selectedTests]\r\n\r\n const index = selectedRows.findIndex(item => item.TestDetailID === row.TestDetailID && item.TestDetailClinicalID === row.TestDetailClinicalID)\r\n if (index > -1) {\r\n selectedRows = [...selectedRows.slice(0, index), ...selectedRows.slice(index + 1)]\r\n } else {\r\n selectedRows.push(row)\r\n }\r\n this.setState({ selectedTests: selectedRows })\r\n }\r\n\r\n selectedReports = () => {\r\n return this.selectedResults().filter(r => this.iconsVisibility(r).MROReport).map(t => t.TestDetailID)\r\n }\r\n\r\n onPrintRecords = () => {\r\n this.setState({ printing: true })\r\n OrderResultsPrint({\r\n field: this.state.searchField,\r\n text: this.state.searchText,\r\n filters: this.state.filters,\r\n print: this.state.selectedTests,\r\n }, this.props.isPortalAdmin ? 0 : AccountTypeID).subscribe(\r\n (data: string) => {\r\n printPdf(data)\r\n this.setState({ printing: false })\r\n },\r\n error => this.handleAPIError(error, { printing: false })\r\n )\r\n }\r\n\r\n onPrintReports = () => {\r\n this.loadReportSubscription && this.loadReportSubscription.unsubscribe()\r\n this.setState({ printing: true })\r\n this.loadReportSubscription = GenerateMROReport(this.selectedReports().join(';')).subscribe(\r\n (data: string) => {\r\n this.processReport(data)\r\n this.setState({ printing: false })\r\n },\r\n error => this.handleAPIError(error, { printing: false })\r\n )\r\n }\r\n\r\n onOrderUpdated = () => {\r\n const formFoxVendoAN = this.state.details?.FormFoxVendorAN || 0\r\n if (formFoxVendoAN > 0) {\r\n this.setState({ showOrderEditModal: false, showAuthFormModal: false, eventDetails: false, showResendAuth: true, showSelectClinicEmail: false })\r\n } else {\r\n this.setState({ showOrderEditModal: false, showAuthFormModal: false, eventDetails: false, showResendAuth: false, showSelectClinicEmail: true })\r\n }\r\n }\r\n\r\n onCloseResend = () => {\r\n this.setState({ showResendAuth: false, details: undefined })\r\n this.refreshGrid()\r\n }\r\n onCloseResendEmail = () => {\r\n this.setState({ showSelectClinicEmail: false, details: undefined })\r\n this.refreshGrid()\r\n }\r\n\r\n handleWatchClick = () => {\r\n this.setState({ updatingWatchList: true })\r\n this.watchSubscription && this.watchSubscription.unsubscribe()\r\n this.watchSubscription = ResultsWatchObservable(\r\n this.selectedResults().map(item => item.TestEventID),\r\n this.props.LoginName\r\n ).subscribe(\r\n data => {\r\n this.setState({ updatingWatchList: false })\r\n toast.success(data)\r\n this.refreshGrid()\r\n },\r\n error => this.handleAPIError(error, { updatingWatchList: false })\r\n )\r\n }\r\n\r\n handleResolveClick = () => {\r\n const testData = this.selectedResults()?.map(test => ({\r\n TestEventID: test.TestEventID,\r\n AlertResolved: false,\r\n WatchResolved: true,\r\n TimingAlertResolved: false,\r\n ResultsAcknowledged: false\r\n })\r\n )\r\n this.setState({ resolving: true })\r\n this.resolveSubscription = ResultsResolveObservable(testData, this.props.LoginName).subscribe(\r\n data => {\r\n this.setState({ resolving: false })\r\n toast.success(data)\r\n this.refreshGrid()\r\n },\r\n error => this.handleAPIError(error, { resolving: false })\r\n )\r\n }\r\n\r\n showStatusModal = (data: OrderResultRecord) => this.setState({ statusInfo: true, details: data })\r\n showEmployeeDetails = (data: OrderResultRecord) => this.setState({ employeeDetails: true, details: data })\r\n showEventDetailsModal = (data: OrderResultRecord) => {\r\n this.setState({ eventDetails: true, details: data })\r\n }\r\n showEventDetailsCompareModal = (data: OrderResultRecord) => {\r\n this.setState({ eventCompare: true, details: data })\r\n }\r\n showAuthFormModal = (data: OrderResultRecord) => {\r\n if (data.FormFoxVendorAN > 0) {\r\n this.setState({ showAuthFormModal: true, showResendAuth: false, details: data, showSelectClinicEmail: false })\r\n } else {\r\n this.setState({ showAuthFormModal: false, showResendAuth: false, details: data, showSelectClinicEmail: true })\r\n }\r\n }\r\n showOrderEditModal = (data: OrderResultRecord) => this.setState({ showOrderEditModal: true, details: data })\r\n visibleColumns = () => this.state.columns.filter(col => col.visible)\r\n renderCell = (row: OrderResultRecord, colName: keyof OrderResultRecord, key: number, isFirstRow: boolean, isLastRow: boolean) => {\r\n switch (colName) {\r\n case \"DonorID\":\r\n return this.showEmployeeDetails(row)}>\r\n {isFirstRow && }\r\n \r\n case \"DonorName\":\r\n return {isFirstRow && row[colName]}\r\n case \"Service\":\r\n const showImageAlert = row.MockMergeFrom > 0 && row.MockTestEventAlertID > 0 && row.Alert && !row.AlertResolved\r\n const showImageAlertResolved = row.MockMergeFrom > 0 && row.MockTestEventAlertID > 0 && row.Alert && row.AlertResolved\r\n return \r\n
\r\n \r\n {showImageAlert && this.showEventDetailsCompareModal(row)} src={ImageAlert} alt={row.MergeFrom} title={row.MergeFrom} width=\"20px\" height=\"20px\" />}\r\n {showImageAlertResolved && {row.MergeFrom}}\r\n
\r\n \r\n case \"Status\":\r\n return this.showStatusModal(row)} className=\"status-data align-text-top\" style={{whiteSpace: \"nowrap\"}}>\r\n \r\n \r\n case \"SiteName\":\r\n return {row.SiteID ? `${row.SiteName} (${row.SiteID})` : row.Clinics ? row.Clinics : \"\"}\r\n case \"OrderedDate\":\r\n case \"EventDate\":\r\n case \"OrderUpdatedAt\":\r\n return {FormatDate(row[colName])}\r\n case \"DOT\":\r\n return {row[colName] ? \"Yes\" : \"No\"}\r\n case \"RAImageID\":\r\n const iconsVisibility = this.iconsVisibility(row)\r\n return \r\n {iconsVisibility.canView ? this.mapCCFImages(row, iconsVisibility.canDownload) : \"\"}\r\n {iconsVisibility.MROReport ? this.mapMROReport(row, iconsVisibility.MROStage) : \"\"}\r\n \r\n case \"FormFoxTestAN\":\r\n return \r\n \r\n \r\n case \"Result\":\r\n return {this.getResultText(row)}\r\n case \"Reason\":\r\n return \r\n default:\r\n return {row[colName] === \"N/P\" ? \"Not Provided\" : row[colName]}\r\n }\r\n }\r\n\r\n getResultText = (row: OrderResultRecord) => {\r\n const result = row.Result || \"\"\r\n if (this.props.implementationType !== ImplementationTypeGovt) {\r\n return result\r\n }\r\n if (row.TestType !== ServiceTypeCode.Drug) {\r\n return result\r\n }\r\n if (result.toLowerCase() !== \"positive\") {\r\n return result\r\n }\r\n if (row.EventType.startsWith(\"QT\") || row.Service.includes('POCT')) {\r\n return \"POC-\" + result\r\n }\r\n return result\r\n }\r\n\r\n iconsVisibility = (row: OrderResultRecord): ReportProps => {\r\n let result: ReportProps = { canView: false, canDownload: false, MROReport: false, MROStage: \"\" }\r\n\r\n if (this.isMroLetterRow(row)) {\r\n result.MROReport = true\r\n }\r\n if (this.isMroCopyRow(row)) {\r\n result.MROReport = true\r\n }\r\n if (this.props.implementationType === ImplementationTypeGovt) {\r\n if (row.TestType === ServiceTypeCode.Drug && row.Service.includes('POCT') && !!row.DateCollected) {\r\n result.MROReport = true\r\n result.MROStage = \"POCT Letter Report\"\r\n }\r\n // Display all available images in OnTrack with no restrictions\r\n result.canView = true\r\n result.canDownload = true\r\n }\r\n else {\r\n row.Stages.forEach((stage) => {\r\n if (row.TestType === ServiceTypeCode.Drug && stage.Sequence === 6) {\r\n result.canView = true\r\n result.canDownload = this.props.canVieweCCFCopy2PreMRO || false\r\n result.MROReport = stage.Status === 1\r\n result.MROStage = stage.Name\r\n }\r\n if (\r\n row.TestType === ServiceTypeCode.Drug\r\n && row.MROResultID === 0\r\n && [TestReleaseStatusID.LaboratoryTestingComplete, TestReleaseStatusID.LaboratoryTestingCompleteReleased].includes(row.TestReleaseStatusID)\r\n && stage.Sequence === 6\r\n && ((row.LabResultID === 3 && !row.MRONonDOTNeg) || (row.LabResultID !== 3 && !row.MRONonDOTPos))\r\n ) {\r\n result.canView = true\r\n result.canDownload = this.props.canVieweCCFCopy2PreMRO || false\r\n result.MROReport = true\r\n result.MROStage = \"Laboratory Report\"\r\n }\r\n\r\n if (row.TestType === ServiceTypeCode.Drug &&\r\n (row.IsPOCT || row.IsFLEX) &&\r\n row.MROResultID === 0 && row.LabResultID === 0\r\n && (row.TestReleaseStatusID === TestReleaseStatusID.PoctComplete\r\n || row.TestReleaseStatusID === TestReleaseStatusID.PoctCompleteReleased)\r\n && stage.Sequence === 3 && row.Result === \"Negative\") {\r\n result.canView = true\r\n result.canDownload = this.props.canVieweCCFCopy2PreMRO || false\r\n result.MROReport = true\r\n result.MROStage = \"POCT Report\"\r\n }\r\n\r\n if (row.TestType === ServiceTypeCode.Alcohol && (stage.Sequence === 3 || stage.Sequence === 4)) {\r\n result.canView = true\r\n result.canDownload = true\r\n }\r\n if (row.TestType === ServiceTypeCode.Physical) {\r\n if (stage.Sequence === 3) {\r\n result.canView = true\r\n result.canDownload = true\r\n }\r\n } else if (row.ServiceTypeCode === ServiceTypeCode.OHS) {\r\n if (stage.Sequence === 1 && (row.TestType === TestTypes.CRLCovidClearAntibody || row.TestType === TestTypes.CRLRapidResponseCovid)) {\r\n result.canView = true\r\n result.canDownload = true\r\n } else if (stage.Sequence === 3) {\r\n result.canView = true\r\n result.canDownload = true\r\n }\r\n }\r\n if (row.ServiceTypeCode === ServiceTypeCode.CHS) {\r\n result.canView = true\r\n result.canDownload = true\r\n }\r\n })\r\n }\r\n return result\r\n }\r\n\r\n ccfImageDescription = (row: OrderResultRecord, item: RAImage) => {\r\n if (row.IsFLEX) {\r\n const upDescription = item.Description.toUpperCase()\r\n if (upDescription === \"MROCOPY\") {\r\n return \"COPY2\"\r\n }\r\n }\r\n //return row.IsFLEX && item.Description.toUpperCase() == \"COPY2\" ? \"Instant Test Results Report\" : item.Description\r\n return item.Description\r\n }\r\n\r\n isPositiveFlexInstantReport = (row: OrderResultRecord, item: RAImage) => {\r\n return row.IsFLEX && row.Result == \"Positive\" && item.Description == \"COPY2\"\r\n }\r\n mapCCFImages = (row: OrderResultRecord, canDownload: boolean) => {\r\n const imgSrc = row.ServiceTypeCode === ServiceTypeCode.OHS ? ImageOHS : ImageCCF\r\n return row.RAImage?.filter(i => !this.isMroLetter(i)).filter(i => !this.isPositiveFlexInstantReport(row, i)).map((item: RAImage) => this.generateCCFImage(item, row, canDownload)} src={imgSrc} alt={this.ccfImageDescription(row, item)} title={this.ccfImageDescription(row, item)} />)\r\n }\r\n\r\n mapMROReport = (row: OrderResultRecord, title: string) => this.printMROReport(row)} src={ImageMRO} alt={title} title={title} />\r\n\r\n selectedIdentifierByRow = (row: OrderResultRecord) => this.state.selectedTests.find(item => row.TestDetailID === item.TestDetailID && row.TestDetailClinicalID === item.TestDetailClinicalID)\r\n flattenResults = () => (this.state.data?.Records || []).reduce((acc, val) => acc.concat(val), [])\r\n selectedResults = () => this.flattenResults().filter(row => !!this.selectedIdentifierByRow(row))\r\n\r\n hideMergeEvent = () => {\r\n this.setState({ showMergeEvent: false })\r\n }\r\n\r\n onMergeEvent = () => {\r\n this.setState({ showMergeEvent: true })\r\n }\r\n\r\n render() {\r\n const testsSelected = this.state.selectedTests.length > 0\r\n const firstSelectedArchived = testsSelected && !!this.state.selectedTests[0].Archived\r\n const headerColumns = this.visibleColumns().map((col: Column, i) => {\r\n return (\r\n \r\n {this.state.data && col.filter && col.filter in this.state.data && item.column === col.filter) >= 0}\r\n sort={this.state.sort && this.state.sort.column === col.name ? this.state.sort.order === \"asc\" ? \"asc\" : \"desc\" : undefined}\r\n items={this.state.data[col.filter as keyof ColumnFilters] || []}\r\n itemValueLabels={{ \"N/P\": \"Not Provided\" }}\r\n onSort={(order?: string) => this.sortGrid(col.name, order)}\r\n onFilter={(items: string[]) => col.filter && this.filterGrid(col.filter, items)}\r\n offsetTop={19}\r\n />}\r\n {(!this.state.data || !col.filter) && (col.label || col.name)}\r\n \r\n )\r\n })\r\n const dataColumns = (row: OrderResultRecord, isFirstRow: boolean, isLastRow: boolean) => this.visibleColumns().map((col, i) => this.renderCell(row, col.name as keyof OrderResultRecord, i, isFirstRow, isLastRow))\r\n const printCell = (row: OrderResultRecord) => {\r\n const identifier = this.selectedIdentifierByRow(row)\r\n return \r\n \r\n \r\n }\r\n const groupedRows = (data: OrderResultGridResponse) => data.Records.map((rows: OrderResultRecord[]) => dataRows(rows))\r\n const dataRows = (rows: OrderResultRecord[]) => rows.map((row: OrderResultRecord, i: number) =>\r\n \r\n {printCell(row)}\r\n {this.props.implementationType !== ImplementationTypeGovt && }\r\n {dataColumns(row, i === 0, i === rows.length - 1)}\r\n )\r\n\r\n\r\n const { loading, data, columns, showStatusModal, searchField, searchText, showAuthFormModal, showResendAuth,\r\n showOrderEditModal, showArchivedOrders, sort, filters, pageNumber, selectedTests, showExportOptions,\r\n customizeModal, completeModal, searchFields, statusInfo, employeeDetails,\r\n updatingWatchList, resolving,\r\n eventDetails, details, eventCompare, showMergeEvent, showSelectClinicEmail } = this.state\r\n\r\n const emptyRow = NO DATA FOUND\r\n const allPrintChecked = !loading && !!data?.Records?.length && this.flattenResults().length === selectedTests.length\r\n return (\r\n \r\n \r\n \r\n \r\n this.checkArchivedOrders(e)} label=\"Show Archived Orders\" id=\"showCompletedOrders\" />\r\n \r\n \r\n \r\n \r\n { this.onSearch(searchField, searchText) }} formatValue={(id, value) => id === \"SSN\" ? FormatSSN(value) : value} />\r\n \r\n \r\n {testsSelected && this.props.canCompleteEvents && }\r\n WATCH\r\n RESOLVE\r\n \r\n \r\n \r\n {this.props.implementationType === ImplementationTypeGovt && }\r\n {showExportOptions &&\r\n this.setState({showExportOptions: false})}\r\n isPortalAdmin={this.props.isPortalAdmin}\r\n searchParams={{field: this.state.searchField, text: this.state.searchText, sort: this.state.sort, filters: this.state.filters}}\r\n />}\r\n {statusInfo && details && this.setState({ statusInfo: false })} />}\r\n {showAuthFormModal && details && this.setState({ showAuthFormModal: false, details: undefined })} />}\r\n {showResendAuth && details && }\r\n {showSelectClinicEmail && details && }\r\n {showOrderEditModal && details && this.setState({ showOrderEditModal: false })}\r\n onOrderUpdated={this.onOrderUpdated} />}\r\n {employeeDetails && details && this.setState({ employeeDetails: false }, () => updated && this.refreshGrid())}\r\n isGov={this.props.implementationType === ImplementationTypeGovt}\r\n />}\r\n {eventDetails && details && this.refreshGrid()}\r\n onHide={(updated) => this.setState({ eventDetails: false }, () => updated && this.onOrderUpdated())}\r\n onMerge={this.onMergeEvent} />}\r\n {eventCompare && details && this.refreshGrid()} onHide={() => this.setState({ eventCompare: false })} />}\r\n this.setState({ customizeModal: false })}\r\n onSave={(columns) => this.setState({ columns: columns as Column[], customizeModal: false })} />\r\n {completeModal && this.setState({ completeModal: false })}\r\n onSave={() => this.refreshGrid()}\r\n selectedTests={this.selectedResults().map(item => ({ TestEventID: item.TestEventID, TestDetailID: item.TestDetailID, TestDetailClinicalID: item.TestDetailClinicalID || \"\", PersonID: item.PersonID, HireDate: undefined, PoolID: null, Images: [], DonorName: item.DonorName, AuthorizationID: item.FormFoxTestAN }))}\r\n />}\r\n {showMergeEvent && details &&\r\n }\r\n \r\n \r\n \r\n \r\n 0}\r\n offsetVertical={330}\r\n >\r\n \r\n \r\n \r\n \r\n {this.props.implementationType !== ImplementationTypeGovt && }\r\n {headerColumns}\r\n \r\n \r\n \r\n {\r\n loading ?\r\n \r\n \r\n :\r\n data?.Records && data.Records.length > 0 ? groupedRows(data) : emptyRow\r\n }\r\n \r\n
\r\n {!showArchivedOrders && this.handleAllTestDetailChange(e)} />}\r\n 0}\r\n printing={this.state.printing}\r\n onPrintRecords={() => this.onPrintRecords()}\r\n onPrintReports={() => this.onPrintReports()}\r\n />\r\n WATCH
\r\n
\r\n \r\n Loading...\r\n
\r\n
\r\n \r\n \r\n
\r\n {!loading && data && (\r\n \r\n \r\n Total records: {data.Total}\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): OrderTrackingProps {\r\n const getImplementationType = () => sessionStorage.getItem(\"implementationType\") || \"\"\r\n const userAccess = BuildUserAccess(state)\r\n return {\r\n isPortalAdmin: isPortalAdmin(state),\r\n canCompleteEvents: userAccess.canCompleteEvents,\r\n canVieweCCFCopy2PreMRO: userAccess.canVieweCCFCopy2PreMRO,\r\n LoginName: getLoggedInUserName(state),\r\n implementationType: getImplementationType(),\r\n }\r\n}\r\nconst ConnectedRandomPools = connect(mapStateToProps, null)(OrderTracking)\r\nexport default ConnectedRandomPools\r\n","import * as React from \"react\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport SiteSearch from \"./SiteSearch\"\r\n\r\nexport default class SiteSearchPage extends React.PureComponent {\r\n render() {\r\n return \r\n \r\n \r\n }\r\n}\r\n","import {Component} from \"react\"\r\nimport {Button, Form, Modal} from \"react-bootstrap\"\r\nimport {toast} from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport UserPasswordReset from \"../../api/Administration/UserPasswordReset\"\r\nimport { EmailRegexp } from \"../../config/Constants\"\r\n\r\ninterface ForgotPasswordProps{\r\n userName?: string\r\n}\r\n\r\ninterface ForgotPasswordState {\r\n showModal: boolean\r\n userName: string\r\n userNameValid: boolean\r\n}\r\n\r\nexport default class ForgotPassword extends Component {\r\n state: ForgotPasswordState = {\r\n showModal: false,\r\n userName: \"\",\r\n userNameValid: false\r\n }\r\n\r\n userPasswordResetSubscription?: Subscription\r\n\r\n componentWillUnmount() {\r\n this.userPasswordResetSubscription && this.userPasswordResetSubscription.unsubscribe()\r\n }\r\n\r\n isEmailValid = (value: string) => value.length > 0 && EmailRegexp.test(value)\r\n handleShow = () => this.setState({showModal: true, userName: this.props.userName || '', userNameValid: this.isEmailValid(this.props.userName || \"\")})\r\n handleClose = () => this.setState({showModal: false})\r\n handleChange = (email: string) => this.setState({userName: email, userNameValid: this.isEmailValid(email)})\r\n\r\n submitPasswordReset = () => {\r\n this.userPasswordResetSubscription && this.userPasswordResetSubscription.unsubscribe()\r\n\r\n this.userPasswordResetSubscription = UserPasswordReset(this.state.userName, window.location.href, true).subscribe(\r\n data => {\r\n toast.success(data)\r\n this.handleClose()\r\n },\r\n (error) => this.handleAPIError(error, {})\r\n )\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n render() {\r\n const { userName, userNameValid } = this.state\r\n\r\n return <>\r\n \r\n {this.handleClose()}}>\r\n \r\n Forgot Password\r\n \r\n \r\n
\r\n \r\n Please enter your email address:\r\n this.handleChange(e.target.value)} isInvalid={!userNameValid} />\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n }\r\n}","import React, { Component } from \"react\"\r\nimport { Nav } from \"react-bootstrap\"\r\nimport { GetSinglePageAppPath } from \"../../BaseUrl\"\r\nimport { Home, AboutRoute } from \"../../config/Routes\"\r\n\r\nexport interface LoginNavMenuProps {\r\n active?: string\r\n}\r\n\r\nexport class LoginNavMenu extends Component {\r\n linkTo = (route: string, caption: string) => {caption}\r\n\r\n render() {\r\n return (\r\n )\r\n }\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Card } from \"react-bootstrap\"\r\nimport CustomerNotification from \"../../api/Notifications/Model/CustomerNotification\"\r\nimport { FormatDateAsLong } from \"../../formatters/FormatDate\"\r\n\r\ninterface NotificationCardProps {\r\n notification: CustomerNotification\r\n index: number\r\n count: number\r\n}\r\n\r\nexport class NotificationCard extends Component {\r\n render() {\r\n const note = this.props.notification\r\n\r\n return \r\n \r\n {note.NotificationTitle}\r\n {note.NotificationDescription}\r\n \r\n
({this.props.index + 1} of {this.props.count})
\r\n
Expiry {FormatDateAsLong(note.NotificationExpirationDate)}
\r\n
\r\n
\r\n
\r\n }\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Subscription } from \"rxjs\"\r\nimport CustomerNotificationsGet from \"../../api/Notifications/CustomerNotificationsGet\"\r\nimport CustomerNotifications from \"../../api/Notifications/Model/CustomerNotifications\"\r\nimport CustomerNotification from \"../../api/Notifications/Model/CustomerNotification\"\r\nimport { NotificationCard } from \"./NotificationCard\"\r\n\r\ninterface NotificationPanelState {\r\n loading: boolean\r\n notifications?: CustomerNotifications\r\n pinnedNotifications: CustomerNotification[]\r\n unpinnedNotifications: CustomerNotification[]\r\n}\r\n\r\nexport class NotificationPanel extends Component<{}, NotificationPanelState> {\r\n state: NotificationPanelState = {\r\n loading: false,\r\n pinnedNotifications: [],\r\n unpinnedNotifications: []\r\n }\r\n\r\n subscriptions = new Subscription()\r\n\r\n componentDidMount() {\r\n this.setState({ loading: true })\r\n this.subscriptions.add(\r\n CustomerNotificationsGet().subscribe(\r\n results => {\r\n const pinnedNotifications = results.Records?.filter(record => record.Pinned)\r\n const unpinnedNotifications = results.Records?.filter(record => !record.Pinned)\r\n this.setState({ notifications: results, pinnedNotifications, unpinnedNotifications, loading: false })\r\n },\r\n () => this.setState({ loading: false })\r\n )\r\n )\r\n }\r\n\r\n componentWillUnmount(){\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return <>\r\n }\r\n return
\r\n {this.state.pinnedNotifications.map((row: CustomerNotification, i: number) =>\r\n )}\r\n {this.state.unpinnedNotifications.map((row: CustomerNotification, i: number) =>\r\n )}\r\n
\r\n }\r\n}\r\n","import CustomerNotifications from \"./Model/CustomerNotifications\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function CustomerNotificationsGet() {\r\n const params = JSON.stringify({\r\n PageNumber: 1,\r\n PageSize: 20,\r\n ShowOnClinicPortal: true\r\n })\r\n return ObservableFromFetch(\"FFOrderCustomerNotifications/GetCustomerNotifications\", params)\r\n}\r\n","import React, { Component } from 'react'\r\nimport { Button, Col, Container, Form, Image, InputGroup, Row, Nav } from \"react-bootstrap\";\r\nimport { connect } from 'react-redux'\r\nimport { AppState } from \"../AppState\";\r\nimport { Action, Dispatch } from \"redux\";\r\nimport { AppPageWrapper } from \"../components/NavMenu/AppPageWrapper\";\r\nimport logoImage from \"../assets/images/logo.png\"\r\nimport { loginToWorkforce } from \"../actions/WorkforceOneLoginActions\";\r\nimport ForgotPassword from \"../components/Secuirty/ForgotPassword\";\r\nimport { FaEye, FaEyeSlash } from \"react-icons/fa\"\r\nimport { LoginNavMenu } from \"../components/NavMenu/LoginNavMenu\"\r\nimport { Home } from \"../config/Routes\"\r\nimport { ApiRootUrl } from \"../api/ApiUrl\"\r\nimport { NotificationPanel } from \"../components/Notification/NotificationPanel\"\r\n\r\nexport interface Workforce1LoginProps {\r\n test?: boolean\r\n}\r\nexport interface Workforce1LoginAppStateProps {\r\n foundToken: boolean\r\n}\r\nexport interface Workforce1LoginDispatchProps {\r\n login: (username: string, password: string) => void\r\n}\r\nexport interface Workforce1LoginState {\r\n username: string\r\n password: string\r\n showPass: boolean\r\n inputType: string\r\n}\r\nexport class Workforce1Login extends Component{\r\n state: Workforce1LoginState = {\r\n username: \"\",\r\n password: \"\",\r\n showPass: false,\r\n inputType: \"password\",\r\n }\r\n login = (e: React.FormEvent) => {\r\n localStorage.removeItem(\"portalImage\");\r\n localStorage.removeItem(\"consortiumCheckCompanies\");\r\n e.preventDefault()\r\n const userName = this.state.username.trim();\r\n const password = this.state.password;\r\n this.props.login(userName, password);\r\n }\r\n\r\n toggleShowPass = () => {\r\n this.setState({ showPass: !this.state.showPass, inputType: this.state.showPass ? \"password\" : \"text\" })\r\n }\r\n\r\n render() {\r\n const colProps = { lg: { span: 8, offset: 2 }, xl: { span: 6, offset: 3 } }\r\n return \r\n \r\n
\r\n \r\n \"CRL\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Username\r\n \r\n { this.setState({ username: e.target.value }) }} value={this.state.username} type=\"text\" />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Password\r\n \r\n { this.setState({ password: e.target.value }) }} value={this.state.password} type={this.state.inputType} />\r\n \r\n \r\n {this.state.showPass && }\r\n {!this.state.showPass && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Access and use of this website is restricted to authorized users \r\n (who have agreed to be bound by all the terms, requirements and conditions in FormFox's Website Access License).\r\n Unauthorized users should exit immediately to avoid possible civil or criminal liability. \r\n Unauthorized access to this facility, copying or any other reproduction of materials from this system is prohibited.\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n }\r\n}\r\nfunction mapStateToProps(state: AppState): Workforce1LoginAppStateProps {\r\n return {\r\n foundToken: !!state.Workforce1State.webToken\r\n }\r\n}\r\nfunction mapDispatchProps(dispatch: Dispatch): Workforce1LoginDispatchProps {\r\n return {\r\n login: (username: string, password: string) => (dispatch(loginToWorkforce(username, password))),\r\n }\r\n}\r\nconst connector = connect(\r\n mapStateToProps, mapDispatchProps)(Workforce1Login);\r\nexport default connector;\r\n","import React, {Component} from 'react'\r\nimport {AppPageWrapper} from \"./NavMenu/AppPageWrapper\";\r\nimport {Container, Spinner} from \"react-bootstrap\";\r\n\r\nexport interface LoadingProps{\r\n message: string\r\n showNav?: boolean\r\n delayedVisibility?: boolean\r\n embedingMode?: boolean\r\n}\r\nexport default class PageLoading extends Component{\r\n render() {\r\n return (\r\n \r\n
\r\n \r\n
\r\n {this.props.message}\r\n
\r\n
\r\n
);\r\n }\r\n}\r\n","import { FullBaseUrl } from \"../api/ApiUrl\";\r\n\r\nexport const IDENTITY_CONFIG = { \r\n authority: \"https://auth.pingone.com/6b6ac0d9-059d-4001-86af-8580aa7e47cb/as\", \r\n client_id: \"9b8c8336-feaf-46c3-bfb5-2e7936c2f11a\", \r\n redirect_uri: `${window.location.origin}/clinicportal/ng/`,\r\n response_type: \"token id_token\", \r\n scope: \"openid\", \r\n // scope: \"openid profile wf-2-api.full\", \r\n post_logout_redirect_uri: `${FullBaseUrl()}/sso`, }\r\n","import { UserManager } from \"oidc-client\"\r\nimport { IDENTITY_CONFIG } from \"../config/Identity\"\r\n\r\n\r\nexport default class AuthService {\r\n userManager: UserManager\r\n\r\n constructor() {\r\n this.userManager = new UserManager({\r\n ...IDENTITY_CONFIG\r\n })\r\n console.log(IDENTITY_CONFIG);\r\n }\r\n\r\n signinRedirectCallback = (url?: string) => {\r\n return this.userManager.signinRedirectCallback(url)\r\n }\r\n\r\n getUser = () => {\r\n return this.userManager.getUser()\r\n }\r\n\r\n signinRedirect = (provider?: string) => {\r\n if (provider && provider !== \"\") {\r\n return this.userManager.signinRedirect({\r\n // TODO: Uncomment this to provide IDP name to PingOne\r\n // extraQueryParams: {\r\n // acr_values: `idp:${provider}`\r\n // }\r\n })\r\n } else {\r\n return this.userManager.signinRedirect()\r\n }\r\n }\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { RouteComponentProps } from \"react-router-dom\"\r\nimport { connect } from \"react-redux\"\r\nimport { toast } from \"react-toastify\"\r\nimport { APIError } from \"../api/ObservableFromFetch\"\r\nimport { AppState } from \"../AppState\";\r\nimport { Action, Dispatch } from \"redux\";\r\nimport PageLoading from \"../components/PageLoading\"\r\nimport { EmbeddedOrderModeEnabled, GetSSOAction, SetEmbeddedOrderMode, SetSiteSearchMode, SetSSOAction, SetSSOPayload, SiteSearchModeEnabled } from \"../storage/AuthToken\"\r\nimport AuthService from \"./AuthService\"\r\nimport { ssoTokenLoginToWorkforce, WorkforceOneUserLogOut } from \"../actions/WorkforceOneLoginActions\"\r\nimport { SSOOrderRoute, SSOSiteSearchRoute, SSOGetAuthFormRoute } from \"../config/Routes\"\r\n\r\nexport interface SSOWorkforce1LoginProps { }\r\nexport interface SSOWorkforce1LoginAppStateProps {\r\n isLoggedIn: boolean\r\n isLoading: boolean\r\n userName?: string\r\n}\r\nexport interface SSOWorkforce1LoginDispatchProps {\r\n login: (token: string, isSiteSearch: boolean, isEmbeddedOrder: boolean, action:string) => void\r\n logout: () => void\r\n}\r\n\r\nexport interface SSOWorkforce1LoginState {\r\n spinnerMessage: string\r\n}\r\n\r\nexport class SSOWorkforce1Login extends Component{\r\n state: SSOWorkforce1LoginState = { spinnerMessage: \"Authentication...\" }\r\n token = \"\"\r\n base64String = \"\"\r\n\r\n componentDidMount() {\r\n if (this.props.isLoggedIn) {\r\n this.props.logout()\r\n }\r\n const searchParams = new URLSearchParams(this.props.location.search)\r\n this.base64String = searchParams.get(\"payload\") || \"\"\r\n this.token = searchParams.get(\"token\") || \"\"\r\n const provider = searchParams.get(\"provider\") || undefined\r\n const siteSearch = searchParams.get(\"sitesearch\") || false\r\n const embeddedOrder = searchParams.get(\"order\") || false\r\n const action = searchParams.get(\"action\") || \"\"\r\n if (this.token != \"\") {\r\n if (siteSearch) {\r\n SetSiteSearchMode()\r\n }\r\n if (embeddedOrder) {\r\n SetEmbeddedOrderMode()\r\n }\r\n SetSSOAction(action)\r\n this.props.login(this.token, !!siteSearch, !!embeddedOrder, action);\r\n }\r\n else {\r\n SetSSOPayload(this.base64String)\r\n this.signIn(provider)\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: SSOWorkforce1LoginAppStateProps) {\r\n const isSiteSearch = SiteSearchModeEnabled()\r\n const isEmbeddedOrder = EmbeddedOrderModeEnabled()\r\n const action = GetSSOAction()\r\n if (this.props.isLoggedIn !== prevProps.isLoggedIn) {\r\n if (isSiteSearch) {\r\n this.props.history.push(SSOSiteSearchRoute)\r\n }\r\n if (isEmbeddedOrder) {\r\n this.props.history.push(SSOOrderRoute)\r\n }\r\n if (action === \"getauthform\") {\r\n this.props.history.push(SSOGetAuthFormRoute)\r\n }\r\n }\r\n if (!this.props.isLoading && prevProps.isLoading && !this.props.userName) {\r\n this.setState({spinnerMessage: 'Authentication error # 1'})\r\n }\r\n }\r\n\r\n signIn = (provider?: string) => {\r\n const authService = new AuthService()\r\n authService.signinRedirect(provider).catch(() => {\r\n this.setState({spinnerMessage: 'Authentication error # 2'})\r\n })\r\n }\r\n\r\n handleAPIError = (error: Error | APIError) => {\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n render() { return <>\r\n \r\n \r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): SSOWorkforce1LoginAppStateProps {\r\n return {\r\n isLoggedIn: state.Workforce1State.isLoggedIn,\r\n isLoading: state.Workforce1State.isLoading,\r\n userName: state.Workforce1State.userName\r\n }\r\n}\r\n\r\nfunction mapDispatchProps(dispatch: Dispatch): SSOWorkforce1LoginDispatchProps {\r\n return {\r\n logout: () => (dispatch(WorkforceOneUserLogOut(true))),\r\n login: (token: string, isSiteSearch: boolean, isEmbeddedOrder: boolean, action:string) => (dispatch(ssoTokenLoginToWorkforce(token, isSiteSearch, isEmbeddedOrder, action))),\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps, mapDispatchProps)(SSOWorkforce1Login)\r\n","import { Col, Form, Row } from \"react-bootstrap\"\r\nimport { AdditionalOptionsType } from \"./AdditionalOptions\"\r\n\r\nexport enum ForcePrimaryClinic {\r\n NOT_SELECTED = '',\r\n IF_AVAILABLE = '1',\r\n ONLY = '2'\r\n}\r\n\r\nexport interface ForcePrimaryClinicOptionsProps {\r\n selected?: string\r\n onUpdate: (optionType: AdditionalOptionsType, value: string) => void\r\n}\r\n\r\nconst ForcePrimaryClinicOptions = (props: ForcePrimaryClinicOptionsProps) => {\r\n const onChange = (e: React.ChangeEvent) => {\r\n props.onUpdate(AdditionalOptionsType.FORCE_PRIMARY_CLINIC, e.target.checked\r\n ? e.target.value\r\n : ForcePrimaryClinic.NOT_SELECTED\r\n )\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n
Primary Clinics
\r\n \r\n
\r\n \r\n \r\n \r\n Only Primary clinics will be displayed; otherwise the full list of clinics that were found will be displayed.\r\n \r\n \r\n \r\n \r\n \r\n Only the Primary clinics will be displayed.\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ForcePrimaryClinicOptions\r\n","import React from \"react\"\r\nimport { ConnectDragSource, ConnectDropTarget, DragSource, DragSourceConnector, DragSourceMonitor, DropTarget, DropTargetConnector, DropTargetMonitor } from \"react-dnd\"\r\nimport DraggableItemData from \"./DraggableItemData\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport { Col, Row } from \"react-bootstrap\"\r\n\r\nexport const DraggableTypeItem = \"Item\"\r\n\r\ninterface DraggableItemProps {\r\n item: DraggableItemData\r\n moveItem: (id: string, to: number) => void\r\n findItem: (id: string) => { index: number }\r\n excludeItem: (id: string, exclude: boolean) => void\r\n}\r\n\r\ninterface DragDropItemProps extends DraggableItemProps {\r\n connectDragSource: ConnectDragSource\r\n isDragging: boolean\r\n connectDropTarget: ConnectDropTarget\r\n}\r\n\r\nconst DraggableItemSource = {\r\n beginDrag(props: DraggableItemProps) {\r\n return {\r\n id: props.item.id,\r\n originalIndex: props.findItem(props.item.id).index\r\n }\r\n },\r\n endDrag(props: DraggableItemProps, monitor: DragSourceMonitor) {\r\n const item = monitor.getItem()\r\n if (!monitor.didDrop()) {\r\n props.moveItem(item.id, item.originalIndex)\r\n }\r\n }\r\n}\r\n\r\nconst DraggableItemCollect = (connect: DragSourceConnector, monitor: DragSourceMonitor) => ({\r\n connectDragSource: connect.dragSource(),\r\n isDragging: monitor.isDragging()\r\n})\r\n\r\nconst DroppableContainerTarget = {\r\n canDrop: () => false,\r\n hover(props: DraggableItemProps, monitor: DropTargetMonitor) {\r\n const { id: draggedId } = monitor.getItem()\r\n if (draggedId !== props.item.id) {\r\n const { index: overIndex } = props.findItem(props.item.id)\r\n props.moveItem(draggedId, overIndex)\r\n }\r\n }\r\n}\r\n\r\nconst DroppableContainerCollect = (connect: DropTargetConnector) => ({ connectDropTarget: connect.dropTarget() })\r\n\r\nclass DraggableItem extends React.Component {\r\n\r\n render() {\r\n const { item, isDragging, connectDragSource, connectDropTarget } = this.props\r\n return connectDropTarget(connectDragSource(\r\n
\r\n \r\n {item.name}\r\n {item.exclude !== undefined &&\r\n \r\n ) => this.props.excludeItem(item.id, !!e.target.checked)}/>\r\n }\r\n \r\n
\r\n ))\r\n }\r\n}\r\n\r\nexport default DropTarget(DraggableTypeItem, DroppableContainerTarget, DroppableContainerCollect)(DragSource(DraggableTypeItem, DraggableItemSource, DraggableItemCollect)(DraggableItem))\r\n","import React from \"react\"\r\nimport { ConnectDropTarget, DropTarget, DropTargetConnector } from \"react-dnd\"\r\nimport DraggableItem, { DraggableTypeItem } from \"./DraggableItem\"\r\nimport DraggableItemData from \"./DraggableItemData\"\r\n\r\nexport interface DroppableContainerProps {\r\n items: DraggableItemData[]\r\n onChangeItemsList: (items: DraggableItemData[]) => void\r\n}\r\n\r\ninterface DroppableContainerPropsExt extends DroppableContainerProps {\r\n connectDropTarget: ConnectDropTarget\r\n}\r\n\r\nconst DroppableItemTarget = { canDrop: () => true }\r\n\r\nconst DroppableItemCollect = (connect: DropTargetConnector) => ({ connectDropTarget: connect.dropTarget() })\r\n\r\nclass DroppableContainer extends React.Component {\r\n moveItem = (id: string, atIndex: number) => {\r\n const { item, index } = this.findItem(id)\r\n if (item) {\r\n const newItems = [...this.props.items]\r\n const prevItem = newItems.splice(atIndex, 1, item)\r\n newItems.splice(index, 1, prevItem[0])\r\n this.props.onChangeItemsList(newItems)\r\n }\r\n }\r\n\r\n excludeItem = (id: string, exclude: boolean) => {\r\n const { item, index } = this.findItem(id)\r\n if (item) {\r\n const newItems = [...this.props.items]\r\n newItems[index].exclude = exclude\r\n this.props.onChangeItemsList(newItems)\r\n }\r\n }\r\n\r\n findItem = (id: string) => {\r\n const item = this.props.items.filter((c) => c.id === id)[0]\r\n return {\r\n item: item,\r\n index: this.props.items.indexOf(item),\r\n }\r\n }\r\n\r\n render() {\r\n const { connectDropTarget } = this.props\r\n return connectDropTarget(\r\n
\r\n {this.props.items.map(item => \r\n )}\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default DropTarget(DraggableTypeItem, DroppableItemTarget, DroppableItemCollect)(DroppableContainer)\r\n","import { useCallback, useEffect, useState } from \"react\"\r\nimport { Spinner } from \"react-bootstrap\"\r\nimport { finalize, map } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { ClinicSearchAdditionalOptionsGetObservable, ClinicSearchAdditionalOptionsSetObservable } from \"../../../api/Clinics/ClinicOptionsGet\"\r\nimport ForcePrimaryClinicOptions from \"./ForcePrimaryClinicOptions\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport { useEffectAfterMount } from \"../../../utils/hooks\"\r\n\r\nexport interface AdditionalOptionsProps {\r\n isPortal: boolean\r\n update: boolean\r\n setSaving: (saving: boolean) => void\r\n}\r\n\r\nexport enum AdditionalOptionsType {\r\n FORCE_PRIMARY_CLINIC = 1\r\n}\r\n\r\nexport interface AdditionalOption {\r\n OptionTypeID: AdditionalOptionsType\r\n OptionValue: string\r\n}\r\n\r\nconst AdditionalOptions = (props: AdditionalOptionsProps) => {\r\n const { setSaving, update } = props\r\n const [loading, setLoading] = useState(false)\r\n const [options, setOptions] = useState([])\r\n\r\n useEffect(() => {\r\n setLoading(true)\r\n const sub = ClinicSearchAdditionalOptionsGetObservable()\r\n .pipe(\r\n map(options => options.map(\r\n option => ({\r\n OptionTypeID: option.ClinicSearchOptionTypeID,\r\n OptionValue: option.Value\r\n })\r\n )),\r\n finalize(() => setLoading(false))\r\n )\r\n .subscribe(\r\n data => setOptions(data),\r\n error => toast.error(FormatError(error))\r\n )\r\n return () => sub.unsubscribe()\r\n }, [])\r\n\r\n useEffectAfterMount(() => {\r\n setSaving(true)\r\n const sub = ClinicSearchAdditionalOptionsSetObservable(options)\r\n .pipe(finalize(() => setSaving(false)))\r\n .subscribe(\r\n data => toast.success(data),\r\n error => toast.error(FormatError(error))\r\n )\r\n return () => sub.unsubscribe()\r\n }, [update, setSaving])\r\n\r\n const onUpdateOption = useCallback((optionType: AdditionalOptionsType, value: string) => {\r\n setOptions(prev => prev.map(obj => {\r\n return obj.OptionTypeID === optionType\r\n ? { ...obj, OptionValue: value }\r\n : obj\r\n }))\r\n }, [])\r\n\r\n const getOptionValue = useCallback((optionType: AdditionalOptionsType) => {\r\n return options.find(o => o.OptionTypeID === optionType)?.OptionValue\r\n }, [options])\r\n\r\n return (\r\n <>\r\n {loading && }\r\n {!loading && props.isPortal && }\r\n \r\n )\r\n}\r\n\r\nexport default AdditionalOptions\r\n","import * as React from \"react\"\r\nimport { Container, Row, Col, Spinner, Button, Form } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { DndProvider } from \"react-dnd\"\r\nimport { HTML5Backend } from \"react-dnd-html5-backend\"\r\nimport ClinicSearchOptions from \"../../../api/Clinics/Models/ClinicSearchOptions\"\r\nimport { ClinicSearchOptionsGetObservable, ClinicSearchOptionsSetObservable, ClinicSearchPriceGetObservable, ClinicSearchPriceSetObservable } from \"../../../api/Clinics/ClinicOptionsGet\"\r\nimport ClinicSearchPrice from \"../../../api/Clinics/Models/ClinicSearchPrice\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport DraggableItemData from \"../../Draggable/DraggableItemData\"\r\nimport DroppableContainer from \"../../Draggable/DroppableContainer\"\r\nimport AdditionalOptions from \"./AdditionalOptions\"\r\nimport Checkbox from \"../../Checkbox\"\r\n\r\ninterface DefaultOptionsProps {\r\n onCancel: () => void\r\n isPortal: boolean\r\n}\r\n\r\ninterface DefaultOptionsState {\r\n options?: ClinicSearchOptions\r\n prices?: ClinicSearchPrice[]\r\n radius1?: number\r\n radius2?: number\r\n mpSitesOnly: boolean\r\n mpSitesOnlyPortalAdmin?: boolean\r\n loadingOptions: boolean\r\n loadingPrice: boolean\r\n savingOptions: boolean\r\n savingPrice: boolean\r\n savingAdditionalOptions: boolean\r\n updateAdditionalOptions: boolean\r\n}\r\n\r\nconst DefaultMinimumRadius = 15\r\nconst DefaultMaximumRadius = 50\r\nexport default class DefaultOptions extends React.PureComponent {\r\n state: DefaultOptionsState = {\r\n mpSitesOnly: false,\r\n mpSitesOnlyPortalAdmin: false,\r\n loadingOptions: false,\r\n loadingPrice: false,\r\n savingOptions: false,\r\n savingPrice: false,\r\n savingAdditionalOptions: false,\r\n updateAdditionalOptions: false\r\n }\r\n\r\n loadOptionsSubscription?: Subscription\r\n loadPriceSubscription?: Subscription\r\n saveOptionsSubscription?: Subscription\r\n savePriceSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.setState({ loadingOptions: true })\r\n this.loadOptionsSubscription = ClinicSearchOptionsGetObservable().subscribe(\r\n data => this.setState({\r\n options: data,\r\n radius1: data.SearchRadius1 || DefaultMinimumRadius,\r\n radius2: data.SearchRadius2 || DefaultMaximumRadius,\r\n mpSitesOnly: data.mpSitesOnly || false,\r\n mpSitesOnlyPortalAdmin: data.mpSitesOnlyPortalAdmin || false,\r\n loadingOptions: false\r\n }),\r\n (error) => this.handleAPIError(error, { loadingOptions: false })\r\n )\r\n if (this.props.isPortal) {\r\n this.setState({ loadingPrice: true })\r\n this.loadPriceSubscription = ClinicSearchPriceGetObservable().subscribe(\r\n data => this.setState({ prices: data, loadingPrice: false }),\r\n (error) => this.handleAPIError(error, { loadingPrice: false })\r\n )\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadOptionsSubscription && this.loadOptionsSubscription.unsubscribe()\r\n this.loadPriceSubscription && this.loadPriceSubscription.unsubscribe()\r\n this.saveOptionsSubscription && this.saveOptionsSubscription.unsubscribe()\r\n this.savePriceSubscription && this.savePriceSubscription.unsubscribe()\r\n }\r\n\r\n handleRadiusChange = (value: string, field: \"radius1\" | \"radius2\") => {\r\n const digits = value.replace(/\\D/g, \"\")\r\n this.setState({ ...{}, [field]: digits ? Number(digits) : undefined })\r\n }\r\n\r\n handleChangePriceItemsList = (items: DraggableItemData[]) => {\r\n const { prices } = this.state\r\n if (!prices?.length) {\r\n return\r\n }\r\n const newPrices = items.map(item => {\r\n const price = prices.find(price => price.PriceTierID.toString() === item.id)\r\n return {...price, Exclude: item.exclude}\r\n }\r\n ).filter(item => !!item).map(item => ({ ...item } as ClinicSearchPrice))\r\n this.setState({ prices: newPrices })\r\n }\r\n\r\n handleAPIError = (error: Error, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n toast.error(error)\r\n }\r\n\r\n handleUpdate = () => {\r\n this.setState({ savingOptions: true })\r\n this.saveOptionsSubscription = ClinicSearchOptionsSetObservable(this.state.radius1 || 0, this.state.radius2 || 0, this.state.mpSitesOnly).subscribe(\r\n (data) => toast.success(data),\r\n (error) => this.handleAPIError(error, {}),\r\n () => this.setState({ savingOptions: false })\r\n )\r\n if (this.props.isPortal) {\r\n if (!!this.state.prices) {\r\n this.savePriceSubscription = ClinicSearchPriceSetObservable(this.state.prices).subscribe(\r\n (data) => toast.success(data),\r\n (error) => this.handleAPIError(error, {}),\r\n () => this.setState({ savingOptions: false })\r\n )\r\n }\r\n\r\n this.setState(prev => ({ ...prev, updateAdditionalOptions: !prev.updateAdditionalOptions }))\r\n }\r\n }\r\n\r\n handleSaveAdditionalOptions = (saving: boolean) => {\r\n this.setState(prev => ({ ...prev, savingAdditionalOptions: saving }))\r\n }\r\n\r\n validationErrorsRadius1 = (): string[] => {\r\n const { radius1 } = this.state\r\n var errors: string[] = []\r\n const minValue = this.minRadius1Value()\r\n const maxValue = this.maxRadius1Value()\r\n if (!!radius1 && (radius1 < minValue || radius1 > maxValue)) {\r\n if (minValue === 1) {\r\n errors.push(`Minimum radius should be positive and not exceed ${maxValue} Miles`)\r\n } else {\r\n errors.push(`Minimum radius should be at least ${minValue} and no more than ${maxValue} Miles`)\r\n }\r\n }\r\n return errors\r\n }\r\n\r\n validationErrorsRadius2 = (): string[] => {\r\n const { radius1, radius2 } = this.state\r\n var errors: string[] = []\r\n const maxValue = this.maxRadius2Value()\r\n if (!!radius2 && !!radius1) {\r\n if (radius2 > maxValue) {\r\n errors.push(`Maximum radius should be greater than Minimum radius and not exceed ${maxValue} Miles`)\r\n }\r\n if (radius1 >= radius2) {\r\n errors.push(\"Maximum radius should be greater than Minimum radius\")\r\n }\r\n }\r\n return errors\r\n }\r\n\r\n minRadius1Value = () => this.state.options?.ParentRadius1 || 1\r\n maxRadius1Value = () => this.state.options?.ParentRadius2 || this.state.options?.MaximumRadius || 50\r\n maxRadius2Value = () => this.state.options?.ParentRadius2 || this.state.options?.MaximumRadius || 50\r\n\r\n render() {\r\n const { prices, radius1, radius2, loadingOptions, loadingPrice, savingOptions, savingPrice, savingAdditionalOptions } = this.state\r\n\r\n const radius1Errors = this.validationErrorsRadius1()\r\n const radius2Errors = this.validationErrorsRadius2()\r\n const radius1Entered = radius1 ? radius1 > 0 : false\r\n const radius2Entered = radius2 ? radius2 > 0 : false\r\n const isPortal = this.props.isPortal\r\n\r\n return <>\r\n \r\n \r\n
Radius Defaults {loadingOptions && }
\r\n
\r\n {!loadingOptions && \r\n \r\n \r\n \r\n Minimum (Miles)\r\n \r\n this.handleRadiusChange(e.target.value, \"radius1\")} />\r\n \r\n \r\n Integer between {this.minRadius1Value()} and {this.maxRadius1Value()} (inclusive)\r\n \r\n \r\n {radius1Errors.map((error, i) => {error})}\r\n \r\n \r\n \r\n Maximum (Miles)\r\n \r\n this.handleRadiusChange(e.target.value, \"radius2\")} />\r\n \r\n \r\n Integer greater than minimum and no more than {this.maxRadius2Value()}\r\n \r\n \r\n {radius2Errors.map((error, i) => {error})}\r\n \r\n \r\n \r\n \r\n ) => this.setState({mpSitesOnly: e.target.checked})} />\r\n \r\n \r\n \r\n \r\n {isPortal && When searching for clinic you can set a minimum and maximum radius default.}\r\n }\r\n {isPortal && <>\r\n \r\n {(loadingPrice || !!prices?.length) && <>\r\n \r\n
Price Tier Display Order {loadingPrice && }
\r\n
\r\n {!loadingPrice && \r\n \r\n \r\n ({ id: item.PriceTierID.toString(), name: item.DisplayName, exclude: item.Exclude })) || []} onChangeItemsList={this.handleChangePriceItemsList} />\r\n \r\n \r\n Drag and drop Tier to set the sort order for Tier to be displayed.\r\n }\r\n }\r\n }\r\n \r\n \r\n 0 || !radius1Entered || !radius2Entered || loadingOptions || loadingPrice}\r\n onClick={this.handleUpdate}\r\n spin={savingOptions || savingPrice || savingAdditionalOptions}\r\n disableOnSpin>Update\r\n \r\n
\r\n \r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { Row, Spinner, Button, Table, Modal, Col } from \"react-bootstrap\"\r\nimport Clinic from \"../../../api/Clinics/Models/Clinic\"\r\nimport Checkbox from \"../../Checkbox\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { RetrieveOwnedSitesObservable, UpdateOwnedSitesObservable } from \"../../../api/Clinics/ClinicOptionsGet\"\r\n\r\ninterface OwnedPrimarySitesProps {\r\n onCancel: () => void\r\n}\r\n\r\ninterface OwnedPrimarySitesState {\r\n clinics: Clinic[]\r\n loading: boolean\r\n saving: boolean\r\n primarySitesOnly: boolean\r\n}\r\n\r\nexport default class OwnedPrimarySites extends React.PureComponent {\r\n state: OwnedPrimarySitesState = {\r\n clinics: [],\r\n loading: false,\r\n saving: false,\r\n primarySitesOnly: false\r\n }\r\n\r\n loadSubscription?: Subscription\r\n updateSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.handleRetrieve()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.updateSubscription && this.updateSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n toast.error(error)\r\n }\r\n\r\n handleRetrieve = () => {\r\n this.setState({ loading: true })\r\n this.loadSubscription = RetrieveOwnedSitesObservable().subscribe(\r\n (data) => {\r\n this.setState({ clinics: data.Clinics, primarySitesOnly: data.UsePrimarySitesOnly, loading: false })\r\n },\r\n (error) => this.handleAPIError(error, { loading: false })\r\n )\r\n }\r\n\r\n handleUpdate = () => {\r\n this.setState({ saving: true })\r\n this.updateSubscription = UpdateOwnedSitesObservable({UsePrimarySitesOnly: this.state.primarySitesOnly, Clinics: this.state.clinics}).subscribe(\r\n (data) => {\r\n toast.success(data)\r\n this.setState({ saving: false })\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n findItem = (id: number) => {\r\n const item = this.state.clinics.filter((c) => c.ClinicSearchListID === id)[0]\r\n return {\r\n item: item,\r\n index: this.state.clinics.indexOf(item),\r\n }\r\n }\r\n\r\n excludeItem = (id: number, exclude: boolean) => {\r\n const { item, index } = this.findItem(id)\r\n if (item) {\r\n const newItems = [...this.state.clinics]\r\n newItems[index].Exclude = !!exclude\r\n this.setState({ clinics: newItems })\r\n }\r\n }\r\n\r\n render() {\r\n const { clinics, loading, saving, primarySitesOnly } = this.state\r\n\r\n return <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {loading && }\r\n {!loading && clinics.length === 0 && }\r\n {clinics.map(item => \r\n \r\n \r\n \r\n )}\r\n \r\n
Site NameSite CodeExclude
No Private Sites Available
{item.Name}{item.Code}) => this.excludeItem(item.ClinicSearchListID, !!e.target.checked)}/>
\r\n {!loading &&\r\n \r\n ) => this.setState({primarySitesOnly: e.target.checked})} />\r\n \r\n }\r\n \r\n this.handleUpdate()} disabled={loading} spin={saving} disableOnSpin>Update\r\n \r\n \r\n \r\n }\r\n}","import * as React from \"react\"\r\nimport { Row, Spinner, Button, Table, Modal } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { catchError, map, switchMap } from \"rxjs/operators\"\r\nimport Clinic from \"../../../api/Clinics/Models/Clinic\"\r\nimport { ClinicGetObservable, ClinicSearchListRemoveObservable, ClinicSearchListAddObservable } from \"../../../api/Clinics/ClinicOptionsGet\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport SiteSearch from \"../../SiteSearch/SiteSearch\"\r\nimport CollectionSite from \"../../../api/Location/LocationModel/CollectionSite\"\r\nimport OwnedPrimarySites from \"./OwnedPrimarySites\"\r\n\r\ninterface ListOptionsProps {\r\n headerText?: string\r\n isCompany: boolean\r\n clinicSearchListTypeID: number\r\n IsPrimary: boolean\r\n onCancel: () => void\r\n}\r\n\r\ninterface ListOptionsState {\r\n clinics: Clinic[]\r\n selected: Clinic[]\r\n loading: boolean\r\n adding: boolean\r\n removing: boolean\r\n showSiteSearchModal: boolean\r\n}\r\n\r\nexport default class ListOptions extends React.PureComponent {\r\n state: ListOptionsState = {\r\n clinics: [],\r\n selected: [],\r\n loading: false,\r\n adding: false,\r\n removing: false,\r\n showSiteSearchModal: false\r\n }\r\n\r\n clinicSearchListTypeID$ = new Subject()\r\n\r\n loadSubscription?: Subscription\r\n addSubscription?: Subscription\r\n removeSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.loadSubscription = this.clinicSearchListTypeID$.pipe(\r\n switchMap(id => concat(\r\n of({ loading: true }),\r\n ClinicGetObservable(id).pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError((error) => of({ loading: false, errorMessage: error.message }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: Clinic[], errorMessage?: string }) => {\r\n this.setState({ loading: o.loading, selected: [], clinics: o.result || [] })\r\n if (o.errorMessage) {\r\n toast.error(o.errorMessage)\r\n }\r\n },\r\n (error) => this.handleAPIError(error, { loading: false, userInfo: undefined })\r\n )\r\n this.clinicSearchListTypeID$.next(this.props.clinicSearchListTypeID)\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.addSubscription && this.addSubscription.unsubscribe()\r\n this.removeSubscription && this.removeSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n toast.error(error)\r\n }\r\n\r\n handleClinicClick = (clinic: Clinic) => {\r\n if (this.state.selected.includes(clinic)) {\r\n this.setState({ selected: this.state.selected.filter(item => item !== clinic) })\r\n } else {\r\n this.setState({ selected: [...this.state.selected, clinic] })\r\n }\r\n }\r\n\r\n handleRemove = () => {\r\n const ids = this.state.selected.map(item => item.ClinicSearchListID)\r\n this.setState({ removing: true })\r\n this.removeSubscription = ClinicSearchListRemoveObservable(this.props.clinicSearchListTypeID, ids).subscribe(\r\n (data) => {\r\n toast.success(data)\r\n this.setState({ removing: false })\r\n this.clinicSearchListTypeID$.next(this.props.clinicSearchListTypeID)\r\n },\r\n (error) => this.handleAPIError(error, { removing: false })\r\n )\r\n }\r\n\r\n handleAdd = (site: CollectionSite) => {\r\n this.setState({ adding: true, showSiteSearchModal: false })\r\n this.addSubscription = ClinicSearchListAddObservable(this.props.clinicSearchListTypeID, site.Code, site.Name).subscribe(\r\n (data) => {\r\n toast.success(data)\r\n this.setState({ adding: false })\r\n this.clinicSearchListTypeID$.next(this.props.clinicSearchListTypeID)\r\n },\r\n (error) => this.handleAPIError(error, { adding: false })\r\n )\r\n }\r\n\r\n render() {\r\n const { headerText } = this.props\r\n const { clinics, selected, loading, adding, removing, showSiteSearchModal } = this.state\r\n const disableRemove = selected.length === 0 || (this.props.isCompany && selected.length > 0 && !selected.every(el=> el.AccountID || 0 > 0))\r\n\r\n return <>\r\n {headerText &&
{headerText}
}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {loading && }\r\n {!loading && clinics.length === 0 && }\r\n {clinics.map(item => this.handleClinicClick(item)}>\r\n \r\n \r\n )}\r\n \r\n
Clinic NameClinic Code
NO DATA FOUND
{item.Name}{this.props.isCompany && !item.AccountID ? \" (Configured for Portal)\" : \"\"}{item.Code}
\r\n \r\n this.setState({ showSiteSearchModal: true })} spin={adding} disableOnSpin>Site Search\r\n Remove\r\n {!this.props.IsPrimary && }\r\n \r\n {this.props.IsPrimary && }\r\n this.setState({ showSiteSearchModal: false })}>\r\n \r\n SITE SEARCH\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n}\r\n","import * as React from \"react\"\r\n\r\ninterface ToggleSwitchProps {\r\n on?: string\r\n off?: string\r\n className?: string\r\n checked?: boolean\r\n disabled?: boolean\r\n onCheck(checked: boolean): void\r\n}\r\n\r\nexport default class ToggleSwitch extends React.PureComponent {\r\n render() {\r\n const className = `switch ${ this.props.className || \"\" }`\r\n return (\r\n \r\n )\r\n }\r\n}\r\n","import { useCallback } from \"react\"\r\n\r\nimport { Col, Row } from \"react-bootstrap\"\r\n\r\nimport ClinicGroupFF from \"../../../../api/Clinics/Models/ClinicGroupFF\"\r\nimport ToggleSwitch from \"../../../FormattedInputs/ToggleSwitch\"\r\n\r\ninterface IFFClinicGroupRowProps {\r\n group: ClinicGroupFF\r\n onClick: (group: ClinicGroupFF, excluded: boolean) => void\r\n}\r\n\r\nfunction FFClinicGroupRow(props: IFFClinicGroupRowProps) {\r\n const { group, onClick } = props\r\n\r\n const handleExcludeGroup = useCallback(\r\n (checked: boolean) => {\r\n onClick(group, checked)\r\n },\r\n [group, onClick]\r\n )\r\n\r\n return (\r\n \r\n \r\n {group.Name}\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default FFClinicGroupRow\r\n","import { useCallback, useEffect, useRef, useState } from \"react\"\r\n\r\nimport { Button, Col, Modal, Row, Spinner } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { finalize } from \"rxjs/operators\"\r\n\r\nimport FFClinicGroupRow from \"./FFClinicGroupRow\"\r\nimport { GetFFClinicGroupsObservable, SetExcludedClinicGroupsObservable } from \"../../../../api/Clinics/ClinicGroupsGet\"\r\nimport ClinicGroup from \"../../../../api/Clinics/Models/ClinicGroup\"\r\nimport ClinicGroupFF from \"../../../../api/Clinics/Models/ClinicGroupFF\"\r\nimport FormatError from \"../../../../formatters/FormatError\"\r\nimport ActionButton from \"../../../ActionButton\"\r\n\r\ninterface IClinicGroupsFFModalProps {\r\n excludedGroups: ClinicGroup[]\r\n onHide?: () => void\r\n}\r\n\r\nfunction ClinicGroupsFFModal(props: IClinicGroupsFFModalProps) {\r\n const { onHide, excludedGroups } = props\r\n const [show, setShow] = useState(false)\r\n const [groups, setGroups] = useState([])\r\n const [loadingGroups, setLoadingGroups] = useState(false)\r\n const [savingGroups, setSavingGroups] = useState(false)\r\n\r\n const subsRef = useRef({\r\n subs: new Subscription(),\r\n })\r\n\r\n useEffect(() => {\r\n const { subs } = subsRef.current\r\n return () => subs.unsubscribe()\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (show) {\r\n setLoadingGroups(true)\r\n subsRef.current.subs.add(\r\n GetFFClinicGroupsObservable()\r\n .pipe(finalize(() => setLoadingGroups(false)))\r\n .subscribe(\r\n (data) => {\r\n setGroups(\r\n data.map((group) => ({\r\n ...group,\r\n SearchRestrictID: excludedGroups.find((e) => e.RestrictCode === group.Id.toString())\r\n ?.SearchRestrictId,\r\n excluded: excludedGroups.some((e) => e.RestrictCode === group.Id.toString()),\r\n }))\r\n )\r\n },\r\n (error) => toast.error(FormatError(error))\r\n )\r\n )\r\n }\r\n }, [excludedGroups, show])\r\n\r\n const handleHide = () => {\r\n onHide?.()\r\n setShow(false)\r\n }\r\n\r\n const handleSave = () => {\r\n setSavingGroups(true)\r\n SetExcludedClinicGroupsObservable(groups)\r\n .pipe(finalize(() => setSavingGroups(false)))\r\n .subscribe(\r\n (data) => {\r\n handleHide()\r\n toast.success(data)\r\n },\r\n (error) => toast.error(FormatError(error))\r\n )\r\n }\r\n\r\n const handleExcludeGroup = useCallback(\r\n (group: ClinicGroupFF, excluded: boolean) => {\r\n setGroups(groups.map((p) => (p.Id === group.Id && p.excluded !== excluded ? { ...p, excluded } : p)))\r\n },\r\n [groups]\r\n )\r\n\r\n return (\r\n <>\r\n \r\n {show && (\r\n \r\n \r\n Clinic Group Name\r\n \r\n \r\n \r\n Name\r\n \r\n Excluded\r\n \r\n \r\n {loadingGroups ? (\r\n \r\n ) : (\r\n groups.map((group) => )\r\n )}\r\n \r\n \r\n \r\n Save\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nClinicGroupsFFModal.defaultProps = {\r\n onHide: undefined,\r\n}\r\n\r\nexport default ClinicGroupsFFModal\r\n","import { Observable } from \"rxjs\"\r\n\r\nimport ClinicGroup, { ClinicGroupSelected } from \"./Models/ClinicGroup\"\r\nimport ClinicGroupFF from \"./Models/ClinicGroupFF\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport function GetExcludedClinicGroupsObservable(): Observable {\r\n return ObservableFromFetch(\"WorkforceClinicGroups/GetExcludedClinicGroups\")\r\n}\r\n\r\nexport function GetFFClinicGroupsObservable(): Observable {\r\n return ObservableFromFetch(\"WorkforceClinicGroups/GetFFClinicGroups\")\r\n}\r\n\r\nexport function SetExcludedClinicGroupsObservable(groups: ClinicGroupFF[]): Observable {\r\n const requestBody: string = JSON.stringify(groups)\r\n return ObservableFromFetch(\"WorkforceClinicGroups/ManageExcludedClinicGroups\", requestBody)\r\n}\r\n\r\nexport function DeleteExcludedClinicGroupsObservable(groups: ClinicGroupSelected[]): Observable {\r\n const requestBody: string = JSON.stringify(groups)\r\n return ObservableFromFetch(\"WorkforceClinicGroups/DeleteExcludedClinicGroups\", requestBody)\r\n}\r\n","import { ClinicGroupSelected } from \"../../../../api/Clinics/Models/ClinicGroup\"\r\n\r\ninterface IExcludeClinicGroupRowProps {\r\n group: ClinicGroupSelected\r\n onClick: (group: ClinicGroupSelected) => void\r\n}\r\n\r\nfunction ExcludeClinicGroupRow(props: IExcludeClinicGroupRowProps) {\r\n const { group, onClick } = props\r\n\r\n return (\r\n onClick(group)}\r\n >\r\n {group.Name}\r\n \r\n )\r\n}\r\n\r\nexport default ExcludeClinicGroupRow\r\n","import { Spinner, Table } from \"react-bootstrap\"\r\n\r\nimport ExcludeClinicGroupRow from \"./ExcludeClinicGroupRow\"\r\nimport { ClinicGroupSelected } from \"../../../../api/Clinics/Models/ClinicGroup\"\r\n\r\ninterface IExcludeClinicGroupTableProps {\r\n groups: ClinicGroupSelected[]\r\n loadingGroups: boolean\r\n onSelectGroup: (group: ClinicGroupSelected) => void\r\n}\r\n\r\nfunction ExcludeClinicGroupTable(props: IExcludeClinicGroupTableProps) {\r\n const { groups, loadingGroups, onSelectGroup } = props\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {loadingGroups && (\r\n \r\n \r\n \r\n )}\r\n {!loadingGroups && groups.length === 0 && (\r\n \r\n \r\n \r\n )}\r\n {!loadingGroups &&\r\n groups.map((group) => (\r\n \r\n ))}\r\n \r\n
Group Name
\r\n \r\n
NO GROUPS FOUND
\r\n )\r\n}\r\n\r\nexport default ExcludeClinicGroupTable\r\n","import { useCallback, useEffect, useRef, useState } from \"react\"\r\n\r\nimport { Row } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { finalize } from \"rxjs/operators\"\r\n\r\nimport ClinicGroupsFFModal from \"./ClinicGroupsFFModal\"\r\nimport ExcludeClinicGroupTable from \"./ExcludeClinicGroupTable\"\r\nimport {\r\n DeleteExcludedClinicGroupsObservable,\r\n GetExcludedClinicGroupsObservable,\r\n} from \"../../../../api/Clinics/ClinicGroupsGet\"\r\nimport { ClinicGroupSelected } from \"../../../../api/Clinics/Models/ClinicGroup\"\r\nimport FormatError from \"../../../../formatters/FormatError\"\r\nimport ActionButton from \"../../../ActionButton\"\r\n\r\nfunction ExcludeClinicGroup() {\r\n const [groups, setGroups] = useState([])\r\n const [refresh, setRefresh] = useState(false)\r\n const [loadingGroups, setLoadingGroup] = useState(false)\r\n const [removingGroups, setRemovingGroups] = useState(false)\r\n\r\n const subsRef = useRef({\r\n subs: new Subscription(),\r\n })\r\n\r\n useEffect(() => {\r\n const { subs } = subsRef.current\r\n return () => subs.unsubscribe()\r\n }, [])\r\n\r\n useEffect(() => {\r\n setLoadingGroup(true)\r\n subsRef.current.subs.add(\r\n GetExcludedClinicGroupsObservable()\r\n .pipe(finalize(() => setLoadingGroup(false)))\r\n .subscribe(\r\n (data) =>\r\n setGroups(\r\n data.map((group) => ({\r\n ...group,\r\n selected: false,\r\n }))\r\n ),\r\n (error) => toast.error(FormatError(error))\r\n )\r\n )\r\n }, [refresh])\r\n\r\n const handleHideClinicGroupsFFModal = useCallback(() => {\r\n setRefresh((prev) => !prev)\r\n }, [])\r\n\r\n const handleGroupClick = useCallback((group: ClinicGroupSelected) => {\r\n setGroups((prev) =>\r\n prev.map((p) => (p.SearchRestrictId === group.SearchRestrictId ? { ...p, selected: !group.selected } : p))\r\n )\r\n }, [])\r\n\r\n const handleRemoveGroup = useCallback(() => {\r\n setRemovingGroups(true)\r\n subsRef.current.subs.add(\r\n DeleteExcludedClinicGroupsObservable(groups.filter((g) => g.selected))\r\n .pipe(finalize(() => setRemovingGroups(false)))\r\n .subscribe(\r\n (data) => {\r\n setGroups((prev) => prev.filter((g) => !g.selected))\r\n toast.success(data)\r\n },\r\n (error) => toast.error(FormatError(error))\r\n )\r\n )\r\n }, [groups])\r\n\r\n return (\r\n <>\r\n
Exclude by FormFox Clinic Group
\r\n \r\n \r\n \r\n !g.selected)}\r\n spin={removingGroups}\r\n disableOnSpin\r\n >\r\n Remove\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ExcludeClinicGroup\r\n","import * as React from \"react\"\r\nimport { Tab, Row, Col, Modal, Nav, Spinner } from \"react-bootstrap\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { toast } from \"react-toastify\"\r\nimport ClinicSearchListType from \"../../api/Clinics/Models/ClinicSearchListType\"\r\nimport { ClinicSearchListTypesGetObservable } from \"../../api/Clinics/ClinicOptionsGet\"\r\nimport DefaultOptions from \"./ClinicSearchOptions/DefaultOptions\"\r\nimport ListOptions from \"./ClinicSearchOptions/ListOptions\"\r\nimport { AppState } from \"../../AppState\"\r\nimport { isCompanyAdmin, isPortalAdmin } from \"../../authentication/isAdminRole\"\r\nimport { connect } from \"react-redux\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { Home } from \"../../config/Routes\"\r\nimport ExcludeClinicGroup from \"./ClinicSearchOptions/ExcludeClinicGroup/ExcludeClinicGroup\"\r\n\r\nenum TabName {\r\n DEFAULT = \"Default\", \r\n BLACKLIST = \"Blacklist\"\r\n} \r\n\r\ninterface ListData {\r\n name: string\r\n title: string\r\n tabName: string\r\n headerText?: string\r\n clinicSearchListTypeID: number\r\n visible: (state: ClinicSearchOptionsState) => boolean\r\n}\r\n\r\nconst LISTS: ListData[] = [\r\n {\r\n name: \"Primary\",\r\n title: \"Primary\",\r\n tabName: \"Primary\",\r\n clinicSearchListTypeID: 0,\r\n visible: (state) => state.isPortal || state.isCompany\r\n },\r\n {\r\n name: TabName.BLACKLIST,\r\n title: \"Exclusion List\",\r\n tabName: \"Exclusion List\",\r\n clinicSearchListTypeID: 0,\r\n headerText: \"Exclude by individual FormFox Site\",\r\n visible: (state) => state.isPortal || state.isCompany,\r\n },\r\n {\r\n name: \"Favorite\",\r\n title: \"Favorite\",\r\n tabName: \"Favorites\",\r\n clinicSearchListTypeID: 0,\r\n visible: (state) => false\r\n }\r\n]\r\n\r\ninterface ClinicSearchOptionsProps {\r\n appState: AppState\r\n}\r\n\r\ninterface ClinicSearchOptionsState {\r\n currentTab: string\r\n loading: boolean\r\n lists: ListData[]\r\n isPortal: boolean\r\n isCompany: boolean\r\n}\r\n\r\nexport class ClinicSearchOptions extends React.PureComponent {\r\n state: ClinicSearchOptionsState = {\r\n currentTab: TabName.DEFAULT,\r\n loading: false,\r\n lists: [],\r\n isPortal: isPortalAdmin(this.props.appState),\r\n isCompany: isCompanyAdmin(this.props.appState)\r\n }\r\n\r\n loadSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n if (this.state.isPortal || this.state.isCompany) {\r\n this.setState({ loading: true })\r\n this.loadSubscription = ClinicSearchListTypesGetObservable().subscribe(\r\n data => this.setState({ lists: this.buildVisibleLists(data), loading: false }),\r\n (error) => toast.error(error.message),\r\n () => this.setState({ loading: false })\r\n )\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n }\r\n\r\n buildVisibleLists = (listTypes: ClinicSearchListType[]): ListData[] => {\r\n const lists = LISTS.map(item => ({\r\n ...item,\r\n clinicSearchListTypeID: listTypes.find(listType => listType.Name === item.name)?.ClinicSearchListTypeID || 0\r\n }))\r\n return lists.filter(item => item.clinicSearchListTypeID > 0 && item.visible(this.state))\r\n }\r\n\r\n handleCancel = () => (this.props as RouteComponentProps).history?.push(Home)\r\n\r\n render() {\r\n const { currentTab, loading, lists, isPortal, isCompany } = this.state\r\n return (\r\n \r\n \r\n \r\n \r\n Clinic Search Options/{lists.find((item) => item.name === currentTab)?.title || TabName.DEFAULT}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n eventKey && this.setState({ currentTab: eventKey })\r\n }}\r\n >\r\n \r\n Default\r\n \r\n {lists.map((item) => (\r\n \r\n {item.tabName}\r\n \r\n ))}\r\n \r\n {loading && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {TabName.DEFAULT === currentTab && (\r\n this.handleCancel()} isPortal={isPortal} />\r\n )}\r\n \r\n {!loading &&\r\n lists.map((item) => (\r\n \r\n {item.name === currentTab && TabName.BLACKLIST === currentTab && isPortal && }\r\n {item.name === currentTab && (\r\n this.handleCancel()}\r\n />\r\n )}\r\n \r\n ))}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): { appState: AppState } {\r\n return {\r\n appState: state\r\n }\r\n}\r\nconst ConnectedClinicSearchOptions = connect(mapStateToProps, null)(ClinicSearchOptions)\r\nexport default ConnectedClinicSearchOptions","import React, {Component} from 'react'\r\nimport {Button, Card, Col, Container, Form, Image, ListGroup, Row} from \"react-bootstrap\";\r\nimport { connect } from 'react-redux'\r\nimport {Action, Dispatch} from \"redux\";\r\nimport {AppPageWrapper} from \"../NavMenu/AppPageWrapper\";\r\nimport {AppState, AssignedClinic, WorkforceClinicPortal} from \"../../AppState\";\r\nimport {SelectCompany} from \"../../actions/WorkforceClinicAction\";\r\nimport { CompareAccounts, SelectedAccountName } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\n\r\nexport interface CompanySelectionProps{\r\n\r\n}\r\nexport interface CompanySelectionAppStateProps{\r\n selectableCompanies?: WorkforceClinicPortal[];\r\n}\r\nexport interface CompanySelectionDispatchProps{\r\n selectCompany: (company: string, companyLink: string) => void\r\n}\r\nexport class CompanySelection extends Component{\r\n\r\n selectCompany = (company: AssignedClinic) => {\r\n this.props.selectCompany(company.ParticipationID, company.Link);\r\n }\r\n\r\n selectPortal = (portal: WorkforceClinicPortal) => {\r\n this.props.selectCompany(portal.ParticipationID || '', portal.Link || '');\r\n }\r\n\r\n render() {\r\n const companies = (this.props.selectableCompanies?.sort((a, b) => (a.ImplementationName || \"\").localeCompare(b.ImplementationName || \"\")) || []).map(\r\n (portal, portalIndex) => {\r\n const childCompanies = portal.AssignedClientDetailsOfClinic.filter(company => !company.LocationID).sort(CompareAccounts).map((clinic, clinicIndex) => {\r\n return (\r\n \r\n );\r\n });\r\n return \r\n \r\n {childCompanies}\r\n \r\n \r\n }\r\n );\r\n return \r\n \r\n
\r\n \r\n \r\n \r\n Company Selection\r\n \r\n {companies}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n }\r\n}\r\nfunction mapStateToProps(state: AppState): CompanySelectionAppStateProps {\r\n return {\r\n selectableCompanies: state.Workforce1Companies.visibleCompanies\r\n }\r\n}\r\nfunction mapDispatchProps(dispatch: Dispatch): CompanySelectionDispatchProps {\r\n return {\r\n selectCompany: (company: string, companyLink: string) => (dispatch(SelectCompany(company, companyLink))),\r\n }\r\n}\r\nexport default connect(\r\n mapStateToProps, mapDispatchProps)(CompanySelection);\r\n","import RandomPersonnelGridOptions from \"./RandomPersonnelModel/RandomPersonnelGridOptions\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport RandomPersonnelIdentifier from \"./RandomPersonnelModel/RandomPersonnelIdentifier\"\r\nimport RandomPersonnelGridRecord from \"./RandomPersonnelModel/RandomPersonnelGridRecord\"\r\nimport GridResponse from \"../GridResponse\"\r\nimport { ColumnFilters } from \"./RandomPersonnelModel/ColumnFilters\"\r\nimport { Filter } from \"../GridRequest\"\r\n\r\nexport type RandomPersonnelGridResponse = GridResponse & ColumnFilters\r\n\r\nfunction filters(filters: Filter[] = []) {\r\n return {\r\n Company: filters.find((filter) => filter.column === \"Company\")?.values || [],\r\n IDNumber: filters.find((filter) => filter.column === \"IDNumber\")?.values || [],\r\n Inactive: filters.find((filter) => filter.column === \"Status\")?.values.map((value) => value === \"Inactive\") || [],\r\n Location: filters.find((filter) => filter.column === \"Location\")?.values || [],\r\n Name: filters.find((filter) => filter.column === \"Name\")?.values || [],\r\n Region: filters.find((filter) => filter.column === \"Region\")?.values || [],\r\n Reg: filters.find((filter) => filter.column === \"RegulatoryMode\")?.values || [],\r\n Occupation: filters.find((filter) => filter.column === \"Occupation\")?.values || [],\r\n Category: filters.find((filter) => filter.column === \"Category\")?.values || [],\r\n Supervisor1: filters.find((filter) => filter.column === \"Supervisor1\")?.values || [],\r\n Supervisor2: filters.find((filter) => filter.column === \"Supervisor2\")?.values || [],\r\n HireDate: filters.find((filter) => filter.column === \"HireDate\")?.values || [],\r\n TerminationDate: filters.find((filter) => filter.column === \"TerminationDate\")?.values || [],\r\n PreEmploymentTestOnFile: filters.find((filter) => filter.column === \"PreEmploymentTestOnFile\")?.values || [],\r\n Gender: filters.find((filter) => filter.column === \"Gender\")?.values || [],\r\n DateOfBirth: filters.find((filter) => filter.column === \"DateOfBirth\")?.values || [],\r\n AddressLine1: filters.find((filter) => filter.column === \"AddressLine1\")?.values || [],\r\n City: filters.find((filter) => filter.column === \"City\")?.values || [],\r\n State: filters.find((filter) => filter.column === \"State\")?.values || [],\r\n Zip: filters.find((filter) => filter.column === \"Zip\")?.values || [],\r\n WorkPhone: filters.find((filter) => filter.column === \"WorkPhone\")?.values || [],\r\n CellPhone: filters.find((filter) => filter.column === \"CellPhone\")?.values || [],\r\n Email: filters.find((filter) => filter.column === \"Email\")?.values || [],\r\n User1: filters.find((filter) => filter.column === \"User1\")?.values || [],\r\n User2: filters.find((filter) => filter.column === \"User2\")?.values || [],\r\n User3: filters.find((filter) => filter.column === \"User3\")?.values || [],\r\n User4: filters.find((filter) => filter.column === \"User4\")?.values || [],\r\n User5: filters.find((filter) => filter.column === \"User5\")?.values || [],\r\n User6: filters.find((filter) => filter.column === \"User6\")?.values || [],\r\n User7: filters.find((filter) => filter.column === \"User7\")?.values || [],\r\n User8: filters.find((filter) => filter.column === \"User8\")?.values || [],\r\n User9: filters.find((filter) => filter.column === \"User9\")?.values || [],\r\n User10: filters.find((filter) => filter.column === \"User10\")?.values || [],\r\n }\r\n}\r\n\r\nfunction gridParams(options: RandomPersonnelGridOptions): string {\r\n let result = JSON.stringify({\r\n Exact: false,\r\n Filters: filters(options.filters),\r\n GridFilters: filters(options.columnFilters),\r\n Mask: options.search.text,\r\n PageNumber: options.pageNumber,\r\n PageSize: options.pageSize || 20,\r\n SearchBy: options.search.field || \"All Personnel IDs\",\r\n SortGrid: {\r\n SortColumn: options.sort?.column || \"\",\r\n SortOrder: options.sort?.order.toUpperCase() === \"DESC\" ? \"DSC\" : options.sort?.order.toUpperCase(),\r\n },\r\n WithInactive: true,\r\n IsConsortium: options.isConsortium,\r\n ForceReload: options.forceReload,\r\n })\r\n return result\r\n}\r\n\r\nfunction checkExist(options: RandomPersonnelGridOptions){\r\n return JSON.stringify({\r\n Exact: false,\r\n Filters: { Category: [], Company: [], IDNumber: [], Inactive: [], Location: [], Name: [], Region: [], Reg: [] },\r\n IsAddIndividualSearch: true,\r\n Mask: options.search.text,\r\n PageNumber: options.pageNumber,\r\n PageSize: options.pageSize,\r\n SearchBy: options.search.field,\r\n WithInactive: true,\r\n SortGrid: { SortColumn: \"\", SortOrder: \"\" }\r\n })\r\n}\r\n\r\nfunction exportParams(options: RandomPersonnelGridOptions): string {\r\n return JSON.stringify({\r\n Exact: false,\r\n Filters: filters(options.filters),\r\n GridFilters: filters(options.columnFilters),\r\n IsSearch: !!options.search.text,\r\n Mask: \"\",\r\n SearchBy: options.search.field || \"All Personnel IDs\",\r\n SearchString: options.search.text,\r\n WithInactive: true,\r\n })\r\n}\r\n\r\nfunction printParams(values: RandomPersonnelIdentifier[], options: RandomPersonnelGridOptions): string {\r\n return JSON.stringify({\r\n Filters: filters(options.filters),\r\n IsSearch: !!options.search.text,\r\n PersonnelID: values.map(value => { return {PersonID: value.PersonID, Mask: value.ID} }),\r\n SearchBy: options.search.field || \"All Personnel IDs\",\r\n SearchString: options.search.text\r\n })\r\n}\r\n\r\nexport interface ConsortiumsMembership {\r\n PersonAssignedToPoolID: number\r\n PersonID: number\r\n PoolID: number\r\n Name: string\r\n Active: boolean\r\n}\r\n\r\nexport function RetrieveConsortiumsMembership(PersonID: number) {\r\n const requestBody: string = new URLSearchParams({\r\n PersonID: PersonID.toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"WorkforceRandomTest/GetConsortiumsMembership?\" + requestBody)\r\n}\r\n\r\nexport function UpdateConsortiumsMembership(data: ConsortiumsMembership[]) {\r\n const params: string = JSON.stringify({\r\n Members: data\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceRandomTest/UpdateConsortiumsMembership\", params)\r\n}\r\n\r\nexport const RandomPersonnelGridObservable = (params: RandomPersonnelGridOptions) => ObservableFromFetch(\"WorkforceRandomTest/GetPersonnelGrid\", gridParams(params))\r\nexport const RandomPersonnelExportCsv = (params: RandomPersonnelGridOptions) => ObservableFromFetch(\"WorkforceRandomTest/ExportPersonnelRecord\", exportParams(params))\r\nexport const RandomPersonnelPrint = (values: RandomPersonnelIdentifier[], params: RandomPersonnelGridOptions) => ObservableFromFetch(\"WorkforceRandomTest/PrintPersonnelRecord\", printParams(values, params))\r\nexport const RandomPersonnelAddPersonObservable = (params: RandomPersonnelGridOptions) => ObservableFromFetch(\"WorkforceRandomTest/GetPersonnelGrid\", checkExist(params))\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport RandomPersonnelIdentifier from \"./RandomPersonnelModel/RandomPersonnelIdentifier\"\r\n\r\nexport default function RandomPersonnelRemoveObservable(persons: RandomPersonnelIdentifier[], force: boolean = false): Observable {\r\n const params: string = JSON.stringify({\r\n PersonIDs: persons.map(item => ({ PersonID: item.PersonID, SSN: item.ID })),\r\n force: force\r\n })\r\n\r\n return ObservableFromFetch(\"RandomTest/RemovePerson\", params)\r\n}\r\n","import * as React from \"react\"\r\nimport { Modal, Button, Container, Col, Row } from \"react-bootstrap\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport { AsyncTypeahead, Typeahead } from \"react-bootstrap-typeahead\"\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css'\r\nimport { BehaviorSubject, of, concat, Subscription, combineLatest } from \"rxjs\"\r\nimport { debounceTime, filter, map, pairwise, startWith, switchMap } from \"rxjs/operators\"\r\nimport CompanyInput from \"../FormattedInputs/CompanyInput\"\r\nimport AutoFilterCompaniesGetObservable from \"../../api/Companies/AutoFilterCompaniesGet\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport AutoFilterRegionsGetObservable from \"../../api/Regions/AutoFilterRegionsGet\"\r\nimport AutoFilterRegion from \"../../api/Regions/Model/AutoFilterRegion\"\r\nimport AutoFilterLocationsGetObservable from \"../../api/Location/AutoFilterLocationsGet\"\r\nimport AutoFilterLocation from \"../../api/Location/LocationModel/AutoFilterLocation\"\r\nimport LabServiceRegulatoryModesGetObservable from \"../../api/LabService/LabServiceRegulatoryModesGet\"\r\nimport RegulatoryMode from \"../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport EmployeeCategoriesGetObservable from \"../../api/LabService/EmployeeCategoriesGet\"\r\nimport EmployeeCategory from \"../../api/LabService/LabServiceModel/EmployeeCategory\"\r\n\r\ninterface AdvancedFiltersModalProps {\r\n show: boolean\r\n selectedCompanies: AutoFilterCompany[]\r\n selectedRegions: AutoFilterRegion[]\r\n selectedLocations: AutoFilterLocation[]\r\n selectedRegulatoryModes: RegulatoryMode[]\r\n selectedCategories: EmployeeCategory[]\r\n accountType: string\r\n onSave: (companies: AutoFilterCompany[], regions: AutoFilterRegion[], locations: AutoFilterLocation[], regulatoryModes: RegulatoryMode[], categories: EmployeeCategory[], close: boolean) => void\r\n onClose: () => void\r\n}\r\n\r\ninterface AdvancedFiltersModalState {\r\n companyTypeaheadKey: string\r\n unfilteredCompanies: AutoFilterCompany[]\r\n companies: AutoFilterCompany[]\r\n isCompaniesLoading: boolean\r\n selectedCompanies: AutoFilterCompany[]\r\n regionTypeaheadKey: string\r\n unfilteredRegions: AutoFilterRegion[]\r\n regions: AutoFilterRegion[]\r\n isRegionsLoading: boolean\r\n selectedRegions: AutoFilterRegion[]\r\n locationTypeaheadKey: string\r\n unfilteredLocations: AutoFilterLocation[]\r\n locations: AutoFilterLocation[]\r\n isLocationsLoading: boolean\r\n selectedLocations: AutoFilterLocation[]\r\n availableRegulatoryModes?: RegulatoryMode[]\r\n isRegulatoryModesLoading: boolean\r\n selectedRegulatoryModes: RegulatoryMode[]\r\n availableCategories?: EmployeeCategory[]\r\n isCategoriesLoading: boolean\r\n selectedCategories: EmployeeCategory[]\r\n canEditCompanies: boolean\r\n canEditRegions: boolean\r\n canEditLocations: boolean\r\n}\r\n\r\nexport default class AdvancedFiltersModal extends React.Component {\r\n state: AdvancedFiltersModalState = {\r\n companyTypeaheadKey: \"company\",\r\n unfilteredCompanies: [],\r\n companies: [],\r\n isCompaniesLoading: false,\r\n selectedCompanies: this.props.selectedCompanies,\r\n regionTypeaheadKey: \"region\",\r\n unfilteredRegions: [],\r\n regions: [],\r\n isRegionsLoading: false,\r\n selectedRegions: this.props.selectedRegions,\r\n locationTypeaheadKey: \"location\",\r\n unfilteredLocations: [],\r\n locations: [],\r\n isLocationsLoading: false,\r\n selectedLocations: this.props.selectedLocations,\r\n isRegulatoryModesLoading: false,\r\n selectedRegulatoryModes: this.props.selectedRegulatoryModes,\r\n isCategoriesLoading: false,\r\n selectedCategories: [],\r\n canEditCompanies: [\"master\"].includes(this.props.accountType),\r\n canEditRegions: [\"master\", \"company\"].includes(this.props.accountType),\r\n canEditLocations: [\"master\", \"company\", \"region\"].includes(this.props.accountType)\r\n }\r\n\r\n subscriptions = new Subscription()\r\n\r\n searchCompany$ = new BehaviorSubject(\"\")\r\n searchRegion$ = new BehaviorSubject(\"\")\r\n searchLocation$ = new BehaviorSubject(\"\")\r\n\r\n selectedCompanies$ = new BehaviorSubject([])\r\n selectedRegions$ = new BehaviorSubject([])\r\n\r\n regionTypeahead = React.createRef>()\r\n locationTypeahead = React.createRef>()\r\n regulatoryModeTypeahead = React.createRef>()\r\n categoryTypeahead = React.createRef>()\r\n\r\n componentDidMount() {\r\n this.subscriptions.add(AutoFilterCompaniesGetObservable(\"\", true).subscribe(\r\n (data: AutoFilterCompany[]) => {\r\n this.setState({\r\n unfilteredCompanies: data,\r\n isCompaniesLoading: false\r\n })\r\n },\r\n () => this.setState({ isCompaniesLoading: false })\r\n ))\r\n\r\n this.subscriptions.add(LabServiceRegulatoryModesGetObservable().subscribe(\r\n (data: RegulatoryMode[]) => {\r\n this.setState({\r\n availableRegulatoryModes: data,\r\n isRegulatoryModesLoading: false\r\n })\r\n }\r\n ))\r\n\r\n this.subscriptions.add(EmployeeCategoriesGetObservable().subscribe(\r\n (data: EmployeeCategory[]) => {\r\n this.setState({\r\n availableCategories: data,\r\n isCategoriesLoading: false\r\n })\r\n }\r\n ))\r\n\r\n type SearchRegionsData = { company: number, filter: string, companyChanged: boolean, shouldRequestApi: boolean, shouldSetEmptyResult: boolean, shouldUpdateUnfilteredList: boolean, shouldFillFromUnfilteredResult: boolean }\r\n\r\n this.subscriptions.add(combineLatest([\r\n this.selectedCompanies$,\r\n this.searchRegion$.pipe(debounceTime(500), map(text => text.trim())),\r\n of(this.state.canEditCompanies)\r\n ]).pipe(\r\n startWith([[], \"\", false]),\r\n pairwise(),\r\n map(([[prevCompanies, prevFilter, _1], [companies, filter, companiesAllowed]]) => {\r\n const prevC = prevCompanies as AutoFilterCompany[]\r\n const c = companies as AutoFilterCompany[]\r\n const filterLength = (filter as string).length\r\n if (companiesAllowed as boolean) {\r\n return {\r\n company: c.length === 1 ? c[0]?.AccountID || 0 : 0,\r\n filter: prevC.length !== c.length ? \"\" : filter,\r\n companyChanged: prevC.length !== c.length,\r\n shouldRequestApi: c.length === 1 && (prevC.length !== 1 || filterLength >= 3),\r\n shouldSetEmptyResult: c.length !== 1,\r\n shouldUpdateUnfilteredList: c.length === 1 && prevC.length !== 1,\r\n shouldFillFromUnfilteredResult: c.length === 1 && prevC.length === 1 && filterLength < 3\r\n } as SearchRegionsData\r\n } else {\r\n const isFirstTimeLoad = filterLength === 0 && (prevFilter as string).length === 0\r\n return {\r\n company: 0,\r\n filter: filter,\r\n companyChanged: false,\r\n shouldRequestApi: filterLength >= 3 || isFirstTimeLoad,\r\n shouldSetEmptyResult: false,\r\n shouldUpdateUnfilteredList: isFirstTimeLoad,\r\n shouldFillFromUnfilteredResult: filterLength < 3 && !isFirstTimeLoad\r\n } as SearchRegionsData\r\n }\r\n }),\r\n filter((o: SearchRegionsData) => o.shouldRequestApi || o.shouldFillFromUnfilteredResult || o.shouldSetEmptyResult),\r\n switchMap((o: SearchRegionsData) =>\r\n o.shouldFillFromUnfilteredResult || o.shouldSetEmptyResult\r\n ? of({ isLoading: false, shouldFillFromUnfilteredResult: o.shouldFillFromUnfilteredResult, shouldSetEmptyResult: o.shouldSetEmptyResult, companyChanged: o.companyChanged })\r\n : concat(\r\n of({ isLoading: true }),\r\n AutoFilterRegionsGetObservable(o.company, o.filter).pipe(\r\n map((data) => ({ isLoading: false, result: data, shouldUpdateUnfilteredList: o.shouldUpdateUnfilteredList }))\r\n )\r\n ))\r\n ).subscribe(\r\n (data: { isLoading: boolean, result?: AutoFilterRegion[], shouldUpdateUnfilteredList?: boolean, shouldFillFromUnfilteredResult?: boolean, shouldSetEmptyResult?: boolean, companyChanged?: boolean }) => {\r\n this.setState({\r\n regionTypeaheadKey: !!data.companyChanged ? Math.random().toString() : this.state.regionTypeaheadKey,\r\n isRegionsLoading: data.isLoading,\r\n unfilteredRegions: !!data.shouldUpdateUnfilteredList ? data.result || [] : this.state.unfilteredRegions,\r\n regions: !!data.shouldSetEmptyResult\r\n ? []\r\n : !!data.shouldFillFromUnfilteredResult\r\n ? this.state.unfilteredRegions\r\n : data.result || this.state.regions\r\n })\r\n }))\r\n\r\n type SearchLocationsData = { company: number, region: number, filter: string, regionChanged: boolean, shouldRequestApi: boolean, shouldSetEmptyResult: boolean, shouldUpdateUnfilteredList: boolean, shouldFillFromUnfilteredResult: boolean }\r\n\r\n this.subscriptions.add(combineLatest([\r\n this.selectedCompanies$,\r\n this.selectedRegions$,\r\n this.searchLocation$.pipe(debounceTime(500), map(text => text.trim())),\r\n of(this.state.canEditCompanies),\r\n of(this.state.canEditRegions)\r\n ]).pipe(\r\n startWith([[], [], \"\", false, false]),\r\n pairwise(),\r\n map(([[prevCompanies, prevRegions, prevFilter, _1, _2], [companies, regions, filter, companiesAllowed, regionsAllowed]]) => {\r\n const prevC = prevCompanies as AutoFilterCompany[]\r\n const c = companies as AutoFilterCompany[]\r\n const prevR = prevRegions as AutoFilterRegion[]\r\n const r = prevC.length !== c.length ? [] : regions as AutoFilterRegion[]\r\n const cAllowed = companiesAllowed as boolean\r\n const rAllowed = regionsAllowed as boolean\r\n const filterLength = (filter as string).length\r\n if (!rAllowed) {\r\n const isFirstTimeLoad = filterLength === 0 && (prevFilter as string).length === 0\r\n return {\r\n company: 0,\r\n region: 0,\r\n filter: filter,\r\n regionChanged: false,\r\n shouldRequestApi: filterLength >= 3 || isFirstTimeLoad,\r\n shouldSetEmptyResult: false,\r\n shouldUpdateUnfilteredList: isFirstTimeLoad,\r\n shouldFillFromUnfilteredResult: filterLength < 3 && !isFirstTimeLoad\r\n } as SearchLocationsData\r\n } else if (!cAllowed) {\r\n const isFirstTimeLoad = filterLength === 0 && (prevFilter as string).length === 0 && r.length === 0\r\n return {\r\n company: 0,\r\n region: r.length === 1 ? r[0]?.XrefAccountMapping?.RegionID || 0 : 0,\r\n filter: prevR.length !== r.length ? \"\" : filter,\r\n regionChanged: prevR.length !== r.length,\r\n shouldRequestApi: (r.length === 0 && prevR.length > 0) || (r.length === 1 && prevR.length !== 1) || filterLength >= 3 || isFirstTimeLoad,\r\n shouldSetEmptyResult: r.length > 1,\r\n shouldUpdateUnfilteredList: (r.length === 0 && prevR.length > 0) || (r.length === 1 && prevR.length !== 1) || isFirstTimeLoad,\r\n shouldFillFromUnfilteredResult: ((r.length === 0 && prevR.length === 0) || (r.length === 1 && prevR.length === 1)) && filterLength < 3 && !isFirstTimeLoad\r\n } as SearchLocationsData\r\n } else {\r\n return {\r\n company: c.length === 1 ? c[0]?.AccountID || 0 : 0,\r\n region: r.length === 1 ? r[0]?.XrefAccountMapping?.RegionID || 0 : 0,\r\n filter: prevC.length !== c.length || prevR.length !== r.length ? \"\" : filter,\r\n regionChanged: prevR.length !== r.length || prevC.length !== c.length,\r\n shouldRequestApi: (c.length === 1 && ((r.length === 0 && prevR.length > 0) || (r.length === 1 && prevR.length !== 1) || prevC.length !== 1 || filterLength >= 3)),\r\n shouldSetEmptyResult: r.length > 1,\r\n shouldUpdateUnfilteredList: (r.length === 0 && prevR.length > 0) || (r.length === 1 && prevR.length !== 1) || (c.length === 1 && prevC.length !== 1),\r\n shouldFillFromUnfilteredResult: ((r.length === 0 && prevR.length === 0) || (r.length === 1 && prevR.length === 1)) && (c.length === 1 && prevC.length === 1) && filterLength < 3\r\n } as SearchLocationsData\r\n }\r\n }),\r\n filter((o: SearchLocationsData) => o.shouldRequestApi || o.shouldFillFromUnfilteredResult || o.shouldSetEmptyResult || o.shouldFillFromUnfilteredResult),\r\n switchMap((o: SearchLocationsData) =>\r\n o.shouldFillFromUnfilteredResult || o.shouldSetEmptyResult\r\n ? of({ isLoading: false, shouldFillFromUnfilteredResult: o.shouldFillFromUnfilteredResult, shouldSetEmptyResult: o.shouldSetEmptyResult, regionChanged: o.regionChanged })\r\n : concat(\r\n of({ isLoading: true }),\r\n AutoFilterLocationsGetObservable(o.company, o.region, o.filter).pipe(\r\n map((data) => ({ isLoading: false, result: data, shouldUpdateUnfilteredList: o.shouldUpdateUnfilteredList, regionChanged: o.regionChanged }))\r\n )\r\n ))\r\n ).subscribe(\r\n (data: { isLoading: boolean, result?: AutoFilterLocation[], shouldUpdateUnfilteredList?: boolean, shouldFillFromUnfilteredResult?: boolean, shouldSetEmptyResult?: boolean, regionChanged?: boolean }) => {\r\n this.setState({\r\n locationTypeaheadKey: !!data.regionChanged ? Math.random().toString() : this.state.locationTypeaheadKey,\r\n isLocationsLoading: data.isLoading,\r\n unfilteredLocations: !!data.shouldUpdateUnfilteredList ? data.result || [] : this.state.unfilteredLocations,\r\n locations: !!data.shouldSetEmptyResult\r\n ? []\r\n : !!data.shouldFillFromUnfilteredResult\r\n ? this.state.unfilteredLocations\r\n : data.result || this.state.locations\r\n })\r\n }))\r\n\r\n this.subscriptions.add(this.searchCompany$.pipe(\r\n debounceTime(500),\r\n map(filter => (filter ?? \"\").trim()),\r\n filter(filter => filter.length >= 3 || filter.length === 0),\r\n switchMap((filter) => filter.length === 0\r\n ? of({ isLoading: false, items: this.state.unfilteredCompanies })\r\n : concat(\r\n of({ isLoading: true }),\r\n AutoFilterCompaniesGetObservable(filter).pipe(\r\n map((data) => ({ isLoading: false, items: data }))\r\n )\r\n ))\r\n ).subscribe(\r\n (state: { isLoading: boolean, items?: AutoFilterCompany[] }) => {\r\n state.items\r\n ? this.setState({ isCompaniesLoading: state.isLoading, companies: state.items })\r\n : this.setState({ isCompaniesLoading: state.isLoading })\r\n },\r\n () => this.setState({ isCompaniesLoading: false })\r\n ))\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: AdvancedFiltersModalProps, prevState: AdvancedFiltersModalState) {\r\n if (!(this.isCompaniesEqual(this.props.selectedCompanies, prevProps.selectedCompanies)\r\n && this.isRegionsEqual(this.props.selectedRegions, prevProps.selectedRegions)\r\n && this.isLocationsEqual(this.props.selectedLocations, prevProps.selectedLocations)\r\n && this.isRegulatoryModesEqual(this.props.selectedRegulatoryModes, prevProps.selectedRegulatoryModes)\r\n && this.isCategoriesEqual(this.props.selectedCategories, prevProps.selectedCategories))) {\r\n this.setState({\r\n selectedCompanies: this.props.selectedCompanies,\r\n selectedRegions: this.props.selectedRegions,\r\n selectedLocations: this.props.selectedLocations,\r\n selectedRegulatoryModes: this.props.selectedRegulatoryModes,\r\n selectedCategories: this.props.selectedCategories\r\n })\r\n } else {\r\n if (!this.isCompaniesEqual(prevState.selectedCompanies, this.state.selectedCompanies)) {\r\n this.searchCompany$.next(\"\")\r\n this.selectedCompanies$.next(this.state.selectedCompanies)\r\n }\r\n if (!this.isRegionsEqual(prevState.selectedRegions, this.state.selectedRegions)) {\r\n this.selectedRegions$.next(this.state.selectedRegions)\r\n }\r\n }\r\n }\r\n\r\n isCompaniesEqual = (items1: AutoFilterCompany[], items2: AutoFilterCompany[]) => {\r\n const itemsString = (items: AutoFilterCompany[]) => items.map(item => item.AccountID).sort().join(\",\")\r\n return itemsString(items1) === itemsString(items2)\r\n }\r\n\r\n isRegionsEqual = (items1: AutoFilterRegion[], items2: AutoFilterRegion[]) => {\r\n const itemsString = (items: AutoFilterRegion[]) => items.map(item => item.Name).sort().join(\",\")\r\n return itemsString(items1) === itemsString(items2)\r\n }\r\n\r\n isLocationsEqual = (items1: AutoFilterLocation[], items2: AutoFilterLocation[]) => {\r\n const itemsString = (items: AutoFilterLocation[]) => items.map(item => item.Name).sort().join(\",\")\r\n return itemsString(items1) === itemsString(items2)\r\n }\r\n\r\n isRegulatoryModesEqual = (items1: RegulatoryMode[], items2: RegulatoryMode[]) => {\r\n const itemsString = (items: RegulatoryMode[]) => items.map(item => item.Name).sort().join(\",\")\r\n return itemsString(items1) === itemsString(items2)\r\n }\r\n\r\n isCategoriesEqual = (items1: EmployeeCategory[], items2: EmployeeCategory[]) => {\r\n const itemsString = (items: EmployeeCategory[]) => items.map(item => item.Name).sort().join(\",\")\r\n return itemsString(items1) === itemsString(items2)\r\n }\r\n\r\n handleSave = () => {\r\n const { selectedCompanies, selectedRegions, selectedLocations, selectedRegulatoryModes, selectedCategories } = this.state\r\n this.props.onSave(selectedCompanies, selectedRegions, selectedLocations, selectedRegulatoryModes, selectedCategories, true)\r\n }\r\n\r\n handleClearAll = () => {\r\n this.setState({ selectedCompanies: [], selectedRegions: [], selectedLocations: [], selectedRegulatoryModes: [], selectedCategories: [] })\r\n\r\n const { selectedCompanies, selectedRegions, selectedLocations, selectedRegulatoryModes, selectedCategories } = this.props\r\n const filterAlreadySet = selectedCompanies.length > 0 || selectedRegions.length > 0 || selectedLocations.length > 0 || selectedRegulatoryModes.length > 0 || selectedCategories.length > 0\r\n if (filterAlreadySet) {\r\n this.props.onSave([], [], [], [], [], false)\r\n }\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({\r\n selectedCompanies: this.props.selectedCompanies,\r\n selectedRegions: this.props.selectedRegions,\r\n selectedLocations: this.props.selectedLocations,\r\n selectedRegulatoryModes: this.props.selectedRegulatoryModes,\r\n selectedCategories: this.props.selectedCategories\r\n })\r\n this.props.onClose()\r\n }\r\n\r\n handleAddCompany = (items: AutoFilterCompany[]) => {\r\n if (items[0] && !this.state.selectedCompanies.find(item => item.AccountID === items[0].AccountID)) {\r\n this.setState({\r\n companyTypeaheadKey: Math.random().toString(),\r\n selectedCompanies: [...this.state.selectedCompanies, items[0]],\r\n selectedRegions: [],\r\n selectedLocations: []\r\n })\r\n }\r\n }\r\n\r\n handleRemoveCompany = (removeItem: AutoFilterCompany) => {\r\n this.setState({\r\n companyTypeaheadKey: Math.random().toString(),\r\n selectedCompanies: this.state.selectedCompanies.filter(item => item.AccountID !== removeItem.AccountID)\r\n })\r\n }\r\n\r\n handleAddRegion = (items: AutoFilterRegion[]) => {\r\n if (items[0] && !this.state.selectedRegions.find(item => item.Name === items[0].Name)) {\r\n this.setState({\r\n regionTypeaheadKey: Math.random().toString(),\r\n selectedRegions: [...this.state.selectedRegions, items[0]],\r\n selectedLocations: []\r\n })\r\n }\r\n }\r\n\r\n handleRemoveRegion = (removeItem: AutoFilterRegion) => {\r\n this.setState({\r\n regionTypeaheadKey: Math.random().toString(),\r\n selectedRegions: this.state.selectedRegions.filter(item => item.Name !== removeItem.Name)\r\n })\r\n }\r\n\r\n handleAddLocation = (items: AutoFilterLocation[]) => {\r\n if (items[0] && !this.state.selectedLocations.find(item => item.Name === items[0].Name)) {\r\n this.setState({\r\n locationTypeaheadKey: Math.random().toString(),\r\n selectedLocations: [...this.state.selectedLocations, items[0]]\r\n })\r\n }\r\n }\r\n\r\n handleRemoveLocation = (removeItem: AutoFilterLocation) => {\r\n this.setState({\r\n locationTypeaheadKey: Math.random().toString(),\r\n selectedLocations: this.state.selectedLocations.filter(item => item.Name !== removeItem.Name)\r\n })\r\n }\r\n\r\n handleAddRegulatoryMode = (items: RegulatoryMode[]) => {\r\n if (items[0]) {\r\n this.setState({ selectedRegulatoryModes: [...this.state.selectedRegulatoryModes, items[0]] })\r\n }\r\n }\r\n\r\n handleRemoveRegulatoryMode = (removeItem: RegulatoryMode) => {\r\n this.setState({ selectedRegulatoryModes: this.state.selectedRegulatoryModes.filter(item => item.RegulatoryModeID !== removeItem.RegulatoryModeID) })\r\n }\r\n\r\n handleAddCategory = (items: EmployeeCategory[]) => {\r\n if (items[0]) {\r\n this.setState({ selectedCategories: [...this.state.selectedCategories, items[0]] })\r\n }\r\n }\r\n\r\n handleRemoveCategory = (removeItem: EmployeeCategory) => {\r\n this.setState({ selectedCategories: this.state.selectedCategories.filter(item => item.EmployeeCategoryID !== removeItem.EmployeeCategoryID) })\r\n }\r\n\r\n render() {\r\n // TODO: Get name from Account data once Auth/Account will be implemented\r\n const accountName = (): string => {\r\n switch (this.props.accountType) {\r\n case \"company\": return \"Company\"\r\n case \"region\": return \"Region\"\r\n case \"location\": return \"Location\"\r\n }\r\n return \"\"\r\n }\r\n\r\n const { selectedCompanies, selectedRegions, selectedLocations, selectedRegulatoryModes, selectedCategories,\r\n canEditCompanies, canEditRegions, canEditLocations } = this.state\r\n\r\n const showRegions = selectedCompanies.length === 1 || !canEditCompanies\r\n const showLocations = showRegions && selectedRegions.length <= 1\r\n const hasChanges = !(this.isCompaniesEqual(this.props.selectedCompanies, selectedCompanies)\r\n && this.isRegionsEqual(this.props.selectedRegions, selectedRegions)\r\n && this.isLocationsEqual(this.props.selectedLocations, selectedLocations)\r\n && this.isRegulatoryModesEqual(this.props.selectedRegulatoryModes, selectedRegulatoryModes)\r\n && this.isCategoriesEqual(this.props.selectedCategories, selectedCategories))\r\n const canClearAll = hasChanges || selectedCompanies.length > 0\r\n || selectedRegions.length > 0 || selectedLocations.length > 0\r\n || selectedRegulatoryModes.length > 0 || selectedCategories.length > 0\r\n\r\n return \r\n \r\n ADVANCED FILTERS\r\n \r\n \r\n \r\n {(!canEditCompanies || !canEditRegions || !canEditLocations) && {accountName()}}\r\n {canEditCompanies && \r\n \r\n
\r\n \r\n
\r\n
\r\n {this.state.selectedCompanies.map(item =>
\r\n {item.Name}\r\n this.handleRemoveCompany(item)}>×\r\n
)}\r\n
\r\n \r\n
}\r\n \r\n {canEditRegions && <>\r\n \r\n \r\n
\r\n !this.state.selectedRegions.find(item => item.Name === option.Name)}\r\n isLoading={this.state.isRegionsLoading}\r\n onSearch={() => { }}\r\n onInputChange={input => this.searchRegion$.next(input)}\r\n onChange={this.handleAddRegion}\r\n options={this.state.regions}\r\n selected={[]}\r\n minLength={0}\r\n emptyLabel=\"No Result Found\"\r\n placeholder=\"Region\"\r\n inputProps={{ autoComplete: \"chrome-off\" }}>\r\n {!this.state.isRegionsLoading &&\r\n }\r\n \r\n
\r\n
\r\n {this.state.selectedRegions.map(item =>
\r\n {item.Name}\r\n this.handleRemoveRegion(item)}>×\r\n
)}\r\n
\r\n \r\n }\r\n {canEditLocations && <>\r\n \r\n \r\n
\r\n !this.state.selectedLocations.find(item => item.Name === option.Name)}\r\n isLoading={this.state.isLocationsLoading}\r\n onSearch={() => { }}\r\n onInputChange={input => this.searchLocation$.next(input)}\r\n onChange={this.handleAddLocation}\r\n options={this.state.locations}\r\n selected={[]}\r\n minLength={0}\r\n emptyLabel=\"No Result Found\"\r\n placeholder=\"Location\">\r\n {!this.state.isLocationsLoading &&\r\n }\r\n \r\n
\r\n
\r\n {this.state.selectedLocations.map(item =>
\r\n {item.Name}\r\n this.handleRemoveLocation(item)}>×\r\n
)}\r\n
\r\n \r\n }\r\n
\r\n \r\n \r\n
\r\n {\r\n return props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1;\r\n }}\r\n onChange={this.handleAddRegulatoryMode}\r\n disabled={this.state.isRegulatoryModesLoading}\r\n options={(this.state.availableRegulatoryModes || []).filter(item => !this.state.selectedRegulatoryModes.includes(item))}\r\n selected={[]}\r\n emptyLabel=\"No Result Found\"\r\n placeholder=\"Regulatory Mode\">\r\n \r\n \r\n
\r\n
\r\n {this.state.selectedRegulatoryModes.map(item =>
\r\n {item.Name}\r\n this.handleRemoveRegulatoryMode(item)}>×\r\n
)}\r\n
\r\n \r\n \r\n
\r\n {\r\n return props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1;\r\n }}\r\n onChange={this.handleAddCategory}\r\n disabled={this.state.isCategoriesLoading}\r\n options={(this.state.availableCategories || []).filter(item => !this.state.selectedCategories.includes(item))}\r\n selected={[]}\r\n emptyLabel=\"No Result Found\"\r\n placeholder=\"Category\">\r\n \r\n \r\n
\r\n
\r\n {this.state.selectedCategories.map(item =>
\r\n {item.Name}\r\n this.handleRemoveCategory(item)}>×\r\n
)}\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n {hasChanges && }\r\n {canClearAll && }\r\n {!hasChanges && }\r\n \r\n
\r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport EmploymentDetailsEdit from \"./RandomPersonnelModel/EmploymentDetailsEdit\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { GetUserId } from \"../../storage/UserId\"\r\nimport { UpdateMethodID } from \"../../config/Constants\"\r\n\r\nexport default function RandomPersonnelAdd(data: EmploymentDetailsEdit): Observable {\r\n const urlParams: string = new URLSearchParams({\r\n loginID: `${GetUserId()}`,\r\n updateMethodID: UpdateMethodID.toString()\r\n }).toString()\r\n const requestBody: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"/RandomTest/AddPerson?\" + urlParams, requestBody)\r\n}","import * as React from \"react\"\r\nimport { Button, Row, Col, Form } from \"react-bootstrap\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css'\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport { Subscription } from \"rxjs\"\r\nimport MaskedInput from \"react-maskedinput\"\r\nimport PhoneNumberMaskedInput from \"./FormattedInputs/PhoneNumberMaskedInput\"\r\nimport StateSelect from \"./FormattedInputs/StateSelect\"\r\nimport AutoFilterCompaniesGet from \"../api/Companies/AutoFilterCompaniesGet\"\r\nimport AutoFilterCompany from \"../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport AutoFilterLocation from \"../api/Location/LocationModel/AutoFilterLocation\"\r\nimport AutoFilterLocationsGet, { AutoFilterLocationWithRegionGetObservable } from \"../api/Location/AutoFilterLocationsGet\"\r\nimport AutoFilterRegion from \"../api/Regions/Model/AutoFilterRegion\"\r\nimport AutoFilterRegionsGet from \"../api/Regions/AutoFilterRegionsGet\"\r\nimport { StateObservable } from \"../api/OrderRequests/OrderRequestsConstraintGet\"\r\nimport EmploymentDetailsEdit from \"../api/Randoms/RandomPersonnelModel/EmploymentDetailsEdit\"\r\nimport State from \"../api/OrderRequests/OrderRequestsModel/State\"\r\nimport FormatSSN from \"../formatters/FormatSSN\"\r\nimport FormatZipCode from \"../formatters/FormatZipCode\"\r\nimport DatePicker from 'react-datepicker'\r\nimport 'react-datepicker/dist/react-datepicker.css'\r\nimport { EmailRegexp, PhoneRegexp } from \"../config/Constants\"\r\nimport { BirthdayInput } from \"./FormattedInputs/BirthdayInput\"\r\nimport ActionButton from \"./ActionButton\"\r\nimport { AppState } from \"../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport { GetSelectedAssignedClinic } from \"../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport CompanyInput from \"./FormattedInputs/CompanyInput\"\r\nimport RegulatoryMode from \"../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport Category from \"../api/LabService/LabServiceModel/EmployeeCategory\"\r\nimport LabServiceRegulatoryModesGetObservable from \"../api/LabService/LabServiceRegulatoryModesGet\"\r\nimport FormatError from \"../formatters/FormatError\"\r\nimport { toast } from \"react-toastify\"\r\nimport EmployeeCategoriesGetObservable from \"../api/LabService/EmployeeCategoriesGet\"\r\nimport { PoolRegulatoryMode } from \"../api/Randoms/RandomsModel/PoolCompanyInfo\"\r\n\r\ninterface EmploymentDetailsAuthProps {\r\n isLocation?: boolean\r\n}\r\n\r\ninterface EmploymentDetailsProps {\r\n data: EmploymentDetailsEdit\r\n isSaving: boolean\r\n onSave: (data: EmploymentDetailsEdit) => void\r\n onCancel: () => void\r\n}\r\n\r\ninterface EmploymentDetailsValidity {\r\n isCompanyValid: boolean\r\n isLastNameValid: boolean\r\n isFirstNameValid: boolean\r\n isEmployerIDValid: boolean\r\n isSSNValid: boolean\r\n isDriverIDValid: boolean\r\n isAlternateIDValid: boolean\r\n isWorkPhoneValid: boolean\r\n isHomePhoneValid: boolean\r\n isMobilePhoneValid: boolean\r\n isEmailValid: boolean\r\n isRegulatoryModeValid: boolean\r\n isCategoryValid: boolean\r\n}\r\n\r\ninterface EmploymentDetailsState extends EmploymentDetailsEdit, EmploymentDetailsValidity {\r\n companyTypeaheadKey: string\r\n regionTypeaheadKey: string\r\n locationTypeaheadKey: string\r\n isCompaniesLoading: boolean\r\n isRegionsLoading: boolean\r\n isStatesLoading: boolean\r\n isLocationsLoading: boolean\r\n regions: AutoFilterRegion[]\r\n nonRegionLocations: AutoFilterLocation[]\r\n locations: AutoFilterLocation[]\r\n companiesDetails: AutoFilterCompany[]\r\n states: State[]\r\n availableRegulatoryModes: PoolRegulatoryMode[]\r\n isRegulatoryModesLoading: boolean\r\n availableCategories: Category[]\r\n isCategoriesLoading: boolean\r\n}\r\n\r\ninterface Gender {\r\n Name: string\r\n Code: string\r\n}\r\n\r\nconst genders: Gender[] = [{ Name: \"Male\", Code: \"M\" }, { Name: \"Female\", Code: \"F\" }]\r\n\r\nexport class EmploymentDetails extends React.Component {\r\n defaultState: EmploymentDetailsState = {\r\n companyTypeaheadKey: \"company\",\r\n regionTypeaheadKey: \"region\",\r\n locationTypeaheadKey: \"location\",\r\n isCompaniesLoading: false,\r\n isRegionsLoading: false,\r\n isLocationsLoading: false,\r\n isStatesLoading: false,\r\n nonRegionLocations: [],\r\n regions: [],\r\n locations: [],\r\n companiesDetails: [],\r\n isCompanyValid: true,\r\n isLastNameValid: true,\r\n isFirstNameValid: true,\r\n isEmployerIDValid: true,\r\n isSSNValid: true,\r\n isDriverIDValid: true,\r\n isAlternateIDValid: true,\r\n isWorkPhoneValid: true,\r\n isHomePhoneValid: true,\r\n isMobilePhoneValid: true,\r\n isEmailValid: true,\r\n isRegulatoryModeValid: true,\r\n isCategoryValid: true,\r\n Employer: \"\",\r\n Driver: \"\",\r\n SSN: \"\",\r\n Alternate: \"\",\r\n Occupation: \"\",\r\n Inactive: false,\r\n FirstName: \"\",\r\n LastName: \"\",\r\n Address1: \"\",\r\n Address2: \"\",\r\n City: \"\",\r\n Zip: \"\",\r\n Province: \"\",\r\n WPhone: \"\",\r\n HPhone: \"\",\r\n CPhone: \"\",\r\n Email: \"\",\r\n Gender: \"\",\r\n states: [],\r\n state: undefined,\r\n isRegulatoryModesLoading: false,\r\n availableRegulatoryModes: [],\r\n selectedRegulatoryMode: undefined,\r\n isCategoriesLoading: false,\r\n availableCategories: [],\r\n selectedCategory: undefined\r\n }\r\n state: EmploymentDetailsState = { ...this.defaultState }\r\n\r\n subscriptions = new Subscription()\r\n\r\n regionTypeahead = React.createRef>()\r\n locationTypeahead = React.createRef>()\r\n genderTypeahead = React.createRef>()\r\n hiredate = React.createRef()\r\n birthdate = React.createRef()\r\n regulatoryModeTypeahead = React.createRef>()\r\n categoryTypeahead= React.createRef>()\r\n\r\n componentDidMount() {\r\n this.setState({ isCompaniesLoading: true, isStatesLoading: true })\r\n\r\n this.subscriptions.add(\r\n AutoFilterCompaniesGet(\"\").subscribe(\r\n data => {\r\n const selectedCompany = data.length > 1 ? undefined : data[0]\r\n this.setState({ companiesDetails: data, isCompaniesLoading: false, selectedCompany: selectedCompany })\r\n },\r\n () => this.setState({ isCompaniesLoading: false })\r\n )\r\n )\r\n\r\n this.subscriptions.add(\r\n StateObservable().subscribe(\r\n (results: State[]) => this.setState({ states: results, isStatesLoading: false }),\r\n () => { this.setState({ isStatesLoading: false }) }\r\n )\r\n )\r\n\r\n this.subscriptions.add(LabServiceRegulatoryModesGetObservable().subscribe(\r\n (data: RegulatoryMode[]) => {\r\n const convertedRegs: PoolRegulatoryMode[] = data.map(item => ({\r\n ID: item.RegulatoryModeID,\r\n Description: item.Name\r\n }));\r\n this.setState({\r\n availableRegulatoryModes: convertedRegs,\r\n isRegulatoryModesLoading: false\r\n })\r\n },\r\n (error) => {\r\n toast.error(FormatError(error)),\r\n this.setState({ isRegulatoryModesLoading: false })\r\n }\r\n ))\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n }\r\n\r\n loadAllRegions = (company?: AutoFilterCompany) => {\r\n this.setState({ isRegionsLoading: true })\r\n this.subscriptions.add(\r\n AutoFilterRegionsGet(company?.AccountID || 0, \"\").subscribe(\r\n data => this.setState({\r\n regions: data,\r\n isRegionsLoading: false,\r\n regionTypeaheadKey: Math.random().toString()\r\n }),\r\n () => this.setState({ isRegionsLoading: false })\r\n )\r\n )\r\n }\r\n\r\n loadAllLocations = (company?: AutoFilterCompany, region?: AutoFilterRegion) => {\r\n this.setState({ isLocationsLoading: true })\r\n this.subscriptions.add(\r\n AutoFilterLocationsGet(company?.AccountID || 0, region?.Code || \"\", \"\").subscribe(\r\n data => {\r\n if (this.props.isLocation) {\r\n this.setState({locations: data, nonRegionLocations: data, isLocationsLoading: false, selectedLocation: data[0]})\r\n }\r\n else {\r\n this.setState({locations: data, nonRegionLocations: data, isLocationsLoading: false, locationTypeaheadKey: Math.random().toString()\r\n })\r\n }\r\n },\r\n () => this.setState({ isLocationsLoading: false })\r\n )\r\n )\r\n }\r\n\r\n loadLocationsWithRegion = (company?: AutoFilterCompany, region?: AutoFilterRegion) => {\r\n this.setState({ isLocationsLoading: true })\r\n this.subscriptions.add(\r\n AutoFilterLocationWithRegionGetObservable(region?.AccountID || 0, \"\").subscribe(\r\n data => this.setState({\r\n locations: data,\r\n isLocationsLoading: false,\r\n locationTypeaheadKey: Math.random().toString()\r\n }),\r\n () => this.setState({ isLocationsLoading: false })\r\n )\r\n )\r\n }\r\n\r\n loadCategories = (regulatoryMode: PoolRegulatoryMode) => {\r\n this.setState({ isCategoriesLoading: true })\r\n this.subscriptions.add(\r\n EmployeeCategoriesGetObservable(regulatoryMode.ID).subscribe(\r\n categories => this.setState({ availableCategories: categories, isCategoriesLoading: false }),\r\n () => this.setState({ isCategoriesLoading: false })\r\n )\r\n )\r\n }\r\n\r\n ssnRequired = () => this.state.selectedCompany?.PrimaryIDType === \"SSN\"\r\n employerIDRequired = () => this.state.selectedCompany?.PrimaryIDType === \"EmployerID\"\r\n driverIDRequired = () => this.state.selectedCompany?.PrimaryIDType === \"DriverID\"\r\n alternateIDRequired = () => this.state.selectedCompany?.PrimaryIDType === \"AlternateID\"\r\n\r\n isEmailValid = (value: string) => {\r\n if (value.length === 0) {\r\n return true\r\n }\r\n return EmailRegexp.test(value)\r\n }\r\n\r\n isPhoneValid = (value: string) => value.length === 0 || PhoneRegexp.test(value) || value.toLowerCase() === \"n/p\"\r\n isNotEmpty = (value: string, required: boolean) => !required || value.trim().length > 0\r\n isSSNValid = (value: string, required: boolean) => (!required && value.length === 0) || value.replace(/\\D/g, \"\").length === 9\r\n\r\n isValid = (state: EmploymentDetailsValidity) => {\r\n return state.isCompanyValid && state.isLastNameValid && state.isFirstNameValid\r\n && state.isEmployerIDValid && state.isSSNValid && state.isDriverIDValid && state.isAlternateIDValid\r\n && state.isEmailValid && state.isWorkPhoneValid && state.isHomePhoneValid && state.isMobilePhoneValid\r\n }\r\n\r\n handleFormSubmit = (e: React.FormEvent) => {\r\n e.preventDefault()\r\n const changes: EmploymentDetailsValidity = {\r\n isCompanyValid: !!this.state.selectedCompany,\r\n isLastNameValid: this.state.LastName.trim().length > 0,\r\n isFirstNameValid: this.state.FirstName.trim().length > 0,\r\n isEmployerIDValid: this.isNotEmpty(this.state.Employer, this.employerIDRequired()),\r\n isSSNValid: this.isSSNValid(this.state.SSN, this.ssnRequired()),\r\n isDriverIDValid: this.isNotEmpty(this.state.Driver, this.driverIDRequired()),\r\n isAlternateIDValid: this.isNotEmpty(this.state.Alternate, this.alternateIDRequired()),\r\n isEmailValid: this.isEmailValid(this.state.Email),\r\n isWorkPhoneValid: this.isPhoneValid(this.state.WPhone),\r\n isHomePhoneValid: this.isPhoneValid(this.state.HPhone),\r\n isMobilePhoneValid: this.isPhoneValid(this.state.CPhone),\r\n isRegulatoryModeValid: !!this.state.selectedRegulatoryMode,\r\n isCategoryValid: !!this.state.selectedCategory\r\n }\r\n const isValid = this.isValid(changes)\r\n\r\n if (isValid) {\r\n this.props.onSave(this.state as EmploymentDetailsEdit)\r\n } else {\r\n this.setState(changes)\r\n }\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ ...this.defaultState })\r\n this.props.onCancel()\r\n }\r\n\r\n handleCompanyChange = (companies: AutoFilterCompany[]) => {\r\n if (companies.length > 0) {\r\n let selectedCompany = this.state.companiesDetails.find(i => i.AccountID === companies[0].AccountID )\r\n\r\n if (![\"SSN\", \"EmployerID\", \"DriverID\", \"AlternateID\"].includes(companies[0].Name))\r\n {\r\n this.subscriptions.add(\r\n AutoFilterCompaniesGet(companies[0].Name).subscribe(\r\n data => {\r\n selectedCompany = data.length > 1 ? selectedCompany : data[0]\r\n this.setState({isCompaniesLoading: false, selectedCompany: selectedCompany})\r\n this.loadAllRegions(selectedCompany)\r\n this.loadAllLocations(selectedCompany, undefined)\r\n },\r\n () => this.setState({ isCompaniesLoading: false })\r\n )\r\n )\r\n }\r\n\r\n this.setState({\r\n selectedCompany: selectedCompany,\r\n isCompanyValid: true,\r\n isSSNValid: true,\r\n isEmployerIDValid: true,\r\n isDriverIDValid: true,\r\n isAlternateIDValid: true,\r\n selectedRegion: undefined,\r\n selectedLocation: undefined,\r\n companyTypeaheadKey: Math.random().toString()\r\n })\r\n this.loadAllRegions(selectedCompany)\r\n this.loadAllLocations(selectedCompany, undefined)\r\n } else {\r\n this.setState({\r\n isRegionsLoading: false,\r\n regions: [],\r\n nonRegionLocations: [],\r\n locations: [],\r\n isSSNValid: true,\r\n isEmployerIDValid: true,\r\n isDriverIDValid: true,\r\n isAlternateIDValid: true,\r\n selectedCompany: undefined,\r\n selectedRegion: undefined,\r\n selectedLocation: undefined,\r\n isCompanyValid: false\r\n })\r\n }\r\n }\r\n\r\n handleRegionChange = (regions: AutoFilterRegion[]) => {\r\n if (regions.length > 0) {\r\n this.setState({\r\n selectedRegion: regions[0],\r\n selectedLocation: undefined,\r\n regionTypeaheadKey: Math.random().toString()\r\n })\r\n\r\n this.loadLocationsWithRegion(this.state.selectedCompany, regions[0])\r\n } else {\r\n this.setState({\r\n isLocationsLoading: false,\r\n locations: this.state.nonRegionLocations,\r\n selectedRegion: undefined,\r\n selectedLocation: undefined\r\n })\r\n }\r\n }\r\n\r\n handleRegulatoryModeChange = (items: PoolRegulatoryMode[]) => {\r\n if (items.length > 0) {\r\n this.setState({ selectedRegulatoryMode: items[0], selectedCategory: undefined, isRegulatoryModeValid: true })\r\n this.loadCategories(items[0])\r\n } else {\r\n this.setState({selectedRegulatoryMode: undefined, selectedCategory: undefined })\r\n }\r\n }\r\n\r\n handleCategoryChange = (items: Category[]) => this.setState({ selectedCategory: items[0], isCategoryValid: (items.length > 0 ? true : false) })\r\n\r\n handleLocationChange = (locations: AutoFilterLocation[]) => this.setState({ selectedLocation: locations[0], locationTypeaheadKey: Math.random().toString() })\r\n handlePhoneChange = (value: string, stateKey: string, stateValidKey: string) => this.setState({ ...{}, [stateKey]: value, [stateValidKey]: this.isPhoneValid(value) })\r\n handleStateChange = (state: State) => this.setState({ state: state })\r\n\r\n render() {\r\n const employerIDRequired = this.employerIDRequired()\r\n const driverIDRequired = this.driverIDRequired()\r\n const ssnRequired = this.ssnRequired()\r\n const alternateIDRequired = this.alternateIDRequired()\r\n\r\n return
\r\n
EMPLOYMENT INFO
\r\n \r\n EMPLOYER ID\r\n \r\n { this.setState({ Employer: e.target.value, isEmployerIDValid: this.isNotEmpty(e.target.value, employerIDRequired) }) }} />\r\n \r\n \r\n \r\n DRIVER ID\r\n \r\n { this.setState({ Driver: e.target.value, isDriverIDValid: this.isNotEmpty(e.target.value, driverIDRequired) }) }} />\r\n \r\n \r\n \r\n SSN\r\n \r\n {\r\n const ssn = FormatSSN(e.target.value)\r\n this.setState({ SSN: ssn, isSSNValid: this.isSSNValid(ssn, ssnRequired) })\r\n }}\r\n isInvalid={!this.state.isSSNValid} />\r\n \r\n \r\n \r\n ALTERNATE ID\r\n \r\n { this.setState({ Alternate: e.target.value, isAlternateIDValid: this.isNotEmpty(e.target.value, alternateIDRequired) }) }} />\r\n \r\n \r\n \r\n COMPANY\r\n { this.state.companiesDetails.length <= 1 && {this.state.companiesDetails[0]?.Name} }\r\n { this.state.companiesDetails.length > 1 &&\r\n \r\n \r\n }\r\n \r\n \r\n REGION\r\n {!this.state.isRegionsLoading && this.state.regions.length === 0 && None}\r\n {(this.state.isRegionsLoading || this.state.regions.length > 0) &&\r\n \r\n
\r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n isLoading={this.state.isRegionsLoading}\r\n onChange={this.handleRegionChange}\r\n options={this.state.regions}\r\n selected={this.state.selectedRegion ? [this.state.selectedRegion] : []}\r\n emptyLabel=\"No Regions Found\"\r\n placeholder=\"Select\"\r\n inputProps={{ autoComplete: \"chrome-off\" }}>\r\n {!this.state.isRegionsLoading &&\r\n }\r\n \r\n
\r\n }\r\n
\r\n \r\n LOCATION\r\n {!this.state.isLocationsLoading && this.state.locations.length === 0 && None}\r\n {!this.state.isLocationsLoading && this.props.isLocation &&\r\n { }} />}\r\n {(this.state.isLocationsLoading || this.state.locations.length > 0) && !this.props.isLocation &&\r\n \r\n
\r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n isLoading={this.state.isLocationsLoading}\r\n onChange={this.handleLocationChange}\r\n options={this.state.locations}\r\n selected={this.state.selectedLocation ? [this.state.selectedLocation] : []}\r\n emptyLabel=\"No Locations Found\"\r\n placeholder=\"Select\">\r\n {!this.state.isLocationsLoading &&\r\n }\r\n \r\n
\r\n }\r\n
\r\n \r\n OCCUPATION\r\n \r\n { this.setState({ Occupation: e.target.value }) }} />\r\n \r\n \r\n \r\n HIRE DATE\r\n \r\n { if (this.hiredate && this.hiredate.current && e.key === 'Tab') { this.hiredate.current.setOpen(false) } }}\r\n onChange={date => this.setState({ HireDate: date as Date || undefined })}\r\n customInput={} />\r\n \r\n \r\n \r\n INACTIVE\r\n \r\n ) => this.setState({ Inactive: e.target.checked })} label=\"\" id=\"personnel_inactive\" className=\"mt-2\" />\r\n \r\n \r\n \r\n REGULATORY MODE\r\n {!this.state.isRegulatoryModesLoading && this.state.availableRegulatoryModes.length === 0 && LOADING...}\r\n {(this.state.isRegulatoryModesLoading || this.state.availableRegulatoryModes.length > 0) &&\r\n \r\n props.selected.length > 0 || option?.Description.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n onChange={this.handleRegulatoryModeChange}\r\n disabled={this.state.isRegulatoryModesLoading}\r\n isInvalid={!this.state.isRegulatoryModeValid}\r\n options={this.state.availableRegulatoryModes}\r\n selected={this.state.selectedRegulatoryMode ? [this.state.selectedRegulatoryMode] : []}\r\n emptyLabel=\"No Regulatory Modes Found\"\r\n placeholder=\"Select\">\r\n \r\n \r\n }\r\n \r\n \r\n CATEGORY\r\n {!this.state.isCategoriesLoading && this.state.availableCategories.length === 0 && None}\r\n {(this.state.isCategoriesLoading || this.state.availableCategories.length > 0) &&\r\n \r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n onChange={this.handleCategoryChange}\r\n disabled={this.state.isCategoriesLoading}\r\n isInvalid={!this.state.isCategoryValid}\r\n options={this.state.availableCategories}\r\n selected={this.state.selectedCategory ? [this.state.selectedCategory] : []}\r\n emptyLabel=\"No Categories Found\"\r\n placeholder=\"Select\">\r\n \r\n \r\n }\r\n \r\n
GENERAL
\r\n \r\n FIRST NAME\r\n \r\n { this.setState({ FirstName: e.target.value, isFirstNameValid: e.target.value.trim().length > 0 }) }} />\r\n \r\n \r\n \r\n LAST NAME\r\n \r\n { this.setState({ LastName: e.target.value, isLastNameValid: e.target.value.trim().length > 0 }) }} />\r\n \r\n \r\n \r\n GENDER\r\n \r\n
\r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n onChange={selected => this.setState({ Gender: selected[0]?.Code || \"\" })}\r\n options={genders}\r\n selected={this.state.Gender !== \"\" ? [genders.find((el) => el?.Code == this.state.Gender) || genders[0]] : []}\r\n placeholder=\"Select\">\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n DATE OF BIRTH\r\n \r\n { if (this.birthdate && this.birthdate.current && e.key === 'Tab') { this.birthdate.current.setOpen(false) } }}\r\n onChange={date => this.setState({ DOB: date as Date || undefined })}\r\n customInput={} />\r\n \r\n \r\n
CONTACT INFO
\r\n \r\n ADDRESS LINE 1\r\n \r\n { this.setState({ Address1: e.target.value }) }} />\r\n \r\n \r\n \r\n ADDRESS LINE 2\r\n \r\n { this.setState({ Address2: e.target.value }) }} />\r\n \r\n \r\n \r\n CITY\r\n \r\n { this.setState({ City: e.target.value }) }} />\r\n \r\n \r\n \r\n STATE\r\n \r\n this.handleStateChange(state)} />\r\n \r\n \r\n \r\n ZIP\r\n \r\n { this.setState({ Zip: FormatZipCode(e.target.value) }) }} />\r\n \r\n \r\n \r\n PROVINCE\r\n \r\n { this.setState({ Province: e.target.value }) }} />\r\n \r\n \r\n \r\n WORK PHONE\r\n \r\n this.handlePhoneChange(value, \"WPhone\", \"isWorkPhoneValid\")} isInvalid={!this.state.isWorkPhoneValid} />\r\n \r\n \r\n \r\n HOME PHONE\r\n \r\n this.handlePhoneChange(value, \"HPhone\", \"isHomePhoneValid\")} isInvalid={!this.state.isHomePhoneValid} />\r\n \r\n \r\n \r\n MOBILE PHONE\r\n \r\n this.handlePhoneChange(value, \"CPhone\", \"isMobilePhoneValid\")} isInvalid={!this.state.isMobilePhoneValid} />\r\n \r\n \r\n \r\n EMAIL\r\n \r\n { this.setState({ Email: e.target.value, isEmailValid: this.isEmailValid(e.target.value) }) }} />\r\n \r\n \r\n \r\n \r\n SAVE\r\n \r\n
\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): EmploymentDetailsAuthProps {\r\n return {\r\n isLocation: (GetSelectedAssignedClinic(state)?.LocationID || 0) > 0\r\n }\r\n}\r\nconst ConnectedEmploymentDetails = connect(mapStateToProps, null)(EmploymentDetails)\r\nexport default ConnectedEmploymentDetails","import * as React from \"react\"\r\nimport { Modal } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { RandomPersonnelAddPersonObservable, RandomPersonnelGridResponse } from \"../../api/Randoms/RandomPersonnelListGet\"\r\nimport RandomPersonnelAdd from \"../../api/Randoms/RandomPersonnelAdd\"\r\nimport RandomPersonnelGridOptions from \"../../api/Randoms/RandomPersonnelModel/RandomPersonnelGridOptions\"\r\nimport EmploymentDetails from \"../EmploymentDetails\"\r\nimport EmploymentDetailsEdit from \"../../api/Randoms/RandomPersonnelModel/EmploymentDetailsEdit\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\n\r\ninterface AddIndividualModalProps {\r\n show: boolean\r\n onAdd: (donorID?: number) => void\r\n onCancel: () => void\r\n}\r\n\r\nexport default class AddIndividualModal extends React.Component {\r\n state = { saving: false }\r\n emptyData: EmploymentDetailsEdit = {\r\n Employer: \"\",\r\n Driver: \"\",\r\n SSN: \"\",\r\n Alternate: \"\",\r\n Occupation: \"\",\r\n Inactive: false,\r\n FirstName: \"\",\r\n LastName: \"\",\r\n Address1: \"\",\r\n Address2: \"\",\r\n City: \"\",\r\n Zip: \"\",\r\n Province: \"\",\r\n WPhone: \"\",\r\n HPhone: \"\",\r\n CPhone: \"\",\r\n Email: \"\",\r\n Gender: \"\"\r\n }\r\n\r\n handleSave = (data: EmploymentDetailsEdit) => {\r\n data.SSN = data.SSN.replace(/\\D/g, '')\r\n\r\n const search = (data: EmploymentDetailsEdit): { field: string, text: string } => {\r\n switch (data.selectedCompany?.PrimaryIDType || \"\") {\r\n case \"EmployerID\":\r\n return { field: \"Employer ID\", text: data.Employer }\r\n case \"SSN\":\r\n return { field: \"SSN\", text: data.SSN }\r\n case \"DriverID\":\r\n return { field: \"Driver ID\", text: data.Driver }\r\n case \"AlternateID\":\r\n return { field: \"Alternate ID\", text: data.Alternate }\r\n }\r\n return { field: \"\", text: \"\" }\r\n }\r\n const params: RandomPersonnelGridOptions = {\r\n search: search(data),\r\n sort: { column: \"\", order: \"\" },\r\n filters: [],\r\n columnFilters: [],\r\n pageNumber: 1,\r\n pageSize: 20,\r\n isConsortium: false,\r\n forceReload: false\r\n }\r\n this.setState({ saving: true })\r\n RandomPersonnelAddPersonObservable(params).subscribe(\r\n ((result: RandomPersonnelGridResponse) => {\r\n if (result.Records.length > 0) {\r\n this.setState({ saving: false })\r\n toast.error(\"Person already present. Please add another.\")\r\n } else {\r\n this.addPersonnel(data)\r\n }\r\n }),\r\n (error: string) => {\r\n this.setState({ saving: false })\r\n toast.error(error)\r\n }\r\n )\r\n }\r\n\r\n addPersonnel = (data: EmploymentDetailsEdit) => {\r\n const phoneString = (phone: string): string => {\r\n if (phone.toLowerCase() === \"np\" || phone.toLowerCase() === \"n/p\") {\r\n return \"N/P\"\r\n } else {\r\n phone = phone.replace(/\\D/g, \"\")\r\n return phone.length === 10 ? phone : \"N/P\"\r\n }\r\n }\r\n\r\n const primaryIDKeys = (data: EmploymentDetailsEdit): { PrimaryIDType: string, PrimaryIDValue: string } => {\r\n switch (data.selectedCompany?.PrimaryIDType || \"\") {\r\n case \"EmployerID\":\r\n return { PrimaryIDType: \"EmployerID\", PrimaryIDValue: data.Employer }\r\n case \"SSN\":\r\n return { PrimaryIDType: \"SSN\", PrimaryIDValue: data.SSN }\r\n case \"DriverID\":\r\n return { PrimaryIDType: \"DriverID\", PrimaryIDValue: data.Driver }\r\n case \"AlternateID\":\r\n return { PrimaryIDType: \"AlternateID\", PrimaryIDValue: data.Alternate }\r\n }\r\n return { PrimaryIDType: \"\", PrimaryIDValue: \"\" }\r\n }\r\n\r\n const params: EmploymentDetailsEdit = {\r\n ...primaryIDKeys(data),\r\n AccountID: data.selectedCompany?.AccountID || 0, // TODO VALUESTORAGE.ACCOUNT_ID\r\n Employer: data.Employer,\r\n Driver: data.Driver,\r\n SSN: data.SSN.replace(/\\D/g, ''),\r\n Alternate: data.Alternate,\r\n Company: data.selectedCompany?.Name || \"\",\r\n CompanyID: data.selectedCompany?.AccountID || 0,\r\n Region: data.selectedRegion?.Name || \"\",\r\n RegionID: data.selectedRegion?.AccountID || 0,\r\n Location: data.selectedLocation?.Name || \"\",\r\n LocationID: data.selectedLocation?.AccountID || 0,\r\n Supervisor1ID: data.selectedSupervisor1?.ContactID || 0,\r\n Supervisor1: data.selectedSupervisor1?.FullName || \"\",\r\n Supervisor2ID: data.selectedSupervisor2?.ContactID || 0,\r\n Supervisor2: data.selectedSupervisor2?.FullName || \"\",\r\n Occupation: data.Occupation,\r\n HireDate: FormatDate(data.HireDate),\r\n Inactive: data.Inactive,\r\n FirstName: data.FirstName.replace(/^\\s+|\\s+$/gm, \"\").replace(/\\s+/g, \" \"),\r\n LastName: data.LastName.replace(/^\\s+|\\s+$/gm, \"\").replace(/\\s+/g, \" \"),\r\n Gender: data.Gender,\r\n DOB: FormatDate(data.DOB),\r\n Address1: data.Address1,\r\n Address2: data.Address2,\r\n City: data.City,\r\n StateID: data.state?.StateProvinceTerritoryID || 0,\r\n Zip: data.Zip,\r\n Province: data.Province,\r\n WPhone: phoneString(data.WPhone),\r\n HPhone: phoneString(data.HPhone),\r\n CPhone: phoneString(data.CPhone),\r\n Email: data.Email,\r\n PreEmploymentTest: false,\r\n CompanyPrimaryID: null,\r\n RegModeID: data.selectedRegulatoryMode?.ID || 0,\r\n EmpCatID: data.selectedCategory?.EmployeeCategoryID\r\n }\r\n RandomPersonnelAdd(params).subscribe(\r\n ((result) => {\r\n this.setState({ saving: false })\r\n if (Number(result) > 0) {\r\n toast.success(\"Added member successfully.\")\r\n this.props.onAdd(Number(result))\r\n } else {\r\n toast.error(result)\r\n }\r\n }),\r\n (error: string) => {\r\n this.setState({ saving: false })\r\n toast.error(error)\r\n }\r\n )\r\n }\r\n\r\n render() {\r\n return \r\n \r\n ADD INDIVIDUAL\r\n \r\n \r\n \r\n \r\n \r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../../ObservableFromFetch\"\r\nimport ImportJobActionResult from \"./Model/ImportJobActionResult\"\r\n\r\nexport default function ImportJobCreateAndPerformObservable(\r\n base64string: string, hasHeaderRow: boolean, fileName?: string,\r\n companyID?: number, poolID?: number,\r\n isGovtPersonnel?: boolean, isCompanyCodeRequired?: boolean): Observable {\r\n const params: string = JSON.stringify({\r\n AccountType: 2,\r\n CSVFileBase64String: base64string,\r\n FileName: fileName,\r\n HasHeaderRow: hasHeaderRow,\r\n UseTemplate: false,\r\n ImportJobID: 0,\r\n CompanyID: companyID || 0,\r\n GovtPersonnel: isGovtPersonnel,\r\n WorkforcePersonnel: !isGovtPersonnel,\r\n PoolID: poolID || 0,\r\n CompanyCodeRequired: isCompanyCodeRequired,\r\n MultiplePools: false\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceImport/CreateAndPerformImportJob\", params)\r\n}\r\n","import { useState } from \"react\"\r\n\r\nimport { Button, Modal } from \"react-bootstrap\"\r\n\r\nimport ImportErrorDetails from \"./ImportErrorDetails\"\r\n\r\ninterface ImportErrorDetailsProps {\r\n show: boolean\r\n importJobID: number\r\n pageSize?: number\r\n onClose?: () => void\r\n}\r\n\r\nfunction ImportErrorDetailsModal(props: ImportErrorDetailsProps) {\r\n const { show, importJobID, pageSize, onClose } = props\r\n const [showModal, setShowModal] = useState(show)\r\n\r\n const handleClose = () => {\r\n onClose?.()\r\n setShowModal(false)\r\n }\r\n\r\n return (\r\n handleClose()}\r\n dialogClassName=\"modal-90w\"\r\n size=\"xl\"\r\n >\r\n \r\n Import errors:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nImportErrorDetailsModal.defaultProps = {\r\n pageSize: 10,\r\n onClose: () => {},\r\n}\r\n\r\nexport default ImportErrorDetailsModal\r\n","import * as React from \"react\"\r\nimport { Container, Modal, Row, Col, Button, Form, Spinner, Table } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { ConsortiumsMembership, RetrieveConsortiumsMembership, UpdateConsortiumsMembership } from \"../../api/Randoms/RandomPersonnelListGet\"\r\nimport Checkbox from \"../Checkbox\"\r\n\r\ninterface ConsortiumMembershipModalProps {\r\n PersonID: number\r\n onClose: () => void\r\n}\r\n\r\ninterface ConsortiumMembershipModalState {\r\n saving: boolean\r\n loading: boolean\r\n data: ConsortiumsMembership[]\r\n}\r\n\r\nexport default class ConsortiumMembershipModal extends React.PureComponent {\r\n state: ConsortiumMembershipModalState = { saving: false, loading: false, data: [] }\r\n loadSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.setState({ loading: true })\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.loadSubscription = RetrieveConsortiumsMembership(this.props.PersonID).subscribe(\r\n result => this.setState({data: result, loading: false}),\r\n error => this.handleAPIError(error, { loading: false })\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n save = () => {\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = UpdateConsortiumsMembership(this.state.data).subscribe(\r\n result => {\r\n toast.success(result)\r\n this.setState({saving: false})\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n DataRow = (data: ConsortiumsMembership, index: number) => {\r\n return \r\n {data.Name}\r\n this.toggleActive(index)} className=\"mr-auto\" />\r\n \r\n }\r\n\r\n toggleActive = (index: number) => {\r\n const newData: ConsortiumsMembership[] = [...this.state.data]\r\n newData[index].Active = !newData[index].Active\r\n this.setState({ data: newData })\r\n }\r\n\r\n render() {\r\n const { saving, loading, data } = this.state\r\n\r\n return this.props.onClose()} size=\"lg\">\r\n \r\n Consortiums Membership\r\n \r\n \r\n \r\n \r\n \r\n \r\n {loading ? : data.map((cons, index) => this.DataRow(cons, index))}\r\n \r\n
Consortium NameActive
\r\n
\r\n
\r\n \r\n \r\n this.save()} spin={saving} disableOnSpin className=\"fixed-w5\">UPDATE\r\n \r\n
\r\n }\r\n}","import React from \"react\"\r\nimport { Container, Row, Col, Table, Spinner, Button, } from \"react-bootstrap\"\r\nimport { BehaviorSubject, Subscription, concat, of } from \"rxjs\"\r\nimport { catchError, map, switchMap } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { FaPrint } from \"react-icons/fa\"\r\nimport FileSaver from \"file-saver\"\r\nimport RandomPersonnelGridRecord from \"../../api/Randoms/RandomPersonnelModel/RandomPersonnelGridRecord\"\r\nimport RandomPersonnelGridOptions from \"../../api/Randoms/RandomPersonnelModel/RandomPersonnelGridOptions\"\r\nimport RandomPersonnelIdentifier from \"../../api/Randoms/RandomPersonnelModel/RandomPersonnelIdentifier\"\r\nimport { RandomPersonnelGridObservable, RandomPersonnelExportCsv, RandomPersonnelPrint, RandomPersonnelGridResponse } from \"../../api/Randoms/RandomPersonnelListGet\"\r\nimport RandomPersonnelImport from \"../../api/Randoms/RandomPersonnelImport\"\r\nimport RandomPersonnelRemove from \"../../api/Randoms/RandomPersonnelRemove\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport AutoFilterLocation from \"../../api/Location/LocationModel/AutoFilterLocation\"\r\nimport AutoFilterRegion from \"../../api/Regions/Model/AutoFilterRegion\"\r\nimport RegulatoryMode from \"../../api/LabService/LabServiceModel/RegulatoryMode\" // LabServiceRegulatoryModesGet\r\nimport EmployeeCategory from \"../../api/LabService/LabServiceModel/EmployeeCategory\"\r\nimport RandomPersonnelSearchFieldsObservable from \"../../api/Randoms/RandomPersonnelSearchFieldsGet\"\r\nimport RandomPersonnelCheckbox from \"./RandomPersonnelCheckbox\"\r\nimport ColumnsCustomizeModal from \"../ColumnsCustomizeModal/ColumnsCustomizeModal\"\r\nimport EmployeeDetailsModal from \"../OrderResults/EmployeeDetailsModal\"\r\nimport TablePagination from \"../TablePagination\"\r\nimport ColumnHeaderFilter from \"../ColumnHeaderFilter\"\r\nimport SearchBar from \"../SearchBar\"\r\nimport SearchField from \"../../api/SearchField\"\r\nimport AdvancedFiltersModal from \"./AdvancedFiltersModal\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\nimport AddIndividualModal from \"./AddIndividualModal\"\r\nimport FormatSSN from \"../../formatters/FormatSSN\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport FormatTimestampFileName from \"../../formatters/FormatTimestampFileName\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport { CustomizableFilterColumn } from \"../ColumnsCustomizeModal/CustomizableColumn\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { connect } from \"react-redux\"\r\nimport { AppState, AssignedClinic } from \"../../AppState\"\r\nimport RandomNav from \"./RandomNav\"\r\nimport { ColumnFilters } from \"../../api/Randoms/RandomPersonnelModel/ColumnFilters\"\r\nimport { StorageKey } from \"../../config/Constants\"\r\nimport { loadCustomized, saveCustomized } from \"../ColumnsCustomizeModal/ColumnsCustomizeModal\"\r\nimport { BuildUserAccess } from \"../../authentication/BuildUserAccess\"\r\nimport { GetSelectedAssignedClinic } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport ImportErrorDetails from \"./ImportErrorDetails\"\r\nimport { ImportJobValidationResult } from \"../../api/Randoms/Import/ImportJobValidationResultGet\"\r\nimport ImportJobCreateAndPerform from \"../../api/Randoms/Import/ImportJobCreateAndPerform\"\r\nimport ImportErrorDetailsModal from \"./ImportErrorDetailsModal\"\r\nimport ConsortiumMembershipModal from \"./ConsortiumMembershipModal\"\r\nimport { isPortalAdmin } from \"../../authentication/isAdminRole\"\r\nimport { csvHeader } from \"../../api/Randoms/ImportPersonnelTemplate\"\r\n\r\ntype Column = CustomizableFilterColumn\r\n\r\ninterface RandomPersonnelGridProps {\r\n canEditPersonnel?: boolean\r\n canManagePools?: boolean\r\n canManagePersonnel?: boolean\r\n canManageConsortiumPools?: boolean\r\n isLocation?: boolean\r\n isPortalAdmin?: boolean\r\n isConsortium?: boolean\r\n currentCompany?: AssignedClinic\r\n}\r\n\r\ninterface RandomPersonnelGridStateSelectedPersons {\r\n selectedPrintRowIDs: RandomPersonnelIdentifier[]\r\n selectedRemoveRowIDs: RandomPersonnelIdentifier[]\r\n selectedChangeStatusRowIDs: RandomPersonnelIdentifier[]\r\n}\r\n\r\ninterface RandomPersonnelGridState extends RandomPersonnelGridStateSelectedPersons {\r\n fileInputKey: string\r\n loading: boolean\r\n loadingCsv: boolean\r\n importing: boolean\r\n removing: boolean\r\n data?: RandomPersonnelGridResponse\r\n columns: Column[]\r\n customizeModal: boolean\r\n advancedFiltersModal: boolean\r\n removeConfirmModal: boolean\r\n forceRemoveConfirmModal: boolean\r\n removePersonMessage: string\r\n addIndividualModal: boolean\r\n showConsortiumsModal: boolean\r\n searchFields?: SearchField[]\r\n selectedCompanies: AutoFilterCompany[]\r\n selectedRegions: AutoFilterRegion[]\r\n selectedLocations: AutoFilterLocation[]\r\n selectedRegulatoryModes: RegulatoryMode[]\r\n selectedCategories: EmployeeCategory[]\r\n employeeDetails: boolean\r\n details?: RandomPersonnelGridRecord\r\n importJobID: number\r\n jobResult: boolean\r\n}\r\n\r\nconst PageSize = 20\r\nconst CSV_FILE_NOT_CORRECT_FORMAT_CODE = \"-112\"\r\nconst SEARCH_FIELD_NAME_SSN = \"SSN\"\r\n\r\nclass RandomPersonnelGrid extends React.PureComponent {\r\n defaultColumns: Column[] = [\r\n { name: \"ID\", filter: \"IDNumber\", label: \"ID NUMBER\", visible: true, customize: false },\r\n { name: \"Name\", filter: \"Name\", label: \"NAME\", visible: true, customize: true },\r\n { name: \"Company\", filter: \"Company\", label: \"COMPANY\", visible: true, customize: true },\r\n { name: \"Region\", filter: \"Region\", label: \"REGION\", visible: this.props.isConsortium ? false : true, customize: this.props.isConsortium ? false : true },\r\n { name: \"Location\", filter: \"Location\", label: \"LOCATION\", visible: true, customize: true },\r\n { name: \"Reg\", filter: \"RegulatoryMode\", label: \"REGULATORY MODE\", visible: true, customize: true },\r\n { name: \"Category\", filter: \"Category\", label: \"CATEGORY\", visible: true, customize: true },\r\n { name: \"Inactive\", filter: \"Status\", label: this.props.isConsortium ? \"EMPLOYMENT STATUS\" : \"STATUS\", visible: true, customize: true },\r\n { name: \"ReasonForInactivation\", label: \"REASON FOR INACTIVATION\", visible: true, customize: true },\r\n { name: \"Occupation\", filter: \"Occupation\", label: \"OCCUPATION\", visible: true, customize: true },\r\n { name: \"Supervisor1\", filter: \"Supervisor1\", label: \"SUPERVISOR 1\", visible: false, customize: true },\r\n { name: \"Supervisor2\", filter: \"Supervisor2\", label: \"SUPERVISOR 2\", visible: false, customize: true },\r\n { name: \"HireDate\", filter: \"HireDate\", label: \"HIRE DATE\", visible: false, customize: true },\r\n { name: \"TerminationDate\", filter: \"TerminationDate\", label: \"TERMINATION DATE\", visible: false, customize: true },\r\n { name: \"PreEmploymentTestOnFile\", filter: \"PreEmploymentTestOnFile\", label: \"PRE-EMPLOYMENT TEST ON FILE\", visible: false, customize: true },\r\n { name: \"Gender\", filter: \"Gender\", label: \"GENDER\", visible: false, customize: true },\r\n { name: \"DateOfBirth\", filter: \"DateOfBirth\", label: \"DATE OF BIRTH\", visible: false, customize: true },\r\n { name: \"AddressLine1\", filter: \"AddressLine1\", label: \"STREET ADDRESS\", visible: false, customize: true },\r\n { name: \"City\", filter: \"City\", label: \"CITY\", visible: false, customize: true },\r\n { name: \"State\", filter: \"State\", label: \"STATE\", visible: false, customize: true },\r\n { name: \"Zip\", filter: \"Zip\", label: \"ZIP\", visible: false, customize: true },\r\n { name: \"WorkPhone\", filter: \"WorkPhone\", label: \"WORK PHONE\", visible: false, customize: true },\r\n { name: \"CellPhone\", filter: \"CellPhone\", label: \"MOBILE PHONE\", visible: false, customize: true },\r\n { name: \"Email\", filter: \"Email\", label: \"EMAIL\", visible: false, customize: true },\r\n { name: \"User1\", filter: \"User1\", label: \"USER 1\", visible: false, customize: true },\r\n { name: \"User2\", filter: \"User2\", label: \"USER 2\", visible: false, customize: true },\r\n { name: \"User3\", filter: \"User3\", label: \"USER 3\", visible: false, customize: true },\r\n { name: \"User4\", filter: \"User4\", label: \"USER 4\", visible: false, customize: true },\r\n { name: \"User5\", filter: \"User5\", label: \"USER 5\", visible: false, customize: true },\r\n { name: \"User6\", filter: \"User6\", label: \"USER 6\", visible: false, customize: true },\r\n { name: \"User7\", filter: \"User7\", label: \"USER 7\", visible: false, customize: true },\r\n { name: \"User8\", filter: \"User8\", label: \"USER 8\", visible: false, customize: true },\r\n { name: \"User9\", filter: \"User9\", label: \"USER 9\", visible: false, customize: true },\r\n { name: \"User10\", filter: \"User10\", label: \"USER 10\", visible: false, customize: true },\r\n ]\r\n\r\n state: RandomPersonnelGridState = {\r\n fileInputKey: \"file_input_key\",\r\n loading: false,\r\n loadingCsv: false,\r\n importing: false,\r\n removing: false,\r\n columns: loadCustomized(StorageKey.RandomPersonnelGridColumns, this.defaultColumns) as Column[],\r\n customizeModal: false,\r\n advancedFiltersModal: false,\r\n removeConfirmModal: false,\r\n forceRemoveConfirmModal: false,\r\n removePersonMessage: \"\",\r\n addIndividualModal: false,\r\n showConsortiumsModal: false,\r\n selectedPrintRowIDs: [],\r\n selectedRemoveRowIDs: [],\r\n selectedChangeStatusRowIDs: [],\r\n selectedCompanies: [],\r\n selectedRegions: [],\r\n selectedLocations: [],\r\n selectedRegulatoryModes: [],\r\n selectedCategories: [],\r\n employeeDetails: false,\r\n importJobID: -1,\r\n jobResult: false\r\n }\r\n page$ = new BehaviorSubject({\r\n search: { field: \"\", text: \"\" },\r\n sort: { column: \"\", order: \"\" },\r\n filters: [],\r\n columnFilters: [],\r\n pageNumber: 1,\r\n pageSize: PageSize,\r\n isConsortium: !!this.props.isConsortium,\r\n forceReload: false,\r\n })\r\n pageSubscription?: Subscription\r\n searchFieldsSubscription?: Subscription\r\n removeSubscription?: Subscription\r\n importSubscription?: Subscription\r\n\r\n file = React.createRef()\r\n\r\n componentDidMount() {\r\n this.pageSubscription = this.page$.pipe(\r\n switchMap(params => concat(\r\n of({ loading: true }),\r\n RandomPersonnelGridObservable(params).pipe(\r\n map((result: RandomPersonnelGridResponse) => ({ data: result, loading: false })),\r\n catchError(() => of({ loading: false }))\r\n )))\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: RandomPersonnelGridResponse }) => {\r\n if (newState.data) {\r\n if (newState.data.HireDate?.length) {\r\n newState.data.HireDate = newState.data.HireDate.map((dateString) => FormatDate(dateString))\r\n }\r\n if (newState.data.TerminationDate?.length) {\r\n newState.data.TerminationDate = newState.data.TerminationDate.map((dateString) =>\r\n FormatDate(dateString)\r\n )\r\n }\r\n if (newState.data.DateOfBirth?.length) {\r\n newState.data.DateOfBirth = newState.data.DateOfBirth.map((dateString) => FormatDate(dateString))\r\n }\r\n this.setState({ loading: newState.loading, data: newState.data, selectedPrintRowIDs: [], selectedRemoveRowIDs: [], selectedChangeStatusRowIDs: [] })\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n },\r\n (error: string) => {\r\n this.setState({ loading: false })\r\n toast.error(error)\r\n }\r\n )\r\n this.searchFieldsSubscription = RandomPersonnelSearchFieldsObservable().subscribe(\r\n data => this.setState({ searchFields: data.map(value => { return { Name: value.Name, ID: value.Name } }) }),\r\n error => toast.error(error)\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n this.searchFieldsSubscription && this.searchFieldsSubscription.unsubscribe()\r\n this.removeSubscription && this.removeSubscription.unsubscribe()\r\n this.importSubscription && this.importSubscription.unsubscribe()\r\n }\r\n\r\n visibleColumns = () => this.state.columns.filter(col => col.visible)\r\n\r\n renderCell = (row: RandomPersonnelGridRecord, colName: keyof RandomPersonnelGridRecord, key: number) => {\r\n switch (colName) {\r\n case \"ID\":\r\n return (\r\n \r\n \r\n \r\n )\r\n case \"Inactive\":\r\n return (\r\n \r\n {row[colName] ? \"Inactive\" : \"Active\"}\r\n \r\n )\r\n case \"DateActive\":\r\n case \"HireDate\":\r\n case \"TerminationDate\":\r\n case \"DateOfBirth\":\r\n return (\r\n \r\n {FormatDate(row[colName])}\r\n \r\n )\r\n case \"PreEmploymentTestOnFile\":\r\n return (\r\n \r\n {row[colName] ? \"Yes\" : \"No\"}\r\n \r\n )\r\n default:\r\n return (\r\n \r\n {row[colName]}\r\n \r\n )\r\n }\r\n }\r\n\r\n sortGrid(column: string, order?: string) {\r\n this.page$.next({ ...this.page$.value, sort: { column: column, order: order || \"\" }, forceReload: false })\r\n }\r\n\r\n filterGridColumn(column: string, items: string[]) {\r\n const columnFilters = this.page$.value.columnFilters\r\n const filter = { column: column, values: items }\r\n let index = columnFilters.findIndex(item => item.column === filter.column)\r\n if (index >= 0) {\r\n columnFilters[index] = filter\r\n } else {\r\n columnFilters.push(filter)\r\n }\r\n\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, columnFilters: columnFilters })\r\n }\r\n\r\n handleExportClick(fileName: string) {\r\n this.setState({ loadingCsv: true })\r\n RandomPersonnelExportCsv(this.page$.value).subscribe(\r\n result => this.export(result, fileName),\r\n error => {\r\n toast.error(error)\r\n this.setState({ loadingCsv: false })\r\n },\r\n (() => this.setState({ loadingCsv: false }))\r\n )\r\n }\r\n\r\n export(csv: string, fileName: string) {\r\n const csvData = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, FormatTimestampFileName(fileName, \"csv\", new Date()), true)\r\n toast.success(\"CSV file downloaded successfully.\")\r\n }\r\n\r\n performImport(base64string: string, fileName: string = \"\") {\r\n this.setState({ importing: true })\r\n this.importSubscription && this.importSubscription.unsubscribe()\r\n this.importSubscription = ImportJobCreateAndPerform(base64string, true, fileName, this.props.currentCompany?.AccountID, 0, false, true).subscribe(\r\n result => {\r\n this.setState({ importing: false, importJobID: result.ImportJobID, jobResult: result.Result})\r\n if (result.Result) {\r\n this.refreshGrid()\r\n toast.success(\"File uploaded successfully.\")\r\n }\r\n },\r\n error => {\r\n this.setState({ importing: false })\r\n if (error.errorData?.code !== CSV_FILE_NOT_CORRECT_FORMAT_CODE) {\r\n this.refreshGrid()\r\n }\r\n toast.error(error.errorData?.message || error.message)\r\n }\r\n )\r\n\r\n }\r\n\r\n handleRemoveClick() {\r\n this.setState({ removeConfirmModal: true })\r\n }\r\n\r\n performRemove = (force: boolean = false) => {\r\n this.setState({ removeConfirmModal: false, removing: true })\r\n this.removeSubscription && this.removeSubscription.unsubscribe()\r\n this.removeSubscription = RandomPersonnelRemove(this.state.selectedRemoveRowIDs, force).subscribe(\r\n data => {\r\n this.setState({ removing: false, forceRemoveConfirmModal: false, selectedRemoveRowIDs: [] })\r\n this.refreshGrid(true)\r\n toast.success(data)\r\n },\r\n error => {\r\n if (error.message == \"Conflict\") {\r\n this.setState({ removing: false, forceRemoveConfirmModal: true, removePersonMessage: error.errorData?.message })\r\n } else {\r\n this.setState({ removing: false, forceRemoveConfirmModal: false })\r\n toast.error(error.errorData?.message || error.message)\r\n }\r\n }\r\n )\r\n }\r\n\r\n handlePrintClick() {\r\n RandomPersonnelPrint(this.state.selectedPrintRowIDs, this.page$.value).subscribe(\r\n data => !!data ? this.print(data) : toast.error(\"Data not found.\"),\r\n error => toast.error(error)\r\n )\r\n }\r\n\r\n print(base64pdf: string) {\r\n const pdfWindow = window.open(\"\")\r\n if (pdfWindow) {\r\n pdfWindow.document.write(\"\")\r\n }\r\n }\r\n\r\n handlePrintSelectAllRowsChange = (e: React.ChangeEvent) => {\r\n const selectedPrintRowIDs = e.target.checked && this.state.data && this.state.data.Records ? this.state.data.Records.map((row: RandomPersonnelGridRecord, i: number) => ({ PersonID: row.PersonID, ID: row.ID })) : []\r\n this.setState({ selectedPrintRowIDs: selectedPrintRowIDs })\r\n }\r\n\r\n changePersonRowSelection = (person: RandomPersonnelIdentifier, checked: boolean, stateFieldName: keyof RandomPersonnelGridStateSelectedPersons) => {\r\n let selectedRows = [...this.state[stateFieldName]]\r\n\r\n const index = selectedRows.findIndex(item => item.PersonID === person.PersonID && item.ID === person.ID)\r\n if (index > -1) {\r\n selectedRows = [...selectedRows.slice(0, index), ...selectedRows.slice(index + 1)]\r\n } else {\r\n selectedRows.push(person)\r\n }\r\n this.setState({ ...{}, [stateFieldName]: selectedRows })\r\n }\r\n\r\n handlePrintSelectRowChange = (person: RandomPersonnelIdentifier, checked: boolean) => {\r\n this.changePersonRowSelection(person, checked, \"selectedPrintRowIDs\")\r\n }\r\n\r\n handleRemoveSelectRowChange = (person: RandomPersonnelIdentifier, checked: boolean) => {\r\n this.changePersonRowSelection(person, checked, \"selectedRemoveRowIDs\")\r\n }\r\n\r\n handleActivateInactivateClick = (data: RandomPersonnelGridRecord) => this.setState({showConsortiumsModal: true, details: data})\r\n\r\n handleChangePage(pageNumber: number) {\r\n this.page$.next({ ...this.page$.value, pageNumber: pageNumber })\r\n }\r\n\r\n handleSearch = (field: string, text: string) => {\r\n if (field === SEARCH_FIELD_NAME_SSN) {\r\n text = text.replace(/\\D/g, \"\")\r\n }\r\n this.page$.next({ ...this.page$.value, search: { field: field, text: text } })\r\n }\r\n\r\n handleAdvancedFiltersSave = (companies: AutoFilterCompany[], regions: AutoFilterRegion[], locations: AutoFilterLocation[], regulatoryModes: RegulatoryMode[], categories: EmployeeCategory[], closeModal: boolean) => {\r\n this.setState({\r\n selectedCompanies: companies,\r\n selectedRegions: regions,\r\n selectedLocations: locations,\r\n selectedRegulatoryModes: regulatoryModes,\r\n selectedCategories: categories,\r\n advancedFiltersModal: !closeModal\r\n })\r\n const filters = [\r\n { column: \"Company\", values: companies.map((item) => item.Name) },\r\n { column: \"Region\", values: regions.map((item) => item.Name) },\r\n { column: \"Location\", values: locations.map((item) => item.Name) },\r\n { column: \"RegulatoryMode\", values: regulatoryModes.map((item) => item.Name) },\r\n { column: \"Category\", values: categories.map((item) => item.Name) },\r\n ]\r\n this.page$.next({ ...this.page$.value, filters: filters })\r\n }\r\n\r\n handleAddIndividualSave = () => {\r\n this.setState({ addIndividualModal: false })\r\n this.refreshGrid()\r\n }\r\n\r\n handleHandleFileUpload = (e: React.ChangeEvent) => {\r\n const file = e.target && e.target.files && e.target.files[0]\r\n if (file) {\r\n const ext = file.name.substring(file.name.lastIndexOf('.') + 1)\r\n if (ext && ext.toLowerCase() === \"csv\") {\r\n var reader = new FileReader()\r\n const self = this\r\n reader.onload = function (e) {\r\n const result = e.target?.result as string || \"\"\r\n const stringLength = result.indexOf('base64') + 7\r\n self.performImport(result.slice(stringLength, result.length), file.name)\r\n }\r\n reader.onerror = function (error) { toast.error(error) }\r\n reader.readAsDataURL(file)\r\n } else {\r\n toast.error(\"File type not allowed, Please upload CSV file.\")\r\n }\r\n }\r\n this.setState({ fileInputKey: Math.random().toString() })\r\n }\r\n\r\n downloadTemplate = () => {\r\n // const header = this.props.isPortalAdmin ? csvHeader : csvHeader.filter((item) => item.toUpperCase() !== \"MANAGER\")\r\n const csvData = new Blob([csvHeader.join(\",\") + \"\\r\\n\"], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, \"import-list-template.csv\")\r\n }\r\n\r\n formatSearchString = (ID: string, value: string): string => {\r\n return ID === SEARCH_FIELD_NAME_SSN ? FormatSSN(value) : value\r\n }\r\n\r\n showEmployeeDetails = (data: RandomPersonnelGridRecord) => this.setState({ employeeDetails: true, details: data })\r\n\r\n refreshGrid = (forceReload: boolean = false ) => this.page$.next({ ...this.page$.value, forceReload: forceReload })\r\n\r\n render() {\r\n const isConsortium = !!this.props.isConsortium\r\n const headerColumns = this.visibleColumns().map((col: Column, i) => {\r\n const sort = this.page$.value.sort\r\n const filterValues = this.page$.value.filters.find(filter => filter.column === col.name)?.values || []\r\n // Removed Advanced Filters button due to decision made 05/28/2021 on SCRUM.\r\n //\r\n const message = filterValues.length > 0 ?\r\n (<>\r\n
Some options in this list may be hidden
\r\n
because of the advanced filter configuration.
\r\n
Click this.setState({ advancedFiltersModal: true })}>filters or ADVANCED FILTERS button to configure
\r\n ) :\r\n <>\r\n const columnFilterValues = this.page$.value.columnFilters.find(filter => filter.column === col.filter)?.values || []\r\n return (\r\n \r\n {this.state.data && col.filter && col.filter in this.state.data && 0}\r\n filteredItems={columnFilterValues}\r\n sort={sort && sort.column === col.name ? sort.order === \"asc\" ? \"asc\" : \"desc\" : undefined}\r\n items={this.state.data[col.filter as keyof ColumnFilters] || []}\r\n // message={message}\r\n onSort={(order?: string) => this.sortGrid(col.name, order)}\r\n onFilter={(items: string[]) => col.filter && this.filterGridColumn(col.filter, items)}\r\n />}\r\n {(!this.state.data || !col.filter) && (col.label || col.name)}\r\n \r\n )\r\n })\r\n const allPrintChecked = !this.state.loading && !!this.state.data?.Records?.length && this.state.data?.Records?.length === this.state.selectedPrintRowIDs.length\r\n return (\r\n \r\n { this.state.employeeDetails && this.state.details && this.setState({ employeeDetails: false }, () => updated && this.refreshGrid())} />}\r\n this.setState({ customizeModal: false })}\r\n onSave={(columns) => this.setState({ columns: columns as Column[], customizeModal: false })} />\r\n {/*\r\n Removed Advanced Filters button due to decision made 05/28/2021 on SCRUM.\r\n \"d) Pass Column filters values via \"Filters\" parameter,\r\n remove Advanced Filters button from the Personnel grid and address this issue later in future releases.\r\n Change CSV Export and Print to work without filters (pass empty filters to requests)\"\r\n */\r\n this.setState({ advancedFiltersModal: false })}\r\n onSave={this.handleAdvancedFiltersSave} /> }\r\n { this.setState({ addIndividualModal: false })}\r\n onAdd={this.handleAddIndividualSave} />}\r\n this.performRemove()}\r\n onHide={() => this.setState({ removeConfirmModal: false })} />\r\n this.performRemove(true)}\r\n onHide={() => this.setState({ forceRemoveConfirmModal: false })} />\r\n {this.state.showConsortiumsModal && this.state.details && this.setState({showConsortiumsModal: false, details: undefined})}/>}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.props.canEditPersonnel && !isConsortium && !this.props.isPortalAdmin && }\r\n {/*\r\n Removed Advanced Filters button due to decision made 05/28/2021 on SCRUM.\r\n \"d) Pass Column filters values via \"Filters\" parameter,\r\n remove Advanced Filters button from the Personnel grid and address this issue later in future releases.\r\n Change CSV Export and Print to work without filters (pass empty filters to requests)\"\r\n */\r\n \r\n }\r\n {this.props.canEditPersonnel && !this.props.isLocation && }\r\n {this.props.canEditPersonnel && !isConsortium && !this.props.isLocation && !this.props.isPortalAdmin && { this.file?.current?.click() }} spin={this.state.importing} disableOnSpin>IMPORT LIST}\r\n \r\n {!isConsortium && this.handleExportClick(\"Personnel\")} disabled={!this.state.data?.Records?.length} spin={this.state.loadingCsv} disableOnSpin>EXPORT CSV}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isConsortium && }\r\n {headerColumns}\r\n {this.props.canEditPersonnel && !isConsortium && }\r\n {isConsortium && }\r\n \r\n \r\n \r\n {this.state.loading && }\r\n {!this.state.loading && (this.state.data && this.state.data.Records && this.state.data.Records.length > 0\r\n ? this.state.data.Records.map((row: RandomPersonnelGridRecord, i: number) => {\r\n const person = { PersonID: row.PersonID, ID: row.ID }\r\n return (\r\n \r\n {!isConsortium && }\r\n {this.visibleColumns().map((col, i) => this.renderCell(row, col.name as keyof RandomPersonnelGridRecord, i))}\r\n { this.props.canEditPersonnel && !isConsortium && }\r\n {isConsortium && }\r\n )\r\n })\r\n : \r\n )}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Consortiums Member
\r\n person.PersonID === item.PersonID && person.ID === item.ID)}\r\n onChange={this.handlePrintSelectRowChange} />\r\n \r\n person.PersonID === item.PersonID && person.ID === item.ID)}\r\n onChange={this.handleRemoveSelectRowChange} />\r\n \r\n \r\n
NO DATA FOUND
\r\n {this.state.data && !this.state.loading && Total records: {this.state.data.Total}}\r\n {this.state.data && this.handleChangePage(pageNumber)} />}\r\n \r\n
\r\n
\r\n {!this.state.importing &&\r\n 0 && !this.state.jobResult}\r\n importJobID={this.state.importJobID}\r\n onClose={() => this.setState({ importJobID: -1 })} />}\r\n
)\r\n }\r\n}\r\nfunction mapStateToProps(state: AppState): RandomPersonnelGridProps {\r\n const selectedCompany = GetSelectedAssignedClinic(state)\r\n const userAccess = BuildUserAccess(state)\r\n return {\r\n canEditPersonnel: userAccess.canEditPersonnel,\r\n canManagePools: userAccess.canManagePools,\r\n canManagePersonnel: userAccess.canManagePersonnel,\r\n canManageConsortiumPools: userAccess.CanManageConsortiumPools,\r\n isLocation: (GetSelectedAssignedClinic(state)?.LocationID || 0) > 0,\r\n currentCompany: selectedCompany || undefined,\r\n isPortalAdmin: isPortalAdmin(state)\r\n }\r\n}\r\nconst ConnectedRandomPersonnelGrid = connect(mapStateToProps, null)(RandomPersonnelGrid)\r\nexport default ConnectedRandomPersonnelGrid\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport SearchField from \"../SearchField\"\r\n\r\nexport default function RandomPersonnelSearchFieldsObservable(): Observable {\r\n return ObservableFromFetch(\"RandomTest/GetSearchDropdowns\")\r\n}\r\n","export default \"data:image/png;base64,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\"","import { AccountTypeID } from \"../../config/Constants\"\r\nimport { Filter, Sort } from \"../GridRequest\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { SelectionInboxGridResponse } from \"./SelectionInboxModel/SelectionInboxGridResponse\"\r\n\r\nfunction columnFilters(filters: Filter[]) {\r\n return {\r\n AuthorizationID: filters.find(filter => filter.column === \"AuthorizationID\")?.values || [],\r\n Company: filters.find(filter => filter.column === \"Company\")?.values || [],\r\n Location: filters.find(filter => filter.column === \"Location\")?.values || [],\r\n EventDate: filters.find(filter => filter.column === \"EventDate\")?.values || [],\r\n IDNumber: filters.find(filter => filter.column === \"IDNumber\")?.values || [],\r\n Name: filters.find(filter => filter.column === \"Name\")?.values || [],\r\n NotificationDate: filters.find(filter => filter.column === \"NotificationDate\")?.values || [],\r\n Pool: filters.find(filter => filter.column === \"Pool\")?.values || [],\r\n Regulated: filters.find(filter => filter.column === \"Regulated\")?.values || [],\r\n Selection: filters.find(filter => filter.column === \"Selection\")?.values || [],\r\n Service: filters.find(filter => filter.column === \"Service\")?.values || [],\r\n Site: filters.find(filter => filter.column === \"Site\")?.values || [],\r\n Status: filters.find(filter => filter.column === \"Status\")?.values || [],\r\n Occupation: filters.find(filter => filter.column === \"Occupation\")?.values || [],\r\n RegulatoryMode: filters.find(filter => filter.column === \"RegulatoryMode\")?.values || [],\r\n LastName: filters.find(filter => filter.column === \"LastName\")?.values || [],\r\n MiddleInitial: filters.find(filter => filter.column === \"MiddleInitial\")?.values || [],\r\n FirstName: filters.find(filter => filter.column === \"FirstName\")?.values || [],\r\n Gender: filters.find(filter => filter.column === \"Gender\")?.values || [],\r\n DateOfBirth: filters.find(filter => filter.column === \"DateOfBirth\")?.values || [],\r\n PrimaryIDType: filters.find(filter => filter.column === \"PrimaryIDType\")?.values || [],\r\n SSN: filters.find(filter => filter.column === \"SSN\")?.values || [],\r\n DriverID: filters.find(filter => filter.column === \"DriverID\")?.values || [],\r\n EmployerID: filters.find(filter => filter.column === \"EmployerID\")?.values || [],\r\n AlternateID: filters.find(filter => filter.column === \"AlternateID\")?.values || [],\r\n CRMUniqueID: filters.find(filter => filter.column === \"CRMUniqueID\")?.values || [],\r\n HireDate: filters.find(filter => filter.column === \"HireDate\")?.values || [],\r\n TerminationDate: filters.find(filter => filter.column === \"TerminationDate\")?.values || [],\r\n CellPhone: filters.find(filter => filter.column === \"CellPhone\")?.values || [],\r\n HomePhone: filters.find(filter => filter.column === \"HomePhone\")?.values || [],\r\n WorkPhone: filters.find(filter => filter.column === \"WorkPhone\")?.values || [],\r\n Inactive: filters.find(filter => filter.column === \"Inactive\")?.values || [],\r\n RetireDate: filters.find(filter => filter.column === \"StRetireDateatus\")?.values || [],\r\n Supervisor1: filters.find(filter => filter.column === \"Supervisor1\")?.values || [],\r\n Supervisor2: filters.find(filter => filter.column === \"Supervisor2\")?.values || [],\r\n Address: filters.find(filter => filter.column === \"Address\")?.values || [],\r\n Province: filters.find(filter => filter.column === \"Province\")?.values || [],\r\n Zip: filters.find(filter => filter.column === \"Zip\")?.values || [],\r\n Country: filters.find(filter => filter.column === \"Country\")?.values || [],\r\n StateCode: filters.find(filter => filter.column === \"StateCode\")?.values || [],\r\n StateName: filters.find(filter => filter.column === \"StateName\")?.values || [],\r\n Manager: filters.find(filter => filter.column === \"Manager\")?.values || [],\r\n }\r\n}\r\n\r\nfunction gridParams(pageNumber: number, pageSize: number, sort: Sort, filters: Filter[], search: { field: string, text: string }): string {\r\n return JSON.stringify({\r\n AccountTypeID: AccountTypeID,\r\n ColumnFilters: columnFilters(filters),\r\n DateFrom: \"1/01/0001 00:00:00\",\r\n DateTo: \"1/01/0001 00:00:00\",\r\n Exact: false,\r\n Filters: {\r\n Company: [],\r\n DateRange: \"\",\r\n DateType: \"\",\r\n EndDate: \"\",\r\n Location: [],\r\n Reason: [],\r\n Region: [],\r\n Regulated: \"Regulated & Non-Regulated\",\r\n Service: [],\r\n StartDate: \"\",\r\n Status: \"In Process\"\r\n },\r\n IsSearch: true, // TODO: verify\r\n IsMarketPlace: true,\r\n Mask: search.text || \"\",\r\n PageNumber: pageNumber,\r\n PageSize: pageSize || 20,\r\n Pending: true,\r\n RoleID: 0, // TODO: verify\r\n TrackPersonID: [{Mask: \"\", TestDetailID: \"\", MockTestDetailID: 0}], // TODO: verify\r\n SearchBy: search.field || \"\",\r\n SortGrid: { SortColumn: sort?.column || \"\", SortOrder: sort?.order.toUpperCase() === \"DESC\" ? \"DSC\" : sort?.order.toUpperCase() },\r\n Type: \"All\"\r\n })\r\n}\r\nexport const SelectionInboxGridObservable = (pageNumber: number, pageSize: number, sort: Sort, filters: Filter[], search: { field: string, text: string }) => ObservableFromFetch(\"RandomTest/GetRandomResult\", gridParams(pageNumber, pageSize, sort, filters, search))\r\nexport const SelectionInboxGridCsv = (pageNumber: number, pageSize: number, sort: Sort, filters: Filter[], search: { field: string, text: string }) => ObservableFromFetch(\"RandomTest/ExportRandomTrackRecord\", gridParams(pageNumber, pageSize, sort, filters, search))\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function EventExcuseObservable(testEventID: number, testDetailID: string, generateReplacement: boolean, comment: string, excuseReasonCode:string, excuseComment:string): Observable {\r\n const params: string = JSON.stringify({\r\n TestDetailID: testDetailID,\r\n TestEventID: testEventID,\r\n GenerateReplacement:generateReplacement,\r\n SchedulingNotes: comment,\r\n ExcuseReasonCode:excuseReasonCode,\r\n ExcuseComment:excuseComment\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderPoolDefinition/ExcuseAnEvent\", params)\r\n}\r\n\r\nexport function CanSubstituteOnExcuseObservable( testDetailID: string) {\r\n const requestBody: string = new URLSearchParams({\r\n TestDetailID: testDetailID\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderPoolDefinition/CanSubstituteOnExcuse?\" + requestBody)\r\n}\r\n\r\nexport function GetExcuseNotesObservable( testDetailID: string) {\r\n const params: string = JSON.stringify({\r\n TestDetailID: testDetailID\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderPoolDefinition/GetSchedulingNote\", params)\r\n}\r\n\r\nexport function UpdateExcuseNotesObservable( testDetailID: string, comment: string) {\r\n const params: string = JSON.stringify({\r\n TestDetailID: testDetailID,\r\n SchedulingNotes: comment\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderPoolDefinition/UpdateSchedulingNote\", params)\r\n}\r\n\r\nexport function EventUnexcuseObservable(testEventID: number, testDetailID: string) {\r\n const params: string = JSON.stringify({\r\n TestDetailID: testDetailID,\r\n TestEventID: testEventID\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderPoolDefinition/UnexcuseAnEvent\", params)\r\n}\r\n\r\n\r\n","import * as React from \"react\"\r\nimport { Container, Modal, Row, Col, Button, Form } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport EventExcuseObservable, { CanSubstituteOnExcuseObservable } from \"../../api/Randoms/EventExcuse\"\r\nimport SelectionInboxGridRow from \"../../api/Randoms/SelectionInboxModel/SelectionInboxGridRow\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { IsOnTrack } from \"../../App\"\r\n\r\nimport ExcuseReason, { AlternateExcuseReasons, IsAltOtherExcuseReason } from \"../../api/Randoms/RandomsModel/ExcuseReason\"\r\n\r\ninterface ExcuseEventModalProps {\r\n show: boolean\r\n excuseDetails?: SelectionInboxGridRow\r\n onClose: (success: boolean) => void\r\n}\r\n\r\ninterface ExcuseEventModalState {\r\n comment: string\r\n canExcuse: boolean\r\n saving: boolean\r\n loading: boolean\r\n excuseMode: number\r\n excuseReasonCode: string\r\n excuseComment: string\r\n}\r\nconst ExcuseOnly: number = 1\r\nconst ExcuseAndAltrnate: number = 2\r\n\r\nexport default class ExcuseEventModal extends React.PureComponent {\r\n state: ExcuseEventModalState = {\r\n comment: \"\",\r\n canExcuse: false,\r\n saving: false,\r\n loading: false,\r\n excuseMode: 0,\r\n excuseReasonCode: \"\",\r\n excuseComment: \"\"\r\n }\r\n excuseSubscription?: Subscription\r\n canExcuseSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n const isOnTrack = IsOnTrack()\r\n if (isOnTrack) {\r\n return;\r\n }\r\n this.setState({ canExcuse: false, loading: true })\r\n this.canExcuseSubscription && this.canExcuseSubscription.unsubscribe()\r\n this.canExcuseSubscription = CanSubstituteOnExcuseObservable(this.props.excuseDetails!.TestDetailID).subscribe(\r\n (result: boolean) => {\r\n this.setState({\r\n canExcuse: result,\r\n loading: false\r\n })\r\n },\r\n\r\n error => this.handleAPIError(error, { canExcuse: false, loading: false })\r\n )\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n this.excuseSubscription && this.excuseSubscription.unsubscribe()\r\n this.canExcuseSubscription && this.canExcuseSubscription.unsubscribe()\r\n }\r\n\r\n excuse = (generateReplacement: boolean) => {\r\n this.setState({ saving: true })\r\n const excuseReasonCode: string = this.state.excuseReasonCode || \"\"\r\n const excuseComment: string = this.state.excuseComment || \"\"\r\n this.excuseSubscription && this.excuseSubscription.unsubscribe()\r\n this.excuseSubscription = EventExcuseObservable(this.props.excuseDetails!.TestEventID, this.props.excuseDetails!.TestDetailID, generateReplacement, this.state.comment.trim(), excuseReasonCode, excuseComment).subscribe(\r\n result => {\r\n toast.success(result)\r\n this.props.onClose(true)\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n toggleAlternateExcuseOption = (excuseMode: number) => {\r\n this.setState({ excuseMode: excuseMode })\r\n }\r\n onAltReasonChange = (value: string) => {\r\n this.setState({ excuseReasonCode: value })\r\n }\r\n\r\n isAltOtherReasonSelectd = () => {\r\n return IsAltOtherExcuseReason(this.state.excuseReasonCode)\r\n }\r\n render() {\r\n const { excuseDetails, show } = this.props\r\n const isOnTrack = IsOnTrack()\r\n\r\n const { canExcuse, saving, loading, excuseMode } = this.state\r\n const disableExcuse = (isOnTrack && (this.state.comment.trim().length === 0)) || loading || saving\r\n const disableAltrnate = isOnTrack || loading || saving || (this.isAltOtherReasonSelectd() && this.state.excuseComment.trim().length == 0)\r\n const disableExcuseButton = disableExcuse || (!isOnTrack && excuseMode !== ExcuseOnly) || (this.isAltOtherReasonSelectd() && this.state.excuseComment.trim().length == 0)\r\n const disableExcuseAnAlternateButton = disableExcuse || !canExcuse || (!isOnTrack && excuseMode !== ExcuseAndAltrnate) || disableAltrnate\r\n if (isOnTrack) {\r\n return this.excuse(false)}\r\n onHide={() => this.props.onClose(false)}\r\n size=\"lg\"\r\n disableConfirmButton={disableExcuseButton}\r\n spinConfirmButton={this.state.saving}\r\n disableConfirmOnSpin={true}>\r\n
\r\n \r\n You have selected to excuse {excuseDetails?.FirstName} {excuseDetails?.LastName} from taking a pending {excuseDetails?.Service}. Doing so will remove this event from being tested for the associated pool and will affect the minimum required events to be completed for this selection period. You are required to provide reason for excusal.\r\n \r\n \r\n Reason for excusing\r\n \r\n this.setState({ comment: e.target.value })} />\r\n \r\n \r\n \r\n Clicking Verify will mark the scheduling event status as “Excused”, will add the comments to the scheduling notes and will remove the event from the Random Selection Inbox grid. Excused events can be filtered from the Results grid.\r\n \r\n
\r\n
\r\n }\r\n const donorName = excuseDetails?.DonorName || \"\"\r\n const title = \"EXCUSE EVENTS\"\r\n const size = \"xl\"\r\n const exceuseButtonText = \"EXCUSE\"\r\n const exceuseAndAlternateButtonText = \"EXCUSE + ALTERNATE\"\r\n const showCloseButton = true\r\n const showCancelButton = true\r\n const spinConfirmButton = this.state.saving\r\n const disableConfirmOnSpin = true\r\n const cancelButtonText = \"CANCEL\"\r\n\r\n\r\n return this.props.onClose(false)} size={size}>\r\n \r\n {title}\r\n \r\n \r\n
\r\n \r\n You have selected to excuse {excuseDetails?.FirstName} {excuseDetails?.LastName} from taking a pending {excuseDetails?.Service}. Doing so will remove this event from being tested for the associated pool and will affect the minimum required events to be completed for this selection period. You are required to provide reason for excusal.\r\n \r\n \r\n You have the option to excuse the donor from testing or excusing the donor and selecting an alternate donor from the current selection period.\r\n \r\n \r\n Clicking “Excuse” will mark the scheduling event status as “Excused”, will add the comments to the scheduling notes and will remove the event from the Random Selection Inbox grid. Excused events can be filtered from the Results grid.\r\n \r\n \r\n Clicking “Excuse + Alternate“ will excuse the current donor (same as above) and add an alternate donor to the Inbox grid with a status of “Pending ALT”. Alternates can be scheduled for testing in the same way as “Pending”.\r\n \r\n \r\n Please note that alternates with be created with same event types as the excused record. (i.e. If a drug and alcohol were excused, then a drug and alcohol will be created for the alternate donor.)\r\n \r\n\r\n \r\n \r\n ) => this.toggleAlternateExcuseOption(ExcuseAndAltrnate)}\r\n className=\"abc-radio abc-radio-primary\" />\r\n \r\n\r\n \r\n ) => this.toggleAlternateExcuseOption(ExcuseOnly)}\r\n className=\"abc-radio abc-radio-primary\" />\r\n \r\n \r\n\r\n \r\n \r\n this.onAltReasonChange(e.target.value)}\r\n isInvalid={this.state.excuseReasonCode === \"\"}\r\n disabled={false}>\r\n {AlternateExcuseReasons.map((item: ExcuseReason) => )}\r\n \r\n \r\n \r\n\r\n {this.isAltOtherReasonSelectd() &&\r\n \r\n Comment (required)\r\n \r\n } \r\n \r\n {this.isAltOtherReasonSelectd() &&\r\n \r\n \r\n this.setState({ excuseComment: e.target.value })} />\r\n \r\n \r\n }\r\n
\r\n
\r\n \r\n {showCancelButton && }\r\n\r\n\r\n this.excuse(true)} disabled={disableExcuseAnAlternateButton} spin={spinConfirmButton} disableOnSpin={disableConfirmOnSpin} className=\"fixed-w5\">{exceuseAndAlternateButtonText}\r\n this.excuse(false)} disabled={disableExcuseButton} spin={spinConfirmButton} disableOnSpin={disableConfirmOnSpin} className=\"fixed-w5\">{exceuseButtonText}\r\n \r\n
\r\n }\r\n}","import * as React from \"react\"\r\nimport { Container, Modal, Row, Col, Button, Form } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { EventUnexcuseObservable, GetExcuseNotesObservable, UpdateExcuseNotesObservable } from \"../../api/Randoms/EventExcuse\"\r\nimport SelectionInboxGridRow from \"../../api/Randoms/SelectionInboxModel/SelectionInboxGridRow\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\n\r\ninterface UnexcuseEventModalModalProps {\r\n show: boolean\r\n excuseDetails?: SelectionInboxGridRow\r\n onClose: (success: boolean) => void\r\n}\r\n\r\ninterface UnexcuseEventModalState {\r\n comment: string\r\n saving: boolean\r\n loading: boolean\r\n}\r\n\r\nexport default class UnexcuseEventModalModal extends React.PureComponent {\r\n state: UnexcuseEventModalState = { comment: \"\", saving: false, loading: false }\r\n saveSubscription?: Subscription\r\n loadSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.setState({ loading: true })\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.loadSubscription = GetExcuseNotesObservable(this.props.excuseDetails!.TestDetailID).subscribe(\r\n (result: string) => this.setState({ comment: result, loading: false }),\r\n error => this.handleAPIError(error, { loading: false })\r\n )\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n }\r\n\r\n unexcuse = () => {\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = EventUnexcuseObservable(this.props.excuseDetails!.TestEventID, this.props.excuseDetails!.TestDetailID).subscribe(\r\n result => {\r\n toast.success(result)\r\n this.props.onClose(true)\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n updateComment = () => {\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = UpdateExcuseNotesObservable(this.props.excuseDetails!.TestDetailID, this.state.comment.trim()).subscribe(\r\n result => {\r\n toast.success(result)\r\n this.props.onClose(true)\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error(FormatError(error))\r\n }\r\n\r\n render() {\r\n const { saving, loading } = this.state\r\n const disableUpdateButton = (this.state.comment.trim().length === 0) || loading || saving\r\n\r\n return this.props.onClose(false)} size=\"lg\">\r\n \r\n UNEXCUSE EVENTS\r\n \r\n \r\n
\r\n \r\n Reason for excusing\r\n \r\n this.setState({ comment: e.target.value })} />\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n this.updateComment()} disabled= {disableUpdateButton} spin={saving} disableOnSpin={true} className=\"fixed-w5\">UPDATE\r\n this.unexcuse()} spin={saving} disableOnSpin={true} className=\"fixed-w5\">UNEXCUSE\r\n \r\n
\r\n }\r\n}","import SelectionInboxGridRow from \"./SelectionInboxModel/SelectionInboxGridRow\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function UpdateStatusToPending(data: SelectionInboxGridRow[]) {\r\n const tests = data.map((d) => ({\r\n TestEventID: d.TestEventID,\r\n MockTestDetailID: d.TestDetailID,\r\n FormFoxTestAN: d.FormFoxTestAN,\r\n }))\r\n\r\n const params: string = JSON.stringify(tests)\r\n return ObservableFromFetch(\"WorkforceRandomTest/UpdateStatusToPending\", params, \"put\")\r\n}\r\n","import React from \"react\"\r\nimport { Container, Row, Col, Table, Button, Spinner } from \"react-bootstrap\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { Subscription, BehaviorSubject, of, concat } from \"rxjs\"\r\nimport { distinctUntilChanged, switchMap, map, catchError } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { FaSync } from \"react-icons/fa\"\r\nimport FileSaver from \"file-saver\"\r\nimport SearchBar from \"../SearchBar\"\r\nimport SearchField from \"../../api/SearchField\"\r\nimport ColumnsCustomizeModal from \"../ColumnsCustomizeModal/ColumnsCustomizeModal\"\r\nimport { CustomizableFilterColumn } from \"../ColumnsCustomizeModal/CustomizableColumn\"\r\nimport ColumnHeaderFilter from \"../ColumnHeaderFilter\"\r\nimport TablePagination from \"../TablePagination\"\r\nimport FormatTimestampFileName from \"../../formatters/FormatTimestampFileName\"\r\nimport downloadCsv from \"../../assets/images/download-csv.png\"\r\nimport { SelectionInboxGridObservable, SelectionInboxGridCsv } from \"../../api/Randoms/SelectionInboxGrid\"\r\nimport SelectionInboxGridRow from \"../../api/Randoms/SelectionInboxModel/SelectionInboxGridRow\"\r\nimport { ColumnFilters } from \"../../api/Randoms/SelectionInboxModel/ColumnFilters\"\r\nimport { SearchFieldsGet } from \"../../api/OrderResults/SearchFieldsGet\"\r\nimport FormatSSN from \"../../formatters/FormatSSN\"\r\nimport { Link } from \"react-router-dom\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport EmployeeDetailsModal from \"../OrderResults/EmployeeDetailsModal\"\r\nimport { SelectionInboxGridResponse } from \"../../api/Randoms/SelectionInboxModel/SelectionInboxGridResponse\"\r\nimport { Filter, Sort } from \"../../api/GridRequest\"\r\nimport { StorageKey } from \"../../config/Constants\"\r\nimport { loadCustomized, saveCustomized } from \"../ColumnsCustomizeModal/ColumnsCustomizeModal\"\r\nimport ExcuseEventModal from \"./ExcuseEventModal\"\r\nimport UnexcuseEventModal from \"./UnexcuseEventModal\"\r\nimport UpdateStatusToPending from \"../../api/Randoms/SelectionInboxPending\"\r\nimport { isPortalAdmin } from \"../../authentication/isAdminRole\"\r\nimport { connect } from \"react-redux\"\r\nimport { AppState } from \"../../AppState\"\r\n\r\ntype Column = CustomizableFilterColumn\r\n\r\ninterface SelectionInboxProps {\r\n isPortalAdmin: boolean\r\n}\r\n\r\ninterface SelectionInboxState {\r\n loading: boolean\r\n data?: SelectionInboxGridResponse\r\n columns: Column[]\r\n loadingCsv?: boolean\r\n customizeModal: boolean\r\n searchFields?: SearchField[]\r\n details?: SelectionInboxGridRow\r\n excuseRow?: SelectionInboxGridRow\r\n unexcuseRow?: SelectionInboxGridRow\r\n employeeDetails: boolean\r\n}\r\n\r\nconst defaultColumns: Column[] = [\r\n { name: \"Status\", filter: \"Status\", label: \"STATUS\", visible: true, customize: true, required: true },\r\n { name: \"DonorID\", filter: \"IDNumber\", label: \"PERSONNEL ID\", visible: true, customize: true },\r\n { name: \"DonorName\", filter: \"Name\", label: \"NAME\", visible: true, customize: true },\r\n { name: \"Service\", filter: \"Service\", label: \"SERVICE\", visible: true, customize: true },\r\n { name: \"PoolName\", filter: \"Pool\", label: \"POOL\", visible: true, customize: true },\r\n { name: \"Selection\", filter: \"Selection\", label: \"SELECTION\", visible: true, customize: true },\r\n { name: \"CompanyName\", filter: \"Company\", label: \"COMPANY\", visible: true, customize: true },\r\n { name: \"LocationName\", filter: \"Location\", label: \"LOCATION\", visible: false, customize: true },\r\n { name: \"Regulated\", filter: \"Regulated\", label: \"REGULATED\", visible: true, customize: true },\r\n { name: \"EventDate\", filter: \"EventDate\", label: \"CREATED\", visible: true, customize: true },\r\n { name: \"DateNotified\", filter: \"NotificationDate\", label: \"NOTIFIED\", visible: true, customize: true },\r\n { name: \"FormFoxTestAN\", filter: \"AuthorizationID\", label: \"AUTHORIZATION ID\", visible: true, customize: true },\r\n { name: \"SiteName\", filter: \"Site\", label: \"SITE\", visible: true, customize: true },\r\n { name: \"RegulatoryMode\", filter: \"RegulatoryMode\", label: \"REGULATORY MODE\", visible: true, customize: true },\r\n { name: \"Occupation\", filter: \"Occupation\", label: \"OCCUPATION\", visible: false, customize: true },\r\n { name: \"LastName\", filter: \"LastName\", label: \"LAST NAME\", visible: false, customize: true },\r\n { name: \"MiddleInitial\", filter: \"MiddleInitial\", label: \"MIDDLE INITIAL\", visible: false, customize: true },\r\n { name: \"FirstName\", filter: \"FirstName\", label: \"FIRST NAME\", visible: false, customize: true },\r\n { name: \"Gender\", filter: \"Gender\", label: \"GENDER\", visible: false, customize: true },\r\n { name: \"DateOfBirth\", filter: \"DateOfBirth\", label: \"DOB\", visible: false, customize: true },\r\n { name: \"PrimaryIDType\", filter: \"PrimaryIDType\", label: \"PRIMARY ID TYPE\", visible: false, customize: true },\r\n { name: \"SSN\", filter: \"SSN\", label: \"SSN\", visible: false, customize: true },\r\n { name: \"DriverID\", filter: \"DriverID\", label: \"DRIVER ID\", visible: false, customize: true },\r\n { name: \"EmployerID\", filter: \"EmployerID\", label: \"EMPLOYER ID\", visible: false, customize: true },\r\n { name: \"AlternateID\", filter: \"AlternateID\", label: \"ALTERNATE ID\", visible: false, customize: true },\r\n { name: \"CRMUniqueID\", filter: \"CRMUniqueID\", label: \"CRM UNIQUE ID\", visible: false, customize: true },\r\n { name: \"HireDate\", filter: \"HireDate\", label: \"HIRE DATE\", visible: false, customize: true },\r\n { name: \"TerminationDate\", filter: \"TerminationDate\", label: \"TERMINATION DATE\", visible: false, customize: true },\r\n { name: \"CellPhone\", filter: \"CellPhone\", label: \"CELL PHONE\", visible: false, customize: true },\r\n { name: \"HomePhone\", filter: \"HomePhone\", label: \"HOME PHONE\", visible: false, customize: true },\r\n { name: \"WorkPhone\", filter: \"WorkPhone\", label: \"WORK PHONE\", visible: false, customize: true },\r\n { name: \"Email\", filter: \"Email\", label: \"EMAIL\", visible: false, customize: true },\r\n { name: \"Inactive\", filter: \"Inactive\", label: \"INACTIVE\", visible: false, customize: true },\r\n { name: \"RetireDate\", filter: \"RetireDate\", label: \"RETIRE DATE\", visible: false, customize: true },\r\n { name: \"Supervisor1\", filter: \"Supervisor1\", label: \"SUPERVISOR 1\", visible: false, customize: true },\r\n { name: \"Supervisor2\", filter: \"Supervisor2\", label: \"SUPERVISOR 2\", visible: false, customize: true },\r\n { name: \"Address\", filter: \"Address\", label: \"ADDRESS\", visible: false, customize: true },\r\n { name: \"Province\", filter: \"Province\", label: \"PROVINCE\", visible: false, customize: true },\r\n { name: \"Zip\", filter: \"Zip\", label: \"ZIP\", visible: false, customize: true },\r\n { name: \"Country\", filter: \"Country\", label: \"COUNTRY\", visible: false, customize: true },\r\n { name: \"StateCode\", filter: \"StateCode\", label: \"STATE CODE\", visible: false, customize: true },\r\n { name: \"StateName\", filter: \"StateName\", label: \"STATE NAME\", visible: false, customize: true },\r\n { name: \"Manager\", filter: \"Manager\", label: \"MANAGER\", visible: false, customize: true },\r\n]\r\n\r\ninterface SelectionInboxSearchParams {\r\n pageNumber: number\r\n sort: Sort\r\n filters: Filter[]\r\n search: { field: string, text: string }\r\n}\r\n\r\nconst PageSize = 20\r\nexport class SelectionInbox extends React.PureComponent {\r\n searchFieldsSubscription?: Subscription\r\n \r\n state: SelectionInboxState = {\r\n loading: false,\r\n data: undefined,\r\n columns: loadCustomized(StorageKey.SelectionInboxGridColumns, defaultColumns) as Column[],\r\n customizeModal: false,\r\n employeeDetails: false\r\n }\r\n\r\n page$ = new BehaviorSubject({\r\n pageNumber: 1,\r\n sort: { column: \"\", order: \"\" },\r\n filters: [],\r\n search: { field: \"\", text: \"\" }\r\n })\r\n pageSubscription?: Subscription\r\n csvSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.pageSubscription = this.page$.pipe(\r\n distinctUntilChanged(),\r\n switchMap(params => concat(\r\n of({ loading: true }),\r\n SelectionInboxGridObservable(params.pageNumber, PageSize, params.sort, params.filters, params.search).pipe(\r\n map((result: SelectionInboxGridResponse) => ({ data: result, loading: false })),\r\n catchError((error) => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: SelectionInboxGridResponse }) => {\r\n if (newState.data) {\r\n // Loads prev page in case of current non-first page is empty\r\n if ((!newState.data.Records || newState.data.Records.length === 0) && this.page$.value.pageNumber > 1) {\r\n this.page$.next({ ...this.page$.value, pageNumber: this.page$.value.pageNumber - 1 })\r\n } else {\r\n if (newState.data.Regulated?.length) {\r\n newState.data.Regulated = newState.data.Regulated.map(regulated => regulated ? \"True\" : \"False\")\r\n }\r\n\r\n if (this.props.isPortalAdmin && newState.data.Manager?.length) {\r\n newState.data.Manager = newState.data.Manager.map(manager => manager ? manager = \"TRUE\" : manager = \"FALSE\")\r\n newState.data.Records = this.mapManager(newState.data.Records)\r\n }\r\n else {\r\n this.setState({columns: this.state.columns.filter( x => x.name != \"Manager\")})\r\n }\r\n\r\n this.setState({ loading: newState.loading, data: newState.data })\r\n \r\n }\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n\r\n },\r\n (error: string) => {\r\n this.setState({ loading: false })\r\n toast.error(error)\r\n }\r\n )\r\n\r\n this.searchFieldsSubscription = SearchFieldsGet().subscribe(\r\n (data: SearchField[]) => this.setState({ searchFields: data }),\r\n error => toast.error(error)\r\n )\r\n }\r\n\r\n mapManager = (records: SelectionInboxGridRow[][]): SelectionInboxGridRow[][] => {\r\n return records.map((r) => {\r\n return r.map((element) => {\r\n element.Manager = (element.Manager || element.Manager == \"TRUE\") ? \"TRUE\" : \"FALSE\"\r\n return element\r\n })\r\n })\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n this.csvSubscription && this.csvSubscription.unsubscribe()\r\n this.searchFieldsSubscription && this.searchFieldsSubscription.unsubscribe()\r\n this.page$.unsubscribe()\r\n }\r\n\r\n pageChanged = (pageNumber: number) => {\r\n this.page$.next({ ...this.page$.value, pageNumber: pageNumber })\r\n }\r\n\r\n sortGrid(column: string, order?: string) {\r\n this.page$.next({ ...this.page$.value, sort: { column: column, order: order || \"\" } })\r\n }\r\n\r\n filterGrid(column: string, items: string[]) {\r\n const filters = [...this.page$.value.filters]\r\n const filter = { column: column, values: items }\r\n let index = filters.findIndex(item => item.column === filter.column)\r\n if (index >= 0) {\r\n filters[index] = filter\r\n } else {\r\n filters.push(filter)\r\n }\r\n\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, filters: filters })\r\n }\r\n\r\n clearFilters() {\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, filters: [] })\r\n }\r\n\r\n onSearch = (field: string, text: string) => {\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, search: { field: field, text: text } })\r\n }\r\n\r\n onExportClick = () => {\r\n this.setState({ loadingCsv: true })\r\n const value = this.page$.value\r\n this.csvSubscription = SelectionInboxGridCsv(value.pageNumber, 0, value.sort, value.filters, value.search).subscribe(\r\n result => this.export(result),\r\n error => {\r\n this.setState({ loadingCsv: false })\r\n toast.error(error)\r\n },\r\n (() => this.setState({ loadingCsv: false }))\r\n )\r\n }\r\n\r\n export(csv: string) {\r\n const csvData = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, FormatTimestampFileName(\"Selection_Inbox\", \"csv\", new Date()), true)\r\n toast.success(\"CSV file downloaded successfully.\")\r\n }\r\n\r\n print(base64pdf: string) {\r\n const pdfWindow = window.open(\"\")\r\n if (pdfWindow) {\r\n pdfWindow.document.write(\"\")\r\n }\r\n }\r\n\r\n handleExcuseModalClose = (success: boolean) => {\r\n this.setState({ excuseRow: undefined })\r\n if (success) {\r\n this.refreshGrid()\r\n }\r\n }\r\n\r\n handleUnexcuseModalClose = (success: boolean) => {\r\n this.setState({ unexcuseRow: undefined })\r\n if (success) {\r\n this.page$.next({ ...this.page$.value })\r\n }\r\n }\r\n\r\n isCanExcuse = (row: SelectionInboxGridRow)=> {\r\n return row.Status.startsWith(\"PENDING\")\r\n }\r\n\r\n isCanUnexcuse = (row: SelectionInboxGridRow)=> {\r\n return row.Status.startsWith(\"EXCUSED\")\r\n }\r\n\r\n visibleColumns = () => this.state.columns.filter(col => col.visible)\r\n\r\n statusButton = (row: SelectionInboxGridRow, group: SelectionInboxGridRow[]) => {\r\n switch(row.Status) {\r\n case \"ORDERED\":\r\n case \"ORDERED ALT\":{\r\n return \r\n }\r\n case \"EXCUSED\":{\r\n return \r\n }\r\n default:{\r\n return {row.Status}\r\n }\r\n }\r\n }\r\n\r\n setPending = (row: SelectionInboxGridRow, group: SelectionInboxGridRow[]) => {\r\n if ([\"ORDERED\", \"ORDERED ALT\"].includes(row.Status))\r\n return this.updateToPending(group)}>\r\n [Set to PENDING]\r\n \r\n else\r\n return \"\"\r\n }\r\n\r\n updateToPending = (group: SelectionInboxGridRow[]) => {\r\n UpdateStatusToPending(group).subscribe(\r\n result => this.refreshGrid(),\r\n error => toast.error(error)\r\n )\r\n }\r\n\r\n createdDateButton = (row: SelectionInboxGridRow) => {\r\n if (this.isCanExcuse(row)) {\r\n return \r\n }\r\n else if (this.isCanUnexcuse(row)) {\r\n return \r\n }\r\n else {\r\n return FormatDate(row[\"EventDate\"])\r\n }\r\n }\r\n\r\n renderCell = (row: SelectionInboxGridRow, colName: keyof SelectionInboxGridRow, key: number, isFirstRow: boolean, isLastRow: boolean, group: SelectionInboxGridRow[]) => {\r\n switch (colName) {\r\n case \"DonorID\":\r\n case \"DonorName\":\r\n return {isFirstRow && row[colName]}\r\n case \"Status\":\r\n return \r\n {isFirstRow && this.statusButton(row, group)}\r\n {isFirstRow && this.setPending(row, group)}\r\n \r\n case \"EventDate\":\r\n return {this.createdDateButton(row)}\r\n case \"DateNotified\":\r\n return {FormatDate(row[colName])}\r\n default:\r\n return {row[colName]}\r\n }\r\n }\r\n\r\n headerColumns = () => this.visibleColumns().map((col: Column, i) => {\r\n const sort = this.page$.value.sort\r\n return (\r\n \r\n {this.state.data && col.filter && col.filter in this.state.data && item.column === col.filter)?.values || []}\r\n sort={sort.column === col.name ? sort.order === \"asc\" ? \"asc\" : \"desc\" : undefined}\r\n items={this.state.data[col.filter as keyof ColumnFilters]?.filter(item => !!item) || []}\r\n onSort={(order?: string) => this.sortGrid(col.name, order)}\r\n onFilter={(items: string[]) => col.filter && this.filterGrid(col.filter, items)}\r\n />}\r\n {(!this.state.data || !col.filter) && (col.label || col.name)}\r\n \r\n )\r\n })\r\n\r\n formatSearchString = (ID: string, value: string): string => {\r\n return ID === \"SSN\" ? FormatSSN(value) : value\r\n }\r\n \r\n refreshGrid = () => this.page$.next({ ...this.page$.value })\r\n\r\n render() {\r\n const emptyRow = NO DATA FOUND\r\n const groupedRows = (data: SelectionInboxGridResponse) => data.Records.map((rows: SelectionInboxGridRow[]) => dataRows(rows))\r\n const dataRows = (rows: SelectionInboxGridRow[]) => rows.map((row: SelectionInboxGridRow, i: number) => {dataColumns(row, i === 0, i === rows.length - 1, rows)})\r\n const dataColumns = (row: SelectionInboxGridRow, isFirstRow: boolean, isLastRow: boolean, group: SelectionInboxGridRow[]) => this.visibleColumns().map((col, i) => this.renderCell(row, col.name as keyof SelectionInboxGridRow, i, isFirstRow, isLastRow, group))\r\n\r\n return <>\r\n \r\n {this.state.employeeDetails && this.state.details && this.setState({ employeeDetails: false }, () => updated && this.refreshGrid())} />}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n x.name != \"Manager\")}\r\n storeKey={StorageKey.SelectionInboxGridColumns}\r\n onClose={() => this.setState({ customizeModal: false })}\r\n onSave={columns => this.setState({ columns: columns as Column[], customizeModal: false })} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.headerColumns()}\r\n \r\n \r\n \r\n {\r\n this.state.loading ?\r\n :\r\n this.state.data?.Records && this.state.data.Records.length > 0 ? groupedRows(this.state.data) : emptyRow\r\n }\r\n \r\n
\r\n {this.state.data && !this.state.loading &&\r\n Total records: {this.state.data.Total}}\r\n {this.state.data && !this.state.loading &&\r\n }\r\n \r\n
\r\n
\r\n
\r\n {!!this.state.excuseRow && }\r\n {!!this.state.unexcuseRow && }\r\n \r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): SelectionInboxProps {\r\n return {\r\n isPortalAdmin: isPortalAdmin(state)\r\n }\r\n}\r\nconst ConnectedSelectionInbox = connect(mapStateToProps)(SelectionInbox)\r\nexport default ConnectedSelectionInbox\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport UserInformation from \"./Model/UserInformation\"\r\n\r\nexport function UserInformationObservable(userName: string, IsOrderSecurityOverride: boolean, exactMatch: boolean = true) {\r\n const requestBody: string = JSON.stringify({ UserName: userName })\r\n return ObservableFromFetch(\"FFOrderUserFileMaintenance/GetUserInformation\", requestBody)\r\n}\r\n\r\nexport function UserNotificationInformationObservable(userName: string, IsOrderSecurityOverride: boolean, exactMatch: boolean = true) {\r\n const requestBody: string = JSON.stringify({ UserName: userName })\r\n return ObservableFromFetch(\"FFOrderUserFileMaintenance/GetUserNotificationInformation\", requestBody)\r\n}\r\n\r\nexport function ActiveUserInformationGetObservable(userName: string, isActivateUser: boolean = false) {\r\n const requestBody: string = JSON.stringify({ UserName: userName, IsActivateUser: isActivateUser })\r\n return ObservableFromFetch(\"FFOrderUserFileMaintenance/GetActiveUserInformation\", requestBody)\r\n}","import AssociatedData from \"./Model/AssociatedData\"\r\nimport RoleData from \"./Model/RoleData\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport interface UpdateUserDetailParams {\r\n ApplicationUserID: number\r\n UserName: string\r\n FirstName: string\r\n LastName: string\r\n EmailAddressList: AssociatedData[]\r\n PhoneNumberList: AssociatedData[]\r\n RoleList: RoleData[]\r\n ModifiedBy: string\r\n ParticipationID: number\r\n Link: string\r\n // Not Used: ParticipantNotificationDetails: any[]\r\n IsUser: boolean\r\n NotificationEventIDs: number[]\r\n NotificationServiceIDs: number[]\r\n NotificationMethodIDs: number[]\r\n IsNotificationEnabled: boolean\r\n isCollectorActive: boolean\r\n timeZoneID: number\r\n Inactive: boolean\r\n AccountID: number\r\n LocationID: number\r\n}\r\n\r\nexport default function UserNotificationInfoUpdate(params: UpdateUserDetailParams) {\r\n const requestBody = JSON.stringify({\r\n ApplicationUserID: params.ApplicationUserID,\r\n EmailAddressList: params.EmailAddressList.map((item) => ({\r\n EmailAddress: item.ContactDetail,\r\n isActive: item.Active,\r\n DeliveryType: \"EMAIL\",\r\n })),\r\n FirstName: params.FirstName,\r\n IsNotificationEnabled: params.IsNotificationEnabled,\r\n IsUser: params.IsUser,\r\n LastName: params.LastName,\r\n Link: params.Link,\r\n ModifiedBy: params.ModifiedBy,\r\n NotificationEventIDs: params.NotificationEventIDs,\r\n NotificationServiceIDs: params.NotificationServiceIDs,\r\n NotificationMethodIDs: params.NotificationMethodIDs,\r\n ParticipationID: params.ParticipationID,\r\n PhoneNumberList: params.PhoneNumberList.map((item) => ({\r\n PhoneNumber: item.ContactDetail,\r\n isActive: item.Active,\r\n DeliveryType: item.DeliveryType,\r\n })),\r\n RoleList: params.RoleList.map((item) => ({\r\n RoleID: item.RoleID,\r\n RoleTitle: item.Title,\r\n IsActive: item.Active,\r\n Locations: item.Locations,\r\n })),\r\n UserName: params.UserName,\r\n timeZoneID: params.timeZoneID,\r\n isCollectorActive: params.isCollectorActive,\r\n Inactive: params.Inactive,\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderUserFileMaintenance/UpdateUserNotification\", requestBody)\r\n}\r\n","import { UpdateUserDetailParams } from \"./UserNotificationInfoUpdate\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function CreateUser(params: UpdateUserDetailParams) {\r\n const requestBody = JSON.stringify({\r\n // ApplicationUserID: params.ApplicationUserID,\r\n EmailAddressList: params.EmailAddressList.map((item) => ({\r\n EmailAddress: item.ContactDetail,\r\n isActive: item.Active,\r\n DeliveryType: \"EMAIL\",\r\n })),\r\n FirstName: params.FirstName,\r\n IsNotificationEnabled: params.IsNotificationEnabled,\r\n // IsUser: params.IsUser,\r\n LastName: params.LastName,\r\n Link: window.location.hostname,\r\n // ModifiedBy: params.ModifiedBy,\r\n NotificationEventIDs: params.NotificationEventIDs,\r\n NotificationServiceIDs: params.NotificationServiceIDs,\r\n NotificationMethodIDs: params.NotificationMethodIDs,\r\n ParticipationID: params.ParticipationID,\r\n PhoneNumberList: params.PhoneNumberList.map((item) => ({\r\n PhoneNumber: item.ContactDetail,\r\n isActive: item.Active,\r\n DeliveryType: item.DeliveryType,\r\n })),\r\n RoleList: params.RoleList.map((item) => ({ RoleID: item.RoleID, RoleTitle: item.Title, IsActive: item.Active })),\r\n UserName: params.UserName,\r\n timeZoneID: params.timeZoneID,\r\n isCollectorActive: params.isCollectorActive,\r\n AccountID: params.AccountID,\r\n LocationID: params.LocationID,\r\n Inactive: params.Inactive,\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderUserFileMaintenance/CreateUser\", requestBody)\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function UserRevoke(applicationUserId: number) {\r\n const requestBody: string = new URLSearchParams({\r\n applicationUserId: applicationUserId.toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderUserFileMaintenance/RevokeUser?\" + requestBody)\r\n}","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function RoleOrderSecurityCheckObservable(roleID: number) {\r\n return ObservableFromFetch(`FFOrderRoleOrderSecurity/CheckRoleOrderSecurity?roleID=${roleID}`)\r\n}\r\n","import { Spinner } from \"react-bootstrap\"\r\n\r\nimport NotificationSectionData from \"../../../api/Notifications/Model/NotificationOptionsData\"\r\nimport ToggleSwitch from \"../../FormattedInputs/ToggleSwitch\"\r\n\r\ninterface NotificationOptionsProps {\r\n description: string\r\n items: NotificationSectionData[]\r\n selectedIDs: number[]\r\n loading?: boolean\r\n onChange: (itemId: number, checked: boolean) => void\r\n}\r\n\r\nfunction NotificationOptions(props: NotificationOptionsProps) {\r\n const { description, items, selectedIDs, loading, onChange } = props\r\n\r\n return (\r\n
\r\n

\r\n {description} {loading && }\r\n

\r\n \r\n \r\n {!loading &&\r\n items?.map((event) => (\r\n \r\n \r\n \r\n \r\n ))}\r\n {!loading && items?.length === 0 && (\r\n \r\n \r\n \r\n )}\r\n \r\n
{event.Description}\r\n onChange(event.Id, checked)}\r\n />\r\n
\r\n No available options found.\r\n
\r\n
\r\n )\r\n}\r\n\r\nNotificationOptions.defaultProps = {\r\n loading: false,\r\n}\r\n\r\nexport default NotificationOptions\r\n","import { useEffect, useState } from \"react\"\r\n\r\nimport { toast } from \"react-toastify\"\r\nimport { finalize } from \"rxjs/operators\"\r\n\r\nimport NotificationOptions from \"./NotificationOptions\"\r\nimport NotificationOptionsData from \"../../../api/Notifications/Model/NotificationOptionsData\"\r\nimport NotificationSectionProps from \"../../../api/Notifications/Model/NotificationSectionProps\"\r\nimport { NotificationEventsGet } from \"../../../api/Notifications/NotificationDetailGet\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\n\r\ninterface NotificationEventSelectionProps extends NotificationSectionProps {\r\n canViewOrderTrackingGrid?: boolean\r\n}\r\n\r\nfunction NotificationEventSelection(props: NotificationEventSelectionProps) {\r\n const { selectedIDs, canViewOrderTrackingGrid, onChange } = props\r\n\r\n const [loading, setLoading] = useState(false)\r\n const [notificationEvents, setNotificationEvents] = useState([])\r\n\r\n useEffect(() => {\r\n setLoading(true)\r\n const subscription = NotificationEventsGet()\r\n .pipe(finalize(() => setLoading(false)))\r\n .subscribe(\r\n (data) => {\r\n setNotificationEvents(\r\n data\r\n .filter((event) => !(!canViewOrderTrackingGrid && event.Title === \"MRO_RES\"))\r\n .map((event) => ({ Id: event.NotificationEventID, Code: event.Title, Description: event.Description }))\r\n )\r\n },\r\n (error) => toast.error(FormatError(error))\r\n )\r\n return () => subscription?.unsubscribe()\r\n }, [canViewOrderTrackingGrid])\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nNotificationEventSelection.defaultProps = {\r\n canViewOrderTrackingGrid: false,\r\n}\r\n\r\nexport default NotificationEventSelection\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport NotificationDetails from \"./Model/NotificationDetails\"\r\nimport NotificationEvent from \"./Model/NotificationEvent\"\r\nimport NotificationMethod from \"./Model/NotificationMethod\"\r\nimport NotificationAccountService from \"./Model/NotificationAccountService\"\r\n\r\nexport default function NotificationDetailGet() {\r\n return ObservableFromFetch(\"FFOrderClinicStatus/GetNotificationDetail\")\r\n}\r\n\r\nexport function NotificationServicesGet(participationId?: number) {\r\n const params = JSON.stringify({\r\n ParticipationId: participationId\r\n })\r\n return ObservableFromFetch(\"WorkforceNotification/GetNotificationServices\", params)\r\n}\r\n\r\nexport function NotificationEventsGet() {\r\n return ObservableFromFetch(\"WorkforceNotification/GetNotificationEvents\")\r\n}\r\n\r\nexport function NotificationMethodsGet() {\r\n return ObservableFromFetch(\"WorkforceNotification/GetNotificationMethods\")\r\n}\r\n","import { useEffect, useState } from \"react\"\r\n\r\nimport { toast } from \"react-toastify\"\r\nimport { finalize } from \"rxjs/operators\"\r\n\r\nimport NotificationOptions from \"./NotificationOptions\"\r\nimport NotificationOptionsData from \"../../../api/Notifications/Model/NotificationOptionsData\"\r\nimport NotificationSectionProps from \"../../../api/Notifications/Model/NotificationSectionProps\"\r\nimport { NotificationMethodsGet } from \"../../../api/Notifications/NotificationDetailGet\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\n\r\nfunction NotificationMethodSelection(props: NotificationSectionProps) {\r\n const { selectedIDs, onChange } = props\r\n\r\n const [loading, setLoading] = useState(false)\r\n const [notificationMethods, setNotificationMethods] = useState([])\r\n\r\n useEffect(() => {\r\n setLoading(true)\r\n const subscription = NotificationMethodsGet()\r\n .pipe(finalize(() => setLoading(false)))\r\n .subscribe(\r\n (data) => {\r\n setNotificationMethods(\r\n data.map((method) => ({\r\n Id: method.NotificationMethodID,\r\n Code: method.Code,\r\n Description: method.Description,\r\n }))\r\n )\r\n },\r\n (error) => toast.error(FormatError(error))\r\n )\r\n return () => subscription?.unsubscribe()\r\n }, [])\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default NotificationMethodSelection\r\n","import { useEffect, useState } from \"react\"\r\n\r\nimport { toast } from \"react-toastify\"\r\nimport { finalize } from \"rxjs/operators\"\r\n\r\nimport NotificationOptions from \"./NotificationOptions\"\r\nimport NotificationOptionsData from \"../../../api/Notifications/Model/NotificationOptionsData\"\r\nimport NotificationSectionProps from \"../../../api/Notifications/Model/NotificationSectionProps\"\r\nimport { NotificationServicesGet } from \"../../../api/Notifications/NotificationDetailGet\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\n\r\ninterface NotificationServiceSelectionProps extends NotificationSectionProps {\r\n participationId?: number\r\n}\r\n\r\nfunction NotificationServiceSelection(props: NotificationServiceSelectionProps) {\r\n const { participationId, selectedIDs, onChange } = props\r\n\r\n const [loading, setLoading] = useState(false)\r\n const [notificationServices, setNotificationServices] = useState([])\r\n\r\n useEffect(() => {\r\n setLoading(true)\r\n const subscription = NotificationServicesGet(participationId)\r\n .pipe(finalize(() => setLoading(false)))\r\n .subscribe(\r\n (data) =>\r\n setNotificationServices(\r\n data.map((method) => ({\r\n Id: method.ServiceID,\r\n Code: method.ServiceCode,\r\n Description: method.ServiceDescription,\r\n }))\r\n ),\r\n (error) => toast.error(FormatError(error))\r\n )\r\n return () => subscription?.unsubscribe()\r\n }, [participationId])\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nNotificationServiceSelection.defaultProps = {\r\n participationId: undefined,\r\n}\r\n\r\nexport default NotificationServiceSelection\r\n","import { Col, Row } from \"react-bootstrap\"\r\n\r\nimport NotificationEventSelection from \"./NotificationEventSelection\"\r\nimport NotificationMethodSelection from \"./NotificationMethodSelection\"\r\nimport NotificationServiceSelection from \"./NotificationServiceSelection\"\r\nimport NotificationSettings from \"../../../api/Notifications/Model/NotificationSettings\"\r\nimport ToggleSwitch from \"../../FormattedInputs/ToggleSwitch\"\r\n\r\ninterface NotificationsSelectionProps extends NotificationSettings {\r\n participationId?: number\r\n canViewOrderTrackingGrid?: boolean\r\n onCheckNotificationService: (notificationServiceId: number, value: boolean) => void\r\n onCheckNotificationEvent: (notificationEventId: number, value: boolean) => void\r\n onCheckNotificationMethod: (notificationMethodId: number, value: boolean) => void\r\n onCheckShowNotifications: (value: boolean) => void\r\n}\r\n\r\nfunction NotificationSelection(props: NotificationsSelectionProps) {\r\n const {\r\n participationId,\r\n showNotifications,\r\n canViewOrderTrackingGrid,\r\n checkedNotificationServiceIDs,\r\n checkedNotificationEventIDs,\r\n checkedNotificationMethodIDs,\r\n onCheckNotificationService,\r\n onCheckNotificationEvent,\r\n onCheckNotificationMethod,\r\n onCheckShowNotifications,\r\n } = props\r\n\r\n return (\r\n <>\r\n \r\n \r\n

\r\n Should we notify you about services and events?\r\n \r\n

\r\n \r\n Note: Your ability to receive a notification will depend on your access level. Contact your Administrator if\r\n you have questions about your access level.\r\n \r\n \r\n
\r\n {showNotifications && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nNotificationSelection.defaultProps = {\r\n canViewOrderTrackingGrid: false,\r\n participationId: undefined,\r\n}\r\n\r\nexport default NotificationSelection\r\n","import React, { Component } from \"react\"\r\nimport { Modal, Row, Col, Button, Form } from \"react-bootstrap\"\r\nimport { FaPlus, FaMinus } from \"react-icons/fa\"\r\nimport { toast } from \"react-toastify\"\r\nimport { EmailRegexp, PhoneRegexp } from \"../../config/Constants\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport AssociatedData from \"../../api/Administration/Model/AssociatedData\"\r\nimport PhoneNumberMaskedInput from \"../FormattedInputs/PhoneNumberMaskedInput\"\r\nimport FormatPhone from \"../../formatters/FormatPhone\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\n\r\nexport const EmptyAssociatedData: AssociatedData = {\r\n Active: false,\r\n ApplicationUserID: 0,\r\n ContactDetail: \"\",\r\n CreatedBy: \"\",\r\n CreatedOn: \"\",\r\n DeliveryType: \"\",\r\n ModifiedBy: \"\",\r\n ModifiedOn: \"\",\r\n saved: false,\r\n hidden: false\r\n}\r\n\r\nexport enum AssociatedDataType {\r\n Email = \"EMAIL\",\r\n Phone = \"PHONE\"\r\n}\r\n\r\nexport enum DeliveryType {\r\n Text = \"TEXT\"\r\n}\r\n\r\ninterface AdditionalAssociatedDataModalProps {\r\n show: boolean\r\n type: AssociatedDataType\r\n data: AssociatedData[]\r\n onClose: () => void\r\n onSave: (data: AssociatedData[]) => void\r\n}\r\n\r\ninterface AdditionalAssociatedDataModalState {\r\n open: boolean\r\n showInactive: boolean\r\n data: AssociatedData[]\r\n isValid: boolean\r\n onlyOneCanBeActive: boolean\r\n showConfirmText: boolean\r\n selectedIndex: number\r\n}\r\n\r\nconst isEmailValid = (value: string) => EmailRegexp.test(value)\r\nconst isPhoneValid = (value: string) => PhoneRegexp.test(value)\r\n\r\nexport default class AdditionalAssociatedDataModal extends Component {\r\n state: AdditionalAssociatedDataModalState = { \r\n open: this.props.show, \r\n showInactive: false, \r\n data: [{ ...EmptyAssociatedData }], \r\n isValid: true, \r\n onlyOneCanBeActive: this.props.type === AssociatedDataType.Phone, \r\n showConfirmText: false, \r\n selectedIndex: -1 \r\n }\r\n\r\n componentDidUpdate(prevProps: AdditionalAssociatedDataModalProps) {\r\n if (this.props.show !== prevProps.show) {\r\n this.setState({ open: this.props.show, showInactive: false })\r\n }\r\n if (this.props.data !== prevProps.data) {\r\n this.setState({ data: [...this.props.data.map(item => ({...item, prevValue: item.ContactDetail})), { ...this.emptyAssociatedData() }] })\r\n }\r\n }\r\n\r\n emptyAssociatedData = () : AssociatedData => this.props.type === AssociatedDataType.Phone ? { ...EmptyAssociatedData, DeliveryType: DeliveryType.Text } : { ...EmptyAssociatedData }\r\n\r\n isValid = () => {\r\n const { data } = this.state\r\n const hasActive = data.filter(item => item.ContactDetail !== \"\").some(item => item.Active)\r\n const isUniq = Array.from(new Set(data.filter(item => !item.hidden).map(item => item.ContactDetail.toLowerCase()))).length === data.filter(item => !item.hidden).length\r\n if (!hasActive) {\r\n toast.error(`Please select at least one active ${this.props.type === AssociatedDataType.Email ? \"email address\" : \"phone number\"}`)\r\n }\r\n if (!isUniq) {\r\n toast.error(`Duplicate ${this.props.type === AssociatedDataType.Email ? \"email address\" : \"phone number\"} found`)\r\n }\r\n return hasActive && isUniq\r\n }\r\n\r\n handleClose = () => {\r\n const itemsOnInit = this.state.data.filter(data => data.ApplicationUserID > 0 || data.saved)\r\n this.resetAttributes(itemsOnInit)\r\n this.setState({ open: false, data: [...itemsOnInit, { ...this.emptyAssociatedData() }], selectedIndex: -1 })\r\n this.props.onClose()\r\n }\r\n\r\n resetAttributes = (items: AssociatedData[]) => {\r\n items.forEach(item => {\r\n item.hidden = false\r\n const relatedItem = this.props.data.find(el => el.ContactDetail === item.prevValue)\r\n if (relatedItem) {\r\n item.Active = relatedItem.Active\r\n item.DeliveryType = relatedItem.DeliveryType\r\n item.ContactDetail = relatedItem.ContactDetail\r\n }\r\n })\r\n }\r\n\r\n deactivateItems = (items: AssociatedData[], activeIndex: number) => {\r\n for (let i = 0; i < items.length; i++) {\r\n if (i != activeIndex) {\r\n items[i].Active = false\r\n }\r\n }\r\n }\r\n\r\n handleSave = () => {\r\n if (this.isValid()) {\r\n var itemsToValidate = this.state.data.filter(data => data.ContactDetail !== \"\" && !data.hidden && !data.saved && data.ApplicationUserID === 0)\r\n if(this.isNeedConfirmText(itemsToValidate)){\r\n this.setState({showConfirmText:true});\r\n return;\r\n }\r\n this.saveData();\r\n }\r\n }\r\n saveData = () => {\r\n var itemsToSave = this.state.data.filter(data => data.ContactDetail !== \"\" && !data.hidden)\r\n itemsToSave.forEach(data => data.saved = true)\r\n this.setState({ open: false, data: [...itemsToSave, { ...this.emptyAssociatedData() }], selectedIndex: -1 })\r\n this.props.onSave(itemsToSave)\r\n\r\n }\r\n\r\n canAddEmail = (email: string): boolean => email.length > 0 && isEmailValid(email)\r\n canAddMobile = (mobile: string): boolean => mobile.length > 0 && isPhoneValid(mobile)\r\n addRow = (index: number) => this.setState({ data: [...this.state.data, { ...this.emptyAssociatedData() }] })\r\n removeRow = (removedData: AssociatedData, index: number) => {\r\n removedData.hidden = true\r\n this.setState({ data: [...this.state.data] })\r\n }\r\n canAddRow = (data: AssociatedData) => !!data.DeliveryType.length && (this.props.type === AssociatedDataType.Email ? this.canAddEmail(data.ContactDetail) : this.canAddMobile(FormatPhone(data.ContactDetail)))\r\n validData = (data: AssociatedData) => !data.ContactDetail.length || this.canAddRow(data)\r\n\r\n changeContactDetail = (value: string, index: number) => {\r\n const newData = [...this.state.data]\r\n newData[index].ContactDetail = this.props.type === AssociatedDataType.Email ? value : value.replace(/\\D/g, \"\")\r\n if (this.props.type === AssociatedDataType.Email) { newData[index].DeliveryType = this.props.type }\r\n this.setState({ data: newData, isValid: this.validData(newData[index]) })\r\n }\r\n\r\n toggleActive = (index: number) => {\r\n const newData = [...this.state.data]\r\n newData[index].Active = !newData[index].Active\r\n if (this.state.onlyOneCanBeActive && newData[index].Active) {\r\n this.deactivateItems(newData, index)\r\n }\r\n this.setState({ data: newData, isValid: this.validData(newData[index]), selectedIndex: index })\r\n }\r\n \r\n toggleTextVoiceOption = (index: number, value: \"TEXT\" | \"VOICE\") => {\r\n if(value === \"TEXT\"){\r\n //this.setState({selectedIndex: index, showConfirmText:true});\r\n //return;\r\n }\r\n this.setTextVoiceOption(index, value);\r\n }\r\n textConfirmed = () => {\r\n this.setState({showConfirmText:false});\r\n this.saveData();\r\n }\r\n textNotConfirmed = () => {\r\n this.setState({showConfirmText:false});\r\n }\r\n setTextVoiceOption = (index: number, value: \"TEXT\" | \"VOICE\") => {\r\n const newData = [...this.state.data]\r\n newData[index].DeliveryType = value\r\n this.setState({ data: newData, isValid: this.validData(newData[index]), selectedIndex: index })\r\n }\r\n\r\n isNeedConfirmText = (items: AssociatedData[]) => {\r\n if (this.props.type != AssociatedDataType.Phone) {\r\n return false;\r\n }\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].Active && items[i].DeliveryType === \"TEXT\") {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n DataRow = (data: AssociatedData, index: number, editable: boolean, verified: boolean = false) => {\r\n if (data.hidden) {\r\n return <>\r\n }\r\n return (\r\n \r\n { this.props.type === AssociatedDataType.Email ? \"Email Address\" : \"Phone\" }\r\n \r\n { this.props.type === AssociatedDataType.Email && this.changeContactDetail(e.target.value, index)} className=\"rounded-pill\" disabled={!editable} /> }\r\n { this.props.type === AssociatedDataType.Phone && this.changeContactDetail(e, index)} isInvalid={false} className=\"rounded-pill\" disabled={!editable} /> }\r\n \r\n ) => this.toggleActive(index)} />\r\n { this.props.type === AssociatedDataType.Phone && \r\n \r\n ) => this.toggleTextVoiceOption(index, \"TEXT\")} \r\n className=\"abc-radio abc-radio-primary\" />\r\n }\r\n { this.props.type === AssociatedDataType.Phone && \r\n \r\n ) => this.toggleTextVoiceOption(index, \"VOICE\")} \r\n className=\"abc-radio abc-radio-primary\" />\r\n }\r\n \r\n { editable && ((this.state.data.length === index + 1) ?\r\n :\r\n ) }\r\n \r\n \r\n )\r\n }\r\n\r\n render = () => {\r\n if (!this.state.open || !this.state.data.length) {\r\n return <>\r\n }\r\n const { showInactive, data } = this.state\r\n const { type } = this.props\r\n const noInactive = !this.props.data.some(data => !data.Active)\r\n return (\r\n <>\r\n this.handleClose()} size=\"xl\" backdrop=\"static\" dialogClassName=\"dark\">\r\n \r\n Enter { type === AssociatedDataType.Email ? \"Additional Email Address\" : \"Phone Number\" }\r\n \r\n \r\n { !showInactive && this.props.data.map((data, index) => data.Active && !!data.CreatedOn.length && this.DataRow(this.state.data[index], index, false)) }\r\n { !showInactive && this.state.data.map((data, index) => !data.CreatedOn.length && this.DataRow(this.state.data[index], index, true)) }\r\n { showInactive && this.props.data.map((data, index) => !data.Active && !!data.CreatedOn.length && this.DataRow(this.state.data[index], index, false)) }\r\n { showInactive && noInactive &&

No Inactive { type === AssociatedDataType.Email ? \"Email Address\" : \"Phone Number\"} Found.

}\r\n { showInactive && \r\n Note: Inactive records will be displayed after the verification.\r\n }\r\n
\r\n \r\n this.setState({ showInactive: !this.state.showInactive })} className=\"mr-auto\" />\r\n \r\n \r\n \r\n
\r\n this.textConfirmed()}\r\n onHide={() => this.textNotConfirmed()} />\r\n \r\n\r\n )\r\n }\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Form, Button, Overlay } from \"react-bootstrap\"\r\nimport { FaCaretDown, FaSearch } from \"react-icons/fa\"\r\nimport { List, ListRowProps } from \"react-virtualized\"\r\nimport Checkbox from \"./Checkbox\"\r\n\r\nexport interface Item {\r\n label: string\r\n value?: string\r\n checked?: boolean\r\n}\r\n\r\nexport interface ListItem {\r\n label: string\r\n value: string\r\n checked: boolean\r\n}\r\n\r\ninterface CheckboxListProps {\r\n title: string\r\n items: Item[]\r\n selectedValues: string[]\r\n onClose?: (items: string[]) => void\r\n className: string\r\n disabled: boolean\r\n}\r\n\r\ninterface CheckboxListState {\r\n open: boolean\r\n searchText: string\r\n items: ListItem[]\r\n filteredItems?: ListItem[]\r\n filtered?: boolean\r\n}\r\n\r\nexport default class CheckboxList extends Component {\r\n state: CheckboxListState = { \r\n open: false,\r\n items: this.props.items.map(i => { return {label: i.label, value: i.value || i.label, checked: !!i.checked } }),\r\n searchText: \"\",\r\n filteredItems: []\r\n }\r\n nameInput: HTMLInputElement | undefined\r\n toggleElement = React.createRef()\r\n listElement = React.createRef()\r\n\r\n componentDidMount() {\r\n this.resetFilterItems(this.props.selectedValues)\r\n }\r\n\r\n componentDidUpdate(prevProps: CheckboxListProps) {\r\n const arraysEqual = (a1: Item[], a2: Item[]): boolean => {\r\n if (a1.length !== a2.length) {\r\n return false\r\n }\r\n const a1Sorted = [...a1].filter(item => !!item).map(item => (item.value || item.label).toLowerCase()).sort()\r\n const a2Sorted = [...a2].filter(item => !!item).map(item => (item.value || item.label).toLowerCase()).sort()\r\n return a1Sorted.every((value, index) => value === a2Sorted[index])\r\n }\r\n if (this.props.disabled !== prevProps.disabled) {\r\n this.resetFilterItems(this.props.selectedValues)\r\n }\r\n if (this.props.title !== prevProps.title) {\r\n this.resetFilterItems(this.props.selectedValues)\r\n } else {\r\n if (!!this.props.selectedValues) {\r\n let selectedItems = this.props.items.filter(i => this.props.selectedValues.includes(i.value || i.label)) || []\r\n let prevSelectedItems = prevProps.items.filter(i => this.props.selectedValues.includes(i.value || i.label)) || []\r\n if (!arraysEqual(selectedItems, prevSelectedItems) || !arraysEqual(this.props.items || [], prevProps.items || [])) {\r\n this.resetFilterItems(this.props.selectedValues)\r\n }\r\n } else {\r\n if (!arraysEqual(this.props.items, prevProps.items)) {\r\n this.resetFilterItems(this.props.selectedValues)\r\n }\r\n }\r\n }\r\n }\r\n\r\n resetFilterItems(checkedValues: string[]) {\r\n const checkAll = checkedValues.length === this.props.items.length\r\n \r\n let items = this.props.items.map(i => { return {label: i.label, value: i.value || i.label, checked: checkedValues.includes(i.value || i.label) } })\r\n items.unshift({label: \"(Select All)\", value: \"#ALL#\", checked: checkAll})\r\n \r\n this.setState({ items: items })\r\n }\r\n\r\n toggleDialog = () => {\r\n this.setState({ open: !this.props.disabled && !this.state.open })\r\n }\r\n setData = () => {\r\n this.props.onClose && this.props.onClose(this.state.items.filter(i => i.checked).map(i => i.value || i.label))\r\n this.toggleDialog()\r\n }\r\n changeTextFilter = (value: string) => this.setState({ searchText: value })\r\n checkboxChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n const checked = e.target.checked\r\n const index = this.state.items.findIndex(item => String(item.value) === value)\r\n if (index === 0) {\r\n this.setState(prevState => {\r\n let newItems = [...prevState.items]\r\n newItems.map(item => item.checked = checked)\r\n return { items: newItems }\r\n })\r\n } else {\r\n this.setState(prevState => {\r\n const newItems = [...prevState.items]\r\n newItems[index].checked = checked\r\n newItems[0].checked = newItems.slice(1).every((item) => item.checked)\r\n return { items: newItems }\r\n })\r\n }\r\n this.listElement.current && this.listElement.current.forceUpdateGrid()\r\n }\r\n\r\n getFilteredItems = () => {\r\n const { items, searchText } = this.state\r\n if (searchText.length > 0) {\r\n return items.filter(item => item.label.toString().toLowerCase().includes(searchText.toLowerCase()))\r\n }\r\n return items\r\n }\r\n\r\n rowRenderer = (props: ListRowProps) => {\r\n const item = this.getFilteredItems()[props.index]\r\n return (\r\n \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n {this.props.title}\r\n \r\n
\r\n \r\n
\r\n
\r\n this.changeTextFilter(e.target.value)} ref={(input: HTMLInputElement) => input && input.focus()} />\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n\r\n static defaultProps = { selectedValues: [], className: \"checkbox-list\", disabled: false }\r\n}\r\n","import { Component } from \"react\"\r\nimport { Modal, Button, Form, Table, Spinner } from \"react-bootstrap\"\r\nimport { Subscription } from \"rxjs\"\r\nimport RoleData from \"../../api/Administration/Model/RoleData\"\r\nimport { toast } from \"react-toastify\"\r\nimport GetAdditionalRoles from \"../../api/Roles/GetAdditionalRole\"\r\nimport Role from \"../../api/Roles/Model/Role\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport TimeZoneData from \"../../api/Administration/Model/TimeZoneData\"\r\nimport AutoFilterLocationsGet, { GetUserLocationsAdministrators } from \"../../api/Location/AutoFilterLocationsGet\";\r\nimport AutoFilterLocation from \"../../api/Location/LocationModel/AutoFilterLocation\";\r\nimport {AppState} from \"../../AppState\";\r\nimport {GetSelectedAssignedClinic} from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\";\r\nimport {connect} from \"react-redux\";\r\nimport {isLocationAdmin, isPortalAdmin} from \"../../authentication/isAdminRole\";\r\nimport UserInformation from \"../../api/Administration/Model/UserInformation\";\r\nimport CheckboxList from \"../CheckboxList\"\r\n\r\ninterface AdditionalRoleModalProps {\r\n show: boolean\r\n data: RoleData[]\r\n onClose: () => void\r\n onSave: (data: RoleData[]) => void\r\n onSaveTimeZoneId: (timeZoneId?: number) => void\r\n timeZoneId?: number\r\n timeZones: TimeZoneData[]\r\n userInfo?: UserInformation\r\n}\r\n\r\ninterface AdditionalRoleModalAuthProps {\r\n companyID: number\r\n isPortalAdmin: boolean\r\n isLocationAdmin: boolean\r\n}\r\n\r\ninterface AdditionalRoleModalState {\r\n open: boolean\r\n loading: boolean\r\n roles: Role[]\r\n data: RoleData[]\r\n timeZoneId?: number\r\n locations: AutoFilterLocation[]\r\n selectedLocations: string[]\r\n}\r\n\r\nconst LocationAdministrator = \"Location Administrator\"\r\n\r\nexport class AdditionalRoleModal extends Component {\r\n state: AdditionalRoleModalState = { open: this.props.show, loading: false, roles: [], data: [], timeZoneId: this.props.timeZoneId, locations: [], selectedLocations: [] }\r\n subscription = new Subscription()\r\n\r\n mapRolesToRoleData = (roles: Role[], data: RoleData[] = this.state.data): RoleData[] => roles.map(role => {\r\n const existData = data.find((data: RoleData) => data.RoleID === role.RoleID)\r\n if (existData) return { ...existData }\r\n else return { RoleID: role.RoleID, Description: role.Description, Level: role.RoleID, Title: role.Title, Active: false }\r\n })\r\n\r\n componentDidMount() {\r\n this.setState({ loading: true })\r\n this.subscription.add(\r\n GetAdditionalRoles().subscribe(\r\n roles => this.setState({ roles: roles, data: this.mapRolesToRoleData(roles) }),\r\n (error: string) => toast.error(error),\r\n () => this.setState({ loading: false })\r\n ))\r\n }\r\n\r\n loadLocations = () => {\r\n if (this.props.userInfo) {\r\n this.subscription.add(\r\n AutoFilterLocationsGet(this.props.userInfo.CompanyID, \"\", \"\", this.props.userInfo.ImplementationID).subscribe(\r\n data => this.setState({locations: data})\r\n )\r\n )\r\n\r\n this.subscription.add(\r\n GetUserLocationsAdministrators(this.props.userInfo.CompanyID, this.props.userInfo.ApplicationUserID).subscribe(\r\n (data: string[]) => {\r\n this.setState({selectedLocations: data})\r\n\r\n const newData: RoleData[] = [...this.state.data]\r\n const locationRole = newData.find(role => role.Description == LocationAdministrator)\r\n if (locationRole) {\r\n locationRole.Active = data.length > 0\r\n locationRole.Locations = data\r\n this.setState({ data: newData })\r\n }\r\n }\r\n )\r\n )\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: AdditionalRoleModalProps) {\r\n if (this.props.show !== prevProps.show) {\r\n this.setState({ open: this.props.show })\r\n }\r\n if (this.props.timeZoneId !== prevProps.timeZoneId) {\r\n this.setState({ timeZoneId: this.props.timeZoneId })\r\n }\r\n\r\n if (this.props.data !== prevProps.data) {\r\n this.setState({ data: this.mapRolesToRoleData(this.state.roles, this.props.data) })\r\n }\r\n\r\n if (this.props.userInfo?.ApplicationUserID !== prevProps.userInfo?.ApplicationUserID) {\r\n this.loadLocations()\r\n }\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ open: false, data: this.mapRolesToRoleData(this.state.roles, this.props.data) })\r\n this.props.onClose()\r\n }\r\n\r\n handleCloseLocations = (items: string[]) => {\r\n const newData: RoleData[] = [...this.state.data]\r\n const locationRole = newData.find(role => role.Description == LocationAdministrator)\r\n if (locationRole) {\r\n locationRole.Active = items.length > 0\r\n locationRole.Locations = items\r\n }\r\n this.setState({data: newData, selectedLocations: items})\r\n }\r\n\r\n handleSave = () => {\r\n const data: RoleData[] = this.state.data\r\n if (data.every(item => !item.Active)) {\r\n toast.error(\"Please select at least one active role\")\r\n return\r\n }\r\n data.forEach(i => { if (i.Title == LocationAdministrator && i.Active) { i.Locations = this.state.selectedLocations } })\r\n\r\n this.props.onSaveTimeZoneId(this.state.timeZoneId == 0 ? this.props.timeZones[0].TimeZoneID : this.state.timeZoneId)\r\n this.props.onSave(data)\r\n }\r\n\r\n handleTimeZoneChange = (event: React.ChangeEvent) => {\r\n this.setState({ timeZoneId: parseInt(event.target.value) })\r\n }\r\n\r\n toggleActive = (roleID: number) => {\r\n const newData: RoleData[] = [...this.state.data]\r\n const updatedRole = newData.find(role => role.RoleID === roleID)\r\n if (updatedRole) {\r\n updatedRole.Active = !updatedRole.Active\r\n this.setState({ data: newData })\r\n }\r\n }\r\n\r\n DataRow = (role: Role, index: number) => {\r\n const data: RoleData[] = this.state.data\r\n const item = data.find((data: RoleData) => data.RoleID === role.RoleID)\r\n const checked = item?.Active\r\n return \r\n {role.Title}\r\n this.toggleActive(role.RoleID)} className=\"mr-auto\" />\r\n \r\n {role.Description === 'Collector' && <>\r\n Timezone \r\n \r\n {this.props.timeZones.map(tz => )}\r\n \r\n \r\n }\r\n {!this.props.isLocationAdmin && role.Description === LocationAdministrator &&\r\n { return { label: i.Name, value: i.AccountID?.toString() }})}\r\n selectedValues={this.state.selectedLocations.map(i => i.toString())}\r\n onClose={items => this.handleCloseLocations(items)}\r\n disabled={!checked}\r\n />\r\n }\r\n \r\n \r\n }\r\n\r\n render = () => {\r\n if (!this.state.open) {\r\n return <>\r\n }\r\n const roles: Role[] = this.state.roles\r\n\r\n return (\r\n \r\n \r\n Enter Additional Roles\r\n \r\n \r\n \r\n \r\n {this.state.loading ? :\r\n roles.map((role, index) => this.DataRow(role, index))}\r\n
RoleStatus 
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): AdditionalRoleModalAuthProps {\r\n const selectedCompany = GetSelectedAssignedClinic(state)\r\n return {\r\n companyID: selectedCompany?.AccountID || 0,\r\n isPortalAdmin: isPortalAdmin(state),\r\n isLocationAdmin: isLocationAdmin(state)\r\n }\r\n}\r\nexport default connect(mapStateToProps)(AdditionalRoleModal)","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport Role from \"./Model/Role\"\r\n\r\nexport default function GetAdditionalRoles() {\r\n return ObservableFromFetch(\"FFOrderUserInvitation/GetAdditionalRole\")\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport OrderSecurityOverrideRecord from \"./Model/OrderSecurityOverrideRecord\"\r\n\r\nexport default function OrderSecurityOverrideUpdateObservable(roleID: number, userID: string, orderSecurityException: OrderSecurityOverrideRecord[]) {\r\n const requestBody: string = JSON.stringify({\r\n RoleID: roleID,\r\n MockApplicationUserIDFrom: userID,\r\n ModifiedBy: \"\", // Kyle: MCP only and does not need to be considered\r\n OrderSecurityException: orderSecurityException\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderRoleOrderSecurity/SaveOrderSecurityException\", requestBody)\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Form, Button, Table } from \"react-bootstrap\"\r\nimport DatePicker from \"react-datepicker\"\r\n\r\nexport interface DatePeriodItem {\r\n id: string\r\n name: string\r\n from: string | null\r\n to: string | null\r\n}\r\n\r\ninterface DatePeriodItemExt extends DatePeriodItem {\r\n fromDate: Date | undefined\r\n toDate: Date | undefined\r\n valid: boolean\r\n}\r\n\r\ninterface SetDatePeriodProps {\r\n show: boolean\r\n items: DatePeriodItem[]\r\n onCancel: () => void\r\n onUpdate: (items: DatePeriodItem[]) => void\r\n}\r\n\r\n\r\ninterface SetDatePeriodState {\r\n items: DatePeriodItemExt[]\r\n}\r\n\r\nexport default class SetDatePeriod extends React.PureComponent {\r\n state: SetDatePeriodState = { items: [] }\r\n\r\n componentDidMount() {\r\n this.updateStateWithItems(this.props.items)\r\n }\r\n\r\n componentDidUpdate(prevProps: SetDatePeriodProps) {\r\n if (this.props.show && !prevProps.show) {\r\n this.updateStateWithItems(this.props.items)\r\n }\r\n }\r\n\r\n updateStateWithItems = (items: DatePeriodItem[]) => {\r\n const parseDate = (date: string | null): Date | undefined => !date || isNaN(Date.parse(date)) ? undefined : new Date(date)\r\n const extItems = items.map(item => ({\r\n ...item,\r\n fromDate: parseDate(item.from),\r\n toDate: parseDate(item.to),\r\n valid: false\r\n }))\r\n extItems.forEach(item => this.setValidity(item))\r\n this.setState({ items: extItems })\r\n }\r\n\r\n setValidity = (item: DatePeriodItemExt) => {\r\n item.valid = (!item.fromDate && !item.toDate) || (!!item.fromDate && !!item.toDate && item.fromDate < item.toDate)\r\n }\r\n\r\n handleDateChange = (id: string, key: \"fromDate\" | \"toDate\", stringKey: \"from\" | \"to\", date: Date | null) => {\r\n const { items } = this.state\r\n const index = items.findIndex(item => item.id === id)\r\n if (index >= 0) {\r\n items[index] = { ...items[index], [key]: date || undefined, [stringKey]: date ? date.toISOString() : null }\r\n this.setValidity(items[index])\r\n }\r\n this.setState({ items: items.map(item => ({ ...item })) })\r\n }\r\n\r\n render() {\r\n const { items } = this.state\r\n const canConfirm = items.every(item => item.valid)\r\n return (\r\n \r\n \r\n SET DATE FORM\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {items.map(item => \r\n \r\n \r\n \r\n )}\r\n \r\n
Email AddressDate FromDate To
\r\n this.handleDateChange(item.id, \"fromDate\", \"from\", date as Date)} />\r\n {item.toDate && !item.fromDate && Date From should be specified}\r\n \r\n this.handleDateChange(item.id, \"toDate\", \"to\", date as Date)} />\r\n {!item.toDate && item.fromDate && Date To should be specified}\r\n {item.toDate && item.fromDate && item.fromDate >= item.toDate && Date To should be later than Date From}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
)\r\n }\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Form, Col, Row, Button, Container, InputGroup, Table, Spinner } from \"react-bootstrap\"\r\nimport { FaAngleDoubleDown, FaAngleDoubleLeft, FaAngleDoubleRight, FaAngleDoubleUp, FaAngleDown, FaAngleUp, FaChevronLeft, FaChevronRight } from \"react-icons/fa\"\r\nimport { toast } from \"react-toastify\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { catchError, filter, map, switchMap } from \"rxjs/operators\"\r\nimport { connect } from \"react-redux\"\r\nimport { isUser } from \"../../authentication/isAdminRole\"\r\nimport { AppState } from \"../../AppState\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport UserInformation from \"../../api/Administration/Model/UserInformation\"\r\nimport { UserNotificationInformationObservable } from \"../../api/Administration/UserInformationGet\"\r\nimport OrderSecurityOverrideData from \"../../api/Administration/Model/OrderSecurityOverrideData\"\r\nimport OrderSecurityOverrideRecord from \"../../api/Administration/Model/OrderSecurityOverrideRecord\"\r\nimport OrderSecurityOverrideGet from \"../../api/Administration/OrderSecurityOverrideGet\"\r\nimport OrderSecurityOverrideUpdate from \"../../api/Administration/OrderSecurityOverrideUpdate\"\r\nimport RoleOrderSecurityCheck from \"../../api/Roles/RoleOrderSecurityCheck\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport SetDatePeriod, { DatePeriodItem } from \"./SetDatePeriod\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\n\r\ninterface OrderSecurityOverrideProps {\r\n show: boolean\r\n userInfo?: UserInformation\r\n onClose: () => void\r\n}\r\n\r\ninterface OrderSecurityOverrideAuthProps {\r\n isUser?: boolean\r\n}\r\n\r\ninterface OrderSecurityOverrideRecordExt extends OrderSecurityOverrideRecord {\r\n id: string\r\n}\r\n\r\ninterface OrderSecurityOverrideState {\r\n userInfo?: UserInformation\r\n loginName: string\r\n loading: boolean\r\n saving: boolean\r\n roleChecking: boolean\r\n loadingOverrides: boolean\r\n showSetDates: boolean\r\n whoCanViewMyOrders: OrderSecurityOverrideRecordExt[]\r\n whoCannotViewMyOrders: OrderSecurityOverrideRecordExt[]\r\n selectionLeft: string[]\r\n selectionRight: string[]\r\n}\r\n\r\nexport class OrderSecurityOverride extends React.PureComponent {\r\n state: OrderSecurityOverrideState = {\r\n loginName: \"\",\r\n loading: false,\r\n saving: false,\r\n roleChecking: false,\r\n loadingOverrides: false,\r\n showSetDates: false,\r\n whoCanViewMyOrders: [],\r\n whoCannotViewMyOrders: [],\r\n selectionLeft: [],\r\n selectionRight: [],\r\n }\r\n\r\n loadUserSubscription?: Subscription\r\n roleSecurityCheckSubscription?: Subscription\r\n loadOrderSecurityOverrideSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n loginName$ = new Subject()\r\n roleCheck$ = new Subject()\r\n override$ = new Subject()\r\n\r\n componentDidMount() {\r\n this.loadUserSubscription = this.loginName$.pipe(\r\n map(name => name.trim()),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n UserNotificationInformationObservable(name, true).pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError((error) => of({ loading: false, errorMessage: FormatError(error) }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: UserInformation[], errorMessage?: string }) => {\r\n this.setState({ loading: o.loading, whoCanViewMyOrders: [], whoCannotViewMyOrders: [], selectionLeft: [], selectionRight: [], userInfo: undefined })\r\n if (o.errorMessage) {\r\n toast.error(o.errorMessage)\r\n } else {\r\n const userInfo = o.result && o.result.length > 0 ? o.result[0] : undefined\r\n this.roleCheck$.next(userInfo)\r\n }\r\n },\r\n (error) => this.handleAPIError(error, { loading: false, userInfo: undefined })\r\n )\r\n this.roleSecurityCheckSubscription = this.roleCheck$.pipe(\r\n filter(userInfo => userInfo !== undefined),\r\n switchMap(userInfo => concat(\r\n of({ loading: true, result: false }),\r\n RoleOrderSecurityCheck(userInfo!.RoleID).pipe(\r\n map(result => ({ loading: false, result: result, userInfo: userInfo })),\r\n catchError((error) => of({ loading: false, result: false, errorMessage: FormatError(error) }))\r\n )))\r\n ).subscribe(\r\n (o: { loading: boolean, result: boolean, userInfo?: UserInformation, errorMessage?: string }) => {\r\n this.setState({ roleChecking: o.loading })\r\n if (o.errorMessage) {\r\n toast.error(o.errorMessage)\r\n } else {\r\n this.override$.next(o.userInfo)\r\n }\r\n },\r\n (error) => this.handleAPIError(error, { roleChecking: false })\r\n )\r\n this.loadOrderSecurityOverrideSubscription = this.override$.pipe(\r\n filter(userInfo => userInfo !== undefined),\r\n switchMap(userInfo => concat(\r\n of({ loading: true }),\r\n OrderSecurityOverrideGet(userInfo!.RoleID, userInfo!.ApplicationUserID).pipe(\r\n map(result => ({ loading: false, result: result, userInfo: userInfo })),\r\n catchError((error) => of({ loading: false, errorMessage: FormatError(error) }))\r\n )))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: OrderSecurityOverrideData, userInfo?: UserInformation, errorMessage?: string }) => {\r\n this.setState({\r\n loadingOverrides: o.loading,\r\n userInfo: o.userInfo,\r\n loginName: o.userInfo ? o.userInfo.UserName : this.state.loginName,\r\n whoCanViewMyOrders: o.result?.WhoCanViewMyOrders?.map(item => ({ ...item, id: Math.random().toString() })) || [],\r\n whoCannotViewMyOrders: o.result?.WhoCannotViewMyOrders?.map(item => ({ ...item, id: Math.random().toString() })) || [],\r\n selectionLeft: [],\r\n selectionRight: []\r\n })\r\n o.errorMessage && toast.error(o.errorMessage)\r\n },\r\n (error) => this.handleAPIError(error, { loadingOverrides: false })\r\n )\r\n if (this.props.show && !!this.props.userInfo) {\r\n this.roleCheck$.next(this.props.userInfo)\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadUserSubscription && this.loadUserSubscription.unsubscribe()\r\n this.roleSecurityCheckSubscription && this.roleSecurityCheckSubscription.unsubscribe()\r\n this.loadOrderSecurityOverrideSubscription && this.loadOrderSecurityOverrideSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: OrderSecurityOverrideProps) {\r\n if (this.props.show && !prevProps.show) {\r\n if (!!this.props.userInfo) {\r\n this.roleCheck$.next(this.props.userInfo)\r\n }\r\n }\r\n }\r\n\r\n handleLoginNameChange = (e: React.ChangeEvent) => this.setState({ loginName: e.target.value })\r\n\r\n move(dir: \"ltr\" | \"rtl\", all?: boolean) {\r\n if (dir === \"ltr\") {\r\n const ids = !!all ? this.state.whoCannotViewMyOrders.map(item => item.id) : this.state.selectionLeft\r\n this.setState({\r\n selectionLeft: [],\r\n whoCannotViewMyOrders: this.state.whoCannotViewMyOrders.filter(item => !ids.includes(item.id)),\r\n whoCanViewMyOrders: [...this.state.whoCanViewMyOrders, ...this.state.whoCannotViewMyOrders.filter(item => ids.includes(item.id))]\r\n })\r\n } else {\r\n const ids = !!all ? this.state.whoCanViewMyOrders.map(item => item.id) : this.state.selectionRight\r\n this.setState({\r\n selectionRight: [],\r\n whoCannotViewMyOrders: [...this.state.whoCannotViewMyOrders, ...this.state.whoCanViewMyOrders.filter(item => ids.includes(item.id))],\r\n whoCanViewMyOrders: this.state.whoCanViewMyOrders.filter(item => !ids.includes(item.id))\r\n })\r\n }\r\n }\r\n\r\n handleUpdate = () => {\r\n const { userInfo, whoCanViewMyOrders } = this.state\r\n if (!userInfo) {\r\n return\r\n }\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = OrderSecurityOverrideUpdate(\r\n userInfo?.RoleID,\r\n userInfo?.MockApplicationUserID,\r\n whoCanViewMyOrders\r\n ).subscribe(\r\n data => {\r\n this.setState({ saving: false })\r\n toast.success(data)\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n handleRightItemClick = (id: string) => {\r\n if (this.state.selectionRight.includes(id)) {\r\n this.setState({ selectionRight: this.state.selectionRight.filter(item => item !== id) })\r\n } else {\r\n this.setState({ selectionRight: [...this.state.selectionRight, id] })\r\n }\r\n }\r\n\r\n handleSetDatesUpdate = (datePeriodItems: DatePeriodItem[]) => {\r\n const { whoCanViewMyOrders } = this.state\r\n whoCanViewMyOrders.forEach(item => {\r\n const datePeriodItem = datePeriodItems.find(datePeriodItem => datePeriodItem.id === item.id)\r\n if (datePeriodItem) {\r\n item.DateFrom = datePeriodItem.from\r\n item.DateTo = datePeriodItem.to\r\n }\r\n })\r\n this.setState({ showSetDates: false, whoCanViewMyOrders: whoCanViewMyOrders.map(item => ({ ...item })) })\r\n }\r\n\r\n render() {\r\n const { userInfo, loginName, loading, saving, roleChecking, loadingOverrides,\r\n whoCanViewMyOrders, whoCannotViewMyOrders, selectionLeft, selectionRight } = this.state\r\n const { isUser } = this.props\r\n\r\n const canFinish = !!whoCanViewMyOrders.length && whoCanViewMyOrders.every(item => !!item.DateFrom && !!item.DateTo)\r\n return (<>\r\n \r\n \r\n Order View Security Override\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n User's Email\r\n \r\n \r\n \r\n {!isUser && this.loginName$.next(this.state.loginName)}\r\n spin={loading || roleChecking || loadingOverrides}\r\n disableOnSpin>Retrieve}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Role\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {isUser && (loading || roleChecking || loadingOverrides) && }\r\n \r\n
\r\n \r\n \r\n \r\n Finish\r\n \r\n
\r\n ({ id: item.id, name: item.UserName, from: item.DateFrom, to: item.DateTo }))}\r\n onCancel={() => this.setState({ showSetDates: false })}\r\n onUpdate={this.handleSetDatesUpdate} />\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): OrderSecurityOverrideAuthProps {\r\n return {\r\n isUser: isUser(state)\r\n }\r\n}\r\n\r\nconst ConnectedOrderSecurityOverride = connect(mapStateToProps, null)(OrderSecurityOverride)\r\nexport default ConnectedOrderSecurityOverride","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport OrderSecurityOverrideData from \"./Model/OrderSecurityOverrideData\"\r\n\r\nexport default function OrderSecurityOverrideGetObservable(roleID: number, userID: number) {\r\n const requestBody: string = JSON.stringify({\r\n RoleID: roleID,\r\n ApplicationUserIDFrom: userID\r\n })\r\n return ObservableFromFetch(\"FFOrderRoleOrderSecurity/GetOrderSecurityOverride\", requestBody)\r\n}\r\n","import * as React from \"react\"\r\nimport { Button, Col, Form, Modal, Row, Spinner } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { catchError, map, switchMap } from \"rxjs/operators\"\r\nimport {isCompanyAdmin, isLocationAdmin, isPortalAdmin, isSiteAdmin, isUser} from \"../../authentication/isAdminRole\"\r\nimport { AppState } from \"../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport UserInformation from \"../../api/Administration/Model/UserInformation\"\r\nimport AssociatedData from \"../../api/Administration/Model/AssociatedData\"\r\nimport { UserInformationObservable, UserNotificationInformationObservable } from \"../../api/Administration/UserInformationGet\"\r\nimport UserNotificationInfoUpdate, { UpdateUserDetailParams } from \"../../api/Administration/UserNotificationInfoUpdate\"\r\nimport CreateUser from \"../../api/Administration/CreateUser\"\r\nimport UserPasswordReset from \"../../api/Administration/UserPasswordReset\"\r\nimport UserRevoke from \"../../api/Administration/UserRevoke\"\r\nimport RoleOrderSecurityCheck from \"../../api/Roles/RoleOrderSecurityCheck\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\nimport NotificationSelection from \"./Notification/NotificationSelection\"\r\nimport AdditionalAssociatedDataModal, { AssociatedDataType, EmptyAssociatedData } from \"./AdditionalAssociatedDataModal\"\r\nimport AdditionalRoleModal from \"./AdditionalRoleModal\"\r\nimport OrderSecurityOverride from \"../Administration/OrderSecurityOverride\"\r\nimport FormatPhone from \"../../formatters/FormatPhone\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { getUserNameForSelectedCompany, RoleIdForSelectedCompany } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport TimeZoneListGet from \"../../api/Administration/TimeZoneListGet\"\r\nimport TimeZoneData from \"../../api/Administration/Model/TimeZoneData\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport { EmailRegexp, PhoneRegexp, MaxFailedLoginAttempts } from \"../../config/Constants\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport Role from \"../../api/Roles/Model/Role\"\r\nimport { GetRolesToInvite } from \"../../api/Roles/UserRolesGet\"\r\nimport MaskedInput from \"react-maskedinput\"\r\nimport CheckExistingUser from \"../../api/Invitation/CheckExistingUser\"\r\nimport RoleData from \"../../api/Administration/Model/RoleData\"\r\nimport AutoFilterCompany from '../../api/Companies/CompanyModel/AutoFilterCompany'\r\nimport CompanyInput from '../FormattedInputs/CompanyInput'\r\nimport AutoFilterCompaniesGet from '../../api/Companies/AutoFilterCompaniesGet';\r\nimport AutoFilterLocation from \"../../api/Location/LocationModel/AutoFilterLocation\"\r\nimport AutoFilterRegion from \"../../api/Regions/Model/AutoFilterRegion\"\r\nimport AutoFilterLocationsGet from \"../../api/Location/AutoFilterLocationsGet\"\r\nimport ResetLoginAttempts from \"../../api/Administration/ResetLoginAttempts\"\r\nimport RemoveDuplicateRoles from \"../../api/Administration/RemoveDuplicateRoles\"\r\nimport DeleteUser, { DeleteRole } from \"../../api/Administration/DeleteUser\"\r\nimport NotificationSettings from \"../../api/Notifications/Model/NotificationSettings\"\r\n\r\nexport enum UserInfoMode {\r\n Team = \"Team\",\r\n Personal = \"Personal\"\r\n}\r\n\r\ninterface UserInfoProps {\r\n show: boolean\r\n LoginName?: string\r\n LoginAttempts?: number\r\n details?: UserInformation\r\n mode: UserInfoMode\r\n onClose?: (updated: boolean) => void\r\n participationId?: number\r\n locationId?: number\r\n timeZoneId?: number\r\n roleId?: number\r\n showNewUser?: boolean\r\n}\r\n\r\ninterface UserInfoAuthProps {\r\n isLocationAdmin?: boolean\r\n isCompanyAdmin?: boolean\r\n isPortalAdmin?: boolean\r\n isSiteAdmin?: boolean\r\n isUser?: boolean\r\n UserName?: string\r\n PrimaryRoleID?: number\r\n}\r\n\r\ninterface UserInfoValidity {\r\n emailValid: boolean\r\n phoneValid: boolean\r\n lastNameValid: boolean\r\n firstNameValid: boolean\r\n roleValid: boolean\r\n companyValid: boolean\r\n}\r\n\r\nexport interface UserInfoData extends NotificationSettings {\r\n userInfo?: UserInformation\r\n firstName?: string\r\n lastName?: string\r\n email: string\r\n phone: string\r\n roleId: number\r\n roles?: Role[]\r\n inactive: boolean\r\n companies?: AutoFilterCompany[]\r\n locations?: AutoFilterLocation[]\r\n}\r\n\r\ninterface UserInfoState extends UserInfoData, UserInfoValidity {\r\n showRevokeConfirmation: boolean\r\n showResetPasswordConfirmation: boolean\r\n showResetLoginAttemptsConfirmation: boolean\r\n showRemoveDuplicateRolesConfirmation: boolean\r\n showDeleteUserConfirmation: boolean\r\n showDeleteRoleConfirmation: boolean\r\n canShowDetailsToPerson: boolean\r\n showOrderSecurityOverride: boolean\r\n loading: boolean\r\n saving: boolean\r\n revoking: boolean\r\n resettingPassword: boolean\r\n performingResetLoginAttempts: boolean\r\n performingRemoveDuplicateRoles: boolean\r\n performingDeleteUser: boolean\r\n performingDeleteRole: boolean\r\n showAdditionalPhone: boolean\r\n showAdditionalRoles: boolean\r\n participationId?: number\r\n timeZoneId?: number\r\n timeZones: TimeZoneData[]\r\n emailChecked: boolean\r\n emailAvailable: boolean\r\n selectedCompany?: AutoFilterCompany\r\n selectedLocation?: AutoFilterLocation\r\n}\r\n\r\nexport class UserInfo extends React.Component {\r\n emptyData: UserInfoData = {\r\n userInfo: undefined,\r\n firstName: \"\",\r\n lastName: \"\",\r\n email: \"\",\r\n phone: \"\",\r\n roleId: 0,\r\n inactive: false,\r\n showNotifications: false,\r\n checkedNotificationServiceIDs: [],\r\n checkedNotificationEventIDs: [],\r\n checkedNotificationMethodIDs: [],\r\n }\r\n emptyState: UserInfoState = {\r\n ...this.emptyData,\r\n lastNameValid: true,\r\n firstNameValid: true,\r\n emailValid: true,\r\n phoneValid: true,\r\n roleValid: true,\r\n companyValid: true,\r\n showRevokeConfirmation: false,\r\n showResetPasswordConfirmation: false,\r\n showResetLoginAttemptsConfirmation: false,\r\n showRemoveDuplicateRolesConfirmation: false,\r\n showDeleteUserConfirmation: false,\r\n showDeleteRoleConfirmation: false,\r\n canShowDetailsToPerson: false,\r\n showOrderSecurityOverride: false,\r\n loading: false,\r\n saving: false,\r\n revoking: false,\r\n resettingPassword: false,\r\n performingResetLoginAttempts: false,\r\n performingRemoveDuplicateRoles: false,\r\n performingDeleteUser: false,\r\n performingDeleteRole: false,\r\n showAdditionalPhone: false,\r\n showAdditionalRoles: false,\r\n timeZoneId: this.props.timeZoneId,\r\n participationId: this.props.participationId,\r\n timeZones: [],\r\n emailChecked: false,\r\n emailAvailable: false,\r\n selectedCompany: undefined\r\n }\r\n state: UserInfoState = { ...this.emptyState }\r\n\r\n rolesTypeahead = React.createRef>()\r\n loadUserSubscription?: Subscription\r\n roleSecurityCheckSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n userRevokeSubscription?: Subscription\r\n userPasswordResetSubscription?: Subscription\r\n userRolesSubscription?: Subscription\r\n existSubscription?: Subscription\r\n companiesSubscription?: Subscription\r\n locationsSubscription?: Subscription\r\n removeRoleSubscription?: Subscription\r\n\r\n loginName$ = new Subject()\r\n roleID$ = new Subject()\r\n\r\n timeZoneSubscription = new Subscription()\r\n\r\n componentDidMount() {\r\n this.timeZoneSubscription.add(\r\n TimeZoneListGet().subscribe(\r\n (results: TimeZoneData[]) => {\r\n this.setState({ timeZones: results })\r\n },\r\n () => { }\r\n )\r\n )\r\n\r\n this.userRolesSubscription = GetRolesToInvite().subscribe(data => this.setState({ roles: data }))\r\n\r\n const observable = this.props.mode === UserInfoMode.Personal ? UserInformationObservable : UserNotificationInformationObservable\r\n this.loadUserSubscription = this.loginName$.pipe(\r\n map(name => name.trim()),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n observable(name, false).pipe(\r\n map(result => ( { loading: false, result: result } )),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: UserInformation[] }) => {\r\n this.setState({ loading: o.loading })\r\n if (o.result) {\r\n this.setState({ ...this.mapUserInfo(o.result.find(i => i.ParticipationID === this.props.participationId))})\r\n }\r\n },\r\n error => this.handleAPIError(error, { loading: false, userInfo: undefined })\r\n )\r\n if (this.props.isUser && !this.props.isSiteAdmin) {\r\n this.roleSecurityCheckSubscription = this.roleID$.pipe(\r\n switchMap(roleID => concat(\r\n of(false),\r\n RoleOrderSecurityCheck(roleID).pipe(\r\n catchError(_ => of(false))\r\n )))\r\n ).subscribe(\r\n result => this.setState({ canShowDetailsToPerson: result }),\r\n error => this.handleAPIError(error, { canShowDetailsToPerson: false })\r\n )\r\n }\r\n if (this.props.show && !!this.props.LoginName) {\r\n this.loginName$.next(this.props.LoginName)\r\n }\r\n\r\n if (this.props.isPortalAdmin || this.props.isCompanyAdmin) {\r\n this.companiesSubscription = AutoFilterCompaniesGet(\"\").subscribe(\r\n (results: AutoFilterCompany[]) => {\r\n if (this.props.isCompanyAdmin && results.length > 0) {\r\n this.loadAllLocations(results[0], undefined)\r\n }\r\n this.setState({ companies: results })\r\n }\r\n )\r\n }\r\n }\r\n\r\n loadAllLocations = (company?: AutoFilterCompany, region?: AutoFilterRegion) => {\r\n this.locationsSubscription = AutoFilterLocationsGet(company?.AccountID || 0, region?.Code || \"\", \"\").subscribe(\r\n data => {\r\n this.setState({ locations: data, selectedLocation: undefined })\r\n }\r\n )\r\n }\r\n\r\n handleLocationChange = (event: React.ChangeEvent) => {\r\n let location = (this.state.locations || []).find(l => l.AccountID === Number(event.target.value))\r\n this.setState({ selectedLocation: location })\r\n }\r\n\r\n componentWillUnmount() {\r\n this.saveSubscription?.unsubscribe();\r\n this.userRevokeSubscription?.unsubscribe();\r\n this.userPasswordResetSubscription?.unsubscribe();\r\n this.loadUserSubscription?.unsubscribe();\r\n this.roleSecurityCheckSubscription?.unsubscribe();\r\n this.timeZoneSubscription?.unsubscribe();\r\n this.userRolesSubscription?.unsubscribe();\r\n this.existSubscription?.unsubscribe();\r\n this.companiesSubscription?.unsubscribe();\r\n this.locationsSubscription?.unsubscribe();\r\n this.removeRoleSubscription?.unsubscribe();\r\n }\r\n\r\n componentDidUpdate(prevProps: UserInfoProps, prevState: UserInfoState) {\r\n if (!this.props.show && prevProps.show) {\r\n this.timeZoneSubscription.add(\r\n TimeZoneListGet().subscribe(\r\n (results: TimeZoneData[]) => this.setState({ timeZones: results }),\r\n () => { }\r\n )\r\n )\r\n this.setState({ ...this.emptyState })\r\n }\r\n if (this.props.show) {\r\n if (!!this.props.LoginName && prevProps.LoginName !== this.props.LoginName) {\r\n this.loginName$.next(this.props.LoginName)\r\n }\r\n }\r\n if (!!this.state.userInfo && this.state.userInfo?.RoleID !== prevState.userInfo?.RoleID) {\r\n this.roleID$.next(this.state.userInfo.RoleID)\r\n }\r\n if (this.props.timeZoneId !== prevProps.timeZoneId) {\r\n this.setState({ timeZoneId: this.props.timeZoneId === 0 ? this.state.timeZones[0].TimeZoneID : this.props.timeZoneId })\r\n }\r\n }\r\n\r\n performResetLoginAttempts = () => {\r\n this.setState({ performingResetLoginAttempts: true })\r\n ResetLoginAttempts(this.props.LoginName || \"\").subscribe(\r\n data => {\r\n this.setState({ performingResetLoginAttempts: false })\r\n this.props.onClose && this.props.onClose(true)\r\n toast.success(data)\r\n },\r\n error => this.handleAPIError(error, { performingResetLoginAttempts: false })\r\n )\r\n }\r\n\r\n performRemoveDuplicateRoles = () => {\r\n this.setState({ performingRemoveDuplicateRoles: true })\r\n RemoveDuplicateRoles(this.props.LoginName || \"\").subscribe(\r\n data => {\r\n this.setState({ performingRemoveDuplicateRoles: false })\r\n this.props.onClose && this.props.onClose(true)\r\n toast.success(data)\r\n },\r\n error => this.handleAPIError(error, { performingRemoveDuplicateRoles: false })\r\n )\r\n }\r\n\r\n performDeleteUser = () => {\r\n this.setState({ performingDeleteUser: true })\r\n DeleteUser(this.props.LoginName || \"\").subscribe(\r\n data => {\r\n this.setState({ performingDeleteUser: false })\r\n this.props.onClose && this.props.onClose(true)\r\n toast.success(data)\r\n },\r\n error => this.handleAPIError(error, { performingDeleteUser: false })\r\n )\r\n }\r\n\r\n performDeleteRole = () => {\r\n this.setState({ performingDeleteUser: true })\r\n this.removeRoleSubscription = DeleteRole(this.state.userInfo?.ApplicationUserID || 0, this.props.participationId || 0).subscribe(\r\n data => {\r\n this.setState({ performingDeleteUser: false })\r\n this.props.onClose && this.props.onClose(true)\r\n toast.success(data)\r\n },\r\n error => this.handleAPIError(error, { performingDeleteUser: false, showDeleteRoleConfirmation: false })\r\n )\r\n }\r\n\r\n mapUserInfo = (info?: UserInformation): UserInfoData => {\r\n if (!info) {\r\n return { ...this.emptyData }\r\n }\r\n\r\n const email = info.AssociatedEmail.filter(email => email.Active)[0]?.ContactDetail || \"\"\r\n const phone = FormatPhone(info?.AssociatedPhone.filter(phone => phone.Active)[0]?.ContactDetail || \"\")\r\n\r\n return {\r\n userInfo: info!,\r\n firstName: info.FirstName,\r\n lastName: info.LastName,\r\n email: email,\r\n phone: phone,\r\n roleId: info.RoleID,\r\n inactive: !info.Active,\r\n showNotifications: info.IsNotificationEnabled,\r\n checkedNotificationServiceIDs: info.NotificationServiceIDs,\r\n checkedNotificationEventIDs: info.NotificationEventIDs,\r\n checkedNotificationMethodIDs: info.NotificationMethodIDs\r\n }\r\n }\r\n\r\n isNameValid = (value?: string) => !!value && value.trim().length > 0\r\n isEmailValid = (value: string) => EmailRegexp.test(value)\r\n isPhoneValid = (value: string) => PhoneRegexp.test(value)\r\n\r\n handleFirstNameChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n this.setState({ firstName: value, firstNameValid: this.isNameValid(value) })\r\n }\r\n\r\n handleLastNameChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n this.setState({ lastName: value, lastNameValid: this.isNameValid(value) })\r\n }\r\n\r\n handleRoleChange = (event: React.ChangeEvent) => {\r\n const role = Number(event.target.value)\r\n this.setState({ roleId: role, roleValid: role > 0 })\r\n }\r\n\r\n handlePhoneChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n const phoneIndex = this.state.userInfo?.AssociatedPhone.findIndex(phone => phone.Active) || 0\r\n const items = this.state.userInfo?.AssociatedPhone || []\r\n const newPhoneArray: AssociatedData[] = [\r\n ...items.slice(0, phoneIndex),\r\n {\r\n ...items[phoneIndex],\r\n ContactDetail: value.replace(/-/g, \"\"),\r\n },\r\n ...items.slice(phoneIndex + 1)\r\n ]\r\n this.setState({ phone: value, userInfo: {...this.state.userInfo, AssociatedPhone: newPhoneArray } as UserInformation })\r\n }\r\n\r\n handlePhoneChangeByEditModal = (data: AssociatedData[]) => {\r\n const newActivePhone = FormatPhone(data.find(phone => phone.Active)?.ContactDetail || \"\")\r\n\r\n this.setState(prev => ({\r\n ...prev,\r\n showAdditionalPhone: false,\r\n phone: newActivePhone !== \"\" && prev.phone !== newActivePhone ? newActivePhone : prev.phone,\r\n userInfo: { ...prev.userInfo, AssociatedPhone: data || [] } as UserInformation\r\n }))\r\n } \r\n\r\n isLocationAdministrator = () => {\r\n let isLocationAdmin = false\r\n if (this.state.roleId > 0) {\r\n isLocationAdmin = this.state.roles?.find(r => r.Title === 'Location Administrator' && r.RoleID === this.state.roleId) !== undefined\r\n }\r\n return isLocationAdmin\r\n }\r\n\r\n handleEmailChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value\r\n this.setState({\r\n email: value,\r\n emailValid: this.isEmailValid(value),\r\n emailChecked: false,\r\n emailAvailable: false\r\n })\r\n }\r\n\r\n handleEmailBlur = (e: React.FocusEvent) => {\r\n if (!this.props.showNewUser) {\r\n return true\r\n }\r\n const email = e.target.value\r\n if (this.isEmailValid(email)) {\r\n const requestParams = { UserName: email }\r\n this.existSubscription = CheckExistingUser(requestParams).subscribe(\r\n (data?: string) => {\r\n this.setState({ emailAvailable: !data, emailChecked: true })\r\n },\r\n (error: Error | APIError) => {\r\n this.setState({ emailAvailable: false, emailChecked: false })\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n )\r\n }\r\n }\r\n\r\n handleInactiveChange = (e: React.ChangeEvent) => this.setState({ inactive: e.target.checked })\r\n\r\n handleCompanyChange = (selected: AutoFilterCompany) => {\r\n this.setState({ selectedCompany: selected })\r\n this.loadAllLocations(selected, undefined)\r\n }\r\n\r\n isValid = (existingUser: boolean = false) => {\r\n const { firstName, lastName, email, phone, roleId, selectedCompany } = this.state\r\n const validity: UserInfoValidity = {\r\n lastNameValid: existingUser || this.isNameValid(lastName),\r\n firstNameValid: existingUser || this.isNameValid(firstName),\r\n emailValid: this.isEmailValid(email),\r\n phoneValid: existingUser || this.isPhoneValid(phone),\r\n roleValid: roleId > 0,\r\n companyValid: !this.props.isPortalAdmin || !this.props.showNewUser || !!selectedCompany\r\n }\r\n return Object.values(validity).every((valid: boolean) => valid)\r\n }\r\n\r\n handleSave = () => {\r\n const { firstName, lastName, email, phone, roleId, timeZoneId, inactive, emailChecked, emailAvailable } = this.state\r\n const { isUser, isSiteAdmin, showNewUser } = this.props\r\n const emailExists = emailChecked && !emailAvailable && showNewUser\r\n\r\n if (!this.isValid(emailExists)) {\r\n return\r\n }\r\n this.setState({ saving: true })\r\n const { userInfo, showNotifications, checkedNotificationServiceIDs, checkedNotificationEventIDs, checkedNotificationMethodIDs } = this.state\r\n const isCollectorActive = (userInfo?.AssociatedRole || []).some(role => role.Active === true && role.Description === 'Collector')\r\n\r\n const emailData: AssociatedData = { ...EmptyAssociatedData, ContactDetail: email, Active: true, DeliveryType: AssociatedDataType.Email }\r\n const phoneData: AssociatedData = { ...EmptyAssociatedData, ContactDetail: phone.replace(/-/g, \"\"), Active: true, DeliveryType: AssociatedDataType.Phone }\r\n const role = this.state.roles?.find(role => role.RoleID === roleId)\r\n const roleData: RoleData = { Active: true, Description: role?.Description || \"\", Level: role?.Level || 0, RoleID: role?.RoleID || 0, Title: role?.Title || \"\" }\r\n\r\n const updateData: UpdateUserDetailParams = {\r\n Inactive: inactive,\r\n ApplicationUserID: userInfo?.ApplicationUserID || 0,\r\n UserName: showNewUser ? email : userInfo?.UserName || \"\",\r\n FirstName: firstName || \"\",\r\n LastName: lastName || \"\",\r\n ModifiedBy: this.props.UserName || \"\",\r\n ParticipationID: userInfo?.ParticipationID || 0,\r\n EmailAddressList: showNewUser ? [emailData] : userInfo?.AssociatedEmail.filter(data => data.ContactDetail !== \"\") || [],\r\n PhoneNumberList: showNewUser ? [phoneData] : userInfo?.AssociatedPhone.filter(data => data.ContactDetail !== \"\") || [],\r\n RoleList: showNewUser ? [roleData] : userInfo?.AssociatedRole || [],\r\n NotificationEventIDs: showNotifications ? checkedNotificationEventIDs : [],\r\n NotificationServiceIDs: showNotifications ? checkedNotificationServiceIDs : [],\r\n NotificationMethodIDs: showNotifications ? checkedNotificationMethodIDs : [],\r\n Link: userInfo?.Link || \"\",\r\n IsUser: this.props.mode === UserInfoMode.Personal && (isUser && !isSiteAdmin) || false,\r\n IsNotificationEnabled: showNotifications,\r\n isCollectorActive: isCollectorActive || false,\r\n timeZoneID: timeZoneId || 0,\r\n AccountID: this.state.selectedCompany?.AccountID || 0,\r\n LocationID: this.state.selectedLocation?.AccountID || 0\r\n }\r\n\r\n const SaveMethod = (updateData: UpdateUserDetailParams) => userInfo?.ApplicationUserID ? UserNotificationInfoUpdate(updateData) : CreateUser(updateData)\r\n\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = SaveMethod(updateData).subscribe(\r\n data => {\r\n this.setState({ saving: false })\r\n toast.success(data)\r\n if (this.props.showNewUser) {\r\n this.props.onClose && this.props.onClose(true)\r\n } else {\r\n if (this.props.mode === UserInfoMode.Personal) {\r\n this.state.userInfo && this.loginName$.next(this.state.userInfo.UserName)\r\n } else {\r\n this.props.onClose && this.props.onClose(true)\r\n }\r\n }\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n performRevoke = () => {\r\n this.setState({ revoking: true, showRevokeConfirmation: false })\r\n this.userRevokeSubscription && this.userRevokeSubscription.unsubscribe()\r\n this.userRevokeSubscription = UserRevoke(this.state.userInfo?.ApplicationUserID || 0).subscribe(\r\n data => {\r\n this.setState({ revoking: false })\r\n toast.success(data)\r\n this.props.onClose && this.props.onClose(true)\r\n },\r\n error => this.handleAPIError(error, { revoking: false })\r\n )\r\n }\r\n\r\n performPasswordReset = () => {\r\n this.setState({ resettingPassword: true, showResetPasswordConfirmation: false })\r\n this.userPasswordResetSubscription && this.userPasswordResetSubscription.unsubscribe()\r\n this.userPasswordResetSubscription = UserPasswordReset(this.props.LoginName || \"\", this.state.userInfo?.Link || \"\").subscribe(\r\n data => {\r\n this.setState({ resettingPassword: false })\r\n toast.success(data)\r\n },\r\n error => this.handleAPIError(error, { resettingPassword: false })\r\n )\r\n }\r\n\r\n performClose = () => this.props.onClose && this.props.onClose(false)\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n handleChangeNotificationService = (notificationServiceId: number, value: boolean) => {\r\n this.setState((prev) => ({...prev, checkedNotificationServiceIDs: value\r\n ? [...prev.checkedNotificationServiceIDs, notificationServiceId]\r\n : prev.checkedNotificationServiceIDs.filter(id => id !== notificationServiceId)})\r\n )\r\n }\r\n\r\n handleChangeNotificationEvent = (notificationEventId: number, value: boolean) => {\r\n this.setState((prev) => ({...prev, checkedNotificationEventIDs: value\r\n ? [...prev.checkedNotificationEventIDs, notificationEventId]\r\n : prev.checkedNotificationEventIDs.filter(id => id !== notificationEventId)})\r\n )\r\n }\r\n\r\n handleChangeNotificationMethod = (notificationMethodId: number, value: boolean) => {\r\n this.setState((prev) => ({...prev, checkedNotificationMethodIDs: value\r\n ? [...prev.checkedNotificationMethodIDs, notificationMethodId]\r\n : prev.checkedNotificationMethodIDs.filter(id => id !== notificationMethodId)})\r\n )\r\n }\r\n\r\n handleChangeShowNotifications = (value: boolean) => {\r\n this.setState((prev) => ({...prev, showNotifications: value}))\r\n }\r\n\r\n render() {\r\n const { isCompanyAdmin, isPortalAdmin, isUser, isSiteAdmin, LoginName, showNewUser } = this.props\r\n const { loading, saving, firstName, firstNameValid, lastName, lastNameValid, roleId, roleValid, email, emailAvailable, emailChecked, emailValid,\r\n roles, inactive, userInfo, revoking, resettingPassword, canShowDetailsToPerson, showAdditionalPhone, showAdditionalRoles, \r\n performingResetLoginAttempts, performingRemoveDuplicateRoles, performingDeleteUser, performingDeleteRole, selectedLocation } = this.state\r\n const disableButtons = loading || !userInfo\r\n const { mode } = this.props\r\n const isPersonal = mode === UserInfoMode.Personal\r\n const title = isPersonal ? \"MY INFORMATION\" : \"OUR TEAM'S INFORMATION\"\r\n const readonlyUserName = isPersonal || (isUser && !isSiteAdmin)\r\n const phone = FormatPhone(this.state.phone)\r\n const phoneValid = isSiteAdmin ? PhoneRegexp.test(phone) : true\r\n const locationRequired = this.props.isPortalAdmin ? \"required\" : \"\"\r\n const isShowAdditionalRole = !isPersonal && !isCompanyAdmin && !isPortalAdmin\r\n const emailExists = emailChecked && !emailAvailable && showNewUser\r\n const disableSaveButton = !emailExists ? loading || !this.isValid() || (!emailAvailable && showNewUser) || !phoneValid : loading || !this.isValid(true)\r\n const roleID = this.props.roleId || this.state.roleId\r\n \r\n const formRows = <>\r\n {isSiteAdmin && \r\n Failed Login Attempts: {this.props.LoginAttempts} of {MaxFailedLoginAttempts}\r\n \r\n this.setState({ showResetLoginAttemptsConfirmation: true })} spin={performingResetLoginAttempts} disableOnSpin>Reset\r\n \r\n }\r\n {isSiteAdmin && \r\n Duplicate Roles\r\n \r\n this.setState({ showRemoveDuplicateRolesConfirmation: true })} spin={performingRemoveDuplicateRoles} disableOnSpin>Remove\r\n \r\n }\r\n {isSiteAdmin && \r\n Delete User\r\n \r\n this.setState({ showDeleteUserConfirmation: true })} spin={performingDeleteUser} disableOnSpin>Delete\r\n \r\n }\r\n {!isPersonal && !emailExists && \r\n \r\n \r\n \r\n }\r\n {!isPersonal && !showNewUser && \r\n Login Name\r\n \r\n \r\n \r\n }\r\n \r\n User's Email\r\n \r\n {isPersonal && }\r\n {!isPersonal && }\r\n {showNewUser && <>\r\n {!emailValid && Please enter valid email}\r\n {emailChecked && emailAvailable && < Form.Control.Feedback type=\"valid\" className=\"d-block\">Email is available}\r\n {emailExists && Email is already in use}\r\n }\r\n \r\n \r\n {!emailExists && \r\n Personal Phone\r\n \r\n {isSiteAdmin || showNewUser && }\r\n {!isSiteAdmin && !showNewUser && }\r\n \r\n \r\n \r\n \r\n }\r\n {!emailExists && \r\n First Name\r\n \r\n \r\n \r\n {!isPersonal && \r\n this.setState({ showResetPasswordConfirmation: true })} spin={resettingPassword} disableOnSpin>Reset Password\r\n }\r\n }\r\n {!emailExists && \r\n Last Name\r\n \r\n \r\n \r\n }\r\n \r\n User's Role(s)\r\n \r\n {!showNewUser && 0 ? userInfo?.AssociatedRole.find(i => i.RoleID === roleID)?.Title : \"\"} className=\"bg-white\" />}\r\n {showNewUser && \r\n \r\n {roles?.map((role: Role) => )}\r\n }\r\n \r\n {isShowAdditionalRole && \r\n \r\n }\r\n {!isPersonal && (isCompanyAdmin || isPortalAdmin) &&\r\n \r\n this.setState({ showDeleteRoleConfirmation: true })} spin={performingDeleteRole} disableOnSpin>Delete Role\r\n }\r\n \r\n {showNewUser && this.props.isPortalAdmin && \r\n Company\r\n \r\n this.handleCompanyChange(items[0])} placeholder=\"Choose a company...\" />\r\n \r\n }\r\n {showNewUser && ((this.props.isPortalAdmin && this.isLocationAdministrator()) || !this.props.isPortalAdmin) && \r\n Locations\r\n \r\n \r\n \r\n {(this.state.locations || []).map(l => )}\r\n \r\n \r\n }\r\n\r\n {isPersonal && (isCompanyAdmin || (!isSiteAdmin && canShowDetailsToPerson)) && \r\n \r\n Control who can view Orders placed by other users\r\n \r\n \r\n }\r\n \r\n const modalContent = <>\r\n \r\n {title}\r\n \r\n \r\n
\r\n {loading && }\r\n {!loading && formRows}\r\n {!loading && !emailExists && ((isSiteAdmin && !isPersonal) || !isSiteAdmin) && (\r\n \r\n )}\r\n \r\n
\r\n \r\n {mode === UserInfoMode.Team && <>\r\n {false && this.setState({ showRevokeConfirmation: true })} spin={revoking} disableOnSpin className=\"mr-2 fixed-w5\">Revoke}\r\n \r\n }\r\n {isPersonal && <>\r\n \r\n }\r\n {this.props.showNewUser ? 'Save' : 'Update'}\r\n \r\n \r\n\r\n return <>\r\n this.setState({ showAdditionalPhone: false })} />\r\n this.setState({ timeZoneId: timeZoneId })}\r\n timeZones={this.state.timeZones}\r\n timeZoneId={this.props.timeZoneId}\r\n data={userInfo?.AssociatedRole || []}\r\n show={showAdditionalRoles}\r\n onSave={data => this.setState({ showAdditionalRoles: false, userInfo: { ...this.state?.userInfo, AssociatedRole: data || [] } as UserInformation })}\r\n onClose={() => this.setState({ showAdditionalRoles: false })}\r\n userInfo={userInfo}\r\n />\r\n {isPersonal && {modalContent}}\r\n {!isPersonal && {modalContent}}\r\n this.setState({ showRevokeConfirmation: false })} />\r\n this.setState({ showResetPasswordConfirmation: false })} />\r\n {this.state.showResetLoginAttemptsConfirmation && this.setState({ showResetLoginAttemptsConfirmation: false })} />}\r\n {this.state.showRemoveDuplicateRolesConfirmation && this.setState({ showRemoveDuplicateRolesConfirmation: false })} />}\r\n {this.state.showDeleteUserConfirmation && this.setState({ showDeleteUserConfirmation: false })} />}\r\n {this.state.showDeleteRoleConfirmation && this.setState({ showDeleteRoleConfirmation: false })} />}\r\n this.setState({ showOrderSecurityOverride: false })} />\r\n \r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): UserInfoAuthProps {\r\n return {\r\n isLocationAdmin: isLocationAdmin(state),\r\n isCompanyAdmin: isCompanyAdmin(state),\r\n isPortalAdmin: isPortalAdmin(state),\r\n isSiteAdmin: isSiteAdmin(state),\r\n isUser: isUser(state),\r\n UserName: getUserNameForSelectedCompany(state),\r\n PrimaryRoleID: RoleIdForSelectedCompany(state),\r\n }\r\n}\r\nconst ConnectedUserInfo = connect(mapStateToProps, null)(UserInfo)\r\nexport default ConnectedUserInfo\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport TimeZoneData from \"./Model/TimeZoneData\"\r\n\r\nexport default function TimeZoneListGet() {\r\n return ObservableFromFetch(\"Order/GetTimeZones\")\r\n}","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport Role from \"./Model/Role\"\r\n\r\nexport default function UserRolesGetObservable(link?: string) {\r\n const requestBody: string = JSON.stringify(link ? { Link: link } : {})\r\n return ObservableFromFetch(\"FFOrderRolePermission/GetUserRoles\", requestBody)\r\n}\r\n\r\nexport function GetRolesToInvite() {\r\n return ObservableFromFetch(\"FFOrderUserInvitation/GetRolesToInvite\")\r\n}\r\n\r\nexport function GetRoleDroplist(roleID: number) {\r\n const requestBody: string = new URLSearchParams({\r\n roleID: roleID.toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderUserInvitation/GetRoleDroplistByID?\" + requestBody)\r\n}\r\n\r\nexport function GetRoles(roleID: number, link?: string) {\r\n const requestParams = link ? { roleID: roleID.toString(), Link: link } : { roleID: roleID.toString() }\r\n const requestBody: string = JSON.stringify(requestParams).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderUserInvitation/GetRole\", requestBody)\r\n}\r\n\r\nexport function GetRolesPerLink(link: string) {\r\n const requestBody: string = JSON.stringify({ Link: link }).toString()\r\n return ObservableFromFetch(\"FFOrderUserInvitation/GetRole\", requestBody)\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function CheckExistingUser(params: {UserName: string, Link?: string}) {\r\n const requestBody = JSON.stringify(params)\r\n return ObservableFromFetch(\"FFOrderUserInvitation/CheckExistingUser\", requestBody)\r\n}","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function ResetLoginAttempts(userName: string) {\r\n const requestBody: string = new URLSearchParams({ UserName: userName.toString() }).toString()\r\n return ObservableFromFetch(\"WorkforceSuperUser/ResetLoginAttempts?\" + requestBody, \"post\")\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function RemoveDuplicateRoles(userName: string) {\r\n const requestBody: string = new URLSearchParams({ UserName: userName.toString() }).toString()\r\n return ObservableFromFetch(\"WorkforceSuperUser/RemoveDuplicateRoles?\" + requestBody, \"post\")\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function DeleteUser(userName: string) {\r\n const requestBody: string = new URLSearchParams({ UserName: userName.toString() }).toString()\r\n return ObservableFromFetch(\"WorkforceSuperUser/DeleteUser?\" + requestBody, \"post\")\r\n}\r\n\r\nexport function DeleteRole(applicationUserID: number, participationID: number) {\r\n const requestBody = JSON.stringify({ ApplicationUserID: applicationUserID, ParticipationID: participationID }).toString()\r\n return ObservableFromFetch(\"FFOrderUserFileMaintenance/DeleteRole\", requestBody)\r\n}","import * as React from \"react\"\r\nimport { connect } from \"react-redux\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { AppState, AssignedClinic, WorkforceClinicPortal } from \"../../AppState\"\r\nimport { getUserNameForSelectedCompany, getLoggedInUserName, GetSelectedAssignedClinic, GetSelectedPortal } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport { Home } from \"../../config/Routes\"\r\nimport UserInfo, { UserInfoMode } from \"../Administration/UserInfo\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\n\r\ninterface MyInformationProps {\r\n LoginName: string\r\n AssignedClinic: AssignedClinic | null\r\n Portal?: WorkforceClinicPortal\r\n}\r\n\r\nexport class MyInformation extends React.Component {\r\n handleClose = () => (this.props as RouteComponentProps).history?.push(Home)\r\n\r\n render() {\r\n const locationID = this.props.AssignedClinic?.LocationID\r\n const participationId = this.props.Portal?.ParticipationID || this.props.AssignedClinic?.ParticipationID\r\n\r\n return \r\n this.handleClose()} />\r\n \r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): MyInformationProps {\r\n return {\r\n LoginName: getLoggedInUserName(state),\r\n AssignedClinic: GetSelectedAssignedClinic(state),\r\n Portal: GetSelectedPortal(state)\r\n }\r\n}\r\n\r\nconst ConnectedMyInformation = connect(mapStateToProps, null)(MyInformation)\r\nexport default ConnectedMyInformation\r\n","import UserDetail from \"./Model/UserDetail\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport GridResponse from \"../GridResponse\"\r\nimport { Filter, Sort } from \"../GridRequest\"\r\n\r\nconst Columns = [\"Account\", \"InActive\", \"LastLogin\", \"LoginName\", \"Role\", \"UserName\", \"ProfileStatuses\", \"SendingFacility\", \"InvitationSent\", \"EnrollmentStarted\", \"Status\"] as const\r\ntype Column = typeof Columns[number]\r\n\r\nexport type ColumnFilters = Record\r\nexport type UserDetailGridResponse = GridResponse & ColumnFilters\r\n\r\nfunction columnFilters(filters: Filter[]): ColumnFilters {\r\n return {\r\n Account: filters.find(filter => filter.column === \"Account\")?.values || [],\r\n InActive: filters.find(filter => filter.column === \"InActive\")?.values.map(status => {return status === \"Inactive\" ? \"true\" : \"false\"}) || [],\r\n LoginName: filters.find(filter => filter.column === \"LoginName\")?.values || [],\r\n LastLogin: filters.find(filter => filter.column === \"LastLogin\")?.values || [],\r\n Role: filters.find(filter => filter.column === \"Role\")?.values || [],\r\n UserName: filters.find(filter => filter.column === \"UserName\")?.values || [],\r\n ProfileStatuses: filters.find(filter => filter.column === \"ProfileStatuses\")?.values || [],\r\n SendingFacility: filters.find(filter => filter.column === \"SendingFacility\")?.values || [],\r\n InvitationSent: filters.find(filter => filter.column === \"ModifiedOn\")?.values || [],\r\n EnrollmentStarted: filters.find(filter => filter.column === \"EnrollmentStarted\")?.values || [],\r\n Status: filters.find(filter => filter.column === \"Status\")?.values || [],\r\n }\r\n}\r\n\r\nexport default function UserDetailsObservable(pageNumber: number, pageSize: number, sort: Sort, filters: Filter[], implementationID: number | undefined = undefined, companyID: number | undefined = undefined) {\r\n var params: object = {\r\n Filters: columnFilters(filters),\r\n IsQuickStart: false,\r\n PageNumber: pageNumber,\r\n PageSize: pageSize || 20,\r\n SortGrid: { SortColumn: sort.column || \"\", SortOrder: sort.order.toUpperCase() === \"DESC\" ? \"DSC\" : sort.order.toUpperCase()},\r\n ImplementationID: implementationID || 0,\r\n CompanyID: companyID || 0\r\n }\r\n\r\n const requestBody: string = JSON.stringify(params)\r\n return ObservableFromFetch(\"FFOrderUserFileMaintenance/GetUserDetails\", requestBody)\r\n}\r\n\r\nexport function UserDetailsCSVObservable(isSiteAdmin: boolean, pageNumber: number, pageSize: number, sort: Sort, filters: Filter[], implementationID: number | undefined = undefined, companyID: number | undefined = undefined) {\r\n var params: object = {\r\n Filters: columnFilters(filters),\r\n IsQuickStart: false,\r\n PageNumber: pageNumber,\r\n PageSize: pageSize || 20,\r\n isSiteAdmin: isSiteAdmin,\r\n SortGrid: { SortColumn: sort.column || \"\", SortOrder: sort.order.toUpperCase() === \"DESC\" ? \"DSC\" : sort.order.toUpperCase() }\r\n }\r\n if (implementationID) {\r\n params = { ...params, ImplementationID: implementationID }\r\n }\r\n if (companyID) {\r\n params = { ...params, CompanyID: companyID }\r\n }\r\n const requestBody: string = JSON.stringify(params)\r\n return ObservableFromFetch(\"FFOrderUserFileMaintenance/GetUserDetailsCSV\", requestBody)\r\n}\r\n\r\n\r\n\r\n","// WARNING: \"Invite Status\" column filter values on the Invitation Status Grid are displayed when enum\r\n// keys are matching API response, modifying enum keys can lead to values being displayed incorrectly.\r\nexport enum InvitationStatus {\r\n INVITATION_REQUESTED = 1,\r\n INVITATION_STILL_IN_PROCESS = 2,\r\n TOO_MANY_ATTEMPT = 3,\r\n INVALID_URL = 4,\r\n PENDING = 5,\r\n EXPIRED = 6,\r\n STARTED = 7,\r\n PASSWORD_SET = 8,\r\n USER_CONFIGURED = 9,\r\n CLINIC_CONFIGURED = 10,\r\n CLIENT_CONFIGURED = 11,\r\n COMPLETED = 12,\r\n VALIDATE_PIN = 13,\r\n LINK_ALREADY_USED = 14,\r\n INVITATION_IN_USE = 15\r\n}\r\n\r\nconst InvitationStatusMap = new Map([\r\n [InvitationStatus.INVITATION_REQUESTED, \"Invitation Requested\"],\r\n [InvitationStatus.INVITATION_STILL_IN_PROCESS, \"Invitation Still In Process\"],\r\n [InvitationStatus.TOO_MANY_ATTEMPT, \"Too Many Attempts\"],\r\n [InvitationStatus.INVALID_URL, \"Invalid URL\"],\r\n [InvitationStatus.PENDING, \"Pending\"],\r\n [InvitationStatus.EXPIRED, \"Expired\"],\r\n [InvitationStatus.STARTED, \"Started\"],\r\n [InvitationStatus.PASSWORD_SET, \"Password Set\"],\r\n [InvitationStatus.USER_CONFIGURED, \"User Configured\"],\r\n [InvitationStatus.CLINIC_CONFIGURED, \"Portal Configured\"],\r\n [InvitationStatus.CLIENT_CONFIGURED, \"Company Configured\"],\r\n [InvitationStatus.COMPLETED, \"Complete\"]\r\n])\r\n\r\nconst InvitationInverseMap = new Map(Array.from(InvitationStatusMap, entry => [entry[1], entry[0]]))\r\n\r\nexport function getStatusLabelByKey(key: InvitationStatus) {\r\n return InvitationStatusMap.get(key) || \"\"\r\n}\r\n\r\nexport function getStatusKeyByLabel(label: string) {\r\n const stringKey = InvitationInverseMap.get(label)\r\n if (stringKey) {\r\n return InvitationStatus[stringKey]\r\n }\r\n}\r\n","import FileSaver from \"file-saver\"\r\nimport React from \"react\"\r\nimport { Modal, Form, Col, Row, Button, Container, ProgressBar } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Observable, Subject, Subscription, timer } from \"rxjs\"\r\nimport { scan, startWith, switchMap, takeWhile } from \"rxjs/operators\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { MaxFileNameLength, MaxImageFileSize } from \"../../config/Constants\"\r\nimport ActionButton from \"../ActionButton\"\r\n\r\ninterface CSVUploadModalProps {\r\n show: boolean\r\n title: string\r\n templateCSVUrl: string\r\n children?: React.ReactNode\r\n onCancel: () => void\r\n onStartUpload: (fileName: string, fileContent: string) => Observable\r\n onUploaded: () => void\r\n}\r\n\r\ninterface CSVUploadModalState {\r\n fileInputKey: string\r\n fileName?: string\r\n fileContent?: string\r\n isFileNameValid: boolean\r\n isFileSizeValid: boolean\r\n uploadPercentage?: number\r\n uploading: boolean\r\n uploadStatus?: boolean\r\n}\r\n\r\nexport default class CSVUploadModal extends React.PureComponent {\r\n state: CSVUploadModalState = {\r\n fileInputKey: \"fileInputKey\",\r\n fileName: undefined,\r\n fileContent: undefined,\r\n isFileNameValid: true,\r\n isFileSizeValid: true,\r\n uploadPercentage: undefined,\r\n uploading: false\r\n }\r\n\r\n fileUploadProgressSubscription?: Subscription\r\n fileUploadSubscription?: Subscription\r\n fileUploadProgress$ = new Subject()\r\n file = React.createRef()\r\n\r\n componentDidMount() {\r\n this.fileUploadProgressSubscription = this.fileUploadProgress$.pipe(\r\n switchMap(value =>\r\n timer(0, 300).pipe(\r\n startWith(0),\r\n scan((acc, curr) => acc + 5),\r\n takeWhile(value => value <= 95 && this.state.uploadStatus === undefined)\r\n ))\r\n ).subscribe(\r\n (value: number) => this.setState({ uploadPercentage: value })\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.fileUploadProgressSubscription && this.fileUploadProgressSubscription.unsubscribe()\r\n this.fileUploadSubscription && this.fileUploadSubscription.unsubscribe()\r\n }\r\n\r\n handleFileSelect = (e: React.ChangeEvent) => {\r\n const file = e.target && e.target.files && e.target.files[0]\r\n if (!file) {\r\n return\r\n }\r\n const fileName = file.name\r\n const isFileNameValid = fileName.length < MaxFileNameLength\r\n const isFileSizeValid = file.size < MaxImageFileSize\r\n this.setState({ isFileNameValid: isFileNameValid, isFileSizeValid: isFileSizeValid })\r\n if (isFileNameValid && isFileSizeValid) {\r\n const ext = file.name.substring(file.name.lastIndexOf('.') + 1)\r\n if (ext && \"csv\" === ext.toLowerCase()) {\r\n var reader = new FileReader()\r\n const self = this\r\n reader.onload = function (e) {\r\n const result = e.target?.result as string || \"\"\r\n const stringLength = result.indexOf('base64') + 7\r\n const fileContent = result.slice(stringLength, result.length)\r\n if (fileContent) {\r\n self.setState({ fileName: file.name, fileContent: fileContent, uploadStatus: undefined, uploadPercentage: undefined })\r\n } else {\r\n toast.error(\"CSV file is empty.\")\r\n }\r\n }\r\n reader.onerror = function (error) { toast.error(error) }\r\n reader.readAsDataURL(file)\r\n } else {\r\n toast.error(\"Please upload only text documents. Download the Example Spreadsheet as a starter.\")\r\n }\r\n }\r\n }\r\n\r\n handleUpload = () => {\r\n this.fileUploadSubscription && this.fileUploadSubscription.unsubscribe()\r\n this.setState({ uploading: true, uploadStatus: undefined })\r\n this.fileUploadSubscription = this.props.onStartUpload(this.state.fileName || \"\", this.state.fileContent || \"\").subscribe(\r\n (data: string) => {\r\n this.setState({ uploadStatus: true, uploadPercentage: 100, uploading: false })\r\n this.export(data, this.state.fileName || \"data.csv\")\r\n this.props.onUploaded()\r\n },\r\n error => this.handleAPIError(error, { uploadStatus: false, uploading: false })\r\n )\r\n this.fileUploadProgress$.next()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n export(csv: string, fileName: string) {\r\n const csvData = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, fileName)\r\n toast.success(\"CSV file downloaded successfully.\")\r\n }\r\n\r\n render() {\r\n const { uploading, fileName, fileContent, isFileNameValid, isFileSizeValid, uploadPercentage, uploadStatus } = this.state\r\n const disableUpload = !fileContent || !isFileNameValid || !isFileSizeValid || uploadPercentage !== undefined\r\n return (\r\n \r\n \r\n {this.props.title}\r\n \r\n \r\n \r\n \r\n {this.props.children}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isFileNameValid && The file name should be less than 200 characters. Please rename the file.}\r\n {!isFileSizeValid && Please select file of size maximum 1 MB}\r\n {!!fileContent && !!uploadPercentage && <>\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {uploadStatus === false && Error Occurred}\r\n \r\n \r\n \r\n \r\n Upload Spreadsheet\r\n \r\n \r\n )\r\n }\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport function CreateSiteAdministrator(email: string, phone: string, link: string, roleId: number) {\r\n const requestBody: string = JSON.stringify({\r\n EmailAddress: email,\r\n Link: link,\r\n PhoneNumber: phone,\r\n RoleID: roleId,\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderClinicEnrollment/CreateSiteAdministrator\", requestBody)\r\n}\r\n\r\nexport interface UserInviteData {\r\n EmailAddress: string\r\n Link: string\r\n ModifiedBy: string\r\n RoleID: number\r\n PhoneNumber: string\r\n InvitationLink?: string\r\n}\r\n\r\nexport interface UserUploadData {\r\n Base64String: string\r\n IPAddress: string\r\n Link: string\r\n ModifiedBy: string\r\n RoleID: number\r\n}\r\n\r\nexport function UserInvitation(data: UserInviteData) {\r\n const requestBody: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"FFOrderUserInvitation/UserInvitation\", requestBody)\r\n}\r\n\r\nexport function UserUpload(data: UserUploadData) {\r\n const requestBody: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"FFOrderUserInvitation/UploadUser\", requestBody)\r\n}\r\n\r\nexport function UserUploadV2(data: UserUploadData) {\r\n const requestBody: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"FFOrderUserInvitation/UploadUserV2\", requestBody)\r\n}\r\n\r\nexport interface PortalInviteData {\r\n CompanyName: string\r\n EmailAddress: string\r\n Link: string\r\n ModifiedBy: string\r\n PhoneNumber: string\r\n RoleID: number\r\n IsExistingUser: boolean\r\n ImplementationID: number\r\n SubscriptionPlanID: number\r\n IsGOVTPortal: boolean\r\n Address1?: string,\r\n Address2?: string,\r\n City?: string,\r\n State?: string,\r\n Zip?: string,\r\n OfficePhone?: string,\r\n SubscriptionPlan?: string,\r\n ImplementationType?: string,\r\n FirstName?: string,\r\n LastName?: string\r\n}\r\n\r\nexport function PortalInvitation(data: PortalInviteData) {\r\n const requestBody: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"FFOrderClinicEnrollment/CreateInvitation\", requestBody)\r\n}\r\n\r\nexport interface CompanyInviteData {\r\n ClientName: string\r\n CompanyAdditionalRoleID: string\r\n CompanyCode: string\r\n CompanyID?: number\r\n EmailAddress: string\r\n InvitationLink?: string\r\n Link: string\r\n ModifiedBy: string\r\n PhoneNumber: string\r\n PortalAdditionalRoleID: string\r\n RoleID?: number | string\r\n ParentID?: number\r\n IsExistingUser?: boolean\r\n}\r\n\r\nexport function CompanyInvitationObserver(data: CompanyInviteData) {\r\n const requestBody: string = JSON.stringify(data)\r\n return ObservableFromFetch(\"FFOrderClinicEnrollment/CreateInvitation\", requestBody)\r\n}\r\n\r\nexport interface CompanyUploadData {\r\n Base64String: string\r\n IPAddress: string\r\n Link: string\r\n ModifiedBy: string\r\n}\r\n\r\nexport function CompanyUpload(params: CompanyUploadData) {\r\n const requestBody: string = JSON.stringify(params);\r\n return ObservableFromFetch(\"FFOrderClinicStatus/UploadClients\", requestBody)\r\n}\r\n","import * as React from \"react\"\r\nimport { OverlayTrigger, Popover } from \"react-bootstrap\";\r\nimport { FaInfoCircle } from \"react-icons/fa\";\r\nimport { UserProfileStatus } from \"../../api/Administration/Model/UserDetail\";\r\n\r\ninterface UserProfileStatusesProps {\r\n statuses: UserProfileStatus[]\r\n}\r\n\r\nexport default function UserProfileStatuses(props: UserProfileStatusesProps) {\r\n const { statuses } = props\r\n return (
    \r\n {statuses.map((status, index) =>
  • \r\n {status.Message}\r\n {status.AdditionalInfo && status.AdditionalInfo.length > 0 &&\r\n \r\n
      \r\n {status.AdditionalInfo.map((info, i) =>
    • {info}
    • )}\r\n
    \r\n }>\r\n \r\n
    }\r\n
  • )}\r\n
)\r\n}\r\n","import * as React from \"react\"\r\nimport { Container, Row, Col, Table, Button, Spinner } from \"react-bootstrap\"\r\nimport { Subscription, BehaviorSubject, of, concat, Observable } from \"rxjs\"\r\nimport { distinctUntilChanged, switchMap, map, catchError, filter } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { isCompanyAdmin, isPortalAdmin, isSiteAdmin } from \"../../authentication/isAdminRole\"\r\nimport { AppState } from \"../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport ColumnHeaderFilter from \"../ColumnHeaderFilter\"\r\nimport TablePagination from \"../TablePagination\"\r\nimport { CustomizableFilterColumn } from \"../ColumnsCustomizeModal/CustomizableColumn\"\r\nimport UserDetailsObservable, { ColumnFilters, UserDetailGridResponse, UserDetailsCSVObservable } from \"../../api/Administration/GetUserDetails\"\r\nimport UserDetail from \"../../api/Administration/Model/UserDetail\"\r\nimport UserInfo, { UserInfoMode } from \"./UserInfo\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport { Filter, Sort } from \"../../api/GridRequest\"\r\nimport ImplementationData from \"../../api/Implementations/Model/ImplementationData\"\r\nimport ImplementationsGetObservable from \"../../api/Implementations/ImplementationsGet\"\r\nimport SearchBar from \"../SearchBar\"\r\nimport SearchField from \"../../api/SearchField\"\r\nimport CSVUploadModal from \"../Invitation/CSVUploadModal\"\r\nimport { ApiRootUrl } from \"../../api/ApiUrl\"\r\nimport { UserUploadV2, UserUploadData } from \"../../api/Invitation/InvitationCreate\"\r\nimport { getUserNameForSelectedCompany, RoleIdForSelectedCompany } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport { IpifyUrl } from \"../../config/Constants\"\r\nimport UserProfileStatuses from \"./UserProfileStatuses\"\r\nimport downloadCsv from \"../../assets/images/download-csv.png\"\r\nimport FormatTimestampFileName from \"../../formatters/FormatTimestampFileName\"\r\nimport FileSaver from \"file-saver\"\r\nimport { getStatusLabelByKey, InvitationStatus } from \"../../api/Invitation/Model/InvitationStatus\"\r\n\r\ntype Column = CustomizableFilterColumn\r\n\r\ninterface UserDetailsGridProps {\r\n isSiteAdmin: boolean,\r\n isPortalAdmin: boolean,\r\n isCompanyAdmin: boolean,\r\n UserName?: string\r\n PrimaryRoleID?: number\r\n}\r\n\r\ninterface UserDetailsGridState {\r\n loading: boolean\r\n loadAll: boolean\r\n loadingCsv?: boolean\r\n data?: UserDetailGridResponse\r\n pageNumber: number\r\n columns: Column[]\r\n sort?: Sort\r\n filters: Filter[]\r\n showUserInfoFor?: string,\r\n showNewUser: boolean,\r\n loginAttempts?: number\r\n selectedImplementation?: ImplementationData\r\n implementations?: ImplementationData[]\r\n participationId?: number\r\n roleId?: number\r\n locationId?: number\r\n timeZoneId?: number\r\n searchField: string\r\n searchFields?: SearchField[]\r\n searchText: string\r\n showUploadSpreadsheet: boolean\r\n currentIP: string\r\n}\r\n\r\ninterface UserDetailSearchParams {\r\n pageNumber: number\r\n sort: Sort\r\n filters: Filter[]\r\n}\r\n\r\nconst DEFAULT_COLUMNS: Column[] = [\r\n { name: \"Account\", filter: \"Account\", label: \"Account\", visible: true },\r\n { name: \"LoginName\", filter: \"LoginName\", label: \"Login Name\", visible: true },\r\n { name: \"UserName\", filter: \"UserName\", label: \"User Name\", visible: true },\r\n { name: \"PrimaryRoleTitle\", filter: \"Role\", label: \"Role\", visible: true },\r\n { name: \"LastLoginDate\", filter: \"LastLogin\", label: \"Last Login\", visible: true },\r\n { name: \"ProfileStatuses\", filter: \"ProfileStatuses\", label: \"Profile Status\", visible: false },\r\n { name: \"SendingFacility\", filter: \"SendingFacility\", label: \"Sending Facility\", visible: false },\r\n { name: \"InActive\", filter: \"InActive\", label: \"Active/Inactive\", visible: true },\r\n { name: \"ModifiedOn\", filter: \"InvitationSent\", label: \"Invite Sent\", visible: true },\r\n { name: \"EnrollmentStarted\", filter: \"EnrollmentStarted\", label: \"Enrollment Started\", visible: true},\r\n { name: \"Status\", filter: \"Status\", label: \"Invite Status\", visible: true },\r\n { name: \"Link\", label: \"Invite Link\", visible: false }\r\n\r\n\r\n]\r\n\r\nconst SEARCH_FIELDS: SearchField[] = [\r\n { ID: \"Login\", Name: \"Login Name\" },\r\n { ID: \"Name\", Name: \"User Name\" }\r\n]\r\n\r\nconst PageSize = 20\r\nexport class UserDetailsGrid extends React.PureComponent {\r\n state: UserDetailsGridState = {\r\n showUploadSpreadsheet: false,\r\n showNewUser: false,\r\n loading: false,\r\n loadAll: false,\r\n loadingCsv: false,\r\n pageNumber: 1,\r\n columns: DEFAULT_COLUMNS,\r\n filters: [],\r\n participationId: undefined,\r\n locationId: undefined,\r\n timeZoneId: undefined,\r\n searchField: \"\",\r\n searchText: \"\",\r\n searchFields: SEARCH_FIELDS,\r\n currentIP: \"\"\r\n }\r\n subscription?: Subscription\r\n implementationsSubscription?: Subscription\r\n exportToCSVSubscription?: Subscription\r\n\r\n implementationsTypeahead = React.createRef>()\r\n\r\n page$ = new BehaviorSubject({\r\n pageNumber: 1,\r\n sort: { column: \"\", order: \"\" },\r\n filters: []\r\n })\r\n\r\n componentDidMount() {\r\n this.setState({ columns: this.visibleGridColumns([\"ProfileStatuses\", \"SendingFacility\"], this.props.isSiteAdmin) })\r\n\r\n this.subscription = this.page$.pipe(\r\n distinctUntilChanged(),\r\n filter(() => this.state.loadAll || !this.props.isSiteAdmin || !!this.state.selectedImplementation?.ImplementationID || this.state.searchText.length > 0),\r\n switchMap(params => concat(\r\n of({ loading: true }),\r\n UserDetailsObservable(params.pageNumber, PageSize, params.sort, params.filters, this.state.selectedImplementation?.ImplementationID).pipe(\r\n map((result: UserDetailGridResponse) => ({ data: result, pageNumber: params.pageNumber, loading: false })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: UserDetailGridResponse, pageNumber?: number }) => {\r\n if (newState.data) {\r\n if (newState.data.InActive?.length) {\r\n newState.data.InActive = newState.data.InActive.map(inactiveString => inactiveString === \"true\" ? \"Inactive\" : \"Active\")\r\n }\r\n if (newState.data.LastLogin?.length) {\r\n newState.data.LastLogin = newState.data.LastLogin.map(dateString => FormatDate(dateString))\r\n }\r\n this.setState(prevState => ({ loading: newState.loading, data: newState.data, pageNumber: newState.pageNumber || prevState.pageNumber }))\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n },\r\n (error: string) => {\r\n toast.error(error)\r\n this.setState({ loading: false })\r\n }\r\n )\r\n if (this.props.isSiteAdmin) {\r\n this.implementationsSubscription = ImplementationsGetObservable().subscribe(\r\n data => this.setState({ implementations: data.Records }),\r\n error => toast.error((error as APIError)?.errorData?.message || error.message)\r\n )\r\n }\r\n }\r\n\r\n visibleGridColumns(columns: string[], visible: boolean) {\r\n return this.state.columns.map(column => (columns.includes(column.name))\r\n ? { ...column, visible: visible }\r\n : column\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n this.exportToCSVSubscription && this.exportToCSVSubscription.unsubscribe()\r\n this.implementationsSubscription && this.implementationsSubscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: UserDetailsGridProps, prevState: UserDetailsGridState) {\r\n if (!!this.state.selectedImplementation && prevState.selectedImplementation?.ImplementationID !== this.state.selectedImplementation.ImplementationID) {\r\n this.page$.next({ pageNumber: 1, sort: { column: \"\", order: \"\" }, filters: [] })\r\n }\r\n else if (this.state.searchText !== prevState.searchText) {\r\n const searchField = this.state.searchField\r\n const searchText = this.state.searchText\r\n const filters = []\r\n if (searchField === \"Login\") { filters.push({ column: \"LoginName\", values: [searchText || \"\"] }) }\r\n if (searchField === \"Name\") { filters.push({ column: \"UserName\", values: [searchText || \"\"] }) }\r\n if (filters.length || this.state.selectedImplementation?.ImplementationID) {\r\n this.page$.next({ pageNumber: 1, sort: { column: \"\", order: \"\" }, filters: filters })\r\n }\r\n else {\r\n this.setState({ data: undefined })\r\n }\r\n }\r\n }\r\n\r\n UserIPGet = (): void => {\r\n try {\r\n const response = fetch(IpifyUrl).then(response => response.json())\r\n response.then(data => this.setState({ currentIP: data.ip }))\r\n } catch(error: unknown) {\r\n this.setState({ currentIP: \"\" })\r\n }\r\n }\r\n\r\n pageChanged = (pageNumber: number) => {\r\n this.page$.next({ ...this.page$.getValue(), pageNumber: pageNumber })\r\n }\r\n\r\n onExportClick() {\r\n this.setState({ loadingCsv: true })\r\n\r\n this.exportToCSVSubscription = UserDetailsCSVObservable(this.props.isSiteAdmin, 1, PageSize, this.state.sort || { column: \"\", order: \"\" }, this.state.filters, this.state.selectedImplementation?.ImplementationID).subscribe(\r\n (results: string) => {\r\n this.setState({ loadingCsv: false })\r\n this.exportToCSV(results)\r\n },\r\n (error) => {\r\n this.setState({ loadingCsv: false })\r\n toast.error(error)\r\n }\r\n )\r\n }\r\n\r\n exportToCSV(csv: string) {\r\n const csvData = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, FormatTimestampFileName(\"OurTeam\", \"csv\", new Date()), true)\r\n toast.success(\"CSV file downloaded successfully.\")\r\n }\r\n\r\n\r\n sort(column: string, order?: string) {\r\n const newSort = { column: column, order: order || \"\" }\r\n this.setState({ sort: newSort })\r\n this.page$.next({ ...this.page$.getValue(), sort: newSort })\r\n }\r\n\r\n filter(column: string, items: string[]) {\r\n this.setState(prevState => {\r\n const filters = [...prevState.filters]\r\n const filter = { column: column, values: items }\r\n let index = filters.findIndex(item => item.column === filter.column)\r\n if (index >= 0) {\r\n filters[index] = filter\r\n } else {\r\n filters.push(filter)\r\n }\r\n return { filters: filters }\r\n }, () => {\r\n this.page$.next({ ...this.page$.getValue(), pageNumber: 1, filters: this.state.filters })\r\n })\r\n }\r\n\r\n visibleColumns = () => this.state.columns.filter(col => col.visible)\r\n showTeamInfoModal = (data: UserDetail) => this.setState({ showUserInfoFor: data.LoginName, roleId: data.PrimaryRoleID, participationId: data.ParticipationID, locationId: data.LocationID, timeZoneId: data.TimeZoneID, loginAttempts: data.LoginAttempts })\r\n showNewTeamInfoModal = () => this.setState({ showUserInfoFor: undefined, showNewUser: true, participationId: undefined, timeZoneId: undefined })\r\n\r\n renderCell(row: UserDetail, colName: keyof UserDetail, key: number) {\r\n switch (colName) {\r\n case \"LoginName\":\r\n return this.showTeamInfoModal(row)}>\r\n case \"InActive\":\r\n return {row[colName] ? \"Inactive\" : \"Active\"}\r\n case \"LastLoginDate\":\r\n return {FormatDate(row.LastLoginDate)}\r\n case \"ProfileStatuses\":\r\n return \r\n case \"ModifiedOn\":\r\n return {FormatDate(row.ModifiedOn)}\r\n case \"EnrollmentStarted\":\r\n return {FormatDate(row.EnrollmentStarted)}\r\n case \"Status\":\r\n return {getStatusLabelByKey(row.Status)}\r\n case \"Link\":\r\n return \r\n default:\r\n return {row[colName]}\r\n }\r\n }\r\n\r\n handleInvitationSetupModalClose = (hasUpdates: boolean) => {\r\n this.setState({ showUserInfoFor: undefined, showNewUser: false })\r\n if (hasUpdates) {\r\n this.pageChanged(1)\r\n }\r\n }\r\n\r\n handleImplementationChange = (selected: ImplementationData[]) => this.setState({ selectedImplementation: selected[0], searchField: \"\", searchText: \"\" })\r\n onSearch = (searchField?: string, searchText?: string) => this.setState({ searchField: searchField || \"\", searchText: searchText || \"\" })\r\n\r\n handleOpenUpload = () => this.setState({ showUploadSpreadsheet: true })\r\n\r\n handleStartUploading = (fileName: string, fileContent: string) => {\r\n const userData: UserUploadData = {\r\n Base64String: fileContent,\r\n IPAddress: this.state.currentIP,\r\n Link: window.location.hostname,\r\n ModifiedBy: this.props.UserName || \"\",\r\n RoleID: this.props.PrimaryRoleID || 0,\r\n }\r\n return UserUploadV2(userData)\r\n }\r\n\r\n handleBulkUploaded = () => {\r\n this.setState({ showUploadSpreadsheet: false })\r\n }\r\n\r\n LoadAll = () => this.setState({ loadAll: true }, () => this.page$.next({ pageNumber: 1, sort: { column: \"\", order: \"\" }, filters: [] }))\r\n\r\n onGoToInvitationLink = (url: string) => {\r\n window.open(url, \"_blank\", \"noopener,noreferrer\")\r\n }\r\n\r\n render() {\r\n const dataRows = (data: UserDetailGridResponse) => data.Records.map((row: UserDetail, i: number) => {dataColumns(row)})\r\n const dataColumns = (row: UserDetail) => this.visibleColumns().map((col, i) => this.renderCell(row, col.name as keyof UserDetail, i))\r\n const emptyRow = NO DATA FOUND\r\n const siteAdminEmptyRow = \r\n\r\n const headerColumns = this.visibleColumns().map((col: Column, i) => {\r\n return (\r\n \r\n {this.state.data && col.filter && col.filter in this.state.data && item.column === col.filter) >= 0}\r\n sort={this.state.sort && this.state.sort.column === col.name ? this.state.sort.order === \"asc\" ? \"asc\" : \"desc\" : undefined}\r\n items={this.state.data[col.filter as keyof ColumnFilters] || []}\r\n uppercase={false}\r\n onSort={(order?: string) => this.sort(col.name, order)}\r\n onFilter={(items: string[]) => col.filter && this.filter(col.filter, items)} />}\r\n {(!this.state.data || !col.filter) && (col.label || col.name)}\r\n \r\n )\r\n })\r\n\r\n return (<>\r\n \r\n \r\n {(this.props.isSiteAdmin) && \r\n \r\n { this.onSearch(searchField, searchText) }} />\r\n \r\n {!this.state.loadAll && \r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n isLoading={!this.state.implementations}\r\n onChange={this.handleImplementationChange}\r\n options={this.state.implementations || []}\r\n selected={this.state.selectedImplementation ? [this.state.selectedImplementation] : []}\r\n emptyLabel=\"No Portals Found\"\r\n placeholder=\"Type to select Portal\"\r\n inputProps={{ autoComplete: \"chrome-off\" }}>\r\n {this.state.implementations &&\r\n }\r\n \r\n }\r\n \r\n {this.state.loadAll && }\r\n {!this.state.loadAll && }\r\n \r\n \r\n }\r\n {(this.props.isPortalAdmin || this.props.isCompanyAdmin) && \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n {headerColumns}\r\n \r\n \r\n \r\n {\r\n this.state.loading ?\r\n :\r\n this.state.data && this.state.data.Records.length > 0 ? dataRows(this.state.data) : (this.props.isSiteAdmin ? siteAdminEmptyRow : emptyRow)\r\n }\r\n \r\n
\r\n {this.state.data && !this.state.loading && \r\n Total records: {this.state.data.Total}\r\n \r\n }\r\n \r\n
\r\n
\r\n \r\n {this.state.showUploadSpreadsheet &&\r\n this.setState({ showUploadSpreadsheet: false })}\r\n onStartUpload={this.handleStartUploading}\r\n onUploaded={this.handleBulkUploaded}>\r\n {(this.props.isPortalAdmin || this.props.isCompanyAdmin) &&

\r\n To send an invitation to multiple companies at once:\r\n

    \r\n
  1. \r\n Create a Spreadsheet with the following columns:\r\n
      \r\n
    1. Company Name
    2. \r\n
    3. User's First Name
    4. \r\n
    5. User's Last Name
    6. \r\n
    7. User's Email Address
    8. \r\n
    9. User's Phone Number
    10. \r\n
    11. User's Role
    12. \r\n
    \r\n
  2. \r\n
  3. Save the spreadsheet as a CSV text file.
  4. \r\n
  5. Upload the file here.
  6. \r\n
\r\n

}\r\n
}\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): UserDetailsGridProps {\r\n return {\r\n isSiteAdmin: isSiteAdmin(state),\r\n isPortalAdmin: isPortalAdmin(state),\r\n isCompanyAdmin: isCompanyAdmin(state),\r\n UserName: getUserNameForSelectedCompany(state),\r\n PrimaryRoleID: RoleIdForSelectedCompany(state)\r\n }\r\n}\r\nconst ConnectedUserDetailsGrid = connect(mapStateToProps, null)(UserDetailsGrid)\r\nexport default ConnectedUserDetailsGrid\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport function UserActivationObservable(ApplicationUserId: number, link: string) {\r\n const requestBody: string = JSON.stringify({ ApplicationUserId: ApplicationUserId, InvitationLink: link })\r\n\r\n return ObservableFromFetch(\"FFOrderUserFileMaintenance/ReActivateUser\", requestBody)\r\n}\r\n\r\nexport function CompanyActivationObservable(ImplementationID: number, AccountId: number, isLocation: boolean = false) {\r\n const requestBody: string = new URLSearchParams({\r\n ImplementationID: ImplementationID.toString(),\r\n AccountId: AccountId.toString(),\r\n isLocation: isLocation.toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/ReActivateClient?\" + requestBody)\r\n}\r\n\r\nexport function PortalActivationObservable(ImplementationID: number) {\r\n const requestBody: string = new URLSearchParams({\r\n ImplementationID: ImplementationID.toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderClinicFileMaintenance/ReActivateClinic?\" + requestBody)\r\n}","import React from \"react\"\r\nimport { Button, Modal, Form, Col, InputGroup } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { UserActivationObservable } from \"../../api/Administration/ActivationProcess\"\r\nimport UserInformation from \"../../api/Administration/Model/UserInformation\"\r\nimport { ActiveUserInformationGetObservable } from \"../../api/Administration/UserInformationGet\"\r\nimport { EmailRegexp } from \"../../config/Constants\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { Home } from \"../../config/Routes\"\r\n\r\ninterface UserActivationProps { }\r\n\r\ninterface UserActivationState {\r\n saving: boolean\r\n loading: boolean\r\n selectedUser?: UserInformation\r\n isEmailValid: boolean\r\n email: string\r\n}\r\n\r\nexport default class UserActivation extends React.PureComponent {\r\n emptyState: UserActivationState = {\r\n loading: false,\r\n saving: false,\r\n selectedUser: undefined,\r\n isEmailValid: false,\r\n email: \"\"\r\n }\r\n state: UserActivationState = { ...this.emptyState }\r\n\r\n loadUserSubscription?: Subscription\r\n saveUserSubscription?: Subscription\r\n\r\n componentWillUnmount() {\r\n this.saveUserSubscription && this.saveUserSubscription.unsubscribe()\r\n this.loadUserSubscription && this.loadUserSubscription.unsubscribe()\r\n }\r\n\r\n handleCancel = () => (this.props as RouteComponentProps).history?.push(Home)\r\n\r\n handleActivate = () => {\r\n this.setState({ saving: true })\r\n const { selectedUser } = this.state\r\n\r\n this.saveUserSubscription = UserActivationObservable(selectedUser?.ApplicationUserID || 0, selectedUser?.Link || \"\").subscribe(\r\n (data) => toast.success(data),\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ saving: false })\r\n },\r\n () => this.setState({ ...this.emptyState })\r\n )\r\n }\r\n\r\n handleRetrieve = () => {\r\n this.setState({ loading: true, selectedUser: undefined })\r\n const { email } = this.state\r\n\r\n this.loadUserSubscription = ActiveUserInformationGetObservable(email, true).subscribe(\r\n (data: UserInformation[]) => this.setState({ selectedUser: data[0], loading: false }),\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ loading: false })\r\n }\r\n )\r\n }\r\n\r\n isEmailValid = (value: string) => {\r\n if (value.length === 0) {\r\n return false\r\n }\r\n return EmailRegexp.test(value)\r\n }\r\n\r\n render() {\r\n const { selectedUser, saving, loading } = this.state\r\n\r\n return (\r\n \r\n \r\n \r\n Activate User\r\n \r\n \r\n
\r\n \r\n User's Email\r\n \r\n \r\n { this.setState({ email: e.target.value, isEmailValid: this.isEmailValid(e.target.value) }) }} />\r\n \r\n Retrieve\r\n \r\n \r\n \r\n \r\n \r\n First Name\r\n \r\n \r\n \r\n \r\n \r\n Last Name\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n this.handleActivate()} disabled={!selectedUser} spin={saving} disableOnSpin>Activate\r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport RegulatoryMode from \"./Model/RegulatoryMode\"\r\n\r\nexport default function GetRegulatoryModeDonorByID(id: number | string) {\r\n return ObservableFromFetch(`FFOrderRegulatoryModeDonor/GetRegulatoryModeDonorByID?regulatoryModeID=${id}`)\r\n}","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport RegulatoryMode from \"./Model/RegulatoryMode\"\r\n\r\nexport default function InsertRegulatoryModeDonor(regMode: RegulatoryMode) {\r\n const requestBody = JSON.stringify(regMode)\r\n return ObservableFromFetch(\"FFOrderRegulatoryModeDonor/InsertRegulatoryModeDonor\", requestBody)\r\n}","import React from \"react\"\r\nimport { Button, Modal, Form, Col, InputGroup } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport StateSelect from \"../FormattedInputs/StateSelect\"\r\nimport { CompanyActivationObservable, PortalActivationObservable } from \"../../api/Administration/ActivationProcess\"\r\nimport ImplementationSearchResult from \"../../api/Invitation/Model/ImplementationSearchResult\"\r\nimport { CompanyDataObservable, ImplementationSearchObservable } from \"../../api/Invitation/InformationGet\"\r\nimport CompanyData from \"../../api/Companies/CompanyModel/CompanyData\"\r\nimport { StateObservable } from \"../../api/OrderRequests/OrderRequestsConstraintGet\"\r\nimport State from \"../../api/OrderRequests/OrderRequestsModel/State\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { Home } from \"../../config/Routes\"\r\n\r\nexport enum ActivationType {\r\n Portal = \"portal\",\r\n Company = \"company\"\r\n}\r\n\r\ninterface EntityActivationProps {\r\n type: ActivationType\r\n}\r\n\r\ninterface EntityActivationState {\r\n isPortal: boolean\r\n itemSaving: boolean\r\n itemLoading: boolean\r\n instanceName: string\r\n isNameValid: boolean\r\n selectedItem?: ImplementationSearchResult | CompanyData\r\n states: State[]\r\n}\r\n\r\nexport default class EntityActivation extends React.Component {\r\n emptyState: EntityActivationState = {\r\n isPortal: this.props.type === ActivationType.Portal,\r\n itemSaving: false,\r\n itemLoading: false,\r\n instanceName: \"\",\r\n isNameValid: false,\r\n selectedItem: undefined,\r\n states: []\r\n }\r\n state: EntityActivationState = { ...this.emptyState }\r\n\r\n saveSubscription = new Subscription()\r\n loadSubscription = new Subscription()\r\n\r\n componentDidMount() {\r\n this.loadSubscription.add(\r\n StateObservable().subscribe(\r\n (results: State[]) => this.setState({ states: results }),\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ states: [] })\r\n }\r\n )\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n }\r\n\r\n handleCancel = () => (this.props as RouteComponentProps).history?.push(Home)\r\n\r\n handleActivate = () => {\r\n this.setState({ itemSaving: true })\r\n const { selectedItem, isPortal } = this.state\r\n\r\n if (isPortal) {\r\n this.saveSubscription = PortalActivationObservable(selectedItem?.ImplementationID || 0).subscribe(\r\n (data) => toast.success(data),\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ itemSaving: false })\r\n },\r\n () => this.setState({ ...this.emptyState })\r\n )\r\n }\r\n else {\r\n this.saveSubscription = CompanyActivationObservable(selectedItem?.ImplementationID || 0, selectedItem?.AccountID || 0).subscribe(\r\n (data) => toast.success(data),\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ itemSaving: false })\r\n },\r\n () => this.setState({ ...this.emptyState })\r\n )\r\n }\r\n }\r\n\r\n handleRetrieve = () => {\r\n this.setState({ itemLoading: true, selectedItem: undefined })\r\n const { instanceName, isPortal } = this.state\r\n\r\n if (isPortal) {\r\n this.loadSubscription = ImplementationSearchObservable(instanceName, true).subscribe(\r\n (data: ImplementationSearchResult[]) => this.setState({ selectedItem: data[0] }),\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ itemLoading: false })\r\n },\r\n () => this.setState({ itemLoading: false })\r\n )\r\n }\r\n else {\r\n this.loadSubscription = CompanyDataObservable(instanceName, true).subscribe(\r\n (data: CompanyData[]) => this.setState({ selectedItem: data[0] }),\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ itemLoading: false })\r\n },\r\n () => this.setState({ itemLoading: false })\r\n )\r\n }\r\n }\r\n\r\n isNameValid = (value: string) => {\r\n if (value.length < 3) {\r\n return false\r\n }\r\n return true\r\n }\r\n\r\n render() {\r\n const { selectedItem, itemSaving, itemLoading, isPortal } = this.state\r\n\r\n return (\r\n \r\n \r\n {isPortal ? \"Activate Portal\" : \"Activate Company\"}\r\n \r\n \r\n
\r\n \r\n {isPortal ? \"Clinic Name\" : \"Company Name\"}\r\n \r\n \r\n { this.setState({ instanceName: e.target.value, isNameValid: this.isNameValid(e.target.value) }) }} />\r\n \r\n Retrieve\r\n \r\n \r\n \r\n \r\n \r\n {isPortal ? \"Clinic Lab Code/ID\" : \"Company Code/ID\"}\r\n \r\n \r\n \r\n \r\n \r\n Street Address 1\r\n \r\n \r\n \r\n \r\n \r\n Street Address 2\r\n \r\n \r\n \r\n \r\n \r\n City\r\n \r\n \r\n \r\n \r\n \r\n State\r\n \r\n item.StateProvinceTerritoryID === selectedItem?.StateProvinceTerritoryID)?.Abbreviation} states={this.state.states} isDisabled={true} onChange={() => { }} />\r\n \r\n ZIP\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Activate\r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Form } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport RegulatoryMode from \"../../../api/LabService/LabServiceModel/RegulatoryMode\"\r\nimport LabServiceRegulatoryModesGetObservable from \"../../../api/LabService/LabServiceRegulatoryModesGet\"\r\n\r\nexport interface PersonnelRegulatoryModeProps {\r\n onChange: (event: React.ChangeEvent) => void\r\n selected?: number\r\n}\r\n\r\ninterface PersonnelRegulatoryModeState {\r\n data?: RegulatoryMode[]\r\n}\r\n\r\nexport default class PersonnelRegulatoryMode extends Component {\r\n state: PersonnelRegulatoryModeState = { data: [] }\r\n loadSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.loadSubscription = LabServiceRegulatoryModesGetObservable().subscribe(\r\n data => this.setState({ data: data }),\r\n error => toast.error(error.message)\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n }\r\n\r\n render = () => (\r\n \r\n \r\n {this.state.data?.map((item: any, key: number) => )}\r\n \r\n );\r\n}\r\n","import React, {Component} from \"react\";\r\nimport {ButtonGroup, Dropdown, DropdownButton, FormGroup} from \"react-bootstrap\";\r\n\r\nexport interface RegulatoryModeNumberSelectProps {\r\n onChange: (eventKey: string | null, e: React.SyntheticEvent) => void;\r\n value: number;\r\n}\r\n\r\nexport default class RegulatoryModeNumberSelect extends Component {\r\n\r\n render = () =>(\r\n \r\n \r\n none\r\n 1\r\n 2\r\n 3\r\n 4\r\n \r\n \r\n );\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Form, Col, Button, Modal } from 'react-bootstrap';\r\nimport { toast } from 'react-toastify';\r\nimport { Subscription } from 'rxjs';\r\nimport GetRegulatoryModeDonorByID from '../../../api/Administration/GetRegulatoryModeDonorByID';\r\nimport InsertRegulatoryModeDonor from '../../../api/Administration/InsertRegulatoryModeDonor';\r\nimport RegulatoryMode from '../../../api/Administration/Model/RegulatoryMode';\r\nimport Checkbox from '../../Checkbox';\r\nimport { AppPageWrapper } from '../../NavMenu/AppPageWrapper';\r\nimport PersonnelRegulatoryModes from \"./PersonnelRegulatoryModes\";\r\nimport RegulatoryModeNumberSelect from \"./RegulatoryModeNumberSelect\";\r\n\r\ntype RegulatoryModeNumberAttributes = keyof RegulatoryModeRanks;\r\ninterface RegulatoryModeRanks {\r\n SSNRank: number;\r\n AlternateIDRank: number;\r\n EmployerIDRank: number;\r\n CommercialLicenseRank: number;\r\n}\r\ninterface RegulatoryModeState extends RegulatoryModeRanks {\r\n RegulatoryModeID: number;\r\n SSNDescription: string;\r\n EmployerDescription: string;\r\n AltDescription: string;\r\n CommercialLicenseDescription: string;\r\n DisplayState: boolean;\r\n}\r\nconst DefaultRegulatoryModeOrder: RegulatoryModeState = {\r\n RegulatoryModeID: 0,\r\n SSNRank: 0, SSNDescription: \"\",\r\n EmployerIDRank: 0, EmployerDescription: \"\",\r\n AlternateIDRank: 0, AltDescription: \"\",\r\n CommercialLicenseRank: 0, CommercialLicenseDescription: \"\",\r\n DisplayState: true,\r\n};\r\nexport default class RegulatoryModeForm extends Component<{}, RegulatoryModeState> {\r\n loadSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n state: RegulatoryModeState = {\r\n ...DefaultRegulatoryModeOrder\r\n };\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n resetForm = () => {\r\n this.setState({ ...DefaultRegulatoryModeOrder });\r\n }\r\n changeRegulatoryMode = (event: React.ChangeEvent) => {\r\n this.resetForm();\r\n this.loadSubscription = GetRegulatoryModeDonorByID(event.target.value).subscribe(\r\n data => this.setState({ ...data[0], DisplayState: true }),\r\n error => toast.error(error.message)\r\n )\r\n }\r\n handleInputChange = (event: React.ChangeEvent) => {\r\n const target = event.target;\r\n const value = target.type === 'checkbox' ? target.checked : target.value;\r\n this.setState({ ...this.state, [target.name]: value });\r\n }\r\n\r\n checkAssignedRank(data: number[]) {\r\n if (!data['includes'](1)) {\r\n return true;\r\n }\r\n }\r\n\r\n validate = () => {\r\n let array = [this.state.SSNRank, this.state.EmployerIDRank, this.state.AlternateIDRank, this.state.CommercialLicenseRank];\r\n let isRankOneAssigned = this.checkAssignedRank(array);\r\n if (isRankOneAssigned) {\r\n toast.error(\"Assign Rank 1\");\r\n return false;\r\n }\r\n return true;\r\n }\r\n handleSubmit = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n if (!this.validate()) {\r\n return false;\r\n }\r\n this.saveSubscription = InsertRegulatoryModeDonor(this.state as RegulatoryMode).subscribe(\r\n data => toast.success(data),\r\n error => toast.error(error.message)\r\n )\r\n }\r\n\r\n handleRankSelect = (name: RegulatoryModeNumberAttributes, eventKey: string | null) => {\r\n const RegulatoryModeNumberAttributes: RegulatoryModeNumberAttributes[] = [\"SSNRank\", \"AlternateIDRank\", \"EmployerIDRank\", \"CommercialLicenseRank\"];\r\n const foundEntry: number = parseInt(eventKey || \"0\");\r\n const newState: RegulatoryModeState = { ...this.state, [name]: foundEntry };\r\n const numbersToReset = RegulatoryModeNumberAttributes.filter((record) =>\r\n record !== name && this.state[record] === foundEntry\r\n );\r\n numbersToReset.map(item => { newState[item] = 0 });\r\n this.setState(newState);\r\n }\r\n\r\n RegulatoryField = (label: string, name: RegulatoryModeNumberAttributes, description: keyof RegulatoryModeState) => {\r\n const inputChange = (e: React.ChangeEvent) => this.handleInputChange(e);\r\n const getValue = (key: keyof RegulatoryModeState): string => ((this.state[key] || \"\").toString() || \"\");\r\n const getNumberValue = (key: RegulatoryModeNumberAttributes) => parseInt((this.state[key] || \"\").toString());\r\n const numberInputChange = (eventKey: string | null, _: React.SyntheticEvent) => { this.handleRankSelect(name, eventKey); };\r\n return \r\n {label}\r\n \r\n \r\n \r\n Display Description\r\n \r\n \r\n \r\n \r\n }\r\n\r\n render = () => {\r\n return (\r\n \r\n \r\n \r\n REGULATORY MODE DONOR ID\r\n \r\n \r\n
\r\n \r\n Regulatory Mode\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.RegulatoryField(\"Social Security #\", \"SSNRank\", \"SSNDescription\")}\r\n {this.RegulatoryField(\"Employer ID\", \"EmployerIDRank\", \"EmployerDescription\")}\r\n {this.RegulatoryField(\"Alternate ID\", \"AlternateIDRank\", \"AltDescription\")}\r\n {this.RegulatoryField(\"Commercial License\", \"CommercialLicenseRank\", \"CommercialLicenseDescription\")}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport ImplementationSearchResult from \"../../api/Invitation/Model/ImplementationSearchResult\"\r\nimport CompanyData from \"../../api/Companies/CompanyModel/CompanyData\"\r\nimport { Addresses } from \"../OrderRequests/OrderRequestsModel/Addresses\"\r\n\r\nexport interface EmailCheckResponse {\r\n IsEmailExists: boolean,\r\n AllowAdditionalRole: boolean,\r\n IsTCEmailExists: boolean\r\n}\r\n\r\nexport function CompanyDataObservable(clientName: string, isActivateClient: boolean = false) {\r\n const requestBody: string = JSON.stringify({ clientName: clientName, IsActivateClient: isActivateClient })\r\n\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/GetInactiveClientInformation\", requestBody)\r\n}\r\n\r\nexport function ImplementationSearchObservable(companyName: string, isActivateClinic: boolean = false) {\r\n const requestBody: string = JSON.stringify({ CompanyName: companyName, IsActivateClinic: isActivateClinic })\r\n\r\n return ObservableFromFetch(\"FFOrderClinicFileMaintenance/GetClinicInformation\", requestBody)\r\n}\r\n\r\nexport function EmailCheck(email: string, link?: string) {\r\n const params = { EmailAddress: email }\r\n const requestBody: string = JSON.stringify(link ? { ...params, Link: link } : params)\r\n\r\n return ObservableFromFetch(\"FFOrderClinicEnrollment/DoesEmailExists\", requestBody)\r\n}\r\n\r\nexport function CompanyNameCheck(name: string, link?: string, isClient?: boolean, implementationID?: number) {\r\n var params: object = { InstanceName: name }\r\n if (link) {\r\n params = { ...params, Link: link }\r\n }\r\n if (implementationID) {\r\n params = { ...params, ImplementationID: implementationID }\r\n }\r\n if (isClient) {\r\n params = { ...params, IsClient: isClient }\r\n }\r\n const requestBody: string = JSON.stringify(params)\r\n\r\n return ObservableFromFetch(\"FFOrderClinicEnrollment/DoesInstanceExists\", requestBody)\r\n}\r\n\r\nexport function CompanyCodeCheck(code: string, link?: string) {\r\n const requestBody: string = JSON.stringify({\r\n CompanyCode: code,\r\n Link: link\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderClinicEnrollment/DoesCompanyCodeExists\", requestBody)\r\n}\r\n\r\nexport function UrlCheck(url: string) {\r\n const requestBody: string = new URLSearchParams({\r\n url: url\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderClinicEnrollment/DoesURLExists?\" + requestBody)\r\n}\r\n\r\nexport function AllImplementationsGet(name: string) {\r\n const requestBody: string = new URLSearchParams({\r\n implementationName: name\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderClinicFileMaintenance/GetAllImplementationName?\" + requestBody)\r\n}\r\n","import React from \"react\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport EntityActivation, {ActivationType} from './EntityActivation'\r\n\r\nexport default class CompanyActivation extends React.Component {\r\n render = () => {\r\n return \r\n \r\n \r\n }\r\n}\r\n","import React from \"react\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport EntityActivation, {ActivationType} from './EntityActivation'\r\n\r\nexport default class PortalActivation extends React.Component {\r\n render = () => {\r\n return \r\n \r\n \r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport BusinessType from \"./BusinessType\"\r\n\r\nexport default function BusinessTypesGetObservable(link?: string): Observable {\r\n const requestBody: string = JSON.stringify(link ? { Link: link } : { })\r\n\r\n return ObservableFromFetch(\"FFOrderClinicEnrollment/GetBusinessType\", requestBody)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function CompanyInactivateObservable(implementationID: number, accountID: number, isLocation: boolean = false): Observable {\r\n const requestBody: string = new URLSearchParams({\r\n implementationID: implementationID.toString(),\r\n accountId: accountID.toString(),\r\n isLocation: isLocation.toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/InActivateClient?\" + requestBody)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport CompanyEditData from \"./CompanyModel/CompanyEditData\"\r\n\r\nexport function CompanyUpdateObservable(data: CompanyEditData): Observable {\r\n const requestBody: string = JSON.stringify(data)\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/UpdateClientInformation\", requestBody)\r\n}\r\n\r\nexport function CompanyCreateObservable(data: CompanyEditData): Observable {\r\n const requestBody: string = JSON.stringify(data)\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/CreateCompany\", requestBody)\r\n}","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport CompanyData from \"./CompanyModel/CompanyData\"\r\n\r\nexport default function CompaniesGetObservable(name: string, showInactive: boolean = false): Observable {\r\n const requestBody: string = JSON.stringify({ ClientName: name, IsActivateClient: showInactive })\r\n\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/GetClientInformation\", requestBody)\r\n}\r\n\r\nexport function CompaniesDetailsExportCsv() {\r\n return ObservableFromFetch(\"FFOrderClinicFileMaintenance/ExportCompaniesDetails\")\r\n}\r\n\r\n","import React, { Component } from \"react\"\r\nimport { Subject, Subscription, of, concat } from \"rxjs\"\r\nimport { catchError, debounceTime, filter, map, switchMap } from \"rxjs/operators\"\r\nimport { AsyncTypeahead, InputProps } from \"react-bootstrap-typeahead\"\r\nimport LocationQueryGetObservable from \"../../api/Location/LocationQueryGet\"\r\nimport Address from \"../../api/Location/LocationModel/Address\"\r\n\r\nexport interface AddressInputProps {\r\n id?: string\r\n emptyLabel?: string\r\n promptText?: string\r\n minLength?: number\r\n placeholder?: string\r\n selected?: Address\r\n inputProps?: InputProps\r\n isInvalid?: boolean\r\n disabled?: boolean,\r\n disableSuggestions?: boolean,\r\n onAddressChange: (address: Address | string | undefined) => void\r\n}\r\n\r\ninterface AddressInputState {\r\n options: Address[],\r\n isOptionsLoading: boolean\r\n}\r\n\r\nexport default class AddressInput extends Component {\r\n state: AddressInputState = {\r\n options: [],\r\n isOptionsLoading: false\r\n }\r\n addressesQuery$?: Subject\r\n addressesSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.addressesQuery$ = new Subject()\r\n this.addressesSubscription = this.addressesQuery$.pipe(\r\n debounceTime(500),\r\n filter(query => (query ?? \"\").trim().length >= (this.props.minLength || AddressInput.defaultProps.minLength)),\r\n switchMap((query) => concat(\r\n of({ isOptionsLoading: true }),\r\n LocationQueryGetObservable(query).pipe(\r\n map((options) => ({ isOptionsLoading: false, options: options })),\r\n catchError(() =>\r\n of({ isOptionsLoading: false })\r\n )\r\n )\r\n ))\r\n ).subscribe(\r\n (state: { isOptionsLoading: boolean, options?: Address[] }) => {\r\n state.options ?\r\n this.setState({ isOptionsLoading: state.isOptionsLoading, options: state.options }) :\r\n this.setState({ isOptionsLoading: state.isOptionsLoading })\r\n },\r\n () => this.setState({ isOptionsLoading: false })\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.addressesSubscription && this.addressesSubscription.unsubscribe()\r\n }\r\n\r\n handleSearch = (query: string) => !this.props.disableSuggestions && this.addressesQuery$ && this.addressesQuery$.next(query)\r\n\r\n render() {\r\n return (\r\n option.Text || \"\"}\r\n emptyLabel={this.props.emptyLabel}\r\n minLength={0}\r\n placeholder={this.props.placeholder}\r\n promptText={this.props.promptText}\r\n isLoading={this.state.isOptionsLoading}\r\n onSearch={this.handleSearch}\r\n open={!!this.props.disableSuggestions ? false : undefined}\r\n options={this.state.options}\r\n filterBy={() => true}\r\n inputProps={this.props.inputProps}\r\n isInvalid={this.props.isInvalid}\r\n disabled={this.props.disabled}\r\n onChange={selected => { if (selected[0]) {this.props.onAddressChange(selected[0])}}}\r\n onInputChange={(input) => this.props.onAddressChange(input)}\r\n selected={this.props.selected ? [this.props.selected] : undefined} />\r\n )\r\n }\r\n\r\n static defaultProps = {\r\n id: \"addressSearch\",\r\n emptyLabel: \"No Result Found\",\r\n minLength: 3,\r\n disableSuggestions: true\r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { Container, Modal, Form, Button, Row, Col, Table } from \"react-bootstrap\"\r\n\r\nexport interface AddressData {\r\n ID: string\r\n Address1: string\r\n Zip: string\r\n}\r\n\r\ninterface AddressMatchModalProps {\r\n show: boolean\r\n addresses: AddressData[]\r\n selectedID?: string\r\n title: string\r\n subTitle: string\r\n message?: string\r\n onClose: () => void\r\n onAddressSelect: (address: AddressData) => void\r\n}\r\n\r\nexport default class AddressMatchModal extends React.PureComponent {\r\n render() {\r\n const { addresses, selectedID, title, subTitle, message } = this.props\r\n return (\r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n
{subTitle}
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {addresses.map(item => \r\n \r\n \r\n \r\n )}\r\n \r\n
 Street AddressZip
\r\n this.props.onAddressSelect(item)} />\r\n {item.Address1}{item.Zip}
\r\n
\r\n {message}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Form, Col, Row, Button } from \"react-bootstrap\"\r\nimport { connect } from \"react-redux\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { GetRoleOrderSecurity, SetRoleOrderSecurity, OrderViewSecurity, OrderSecurityException } from \"../../api/Roles/RoleOrderSecurityProcess\"\r\nimport { AppState } from \"../../AppState\"\r\nimport { RoleIdForSelectedCompany, getUserNameForSelectedCompany } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport DualListBox from \"../Administration/DualListBox\"\r\n\r\ninterface OrderSecurityAuthProps {\r\n PrimaryRoleID?: number\r\n UserName?: string\r\n}\r\n\r\ninterface OrderSecurityProps {\r\n companyName: string\r\n currentURL?: string\r\n invitationMode?: boolean\r\n override?: boolean\r\n cancelText: string\r\n submitText: string\r\n cancelVariant?: string\r\n onPrev: () => void\r\n onNext: () => void\r\n}\r\n\r\ninterface OrderSecurityState {\r\n loading: boolean\r\n saving: boolean\r\n overrideOrderSecurity?: boolean\r\n showOrderSecurityForm: boolean\r\n roles: OrderSecurityException[]\r\n selection: OrderSecurityException[]\r\n selectionLeft: string[]\r\n selectionRight: string[]\r\n}\r\n\r\nexport class OrderSecurity extends React.PureComponent {\r\n userRolesSubscription?: Subscription\r\n updateSubscription?: Subscription\r\n state = { loading: false, saving: false, overrideOrderSecurity: this.props.override, showOrderSecurityForm: false, roles: [], selection: [], selectionLeft: [], selectionRight: [] }\r\n\r\n componentDidMount() {\r\n if (this.props.override) {\r\n this.showSecurityForm()\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.userRolesSubscription && this.userRolesSubscription.unsubscribe()\r\n this.updateSubscription && this.updateSubscription.unsubscribe()\r\n }\r\n\r\n onCancel = () => {\r\n if (this.state.overrideOrderSecurity) {\r\n this.setState({ selection: [], selectionLeft: [], selectionRight: [] })\r\n }\r\n this.props.onPrev()\r\n }\r\n\r\n onSubmit = () => {\r\n if (this.state.showOrderSecurityForm) {\r\n this.updateOrderSecurity()\r\n return\r\n }\r\n if (this.state.overrideOrderSecurity) {\r\n this.showSecurityForm()\r\n } else {\r\n this.props.onNext()\r\n }\r\n }\r\n\r\n showSecurityForm() {\r\n const primaryRoleID = this.props.PrimaryRoleID || 0\r\n this.setState({ showOrderSecurityForm: true, loading: true })\r\n this.userRolesSubscription = GetRoleOrderSecurity(primaryRoleID, this.props.currentURL).subscribe(\r\n (data: OrderViewSecurity) => {\r\n this.setState({\r\n roles: [...data.CanOnlySeeOrdersTheyHavePlacedRole, ...data.CanSeeOrdersAnyUserHasPlacedRole],\r\n selection: data.CanOnlySeeOrdersTheyHavePlacedRole,\r\n loading: false\r\n })\r\n },\r\n error => {\r\n toast.error(error)\r\n this.setState({ loading: false })\r\n }\r\n )\r\n }\r\n\r\n updateOrderSecurity() {\r\n this.setState({ saving: true })\r\n const roles: OrderSecurityException[] = this.state.roles\r\n const selection: OrderSecurityException[] = this.state.selection\r\n const canSeeOrdersAnyUserHasPlacedRoles = roles.filter((role: OrderSecurityException) => !selection.includes(role))\r\n const canOnlySeeOrdersTheyHavePlacedRoles = roles.filter((role: OrderSecurityException) => selection.includes(role))\r\n const data = {\r\n CanSeeOrdersAnyUserHasPlacedRole: canSeeOrdersAnyUserHasPlacedRoles,\r\n CanOnlySeeOrdersTheyHavePlacedRole: canOnlySeeOrdersTheyHavePlacedRoles,\r\n ModifiedBy: this.props.UserName || \"\",\r\n Link: this.props.currentURL || \"\"\r\n }\r\n this.updateSubscription && this.updateSubscription.unsubscribe()\r\n this.updateSubscription = SetRoleOrderSecurity(data).subscribe(\r\n (data) => {\r\n this.setState({ saving: false })\r\n this.props.onNext()\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n render() {\r\n const { showOrderSecurityForm, loading, roles, selection } = this.state\r\n const content = <>\r\n \r\n Order Security\r\n \r\n \r\n {!showOrderSecurityForm && \r\n

Do you want certain user roles to be able to view Orders placed by other users?

\r\n \r\n \r\n this.setState({ overrideOrderSecurity: true })} />\r\n \r\n \r\n this.setState({ overrideOrderSecurity: false })} />\r\n \r\n \r\n
}\r\n {showOrderSecurityForm && \r\n
\r\n \r\n Company\r\n \r\n \r\n \r\n \r\n this.setState({ selection: [...selected] })}\r\n />\r\n \r\n
}\r\n
\r\n \r\n \r\n {this.props.submitText}\r\n \r\n \r\n\r\n return <>\r\n {this.props.invitationMode && {content}}\r\n {!this.props.invitationMode && {content}}\r\n \r\n }\r\n\r\n static defaultProps = { cancelText: \"Previous\", submitText: \"Next\" }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): OrderSecurityAuthProps {\r\n return {\r\n PrimaryRoleID: RoleIdForSelectedCompany(state),\r\n UserName: getUserNameForSelectedCompany(state)\r\n }\r\n}\r\nconst ConnectedOrderSecurity = connect(mapStateToProps, null)(OrderSecurity)\r\nexport default ConnectedOrderSecurity","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport interface OrderViewSecurity {\r\n CanSeeOrdersAnyUserHasPlacedRole: OrderSecurityException[]\r\n CanOnlySeeOrdersTheyHavePlacedRole: OrderSecurityException[]\r\n ImplementationID?: number\r\n ClientID?: number\r\n ModifiedBy?: string\r\n Link?: string\r\n}\r\n\r\nexport interface OrderSecurityException {\r\n Title: string\r\n Description: string\r\n Level: number\r\n RoleOrderSecurityID: number\r\n ImplementationID: number\r\n ClientID: number\r\n RoleID: number\r\n Active: boolean\r\n ModifiedBy?: any\r\n ModifiedOn: string\r\n}\r\n\r\nexport function GetRoleOrderSecurity(clientRoleID: number, link?: string) {\r\n const params = { ClientRoleID: clientRoleID }\r\n const requestBody: string = JSON.stringify(link ? { ...params, Link: link } : params)\r\n\r\n return ObservableFromFetch(\"FFOrderRoleOrderSecurity/GetRoleOrderSecurity\", requestBody)\r\n}\r\n\r\nexport function SetRoleOrderSecurity(data: OrderViewSecurity) {\r\n const requestBody = JSON.stringify(data)\r\n return ObservableFromFetch(\"FFOrderRoleOrderSecurity/SetRoleOrderSecurityOfClient\", requestBody)\r\n}\r\n\r\n\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport interface LabCreate {\r\n AccountId?: number\r\n ImplementationClientFlag: string\r\n ImplementationID?: number\r\n LabAccount: string\r\n LabCode: string\r\n Link?: string\r\n}\r\n\r\nexport interface LabUpload {\r\n Base64String: string\r\n CompanyID?: number\r\n ImplementationClientFlag: string\r\n ImplementationID?: number\r\n Link?: string\r\n}\r\n\r\nexport function LabAccountCreate(params: LabCreate) {\r\n const requestBody: string = JSON.stringify(params);\r\n\r\n return ObservableFromFetch(\"FFOrderLaboratory/LaboratoryInsert\", requestBody)\r\n}\r\n\r\nexport function LabAccountUpload(params: LabUpload) {\r\n const requestBody: string = JSON.stringify(params);\r\n\r\n return ObservableFromFetch(\"FFOrderLaboratory/UploadLab\", requestBody)\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Form, Col, Row, Button } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport CSVUploadModal from \"./CSVUploadModal\"\r\nimport { LabAccountLookup } from \"../../api/LabService/LabAccountsGet\"\r\nimport { LabAccountCreate, LabCreate, LabUpload, LabAccountUpload } from \"../../api/LabService/LabAccountCreate\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { ApiRootUrl } from \"../../api/ApiUrl\"\r\nimport { LabAccountMaxLength } from \"../../config/Constants\"\r\n\r\ninterface LabAccountSelectionProps {\r\n cancelText: string\r\n isLabSet: boolean\r\n isClinic: boolean\r\n isLocation: boolean\r\n implementationID?: number\r\n accountID?: number\r\n isLoggedIn?: boolean\r\n currentURL?: string\r\n onPrev: () => void\r\n onNext: () => void\r\n onUpdate: () => void\r\n}\r\n\r\ninterface LabAccountSelectionState {\r\n showUploadSpreadsheet: boolean\r\n lab: string\r\n labAccount: string,\r\n labAccountCode?: string\r\n checking: boolean\r\n saving: boolean\r\n}\r\n\r\nexport default class LabAccountSelection extends React.PureComponent {\r\n state: LabAccountSelectionState = {\r\n showUploadSpreadsheet: false,\r\n lab: \"\",\r\n labAccount: \"\",\r\n checking: false,\r\n saving: false\r\n }\r\n\r\n checkSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n componentWillUnmount() {\r\n this.checkSubscription && this.checkSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n handleLabChange = (e: React.ChangeEvent) => this.setState({ lab: e.target.value, labAccountCode: undefined })\r\n handleLabAccountChange = (e: React.ChangeEvent) => this.setState({ labAccount: e.target.value, labAccountCode: undefined })\r\n\r\n handleLabCheck = () => {\r\n this.setState({ checking: true })\r\n this.checkSubscription = LabAccountLookup(this.state.labAccount, this.state.lab, false, this.props.currentURL || \"\").subscribe(\r\n data => {\r\n this.setState({ labAccountCode: data[0].Code, checking: false })\r\n toast.success(\"Lab Account Found.\")\r\n },\r\n error => this.handleAPIError(error, { checking: false })\r\n )\r\n }\r\n\r\n handleNext = () => {\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n\r\n var params: LabCreate = {\r\n ImplementationClientFlag: this.props.isClinic ? \"1\" : this.props.isLocation ? \"4\" : \"2\",\r\n LabAccount: this.state.labAccount.toUpperCase(),\r\n LabCode: this.state.lab || \"\"\r\n }\r\n\r\n if (this.props.isLoggedIn) {\r\n params.ImplementationID = this.props.implementationID || 0\r\n params.AccountId = this.props.accountID || 0\r\n }\r\n else {\r\n params.Link = this.props.currentURL || \"\"\r\n }\r\n\r\n this.saveSubscription = LabAccountCreate(params).subscribe(\r\n (data) => {\r\n toast.success(data)\r\n this.setState({ lab: \"\", labAccount: \"\", labAccountCode: undefined, checking: false, saving: false })\r\n this.props.onUpdate()\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n handleOpenUpload = () => this.setState({ showUploadSpreadsheet: true })\r\n handleBulkUploaded = () => {\r\n this.setState({ showUploadSpreadsheet: false })\r\n this.props.onUpdate()\r\n }\r\n\r\n handleStartUploading = (fileName: string, fileContent: string) => {\r\n var params: LabUpload = {\r\n ImplementationClientFlag: this.props.isClinic ? \"1\" : \"2\",\r\n Base64String: fileContent\r\n }\r\n\r\n if (this.props.isLoggedIn) {\r\n params.ImplementationID = this.props.implementationID || 0\r\n if (!this.props.isClinic) { params.CompanyID = this.props.accountID || 0 }\r\n }\r\n else {\r\n params.Link = this.props.currentURL || \"\"\r\n }\r\n\r\n return LabAccountUpload(params)\r\n }\r\n\r\n render() {\r\n const { showUploadSpreadsheet, lab, labAccount, labAccountCode, checking, saving } = this.state\r\n return (<>\r\n \r\n \r\n LAB ACCOUNT SELECTION\r\n \r\n \r\n
\r\n

Please select your lab and then enter your lab account

\r\n \r\n Select your Lab\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Lab Account\r\n \r\n \r\n \r\n \r\n Check Account\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {!this.props.isLocation && }\r\n
\r\n {!this.props.isLoggedIn && }\r\n \r\n Submit\r\n
\r\n
\r\n
\r\n {showUploadSpreadsheet &&\r\n this.setState({ showUploadSpreadsheet: false })}\r\n onStartUpload={this.handleStartUploading}\r\n onUploaded={this.handleBulkUploaded}>\r\n

To create multiple lab codes for a company at once:
\r\n 1. Create a Spreadsheet with the following columns:
\r\n A. Laboratory (CRL)
\r\n B. Lab Code
\r\n 2. Save the Spreadsheet as a CSV text file.
\r\n 3. Upload the file here.

\r\n
}\r\n )\r\n }\r\n\r\n static defaultProps = { cancelText: \"Previous\", isLoggedIn: false }\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport LabAccount from \"./Model/LabAccount\"\r\n\r\nexport default function LabAccountListGet(implementationID: number, accountID: number, isLocation: boolean) {\r\n const requestBody: string = new URLSearchParams({\r\n implementationID: implementationID.toString(),\r\n accountID: accountID.toString(),\r\n isLocation: isLocation.toString()\r\n }).toString()\r\n\r\n return ObservableFromFetch<{ActiveLabAccount: LabAccount[], InActiveLabAccount: LabAccount[]}>(\"FFOrderLaboratory/GetLabAccount?\" + requestBody)\r\n}","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport LabAccount from \"./Model/LabAccount\"\r\n\r\nexport default function ActivateAndInActiveLabAccountObservable(activeLabAccounts: LabAccount[], inactiveLabAccounts: LabAccount[]) {\r\n const requestBody = JSON.stringify({ ActiveLabAccount: activeLabAccounts, InActiveLabAccount: inactiveLabAccounts })\r\n\r\n return ObservableFromFetch(\"FFOrderLaboratory/ActivateAndInActiveLabAccount\", requestBody)\r\n}","import React from \"react\"\r\nimport { Modal, Form, Col, Row, Button, Table, Container } from \"react-bootstrap\"\r\nimport { FaChevronLeft, FaAngleDoubleLeft, FaAngleDoubleUp, FaAngleDown, FaAngleDoubleRight, FaAngleDoubleDown, FaChevronRight, FaAngleUp } from \"react-icons/fa\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport DualListBox from \"./DualListBox\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport AddNewLabAccountSelection from \"../Invitation/LabAccountSelection\"\r\nimport LabAccountListGet from \"../../api/Administration/LabAccountListGet\"\r\nimport LabAccount from \"../../api/Administration/Model/LabAccount\"\r\nimport ActivateAndInActiveLabAccountObservable from \"../../api/Administration/ActivateAndInActiveLabAccount\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { IsOnTrack } from \"../../App\";\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\n\r\ninterface LabAccountSelectionProps {\r\n portalMode?: boolean\r\n locationMode?: boolean\r\n name: string\r\n implementationID: number\r\n accountID: number\r\n show: boolean\r\n onClose: () => void\r\n}\r\n\r\ninterface LabAccountSelectionState {\r\n addNewLabAccountSelection: boolean\r\n loading: boolean\r\n saving: boolean\r\n selectionLeft: number[]\r\n selectionRight: number[]\r\n leftItems: LabAccount[]\r\n rightItems: LabAccount[]\r\n showConfirmSave: boolean\r\n}\r\n\r\nexport default class LabAccountSelection extends React.PureComponent {\r\n subscription?: Subscription\r\n state: LabAccountSelectionState = {\r\n addNewLabAccountSelection: false,\r\n loading: false,\r\n saving: false,\r\n selectionLeft: [],\r\n selectionRight: [],\r\n leftItems: [],\r\n rightItems: [],\r\n showConfirmSave: false\r\n }\r\n\r\n componentDidUpdate(prevProps: LabAccountSelectionProps) {\r\n if (this.props.show && this.props.show !== prevProps.show) {\r\n this.loadLabAccounts()\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n }\r\n\r\n onCancel = () => {\r\n this.props.onClose()\r\n this.setState({ leftItems: [], rightItems: [],selectionLeft: [], selectionRight: [], saving:false, loading:false })\r\n }\r\n\r\n onSubmit = () => {\r\n if(this.state.leftItems.length === 0){\r\n this.saveData()\r\n return\r\n }\r\n const visibleLabAccounts = this.state.leftItems.filter(item => !item.HideOnOrder)\r\n if (visibleLabAccounts.length > 0){\r\n this.saveData()\r\n }\r\n else {\r\n this.setState({ showConfirmSave: true })\r\n }\r\n }\r\n saveData = () => {\r\n const activeLabAccounts = this.state.leftItems\r\n const inActiveLabAccounts = this.state.rightItems\r\n\r\n this.setState({ saving: true })\r\n this.subscription = ActivateAndInActiveLabAccountObservable(activeLabAccounts, inActiveLabAccounts).subscribe(\r\n data => {\r\n this.setState({ saving: false })\r\n toast.success(data)\r\n this.loadLabAccounts()\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n handleConfirmSave = () => {\r\n this.setState({ showConfirmSave: false })\r\n this.saveData()\r\n }\r\n handleConfirmClose = () => {\r\n this.setState({ showConfirmSave: false })\r\n }\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n loadLabAccounts() {\r\n this.setState({ loading: true })\r\n this.subscription = LabAccountListGet(this.props.implementationID, this.props.accountID, !!this.props.locationMode).subscribe(\r\n (data: { ActiveLabAccount: LabAccount[], InActiveLabAccount: LabAccount[] }) => {\r\n const leftItems = data.ActiveLabAccount.sort((a: LabAccount, b: LabAccount) => a.LabAccountNumber < b.LabAccountNumber ? -1 : a.LabAccountNumber > b.LabAccountNumber ? 1 : 0)\r\n const rightItems = data.InActiveLabAccount.sort((a: LabAccount, b: LabAccount) => a.LabAccountNumber < b.LabAccountNumber ? -1 : a.LabAccountNumber > b.LabAccountNumber ? 1 : 0)\r\n const availableLabAccounts = [...data.ActiveLabAccount, ...data.InActiveLabAccount].sort((a: LabAccount, b: LabAccount) => a.LabAccountNumber < b.LabAccountNumber ? -1 : a.LabAccountNumber > b.LabAccountNumber ? 1 : 0)\r\n this.setState({ loading: false, leftItems: leftItems, rightItems: rightItems, selectionLeft: [], selectionRight: [] })\r\n },\r\n error => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ loading: false })\r\n }\r\n )\r\n }\r\n moveLeftToRight(all: boolean) {\r\n const selectionLeft: number[] = []\r\n const ids = all ? this.state.leftItems.map(item => item.ProviderMappingID) : this.state.selectionLeft\r\n const leftItems = this.state.leftItems.filter(item => !ids.includes(item.ProviderMappingID))\r\n const newRightItems = [...this.state.rightItems, ...this.state.leftItems.filter(item => ids.includes(item.ProviderMappingID))]\r\n const rightItems = newRightItems.sort((a: LabAccount, b: LabAccount) => a.LabAccountNumber < b.LabAccountNumber ? -1 : a.LabAccountNumber > b.LabAccountNumber ? 1 : 0)\r\n this.setState({ selectionLeft: selectionLeft, leftItems: leftItems, rightItems: rightItems })\r\n }\r\n moveRightToLeft(all: boolean) {\r\n const selectionRight: number[] = []\r\n const ids = all ? this.state.rightItems.map(item => item.ProviderMappingID) : this.state.selectionRight\r\n const rightItems = this.state.rightItems.filter(item => !ids.includes(item.ProviderMappingID))\r\n const newLeftItems = [...this.state.leftItems, ...this.state.rightItems.filter(item => ids.includes(item.ProviderMappingID))]\r\n const leftItems = newLeftItems.sort((a: LabAccount, b: LabAccount) => a.LabAccountNumber < b.LabAccountNumber ? -1 : a.LabAccountNumber > b.LabAccountNumber ? 1 : 0)\r\n this.setState({ selectionRight: selectionRight, leftItems: leftItems, rightItems: rightItems })\r\n }\r\n handleLeftItemClick = (event: React.MouseEvent, id: number) => {\r\n\r\n if ((!event.shiftKey) && (!event.ctrlKey)) {\r\n const selectionLeft: number[] = [id]\r\n this.setState({ selectionLeft: selectionLeft })\r\n return\r\n }\r\n if (this.state.selectionLeft.includes(id)) {\r\n this.setState({ selectionLeft: this.state.selectionLeft.filter(item => item !== id) })\r\n } else {\r\n this.setState({ selectionLeft: [...this.state.selectionLeft, id] })\r\n }\r\n }\r\n handleRightItemClick = (event: React.MouseEvent, id: number) => {\r\n if ((!event.shiftKey) && (!event.ctrlKey)) {\r\n const selectionRight: number[] = [id]\r\n this.setState({ selectionRight: selectionRight })\r\n return\r\n }\r\n if (this.state.selectionRight.includes(id)) {\r\n this.setState({ selectionRight: this.state.selectionRight.filter(item => item !== id) })\r\n } else {\r\n this.setState({ selectionRight: [...this.state.selectionRight, id] })\r\n }\r\n }\r\n\r\n itemsTable = (data: LabAccount[], isLeft: boolean, editable: boolean = false) => {\r\n const { selectionLeft, selectionRight } = this.state\r\n return (\r\n \r\n \r\n {data.map(item => \r\n ) => isLeft ?\r\n this.handleLeftItemClick(e, item.ProviderMappingID) :\r\n this.handleRightItemClick(e, item.ProviderMappingID)}\r\n style={{ userSelect: \"none\" }}\r\n >\r\n {item.LabAccountNumber}\r\n \r\n {editable && }\r\n )}\r\n \r\n
\r\n ) => this.handleHideOnOrderChange(e, item.ProviderMappingID)}\r\n />\r\n
\r\n )\r\n }\r\n handleHideOnOrderChange = (event: React.ChangeEvent, itemId: number) => {\r\n const selectedCode = event.target.value\r\n\r\n const itemIndex = this.state.leftItems.findIndex(item => item.ProviderMappingID === itemId);\r\n if (itemIndex < 0) {\r\n return\r\n }\r\n const leftItems = [...this.state.leftItems]\r\n leftItems[itemIndex].HideOnOrder = event.target.checked\r\n this.setState({ leftItems: leftItems })\r\n\r\n }\r\n\r\n render() {\r\n const { loading, saving, addNewLabAccountSelection, leftItems, rightItems, selectionLeft, selectionRight } = this.state\r\n const { portalMode, name, locationMode } = this.props\r\n const disabled = loading || saving\r\n const isOnTrack = IsOnTrack()\r\n const showConfirmSave = this.state.showConfirmSave\r\n\r\n\r\n return (\r\n <>\r\n {addNewLabAccountSelection && this.setState({ addNewLabAccountSelection: false })}\r\n onNext={() => this.setState({ addNewLabAccountSelection: false })}\r\n onUpdate={() => { this.setState({ addNewLabAccountSelection: false }); this.loadLabAccounts() }} />}\r\n {showConfirmSave &&\r\n this.handleConfirmSave()}\r\n onHide={() => this.handleConfirmClose()} />\r\n }\r\n\r\n \r\n \r\n Lab Accounts\r\n \r\n \r\n \r\n
\r\n \r\n {portalMode && Clinic}\r\n {!portalMode && !locationMode && Company}\r\n {!!locationMode && Location}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {isOnTrack && Active Lab Accounts}\r\n {!isOnTrack && Active Lab Accounts}\r\n {!isOnTrack && Hide On Order}\r\n \r\n Inactive Lab Accounts\r\n \r\n \r\n \r\n {this.itemsTable(leftItems, true, !isOnTrack)}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n\r\n \r\n {this.itemsTable(rightItems, false, false)}\r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n Submit\r\n \r\n
\r\n \r\n )\r\n }\r\n\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport SubscriptionPlan from \"./Model/SubscriptionPlan\"\r\n\r\nexport default function GetSubscriptionPlans() {\r\n return ObservableFromFetch(\"FFOrderSubscriptionPermission/GetSubscriptionPlan\")\r\n}","import React from \"react\"\r\nimport { Modal, Form, Col, Row, Button } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport GetSubscriptionPlans from \"../../api/Administration/GetSubscriptionPlans\"\r\nimport SubscriptionPlan from \"../../api/Administration/Model/SubscriptionPlan\"\r\nimport ActionButton from \"../ActionButton\"\r\n\r\ninterface SubscriptionModalProps {\r\n show: boolean\r\n subscriptionPlanID: number\r\n onCancel: () => void\r\n onSubmit: (subscriptionPlanID: number, subscriptionPlan: SubscriptionPlan) => void\r\n}\r\n\r\ninterface SubscriptionModalState {\r\n availableSubscriptionPlans: SubscriptionPlan[]\r\n loading: boolean\r\n subscriptionPlanID: number\r\n}\r\n\r\nexport default class SubscriptionModal extends React.PureComponent {\r\n subscription?: Subscription\r\n state = { loading: false, subscriptionPlanID: this.props.subscriptionPlanID, availableSubscriptionPlans: [] }\r\n\r\n componentDidUpdate(prevProps: SubscriptionModalProps) {\r\n if (this.props.show && this.props.show !== prevProps.show) {\r\n this.loadSubscriptionPlans()\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n }\r\n\r\n loadSubscriptionPlans = () => {\r\n this.setState({ loading: true })\r\n this.subscription = GetSubscriptionPlans().subscribe(\r\n (data: SubscriptionPlan[]) => this.setState({ loading: false, availableSubscriptionPlans: data }),\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ loading: false })\r\n },\r\n () => this.setState({ loading: false })\r\n )\r\n }\r\n\r\n onCancel = () => {\r\n this.props.onCancel()\r\n }\r\n\r\n onSubmit = () => {\r\n const selectedPlan: SubscriptionPlan = this.state.availableSubscriptionPlans.filter((plan: SubscriptionPlan) => plan.SubscriptionPlanID === this.state.subscriptionPlanID)[0]\r\n this.props.onSubmit(this.state.subscriptionPlanID, selectedPlan)\r\n }\r\n\r\n render() {\r\n const { availableSubscriptionPlans, loading, subscriptionPlanID, } = this.state\r\n const currentPlan: SubscriptionPlan = availableSubscriptionPlans.filter((plan: SubscriptionPlan) => plan.SubscriptionPlanID === this.props.subscriptionPlanID)[0]\r\n return (\r\n <>\r\n \r\n \r\n Change Subscription\r\n \r\n \r\n
\r\n \r\n Current Subscription\r\n \r\n \r\n \r\n \r\n \r\n New Subscription\r\n \r\n ) => this.setState({ subscriptionPlanID: Number(e.target.value) }) }>\r\n \r\n {this.state.availableSubscriptionPlans.map((plan: SubscriptionPlan) => )}\r\n \r\n \r\n \r\n \r\n By Clicking the Change Button the Current Subscription will be Deactivated and the New Subscription will become the Active Subscription\r\n \r\n
\r\n
\r\n \r\n \r\n Update\r\n \r\n
\r\n \r\n )\r\n }\r\n\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { AccountLimit } from \"../../config/Constants\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function AutoFilterPortalsGetObservable(filter: string): Observable {\r\n const requestBody: string = JSON.stringify({ Name: filter, Limit: AccountLimit })\r\n return ObservableFromFetch(\"FFOrderClinicFileMaintenance/PortalWildcardSearch\", requestBody)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport PortalData from \"./PortalModel/PortalData\"\r\n\r\nexport default function PortalsGetObservable(name: string, showInactive: boolean = false): Observable {\r\n const requestBody: string = JSON.stringify({ CompanyName: name, ShowAll: showInactive })\r\n\r\n return ObservableFromFetch(\"FFOrderClinicFileMaintenance/GetClinicInformation\", requestBody)\r\n}\r\n\r\nexport function PortalGetObservable(implementationId: number) {\r\n const requestBody: string = new URLSearchParams({ ImplementationID: implementationId.toString() }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderClinicFileMaintenance/GetPortal?\" + requestBody)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport PortalEditData from \"./PortalModel/PortalEditData\"\r\n\r\nexport default function PortalUpdateObservable(data: PortalEditData): Observable {\r\n const requestBody: string = JSON.stringify(data)\r\n return ObservableFromFetch(\"FFOrderClinicFileMaintenance/UpdateClinicInformation\", requestBody)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function PortalInactivateObservable(implementationID: number): Observable {\r\n const requestBody: string = new URLSearchParams({ implementationID: implementationID.toString() }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderClinicFileMaintenance/InActivateClinic?\" + requestBody)\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport ImplementationImage from \"./Model/ImplementationImage\"\r\n\r\nexport interface ImplementationImageData {\r\n ImplementationActiveImages: ImplementationImage[]\r\n ImplementationInActiveImages: ImplementationImage[]\r\n}\r\n\r\nexport default function GetAllImplementationImageByImplementationID(implementationID: number) {\r\n const requestBody: string = new URLSearchParams({ ImplementationID: implementationID.toString() }).toString()\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/GetAllImplementationImageByImplementationID?\" + requestBody)\r\n}\r\n","import { format, parseISO } from \"date-fns\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function UpdateBrandingImage(implementationID: number, implementationImageID: number, activeDate?: string, inactiveDate?: string) {\r\n const requestBody: string = JSON.stringify({\r\n ImplementationID: implementationID,\r\n ImplementationImageID: implementationImageID,\r\n ActiveDate: format(parseISO(activeDate || \"\"), \"MM/dd/yyyy\"),\r\n InActiveDate: format(parseISO(inactiveDate || \"\"), \"MM/dd/yyyy\")\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/UpdateImplementationImage\", requestBody)\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Button, Col, Row, Form } from \"react-bootstrap\"\r\nimport DatePicker from \"react-datepicker\"\r\nimport { BirthdayInput } from \"../FormattedInputs/BirthdayInput\"\r\nimport { parseISO } from \"date-fns\"\r\n\r\ninterface EditActiveImageDateProps {\r\n show: boolean\r\n activeDate?: string\r\n inactiveDate?: string\r\n onCancel: () => void\r\n onUpdate: (activeDate: Date, inactiveDate: Date) => void\r\n}\r\n\r\n\r\ninterface EditActiveImageDateState {\r\n activeDate: Date\r\n inactiveDate?: Date\r\n}\r\n\r\nexport default class EditActiveImageDate extends React.PureComponent {\r\n state: EditActiveImageDateState = {\r\n activeDate: parseISO(this.props.activeDate || \"\"),\r\n inactiveDate: parseISO(this.props.inactiveDate || \"\"),\r\n }\r\n\r\n activeDate = React.createRef()\r\n inactiveDate = React.createRef()\r\n\r\n render() {\r\n const { activeDate, inactiveDate } = this.state\r\n const validActiveDate = !!activeDate\r\n const validInactiveDate = !!inactiveDate && !!activeDate && activeDate <= inactiveDate\r\n const canSave = validActiveDate && validInactiveDate\r\n return (\r\n \r\n \r\n Edit Active Image Date\r\n \r\n \r\n
\r\n \r\n Active Date\r\n \r\n { if (this.activeDate && this.activeDate.current && e.key === 'Tab') { this.activeDate.current.setOpen(false) } }}\r\n onChange={date => this.setState({ activeDate: date as Date, inactiveDate: undefined })}\r\n customInput={} />\r\n \r\n \r\n Inactive Date\r\n \r\n { if (this.inactiveDate && this.inactiveDate.current && e.key === 'Tab') { this.inactiveDate.current.setOpen(false) } }}\r\n onChange={date => this.setState({ inactiveDate: date as Date })}\r\n customInput={} />\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
)\r\n }\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport PortalLogoModel from \"./Model/PortalLogoModel\"\r\n\r\nexport default function PortalLogoInsert(logo: PortalLogoModel) {\r\n const requestBody = JSON.stringify(logo)\r\n return ObservableFromFetch(\"FFOrderClinicEnrollment/InsertPortalLogo\", requestBody)\r\n}","import * as React from \"react\"\r\nimport { Modal, Form, Row, Col, Button, InputGroup, Table, Container, ProgressBar, Spinner } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport DatePicker from 'react-datepicker'\r\nimport \"react-datepicker/dist/react-datepicker.css\"\r\nimport { FaChevronLeft, FaChevronUp, FaEdit } from \"react-icons/fa\"\r\nimport { of, Subject, Subscription, timer } from \"rxjs\"\r\nimport { switchMap, startWith, scan, takeWhile, map } from \"rxjs/operators\"\r\nimport { BirthdayInput } from \"../FormattedInputs/BirthdayInput\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { format } from \"date-fns\"\r\nimport { MaxFileNameLength, MaxImageFileSize, MaxLogoImageWidth, MaxLogoImageHeight } from \"../../config/Constants\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport ImplementationImage from \"../../api/Administration/Model/ImplementationImage\"\r\nimport GetAllImplementationImageByImplementationID, { ImplementationImageData } from \"../../api/Administration/GetAllImplementationImageByImplementationID\"\r\nimport UpdateBrandingImage from \"../../api/Administration/UpdateBrandingImage\"\r\nimport EditActiveImageDate from \"./EditActiveImageDate\"\r\nimport PortalLogoInsert from \"../../api/Invitation/PortalLogoInsert\"\r\nimport PortalLogoModel from \"../../api/Invitation/Model/PortalLogoModel\"\r\n\r\ninterface ManageImagesProps {\r\n show: boolean\r\n implementationID: number\r\n onClose: () => void\r\n}\r\n\r\ninterface ManageImagesUploadingState {\r\n fileName: string\r\n progressBarKey: string\r\n fileContent?: string\r\n isFileNameValid: boolean\r\n isFileSizeValid: boolean\r\n isFileTypeValid: boolean\r\n isLogoSizeValid: boolean\r\n uploadPercentage?: number\r\n uploading: boolean\r\n uploadError: boolean\r\n activeDate?: Date\r\n inactiveDate?: Date\r\n activeDateCanShowInvalid: boolean\r\n inactiveDateCanShowInvalid: boolean\r\n}\r\n\r\ninterface ManageImagesSelectionState {\r\n selectionRight?: number\r\n activeImages: ImplementationImage[]\r\n inactiveImages: ImplementationImage[]\r\n}\r\n\r\ninterface ManageImagesDatesEditState {\r\n editActiveDate: boolean\r\n data?: ImplementationImageData\r\n}\r\n\r\ninterface ManageImagesState extends ManageImagesUploadingState, ManageImagesSelectionState, ManageImagesDatesEditState {\r\n loading: boolean\r\n saving: boolean\r\n}\r\n\r\nexport default class ManageImages extends React.PureComponent {\r\n emptyState: ManageImagesState = {\r\n loading: false,\r\n saving: false,\r\n editActiveDate: false,\r\n progressBarKey: \"progressBarKey\",\r\n isFileNameValid: true,\r\n isFileSizeValid: true,\r\n isFileTypeValid: true,\r\n isLogoSizeValid: true,\r\n fileName: \"\",\r\n uploadPercentage: undefined,\r\n uploading: false,\r\n uploadError: false,\r\n activeDateCanShowInvalid: false,\r\n inactiveDateCanShowInvalid: false,\r\n activeDate: undefined,\r\n inactiveDate: undefined,\r\n activeImages: [],\r\n inactiveImages: []\r\n }\r\n state: ManageImagesState = { ...this.emptyState }\r\n\r\n file = React.createRef()\r\n activeDate = React.createRef()\r\n inactiveDate = React.createRef()\r\n loadSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n uploadSubscription?: Subscription\r\n fileUploadSimulationSubscription?: Subscription\r\n fileUploadSimulation$ = new Subject()\r\n\r\n componentDidMount() {\r\n this.fileUploadSimulationSubscription = this.fileUploadSimulation$.pipe(\r\n switchMap(enabled =>\r\n enabled\r\n ? timer(0, 500).pipe(\r\n startWith(5),\r\n scan((acc, curr) => acc + 5),\r\n takeWhile(value => value <= 90 && this.state.uploading),\r\n map(value => ({ value: value, write: true })))\r\n : of({ value: 100, write: false })\r\n )\r\n ).subscribe(\r\n (o: { value: number, write: boolean }) => o.write && this.setState({ uploadPercentage: o.value }),\r\n () => { }\r\n )\r\n this.setState({ loading: true })\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.uploadSubscription && this.uploadSubscription.unsubscribe()\r\n this.fileUploadSimulationSubscription && this.fileUploadSimulationSubscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: ManageImagesProps, prevState: ManageImagesState) {\r\n if (!prevState.uploading && this.state.uploading) {\r\n this.fileUploadSimulation$.next(true)\r\n } else if (prevState.uploading && !this.state.uploading) {\r\n this.fileUploadSimulation$.next(false)\r\n }\r\n if (!prevState.loading && this.state.loading) {\r\n this.loadImplementationImages()\r\n }\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n loadImplementationImages = () => {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.loadSubscription = GetAllImplementationImageByImplementationID(this.props.implementationID).subscribe(\r\n data => this.setState({\r\n loading: false,\r\n activeImages: data.ImplementationActiveImages || [],\r\n inactiveImages: data.ImplementationInActiveImages || []\r\n }),\r\n error => this.handleAPIError(error, { loading: false })\r\n )\r\n }\r\n\r\n handleFileSelect = (e: React.ChangeEvent) => {\r\n const file = e.target && e.target.files && e.target.files[0]\r\n if (!file) {\r\n return\r\n }\r\n const fileName = file.name\r\n const fileType = file.type\r\n const ext = (fileName.lastIndexOf('.') >= 0) ? fileName.substring(fileName.lastIndexOf('.') + 1) : \"\"\r\n const isFileNameValid = fileName.length < MaxFileNameLength\r\n const isFileSizeValid = file.size < MaxImageFileSize\r\n const isFileTypeValid = (((ext.toLowerCase() === \"bmp\") || (ext.toLowerCase() === \"jpg\") || (ext.toLowerCase() === \"jpeg\")) && ((fileType.toLowerCase() === \"image/bmp\") || (fileType.toLowerCase() === \"image/jpeg\")) )\r\n this.setState({ isFileNameValid: isFileNameValid, isFileSizeValid: isFileSizeValid, isFileTypeValid: isFileTypeValid })\r\n if (isFileNameValid && isFileSizeValid) {\r\n if (isFileTypeValid) {\r\n var reader = new FileReader()\r\n const self = this\r\n reader.onload = function (e) {\r\n const result = e.target?.result as string || \"\"\r\n const stringLength = result.indexOf('base64') + 7\r\n const fileContent = result.slice(stringLength, result.length)\r\n if (fileContent) {\r\n const img = new Image()\r\n img.onload = function () {\r\n let prm = createImageBitmap(img)\r\n prm.then(\r\n result => {\r\n const width = result.width\r\n const height = result.height\r\n const isLogoSizeValid = ((width <= MaxLogoImageWidth) && (height <= MaxLogoImageHeight))\r\n if (isLogoSizeValid) {\r\n self.setState({ fileName: file.name, fileContent: fileContent, activeDate: undefined, inactiveDate: undefined, activeDateCanShowInvalid: true, inactiveDateCanShowInvalid: true, isLogoSizeValid: isLogoSizeValid })\r\n }\r\n else {\r\n self.setState({ isLogoSizeValid: isLogoSizeValid })\r\n toast.error(\"Image should be 100 x 100 pixels or lower.\")\r\n }\r\n },\r\n error => { toast.error(error) }\r\n )\r\n }\r\n img.src = result\r\n } else {\r\n toast.error(\"Image file is empty.\")\r\n }\r\n }\r\n reader.onerror = function (error) { toast.error(error) }\r\n reader.readAsDataURL(file)\r\n } else {\r\n toast.error(\"Please upload only .bmp type of image files.\")\r\n }\r\n }\r\n }\r\n\r\n handleRightItemClick = (id?: number) => this.setState({ selectionRight: id })\r\n\r\n handleClose = () => this.props.onClose()\r\n\r\n handleSave = () => {\r\n if (this.state.activeImages.length) {\r\n const activeImage: ImplementationImage = this.state.activeImages[0]\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = UpdateBrandingImage(this.props.implementationID, activeImage.ImplementationImageID, activeImage.ActiveDate, activeImage.InActiveDate).subscribe(\r\n message => {\r\n toast.success(message)\r\n this.setState({ ...this.emptyState, loading: true })\r\n },\r\n error => this.handleAPIError(error, { loading: false }))\r\n }\r\n }\r\n\r\n handleUploading = () => {\r\n const { fileName, fileContent, activeDate, inactiveDate, } = this.state\r\n if (!fileContent || !activeDate || !inactiveDate) {\r\n return\r\n }\r\n this.setState({ uploading: true, uploadError: false, uploadPercentage: 5, progressBarKey: Math.random().toString() })\r\n const logo: PortalLogoModel = {\r\n ImageName: fileName,\r\n ImageData: fileContent,\r\n ActiveDate: format(activeDate, \"MM/dd/yyyy\"),\r\n InActiveDate: format(inactiveDate, \"MM/dd/yyyy\"),\r\n ImplementationID: this.props.implementationID\r\n }\r\n\r\n this.uploadSubscription && this.uploadSubscription.unsubscribe()\r\n this.uploadSubscription = PortalLogoInsert(logo).subscribe(\r\n () => this.setState({ uploading: false, uploadError: false, uploadPercentage: 100, loading: true }),\r\n error => {\r\n this.handleAPIError(error, { uploading: false, uploadError: true })\r\n this.fileUploadSimulation$.error(undefined)\r\n }\r\n )\r\n }\r\n\r\n setActiveImage = (e: any) => {\r\n const newActive = this.state.selectionRight\r\n const { activeImages, inactiveImages } = this.state\r\n const allImages = [...activeImages, ...inactiveImages]\r\n const newActiveImages = allImages.filter((image: ImplementationImage) => image.ImplementationImageID === newActive)\r\n const newInactiveImages = allImages.filter((image: ImplementationImage) => image.ImplementationImageID !== newActive)\r\n this.setState({ activeImages: newActiveImages, inactiveImages: newInactiveImages, selectionRight: undefined })\r\n }\r\n\r\n handleActiveImageDatesUpdate = (activeDate: Date, inactiveDate: Date) => {\r\n const activeDateString = format(activeDate, \"yyyy-MM-dd'T'HH:mm:ss\")\r\n const inactiveDateString = format(inactiveDate, \"yyyy-MM-dd'T'HH:mm:ss\")\r\n const activeImages = this.state.activeImages.map(item => ({ ...item, ActiveDate: activeDateString, InActiveDate: inactiveDateString }))\r\n this.setState({ activeImages: activeImages, editActiveDate: false })\r\n }\r\n\r\n render() {\r\n const {\r\n loading, saving, editActiveDate,\r\n fileName, activeImages, inactiveImages, selectionRight,\r\n activeDate, inactiveDate, activeDateCanShowInvalid, inactiveDateCanShowInvalid,\r\n progressBarKey, uploadPercentage, fileContent, uploadError, uploading, isFileNameValid, isFileSizeValid, isFileTypeValid, isLogoSizeValid\r\n } = this.state\r\n\r\n const validActiveDate = !!activeDate\r\n const validInactiveDate = !!inactiveDate && !!activeDate && activeDate <= inactiveDate\r\n const canUpload = !!fileContent && validActiveDate && validInactiveDate && isFileNameValid && isFileSizeValid && isFileTypeValid && isLogoSizeValid\r\n\r\n const imageTable = (data: ImplementationImage[], editable: boolean = false) => \r\n \r\n \r\n \r\n \r\n \r\n {editable && }\r\n \r\n \r\n \r\n {data.map(image => !editable && this.handleRightItemClick(image.ImplementationImageID)}>\r\n \r\n \r\n \r\n {editable && }\r\n )}\r\n \r\n
ImageActiveInactiveEdit
{image.ImageName}{FormatDate(image.ActiveDate)}{FormatDate(image.InActiveDate)}
\r\n\r\n return (<>\r\n \r\n \r\n Manage Images\r\n \r\n \r\n
\r\n \r\n Branding Image\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Active Date\r\n \r\n { if (this.activeDate && this.activeDate.current && e.key === 'Tab') { this.activeDate.current.setOpen(false) } }}\r\n onChange={date => this.setState({ activeDate: date as Date, inactiveDate: undefined })}\r\n onBlur={() => this.setState({ activeDateCanShowInvalid: true })}\r\n customInput={} />\r\n \r\n \r\n \r\n Inactive Date\r\n \r\n { if (this.inactiveDate && this.inactiveDate.current && e.key === 'Tab') { this.inactiveDate.current.setOpen(false) } }}\r\n onChange={date => this.setState({ inactiveDate: date as Date })}\r\n onBlur={() => this.setState({ inactiveDateCanShowInvalid: true })}\r\n customInput={} />\r\n \r\n \r\n \r\n \r\n \r\n {!isFileSizeValid && Please select file of size maximum 1 MB}\r\n {!isFileNameValid && The file name should be less than 200 characters. Please rename the file.}\r\n {(!isFileTypeValid || !isLogoSizeValid) && Please select BMP /JPG file 200 x 100 pixels or lower.}\r\n {!!fileContent && uploadPercentage !== undefined && <>\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {uploadError && Error Occurred}\r\n \r\n \r\n \r\n Active Image

Only 1 image can be Active at a time

\r\n \r\n {loading && }\r\n \r\n Inactive Images\r\n
\r\n \r\n Active Image

Only 1 image can be Active at a time

\r\n {imageTable(activeImages, true)}\r\n \r\n \r\n \r\n Inactive Images\r\n {imageTable(inactiveImages)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Submit\r\n \r\n
\r\n {editActiveDate && activeImages[0] && this.setState({ editActiveDate: false })}\r\n onUpdate={this.handleActiveImageDatesUpdate} />}\r\n )\r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../../ObservableFromFetch\"\r\nimport ImportJobData from \"./Model/ImportJobData\"\r\n\r\nexport default function ImportJobCreateObservable(csvBase64: string, fileName: string, companyID: number, importJobID?: number): Observable {\r\n const params: string = JSON.stringify({\r\n CSVFileBase64String: csvBase64,\r\n FileName: fileName,\r\n ImportJobID: importJobID || 0,\r\n CompanyID: companyID\r\n })\r\n return ObservableFromFetch(\"WorkforceCompanyImport/CreateImportJob\", params)\r\n}\r\n\r\nexport function LocationImportJobCreateObservable(csvBase64: string, fileName: string, implementationID: number, companyID: number, importJobID?: number): Observable {\r\n const params: string = JSON.stringify({\r\n CSVFileBase64String: csvBase64,\r\n FileName: fileName,\r\n ImportJobID: importJobID || 0,\r\n CompanyID: implementationID,\r\n AccountID: companyID,\r\n WorkforceLocation: true\r\n })\r\n return ObservableFromFetch(\"WorkforceCompanyImport/CreateImportJob\", params)\r\n}\r\n","import { ObservableFromFetch } from \"../../ObservableFromFetch\"\r\n\r\ninterface ValidationResultRow {\r\n OriginalString: string\r\n Items: string[]\r\n Errors: string[] | null\r\n Warnings: string[] | null\r\n RowNum: number\r\n}\r\n\r\nexport interface ImportJobValidationResult {\r\n Headers: string[]\r\n Rows: ValidationResultRow[]\r\n TotalRowsCount: number\r\n ValidRowsCount: number\r\n}\r\n\r\nexport default function ImportJobValidateObservable(importJobID: number) {\r\n const params: string = JSON.stringify({ ImportJobID: importJobID })\r\n return ObservableFromFetch(\"WorkforceCompanyImport/StartValidation\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../../ObservableFromFetch\"\r\nimport ImportJobActionResult from \"./Model/ImportJobActionResult\"\r\n\r\nexport default function ImportJobStartObservable(importJobID: number, poolID: number): Observable {\r\n const params: string = JSON.stringify({\r\n ImportJobID: importJobID,\r\n PoolID: poolID\r\n })\r\n return ObservableFromFetch(\"WorkforceCompanyImport/StartImport\", params)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../../ObservableFromFetch\"\r\nimport ImportJobActionResult from \"./Model/ImportJobActionResult\"\r\n\r\nexport default function ImportJobCancelObservable(importJobID: number): Observable {\r\n const params: string = JSON.stringify({ ImportJobID: importJobID })\r\n return ObservableFromFetch(\"WorkforceCompanyImport/CancelImportJob\", params)\r\n}\r\n","import * as React from \"react\"\r\nimport { Button, Col, Form, Modal, Row, Table } from \"react-bootstrap\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { toast } from \"react-toastify\"\r\nimport { ImportCSVMaxFileSize } from \"../../config/Constants\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\nimport ImportJobData from \"../../api/Administration/CompanyImport/Model/ImportJobData\"\r\nimport ImportJobCreateObservable from \"../../api/Administration/CompanyImport/ImportJobCreate\"\r\nimport ImportJobValidateObservable, { ImportJobValidationResult } from \"../../api/Administration/CompanyImport/ImportJobValidate\"\r\nimport ImportJobStartObservable from \"../../api/Administration/CompanyImport/ImportJobStart\"\r\nimport ImportJobCancelObservable from \"../../api/Administration/CompanyImport/ImportJobCancel\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { ApiRootUrl } from \"../../api/ApiUrl\"\r\n\r\ninterface CompanyImportProps {\r\n portalID: number\r\n onClose: () => void\r\n}\r\n\r\ninterface CompanyImportState {\r\n step: \"file\" | \"mapping\" | \"import\"\r\n fileInputKey: string\r\n fileName?: string\r\n fileContent?: string\r\n importData?: ImportJobData\r\n validationResult?: ImportJobValidationResult\r\n isSaving: boolean\r\n isCancelling: boolean\r\n showCancelConfirmModal: boolean\r\n showImportConfirmModal: boolean\r\n}\r\n\r\nexport default class CompanyImport extends React.Component {\r\n emptyData: CompanyImportState = {\r\n step: \"file\",\r\n fileInputKey: \"file_input_key\",\r\n fileName: undefined,\r\n fileContent: undefined,\r\n importData: undefined,\r\n validationResult: undefined,\r\n isSaving: false,\r\n isCancelling: false,\r\n showCancelConfirmModal: false,\r\n showImportConfirmModal: false\r\n }\r\n state: CompanyImportState = { ...this.emptyData }\r\n\r\n importJobCreateSubscription?: Subscription\r\n importJobValidateSubscription?: Subscription\r\n importJobStartSubscription?: Subscription\r\n importJobCancelSubscription?: Subscription\r\n\r\n componentDidMount() { }\r\n\r\n componentWillUnmount() {\r\n this.importJobCreateSubscription && this.importJobCreateSubscription.unsubscribe()\r\n this.importJobValidateSubscription && this.importJobValidateSubscription.unsubscribe()\r\n this.importJobStartSubscription && this.importJobStartSubscription.unsubscribe()\r\n this.importJobCancelSubscription && this.importJobCancelSubscription.unsubscribe()\r\n }\r\n\r\n handleApiError = (error: Error) => {\r\n this.setState({ isSaving: false, isCancelling: false })\r\n toast.error(error)\r\n }\r\n\r\n handleFileStepNext = () => {\r\n if (this.state.fileContent) {\r\n this.setState({ isSaving: true })\r\n this.importJobCreateSubscription && this.importJobCreateSubscription.unsubscribe()\r\n this.importJobCreateSubscription = ImportJobCreateObservable(this.state.fileContent, this.state.fileName || \"\", this.props.portalID, this.state.importData?.ImportJobID).subscribe(\r\n data => this.setState({\r\n step: \"mapping\",\r\n importData: data,\r\n isSaving: false\r\n }),\r\n error => this.handleApiError(error)\r\n )\r\n }\r\n }\r\n\r\n handleStartImportValidation = () => {\r\n if (!this.state.importData?.ImportJobID || !this.state.importData?.Records.length) {\r\n return\r\n }\r\n this.setState({ isSaving: true })\r\n this.importJobValidateSubscription && this.importJobValidateSubscription.unsubscribe()\r\n this.importJobValidateSubscription = ImportJobValidateObservable(this.state.importData?.ImportJobID).subscribe(\r\n validationErrors => this.setState({ step: \"import\", validationResult: validationErrors, isSaving: false }),\r\n error => this.handleApiError(error)\r\n )\r\n }\r\n\r\n performImport = () => {\r\n this.setState({ isSaving: true, showImportConfirmModal: false })\r\n this.importJobStartSubscription && this.importJobStartSubscription.unsubscribe()\r\n this.importJobStartSubscription = ImportJobStartObservable(this.state.importData?.ImportJobID || 0, 0).subscribe(\r\n (data) => { \r\n data.Result ? toast.success(\"Records imported successfully.\") : toast.error(\"Import completed with errors\")\r\n this.props.onClose()\r\n },\r\n error => this.handleApiError(error)\r\n )\r\n }\r\n\r\n performCancel = () => {\r\n this.setState({ isCancelling: true })\r\n this.importJobCancelSubscription && this.importJobCancelSubscription.unsubscribe()\r\n this.importJobCancelSubscription = ImportJobCancelObservable(this.state.importData?.ImportJobID || 0).subscribe(\r\n () => {\r\n toast.success(\"Created job is cancelled successfully.\")\r\n this.resetState()\r\n },\r\n error => this.handleApiError(error)\r\n )\r\n }\r\n\r\n resetState = () => this.setState({ ...this.emptyData, fileInputKey: Math.random().toString() })\r\n\r\n handleHandleFileUpload = (e: React.ChangeEvent) => {\r\n const file = e.target && e.target.files && e.target.files[0]\r\n if (file && file.size > 0 && file.size < ImportCSVMaxFileSize) {\r\n const ext = file.name.substring(file.name.lastIndexOf(\".\") + 1)\r\n if (ext && ext.toLowerCase() === \"csv\") {\r\n var reader = new FileReader()\r\n const self = this\r\n reader.onload = function (e) {\r\n const result = e.target?.result as string || \"\"\r\n const stringLength = result.indexOf(\"base64\") + 7\r\n const fileContent = result.slice(stringLength, result.length)\r\n if (fileContent) {\r\n self.setState({ fileName: file.name, fileContent: fileContent })\r\n } else {\r\n self.setState({ fileName: undefined, fileContent: undefined })\r\n toast.error(\"CSV file is empty.\")\r\n }\r\n }\r\n reader.onerror = function (error) { toast.error(error) }\r\n reader.readAsDataURL(file)\r\n } else {\r\n toast.error(\"File type not allowed, Please upload CSV file.\")\r\n }\r\n } else {\r\n this.setState({ fileName: undefined, fileContent: undefined })\r\n }\r\n }\r\n\r\n calcColspan = (items: string[], i: number, tableColsCount: number) => {\r\n if (i === items.length - 1) {\r\n return Math.max(1, tableColsCount - i)\r\n }\r\n return 1\r\n }\r\n\r\n render() {\r\n const { step, fileInputKey, fileContent,\r\n importData, validationResult,\r\n isSaving, isCancelling, showCancelConfirmModal, showImportConfirmModal\r\n } = this.state\r\n\r\n const previewTableColsCount = step === \"mapping\" && importData\r\n ? Math.max(...importData.Records.map(item => item.length), importData.HeaderItems.length)\r\n : 0\r\n return \r\n \r\n COMPANY IMPORT\r\n \r\n \r\n {step === \"file\" &&\r\n
\r\n
UPLOAD FILE
\r\n \r\n
Import CSV File
\r\n \r\n
\r\n Download Example Spreadsheet\r\n
\r\n \r\n
\r\n \r\n Upload file:\r\n \r\n \r\n \r\n \r\n
}\r\n {step === \"mapping\" &&\r\n
\r\n
PREVIEW
\r\n \r\n \r\n {importData && importData.HeaderItems.length > 0 && {importData.HeaderItems.map((item, i) => )}}\r\n \r\n \r\n {importData && importData.Records.length > 0 && importData.Records.map((row, i) => {row.map((item, j) => )})}\r\n {importData && importData.Records.length === 0 && }\r\n \r\n
{item}
{item}
NO DATA FOUND
\r\n
}\r\n {step === \"import\" &&\r\n
\r\n
IMPORT FILE VALIDATION
\r\n Import file validation: ({(validationResult?.TotalRowsCount || 0) - (validationResult?.ValidRowsCount || 0)} of {validationResult?.TotalRowsCount || 0} have errors)\r\n {validationResult && validationResult.Rows.length > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n {validationResult.Headers.map((item, i) => )}\r\n \r\n \r\n \r\n {validationResult.Rows.map((row, i) => \r\n \r\n \r\n {row.Items.length === validationResult.Headers.length && row.Items.map((item, j) => )}\r\n {row.Items.length !== validationResult.Headers.length && }\r\n )}\r\n \r\n
Line #Validation errors and warnings{item}
{row.RowNum}\r\n {(row.Errors?.length || 0) > 0 &&
\r\n Error{row.Errors!.length > 1 ? `s (${row.Errors!.length}):` : \":\"}\r\n {row.Errors!.map((item, i) =>
{item}
)}\r\n
}\r\n {(row.Warnings?.length || 0) > 0 &&
\r\n Warning{row.Warnings!.length > 1 ? `s (${row.Warnings!.length}):` : \":\"}\r\n {row.Warnings!.map((item, i) =>
{item}
)}\r\n
}\r\n
{item}Original line:
{row.OriginalString}
}\r\n
}\r\n this.setState({ showCancelConfirmModal: false })} />\r\n this.setState({ showImportConfirmModal: false })} />\r\n
\r\n \r\n
\r\n {step === \"file\" && }\r\n
\r\n
\r\n {step === \"file\" && <>\r\n \r\n NEXT\r\n }\r\n {step === \"mapping\" && <>\r\n \r\n SUBMIT FOR VALIDATION\r\n }\r\n {step === \"import\" && <>\r\n \r\n this.setState({ showCancelConfirmModal: true })} spin={isCancelling} disableOnSpin>CANCEL\r\n this.setState({ showImportConfirmModal: true })} disabled={isCancelling || !validationResult?.ValidRowsCount} spin={isSaving} disableOnSpin>IMPORT\r\n }\r\n
\r\n
\r\n
\r\n }\r\n\r\n static defaultProps = { step: \"file\" }\r\n}\r\n","import * as React from \"react\"\r\nimport { Form, Col } from \"react-bootstrap\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { filter, map, switchMap } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { connect } from \"react-redux\"\r\nimport { EmailRegexp, PhoneRegexp } from \"../../../config/Constants\";\r\nimport MaskedInput from \"react-maskedinput\"\r\nimport { Addresses } from \"../../../api/OrderRequests/OrderRequestsModel/Addresses\";\r\nimport { CompanyNameCheck, EmailCheck } from \"../../../api/Invitation/InformationGet\"\r\nimport { GetRoles } from \"../../../api/Roles/UserRolesGet\"\r\nimport Role from \"../../../api/Roles/Model/Role\"\r\nimport { APIError } from \"../../../api/ObservableFromFetch\"\r\nimport { AppState } from \"../../../AppState\"\r\nimport { RoleIdForSelectedCompany } from \"../../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport PortalAdminData from \"../../../api/Portals/PortalModel/PortalAdminData\";\r\n\r\ninterface PortalFieldsAuthProps {\r\n PrimaryRoleID?: number\r\n}\r\n\r\ninterface PortalFieldsProps {\r\n isValid: (data: PortalAdminData, valid: boolean) => void\r\n onNameChange: (name: string) => void\r\n}\r\n\r\ninterface PortalFieldsValidity {\r\n nameValid: boolean\r\n emailValid: boolean\r\n phoneValid: boolean\r\n roleValid: boolean\r\n firstNameValid: boolean\r\n lastNameValid: boolean\r\n}\r\n\r\nexport interface PortalFieldsData {\r\n name: string\r\n email: string\r\n phone: string\r\n roleID?: number\r\n firstName: string,\r\n lastName: string,\r\n}\r\n\r\ninterface PortalFieldsModalState extends PortalFieldsData, PortalFieldsValidity {\r\n nameChecking: boolean\r\n nameAvailable?: boolean\r\n emailChecking: boolean\r\n emailAvailable?: boolean\r\n rolesLoading: boolean\r\n roles?: Role[]\r\n}\r\n\r\nexport class PortalFields extends React.PureComponent {\r\n emptyData: PortalFieldsData = {\r\n name: \"\",\r\n email: \"\",\r\n phone: \"\",\r\n roleID: undefined,\r\n firstName: \"\",\r\n lastName: \"\",\r\n }\r\n positiveValidity: PortalFieldsValidity = {\r\n nameValid: true,\r\n emailValid: true,\r\n phoneValid: true,\r\n roleValid: true,\r\n firstNameValid: true,\r\n lastNameValid: true\r\n }\r\n defaultState: PortalFieldsModalState = {\r\n ...this.emptyData,\r\n ...this.positiveValidity,\r\n nameChecking: false,\r\n nameAvailable: undefined,\r\n emailChecking: false,\r\n emailAvailable: undefined,\r\n rolesLoading: false,\r\n }\r\n state: PortalFieldsModalState = { ...this.defaultState }\r\n\r\n checkName$ = new Subject()\r\n checkEmail$ = new Subject()\r\n\r\n nameExistsSubscription?: Subscription\r\n emailExistsSubscription?: Subscription\r\n userRolesSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.nameExistsSubscription = this.checkName$.pipe(\r\n map(name => name.trim()),\r\n filter(name => this.isNameValid(name)),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n CompanyNameCheck(name).pipe(\r\n map(result => ({ loading: false, result: result }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: Addresses | null }) => this.setState({\r\n nameChecking: o.loading,\r\n nameAvailable: !o.result\r\n }, () => this.isValid()),\r\n (error) => this.handleAPIError(error, { nameChecking: false, nameAvailable: undefined })\r\n )\r\n\r\n this.emailExistsSubscription = this.checkEmail$.pipe(\r\n map(name => name.trim()),\r\n filter(name => this.isEmailValid(name)),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n EmailCheck(name).pipe(\r\n map(result => ({ loading: false, result: result.IsEmailExists }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: boolean }) => this.setState({\r\n emailChecking: o.loading,\r\n emailAvailable: !o.result\r\n }, () => this.isValid()),\r\n (error) => this.handleAPIError(error, { emailChecking: false, emailAvailable: undefined })\r\n )\r\n\r\n const roleID = this.props.PrimaryRoleID || 0\r\n this.setState({ rolesLoading: true })\r\n this.userRolesSubscription = GetRoles(roleID).subscribe(\r\n (data: Role[]) => this.setState({\r\n roles: data,\r\n roleID: data.length === 1 ? data[0].RoleID : undefined,\r\n rolesLoading: false\r\n }),\r\n (error) => this.handleAPIError(error, { rolesLoading: false, emailAvailable: undefined })\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.nameExistsSubscription && this.nameExistsSubscription.unsubscribe()\r\n this.emailExistsSubscription && this.emailExistsSubscription.unsubscribe()\r\n this.userRolesSubscription && this.userRolesSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n isNameValid = (value: string) => value.trim().length > 4\r\n isEmailValid = (value: string) => EmailRegexp.test(value)\r\n isPhoneValid = (value: string) => PhoneRegexp.test(value)\r\n isRoleValid = (value: number | undefined): boolean => !!value && !!this.state.roles?.find(item => item.RoleID === value)\r\n isFirstNameValid = (value: string) => !!value.trim()\r\n isLastNameValid = (value: string) => !!value.trim()\r\n\r\n isFieldsValid = () => {\r\n const {\r\n name, nameValid, nameAvailable,\r\n email, emailValid, emailAvailable,\r\n phone, phoneValid,\r\n roleID, roleValid,\r\n firstName, firstNameValid,\r\n lastName, lastNameValid,\r\n } = this.state\r\n return !!name && nameValid && !!nameAvailable && !!email && emailValid && !!emailAvailable && !!phone && phoneValid\r\n && !!roleID && roleValid && !!firstName && firstNameValid && !!lastName && lastNameValid\r\n }\r\n\r\n isValid = () => {\r\n const data: PortalAdminData = {\r\n Name: this.state.name,\r\n Email: this.state.email,\r\n Phone: this.state.phone,\r\n RoleID: this.state.roleID || 0,\r\n FirstName: this.state.firstName,\r\n LastName: this.state.lastName,\r\n }\r\n this.props.isValid(data, this.isFieldsValid())\r\n }\r\n handleNameChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n this.setState({\r\n name: value,\r\n nameValid: this.isNameValid(value),\r\n nameAvailable: undefined\r\n }, () => this.props.onNameChange(value))\r\n }\r\n\r\n handleEmailChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n this.setState({ email: value, emailValid: this.isEmailValid(value), emailAvailable: undefined })\r\n }\r\n\r\n handlePhoneChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n this.setState(\r\n { phone: value, phoneValid: this.isPhoneValid(value) },\r\n () => this.isValid()\r\n )\r\n }\r\n\r\n handleRoleChange = (e: React.ChangeEvent) => {\r\n const value = Number(e.target.value)\r\n this.setState(\r\n { roleID: value, roleValid: this.isRoleValid(value) },\r\n () => this.isValid()\r\n )\r\n }\r\n\r\n handleFirstNameChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n this.setState(\r\n { firstName: value, firstNameValid: this.isFirstNameValid(value) },\r\n () => this.isValid()\r\n )\r\n }\r\n\r\n handleLastNameChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n this.setState(\r\n { lastName: value, lastNameValid: this.isLastNameValid(value) },\r\n () => this.isValid()\r\n )\r\n }\r\n\r\n render() {\r\n const {\r\n name, nameValid, nameChecking, nameAvailable,\r\n email, emailValid, emailChecking, emailAvailable,\r\n phone, phoneValid,\r\n roleID, roleValid, rolesLoading,\r\n firstName, firstNameValid,\r\n lastName, lastNameValid\r\n } = this.state\r\n\r\n return (\r\n <>\r\n \r\n Portal Name\r\n \r\n ) => this.checkName$.next(e.target.value)}\r\n isInvalid={!nameValid}\r\n disabled={nameChecking} />\r\n {!nameChecking && !nameValid &&\r\n Please enter minimum 5 characters}\r\n {!nameChecking && nameAvailable &&\r\n Portal name is available}\r\n {!nameChecking && nameAvailable === false &&\r\n Portal name is already in use}\r\n \r\n \r\n \r\n Portal Admin Email Address\r\n \r\n ) => this.checkEmail$.next(e.target.value)}\r\n isInvalid={!emailValid}\r\n disabled={emailChecking} />\r\n {!emailChecking && !emailValid &&\r\n Please enter valid email}\r\n {!emailChecking && emailAvailable &&\r\n Email is available}\r\n {!emailChecking && emailAvailable === false &&\r\n Email is already in use}\r\n \r\n \r\n {emailAvailable !== false && \r\n Portal Admin Personal Phone\r\n \r\n \r\n \r\n This phone number will be used to validate the Administrator. Please provide a direct number or\r\n mobile number (not a main company number or extension)\r\n \r\n \r\n }\r\n \r\n Portal Admin First Name\r\n \r\n \r\n \r\n \r\n \r\n Portal Admin Last Name\r\n \r\n \r\n \r\n \r\n \r\n User's Role\r\n \r\n \r\n {rolesLoading && }\r\n {!rolesLoading && this.state.roles && this.state.roles.length > 1 && }\r\n {!rolesLoading && this.state.roles?.map(role => )}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): PortalFieldsAuthProps {\r\n return {\r\n PrimaryRoleID: RoleIdForSelectedCompany(state)\r\n }\r\n}\r\n\r\nconst ConnectedPortalFields = connect(mapStateToProps, null)(PortalFields)\r\nexport default ConnectedPortalFields\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport LocationData from \"./LocationModel/LocationData\"\r\n\r\nexport default function LocationUpdateObservable(data: LocationData): Observable {\r\n const requestBody: string = JSON.stringify(data)\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/UpdateLocationInformation\", requestBody)\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport LocationData from \"./LocationModel/LocationData\"\r\n\r\nexport default function LocationCreateObservable(data: LocationData): Observable {\r\n const requestBody: string = JSON.stringify(data)\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/CreateLocationInformation\", requestBody)\r\n}\r\n","import * as React from \"react\"\r\nimport { Modal } from \"react-bootstrap\"\r\nimport { LocationInformationForm } from \"./LocationInformationForm\"\r\n\r\ninterface AddLocationModalProps {\r\n show: boolean\r\n portalID: number\r\n companyID: number\r\n onHide: () => void\r\n onSuccess: () => void\r\n}\r\n\r\nexport class AddLocationModal extends React.PureComponent {\r\n render() {\r\n const { show, onHide, onSuccess, companyID, portalID } = this.props\r\n\r\n return \r\n \r\n Create New Location\r\n \r\n \r\n \r\n }\r\n}\r\n","import React from \"react\"\r\nimport { Button, Col, Form, InputGroup, Modal } from \"react-bootstrap\"\r\nimport { AsyncTypeahead, Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport { concat, of, Subject, BehaviorSubject , Subscription } from \"rxjs\"\r\nimport { catchError, debounceTime, filter, map, switchMap } from \"rxjs/operators\"\r\nimport MaskedInput from \"react-maskedinput\"\r\nimport { toast } from \"react-toastify\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport AddressInput from \"../FormattedInputs/AddressInput\"\r\nimport PhoneNumberMaskedInput from \"../FormattedInputs/PhoneNumberMaskedInput\"\r\nimport Address from \"../../api/Location/LocationModel/Address\"\r\nimport StateSelect from \"../FormattedInputs/StateSelect\"\r\nimport State from \"../../api/OrderRequests/OrderRequestsModel/State\"\r\nimport { StateObservable } from \"../../api/OrderRequests/OrderRequestsConstraintGet\"\r\nimport AutoFilterLocationsGetObservable from \"../../api/Location/AutoFilterLocationsGet\"\r\nimport AutoFilterLocation from \"../../api/Location/LocationModel/AutoFilterLocation\"\r\nimport LocationData from \"../../api/Location/LocationModel/LocationData\"\r\nimport LocationsGet from \"../../api/Location/LocationsGet\"\r\nimport { CompanyNameRegexp, PhoneRegexp, ZipRegexp } from \"../../config/Constants\"\r\nimport TimeZoneListGet from \"../../api/Administration/TimeZoneListGet\"\r\nimport TimeZoneData from \"../../api/Administration/Model/TimeZoneData\"\r\nimport AddressMatchModal, { AddressData } from \"../AddressMatchModal\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\nimport LocationUpdate from \"../../api/Location/LocationUpdate\"\r\nimport LocationCreate from \"../../api/Location/LocationCreate\"\r\nimport { AddLocationModal } from \"./AddLocationModal\"\r\nimport { CheckLocationName, CheckLocationCode } from \"../../api/Location/CheckLocation\"\r\nimport LocationExists from \"../../api/Location/LocationModel/LocationExists\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\nimport CompanyInactivate from \"../../api/Companies/CompanyInactivate\"\r\nimport { CompanyActivationObservable } from \"../../api/Administration/ActivationProcess\"\r\nimport LabAccountSelection from \"./LabAccountSelection\"\r\nimport { ValidZipCode } from \"../../formatters/FormatZipCode\"\r\n\r\ninterface LocationInformationFormProps {\r\n portalID: number\r\n companyID: number\r\n locationID?: number\r\n adminMode?: boolean\r\n onCancel: () => void\r\n onSuccess?: () => void\r\n add: boolean\r\n}\r\n\r\ninterface LocationInformationData {\r\n name: string\r\n code: string\r\n streetAddress1: string\r\n streetAddress2: string\r\n city: string\r\n state: string\r\n zip: string\r\n province?: string\r\n country?: string\r\n timeZoneID: number\r\n webSiteURL?: string\r\n fax: string\r\n officePhone: string\r\n locationData?: LocationData\r\n}\r\n\r\ninterface LocationInformationFormState extends LocationInformationData {\r\n loading: boolean\r\n saving: boolean\r\n retrievedLocations?: LocationData[]\r\n selectedLocation?: string\r\n locations: string[]\r\n statesLoading: boolean\r\n states: State[]\r\n timeZones?: TimeZoneData[]\r\n timeZonesLoading: boolean\r\n showAddLocation: boolean\r\n nameChecking: boolean\r\n nameAvailable?: boolean\r\n codeChecking: boolean\r\n codeAvailable?: boolean\r\n inactivating: boolean\r\n activating: boolean\r\n showInactivateConfirmation: boolean\r\n showLabAccountSelection: boolean\r\n labAccountsLoading: boolean\r\n}\r\n\r\nexport class LocationInformationForm extends React.PureComponent {\r\n emptyData: LocationInformationData = {\r\n name: \"\",\r\n code: \"\",\r\n streetAddress1: \"\",\r\n streetAddress2: \"\",\r\n city: \"\",\r\n state: \"\",\r\n zip: \"\",\r\n officePhone: \"\",\r\n timeZoneID: 0,\r\n fax: \"\",\r\n locationData: undefined\r\n }\r\n\r\n emptyState: LocationInformationFormState = {\r\n ...this.emptyData,\r\n loading: false,\r\n saving: false,\r\n locations: [],\r\n retrievedLocations: undefined,\r\n statesLoading: false,\r\n states: [],\r\n timeZonesLoading: false,\r\n showAddLocation: false,\r\n nameChecking: false,\r\n nameAvailable: undefined,\r\n codeChecking: false,\r\n codeAvailable: undefined,\r\n inactivating: false,\r\n activating: false,\r\n showInactivateConfirmation: false,\r\n showLabAccountSelection: false,\r\n labAccountsLoading: false\r\n }\r\n\r\n state: LocationInformationFormState = { ...this.emptyState }\r\n\r\n typeahead = React.createRef>()\r\n\r\n locationName$ = new Subject()\r\n checkName$ = new Subject()\r\n checkCode$ = new Subject()\r\n\r\n statesSubscription?: Subscription\r\n timeZoneSubscription?: Subscription\r\n searchLocationsSubscription?: Subscription\r\n loadSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n nameExistsSubscription?: Subscription\r\n codeExistsSubscription?: Subscription\r\n inactivateSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.setState({ statesLoading: true, timeZonesLoading: true })\r\n this.statesSubscription = StateObservable().subscribe(\r\n (results: State[]) => this.setState(prevState => ({\r\n states: results,\r\n statesLoading: false,\r\n state: prevState.locationData ? this.mapState(prevState.locationData, results) : prevState.state\r\n })),\r\n () => { this.setState({ statesLoading: false }) }\r\n )\r\n\r\n this.timeZoneSubscription = TimeZoneListGet().subscribe(\r\n (data: TimeZoneData[]) => this.setState({ timeZones: data, timeZonesLoading: false }),\r\n (error) => this.handleAPIError(error, { timeZonesLoading: false })\r\n )\r\n\r\n this.loadLocations()\r\n\r\n this.loadSubscription = this.locationName$.pipe(\r\n map(name => name.trim()),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n LocationsGet(this.props.portalID, this.props.companyID, name, true).pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError((error) => of({ loading: false, error: error }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: LocationData[], error?: Error | APIError }) => {\r\n if (o.error) this.handleAPIError(o.error, {})\r\n this.setState({\r\n loading: o.loading,\r\n retrievedLocations: o.result && o.result.length > 1 ? o.result : undefined,\r\n ...this.mapLocationData(o.result)\r\n })\r\n },\r\n (error) => this.handleAPIError(error, { loading: false })\r\n )\r\n\r\n this.nameExistsSubscription = this.checkName$.pipe(\r\n map(name => name.trim()),\r\n filter(name => this.isNameValid(name)),\r\n switchMap(name => concat(\r\n of({ checking: true }),\r\n CheckLocationName(this.props.companyID, name).pipe(\r\n map(result => ({ checking: false, result: result })),\r\n catchError(() => of({ checking: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { checking: boolean, result?: LocationExists }) => this.setState({\r\n nameChecking: o.checking,\r\n nameAvailable: (o.result?.LocationID || 0) === 0\r\n }),\r\n (error) => this.handleAPIError(error, { nameChecking: false, nameAvailable: undefined })\r\n )\r\n\r\n this.codeExistsSubscription = this.checkCode$.pipe(\r\n map(code => code.trim()),\r\n filter(code => this.isCodeValid(code)),\r\n switchMap(code => concat(\r\n of({ checking: true }),\r\n CheckLocationCode(this.props.companyID, code).pipe(\r\n map(result => ({ checking: false, result: result })),\r\n catchError(() => of({ checking: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { checking: boolean, result?: LocationExists }) => this.setState({\r\n codeChecking: o.checking,\r\n codeAvailable: (o.result?.LocationID || 0) === 0\r\n }),\r\n (error) => this.handleAPIError(error, { codeChecking: false, codeAvailable: undefined })\r\n )\r\n }\r\n\r\n loadLocations = () => {\r\n this.setState({ loading: true })\r\n this.searchLocationsSubscription = AutoFilterLocationsGetObservable(this.props.companyID, \"\", \"\", this.props.portalID).subscribe(\r\n ( result: AutoFilterLocation[]) => {\r\n if (this.props.locationID) {\r\n this.setState({ loading: false, locations: result.filter(loc => loc.AccountID === this.props.locationID).map(loc => loc.Name) || [] })\r\n } else {\r\n this.setState({ loading: false, locations: result.map(c => c.Name).filter((v, i, a) => a.indexOf(v) === i) || [] })\r\n }\r\n },\r\n (error) => this.handleAPIError(error, { loading: false, locations: [] })\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.statesSubscription && this.statesSubscription.unsubscribe()\r\n this.timeZoneSubscription && this.timeZoneSubscription.unsubscribe()\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.searchLocationsSubscription && this.searchLocationsSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.nameExistsSubscription && this.nameExistsSubscription.unsubscribe()\r\n this.codeExistsSubscription && this.codeExistsSubscription.unsubscribe()\r\n this.inactivateSubscription && this.inactivateSubscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: LocationInformationFormProps, prevState: LocationInformationFormState) {\r\n if (this.props.locationID && this.state.locations !== prevState.locations) {\r\n this.handleLocationChange(this.state.locations)\r\n }\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error(FormatError(error))\r\n }\r\n\r\n mapState = (info: LocationData, states: State[]): string => states.find(item => item.StateProvinceTerritoryID === info.StateProvinceTerritoryID)?.Abbreviation || info.State || \"\"\r\n\r\n mapLocationData = (data?: LocationData[]): LocationInformationData => {\r\n if (!data || data.length !== 1) {\r\n return { ...this.emptyData, name: this.state.name }\r\n }\r\n const info = data[0]\r\n return {\r\n name: info.Name || \"\",\r\n code: info.Code,\r\n streetAddress1: info.Address1 || \"\",\r\n streetAddress2: info.Address2 || \"\",\r\n city: info.City || \"\",\r\n state: this.mapState(info, this.state.states),\r\n zip: info.Zip || \"\",\r\n province: info.Province || \"\",\r\n country: info.Country || \"\",\r\n timeZoneID: info.TimeZoneID,\r\n webSiteURL: info.WebsiteURL || \"\",\r\n fax: info.Fax || \"\",\r\n officePhone: info.Phone || \"\",\r\n locationData: data[0]\r\n }\r\n }\r\n\r\n handleLocationChange = (items: string[]) => {\r\n const selectedLocation = items[0]\r\n if (selectedLocation) {\r\n this.setState({ selectedLocation: selectedLocation })\r\n this.locationName$.next(selectedLocation)\r\n } else {\r\n this.setState({ selectedLocation: undefined })\r\n }\r\n }\r\n\r\n handleRetrievedCompanyAddressSelect = () => this.setState({\r\n retrievedLocations: undefined,\r\n ...this.mapLocationData(this.state.locationData ? [this.state.locationData] : undefined)\r\n })\r\n\r\n handleAddressSelect = (address: Address | string | undefined) => {\r\n if (address) {\r\n if (typeof address === 'string') {\r\n this.setState({ streetAddress1: address })\r\n } else if (address as Address) {\r\n this.setState({ streetAddress1: address.StreetLine || \"\", state: address.State || \"\", city: address.City || \"\" })\r\n }\r\n } else {\r\n this.setState({ streetAddress1: \"\" })\r\n }\r\n }\r\n\r\n performInactivate = () => {\r\n this.setState({ inactivating: true, showInactivateConfirmation: false })\r\n this.inactivateSubscription && this.inactivateSubscription.unsubscribe()\r\n this.inactivateSubscription = CompanyInactivate(this.state.locationData?.ImplementationID || 0, this.state.locationData?.AccountID || 0, true)\r\n .subscribe(\r\n data => {\r\n this.setState({ inactivating: false })\r\n toast.success(data)\r\n },\r\n error => this.handleAPIError(error, { inactivating: false })\r\n )\r\n }\r\n\r\n performActivate = () => {\r\n this.setState({ activating: true })\r\n this.inactivateSubscription && this.inactivateSubscription.unsubscribe()\r\n this.inactivateSubscription = CompanyActivationObservable(this.state.locationData?.ImplementationID || 0, this.state.locationData?.AccountID || 0, true)\r\n .subscribe(\r\n data => {\r\n this.setState({ activating: false })\r\n toast.success(data)\r\n },\r\n error => this.handleAPIError(error, { activating: false })\r\n )\r\n }\r\n\r\n handleCancel = () => this.props.onCancel()\r\n\r\n handleUpdate = () => {\r\n const { locationData, name, code, streetAddress1, streetAddress2, city, state, zip, officePhone, province, country, timeZoneID, webSiteURL, fax } = this.state\r\n if (!this.props.add && !locationData) {\r\n return\r\n }\r\n\r\n const saveData: LocationData = {\r\n AccountID: this.props.add ? 0 : locationData?.AccountID || 0,\r\n ImplementationID: this.props.portalID,\r\n CompanyID: this.props.companyID,\r\n Name: this.props.add ? name : locationData?.Name || \"\",\r\n Code: this.props.add ? code : locationData?.Code || \"\",\r\n Address1: streetAddress1,\r\n Address2: streetAddress2,\r\n City: city,\r\n State: state,\r\n Zip: zip,\r\n Phone: officePhone.replace(/-/g, \"\"),\r\n Province: province ? province : undefined,\r\n Country: country ? country : undefined,\r\n TimeZoneID: timeZoneID,\r\n WebsiteURL: webSiteURL ? webSiteURL : undefined,\r\n Fax: fax ? fax : undefined,\r\n StateProvinceTerritoryID: 0,\r\n Inactive: locationData?.Inactive || false\r\n }\r\n\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n const observable = this.props.add ? LocationCreate : LocationUpdate\r\n this.saveSubscription = observable(saveData).subscribe(\r\n (data) => {\r\n this.setState({ saving: false })\r\n toast.success(data)\r\n this.props.onSuccess && this.props.onSuccess()\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n handleHideAddLocation = () => {\r\n this.setState({ showAddLocation: false })\r\n }\r\n\r\n handleLocationAddSuccess = () => {\r\n this.handleHideAddLocation()\r\n this.loadLocations()\r\n }\r\n\r\n isNameTextValid = (value: string) => {\r\n const regexp = new RegExp(CompanyNameRegexp)\r\n return regexp.test(value)\r\n }\r\n isNameLengthValid = (value: string) => {\r\n const len = value.trim().length\r\n return len >= 3 && len <= 32\r\n }\r\n\r\n isNameValid = (value: string) => this.isNameLengthValid(value) && this.isNameTextValid(value)\r\n isCodeValid = (value: string) => value.length > 0\r\n\r\n render() {\r\n const { name, code, city, state, streetAddress1, streetAddress2, states, statesLoading, zip, province, country, officePhone, fax, timeZoneID, webSiteURL,\r\n loading, saving, locationData, timeZonesLoading, timeZones, retrievedLocations, activating, inactivating,\r\n nameChecking, nameAvailable, codeChecking, codeAvailable, showLabAccountSelection, labAccountsLoading } = this.state\r\n\r\n const { add, locationID } = this.props\r\n\r\n const disabled = !add && (!locationData || !!retrievedLocations)\r\n\r\n const validName = disabled || !add || this.isNameValid(name) && nameAvailable\r\n const validCode = disabled || !add || this.isCodeValid(code) && codeAvailable\r\n const validStreetAddress1 = disabled || !!streetAddress1.length\r\n const validCity = disabled || !!city.length\r\n const validState = disabled || !!state\r\n const validZip = disabled || (!!zip.length && ValidZipCode(zip))\r\n const validPhone = disabled || (!!officePhone.length && (officePhone.replace(/\\D/g, \"\").length === 10 || PhoneRegexp.test(officePhone)))\r\n const validFax = disabled || fax.length === 0 || (fax.replace(/\\D/g, \"\").length === 10 || PhoneRegexp.test(fax))\r\n\r\n const formValid = validStreetAddress1 && validCity && validState && validZip && validPhone && validFax && validName && validCode\r\n\r\n const saveButtonName = add ? \"Save\" : \"Update\"\r\n\r\n return (<>\r\n \r\n
\r\n \r\n \r\n Location {code && !add ? `(${code})` : \"\"}\r\n \r\n \r\n {add ? <>\r\n { this.setState({ name: e.target.value, nameAvailable: undefined }) }} \r\n onBlur={(e: React.FocusEvent) => { if (nameAvailable === undefined) this.checkName$.next(e.target.value)} }/>\r\n {!nameChecking && nameAvailable && Name is available}\r\n {!nameChecking && nameAvailable === false && Name is already in use}\r\n {!nameChecking && !validName && Location Name must be of 3 to 32 characters and cannot contain any special characters except apostrophe, dash, comma or dot  [ ' or - or , or . ]}\r\n \r\n : (locationID ? \r\n : \r\n props.selected.length > 0 || option.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n isLoading={this.state.loading}\r\n onChange={this.handleLocationChange}\r\n options={this.state.locations || []}\r\n selected={this.state.selectedLocation ? [this.state.selectedLocation] : []}\r\n minLength={0}\r\n emptyLabel=\"No Locations Found\"\r\n placeholder=\"\"\r\n inputProps={{ autoComplete: \"chrome-off\" }}>\r\n {!loading &&\r\n }\r\n \r\n )}\r\n \r\n \r\n {add && \r\n Code\r\n \r\n { this.setState({ code: e.target.value, codeAvailable: undefined }) }}\r\n onBlur={(e: React.FocusEvent) => { if (codeAvailable === undefined) this.checkCode$.next(e.target.value) }}\r\n autoComplete=\"new-password\"\r\n isInvalid={!validCode}\r\n disabled={disabled} />\r\n {!codeChecking && codeAvailable && Code is available}\r\n {!codeChecking && codeAvailable === false && Code is already in use}\r\n \r\n }\r\n \r\n Street Address 1\r\n \r\n \r\n \r\n \r\n \r\n Street Address 2\r\n \r\n this.setState({ streetAddress2: e.target.value })} />\r\n \r\n \r\n \r\n City\r\n \r\n this.setState({ city: e.target.value })}\r\n disabled={disabled}\r\n isInvalid={!validCity} />\r\n \r\n \r\n \r\n State\r\n \r\n this.setState({ state: selected?.Abbreviation || \"\" })}\r\n isDisabled={disabled || statesLoading}\r\n isInvalid={!validState} />\r\n \r\n ZIP\r\n \r\n this.setState({ zip: e.target.value })}\r\n value={zip}\r\n disabled={disabled}\r\n isInvalid={!validZip} />\r\n \r\n \r\n \r\n Province\r\n \r\n this.setState({ province: e.target.value })}\r\n disabled={disabled} />\r\n \r\n \r\n \r\n Country\r\n \r\n this.setState({ country: e.target.value })}\r\n disabled={disabled} />\r\n \r\n \r\n \r\n Office Phone #\r\n \r\n this.setState({ officePhone: value })}\r\n disabled={disabled}\r\n isInvalid={!validPhone} />\r\n \r\n \r\n \r\n Fax Phone #\r\n \r\n this.setState({ fax: value })}\r\n disabled={disabled}\r\n isInvalid={!validFax} />\r\n \r\n \r\n \r\n Time Zone\r\n \r\n ) => { this.setState({ timeZoneID: Number(e.target.value) }) }}>\r\n \r\n {timeZones?.map(tz => )}\r\n \r\n \r\n \r\n \r\n Website\r\n \r\n this.setState({ webSiteURL: e.target.value })}\r\n disabled={disabled} />\r\n \r\n \r\n {!add &&\r\n \r\n Lab Accounts\r\n \r\n this.setState({ showLabAccountSelection: true })} disabled={disabled} spin={labAccountsLoading} disableOnSpin={false}>Lab Account Details\r\n \r\n }\r\n
\r\n
\r\n \r\n
\r\n {!add && !locationID && }\r\n
\r\n
\r\n {!!this.props.adminMode && <>\r\n {!locationData?.Inactive && this.setState({ showInactivateConfirmation: true })} spin={inactivating} disableOnSpin className=\"mr-2\">Inactivate}\r\n {locationData?.Inactive && this.performActivate()} spin={activating} disableOnSpin className=\"mr-2\">Activate}\r\n }\r\n \r\n {saveButtonName}\r\n
\r\n
\r\n {!add &&\r\n this.setState({ showLabAccountSelection: false })} />}\r\n this.setState({ showInactivateConfirmation: false })} />\r\n 1}\r\n addresses={retrievedLocations?.map(item => ({ ID: item.AccountID.toString(), Address1: item.Address1, Zip: item.Zip } as AddressData)) || []}\r\n selectedID={locationData?.AccountID.toString()}\r\n title=\"EXISTING LOCATION ADDRESS\"\r\n subTitle=\"The location name you have entered already exists as the following addresses:\"\r\n message=\"Please select the address you want to activate\"\r\n onAddressSelect={(selected: AddressData) => this.setState({ locationData: retrievedLocations?.find(item => item.AccountID.toString() === selected.ID) })}\r\n onClose={this.handleRetrievedCompanyAddressSelect} />\r\n {!this.props.add && }\r\n \r\n )\r\n }\r\n}\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport LocationData from \"./LocationModel/LocationData\"\r\n\r\nexport default function LocationsGetObservable(portalID: number, companyID: number, name: string, showInactive: boolean = false): Observable {\r\n const requestBody: string = JSON.stringify({ ImplementationID: portalID, CompanyID: companyID, LocationName: name, ShowInactive: showInactive })\r\n\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/GetLocationInformation\", requestBody)\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport LocationExists from \"./LocationModel/LocationExists\"\r\n\r\nexport function CheckLocationName(companyID: number, name: string) {\r\n const requestBody: string = JSON.stringify({\r\n CompanyID: companyID,\r\n Name: name\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/LocationExists\", requestBody)\r\n}\r\n\r\nexport function CheckLocationCode(companyID: number, code: string) {\r\n const requestBody: string = JSON.stringify({\r\n CompanyID: companyID,\r\n Name: code\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/LocationCodeExists\", requestBody)\r\n}\r\n","import * as React from \"react\"\r\nimport { Modal } from \"react-bootstrap\"\r\nimport { LocationInformationForm } from \"./LocationInformationForm\"\r\n\r\ninterface EditLocationInformationProps {\r\n portalID: number\r\n companyID: number\r\n locationID?: number\r\n adminMode?: boolean\r\n onCancel: () => void\r\n}\r\n\r\nexport class EditLocationInformation extends React.PureComponent {\r\n render() {\r\n const { companyID, locationID, onCancel, portalID } = this.props\r\n\r\n return \r\n \r\n Edit Location Information\r\n \r\n \r\n \r\n }\r\n}","import React from \"react\"\r\nimport { Modal, Form, Col, Button } from \"react-bootstrap\"\r\nimport { FaAngleDown, FaPencilAlt, FaTimes } from \"react-icons/fa\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport GovDevice, { ModifyGovDevice } from \"../../api/Randoms/GovPoolModel/GovDevice\"\r\nimport LabAccount from \"../../api/Administration/Model/LabAccount\"\r\nimport { DevicesGetObservable, GovDeviceModifyObservable } from \"../../api/Randoms/GovDevicesGet\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\n\r\ninterface DeviceModalProps {\r\n addNew?: boolean\r\n labAccount?: LabAccount\r\n currentDevices: number[]\r\n details?: GovDevice\r\n onHide: () => void\r\n onSave: () => void\r\n}\r\n\r\ninterface DeviceModalState {\r\n isDeviceValid?: boolean\r\n devices: GovDevice[]\r\n selectedDevice?: GovDevice\r\n loading: boolean\r\n saving: boolean\r\n editing: boolean\r\n}\r\n\r\nexport default class DeviceModal extends React.PureComponent {\r\n state: DeviceModalState = {\r\n loading: false,\r\n saving: false,\r\n editing: false,\r\n devices: []\r\n }\r\n\r\n loadSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n deviceTypeahead = React.createRef>()\r\n\r\n componentDidMount() {\r\n this.setState({...this.defaultStateFromProps(), loading: true})\r\n\r\n this.loadSubscription = DevicesGetObservable().subscribe(\r\n data => this.setState({devices: this.filterDevices(this.props.labAccount?.LabAccountNumber || \"\", data), selectedDevice: data.find(el => el.DeviceID === this.props.details?.DeviceID), loading: false}),\r\n error => this.handleAPIError(error, { loading: false})\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n onCancel = () => this.props.onHide()\r\n\r\n onSubmit = () => {\r\n this.setState({saving: true})\r\n const selectedDevice = this.state.selectedDevice\r\n const data: ModifyGovDevice = {\r\n DeviceID: selectedDevice?.DeviceID || 0,\r\n LabAccount: this.props.labAccount?.LabAccountNumber || \"\",\r\n DeviceLabAccountXrefID: this.props.details?.DeviceLabAccountXrefID || 0,\r\n Delete: false\r\n }\r\n\r\n this.saveSubscription = GovDeviceModifyObservable(data).subscribe(\r\n data => {\r\n this.setState({ saving: false })\r\n toast.success(data)\r\n this.props.onSave()\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n valueText = (text: string | number | undefined) => {text}\r\n rowClassName = (required: boolean = false) => required ? \"form-group required\" : \"form-group\"\r\n\r\n isValid = () => !!this.state.selectedDevice\r\n\r\n handleToggleEditMode = () => {\r\n this.setState({editing: !this.state.editing, ...this.defaultStateFromProps()})\r\n }\r\n\r\n defaultStateFromProps = () => {\r\n const data = this.props.details\r\n return {\r\n selectedDevice: this.state.devices.find(el => el.DeviceID === data?.DeviceID)\r\n }\r\n }\r\n\r\n handleDeviceChange = (selected: GovDevice[]) => {\r\n this.setState({selectedDevice: selected[0]})\r\n }\r\n\r\n filterDevices = (labAccount: string, data: GovDevice[]) => {\r\n let filteredDevices = data\r\n if (labAccount.split(\".\")[1].includes(\"CON\")) {\r\n filteredDevices = data.filter(({SampleType}) => SampleType === \"UR\")\r\n }\r\n if (labAccount.split(\".\")[1].includes(\"OCO\")) {\r\n filteredDevices = data.filter(({SampleType}) => SampleType === \"SL\")\r\n }\r\n return filteredDevices.filter(el => !this.props.currentDevices.includes(el.DeviceID))\r\n }\r\n\r\n render() {\r\n const { loading, saving, selectedDevice, devices } = this.state\r\n const editing = this.state.editing || !!this.props.addNew\r\n\r\n return (\r\n \r\n \r\n {!!this.props.addNew && Add New Device}\r\n {!editing && Device}\r\n {editing && !this.props.addNew && Edit Device}\r\n \r\n \r\n
\r\n {!this.props.addNew && false && \r\n
MODIFY DEVICE
\r\n \r\n
\r\n \r\n
\r\n \r\n
}\r\n \r\n Device\r\n {!editing && this.valueText(this.props.details?.Description)}\r\n {editing &&\r\n \r\n props.selected.length > 0 || option.Description.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n onChange={this.handleDeviceChange}\r\n options={devices || []}\r\n selected={!!selectedDevice ? [selectedDevice] : []}\r\n placeholder=\"Enter the Device\">\r\n \r\n \r\n }\r\n \r\n \r\n Code\r\n {this.valueText(selectedDevice?.Code)}\r\n \r\n \r\n Sample Type\r\n {this.valueText(selectedDevice?.SampleType)}\r\n \r\n \r\n Begin Effective Date\r\n {this.valueText(FormatDate(selectedDevice?.BeginEffectiveDate))}\r\n \r\n \r\n End Effective Date\r\n {this.valueText(FormatDate(selectedDevice?.EndEffectiveDate))}\r\n \r\n \r\n Manufacturer\r\n {this.valueText(selectedDevice?.Manufacturer)}\r\n \r\n
\r\n
\r\n \r\n \r\n {editing && {!!this.props.addNew ? \"Save\" : \"Update\"}}\r\n \r\n
\r\n )\r\n }\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Form, Col, Button, Row, Table, Spinner } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport LabAccount from \"../../api/Administration/Model/LabAccount\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport GovDevice, { ModifyGovDevice } from \"../../api/Randoms/GovPoolModel/GovDevice\"\r\nimport { DevicesGetObservable, GovDeviceModifyObservable } from \"../../api/Randoms/GovDevicesGet\"\r\nimport LabAccountListGet from \"../../api/Administration/LabAccountListGet\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport DeviceModal from \"./DeviceModal\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\n\r\ninterface DeviceSelectionProps {\r\n portalMode?: boolean\r\n implementationID: number\r\n accountID: number\r\n onClose: () => void\r\n}\r\n\r\ninterface DeviceSelectionState {\r\n addNewDevice: boolean\r\n labAccounts: LabAccount[]\r\n devices: GovDevice[]\r\n selectedLab?: LabAccount\r\n loading: boolean\r\n deviceDetails: boolean\r\n details?: GovDevice\r\n confirmModal: boolean\r\n}\r\n\r\nexport default class DeviceSelection extends React.PureComponent< DeviceSelectionProps, DeviceSelectionState> {\r\n labAccountSubscription?: Subscription\r\n deviceSubscription?: Subscription\r\n deleteSubscription?: Subscription\r\n state: DeviceSelectionState = {\r\n addNewDevice: false,\r\n labAccounts: [],\r\n devices: [],\r\n loading: false,\r\n deviceDetails: false,\r\n confirmModal: false\r\n }\r\n\r\n labAccountRef = React.createRef>()\r\n\r\n componentWillMount() {\r\n this.loadLabAccounts()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.labAccountSubscription && this.labAccountSubscription.unsubscribe()\r\n this.deviceSubscription && this.deviceSubscription.unsubscribe()\r\n this.deleteSubscription && this.deleteSubscription.unsubscribe()\r\n }\r\n\r\n onCancel = () => {\r\n this.props.onClose()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n loadLabAccounts = () => {\r\n this.setState({ loading: true })\r\n this.deviceSubscription = LabAccountListGet(this.props.implementationID, this.props.accountID, false).subscribe(\r\n data => this.setState({ loading: false, labAccounts: [...data.ActiveLabAccount.filter(({LabAccountNumber}) => LabAccountNumber.split(\".\")[1].includes(\"CON\") || LabAccountNumber.split(\".\")[1].includes(\"OCO\"))] }),\r\n error => this.handleAPIError(error, { loading: false })\r\n )\r\n }\r\n\r\n loadDevices = (labAccount: string) => {\r\n this.setState({ loading: true })\r\n this.deviceSubscription = DevicesGetObservable(labAccount).subscribe(\r\n data => this.setState({ loading: false, devices: data }),\r\n error => this.handleAPIError(error, { loading: false })\r\n )\r\n }\r\n\r\n handleLabChange = (items: LabAccount[]) => {\r\n const selectedLab = items[0]\r\n this.setState({ selectedLab: selectedLab, devices: [] }, () => {\r\n if (!!selectedLab) this.loadDevices(selectedLab.LabAccountNumber)\r\n })\r\n }\r\n\r\n hideModal = () => this.setState({ confirmModal: false, details: undefined })\r\n\r\n confirmDelete = () => {\r\n const { details, selectedLab } = this.state\r\n const data: ModifyGovDevice = {\r\n DeviceID: details?.DeviceID || 0,\r\n LabAccount: selectedLab?.LabAccountNumber || \"\",\r\n DeviceLabAccountXrefID: details?.DeviceLabAccountXrefID || 0,\r\n Delete: true\r\n }\r\n this.hideModal()\r\n this.deleteSubscription = GovDeviceModifyObservable(data).subscribe(\r\n data => {\r\n toast.success(data)\r\n this.handleLabChange(!!this.state.selectedLab ? [this.state.selectedLab] : [])\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n showDeviceDetailsModal = (data: GovDevice) => this.setState({ deviceDetails: true, details: data })\r\n\r\n onSave = () => {\r\n this.setState({addNewDevice: false, deviceDetails: false, details: undefined})\r\n this.handleLabChange(!!this.state.selectedLab ? [this.state.selectedLab] : [])\r\n }\r\n\r\n dataRows = (data: GovDevice[]) => data.map((row: GovDevice, i: number) => this.dataRow(row, i))\r\n\r\n dataRow = (data: GovDevice, index: number) => {\r\n return \r\n \r\n {data.Code}\r\n {data.SampleType}\r\n \r\n \r\n }\r\n\r\n devicePanelCodes = () =>\r\n this.state.devices.reduce((res, el) => {\r\n const key = el.DeviceID\r\n res[key] = res[key] || []\r\n res[key].push(el.PanelCode)\r\n return res\r\n }, Object.create(null))\r\n\r\n render() {\r\n const { loading, addNewDevice, labAccounts, devices, selectedLab, deviceDetails } = this.state\r\n\r\n return (\r\n <>\r\n \r\n \r\n Devices\r\n \r\n \r\n \r\n \r\n props.selected.length > 0 || option.LabAccountNumber.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n onChange={this.handleLabChange}\r\n options={labAccounts || []}\r\n selected={selectedLab ? [selectedLab] : []}\r\n placeholder=\"Enter the Lab Account\">\r\n \r\n \r\n \r\n \r\n {!!selectedLab && \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {loading && <>}\r\n {!loading && devices.length === 0 && <>}\r\n {this.dataRows(devices)}\r\n \r\n
DeviceCodeSample TypeActions
NO DATA FOUND
\r\n
}\r\n {deviceDetails && this.setState({ addNewDevice: false, deviceDetails: false, details: undefined })} \r\n addNew={addNewDevice}\r\n currentDevices={devices.map(el => el.DeviceID)}\r\n labAccount={selectedLab}\r\n details={this.state.details}\r\n onSave={() => this.onSave()} />}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n )\r\n }\r\n\r\n}\r\n","import * as React from \"react\"\r\nimport { Button, Col, Form, Modal, Row, Table } from \"react-bootstrap\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { toast } from \"react-toastify\"\r\nimport { ImportCSVMaxFileSize } from \"../../config/Constants\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\nimport ImportJobData from \"../../api/Administration/CompanyImport/Model/ImportJobData\"\r\nimport { LocationImportJobCreateObservable } from \"../../api/Administration/CompanyImport/ImportJobCreate\"\r\nimport ImportJobValidateObservable, { ImportJobValidationResult } from \"../../api/Administration/CompanyImport/ImportJobValidate\"\r\nimport ImportJobStartObservable from \"../../api/Administration/CompanyImport/ImportJobStart\"\r\nimport ImportJobCancelObservable from \"../../api/Administration/CompanyImport/ImportJobCancel\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { ApiRootUrl } from \"../../api/ApiUrl\"\r\nimport FileSaver from \"file-saver\"\r\n\r\ninterface LocationImportProps {\r\n portalID: number\r\n companyID: number\r\n onClose: () => void\r\n}\r\n\r\ninterface LocationImportState {\r\n step: \"file\" | \"mapping\" | \"import\"\r\n fileInputKey: string\r\n fileName?: string\r\n fileContent?: string\r\n importData?: ImportJobData\r\n validationResult?: ImportJobValidationResult\r\n isSaving: boolean\r\n isCancelling: boolean\r\n showCancelConfirmModal: boolean\r\n showImportConfirmModal: boolean\r\n}\r\n\r\nexport default class LocationImport extends React.Component {\r\n emptyData: LocationImportState = {\r\n step: \"file\",\r\n fileInputKey: \"file_input_key\",\r\n fileName: undefined,\r\n fileContent: undefined,\r\n importData: undefined,\r\n validationResult: undefined,\r\n isSaving: false,\r\n isCancelling: false,\r\n showCancelConfirmModal: false,\r\n showImportConfirmModal: false\r\n }\r\n state: LocationImportState = { ...this.emptyData }\r\n\r\n importJobCreateSubscription?: Subscription\r\n importJobValidateSubscription?: Subscription\r\n importJobStartSubscription?: Subscription\r\n importJobCancelSubscription?: Subscription\r\n\r\n componentDidMount() { }\r\n\r\n componentWillUnmount() {\r\n this.importJobCreateSubscription && this.importJobCreateSubscription.unsubscribe()\r\n this.importJobValidateSubscription && this.importJobValidateSubscription.unsubscribe()\r\n this.importJobStartSubscription && this.importJobStartSubscription.unsubscribe()\r\n this.importJobCancelSubscription && this.importJobCancelSubscription.unsubscribe()\r\n }\r\n\r\n handleApiError = (error: Error) => {\r\n this.setState({ isSaving: false, isCancelling: false })\r\n toast.error(error)\r\n }\r\n\r\n handleFileStepNext = () => {\r\n if (this.state.fileContent) {\r\n this.setState({ isSaving: true })\r\n this.importJobCreateSubscription && this.importJobCreateSubscription.unsubscribe()\r\n this.importJobCreateSubscription = LocationImportJobCreateObservable(this.state.fileContent, this.state.fileName || \"\", this.props.portalID, this.props.companyID, this.state.importData?.ImportJobID).subscribe(\r\n data => this.setState({\r\n step: \"mapping\",\r\n importData: data,\r\n isSaving: false\r\n }),\r\n error => this.handleApiError(error)\r\n )\r\n }\r\n }\r\n\r\n handleStartImportValidation = () => {\r\n if (!this.state.importData?.ImportJobID || !this.state.importData?.Records.length) {\r\n return\r\n }\r\n this.setState({ isSaving: true })\r\n this.importJobValidateSubscription && this.importJobValidateSubscription.unsubscribe()\r\n this.importJobValidateSubscription = ImportJobValidateObservable(this.state.importData?.ImportJobID).subscribe(\r\n validationErrors => this.setState({ step: \"import\", validationResult: validationErrors, isSaving: false }),\r\n error => this.handleApiError(error)\r\n )\r\n }\r\n\r\n performImport = () => {\r\n this.setState({ isSaving: true, showImportConfirmModal: false })\r\n this.importJobStartSubscription && this.importJobStartSubscription.unsubscribe()\r\n this.importJobStartSubscription = ImportJobStartObservable(this.state.importData?.ImportJobID || 0, 0).subscribe(\r\n (data) => {\r\n data.Result ? toast.success(\"Records imported successfully.\") : toast.error(\"Import completed with errors\")\r\n this.props.onClose()\r\n },\r\n error => this.handleApiError(error)\r\n )\r\n }\r\n\r\n performCancel = () => {\r\n this.setState({ isCancelling: true })\r\n this.importJobCancelSubscription && this.importJobCancelSubscription.unsubscribe()\r\n this.importJobCancelSubscription = ImportJobCancelObservable(this.state.importData?.ImportJobID || 0).subscribe(\r\n () => {\r\n toast.success(\"Created job is cancelled successfully.\")\r\n this.resetState()\r\n },\r\n error => this.handleApiError(error)\r\n )\r\n }\r\n\r\n resetState = () => this.setState({ ...this.emptyData, fileInputKey: Math.random().toString() })\r\n\r\n handleHandleFileUpload = (e: React.ChangeEvent) => {\r\n const file = e.target && e.target.files && e.target.files[0]\r\n if (file && file.size > 0 && file.size < ImportCSVMaxFileSize) {\r\n const ext = file.name.substring(file.name.lastIndexOf(\".\") + 1)\r\n if (ext && ext.toLowerCase() === \"csv\") {\r\n var reader = new FileReader()\r\n const self = this\r\n reader.onload = function (e) {\r\n const result = e.target?.result as string || \"\"\r\n const stringLength = result.indexOf(\"base64\") + 7\r\n const fileContent = result.slice(stringLength, result.length)\r\n if (fileContent) {\r\n self.setState({ fileName: file.name, fileContent: fileContent })\r\n } else {\r\n self.setState({ fileName: undefined, fileContent: undefined })\r\n toast.error(\"CSV file is empty.\")\r\n }\r\n }\r\n reader.onerror = function (error) { toast.error(error) }\r\n reader.readAsDataURL(file)\r\n } else {\r\n toast.error(\"File type not allowed, Please upload CSV file.\")\r\n }\r\n } else {\r\n this.setState({ fileName: undefined, fileContent: undefined })\r\n }\r\n }\r\n\r\n calcColspan = (items: string[], i: number, tableColsCount: number) => {\r\n if (i === items.length - 1) {\r\n return Math.max(1, tableColsCount - i)\r\n }\r\n return 1\r\n }\r\n\r\n downloadTemplate = () => {\r\n const csvData = new Blob([\"Location Name,Location Code,Address 1,Address 2,City,State,Zip,Province,Country,Phone,Fax,Web Site URL,Time Zone,Lab Code,Lab Account Number\\r\\n\"], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, \"location-import-template.csv\")\r\n }\r\n\r\n render() {\r\n const { step, fileInputKey, fileContent,\r\n importData, validationResult,\r\n isSaving, isCancelling, showCancelConfirmModal, showImportConfirmModal\r\n } = this.state\r\n\r\n const previewTableColsCount = step === \"mapping\" && importData\r\n ? Math.max(...importData.Records.map(item => item.length), importData.HeaderItems.length)\r\n : 0\r\n return \r\n \r\n LOCATION IMPORT\r\n \r\n \r\n {step === \"file\" &&\r\n
\r\n
UPLOAD FILE
\r\n \r\n
Import CSV File
\r\n \r\n \r\n \r\n
\r\n \r\n Upload file:\r\n \r\n \r\n \r\n \r\n
}\r\n {step === \"mapping\" &&\r\n
\r\n
PREVIEW
\r\n \r\n \r\n {importData && importData.HeaderItems.length > 0 && {importData.HeaderItems.map((item, i) => )}}\r\n \r\n \r\n {importData && importData.Records.length > 0 && importData.Records.map((row, i) => {row.map((item, j) => )})}\r\n {importData && importData.Records.length === 0 && }\r\n \r\n
{item}
{item}
NO DATA FOUND
\r\n
}\r\n {step === \"import\" &&\r\n
\r\n
IMPORT FILE VALIDATION
\r\n Import file validation: ({(validationResult?.TotalRowsCount || 0) - (validationResult?.ValidRowsCount || 0)} of {validationResult?.TotalRowsCount || 0} have errors)\r\n {validationResult && validationResult.Rows.length > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n {validationResult.Headers.map((item, i) => )}\r\n \r\n \r\n \r\n {validationResult.Rows.map((row, i) => \r\n \r\n \r\n {row.Items.length === validationResult.Headers.length && row.Items.map((item, j) => )}\r\n {row.Items.length !== validationResult.Headers.length && }\r\n )}\r\n \r\n
Line #Validation errors and warnings{item}
{row.RowNum}\r\n {(row.Errors?.length || 0) > 0 &&
\r\n Error{row.Errors!.length > 1 ? `s (${row.Errors!.length}):` : \":\"}\r\n {row.Errors!.map((item, i) =>
{item}
)}\r\n
}\r\n {(row.Warnings?.length || 0) > 0 &&
\r\n Warning{row.Warnings!.length > 1 ? `s (${row.Warnings!.length}):` : \":\"}\r\n {row.Warnings!.map((item, i) =>
{item}
)}\r\n
}\r\n
{item}Original line:
{row.OriginalString}
}\r\n
}\r\n this.setState({ showCancelConfirmModal: false })} />\r\n this.setState({ showImportConfirmModal: false })} />\r\n
\r\n \r\n
\r\n {step === \"file\" && }\r\n
\r\n
\r\n {step === \"file\" && <>\r\n \r\n NEXT\r\n }\r\n {step === \"mapping\" && <>\r\n \r\n SUBMIT FOR VALIDATION\r\n }\r\n {step === \"import\" && <>\r\n \r\n this.setState({ showCancelConfirmModal: true })} spin={isCancelling} disableOnSpin>CANCEL\r\n this.setState({ showImportConfirmModal: true })} disabled={isCancelling || !validationResult?.ValidRowsCount} spin={isSaving} disableOnSpin>IMPORT\r\n }\r\n
\r\n
\r\n
\r\n }\r\n\r\n static defaultProps = { step: \"file\" }\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport interface AdditionalTest {\r\n AccountID: number\r\n LabAccount: string\r\n PanelCode: string\r\n Inactive: boolean\r\n}\r\n\r\nexport function GetAdditionalTests(accountId: number, labAccount: string) {\r\n return ObservableFromFetch(`GovOrder/GetAdditionalTests?AccountID=${accountId}&LabAccount=${labAccount}`)\r\n}\r\n\r\nexport function UpdateAdditionalTests(accountId: number, labAccount: string, panels: string[], selectedPanels: string[]) {\r\n const requestBody: string = JSON.stringify(panels.map(p => {return { AccountID: accountId, LabAccount: labAccount, PanelCode: p, Inactive: selectedPanels.indexOf(p) == -1 }} ))\r\n return ObservableFromFetch(\"GovOrder/UpdateAdditionalTests\", requestBody, \"PUT\")\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Form, Col, Button, Spinner } from \"react-bootstrap\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport Checkbox from \"../../Checkbox\"\r\nimport LabAccountListGet from \"../../../api/Administration/LabAccountListGet\"\r\nimport LabAccount from \"../../../api/Administration/Model/LabAccount\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport { APIError } from \"../../../api/ObservableFromFetch\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport GovGetPanels from \"../../../api/Randoms/GovGetPanels\"\r\nimport { AdditionalTest, GetAdditionalTests, UpdateAdditionalTests } from \"../../../api/Administration/AdditionalTests\"\r\nimport { GovPanel, SampleType } from \"../../../api/Randoms/GovPoolModel/CollectionTypeResponse\"\r\n\r\ninterface AdditionalTestingProps {\r\n portalMode?: boolean\r\n locationMode?: boolean\r\n implementationID: number\r\n accountID: number\r\n show: boolean\r\n onClose: () => void\r\n}\r\n\r\ninterface AdditionalTestingState {\r\n labAccountsLoading: boolean\r\n labAccounts: LabAccount[]\r\n labAccountSelection?: LabAccount\r\n panelsLoading: boolean\r\n panels: GovPanel[]\r\n panelSelection: string[]\r\n loading: boolean\r\n saving: boolean\r\n showConfirmSave: boolean\r\n}\r\n\r\nexport default class AdditionalTesting extends React.PureComponent {\r\n subscription?: Subscription\r\n loadLabAccountsSubscription?: Subscription\r\n loadPanelSubscription?: Subscription\r\n labAccountRef = React.createRef>()\r\n state: AdditionalTestingState = {\r\n labAccountSelection: undefined,\r\n labAccountsLoading: false,\r\n panelsLoading: false,\r\n panels: [],\r\n panelSelection: [],\r\n loading: false,\r\n saving: false,\r\n labAccounts: [],\r\n showConfirmSave: false,\r\n }\r\n\r\n componentDidMount() {\r\n this.loadLabAccounts()\r\n }\r\n\r\n componentDidUpdate(prevProps: AdditionalTestingProps) {\r\n if (this.props.show && this.props.show !== prevProps.show) {\r\n this.loadLabAccounts()\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadLabAccountsSubscription && this.loadLabAccountsSubscription.unsubscribe()\r\n this.loadPanelSubscription && this.loadPanelSubscription.unsubscribe()\r\n this.subscription && this.subscription.unsubscribe()\r\n }\r\n\r\n onCancel = () => {\r\n this.props.onClose()\r\n this.setState({ saving:false, loading:false })\r\n }\r\n\r\n onSubmit = () => {\r\n this.saveData()\r\n }\r\n\r\n saveData = () => {\r\n if (!this.state.labAccountSelection?.LabAccountNumber) {\r\n return\r\n }\r\n this.setState({ saving: true })\r\n this.subscription = UpdateAdditionalTests(this.props.accountID, this.state.labAccountSelection?.LabAccountNumber, this.state.panels.map(p => p.ID), this.state.panelSelection).subscribe(\r\n data => {\r\n this.setState({ saving: false })\r\n toast.success(data)\r\n this.onCancel()\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n loadLabAccounts() {\r\n this.setState({ labAccountsLoading: true })\r\n this.loadLabAccountsSubscription && this.loadLabAccountsSubscription.unsubscribe()\r\n this.loadLabAccountsSubscription = LabAccountListGet(this.props.implementationID, this.props.accountID, false).subscribe(\r\n data => this.setState({ labAccounts: data.ActiveLabAccount, labAccountsLoading: false }),\r\n error => this.handleAPIError(error, { labAccountsLoading: false })\r\n )\r\n }\r\n\r\n loadPanels = (selectedLabAccount?: LabAccount) => {\r\n if (!selectedLabAccount) {\r\n return\r\n }\r\n\r\n this.setState({ panelsLoading: true, panels: [] })\r\n this.loadPanelSubscription && this.loadPanelSubscription.unsubscribe()\r\n this.loadPanelSubscription = GovGetPanels(selectedLabAccount.LabAccountNumber).subscribe(\r\n (data: SampleType[]) => this.setState({ panelsLoading: false, panels: data.map(st => st.Panels).reduce((acc, val) => acc.concat(val), []) }, () => {\r\n this.loadAdditionalTests(selectedLabAccount.LabAccountNumber)\r\n }),\r\n (error) => this.handleAPIError(error, { panelsLoading: false })\r\n )\r\n }\r\n\r\n loadAdditionalTests = (labAccountNumber: string) => {\r\n this.setState({ loading: true })\r\n this.subscription && this.subscription.unsubscribe()\r\n this.subscription = GetAdditionalTests(this.props.accountID, labAccountNumber).subscribe(\r\n (data: AdditionalTest[]) => this.setState({ loading: false, panelSelection: data.map(t => t.PanelCode) }),\r\n (error) => this.handleAPIError(error, { loading: false })\r\n )\r\n }\r\n\r\n handleLabChange = (items: LabAccount[]) => {\r\n const selectedLab = items[0]\r\n if (selectedLab === this.state.labAccountSelection) { return }\r\n this.setState({ labAccounts: [...this.state.labAccounts], labAccountSelection: selectedLab }, () => {\r\n this.loadPanels(selectedLab)\r\n })\r\n }\r\n\r\n handlePanelChange = (panelId: string) => {\r\n const newPanelSelection: string[] = this.state.panelSelection.includes(panelId) ? [...this.state.panelSelection.filter(p => p != panelId)] : [...this.state.panelSelection, panelId]\r\n this.setState({ panelSelection: newPanelSelection })\r\n }\r\n\r\n render() {\r\n const { labAccountsLoading, panelsLoading, loading, saving } = this.state\r\n const disableSave = !this.state.labAccountSelection?.LabAccountNumber || labAccountsLoading || panelsLoading || loading\r\n\r\n return (\r\n <>\r\n \r\n \r\n Additional Testing\r\n \r\n \r\n
Select the test codes that you want displayed as Additional Tests for this company
\r\n
\r\n \r\n Account Number\r\n {labAccountsLoading && }\r\n \r\n { showLabForSelectedCollectionType(option, this.state.sampleTypes.selected?.Description || \"\")}\r\n onChange={this.handleLabChange}\r\n options={this.state.labAccounts || []}\r\n selected={this.state.labAccountSelection ? [this.state.labAccountSelection] : []}\r\n placeholder=\"Enter the Lab Account\">\r\n \r\n }\r\n \r\n \r\n {panelsLoading && }\r\n \r\n {this.state.panels.map((item: GovPanel, key: number) => this.handlePanelChange(e.target.value)} checked={this.state.panelSelection.includes(item.ID)} />)}\r\n \r\n {(panelsLoading || loading) && }\r\n \r\n
\r\n \r\n \r\n Update\r\n \r\n
\r\n \r\n )\r\n }\r\n\r\n}\r\n","import React, { Dispatch } from \"react\"\r\nimport { Button, Col, Form, InputGroup, ListGroup, Modal, OverlayTrigger, Popover, Spinner } from \"react-bootstrap\"\r\nimport MaskedInput from \"react-maskedinput\"\r\nimport { toast } from \"react-toastify\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { catchError, debounceTime, filter, map, switchMap } from \"rxjs/operators\"\r\nimport { FaAngleDown, FaInfoCircle } from \"react-icons/fa\"\r\nimport { ImplementationTypeGovt, PhoneRegexp, SiteDomain, ZipRegexp, CompanyNameRegexp, ProtectedSites, MaxFileNameLength, MaxImageFileSize } from \"../../config/Constants\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport BusinessType from \"../../api/BusinessTypes/BusinessType\"\r\nimport BusinessTypesGet from \"../../api/BusinessTypes/BusinessTypesGet\"\r\nimport Address from \"../../api/Location/LocationModel/Address\"\r\nimport Role from \"../../api/Roles/Model/Role\"\r\nimport UserRolesGet from \"../../api/Roles/UserRolesGet\"\r\nimport PrimaryIDType from \"../../api/PrimaryIDTypes/PrimaryIDType\"\r\nimport PrimaryIDTypesGet from \"../../api/PrimaryIDTypes/PrimaryIDTypesGet\"\r\nimport CompanyInactivate from \"../../api/Companies/CompanyInactivate\"\r\nimport { CompanyUpdateObservable, CompanyCreateObservable } from \"../../api/Companies/CompanyUpdate\"\r\nimport CompanyData from \"../../api/Companies/CompanyModel/CompanyData\"\r\nimport CompaniesGet, { CompaniesDetailsExportCsv } from \"../../api/Companies/CompaniesGet\"\r\nimport { StateObservable } from \"../../api/OrderRequests/OrderRequestsConstraintGet\"\r\nimport State from \"../../api/OrderRequests/OrderRequestsModel/State\"\r\nimport AddressInput from \"../FormattedInputs/AddressInput\"\r\nimport PhoneNumberMaskedInput from \"../FormattedInputs/PhoneNumberMaskedInput\"\r\nimport StateSelect from \"../FormattedInputs/StateSelect\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport AddressMatchModal, { AddressData } from \"../AddressMatchModal\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\nimport OrderSecurityOverride from \"../Administration/OrderSecurityOverride\"\r\nimport OrderSecurity from \"../Invitation/OrderSecurity\"\r\nimport LabAccountSelection from \"./LabAccountSelection\"\r\nimport { isCompanyAdmin, isPortalAdmin, isSiteAdmin } from \"../../authentication/isAdminRole\"\r\nimport { AppState, WorkforceClinicPortal } from \"../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport CompanyEditData from \"../../api/Companies/CompanyModel/CompanyEditData\"\r\nimport SubscriptionPlan from \"../../api/Administration/Model/SubscriptionPlan\"\r\nimport SubscriptionModal from \"./SubscriptionModal\"\r\nimport { AsyncTypeahead } from \"react-bootstrap-typeahead\"\r\nimport AutoFilterPortalsGetObservable from \"../../api/Portals/AutoFilterPortalsGet\"\r\nimport PortalsGetObservable from \"../../api/Portals/PortalsGet\"\r\nimport GetSubscriptionPlans from \"../../api/Administration/GetSubscriptionPlans\"\r\nimport PortalUpdate from \"../../api/Portals/PortalUpdate\"\r\nimport PortalEditData from \"../../api/Portals/PortalModel/PortalEditData\"\r\nimport PortalData from \"../../api/Portals/PortalModel/PortalData\"\r\nimport PortalInactivateObservable from \"../../api/Portals/PortalInactivate\"\r\nimport { GetSelectedPortal, getUserNameForSelectedCompany, SelectedCompanyName, SelectedPortalName } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { AddCompanyForPortalRoute, AddNewCompanyRoute, CompanyDetailsRoute, Home, MyOrganizationRoute, PortalAdministrationRoute, PortalDetailsRoute } from \"../../config/Routes\"\r\nimport ManageImages from \"./ManageImages\"\r\nimport CompanyImport from \"./CompanyImport\"\r\nimport UserAccessSettings from \"../../authentication/UserAccessSettings\"\r\nimport { BuildUserAccess } from \"../../authentication/BuildUserAccess\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport TimeZoneListGet from \"../../api/Administration/TimeZoneListGet\"\r\nimport TimeZoneData from \"../../api/Administration/Model/TimeZoneData\"\r\nimport PortalFields from \"../Invitation/Portal/PortalFields\";\r\nimport PortalAdminData from \"../../api/Portals/PortalModel/PortalAdminData\"\r\nimport { PortalInvitation, PortalInviteData } from \"../../api/Invitation/InvitationCreate\";\r\nimport LabAccountListGet from \"../../api/Administration/LabAccountListGet\"\r\nimport { EditLocationInformation } from \"./EditLocationInformation\"\r\nimport GetAccountsByNameObservable from \"../../api/Companies/GetAccountsByName\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport { CompanyCodeCheck, CompanyNameCheck, UrlCheck } from \"../../api/Invitation/InformationGet\"\r\nimport { Addresses } from \"../../api/OrderRequests/OrderRequestsModel/Addresses\"\r\nimport { IsOnTrack } from \"../../App\";\r\nimport { CompanyActivationObservable, PortalActivationObservable } from \"../../api/Administration/ActivationProcess\"\r\nimport FileSaver from \"file-saver\"\r\nimport FormatTimestampFileName from \"../../formatters/FormatTimestampFileName\"\r\nimport DeviceSelection from \"./DeviceSelection\"\r\nimport { ValidZipCode } from \"../../formatters/FormatZipCode\"\r\nimport LocationImport from \"./LocationImport\"\r\nimport AdditionalTesting from \"./CompanyInformation/AdditionalTesting\"\r\nimport { WorkforceReloadPortalsCompanies } from \"../../actions/WorkforceClinicAction\"\r\nimport { Action } from \"redux\"\r\n\r\n\r\nexport type CompanyInformationRouteParams = { name?: string, companyName?: string }\r\n\r\nexport interface CompanyInformationProps extends RouteComponentProps {\r\n portalMode?: boolean\r\n isNew?: boolean\r\n}\r\n\r\ninterface CompanyInformationAuthProps {\r\n companyName?: string\r\n portalName?: string\r\n portal?: WorkforceClinicPortal\r\n isCompanyAdmin?: boolean\r\n isPortalAdmin?: boolean\r\n isSiteAdmin?: boolean\r\n userAccess?: UserAccessSettings\r\n userName?: string\r\n}\r\n\r\ninterface CompanyInformationDispatchProps {\r\n reload: () => void\r\n}\r\n\r\ninterface CompanyInformationData {\r\n name: string\r\n code: string\r\n streetAddress1: string\r\n streetAddress2: string\r\n city: string\r\n state: string\r\n zip: string\r\n province?: string\r\n country?: string\r\n timeZoneID: number\r\n webSiteURL?: string\r\n fax: string\r\n officePhone: string\r\n contactDerPhone: string\r\n contactDerFirstName: string\r\n contactDerLastName: string\r\n contactPhone: string\r\n contactFirstName: string\r\n contactLastName: string\r\n businessTypeId?: number\r\n portalAdminRoleID: number | string\r\n primaryIDType: number\r\n companyData?: CompanyData\r\n labAcctRequired: boolean\r\n inactive: boolean\r\n}\r\n\r\ninterface PortalInformationData {\r\n implementationID?: number\r\n name: string\r\n code: string\r\n streetAddress1: string\r\n streetAddress2: string\r\n city: string\r\n state: string\r\n zip: string\r\n officePhone: string\r\n isTPA?: boolean\r\n subscriptionPlanID: number\r\n subscriptionPlan?: SubscriptionPlan\r\n portalData?: PortalData\r\n portalAdminData?: PortalAdminData\r\n url: string\r\n mroFileContent?: string\r\n inactive: boolean\r\n}\r\n\r\ntype InformationData = CompanyInformationData & PortalInformationData\r\ninterface CompanyInformationState extends InformationData {\r\n implementationID?: number\r\n showInactivateConfirmation: boolean\r\n showOrderSecurityOverride: boolean\r\n showSubscriptions: boolean\r\n showManageImages: boolean\r\n formValidated: boolean\r\n businessTypesLoading: boolean\r\n businessTypes: BusinessType[]\r\n loading: boolean\r\n labAccountsLoading: boolean\r\n inactivating: boolean\r\n activating: boolean\r\n saving: boolean\r\n rolesLoading: boolean\r\n roles?: Role[]\r\n primaryIDTypesLoading: boolean\r\n primaryIDTypes?: PrimaryIDType[]\r\n statesLoading: boolean\r\n states: State[]\r\n subscriptionPlansLoading: boolean\r\n subscriptionPlans: SubscriptionPlan[]\r\n retrievedCompanies?: CompanyData[]\r\n retrievedPortals?: PortalData[]\r\n retrievedPortalPredictions?: string[]\r\n showOrderSecurity: boolean\r\n showLabAccountSelection: boolean\r\n showDevices: boolean\r\n showCompanyImport: boolean\r\n showLocationImport: boolean\r\n selectedCompany?: string\r\n allCompanies: AutoFilterCompany[]\r\n companies: string[]\r\n timeZones?: TimeZoneData[]\r\n timeZonesLoading: boolean\r\n mroFileName: string\r\n isPortalFieldsValid: boolean\r\n isNameValid: boolean\r\n isStreetAddress1Valid: boolean\r\n isCityValid: boolean\r\n isStateValid: boolean\r\n isZipValid: boolean\r\n isPhoneValid: boolean\r\n isBusinessTypeValid: boolean\r\n isPrimaryIDTypeValid: boolean\r\n activeLabAccountsCount: number\r\n showLocation: boolean,\r\n showAdditionalTesting: boolean,\r\n urlValid: boolean,\r\n urlChecking: boolean\r\n urlAvailable?: boolean\r\n urlCheckMessage?: string\r\n isNameChecking: boolean\r\n isNameAvailable?: boolean\r\n isNameLengthValid: boolean\r\n isNameTextValid: boolean\r\n isCodeValid: boolean\r\n isCodeChecking: boolean\r\n isCodeAvailable?: boolean\r\n isMROFileSizeValid: boolean,\r\n saved: boolean\r\n showNewCompanyModal: boolean\r\n loadingCsv: boolean\r\n}\r\n\r\nconst ImplementationTypeTPA = \"TPA\"\r\n\r\ninterface NameData {\r\n value: string\r\n implementationID?: number\r\n}\r\n\r\nexport class CompanyInformation extends React.PureComponent {\r\n emptyData: InformationData = {\r\n name: \"\",\r\n code: \"\",\r\n streetAddress1: \"\",\r\n streetAddress2: \"\",\r\n city: \"\",\r\n state: \"\",\r\n zip: \"\",\r\n officePhone: \"\",\r\n contactDerPhone: \"\",\r\n contactDerFirstName: \"\",\r\n contactDerLastName: \"\",\r\n contactPhone: \"\",\r\n contactFirstName: \"\",\r\n contactLastName: \"\",\r\n businessTypeId: undefined,\r\n portalAdminRoleID: \"\",\r\n primaryIDType: 0,\r\n companyData: undefined,\r\n isTPA: undefined,\r\n subscriptionPlanID: 0,\r\n subscriptionPlan: undefined,\r\n portalData: undefined,\r\n timeZoneID: 0,\r\n fax: \"\",\r\n portalAdminData: undefined,\r\n labAcctRequired: true,\r\n url: \"\",\r\n inactive: false\r\n }\r\n emptyState: CompanyInformationState = {\r\n ...this.emptyData,\r\n showInactivateConfirmation: false,\r\n showOrderSecurityOverride: false,\r\n showSubscriptions: false,\r\n showManageImages: false,\r\n formValidated: false,\r\n businessTypesLoading: false,\r\n businessTypes: [],\r\n loading: false,\r\n labAccountsLoading: false,\r\n inactivating: false,\r\n activating: false,\r\n saving: false,\r\n rolesLoading: false,\r\n primaryIDTypesLoading: false,\r\n statesLoading: false,\r\n states: [],\r\n subscriptionPlansLoading: false,\r\n subscriptionPlans: [],\r\n retrievedCompanies: undefined,\r\n showOrderSecurity: false,\r\n showLabAccountSelection: false,\r\n showDevices: false,\r\n showCompanyImport: false,\r\n showLocationImport: false,\r\n selectedCompany: this.props.match.params.companyName,\r\n companies: [],\r\n allCompanies: [],\r\n timeZonesLoading: false,\r\n activeLabAccountsCount: 0,\r\n showLocation: false,\r\n showAdditionalTesting: false,\r\n isNameValid: true,\r\n isStreetAddress1Valid: true,\r\n isPortalFieldsValid: false,\r\n isCityValid: true,\r\n isStateValid: true,\r\n isZipValid: true,\r\n isPhoneValid: true,\r\n isBusinessTypeValid: true,\r\n isPrimaryIDTypeValid: true,\r\n urlValid: true,\r\n urlChecking: false,\r\n isNameChecking: false,\r\n isNameLengthValid: true,\r\n isNameTextValid: true,\r\n isCodeChecking: false,\r\n isCodeValid: true,\r\n mroFileName: \"\",\r\n isMROFileSizeValid: true,\r\n saved: false,\r\n showNewCompanyModal: false,\r\n loadingCsv: false\r\n }\r\n state: CompanyInformationState = { ...this.emptyState }\r\n\r\n searchPortalsSubscription?: Subscription\r\n searchCompaniesSubscription?: Subscription\r\n searchPortalsInitialSubscription?: Subscription\r\n loadSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n inactivateSubscription?: Subscription\r\n businessTypesSubscription?: Subscription\r\n userRolesSubscription?: Subscription\r\n primaryIDTypesSubscription?: Subscription\r\n statesSubscription?: Subscription\r\n subscriptionPlansSubscription?: Subscription\r\n loadCompaniesSubscription?: Subscription\r\n timeZoneSubscription?: Subscription\r\n loadLabAccountsSubscription?: Subscription\r\n urlExistsSubscription?: Subscription\r\n nameExistsSubscription?: Subscription\r\n codeExistsSubscription?: Subscription\r\n\r\n companyName$ = new Subject()\r\n implementationName$ = new Subject()\r\n searchImplementation$ = new Subject()\r\n searchCompany$ = new Subject()\r\n checkUrl$ = new Subject()\r\n checkName$ = new Subject()\r\n checkCode$ = new Subject()\r\n\r\n typeahead = React.createRef>()\r\n mroFile = React.createRef()\r\n\r\n implementationName?: string = this.props.match.params.name\r\n companyName?: string = this.props.match.params.companyName\r\n\r\n componentDidMount() {\r\n this.load()\r\n }\r\n\r\n componentDidUpdate(prevProps: CompanyInformationProps, prevState: CompanyInformationState) {\r\n if (prevProps.match.params.name !== this.props.match.params.name) {\r\n this.load()\r\n }\r\n if (!this.props.portalMode) {\r\n if (this.state.companyData && !prevState.companyData) {\r\n this.loadLabAccounts()\r\n }\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.searchPortalsSubscription && this.searchPortalsSubscription.unsubscribe()\r\n this.searchCompaniesSubscription && this.searchCompaniesSubscription.unsubscribe()\r\n this.searchPortalsInitialSubscription && this.searchPortalsInitialSubscription.unsubscribe()\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.loadCompaniesSubscription && this.loadCompaniesSubscription.unsubscribe()\r\n this.inactivateSubscription && this.inactivateSubscription.unsubscribe()\r\n this.businessTypesSubscription && this.businessTypesSubscription.unsubscribe()\r\n this.primaryIDTypesSubscription && this.primaryIDTypesSubscription.unsubscribe()\r\n this.statesSubscription && this.statesSubscription.unsubscribe()\r\n this.subscriptionPlansSubscription && this.subscriptionPlansSubscription.unsubscribe()\r\n this.timeZoneSubscription && this.timeZoneSubscription.unsubscribe()\r\n this.loadLabAccountsSubscription && this.loadLabAccountsSubscription.unsubscribe()\r\n this.urlExistsSubscription && this.urlExistsSubscription.unsubscribe()\r\n this.nameExistsSubscription && this.nameExistsSubscription.unsubscribe()\r\n this.codeExistsSubscription && this.codeExistsSubscription.unsubscribe()\r\n }\r\n\r\n load = () => {\r\n this.setState({ statesLoading: true })\r\n this.statesSubscription = StateObservable().subscribe(\r\n (results: State[]) => this.setState(prevState => ({\r\n states: results,\r\n statesLoading: false,\r\n state: prevState.companyData ? this.mapState(prevState.companyData, results) : prevState.state\r\n })),\r\n () => { this.setState({ statesLoading: false }) }\r\n )\r\n\r\n if (this.props.portalMode) {\r\n if (this.props.isSiteAdmin) {\r\n this.setState({ subscriptionPlansLoading: true })\r\n this.subscriptionPlansSubscription = GetSubscriptionPlans().subscribe(\r\n (results: SubscriptionPlan[]) => this.setState(prevState => ({\r\n subscriptionPlans: results,\r\n subscriptionPlansLoading: false,\r\n subscriptionPlan: prevState.portalData ? this.mapSubscriptionPlan(prevState.portalData, results) : undefined\r\n })),\r\n () => { this.setState({ subscriptionPlansLoading: false }) }\r\n )\r\n }\r\n\r\n this.searchPortalsSubscription = this.searchImplementation$.pipe(\r\n debounceTime(500),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n AutoFilterPortalsGetObservable(name).pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: string[] }) => this.setState({ loading: o.loading, retrievedPortalPredictions: o.result }),\r\n (error) => this.handleAPIError(error, { loading: false, userInfo: undefined })\r\n )\r\n\r\n this.loadSubscription = this.implementationName$.pipe(\r\n map(name => name.trim()),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n PortalsGetObservable(name, true).pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: PortalData[] }) => this.setState({\r\n loading: o.loading,\r\n retrievedPortals: o.result && o.result.length > 1 ? o.result : undefined,\r\n ...this.mapPortalData(o.result)\r\n }),\r\n (error) => this.handleAPIError(error, { loading: false, userInfo: undefined })\r\n )\r\n if (!this.props.isSiteAdmin && this.props.portalName) {\r\n this.implementationName$.next(this.props.portalName)\r\n } else if (this.implementationName) {\r\n this.implementationName$.next(this.implementationName)\r\n }\r\n\r\n this.urlExistsSubscription = this.checkUrl$.pipe(\r\n map(name => `${name.trim()}.${SiteDomain}`),\r\n filter(name => this.isUrlValid(name)),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n UrlCheck(name).pipe(\r\n map(result => ({ loading: false, result: true, message: result })),\r\n catchError((error) =>\r\n of({ loading: false, result: false, message: error?.errorData?.message || error.message })\r\n )\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: boolean, message?: string }) => this.setState({ urlChecking: o.loading, urlAvailable: o.result, urlCheckMessage: o.message }),\r\n (error) => this.handleAPIError(error, { urlChecking: false, urlAvailable: undefined, urlCheckMessage: undefined })\r\n )\r\n } else {\r\n this.setState({ rolesLoading: true, primaryIDTypesLoading: true, businessTypesLoading: true, timeZonesLoading: true })\r\n this.businessTypesSubscription = BusinessTypesGet().subscribe(\r\n (data) => this.setState({ businessTypes: data, businessTypesLoading: false }),\r\n (error) => this.handleAPIError(error, { businessTypesLoading: false })\r\n )\r\n this.userRolesSubscription = UserRolesGet().subscribe(\r\n (data: Role[]) => this.setState(prevState => ({\r\n roles: data,\r\n rolesLoading: false,\r\n portalAdminRoleID: prevState.companyData ? this.mapRole(prevState.companyData, data) || 0 : prevState.portalAdminRoleID\r\n })),\r\n (error) => this.handleAPIError(error, { rolesLoading: false })\r\n )\r\n this.primaryIDTypesSubscription = PrimaryIDTypesGet().subscribe(\r\n (data: PrimaryIDType[]) => this.setState(prevState => ({\r\n primaryIDTypes: data,\r\n primaryIDTypesLoading: false,\r\n primaryIDType: prevState.companyData ? this.mapPrimaryIDType(prevState.companyData, data) || 0 : prevState.primaryIDType\r\n })),\r\n (error) => this.handleAPIError(error, { primaryIDTypesLoading: false })\r\n )\r\n\r\n this.timeZoneSubscription = TimeZoneListGet().subscribe(\r\n (data: TimeZoneData[]) => this.setState({ timeZones: data, timeZonesLoading: false }),\r\n (error) => this.handleAPIError(error, { timeZonesLoading: false })\r\n )\r\n\r\n this.searchCompaniesSubscription = this.searchCompany$.pipe(\r\n debounceTime(500),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n GetAccountsByNameObservable(name, true).pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: AutoFilterCompany[] }) => this.setState({ loading: o.loading, allCompanies: o.result || [], companies: o.result?.map(c => c.Name).filter((v, i, a) => a.indexOf(v) === i) || [] }),\r\n (error) => this.handleAPIError(error, { loading: false, companies: [], allCompanies: [] })\r\n )\r\n\r\n this.loadSubscription = this.companyName$.pipe(\r\n map(name => name.trim()),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n CompaniesGet(name, this.state.allCompanies.find(c => c.Name === name)?.Inactive || false).pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError((error) => of({ loading: false, error: error }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: CompanyData[], error?: Error | APIError }) => {\r\n if (o.error) this.handleAPIError(o.error, {})\r\n this.setState({\r\n loading: o.loading,\r\n retrievedCompanies: o.result && o.result.length > 1 ? o.result : undefined,\r\n isNameAvailable: true, isCodeChecking: false, isCodeValid: true, isCodeAvailable: undefined,\r\n ...this.mapCompanyData(o.result)\r\n })\r\n },\r\n (error) => this.handleAPIError(error, { loading: false, userInfo: undefined })\r\n )\r\n\r\n this.nameExistsSubscription = this.checkName$.pipe(\r\n map(data => { return {value: data.value.trim(), implementationID: data.implementationID} } ),\r\n filter(data => this.isCompanyNameValid(data.value)),\r\n switchMap(data => concat(\r\n of({ loading: true }),\r\n CompanyNameCheck(data.value, undefined, true, data.implementationID).pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: Addresses | null }) => this.setState({\r\n isNameChecking: o.loading,\r\n isNameAvailable: !o.result || o.result?.ParentID === this.state.companyData?.AccountID\r\n }),\r\n (error) => this.handleAPIError(error, { nameChecking: false, nameAvailable: undefined })\r\n )\r\n\r\n this.codeExistsSubscription = this.checkCode$.pipe(\r\n map(code => code),\r\n filter(code => code.trim().length > 0 && this.isCodeValid(code)),\r\n switchMap(code => concat(\r\n of({ loading: true }),\r\n CompanyCodeCheck(code).pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: string }) => this.setState({ isCodeChecking: o.loading, isCodeAvailable: !o.result }),\r\n (error) => this.handleAPIError(error, { codeChecking: false, codeAvailable: undefined })\r\n )\r\n\r\n this.loadSubscription = this.implementationName$.pipe(\r\n map(name => name.trim()),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n PortalsGetObservable(name).pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: PortalData[] }) => this.setState({\r\n loading: o.loading\r\n }, () => {\r\n if (o.result && o.result.length > 0 ) {\r\n const data = o.result[0]\r\n this.setState({ portalData: { ...data, IsOnTrack: data?.ImplementationType === ImplementationTypeGovt }})\r\n }\r\n }),\r\n (error) => this.handleAPIError(error, { loading: false, userInfo: undefined })\r\n )\r\n\r\n if (!this.isSiteAdminOrPortalAdmin() && this.props.companyName) {\r\n this.companyName$.next(this.props.companyName)\r\n } else if (this.implementationName) {\r\n this.implementationName$.next(this.implementationName)\r\n } else if (this.companyName) {\r\n this.setState({companies: [this.companyName], selectedCompany: this.companyName, showNewCompanyModal: true})\r\n this.companyName$.next(this.companyName)\r\n }\r\n }\r\n }\r\n\r\n isSiteAdminOrPortalAdmin = (): boolean => !!this.props.isPortalAdmin || !!this.props.isSiteAdmin\r\n isDisabled = () => {\r\n const { portalMode, isNew } = this.props\r\n const { portalData, retrievedPortals, companyData, retrievedCompanies } = this.state\r\n return portalMode\r\n ? !(isNew && portalMode) && (!portalData || !!retrievedPortals)\r\n : !isNew && (!companyData || !!retrievedCompanies)\r\n }\r\n isFormValid = () => {\r\n const {\r\n name, isNameValid, isNameAvailable,\r\n code, isCodeValid, isCodeAvailable,\r\n streetAddress1, isStreetAddress1Valid,\r\n city, isCityValid,\r\n state, isStateValid,\r\n zip, isZipValid,\r\n officePhone, isPhoneValid,\r\n fax,\r\n businessTypeId, isBusinessTypeValid,\r\n primaryIDType, isPrimaryIDTypeValid,\r\n isPortalFieldsValid,\r\n subscriptionPlanID,\r\n urlAvailable,\r\n contactPhone, contactFirstName, contactLastName,\r\n contactDerPhone, contactDerFirstName, contactDerLastName,\r\n activeLabAccountsCount, labAcctRequired,\r\n companyData, portalData,\r\n isMROFileSizeValid\r\n } = this.state\r\n const { portalMode, isNew, isCompanyAdmin, isPortalAdmin, isSiteAdmin } = this.props\r\n const commonFormValid =\r\n !!streetAddress1 && isStreetAddress1Valid &&\r\n !!city && isCityValid &&\r\n !!state && isStateValid &&\r\n !!zip && isZipValid &&\r\n !!officePhone && isPhoneValid\r\n const disableCodeEdit = (!!companyData?.Code && companyData?.Code.length > 0) || (!isPortalAdmin && !isSiteAdmin)\r\n\r\n let valid = false\r\n if (isCompanyAdmin) { // edit company\r\n valid = !!name && isNameValid && isNameAvailable === true &&\r\n !!contactFirstName && !!contactLastName && !!contactPhone && this.isPhoneValid(contactPhone) &&\r\n !!contactDerFirstName && !!contactDerLastName && !!contactDerPhone && this.isPhoneValid(contactDerPhone) &&\r\n !!primaryIDType && isPrimaryIDTypeValid &&\r\n (activeLabAccountsCount > 0 || !labAcctRequired) &&\r\n (!fax || this.isPhoneValid(fax))\r\n } else if (isPortalAdmin) {\r\n if (portalMode) { // edit portal\r\n valid = !!name && isNameValid &&\r\n subscriptionPlanID > 0 &&\r\n isMROFileSizeValid\r\n } else {\r\n if (isNew) { // create company\r\n valid = !!name && isNameValid && isNameAvailable === true &&\r\n (!code || (code.length > 0 && isCodeValid && isCodeAvailable === true)) &&\r\n !!contactFirstName && !!contactLastName && !!contactPhone && this.isPhoneValid(contactPhone) &&\r\n !!contactDerFirstName && !!contactDerLastName && !!contactDerPhone && this.isPhoneValid(contactDerPhone) &&\r\n (portalData?.IsOnTrack || !!businessTypeId && isBusinessTypeValid)\r\n } else { // edit company\r\n valid = !!name && isNameValid && isNameAvailable === true &&\r\n (!code || disableCodeEdit || (code.length > 0 && isCodeValid && isCodeAvailable === true)) &&\r\n !!contactFirstName && !!contactLastName && !!contactPhone && this.isPhoneValid(contactPhone) &&\r\n !!contactDerFirstName && !!contactDerLastName && !!contactDerPhone && this.isPhoneValid(contactDerPhone) &&\r\n (activeLabAccountsCount > 0 || !labAcctRequired)\r\n }\r\n }\r\n } else if (isSiteAdmin) {\r\n if (portalMode) {\r\n if (isNew) { // create portal\r\n valid = isPortalFieldsValid &&\r\n subscriptionPlanID > 0 &&\r\n urlAvailable === true &&\r\n isMROFileSizeValid\r\n } else { // edit portal\r\n valid = !!name && isNameValid &&\r\n subscriptionPlanID > 0 &&\r\n isMROFileSizeValid\r\n }\r\n } else {\r\n if (isNew) { // create company\r\n valid = !!name && isNameValid && isNameAvailable === true &&\r\n (!code || (code.length > 0 && isCodeValid && isCodeAvailable === true)) &&\r\n (portalData?.IsOnTrack || !!businessTypeId && isBusinessTypeValid)\r\n } else { // edit company\r\n valid = (activeLabAccountsCount > 0 || !labAcctRequired) &&\r\n (!code || disableCodeEdit || (code.length > 0 && isCodeValid && isCodeAvailable === true))\r\n }\r\n }\r\n }\r\n\r\n return commonFormValid && valid\r\n }\r\n isNameValid = (value: string) => this.isDisabled() || (this.props.isNew && this.props.portalMode || value.trim().length > 4)\r\n isStreetAddress1Valid = (value: string) => this.isDisabled() || !!value.length\r\n isCityValid = (value: string) => this.isDisabled() || !!value.length\r\n isStateValid = (value: string) => this.isDisabled() || !!value.length\r\n isZipValid = (value: string) => this.isDisabled() || (!!value.length && ValidZipCode(value))\r\n isPhoneValid = (value: string) => this.isDisabled() || (!!value.length && (value.replace(/\\D/g, \"\").length === 10 || PhoneRegexp.test(value)))\r\n isBusinessTypeValid = (value?: number) => this.isDisabled() || !!value || !this.state.companyData?.IsOnTrack\r\n isPrimaryIDTypeValid = (value: number) => this.isDisabled() || !isCompanyAdmin || value > 0\r\n\r\n isUrlAllowed = (value: string) => !ProtectedSites.includes(value)\r\n isUrlMaxLengthValid = (value: string) => value.trim().length <= 56\r\n isUrlValid = (value: string) => value.trim().length > 0 && this.isUrlMaxLengthValid(value)\r\n\r\n prepareUrl = (value: string) => value.replace(/[^a-zA-Z0-9_-]/g, \"\").toLowerCase()\r\n changeUrlStatePart = (url: string) => ({ url: url, urlValid: this.isUrlValid(url), urlAvailable: undefined, urlCheckMessage: undefined })\r\n\r\n isCompanyNameValid = (value: string) => {\r\n return this.isNameLengthValid(value) && this.isNameTextValid(value)\r\n }\r\n isNameTextValid = (value: string) => {\r\n const regexp = new RegExp(CompanyNameRegexp);\r\n return regexp.test(value)\r\n }\r\n isNameLengthValid = (value: string) => {\r\n const len = value.trim().length\r\n return len >= 3 && len <= 32\r\n }\r\n isCodeValid = (value: string) => /^[a-zA-Z0-9]*$/.test(value) && value.trim().length <= 10\r\n\r\n mapCompanyData = (data?: CompanyData[]): CompanyInformationData => {\r\n if (!data || data.length !== 1) {\r\n return { ...this.emptyData, name: this.state.name }\r\n }\r\n const info = data[0]\r\n return {\r\n name: info.Name,\r\n code: info.Code,\r\n streetAddress1: info.Address1 || \"\",\r\n streetAddress2: info.Address2 || \"\",\r\n city: info.City || \"\",\r\n state: this.mapState(info, this.state.states),\r\n zip: info.Zip || \"\",\r\n province: info.Province,\r\n country: info.Country,\r\n timeZoneID: info.TimeZoneID,\r\n webSiteURL: info.WebsiteURL,\r\n fax: info.Fax || \"\",\r\n officePhone: info.Phone || \"\",\r\n contactDerPhone: info.ContactDerPhone || \"\",\r\n contactDerFirstName: info.ContactDerFirstName || \"\",\r\n contactDerLastName: info.ContactDerLastName || \"\",\r\n contactPhone: info.ContactPhone || \"\",\r\n contactFirstName: info.ContactFirstName || \"\",\r\n contactLastName: info.ContactLastName || \"\",\r\n businessTypeId: info.BusinessTypeID,\r\n portalAdminRoleID: this.state.roles ? this.mapRole(info, this.state.roles) || 0 : 0,\r\n primaryIDType: this.state.primaryIDTypes ? this.mapPrimaryIDType(info, this.state.primaryIDTypes) || 0 : 0,\r\n companyData: data[0],\r\n labAcctRequired: info.LabAcctRequired,\r\n inactive: info.Inactive\r\n }\r\n }\r\n\r\n mapPortalData = (data?: PortalData[]): PortalInformationData => {\r\n if (!data || data.length !== 1) {\r\n return { ...this.emptyData }\r\n }\r\n const info = data[0]\r\n return {\r\n implementationID: info.ImplementationID,\r\n name: info.CompanyName || \"\",\r\n code: \"\",\r\n streetAddress1: info.Address1 || \"\",\r\n streetAddress2: info.Address2 || \"\",\r\n city: info.City || \"\",\r\n state: this.mapState(info, this.state.states),\r\n zip: info.Zip || \"\",\r\n officePhone: info.Phone || \"\",\r\n isTPA: info.ImplementationType === ImplementationTypeTPA,\r\n subscriptionPlanID: info.SubscriptionPlanID,\r\n subscriptionPlan: this.state.subscriptionPlans ? this.mapSubscriptionPlan(info, this.state.subscriptionPlans) : undefined,\r\n portalData: { ...data[0], IsOnTrack: location.host.includes(\"ontrack\") },\r\n url: info.SubDomain || \"\",\r\n inactive: info.InActive\r\n }\r\n }\r\n\r\n mapRole = (info: CompanyData, roles: Role[]): number | undefined => roles.find(item => item.RoleID === info.PortalAdditionalRoleID)?.RoleID\r\n mapPrimaryIDType = (info: CompanyData, types: PrimaryIDType[]): number | undefined => types.find(item => item.PrimaryIDType === info.PrimaryIDType)?.PrimaryTypeID\r\n mapState = (info: CompanyData | PortalData, states: State[]): string => states.find(item => item.StateProvinceTerritoryID === info.StateProvinceTerritoryID)?.Abbreviation || info.State || \"\"\r\n mapSubscriptionPlan = (info: PortalData, plans: SubscriptionPlan[]): SubscriptionPlan | undefined => plans.find(item => item.SubscriptionPlanID === info.SubscriptionPlanID)\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n handleAddressSelect = (address: Address | string | undefined) => {\r\n if (address) {\r\n if (typeof address === 'string') {\r\n this.setState({ streetAddress1: address, isStreetAddress1Valid: this.isStreetAddress1Valid(address) })\r\n } else if (address as Address) {\r\n const street = address.StreetLine || \"\"\r\n const state = address.State || \"\"\r\n const city = address.City || \"\"\r\n this.setState({\r\n streetAddress1: street, isStreetAddress1Valid: this.isStreetAddress1Valid(street),\r\n state: state, isStateValid: this.isStateValid(state),\r\n city: city, isCityValid: this.isCityValid(city)\r\n })\r\n }\r\n } else {\r\n this.setState({ streetAddress1: \"\", isStreetAddress1Valid: false })\r\n }\r\n }\r\n\r\n handlePortalNameChange = (e: React.ChangeEvent) => {\r\n if (!this.props.portalMode && this.isSiteAdminOrPortalAdmin()) {\r\n this.setState({ ...this.emptyData, name: e.target.value, isNameValid: this.isNameValid(e.target.value) })\r\n } else {\r\n this.setState({ name: e.target.value, isNameValid: this.isCompanyNameValid(e.target.value) })\r\n }\r\n }\r\n\r\n handleCompanyChange = (items: string[]) => {\r\n const selectedCompany = items[0]\r\n if (selectedCompany) {\r\n this.setState({ selectedCompany: selectedCompany })\r\n this.companyName$.next(selectedCompany)\r\n }\r\n else {\r\n this.setState({ selectedCompany: undefined })\r\n }\r\n }\r\n\r\n handleCompanyNameTyping = (company: string) => {\r\n if (company == \"\") {\r\n this.setState({ ...this.mapCompanyData(), selectedCompany: undefined, companies: [], allCompanies: [] })\r\n }\r\n else {\r\n this.setState({ name: company })\r\n this.searchCompany$.next(company)\r\n }\r\n }\r\n\r\n handlePortalNameTyping = (name: string) => {\r\n if (name == \"\") {\r\n this.setState({ ...this.mapPortalData(), retrievedPortalPredictions: [] })\r\n }\r\n else {\r\n this.searchImplementation$.next(name)\r\n }\r\n }\r\n\r\n handleRetrievedCompanyAddressSelect = () => this.setState({\r\n retrievedCompanies: undefined,\r\n ...this.mapCompanyData(this.state.companyData ? [this.state.companyData] : undefined)\r\n })\r\n\r\n handleRetrievedPortalAddressSelect = () => this.setState({\r\n retrievedPortals: undefined,\r\n ...this.mapPortalData(this.state.portalData ? [this.state.portalData] : undefined)\r\n })\r\n\r\n performInactivate = () => {\r\n this.setState({ inactivating: true, showInactivateConfirmation: false })\r\n this.inactivateSubscription && this.inactivateSubscription.unsubscribe()\r\n this.inactivateSubscription = (\r\n this.props.portalMode\r\n ? PortalInactivateObservable(this.state.portalData?.ImplementationID || 0)\r\n : CompanyInactivate(this.state.companyData?.ImplementationID || 0, this.state.companyData?.AccountID || 0)\r\n ).subscribe(\r\n data => {\r\n this.setState({ inactivating: false })\r\n toast.success(data)\r\n },\r\n error => this.handleAPIError(error, { inactivating: false })\r\n )\r\n }\r\n\r\n performActivate = () => {\r\n this.setState({ activating: true })\r\n this.inactivateSubscription && this.inactivateSubscription.unsubscribe()\r\n this.inactivateSubscription = (\r\n this.props.portalMode\r\n ? PortalActivationObservable(this.state.portalData?.ImplementationID || 0)\r\n : CompanyActivationObservable(this.state.companyData?.ImplementationID || 0, this.state.companyData?.AccountID || 0)\r\n ).subscribe(\r\n data => {\r\n this.setState({ activating: false })\r\n toast.success(data)\r\n },\r\n error => this.handleAPIError(error, { activating: false })\r\n )\r\n }\r\n\r\n handleRetrievedObjectChoose = (selected: AddressData) => {\r\n if (this.props.portalMode) {\r\n this.setState({ portalData: this.state.retrievedPortals?.find(item => item.ImplementationID.toString() === selected.ID) })\r\n } else {\r\n this.setState({ companyData: this.state.retrievedCompanies?.find(item => item.AccountID.toString() === selected.ID) })\r\n }\r\n }\r\n\r\n handleCancel = () => {\r\n if (this.implementationName && this.props.portalMode) {\r\n (this.props as RouteComponentProps).history?.push(PortalAdministrationRoute)\r\n } else if (this.implementationName && !this.props.portalMode && this.props.isNew) {\r\n (this.props as RouteComponentProps).history?.push(PortalDetailsRoute(this.implementationName))\r\n } else if (!this.implementationName && !this.props.portalMode && this.props.isNew && !this.state.saved) {\r\n (this.props as RouteComponentProps).history?.push(MyOrganizationRoute)\r\n } else if (!this.implementationName && !this.props.portalMode && this.props.isNew && this.state.saved) {\r\n (this.props as RouteComponentProps).history?.push(CompanyDetailsRoute(this.state.name))\r\n } else {\r\n (this.props as RouteComponentProps).history?.push(Home)\r\n }\r\n }\r\n\r\n handleUpdate = () => {\r\n this.props.portalMode && !this.props.isNew && this.updatePortal()\r\n this.props.portalMode && this.props.isNew && this.createPortal()\r\n !this.props.portalMode && this.updateCompany()\r\n }\r\n\r\n handlePortalFieldsValidation = (data: PortalAdminData, valid: boolean) => {\r\n this.setState({ portalAdminData: data, isPortalFieldsValid: valid })\r\n }\r\n\r\n updateCompany = () => {\r\n const { portalData, companyData, name, code, streetAddress1, streetAddress2, city, state, zip, officePhone, businessTypeId, roles, portalAdminRoleID, primaryIDType,\r\n primaryIDTypes, contactDerPhone, contactDerFirstName, contactDerLastName, contactPhone, contactFirstName, contactLastName,\r\n province, country, timeZoneID, webSiteURL, fax, labAcctRequired } = this.state\r\n const { isPortalAdmin, isCompanyAdmin, isSiteAdmin, isNew } = this.props;\r\n\r\n if (!companyData && !isNew) {\r\n return\r\n }\r\n const codeValue = !code || code.length === 0 ? undefined : code.trim()\r\n\r\n const updateData: CompanyEditData = {\r\n AccountID: companyData?.AccountID || 0,\r\n Name: name.trim(),\r\n Code: codeValue,\r\n Address1: streetAddress1,\r\n Address2: streetAddress2,\r\n City: city,\r\n State: state,\r\n Zip: zip,\r\n Phone: officePhone.replace(/-/g, \"\"),\r\n BusinessTypeID: businessTypeId!,\r\n ImplementationID: companyData?.ImplementationID || portalData?.ImplementationID || this.state.implementationID || 0,\r\n IsRandomization: !!companyData && companyData.IsRandomization,\r\n Regulated: !!companyData && companyData.Regulated,\r\n NonRegulated: !!companyData && companyData.NonRegulated,\r\n PortalAdditionalRoleID: roles?.find(item => item.RoleID === portalAdminRoleID)?.RoleID || \"\",\r\n PrimaryTypeID: primaryIDTypes?.find(item => item.PrimaryTypeID === primaryIDType)?.PrimaryIDType || \"\",\r\n IsOnTrack: isNew ? (this.implementationName ? !!portalData?.IsOnTrack : IsOnTrack()) : companyData?.IsOnTrack || false,\r\n ContactDerFirstName: contactDerFirstName,\r\n ContactDerLastName: contactDerLastName,\r\n ContactDerPhone: contactDerPhone.replace(/-/g, \"\"),\r\n ContactFirstName: contactFirstName,\r\n ContactLastName: contactLastName,\r\n ContactPhone: contactPhone.replace(/-/g, \"\"),\r\n UpdateAdditionalFields: this.showAdditionalFields(),\r\n Province: province ? province : undefined,\r\n Country: province ? country : undefined,\r\n TimeZoneID: timeZoneID,\r\n WebsiteURL: webSiteURL ? webSiteURL : undefined,\r\n Fax: fax ? fax : undefined,\r\n LabAcctRequired: isNew ? false : labAcctRequired\r\n }\r\n\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n let observ = isNew ? CompanyCreateObservable : CompanyUpdateObservable\r\n this.saveSubscription = observ(updateData).subscribe(\r\n (data) => {\r\n this.setState({ saving: false, saved: true })\r\n toast.success(data)\r\n this.props.reload()\r\n if (isNew) {\r\n this.handleCancel()\r\n }\r\n else {\r\n this.companyName$.next(name.trim())\r\n }\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n createPortal = () => {\r\n const { streetAddress1, streetAddress2, city, state, zip, officePhone, subscriptionPlan, isTPA, portalAdminData, url } = this.state\r\n if (!portalAdminData) {\r\n return\r\n }\r\n const updateData: PortalInviteData = {\r\n CompanyName: portalAdminData.Name,\r\n EmailAddress: portalAdminData.Email,\r\n PhoneNumber: portalAdminData.Phone.replace(/-/g, \"\"),\r\n FirstName: portalAdminData.FirstName,\r\n LastName: portalAdminData.LastName,\r\n RoleID: portalAdminData.RoleID || 0,\r\n SubscriptionPlanID: subscriptionPlan?.SubscriptionPlanID || 0,\r\n IsGOVTPortal: (subscriptionPlan?.Title || \"\") === \"Government Program\",\r\n Link: `${url}.${SiteDomain}`,\r\n ModifiedBy: this.props?.userName || \"\",\r\n IsExistingUser: false,\r\n ImplementationID: 0,\r\n Address1: streetAddress1,\r\n Address2: streetAddress2,\r\n City: city,\r\n State: state,\r\n Zip: zip,\r\n OfficePhone: officePhone.replace(/-/g, \"\"),\r\n ImplementationType: isTPA ? \"TPA\" : \"NonTPA\"\r\n }\r\n\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = PortalInvitation(updateData).subscribe(\r\n (result) => {\r\n (this.props as RouteComponentProps).history?.push(PortalAdministrationRoute)\r\n toast.success(result)\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n updatePortal = () => {\r\n const { portalData, name, streetAddress1, streetAddress2, city, state, zip, officePhone, subscriptionPlan, isTPA, mroFileContent } = this.state\r\n if (!portalData) {\r\n return\r\n }\r\n const updateData: PortalEditData = {\r\n CompanyName: name.trim(),\r\n Address1: streetAddress1,\r\n Address2: streetAddress2,\r\n City: city,\r\n State: state,\r\n Zip: zip,\r\n ImplementationName: name.trim(),\r\n Phone: officePhone.replace(/-/g, \"\"),\r\n SubscriptionPlanID: subscriptionPlan?.SubscriptionPlanID || portalData.SubscriptionPlanID,\r\n SubscriptionPlan: subscriptionPlan?.Title || portalData.SubscriptionPlan || \"\",\r\n ImplementationID: portalData.ImplementationID,\r\n ImplementationType: isTPA ? \"TPA\" : \"NonTPA\",\r\n IsOnTrack: portalData.IsOnTrack,\r\n MROLogoFile: mroFileContent\r\n }\r\n\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = PortalUpdate(updateData).subscribe(\r\n (data) => {\r\n this.setState({ saving: false, mroFileName: \"\" })\r\n toast.success(data)\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n showAdditionalFields = (): boolean => !this.props.portalMode && !this.props.isSiteAdmin\r\n\r\n loadLabAccounts() {\r\n const { companyData } = this.state\r\n if (!companyData) {\r\n return\r\n }\r\n this.setState({ labAccountsLoading: true, activeLabAccountsCount: 0 })\r\n this.loadLabAccountsSubscription && this.loadLabAccountsSubscription.unsubscribe()\r\n this.loadLabAccountsSubscription = LabAccountListGet(companyData.ImplementationID, companyData.AccountID, false).subscribe(\r\n data => this.setState({ activeLabAccountsCount: data.ActiveLabAccount.length, labAccountsLoading: false }),\r\n error => this.handleAPIError(error, { labAccountsLoading: false })\r\n )\r\n }\r\n\r\n handleLabAccountsSelectionModalClose = () => {\r\n this.setState({ showLabAccountSelection: false })\r\n if (!this.props.portalMode) {\r\n this.loadLabAccounts()\r\n }\r\n }\r\n\r\n handleLabAccountsNotRequiredChange = (e: React.ChangeEvent) => this.setState({ labAcctRequired: !e.target.checked })\r\n\r\n handleNameChange = (name: string) => {\r\n const url = this.prepareUrl(name)\r\n this.setState({\r\n ...this.changeUrlStatePart(url)\r\n })\r\n }\r\n\r\n handleCompanyNameChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value || \"\"\r\n this.setState({\r\n name: value,\r\n isNameValid: this.isCompanyNameValid(value),\r\n isNameLengthValid: this.isNameLengthValid(value),\r\n isNameTextValid: this.isNameTextValid(value),\r\n isNameAvailable: undefined\r\n })\r\n }\r\n handleCompanyNameBlur = (e: React.ChangeEvent) => {\r\n const value = (e.target.value || \"\").trim()\r\n if(this.state.name !== value){\r\n this.setState({name: value})\r\n }\r\n\r\n this.checkName$.next({ value: value, implementationID: this.state.portalData?.ImplementationID })\r\n }\r\n handleCodeChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value.replace(/[^a-zA-Z0-9]/g, \"\")\r\n this.setState({ code: value, isCodeValid: this.isCodeValid(value), isCodeAvailable: undefined })\r\n }\r\n\r\n handleCompanyCodeBlur = (e: React.ChangeEvent) => {\r\n this.checkCode$.next(e.target.value)\r\n }\r\n\r\n handleAddCompany = () => {\r\n if (this.implementationName) {\r\n (this.props as RouteComponentProps).history?.push(AddCompanyForPortalRoute(this.implementationName))\r\n } else {\r\n (this.props as RouteComponentProps).history?.push(AddNewCompanyRoute)\r\n }\r\n }\r\n\r\n handleFileSelect = (e: React.ChangeEvent) => {\r\n const file = e.target && e.target.files && e.target.files[0]\r\n if (!file) {\r\n this.setState({ mroFileName: \"\", mroFileContent: undefined, isMROFileSizeValid: true })\r\n return\r\n }\r\n\r\n const isFileSizeValid = file.size < MaxImageFileSize\r\n this.setState({ mroFileName: file.name, isMROFileSizeValid: isFileSizeValid })\r\n if (isFileSizeValid) {\r\n const ext = file.name.substring(file.name.lastIndexOf('.') + 1)\r\n if (ext && [\"bmp\"].includes(ext.toLowerCase())) {\r\n var reader = new FileReader()\r\n const self = this\r\n reader.onload = function (e) {\r\n const result = e.target?.result as string || \"\"\r\n const stringLength = result.indexOf('base64') + 7\r\n const fileContent = result.slice(stringLength, result.length)\r\n if (fileContent) {\r\n self.setState({ mroFileContent: fileContent })\r\n } else {\r\n toast.error(\"Image file is empty.\")\r\n }\r\n }\r\n reader.onerror = function (error) { toast.error(error) }\r\n reader.readAsDataURL(file)\r\n } else {\r\n toast.error(\"Please upload only .bmp type of image files.\")\r\n }\r\n }\r\n }\r\n\r\n handleCompaniesExport = () => {\r\n this.setState({ loadingCsv: true })\r\n CompaniesDetailsExportCsv().subscribe(\r\n data => {\r\n this.export(data)\r\n this.setState({ loadingCsv: false })\r\n },\r\n error => this.handleAPIError(error, { loadingCsv: false })\r\n )\r\n }\r\n\r\n export(csv: string) {\r\n const csvData = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, FormatTimestampFileName(\"CompaniesDetails\", \"csv\", new Date()), true)\r\n toast.success(\"CSV file downloaded successfully.\")\r\n }\r\n\r\n render() {\r\n const { companyData, retrievedCompanies, portalData, retrievedPortals,\r\n name, code, streetAddress1, streetAddress2, city, state, zip, province, country, timeZoneID, webSiteURL, fax, officePhone, contactPhone, contactFirstName, contactLastName,\r\n contactDerPhone, contactDerFirstName, contactDerLastName,\r\n isTPA, subscriptionPlan, subscriptionPlanID,\r\n businessTypeId, businessTypesLoading, businessTypes,\r\n portalAdminRoleID, roles, rolesLoading,\r\n primaryIDType, primaryIDTypes, primaryIDTypesLoading,\r\n states, statesLoading, activating,\r\n loading, inactivating, saving,\r\n timeZones, timeZonesLoading,\r\n labAccountsLoading, activeLabAccountsCount, labAcctRequired,\r\n showOrderSecurity, showOrderSecurityOverride, showLabAccountSelection, showSubscriptions, showManageImages, showCompanyImport, showLocation,\r\n showAdditionalTesting, isNameValid, isNameChecking, isNameAvailable, isNameLengthValid, isNameTextValid, showLocationImport,\r\n isCodeValid, isCodeChecking, isCodeAvailable,\r\n isStreetAddress1Valid, isCityValid, isStateValid, isZipValid, isPhoneValid, isBusinessTypeValid, isPrimaryIDTypeValid,\r\n url, urlChecking, urlAvailable, urlValid, urlCheckMessage, mroFileName, isMROFileSizeValid, loadingCsv, showDevices } = this.state\r\n\r\n const disableCheckUrl = !!url && (url.length === 0 || !urlValid || !!portalData?.ImplementationID || !this.isUrlAllowed(url))\r\n const { portalMode, isCompanyAdmin, isPortalAdmin, isSiteAdmin, userAccess, isNew } = this.props\r\n\r\n const disabled = this.isDisabled()\r\n const allowAdditionalRole = !disabled && !!companyData?.AllowAdditionalRole\r\n const validContactPhone = disabled || this.isPhoneValid(contactPhone)\r\n const validContactFirstName = disabled || !!contactFirstName.length\r\n const validContactLastName = disabled || !!contactLastName.length\r\n const validContactDerPhone = disabled || this.isPhoneValid(contactDerPhone)\r\n const validContactDerFirstName = disabled || !!contactDerFirstName.length\r\n const validContactDerLastName = disabled || !!contactDerLastName.length\r\n const labAccountsCountValid = portalMode || activeLabAccountsCount > 0 || !labAcctRequired\r\n const canImport = ((portalMode || (isSiteAdmin && this.implementationName && !isNew)) && userAccess?.canCreateClient)\r\n const canImportLocation = !portalMode && (isPortalAdmin || isCompanyAdmin || isSiteAdmin)\r\n const isSiteAdminOrPortalAdmin = this.isSiteAdminOrPortalAdmin()\r\n const showAdditionalFields = this.showAdditionalFields()\r\n const showActivateButton = (portalMode && portalData?.InActive) || companyData?.Inactive\r\n const disableCodeEdit = (!!companyData?.Code && companyData?.Code.length > 0) || (!isPortalAdmin && !isSiteAdmin)\r\n\r\n const isIntl11 = !!officePhone.length && (officePhone.replace(/\\D/g, \"\").length === 11)\r\n const isFaxIntl11 = !!fax.length && (fax.replace(/\\D/g, \"\").length === 11)\r\n\r\n return (\r\n {showOrderSecurity && this.setState({ showOrderSecurity: false })} onNext={() => this.setState({ showOrderSecurity: false })} />}\r\n {(isNew && portalMode || companyData || portalData) &&\r\n }\r\n {showDevices && this.setState({ showDevices: false })} />}\r\n {!showLocation && \r\n \r\n {portalMode && EDIT MY ORGANIZATION}\r\n {!portalMode && Edit Company Information}\r\n \r\n \r\n
\r\n {isNew && portalMode && this.handlePortalFieldsValidation(data, valid)} onNameChange={this.handleNameChange} />}\r\n {portalMode && !isNew && \r\n Organization Name\r\n \r\n {(!isSiteAdmin || this.implementationName) && <>\r\n {loading &&
}\r\n {!loading && }\r\n }\r\n {isSiteAdmin && !this.implementationName && { }}\r\n onInputChange={this.handlePortalNameTyping}\r\n onChange={selected => this.implementationName$.next(selected[0] || \"\")}\r\n options={this.state.retrievedPortalPredictions || []}\r\n selected={this.state.portalData ? [this.state.portalData.CompanyName || \"\"] : []}\r\n minLength={0}\r\n emptyLabel=\"No Portals Found\"\r\n placeholder=\"\"\r\n inputProps={{ autoComplete: \"chrome-off\" }}>\r\n {!this.state.loading &&\r\n }\r\n }\r\n \r\n
}\r\n {!portalMode &&\r\n \r\n \r\n {!isNew && Company {companyData?.AccountID ? `(Account ID: ${companyData?.AccountID})` : \"\"}}\r\n {isNew && Company's Name}\r\n \r\n \r\n {!isNew &&\r\n \r\n {!isSiteAdminOrPortalAdmin && loading &&
}\r\n {isSiteAdminOrPortalAdmin &&\r\n { }}\r\n onInputChange={this.handleCompanyNameTyping}\r\n onChange={this.handleCompanyChange}\r\n options={this.state.companies || []}\r\n selected={this.state.selectedCompany ? [this.state.selectedCompany || \"\"] : []}\r\n minLength={0}\r\n emptyLabel=\"No Companies Found\"\r\n placeholder=\"\"\r\n inputProps={{ autoComplete: \"chrome-off\" }}>\r\n {!this.state.loading &&\r\n }\r\n }\r\n
}\r\n {!loading && (!isSiteAdminOrPortalAdmin || isNew ) && <>\r\n \r\n {!isNameChecking && !isNameValid && !isNameLengthValid && isNameTextValid && Company Name must be of 3 to 32 characters.}\r\n {!isNameChecking && !isNameValid && isNameLengthValid && !isNameTextValid && Company name cannot contain any special characters except apostrophe, dash, comma or dot  [ ' or - or , or . ]}\r\n {!isNameChecking && !isNameValid && !isNameLengthValid && !isNameTextValid && Company Name must be of 3 to 32 characters. Company name cannot contain any special characters except apostrophe, dash, comma or dot  [ ' or - or , or . ]}\r\n {isNew && !isNameChecking && isNameAvailable && Company name is available}\r\n {!isNameChecking&& isNameAvailable === false && Company name is already in use}\r\n }\r\n \r\n
}\r\n {isSiteAdmin && portalMode &&\r\n \r\n Client Code/ID\r\n \r\n {!isNew && this.setState({ code: e.target.value })} />}\r\n {isNew && <>\r\n ) => this.checkCode$.next(e.target.value)}\r\n isInvalid={!isCodeValid}\r\n disabled={disabled} />\r\n {!isCodeChecking && !isCodeValid && Please enter a valid client code/ID.}\r\n {!isCodeChecking && isCodeAvailable && Client code/ID is available.}\r\n {!isCodeChecking && isCodeAvailable === false && The client code/ID is already in use, please enter a unique value.}\r\n }\r\n \r\n }\r\n {!portalMode &&\r\n \r\n Company Code\r\n \r\n \r\n {!isCodeChecking && !isCodeValid && Please enter a valid company Code.}\r\n {!isCodeChecking && isCodeAvailable && Company Code is available.}\r\n {!isCodeChecking && isCodeAvailable === false && The company Code is already in use, please enter a unique value.}\r\n \r\n }\r\n \r\n Street Address 1\r\n \r\n \r\n \r\n \r\n \r\n Street Address 2\r\n \r\n this.setState({ streetAddress2: e.target.value })} />\r\n \r\n \r\n \r\n City\r\n \r\n this.setState({ city: e.target.value, isCityValid: this.isCityValid(e.target.value) })}\r\n disabled={disabled}\r\n isInvalid={!isCityValid} />\r\n \r\n \r\n \r\n State\r\n \r\n this.setState({ state: selected?.Abbreviation || \"\", isStateValid: this.isStateValid(selected?.Abbreviation) })}\r\n isDisabled={disabled || statesLoading}\r\n isInvalid={!isStateValid} />\r\n \r\n ZIP\r\n \r\n this.setState({ zip: e.target.value, isZipValid: this.isZipValid(e.target.value) })}\r\n value={zip}\r\n disabled={disabled}\r\n isInvalid={!isZipValid} />\r\n \r\n \r\n {showAdditionalFields && \r\n Province\r\n \r\n this.setState({ province: e.target.value })}\r\n disabled={disabled} />\r\n \r\n }\r\n {showAdditionalFields && \r\n Country\r\n \r\n this.setState({ country: e.target.value })}\r\n disabled={disabled} />\r\n \r\n }\r\n \r\n Office Phone #\r\n \r\n this.setState({ officePhone: value, isPhoneValid: this.isPhoneValid(value) })}\r\n disabled={disabled}\r\n isInvalid={!isPhoneValid}\r\n intl11={isIntl11} />\r\n \r\n \r\n {portalMode && <>\r\n {!portalData?.IsOnTrack && \r\n \r\n Are you a Third-Party Administrator?\r\n \r\n Third-Party Administrator (TPA) or Consortium/Third-Party Administrators (C/TPAs)\r\n manage all, or part, of an employer's drug and alcohol testing program. This\r\n may include maintaining testing records and performing tasks to implement the\r\n testing program.\r\n }>\r\n \r\n \r\n \r\n this.setState({ isTPA: true })} />\r\n this.setState({ isTPA: false })} />\r\n }\r\n {isSiteAdmin && \r\n Subscription\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {portalMode && isNew && <>\r\n \r\n \r\n URL of Portal Site\r\n \r\n \r\n .{SiteDomain}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!urlChecking && urlAvailable && {urlCheckMessage}}\r\n {!urlChecking && urlAvailable === false && {urlCheckMessage}}\r\n {!this.isUrlAllowed(url) && Subdomain is protected}\r\n {!this.isUrlMaxLengthValid(url) && URL length will be up to 56 character}\r\n { this.checkUrl$.next(url)} } disabled={disableCheckUrl} spin={urlChecking} disableOnSpin>Check URL\r\n \r\n \r\n }\r\n }\r\n {!portalMode && <>\r\n {showAdditionalFields && \r\n Office Fax #\r\n \r\n this.setState({ fax: value })}\r\n disabled={disabled}\r\n isInvalid={(!disabled && (!!fax && !this.isPhoneValid(fax)))}\r\n intl11={isFaxIntl11} />\r\n \r\n }\r\n {!portalData?.IsOnTrack && !companyData?.IsOnTrack && isNew && \r\n \r\n Business Type\r\n \r\n \r\n An employer is a person or organization that employs people.\r\n A Third-Party Administrator (TPA) or Consortium/Third-Party Administrators (C/TPAs) manages all, or part, of an employer's drug and alcohol testing program.\r\n An occupational health clinic collects specimens and/or performs required occupational health services.\r\n A laboratory receives, analyzes, and reports laboratory-confirmed results.\r\n A Medical Review Officer (MRO) is a licensed physician trained and certified to review lab results and to validate whether a test is positive.\r\n \r\n }>\r\n \r\n \r\n \r\n \r\n ) => {\r\n const businessTypeID = !!e.target.value ? Number(e.target.value) : undefined\r\n this.setState({ businessTypeId: businessTypeID, isBusinessTypeValid: this.isBusinessTypeValid(businessTypeID) })\r\n }}\r\n isInvalid={!isBusinessTypeValid}\r\n value={businessTypeId || \"0\"}>\r\n \r\n {businessTypes.map((item: BusinessType, key: number) => )}\r\n \r\n \r\n }\r\n {showAdditionalFields && <>\r\n \r\n Time Zone\r\n \r\n ) => { this.setState({ timeZoneID: Number(e.target.value) })}}>\r\n \r\n {timeZones?.map(tz => )}\r\n \r\n \r\n \r\n \r\n Company Contact First\\Last Names\r\n \r\n this.setState({ contactFirstName: e.target.value })}\r\n isInvalid={!validContactFirstName}\r\n disabled={disabled} />\r\n \r\n \r\n this.setState({ contactLastName: e.target.value })}\r\n isInvalid={!validContactLastName}\r\n disabled={disabled} />\r\n \r\n \r\n \r\n Company Contact Phone #\r\n \r\n this.setState({ contactPhone: value })}\r\n disabled={disabled}\r\n isInvalid={!validContactPhone} />\r\n \r\n \r\n \r\n Website\r\n \r\n this.setState({ webSiteURL: e.target.value })}\r\n disabled={disabled} />\r\n \r\n }\r\n {isCompanyAdmin && \r\n Control who can view Orders placed by other users\r\n \r\n \r\n \r\n \r\n }\r\n }\r\n {!isNew &&\r\n \r\n Lab Accounts\r\n \r\n this.setState({ showLabAccountSelection: true })} disabled={disabled} spin={labAccountsLoading} disableOnSpin={false}>Lab Account Details\r\n {!portalMode && companyData && !labAccountsCountValid && !labAccountsLoading && Lab Accounts required}\r\n {isSiteAdmin && !portalMode && companyData?.IsOnTrack && this.setState({ showDevices: true })} disabled={disabled}>Devices}\r\n \r\n {!portalMode &&\r\n \r\n \r\n \r\n }\r\n }\r\n {!portalMode && <>\r\n {isPortalAdmin && allowAdditionalRole &&\r\n \r\n Portal Admin Additional Role\r\n \r\n ) => this.setState({ portalAdminRoleID: Number(e.target.value) })}>\r\n \r\n {roles?.map(role => )}\r\n \r\n \r\n }\r\n \r\n Primary ID Type\r\n \r\n ) => this.setState({ primaryIDType: Number(e.target.value), isPrimaryIDTypeValid: this.isPrimaryIDTypeValid(Number(e.target.value)) })}>\r\n \r\n {primaryIDTypes?.map(item => )}\r\n \r\n \r\n \r\n }\r\n {portalMode && !isNew && <>\r\n \r\n Add corporate Logo to Workforce Portal\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Ideal logo size should be 200 by 100 pixels and .jpg, .jpeg, .gif, .png file type\r\n \r\n \r\n \r\n Add corporate Logo for MRO Results\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n The image size is invalid. Please resize the image size to less than {MaxImageFileSize / 1024} KB\r\n \r\n \r\n This option is only available for results reviewed by a Red Arrow integrated MRO\r\n \r\n \r\n \r\n }\r\n {showAdditionalFields && <>\r\n \r\n \r\n DER Contact First\\Last Names\r\n \r\n \r\n The above information will print in the DER area of the Marketplace Authorization form for all Marketplace orders.\r\n \r\n }>\r\n \r\n \r\n \r\n \r\n this.setState({ contactDerFirstName: e.target.value })}\r\n disabled={disabled}\r\n isInvalid={!validContactDerFirstName} />\r\n \r\n \r\n this.setState({ contactDerLastName: e.target.value })}\r\n disabled={disabled}\r\n isInvalid={!validContactDerLastName} />\r\n \r\n \r\n \r\n \r\n DER Contact Phone #\r\n \r\n \r\n The above information will print in the DER area of the Marketplace Authorization form for all Marketplace orders.\r\n \r\n }>\r\n \r\n \r\n \r\n \r\n this.setState({ contactDerPhone: value })}\r\n disabled={disabled}\r\n isInvalid={!validContactDerPhone}\r\n intl11={isIntl11} />\r\n \r\n \r\n }\r\n {!isNew && !portalMode && \r\n Locations\r\n \r\n \r\n {isSiteAdmin && }\r\n \r\n }\r\n \r\n
\r\n \r\n
\r\n {canImport && <>\r\n \r\n \r\n }\r\n {canImportLocation && }\r\n {!isNew && isPortalAdmin && portalMode &&\r\n \r\n }\r\n
\r\n
\r\n {!isNew && (isSiteAdmin || (isPortalAdmin && !portalMode)) && <>\r\n {!showActivateButton && this.setState({ showInactivateConfirmation: true })} spin={inactivating} disableOnSpin className=\"mr-2\">Inactivate}\r\n {showActivateButton && this.performActivate()} spin={activating} disableOnSpin className=\"mr-2\">Activate}\r\n }\r\n \r\n {isNew ? \"Save\": \"Update\"}\r\n
\r\n
\r\n
}\r\n this.setState({ showInactivateConfirmation: false })} />\r\n this.setState({ showNewCompanyModal: false})}\r\n onHide={() => this.setState({ showNewCompanyModal: false})} />\r\n {!portalMode && 1}\r\n addresses={retrievedCompanies?.map(item => ({ ID: item.AccountID.toString(), Address1: item.Address1, Zip: item.Zip } as AddressData)) || []}\r\n selectedID={companyData?.AccountID.toString()}\r\n title=\"EXISTING COMPANY ADDRESS\"\r\n subTitle=\"The company name you have entered already exists as the following addresses:\"\r\n message=\"Please select the address you want to activate\"\r\n onAddressSelect={(selected: AddressData) => this.setState({ companyData: this.state.retrievedCompanies?.find(item => item.AccountID.toString() === selected.ID) })}\r\n onClose={this.handleRetrievedCompanyAddressSelect} />}\r\n {showOrderSecurityOverride && this.setState({ showOrderSecurityOverride: false })} />}\r\n {portalMode && <>\r\n 1}\r\n addresses={retrievedPortals?.map(item => ({ ID: item.ImplementationID.toString(), Address1: item.Address1, Zip: item.Zip } as AddressData)) || []}\r\n selectedID={portalData?.ImplementationID.toString()}\r\n title=\"EXISTING PORTAL ADDRESS\"\r\n subTitle=\"The clinic name you have entered already exists at the following addresses:\"\r\n message=\"Please select the address you want to activate\"\r\n onAddressSelect={(selected: AddressData) => this.setState({ portalData: this.state.retrievedPortals?.find(item => item.ImplementationID.toString() === selected.ID) })}\r\n onClose={this.handleRetrievedPortalAddressSelect} />\r\n this.setState({ showSubscriptions: false })}\r\n onSubmit={(subscriptionPlanID: number, subscriptionPlan: SubscriptionPlan) => this.setState({ showSubscriptions: false, subscriptionPlanID: subscriptionPlanID, subscriptionPlan: subscriptionPlan })} />\r\n {showManageImages && portalData?.ImplementationID && this.setState({ showManageImages: false })} />}\r\n {canImport && showCompanyImport && portalData?.ImplementationID && this.setState({ showCompanyImport: false })} />}\r\n }\r\n {canImportLocation && showLocationImport && !!companyData && this.setState({ showLocationImport: false })} />}\r\n {companyData && showLocation && { this.setState({ showLocation: false })}}/>}\r\n {companyData && showAdditionalTesting && { this.setState({ showAdditionalTesting: false })}} />}\r\n\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): CompanyInformationAuthProps {\r\n return {\r\n companyName: SelectedCompanyName(state),\r\n portalName: SelectedPortalName(state),\r\n portal: GetSelectedPortal(state),\r\n isCompanyAdmin: isCompanyAdmin(state),\r\n isPortalAdmin: isPortalAdmin(state),\r\n isSiteAdmin: isSiteAdmin(state),\r\n userAccess: BuildUserAccess(state),\r\n userName: getUserNameForSelectedCompany(state)\r\n }\r\n}\r\n\r\nfunction mapDispatchProps(dispatch: Dispatch): CompanyInformationDispatchProps {\r\n return {\r\n reload: () => (dispatch(WorkforceReloadPortalsCompanies(true)))\r\n }\r\n}\r\n\r\nconst ConnectedCompanyInformation = connect(mapStateToProps, mapDispatchProps)(CompanyInformation)\r\nexport default ConnectedCompanyInformation\r\n","import React from \"react\"\r\nimport { connect } from \"react-redux\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { AppState } from \"../../AppState\"\r\nimport { GetSelectedAssignedClinic, GetSelectedPortal } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport { Home } from \"../../config/Routes\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { EditLocationInformation } from \"./EditLocationInformation\"\r\n\r\ninterface LocationInformationProps extends RouteComponentProps { }\r\n\r\ninterface LocationInformationAuthProps {\r\n portalID: number\r\n companyID: number\r\n locationID: number\r\n}\r\n\r\nexport class LocationInformation extends React.PureComponent {\r\n handleCancel = () => this.props.history.push(Home)\r\n\r\n render() {\r\n const { portalID, companyID, locationID } = this.props\r\n return \r\n \r\n \r\n }\r\n} \r\n\r\nfunction mapStateToProps(state: AppState): LocationInformationAuthProps {\r\n const selectedCompany = GetSelectedAssignedClinic(state)\r\n return {\r\n portalID: GetSelectedPortal(state)?.ImplementationID || 0,\r\n companyID: selectedCompany?.AccountID || 0,\r\n locationID: selectedCompany?.LocationID || 0\r\n }\r\n}\r\nexport default connect(mapStateToProps)(LocationInformation)\r\n","import * as React from \"react\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport CompanyInformation from \"./CompanyInformation\"\r\n\r\nexport default class MyOrganization extends React.Component {\r\n render() {\r\n return \r\n }\r\n}\r\n","import OrphanedGridResponse from \"./Models/OrphanedGridResponse\"\r\nimport { Filter, Sort } from \"../GridRequest\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport function OrphanedGridGet(pageNumber: number, pageSize: number, sort: Sort, filters: Filter[]) {\r\n const requestBody = JSON.stringify({\r\n Filters: {\r\n DateCollected: filters.find(item => item.column === \"DateCollected\")?.values || [],\r\n DonorID: filters.find(item => item.column === \"DonorID\")?.values || [],\r\n FirstName: filters.find(item => item.column === \"FirstName\")?.values || [],\r\n LabAccountNumber: filters.find(item => item.column === \"LabAccountNumber\")?.values || [],\r\n LastName: filters.find(item => item.column === \"LastName\")?.values || [],\r\n CompanyName: filters.find(item => item.column === \"CompanyName\")?.values || [],\r\n Reason: filters.find(item => item.column === \"Reason\")?.values || [],\r\n ReferenceID: filters.find(item => item.column === \"ReferenceID\")?.values || [],\r\n TestType: filters.find(item => item.column === \"TestType\")?.values || [],\r\n ImportException: filters.find(item => item.column === \"ImportException\")?.values || [],\r\n },\r\n PageNumber: pageNumber,\r\n PageSize: pageSize,\r\n SortGrid: { SortColumn: sort.column, SortOrder: sort.order }\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceTrack/GetOrphanedRecords\", requestBody)\r\n}\r\n\r\nexport function OrphanedAccept(tests: { TestDetailID: number | string, AccountID?: number, TestDetailClinicalID: number | string }[]) {\r\n const requestBody = JSON.stringify(tests)\r\n\r\n return ObservableFromFetch(\"WorkforceTrack/ResolveOrphanedRecords\", requestBody)\r\n}\r\n\r\nexport function OrphanedDelete(tests: { TestDetailID: number | string, TestDetailClinicalID: number | string }[]) {\r\n const requestBody = JSON.stringify(tests)\r\n\r\n return ObservableFromFetch(\"WorkforceTrack/DeleteOrphanedRecords\", requestBody)\r\n}\r\n\r\nexport function OrphanedRecordsCount() {\r\n return ObservableFromFetch(\"WorkforceTrack/GetOrphanedRecordsCount\")\r\n}\r\n","import { OrphanedDonor } from \"../../../api/OrderRequests/OrderRequestsModel/Donor\"\r\n\r\nfunction DonorIdsCell(donor: OrphanedDonor) {\r\n const { SSN, EmployerID, DriverID, AlternateID } = donor\r\n\r\n return (\r\n \r\n {SSN && SSN.length > 0 && (\r\n
\r\n SSN: {SSN}\r\n
\r\n )}\r\n {EmployerID && EmployerID.length > 0 && (\r\n
\r\n EmployerID: {EmployerID}\r\n
\r\n )}\r\n {DriverID && DriverID.length > 0 && (\r\n
\r\n DriverID: {DriverID}\r\n
\r\n )}\r\n {AlternateID && AlternateID.length > 0 && (\r\n
\r\n AlternateID: {AlternateID}\r\n
\r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default DonorIdsCell\r\n","import { ChangeEvent } from \"react\"\r\n\r\nimport { Form } from \"react-bootstrap\"\r\n\r\nimport DonorIdsCell from \"./DonorIdsCell\"\r\nimport { OrphanedDonor } from \"../../../api/OrderRequests/OrderRequestsModel/Donor\"\r\n\r\ninterface OrphanedDonorParams {\r\n donor: OrphanedDonor\r\n selected?: boolean\r\n onSelectDonor: (donorId: number) => void\r\n}\r\n\r\nfunction DonorRow(params: OrphanedDonorParams) {\r\n const { donor, selected, onSelectDonor } = params\r\n const { PersonID, FirstName, LastName, Company, Location } = donor\r\n\r\n const handleChange = (e: ChangeEvent) => {\r\n onSelectDonor(Number(e.target.value))\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {FirstName}\r\n {LastName}\r\n {DonorIdsCell(donor)}\r\n {Company}\r\n {Location}\r\n \r\n )\r\n}\r\n\r\nexport default DonorRow\r\n","enum ImportErrorType {\r\n NoMatchingRandom = 0,\r\n NoMatchingTest = 1,\r\n}\r\n\r\nexport default ImportErrorType\r\n","import DonorGridData from \"./Models/DonorGridData\"\r\nimport DonorGridOptions from \"./Models/DonorGridOptions\"\r\nimport ImportErrorType from \"./Models/NoMatchingErrorType\"\r\nimport OrphanedDonorAcceptOptions from \"./Models/OrphanedDonorAcceptOptions\"\r\nimport OrphanedRow from \"./Models/OrphanedRow\"\r\nimport PendingClinicalTest from \"./Models/PendingClinicalTest\"\r\nimport PendingClinicalTestGridData from \"./Models/PendingClinicalTestGridData\"\r\nimport PendingClinicalTestOptions from \"./Models/PendingClinicalTestOptions\"\r\nimport PendingDrugTest from \"./Models/PendingDrugTest\"\r\nimport PendingDrugTestGridData from \"./Models/PendingDrugTestGridData\"\r\nimport PendingDrugTestOptions from \"./Models/PendingDrugTestOptions\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport function GetPendingDrugTestsObservable(options: PendingDrugTestOptions) {\r\n const requestBody: string = JSON.stringify(options)\r\n return ObservableFromFetch(\"WorkforceResultExceptions/PendingDrugTests\", requestBody)\r\n}\r\n\r\nexport function GetPendingClinicalTestsObservable(options: PendingClinicalTestOptions) {\r\n const requestBody: string = JSON.stringify(options)\r\n return ObservableFromFetch(\"WorkforceResultExceptions/PendingClinicalTests\", requestBody)\r\n}\r\n\r\nexport function GetDonorsObservable(parameters: DonorGridOptions) {\r\n const requestBody: string = JSON.stringify(parameters)\r\n return ObservableFromFetch(\"WorkforceResultExceptions/SearchDonors\", requestBody)\r\n}\r\n\r\nexport function NoMatchingRandomAcceptObservable(importTestDetail: OrphanedRow, pendingTestDetail: PendingDrugTest) {\r\n const requestBody: string = JSON.stringify({\r\n ImportTestDetailID: importTestDetail.TestDetailID,\r\n PendingTestDetailID: pendingTestDetail.TestDetailID,\r\n KeepTestReason: importTestDetail.Reason === \"Random\" && pendingTestDetail.Reason !== \"RAN\",\r\n ImportErrorType: ImportErrorType.NoMatchingRandom,\r\n TestDetailImportID: importTestDetail.TestDetailImportID,\r\n TestImportExceptionID: importTestDetail.TestImportExceptionID,\r\n })\r\n return ObservableFromFetch(\"WorkforceResultExceptions/NoMatchingAccept\", requestBody)\r\n}\r\n\r\nexport function NoMatchingTestAcceptObservable(importTestDetail: OrphanedRow, pendingTestDetail: PendingDrugTest) {\r\n const requestBody: string = JSON.stringify({\r\n ImportTestDetailID: importTestDetail.TestDetailID,\r\n PendingTestDetailID: pendingTestDetail.TestDetailID,\r\n KeepTestReason: true,\r\n ImportErrorType: ImportErrorType.NoMatchingTest,\r\n TestDetailImportID: importTestDetail.TestDetailImportID,\r\n TestImportExceptionID: importTestDetail.TestImportExceptionID,\r\n })\r\n return ObservableFromFetch(\"WorkforceResultExceptions/NoMatchingAccept\", requestBody)\r\n}\r\nexport function NoMatchingTestAcceptClinicalObservable(\r\n importTestDetail: OrphanedRow,\r\n pendingTestDetail: PendingClinicalTest\r\n) {\r\n const requestBody: string = JSON.stringify({\r\n ImportTestDetailID: importTestDetail.TestDetailID,\r\n PendingTestDetailClinicalID: pendingTestDetail.TestDetailClinicalID,\r\n KeepTestReason: true,\r\n ImportErrorType: ImportErrorType.NoMatchingTest,\r\n TestDetailImportID: importTestDetail.TestDetailImportID,\r\n TestImportExceptionID: importTestDetail.TestImportExceptionID,\r\n })\r\n return ObservableFromFetch(\"WorkforceResultExceptions/NoMatchingAcceptClinical\", requestBody)\r\n}\r\n\r\nexport function NoAccountAcceptObservable(\r\n labAccount: string,\r\n accountID: number,\r\n testDetailImportID: number,\r\n testImportExceptionID: number\r\n) {\r\n const requestBody: string = JSON.stringify({\r\n LabAccount: labAccount,\r\n AccountID: accountID,\r\n TestDetailImportID: testDetailImportID,\r\n TestImportExceptionID: testImportExceptionID,\r\n })\r\n return ObservableFromFetch(\"WorkforceResultExceptions/NoAccountAccept\", requestBody)\r\n}\r\n\r\nexport function DonorNotFoundAcceptObservable(options: OrphanedDonorAcceptOptions) {\r\n const requestBody: string = JSON.stringify(options)\r\n return ObservableFromFetch(\"WorkforceResultExceptions/DonorNotFoundAccept\", requestBody)\r\n}\r\n\r\nexport function NoMatchingCreateNewObservable(importTestDetail: OrphanedRow) {\r\n const requestBody: string = JSON.stringify({\r\n ImportTestDetailID: importTestDetail.TestDetailID,\r\n TestDetailImportID: importTestDetail.TestDetailImportID,\r\n TestImportExceptionID: importTestDetail.TestImportExceptionID,\r\n })\r\n return ObservableFromFetch(\"WorkforceResultExceptions/NoMatchingCreateNew\", requestBody)\r\n}\r\n","import { Dispatch, SetStateAction, useEffect, useMemo, useState } from \"react\"\r\n\r\nimport { Spinner, Table } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { filter, finalize, switchMap } from \"rxjs/operators\"\r\n\r\nimport DonorRow from \"./DonorRow\"\r\nimport { OrphanedDonor } from \"../../../api/OrderRequests/OrderRequestsModel/Donor\"\r\nimport DonorGridData from \"../../../api/OrphanedResults/Models/DonorGridData\"\r\nimport DonorGridOptions from \"../../../api/OrphanedResults/Models/DonorGridOptions\"\r\nimport PendingDrugTest from \"../../../api/OrphanedResults/Models/PendingDrugTest\"\r\nimport { GetDonorsObservable } from \"../../../api/OrphanedResults/ResultExceptionsProcess\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport TablePagination from \"../../TablePagination\"\r\n\r\nconst headerColumns = [\"First Name\", \"Last Name\", \"IDs\", \"Company\", \"Location\"]\r\nconst PageSize = 5\r\n\r\ninterface DonorGridParams {\r\n search: { field: string; text: string }\r\n donorId: number\r\n testID: number\r\n setDonorID: Dispatch>\r\n setSelectedTest: Dispatch>\r\n}\r\n\r\nfunction DonorGrid(props: DonorGridParams) {\r\n const { search, donorId, testID, setDonorID, setSelectedTest } = props\r\n const [gridData, setGridData] = useState({ Records: [], Pages: 0, Total: 0 })\r\n const [loading, setLoading] = useState(false)\r\n const page$ = useMemo(\r\n () =>\r\n new BehaviorSubject({\r\n search,\r\n testID,\r\n pageNumber: 1,\r\n pageSize: PageSize,\r\n }),\r\n [search, testID]\r\n )\r\n\r\n useEffect(() => {\r\n setLoading(true)\r\n const subs = page$\r\n .pipe(\r\n filter((params) => params.search.text.length > 0 || params.testID > 0),\r\n switchMap((params) =>\r\n GetDonorsObservable(params).pipe(\r\n finalize(() => {\r\n setLoading(false)\r\n })\r\n )\r\n )\r\n )\r\n .subscribe(\r\n (data) => {\r\n setGridData(data)\r\n if (data.Records.length === 1) {\r\n setDonorID(data.Records[0].PersonID)\r\n } else {\r\n setDonorID(0)\r\n }\r\n },\r\n (error) => toast.error(FormatError(error))\r\n )\r\n return () => subs.unsubscribe()\r\n }, [page$, search.text, setDonorID])\r\n\r\n const handleChangePage = (page: number) => {\r\n setLoading(true)\r\n page$.next({ ...page$.value, search, pageNumber: page })\r\n }\r\n\r\n const handleSelectDonor = (donorID: number) => {\r\n setSelectedTest(undefined)\r\n setDonorID(donorId === donorID ? 0 : donorID)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {loading && (\r\n \r\n \r\n \r\n )}\r\n {!loading &&\r\n (gridData.Records.length > 0 ? (\r\n gridData.Records.map((row: OrphanedDonor) => (\r\n \r\n ))\r\n ) : (\r\n \r\n \r\n \r\n ))}\r\n \r\n
\r\n {headerColumns.map((el) => (\r\n {el}
\r\n \r\n
NO DATA FOUND
\r\n {gridData.Records.length > 0 && (\r\n <>\r\n Total records: {gridData.Total}\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default DonorGrid\r\n","import { ChangeEvent } from \"react\"\r\n\r\nimport { Form } from \"react-bootstrap\"\r\n\r\nimport PendingDrugTest from \"../../../api/OrphanedResults/Models/PendingDrugTest\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\n\r\ninterface PendingDrugTestProps {\r\n test: PendingDrugTest\r\n selected?: boolean\r\n highlighted?: boolean\r\n disabled?: boolean\r\n hideCheckbox?: boolean\r\n onSelect: (testId: string) => void\r\n}\r\n\r\nfunction PendingDrugTestRow(props: PendingDrugTestProps) {\r\n const { test, disabled, hideCheckbox, highlighted, selected, onSelect } = props\r\n\r\n const handleChange = (e: ChangeEvent) => {\r\n onSelect(e.target.value)\r\n }\r\n\r\n const isNotWithinCurrentProgramYear = () => {\r\n const currentProgramYear = new Date().getFullYear()\r\n const testProgramYear = test.ProgramStartDate?.getFullYear()\r\n // const dateOrderedYear = test.DateOrdered?.getFullYear()\r\n return !!testProgramYear && currentProgramYear !== testProgramYear\r\n }\r\n\r\n const isLess90Days = () => {\r\n const createdDate = test.DateOrdered\r\n if (createdDate !== undefined) {\r\n const timeDiff = new Date().getTime() - createdDate.getTime()\r\n const daysDiff = Math.round(timeDiff / (1000 * 3600 * 24))\r\n return daysDiff < 90\r\n }\r\n return false\r\n }\r\n\r\n const rowClassName = () => {\r\n const classes: string[] = []\r\n const notCurrentYear = isNotWithinCurrentProgramYear()\r\n if (notCurrentYear) classes.push(\"disabled\")\r\n if (highlighted && isLess90Days() && !(notCurrentYear || disabled)) classes.push(\"bg-row-highlight\")\r\n\r\n return classes.join(\" \")\r\n }\r\n\r\n return (\r\n \r\n \r\n {!hideCheckbox && (\r\n \r\n )}\r\n \r\n {test.ReasonDescription}\r\n {test.PoolID}\r\n {test.Regulated}\r\n {test.SampleType}\r\n {FormatDate(test.DateOrdered)}\r\n \r\n )\r\n}\r\n\r\nPendingDrugTestRow.defaultProps = {\r\n selected: false,\r\n highlighted: false,\r\n disabled: false,\r\n hideCheckbox: false,\r\n}\r\n\r\nexport default PendingDrugTestRow\r\n","interface LoadingTableBodyWrapperProps {\r\n loading: boolean\r\n recordsCount: number\r\n columnsCount: number\r\n noDataText?: string\r\n children: React.ReactNode\r\n}\r\n\r\nfunction LoadingTableBodyWrapper({\r\n loading,\r\n recordsCount,\r\n columnsCount,\r\n noDataText = \"No Data Found\",\r\n children,\r\n}: LoadingTableBodyWrapperProps) {\r\n return (\r\n <>\r\n {loading && recordsCount === 0 && (\r\n \r\n  \r\n \r\n )}\r\n {!loading && recordsCount === 0 && (\r\n \r\n {noDataText}\r\n \r\n )}\r\n {children}\r\n \r\n )\r\n}\r\n\r\nexport default LoadingTableBodyWrapper\r\n","import { useEffect, useMemo, useState } from \"react\"\r\n\r\nimport { Col, Row } from \"react-bootstrap\"\r\nimport { BehaviorSubject, concat, of } from \"rxjs\"\r\nimport { catchError, distinctUntilChanged, map, switchMap } from \"rxjs/operators\"\r\n\r\nimport PendingDrugTestRow from \"./PendingDrugTestRow\"\r\nimport ApiResult from \"../../../api/ApiResult\"\r\nimport OrphanedRow from \"../../../api/OrphanedResults/Models/OrphanedRow\"\r\nimport PendingDrugTest from \"../../../api/OrphanedResults/Models/PendingDrugTest\"\r\nimport PendingDrugTestGridData from \"../../../api/OrphanedResults/Models/PendingDrugTestGridData\"\r\nimport PendingDrugTestOptions from \"../../../api/OrphanedResults/Models/PendingDrugTestOptions\"\r\nimport { GetPendingDrugTestsObservable } from \"../../../api/OrphanedResults/ResultExceptionsProcess\"\r\nimport handleAPIError from \"../../../utils/handleAPIError\"\r\nimport LoadingTableBodyWrapper from \"../../LoadingTableBodyWrapper\"\r\nimport LoadingTableWrapper from \"../../LoadingTableWrapper\"\r\nimport TablePagination from \"../../TablePagination\"\r\n\r\nconst PageSize = 5\r\ninterface PendingDrugTestsProps {\r\n donorId: number\r\n importTest: OrphanedRow\r\n selectedTest?: PendingDrugTest\r\n showTitle?: boolean\r\n onSelectTest: (test: PendingDrugTest | undefined) => void\r\n}\r\n\r\nfunction PendingDrugTests(props: PendingDrugTestsProps) {\r\n const { donorId, importTest, selectedTest, onSelectTest, showTitle } = props\r\n const [gridData, setGridData] = useState({ Records: [], Pages: 0, Total: 0 })\r\n const [loadingTests, setLoadingTests] = useState(false)\r\n\r\n const page$ = useMemo(\r\n () =>\r\n new BehaviorSubject({\r\n DonorID: donorId,\r\n PageNumber: 1,\r\n PageSize,\r\n }),\r\n [donorId]\r\n )\r\n\r\n useEffect(() => {\r\n const subscription = page$\r\n .pipe(\r\n distinctUntilChanged(),\r\n switchMap((params) =>\r\n concat(\r\n of({ loading: true }),\r\n GetPendingDrugTestsObservable(params).pipe(\r\n map((result) => ({ loading: false, result })),\r\n catchError((error) => of({ loading: false, result: undefined, error }))\r\n )\r\n )\r\n )\r\n )\r\n .subscribe(\r\n ({ loading, result, error }: ApiResult) => {\r\n setLoadingTests(loading)\r\n\r\n if (!loading) {\r\n const parsedRecords = result?.Records.map((test) => ({\r\n ...test,\r\n DateOrdered: test.DateOrdered ? new Date(test.DateOrdered) : undefined,\r\n ProgramStartDate: test.ProgramStartDate ? new Date(test.ProgramStartDate) : undefined,\r\n ProgramEndDate: test.ProgramEndDate ? new Date(test.ProgramEndDate) : undefined,\r\n }))\r\n\r\n setGridData({\r\n ...result,\r\n Records: parsedRecords || [],\r\n Pages: result?.Pages ?? 0,\r\n Total: result?.Total ?? 0,\r\n })\r\n }\r\n\r\n handleAPIError(error)\r\n },\r\n (error) => handleAPIError(error, () => setLoadingTests(false))\r\n )\r\n return () => subscription.unsubscribe()\r\n }, [page$])\r\n\r\n const handleSelectTest = (testId: string | undefined) => {\r\n const selected = gridData.Records.find((t) => t.TestDetailID === testId)\r\n onSelectTest(selected?.TestDetailID === selectedTest?.TestDetailID ? undefined : selected)\r\n }\r\n\r\n const handleChangePage = (page: number) => {\r\n handleSelectTest(undefined)\r\n page$.next({ ...page$.value, PageNumber: page })\r\n }\r\n\r\n return (\r\n <>\r\n {showTitle &&
Pending Drug Tests
}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {gridData.Records.map((test: PendingDrugTest) => (\r\n \r\n ))}\r\n \r\n \r\n
\r\n ReasonPoolIDRegulatedTypeCreated
\r\n
\r\n {gridData.Records.length > 0 && (\r\n \r\n Total records: {gridData.Total}\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nPendingDrugTests.defaultProps = {\r\n selectedTest: undefined,\r\n showTitle: true,\r\n}\r\n\r\nexport default PendingDrugTests\r\n","import { Button } from \"react-bootstrap\"\r\n\r\nimport PendingDrugTest from \"../../../api/OrphanedResults/Models/PendingDrugTest\"\r\nimport ActionButton from \"../../ActionButton\"\r\n\r\ninterface PendingDrugTestsButtonsProps {\r\n selectedTest?: PendingDrugTest\r\n selectedDonor?: boolean\r\n disabled?: boolean\r\n acceptSpin?: boolean\r\n createNewSpin?: boolean\r\n onCancel: () => void\r\n onCreateNew: () => void\r\n onAccept: () => void\r\n}\r\n\r\nfunction PendingDrugTestsButtons(props: PendingDrugTestsButtonsProps) {\r\n const { selectedTest, selectedDonor, disabled, acceptSpin, createNewSpin, onCancel, onCreateNew, onAccept } = props\r\n\r\n return (\r\n <>\r\n \r\n \r\n Create New\r\n \r\n \r\n Accept\r\n \r\n \r\n )\r\n}\r\n\r\nPendingDrugTestsButtons.defaultProps = {\r\n selectedTest: undefined,\r\n selectedDonor: false,\r\n disabled: false,\r\n acceptSpin: false,\r\n createNewSpin: false,\r\n}\r\n\r\nexport default PendingDrugTestsButtons\r\n","export enum ImportExceptionSubType {\r\n InvalidCompany = 1,\r\n InvalidLocation = 2,\r\n CompanyInactive = 3,\r\n // LabAccountNotFound = 4,\r\n LabAccountAssignedMorethanOneCompany = 5,\r\n LabAccountNotFoundorNotAssignedtoaCompany = 6,\r\n\r\n InvalidReasonForTest = 1001,\r\n MoreThanOneTestMatch = 1002,\r\n TestDoesNotExist = 1003,\r\n ExistingPendingRandom = 1004,\r\n DonorDoesNotExist = 1005,\r\n InvalidDonorID = 1006,\r\n MoreThanOneDonorMatch = 1007,\r\n MatchingDonorIsInactive = 1008,\r\n DonorDoesNotMatch = 1009,\r\n\r\n ChangeMROReportDate = 1501,\r\n ChangeLabReportDate = 1502,\r\n ChangeLabAccountTo = 1503,\r\n ChangeLabCodeFrom = 1504,\r\n ChangeMROResult = 1505,\r\n ChangeLabResult = 1506,\r\n ChangeCollectionDate = 1507,\r\n ChangeSpecimenType = 1508,\r\n ChangeReasonForTest = 1509,\r\n ChangeFederalFlag = 1510,\r\n\r\n\r\n InvalidCollectorName = 2001,\r\n InvalidCollectionDate = 2002,\r\n InvalidCollectionSite = 2003,\r\n InvalidPanelCode = 2004,\r\n InvalidDOTindicator = 2005,\r\n InvalidOrderedDate = 2006, // obsolete??\r\n InvalidLabCode = 2007,\r\n\r\n InvalidFirstName = 2008,\r\n InvalidLastName = 2009,\r\n InvalidPerson = 2010,\r\n InvalidLocationRelease = 2011,\r\n InvalidMROCode = 2012\r\n}\r\n\r\n\r\n","import { useState } from \"react\"\r\n\r\nimport { Col, Modal, ModalBody, ModalTitle, Row } from \"react-bootstrap\"\r\nimport ModalHeader from \"react-bootstrap/esm/ModalHeader\"\r\nimport { toast } from \"react-toastify\"\r\nimport { finalize } from \"rxjs/operators\"\r\n\r\nimport DonorGrid from \"./DonorGrid\"\r\nimport OrphanedRow from \"../../../api/OrphanedResults/Models/OrphanedRow\"\r\nimport PendingDrugTest from \"../../../api/OrphanedResults/Models/PendingDrugTest\"\r\nimport { DonorNotFoundAcceptObservable } from \"../../../api/OrphanedResults/ResultExceptionsProcess\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport AddIndividualModal from \"../../Randomization/AddIndividualModal\"\r\nimport { DraggableModalDialog } from \"../../Randomization/GovPools/RandomSchedulingExclusionsModal\"\r\nimport SearchBar from \"../../SearchBar\"\r\nimport PendingDrugTests from \"../PendingDrugTests/PendingDrugTests\"\r\nimport PendingDrugTestsButtons from \"../PendingDrugTests/PendingDrugTestsButtons\"\r\nimport { ImportExceptionSubType } from \"../../../api/OrphanedResults/Models/ImportExceptionSubType\"\r\n\r\n\r\ninterface DonorNotFoundErrorProps {\r\n errorRow: OrphanedRow\r\n onClose: (withUpdate: boolean) => void\r\n}\r\n\r\nconst searchFields = [\r\n { Name: \"All Personnel IDs\" },\r\n { Name: \"SSN\" },\r\n { Name: \"Employer ID\" },\r\n { Name: \"Driver ID\" },\r\n { Name: \"Alternate ID\" },\r\n { Name: \"First Name\" },\r\n { Name: \"Last Name\" },\r\n { Name: \"Company\" },\r\n { Name: \"Location\" },\r\n].map((el) => {\r\n return { Name: el.Name, ID: el.Name }\r\n})\r\n\r\nfunction DonorNotFoundError(props: DonorNotFoundErrorProps) {\r\n const { errorRow, onClose } = props\r\n\r\n const [DonorID, setDonorID] = useState(0)\r\n const [AddNew, setAddNew] = useState(false)\r\n const [Search, setSearch] = useState({ field: \"\", text: \"\" })\r\n const [selectedTest, setSelectedTest] = useState()\r\n const [acceptProc, setAcceptProc] = useState(false)\r\n const testID = errorRow.TestDetailImportID\r\n\r\n const onCancel = () => {\r\n onClose(false)\r\n }\r\n\r\n const onAccept = () => {\r\n setAcceptProc(true)\r\n const acceptOptions = {\r\n DonorID,\r\n TestDetailID: errorRow.TestDetailID,\r\n TestDetailClinicalID: errorRow.TestDetailClinicalID,\r\n PendingTestDetailID: selectedTest?.TestDetailID,\r\n PendingClinicalTestDetailID: selectedTest?.TestDetailClinicalID,\r\n TestDetailImportID: errorRow.TestDetailImportID,\r\n TestImportExceptionID: errorRow.TestImportExceptionID,\r\n }\r\n DonorNotFoundAcceptObservable(acceptOptions)\r\n .pipe(finalize(() => setAcceptProc(false)))\r\n .subscribe(\r\n (data) => {\r\n toast.success(data)\r\n onClose(true)\r\n },\r\n (error) => toast.error(FormatError(error))\r\n )\r\n }\r\n\r\n const onCreateNew = () => {\r\n setAddNew(true)\r\n }\r\n\r\n const handleSearch = (field: string, text: string) => {\r\n setSelectedTest(undefined)\r\n setSearch({ field, text })\r\n }\r\n\r\n const handleSaveDonor = (donorID?: number) => {\r\n setAddNew(false)\r\n if (donorID) setSearch({ field: \"PersonID\", text: donorID.toString() })\r\n // if (donorID) PageSubject.next({ ...PageSubject.value, search: { field: \"PersonID\", text: donorID.toString() } })\r\n }\r\n\r\n const dialogTitle = (row: OrphanedRow): string => {\r\n const donorNotFound = \"Donor Not Found Error\" \r\n const notMatchingRandom = \"No Matching Random Error\"\r\n if(!row){\r\n return donorNotFound\r\n }\r\n if (!row.ImportException) {\r\n return donorNotFound\r\n }\r\n const importExceptionSubType = row.ImportExceptionSubTypeID\r\n if ((importExceptionSubType === ImportExceptionSubType.TestDoesNotExist) ||\r\n (importExceptionSubType === ImportExceptionSubType.MoreThanOneTestMatch)) {\r\n if (row.ReasonCode?.toUpperCase() === \"RAN\") {\r\n return notMatchingRandom\r\n }\r\n }\r\n return donorNotFound\r\n }\r\n const modalTite = dialogTitle(errorRow)\r\n \r\n return (\r\n \r\n \r\n {modalTite}\r\n \r\n \r\n \r\n \r\n Search for the Donor to assign to this result Or select Create New to create a new donor and test: .\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {DonorID > 0 && !errorRow.IsClinical && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {AddNew && setAddNew(false)} show={AddNew} onAdd={handleSaveDonor} />}\r\n \r\n \r\n 0}\r\n disabled={acceptProc || AddNew}\r\n acceptSpin={acceptProc}\r\n createNewSpin={AddNew}\r\n onCancel={onCancel}\r\n onAccept={onAccept}\r\n onCreateNew={onCreateNew}\r\n />\r\n \r\n \r\n )\r\n}\r\n\r\nexport default DonorNotFoundError\r\n","import { useState } from \"react\"\r\n\r\nimport { Button, Col, Modal, Row } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { finalize } from \"rxjs/operators\"\r\n\r\nimport OrphanedRow from \"../../../api/OrphanedResults/Models/OrphanedRow\"\r\nimport PendingDrugTest from \"../../../api/OrphanedResults/Models/PendingDrugTest\"\r\nimport {\r\n NoMatchingCreateNewObservable,\r\n NoMatchingRandomAcceptObservable,\r\n} from \"../../../api/OrphanedResults/ResultExceptionsProcess\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport { DraggableModalDialog } from \"../../Randomization/GovPools/RandomSchedulingExclusionsModal\"\r\nimport DonorNotFoundError from \"../DonorNotFoundError/DonorNotFoundError\"\r\nimport PendingDrugTests from \"../PendingDrugTests/PendingDrugTests\"\r\nimport PendingDrugTestsButtons from \"../PendingDrugTests/PendingDrugTestsButtons\"\r\n\r\ninterface NoMatchingRandomErrorProps {\r\n errorRow: OrphanedRow\r\n onClose: (withUpdate: boolean) => void\r\n}\r\n\r\nfunction NoMatchingRandomError(props: NoMatchingRandomErrorProps) {\r\n const { errorRow, onClose } = props\r\n\r\n const [selectedTest, setSelectedTest] = useState()\r\n const [acceptProc, setAcceptProc] = useState(false)\r\n const [createNewProc, setCreateNewProc] = useState(false)\r\n const [showDonorNotFound, setDonorNotFound] = useState(false)\r\n const [hideModal, setHideModal] = useState(false)\r\n\r\n const onCancel = () => {\r\n onClose(false)\r\n }\r\n\r\n const onAccept = () => {\r\n if (!selectedTest) {\r\n return\r\n }\r\n setAcceptProc(true)\r\n NoMatchingRandomAcceptObservable(errorRow, selectedTest)\r\n .pipe(finalize(() => setAcceptProc(false)))\r\n .subscribe(\r\n (data) => {\r\n toast.success(data)\r\n onClose(true)\r\n },\r\n (error) => toast.error(FormatError(error))\r\n )\r\n }\r\n\r\n const onCreateNew = () => {\r\n setCreateNewProc(true)\r\n NoMatchingCreateNewObservable(errorRow)\r\n .pipe(finalize(() => setCreateNewProc(false)))\r\n .subscribe(\r\n (data) => {\r\n toast.success(data)\r\n onClose(true)\r\n },\r\n (error) => toast.error(FormatError(error))\r\n )\r\n }\r\n\r\n const onChangeDonor = () => {\r\n setHideModal(true)\r\n setDonorNotFound(true)\r\n }\r\n\r\n const onCloseDonorNotFound = () => {\r\n setDonorNotFound(false)\r\n onClose(true)\r\n }\r\n\r\n return (\r\n <>\r\n {!hideModal && (\r\n onClose(false)}\r\n >\r\n \r\n No Matching Random Error\r\n \r\n \r\n \r\n Review the current Donors Pending tests and determine if there is a match or create a new test.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {errorRow && showDonorNotFound && }\r\n \r\n )\r\n}\r\n\r\nexport default NoMatchingRandomError\r\n","import { ChangeEvent } from \"react\"\r\n\r\nimport { Form } from \"react-bootstrap\"\r\n\r\nimport PendingClinicalTest from \"../../../api/OrphanedResults/Models/PendingClinicalTest\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\n\r\ninterface PendingClinicalTestProps {\r\n test: PendingClinicalTest\r\n selected?: boolean\r\n highlighted?: boolean\r\n disabled?: boolean\r\n hideCheckbox?: boolean\r\n onSelect: (testId: string) => void\r\n}\r\n\r\nfunction PendingClinicalTestRow(props: PendingClinicalTestProps) {\r\n const { test, disabled, hideCheckbox, highlighted, selected, onSelect } = props\r\n\r\n const handleChange = (e: ChangeEvent) => {\r\n onSelect(e.target.value)\r\n }\r\n\r\n const isLess90Days = () => {\r\n const createdDate = test.DateOrdered\r\n if (createdDate !== undefined) {\r\n const timeDiff = new Date().getTime() - createdDate.getTime()\r\n const daysDiff = Math.round(timeDiff / (1000 * 3600 * 24))\r\n return daysDiff < 90\r\n }\r\n return false\r\n }\r\n\r\n const rowClassName = () => {\r\n const classes: string[] = []\r\n if (highlighted && isLess90Days() && !disabled) classes.push(\"bg-row-highlight\")\r\n\r\n return classes.join(\" \")\r\n }\r\n\r\n return (\r\n \r\n \r\n {!hideCheckbox && (\r\n \r\n )}\r\n \r\n {test.FormFoxTestAN}\r\n {test.ReasonDescription}\r\n {test.SampleType}\r\n {FormatDate(test.DateOrdered)}\r\n \r\n )\r\n}\r\n\r\nPendingClinicalTestRow.defaultProps = {\r\n selected: false,\r\n highlighted: false,\r\n disabled: false,\r\n hideCheckbox: false,\r\n}\r\n\r\nexport default PendingClinicalTestRow\r\n","import { useEffect, useMemo, useState } from \"react\"\r\n\r\nimport { Col, Row } from \"react-bootstrap\"\r\nimport { BehaviorSubject, concat, of } from \"rxjs\"\r\nimport { catchError, distinctUntilChanged, map, switchMap } from \"rxjs/operators\"\r\n\r\nimport PendingClinicalTestRow from \"./PendingClinicalTestRow\"\r\nimport ApiResult from \"../../../api/ApiResult\"\r\nimport PendingClinicalTest from \"../../../api/OrphanedResults/Models/PendingClinicalTest\"\r\nimport PendingClinicalTestGridData from \"../../../api/OrphanedResults/Models/PendingClinicalTestGridData\"\r\nimport PendingClinicalTestOptions from \"../../../api/OrphanedResults/Models/PendingClinicalTestOptions\"\r\nimport { GetPendingClinicalTestsObservable } from \"../../../api/OrphanedResults/ResultExceptionsProcess\"\r\nimport handleAPIError from \"../../../utils/handleAPIError\"\r\nimport LoadingTableBodyWrapper from \"../../LoadingTableBodyWrapper\"\r\nimport LoadingTableWrapper from \"../../LoadingTableWrapper\"\r\nimport TablePagination from \"../../TablePagination\"\r\n\r\nconst PageSize = 5\r\ninterface PendingClinicalTestsProps {\r\n donorId: number\r\n selectedTest?: PendingClinicalTest\r\n showTitle?: boolean\r\n onSelectTest: (test: PendingClinicalTest | undefined) => void\r\n}\r\n\r\nfunction PendingClinicalTests(props: PendingClinicalTestsProps) {\r\n const { donorId, selectedTest, onSelectTest, showTitle } = props\r\n const [gridData, setGridData] = useState({ Records: [], Pages: 0, Total: 0 })\r\n const [loadingTests, setLoadingTests] = useState(false)\r\n\r\n const page$ = useMemo(\r\n () =>\r\n new BehaviorSubject({\r\n DonorID: donorId,\r\n PageNumber: 1,\r\n PageSize,\r\n }),\r\n [donorId]\r\n )\r\n\r\n useEffect(() => {\r\n const subscription = page$\r\n .pipe(\r\n distinctUntilChanged(),\r\n switchMap((params) =>\r\n concat(\r\n of({ loading: true }),\r\n GetPendingClinicalTestsObservable(params).pipe(\r\n map((result) => ({ loading: false, result })),\r\n catchError((error) => of({ loading: false, result: undefined, error }))\r\n )\r\n )\r\n )\r\n )\r\n .subscribe(\r\n ({ loading, result, error }: ApiResult) => {\r\n setLoadingTests(loading)\r\n\r\n if (!loading) {\r\n const parsedRecords = result?.Records.map((test) => ({\r\n ...test,\r\n DateOrdered: test.DateOrdered ? new Date(test.DateOrdered) : undefined,\r\n }))\r\n setGridData({\r\n ...result,\r\n Records: parsedRecords || [],\r\n Pages: result?.Pages ?? 0,\r\n Total: result?.Total ?? 0,\r\n })\r\n }\r\n\r\n handleAPIError(error)\r\n },\r\n (error) => handleAPIError(error, () => setLoadingTests(false))\r\n )\r\n return () => subscription.unsubscribe()\r\n }, [page$])\r\n\r\n const handleSelectTest = (testId: string | undefined) => {\r\n const selected = gridData.Records.find((t) => t.TestDetailClinicalID === testId)\r\n onSelectTest(selected?.TestDetailClinicalID === selectedTest?.TestDetailClinicalID ? undefined : selected)\r\n }\r\n\r\n const handleChangePage = (page: number) => {\r\n handleSelectTest(undefined)\r\n page$.next({ ...page$.value, PageNumber: page })\r\n }\r\n\r\n return (\r\n <>\r\n {showTitle &&
Pending Clinical Tests
}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {gridData.Records.map((test: PendingClinicalTest) => (\r\n \r\n ))}\r\n \r\n \r\n
\r\n Authorization IDReasonTypeCreated
\r\n
\r\n {gridData.Records.length > 0 && (\r\n \r\n Total records: {gridData.Total}\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nPendingClinicalTests.defaultProps = {\r\n selectedTest: undefined,\r\n showTitle: true,\r\n}\r\n\r\nexport default PendingClinicalTests\r\n","import { Button } from \"react-bootstrap\"\r\n\r\nimport PendingClinicalTest from \"../../../api/OrphanedResults/Models/PendingClinicalTest\"\r\nimport ActionButton from \"../../ActionButton\"\r\n\r\ninterface PendingClinicalTestsButtonsProps {\r\n selectedTest?: PendingClinicalTest\r\n selectedDonor?: boolean\r\n disabled?: boolean\r\n acceptSpin?: boolean\r\n createNewSpin?: boolean\r\n onCancel: () => void\r\n onCreateNew: () => void\r\n onAccept: () => void\r\n}\r\n\r\nfunction PendingClinicalTestsButtons(props: PendingClinicalTestsButtonsProps) {\r\n const { selectedTest, selectedDonor, disabled, acceptSpin, createNewSpin, onCancel, onCreateNew, onAccept } = props\r\n\r\n return (\r\n <>\r\n \r\n \r\n Create New\r\n \r\n \r\n Accept\r\n \r\n \r\n )\r\n}\r\n\r\nPendingClinicalTestsButtons.defaultProps = {\r\n selectedTest: undefined,\r\n selectedDonor: false,\r\n disabled: false,\r\n acceptSpin: false,\r\n createNewSpin: false,\r\n}\r\n\r\nexport default PendingClinicalTestsButtons\r\n","import { useState } from \"react\"\r\n\r\nimport { Col, Container, Modal, Row, Tab, Tabs } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { finalize } from \"rxjs/operators\"\r\n\r\nimport OrphanedRow from \"../../../api/OrphanedResults/Models/OrphanedRow\"\r\nimport PendingClinicalTest from \"../../../api/OrphanedResults/Models/PendingClinicalTest\"\r\nimport PendingDrugTest from \"../../../api/OrphanedResults/Models/PendingDrugTest\"\r\nimport {\r\n NoMatchingCreateNewObservable,\r\n NoMatchingTestAcceptClinicalObservable,\r\n NoMatchingTestAcceptObservable,\r\n} from \"../../../api/OrphanedResults/ResultExceptionsProcess\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport { DraggableModalDialog } from \"../../Randomization/GovPools/RandomSchedulingExclusionsModal\"\r\nimport PendingClinicalTests from \"../PendingClinicalTests/PendingClinicalTests\"\r\nimport PendingClinicalTestsButtons from \"../PendingClinicalTests/PendingClinicalTestsButtons\"\r\nimport PendingDrugTests from \"../PendingDrugTests/PendingDrugTests\"\r\nimport PendingDrugTestsButtons from \"../PendingDrugTests/PendingDrugTestsButtons\"\r\n\r\ninterface NoMatchingTestErrorProps {\r\n errorRow: OrphanedRow\r\n onClose: (withUpdate: boolean) => void\r\n}\r\nconst DRUG_TESTS_TAB = \"drugTestsTab\"\r\nconst CLINICAL_TESTS_TAB = \"clinicalTestsTab\"\r\n\r\nfunction NoMatchingTestError(props: NoMatchingTestErrorProps) {\r\n const { errorRow, onClose } = props\r\n\r\n const [selectedTest, setSelectedTest] = useState()\r\n const [acceptProc, setAcceptProc] = useState(false)\r\n const [createNewProc, setCreateNewProc] = useState(false)\r\n const [selectedClinicalTest, setSelectedClinicalTest] = useState()\r\n const [acceptClinicalProc, setAcceptClinicalProc] = useState(false)\r\n const [createNewClinicalProc, setCreateNewClinicalProc] = useState(false)\r\n\r\n const [currentTab, setCurrentTab] = useState(DRUG_TESTS_TAB)\r\n\r\n const onCancel = () => {\r\n onClose(false)\r\n }\r\n\r\n const onAccept = () => {\r\n if (!selectedTest) {\r\n return\r\n }\r\n setAcceptProc(true)\r\n NoMatchingTestAcceptObservable(errorRow, selectedTest)\r\n .pipe(finalize(() => setAcceptProc(false)))\r\n .subscribe(\r\n (data) => {\r\n toast.success(data)\r\n onClose(true)\r\n },\r\n (error) => toast.error(FormatError(error))\r\n )\r\n }\r\n\r\n const onCreateNew = () => {\r\n setCreateNewProc(true)\r\n NoMatchingCreateNewObservable(errorRow)\r\n .pipe(finalize(() => setCreateNewProc(false)))\r\n .subscribe(\r\n (data) => {\r\n toast.success(data)\r\n onClose(true)\r\n },\r\n (error) => toast.error(FormatError(error))\r\n )\r\n }\r\n\r\n const onCancelClinical = () => {\r\n onClose(false)\r\n }\r\n\r\n const onAcceptClinical = () => {\r\n if (!selectedClinicalTest) {\r\n return\r\n }\r\n setAcceptClinicalProc(true)\r\n NoMatchingTestAcceptClinicalObservable(errorRow, selectedClinicalTest)\r\n .pipe(finalize(() => setAcceptClinicalProc(false)))\r\n .subscribe(\r\n (data) => {\r\n toast.success(data)\r\n onClose(true)\r\n },\r\n (error) => toast.error(FormatError(error))\r\n )\r\n }\r\n\r\n const onCreateNewClinical = () => {\r\n setCreateNewClinicalProc(true)\r\n NoMatchingCreateNewObservable(errorRow)\r\n .pipe(finalize(() => setCreateNewClinicalProc(false)))\r\n .subscribe(\r\n (data) => {\r\n toast.success(data)\r\n onClose(true)\r\n },\r\n (error) => toast.error(FormatError(error))\r\n )\r\n }\r\n\r\n const showDrugTestsTab = currentTab === DRUG_TESTS_TAB\r\n const showClinicalTestsTab = currentTab === CLINICAL_TESTS_TAB\r\n\r\n return (\r\n \r\n \r\n No Matching Test Error\r\n \r\n \r\n \r\n Review the current Donors Pending tests and determine if there is a match or create a new test.\r\n \r\n \r\n !!eventKey && setCurrentTab(eventKey)}\r\n >\r\n \r\n {showDrugTestsTab && (\r\n \r\n )}\r\n \r\n \r\n {showClinicalTestsTab && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {showDrugTestsTab && (\r\n \r\n )}\r\n {showClinicalTestsTab && (\r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default NoMatchingTestError\r\n","import { Button, Col, Modal, ModalBody, Row } from \"react-bootstrap\"\r\nimport ModalHeader from \"react-bootstrap/esm/ModalHeader\"\r\nimport CompanyInput from \"../../FormattedInputs/CompanyInput\"\r\nimport { useState } from \"react\"\r\nimport { Spinner } from \"react-bootstrap\"\r\nimport { finalize } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { NoAccountAcceptObservable } from \"../../../api/OrphanedResults/ResultExceptionsProcess\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport OrphanedRow from \"../../../api/OrphanedResults/Models/OrphanedRow\"\r\nimport { DraggableModalDialog } from \"../../Randomization/GovPools/RandomSchedulingExclusionsModal\"\r\n\r\ninterface AccountNotFoundErrorProps {\r\n errorRow: OrphanedRow\r\n onClose: (withUpdate: boolean) => void\r\n}\r\n\r\nfunction AccountNotFoundError(props: AccountNotFoundErrorProps) {\r\n const { errorRow, onClose } = props\r\n const [ AccountID, setAccountID ] = useState(0)\r\n const [ saving, setSaving ] = useState(false)\r\n\r\n const onCancel = () => {\r\n onClose(false);\r\n }\r\n\r\n const onAccept = () => {\r\n setSaving(true)\r\n NoAccountAcceptObservable(errorRow.LabAccountNumber, AccountID, errorRow.TestDetailImportID, errorRow.TestImportExceptionID)\r\n .pipe(finalize(() => setSaving(false)))\r\n .subscribe(\r\n data => {\r\n toast.success(data)\r\n onClose(true)\r\n },\r\n error => toast.error(FormatError(error))\r\n )\r\n }\r\n\r\n return (\r\n \r\n Account Not Found Error\r\n \r\n \r\n \r\n Select the company that owns this lab account\r\n \r\n \r\n setAccountID(selected[0]?.AccountID) }/>\r\n \r\n \r\n \r\n \r\n {errorRow.LabAccountNumber}\r\n \r\n \r\n \r\n \r\n {saving && }\r\n {!saving && <>\r\n \r\n \r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default AccountNotFoundError\r\n","import * as React from \"react\"\r\nimport { Container, Row, Col, Table, Spinner, Button } from \"react-bootstrap\"\r\nimport { Subscription, BehaviorSubject, of, concat } from \"rxjs\"\r\nimport { distinctUntilChanged, switchMap, map } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { format, parseISO } from \"date-fns\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport TablePagination from \"../TablePagination\"\r\nimport ColumnHeaderFilter from \"../ColumnHeaderFilter\"\r\nimport { OrphanedGridGet, OrphanedDelete } from \"../../api/OrphanedResults/OrphanedProcess\"\r\nimport OrphanedGridResponse from \"../../api/OrphanedResults/Models/OrphanedGridResponse\"\r\nimport OrphanedRow from \"../../api/OrphanedResults/Models/OrphanedRow\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport { Filter, Sort } from \"../../api/GridRequest\"\r\nimport { setOrphanedResultsCount } from \"../../storage/LogInPortals\"\r\nimport DonorNotFoundError from \"./DonorNotFoundError/DonorNotFoundError\"\r\nimport NoMatchingRandomError from \"./NoMatchingRandomError/NoMatchingRandomError\"\r\nimport NoMatchingTestError from \"./NoMatchingTestError/NoMatchingTestError\"\r\nimport AccountNotFoundError from \"./AccountNotFoundError/AccountNotFoundError\"\r\nimport { ImportExceptionSubType } from \"../../api/OrphanedResults/Models/ImportExceptionSubType\"\r\nimport ImageCCF from \"../../assets/images/CCF.png\"\r\nimport { RAImage } from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport ImageGet, { ImageData } from \"../../api/OrderResults/GenerateCCFImage\"\r\n\r\nimport FormatTimestampFileName from \"../../formatters/FormatTimestampFileName\"\r\nimport FormatData from \"../../formatters/FormatBase64\"\r\nimport HorizontalScrollWrapper from \"../HorizontalScrollWrapper\"\r\n\r\ninterface OrphanedResultsState {\r\n loading: boolean\r\n data?: OrphanedGridResponse\r\n selectAll: boolean\r\n selectedList: { TestDetailID: number | string, AccountID?: number, TestDetailClinicalID: number | string }[]\r\n confirmModal: boolean\r\n recordCount: number\r\n showDonorNotFoundError: boolean\r\n showNoMatchingRandomError: boolean\r\n showNoMatchingTestError: boolean\r\n showAccountNotFoundError: boolean\r\n errorRow?: OrphanedRow\r\n}\r\n\r\ninterface OrphanedResultsSearchParams {\r\n pageNumber: number\r\n sort: Sort\r\n filters: Filter[]\r\n}\r\n\r\nconst PageSize = 10\r\n\r\ntype OrphanedColumn = keyof OrphanedRow | \"Checked\"\r\n\r\nconst DefaultColumns: { name: OrphanedColumn, label: string }[] = [\r\n { name: \"Checked\", label: \"\" },\r\n { name: \"DonorID\", label: \"Donor ID\" },\r\n { name: \"FirstName\", label: \"First Name\" },\r\n { name: \"LastName\", label: \"Last Name\" },\r\n { name: \"CompanyName\", label: \"Company\" },\r\n { name: \"Reason\", label: \"Reason\" },\r\n { name: \"ReferenceID\", label: \"Sample ID\" },\r\n { name: \"TestType\", label: \"Type\" },\r\n { name: \"DateCollected\", label: \"Collected\" },\r\n { name: \"RAImageID\", label: \"eDocs\" },\r\n { name: \"ImportException\", label: \"Error\" }\r\n]\r\n\r\nexport default class OrphanedResults extends React.PureComponent<{}, OrphanedResultsState> {\r\n state: OrphanedResultsState = {\r\n loading: false,\r\n selectAll: false,\r\n selectedList: [],\r\n confirmModal: false,\r\n recordCount: 0,\r\n showDonorNotFoundError: false,\r\n showNoMatchingRandomError: false,\r\n showNoMatchingTestError: false,\r\n showAccountNotFoundError: false,\r\n }\r\n\r\n gridRef = React.createRef()\r\n\r\n page$ = new BehaviorSubject({\r\n pageNumber: 1,\r\n sort: { column: \"\", order: \"\" },\r\n filters: []\r\n })\r\n pageSubscription?: Subscription\r\n actionsSubscription?: Subscription\r\n loadImageSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n //this.recordCountGet()\r\n this.pageSubscription = this.page$.pipe(\r\n distinctUntilChanged(),\r\n switchMap(params => concat(\r\n of({ loading: true }),\r\n OrphanedGridGet(params.pageNumber, PageSize, params.sort, params.filters).pipe(\r\n map((result: OrphanedGridResponse) => ({ data: result, loading: false })))\r\n ))\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: OrphanedGridResponse }) => {\r\n if (newState.data) {\r\n setOrphanedResultsCount(newState.data.Total)\r\n this.setState({ loading: newState.loading, data: newState.data })\r\n } else {\r\n setOrphanedResultsCount(0)\r\n this.setState({ loading: newState.loading, selectedList: [], selectAll: false })\r\n }\r\n },\r\n (error: string) => {\r\n this.setState({ loading: false })\r\n toast.error(error)\r\n }\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n this.actionsSubscription && this.actionsSubscription.unsubscribe()\r\n this.loadImageSubscription && this.loadImageSubscription.unsubscribe()\r\n this.page$.unsubscribe()\r\n }\r\n\r\n pageChanged = (pageNumber: number) => {\r\n this.page$.next({ ...this.page$.value, pageNumber: pageNumber })\r\n }\r\n\r\n sortGrid(column: string, order?: string) {\r\n const newSort = { column: column, order: order || \"\" }\r\n this.page$.next({ ...this.page$.value, sort: newSort })\r\n }\r\n\r\n filterGrid(column: string, items: string[]) {\r\n const filters = [...this.page$.value.filters]\r\n const filter = { column: column, values: items }\r\n let index = filters.findIndex(item => item.column === filter.column)\r\n if (index >= 0) {\r\n filters[index] = filter\r\n } else {\r\n filters.push(filter)\r\n }\r\n\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, filters: filters })\r\n }\r\n\r\n convertDate = (date?: string) => {\r\n if (date) {\r\n return format(parseISO(date), \"MM/dd/yyyy\")\r\n } else {\r\n return \"\"\r\n }\r\n }\r\n\r\n handleAllTestDetailCheck = (e: React.ChangeEvent) => {\r\n const checked = e.target.checked\r\n const tests = checked && this.state.data ? this.state.data.Records.map((row: OrphanedRow) => ({ TestDetailID: row.TestDetailID, TestDetailClinicalID: row.TestDetailClinicalID })) : []\r\n this.setState({ selectedList: tests, selectAll: checked })\r\n }\r\n\r\n handleTestDetailCheck = (e: React.ChangeEvent, isClinical: boolean) => {\r\n const value = e.target.value\r\n let tests = [...this.state.selectedList]\r\n\r\n const index = tests.findIndex(test => isClinical ? test.TestDetailClinicalID === value : test.TestDetailID === value)\r\n if (index > -1) {\r\n tests = [...tests.slice(0, index), ...tests.slice(index + 1)]\r\n } else {\r\n tests.push({ TestDetailID: (isClinical ? 0 : value), TestDetailClinicalID: (isClinical ? value : 0) })\r\n }\r\n this.setState({ selectedList: tests })\r\n }\r\n\r\n\r\n handleCancel = () => {\r\n //TODO\r\n }\r\n\r\n handleDelete = () => {\r\n this.setState({ confirmModal: true })\r\n }\r\n\r\n hideModal = () => {\r\n this.setState({ confirmModal: false })\r\n }\r\n\r\n confirmDelete = () => {\r\n this.hideModal()\r\n const deleteRecords = this.state.selectedList.map(item => {\r\n return { TestDetailID: item.TestDetailID, TestDetailClinicalID: item.TestDetailClinicalID }\r\n })\r\n this.actionsSubscription = OrphanedDelete(deleteRecords).subscribe(\r\n data => {\r\n toast.success(data)\r\n this.page$.next({ ...this.page$.value, pageNumber: 1 })\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n handleAPIError = (error: Error, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n toast.error(error)\r\n }\r\n\r\n renderColumns = () => {\r\n return DefaultColumns.map((col) => {\r\n if (col.name === \"Checked\") {\r\n return \r\n \r\n \r\n }\r\n const sort = this.page$.value.sort\r\n return (\r\n \r\n {this.state.data && col.name in this.state.data && this.sortGrid(col.name, order)}\r\n onFilter={(items: string[]) => this.filterGrid(col.name, items)}\r\n />}\r\n {this.state.data && !(col.name in this.state.data) && (col.label?.toUpperCase())}\r\n \r\n )\r\n })\r\n }\r\n\r\n testDetailSelected = (id: string, clinicalId: string, isClinical: boolean) => {\r\n return this.state.selectedList.findIndex(test => (isClinical ? test.TestDetailClinicalID === clinicalId : test.TestDetailID === id)) > -1\r\n }\r\n\r\n renderCell = (row: OrphanedRow, colName: OrphanedColumn) => {\r\n switch (colName) {\r\n case \"Checked\":\r\n return \r\n this.handleTestDetailCheck(e, row.IsClinical)} />\r\n \r\n case \"DateCollected\":\r\n return {this.convertDate(row.DateCollected)}\r\n case \"RAImageID\":\r\n const iconsVisibility = this.iconsVisibility(row)\r\n return \r\n {iconsVisibility ? this.mapCCFImages(row) : \"\"}\r\n \r\n\r\n case \"ImportException\":\r\n const linkVisible = this.isShowErrorDialog(row)\r\n return \r\n {linkVisible ? : row.ImportException}\r\n \r\n case \"DonorID\":\r\n return {row.DonorID}\r\n default:\r\n return {row[colName]}\r\n }\r\n }\r\n\r\n renderRows = () => {\r\n if (this.state.data && this.state.data.Records.length) {\r\n return this.state.data.Records.map((row: OrphanedRow, i: number) =>\r\n \r\n {DefaultColumns.map((col) => this.renderCell(row, col.name))}\r\n )\r\n } else {\r\n return No Records Found\r\n }\r\n }\r\n\r\n refreshGrid = () => {\r\n this.page$.next({ ...this.page$.value, pageNumber: 1 })\r\n }\r\n\r\n onCloseDonorNotFoundError = (withUpdate: boolean) => {\r\n this.setState({ showDonorNotFoundError: false }, () => { if (withUpdate) this.refreshGrid })\r\n this.refreshGrid()\r\n }\r\n\r\n onCloseAccountNotFoundError = (withUpdate: boolean) => {\r\n this.setState({ showAccountNotFoundError: false }, () => { if (withUpdate) this.refreshGrid })\r\n this.refreshGrid()\r\n }\r\n\r\n onCloseNoMatchingRandomError = () => {\r\n this.setState({ showNoMatchingRandomError: false }, this.refreshGrid)\r\n this.refreshGrid()\r\n }\r\n\r\n onCloseNoMatchingTestError = () => {\r\n this.setState({ showNoMatchingTestError: false }, this.refreshGrid)\r\n this.refreshGrid()\r\n }\r\n\r\n isShowDonorNotFoundError = (row: OrphanedRow): boolean => {\r\n if (!row.ImportException) {\r\n return false\r\n }\r\n const importExceptionSubType = row.ImportExceptionSubTypeID\r\n if ((importExceptionSubType === ImportExceptionSubType.DonorDoesNotExist) ||\r\n (importExceptionSubType === ImportExceptionSubType.MoreThanOneDonorMatch)) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n isShowNoMatchingRandomError = (row: OrphanedRow): boolean => {\r\n if (!row.ImportException) {\r\n return false\r\n }\r\n const importExceptionSubType = row.ImportExceptionSubTypeID\r\n if ((importExceptionSubType === ImportExceptionSubType.TestDoesNotExist) ||\r\n (importExceptionSubType === ImportExceptionSubType.MoreThanOneTestMatch)) {\r\n if (row.ReasonCode?.toUpperCase() === \"RAN\") {\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n isShowNoMatchingTestError = (row: OrphanedRow): boolean => {\r\n if (!row.ImportException) {\r\n return false\r\n }\r\n const importExceptionSubType = row.ImportExceptionSubTypeID\r\n if ((importExceptionSubType === ImportExceptionSubType.TestDoesNotExist) ||\r\n (importExceptionSubType === ImportExceptionSubType.MoreThanOneTestMatch)) {\r\n if (row.ReasonCode?.toUpperCase() !== \"RAN\") {\r\n return true\r\n }\r\n\r\n }\r\n return false\r\n }\r\n isShowAccountNotFoundError = (row: OrphanedRow): boolean => {\r\n if (!row.ImportException) {\r\n return false\r\n }\r\n const importExceptionSubType = row.ImportExceptionSubTypeID\r\n if ((importExceptionSubType === ImportExceptionSubType.LabAccountNotFoundorNotAssignedtoaCompany) ||\r\n (importExceptionSubType === ImportExceptionSubType.LabAccountAssignedMorethanOneCompany)) {\r\n return true\r\n }\r\n return false\r\n\r\n }\r\n isShowErrorDialog = (row: OrphanedRow): boolean => {\r\n if (!row.ImportException) {\r\n return false\r\n }\r\n if (row.ImportExceptionSubTypeID === 0) {\r\n return false\r\n }\r\n if (this.isShowDonorNotFoundError(row)) {\r\n return true\r\n }\r\n if (this.isShowNoMatchingRandomError(row)) {\r\n return true\r\n }\r\n if (this.isShowNoMatchingTestError(row)) {\r\n return true\r\n }\r\n if (this.isShowAccountNotFoundError(row)) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n showErrorDialog = (row: OrphanedRow) => {\r\n if (!this.isShowErrorDialog(row)) {\r\n this.setState({\r\n showDonorNotFoundError: false,\r\n showNoMatchingRandomError: false,\r\n showNoMatchingTestError: false,\r\n showAccountNotFoundError: false,\r\n errorRow: undefined\r\n })\r\n return\r\n }\r\n\r\n if (this.isShowDonorNotFoundError(row)) {\r\n this.setState({\r\n showDonorNotFoundError: true,\r\n showNoMatchingRandomError: false,\r\n showNoMatchingTestError: false,\r\n showAccountNotFoundError: false,\r\n errorRow: row\r\n })\r\n return\r\n }\r\n if (this.isShowNoMatchingRandomError(row)) {\r\n this.setState({\r\n showDonorNotFoundError: false,\r\n showNoMatchingRandomError: true,\r\n showNoMatchingTestError: false,\r\n showAccountNotFoundError: false,\r\n errorRow: row\r\n })\r\n return\r\n }\r\n if (this.isShowNoMatchingTestError(row)) {\r\n this.setState({\r\n showDonorNotFoundError: false,\r\n showNoMatchingRandomError: false,\r\n showNoMatchingTestError: true,\r\n showAccountNotFoundError: false,\r\n errorRow: row\r\n })\r\n return\r\n }\r\n if (this.isShowAccountNotFoundError(row)) {\r\n this.setState({\r\n showDonorNotFoundError: false,\r\n showNoMatchingRandomError: false,\r\n showNoMatchingTestError: false,\r\n showAccountNotFoundError: true,\r\n errorRow: row\r\n })\r\n return\r\n }\r\n }\r\n iconsVisibility = (row: OrphanedRow): boolean => {\r\n if (!row) {\r\n return false\r\n }\r\n if (!Array.isArray(row.RAImage)) {\r\n return false\r\n }\r\n if (row.RAImage.length === 0) {\r\n return false\r\n }\r\n return true\r\n }\r\n\r\n /*\r\n renderRows = () => {\r\n if (this.state.data && this.state.data.Records.length) {\r\n return this.state.data.Records.map((row: OrphanedRow, i: number) =>\r\n \r\n {DefaultColumns.map((col) => this.renderCell(row, col.name))}\r\n )\r\n } else {\r\n return No Records Found\r\n }\r\n }\r\n\r\n */\r\n mapCCFImages = (row: OrphanedRow) => {\r\n const imgSrc = ImageCCF\r\n if (!Array.isArray(row.RAImage)) {\r\n return \"\"\r\n }\r\n\r\n return row.RAImage.map((item: RAImage, i: number) => \r\n \r\n {this.mapCCFImage(row, item, i)}\r\n \r\n )\r\n \r\n //return this.mapCCFImage(row, row.RAImage[0], 0)\r\n }\r\n\r\n\r\n\r\n mapCCFImage = (row: OrphanedRow, item: RAImage, i: number) => {\r\n const imgSrc = ImageCCF\r\n const space = i > 0 ? \"0.5em\" : \"0px\"\r\n\r\n return this.generateCCFImage(item, row)} src={imgSrc} alt={this.ccfImageDescription(row, item)} title={this.ccfImageDescription(row, item)} style={{marginLeft:space}}/>\r\n }\r\n\r\n ccfImageDescription = (row: OrphanedRow, item: RAImage) => {\r\n return item.Description\r\n }\r\n\r\n generateCCFImage = (image: RAImage, row: OrphanedRow) => {\r\n this.loadImageSubscription && this.loadImageSubscription.unsubscribe()\r\n const data = {\r\n TestImageID: image.RAImageID,\r\n TestDetailID: row.TestDetailID,\r\n TestDetailClinicalID: row.TestDetailClinicalID || \"\",\r\n IsMarketPlace: true,\r\n TestDescription: image.Description\r\n }\r\n\r\n this.loadImageSubscription = ImageGet(data).subscribe(\r\n (data: ImageData) => this.processCCF(data),\r\n (error) => this.handleAPIError(error, {})\r\n )\r\n }\r\n\r\n processCCF = (data: ImageData) => {\r\n if (data && Array.isArray(data.Base64String)) {\r\n if (data.Base64String.length == 0) {\r\n toast.error(\"Service is not able to return CCF image for this record.\")\r\n return\r\n }\r\n const currentDate = new Date()\r\n data.Base64String.forEach((item, index) => {\r\n const type = item.ImageType\r\n const fileName = FormatTimestampFileName(\"CCF_Image_Report\" + index, type.split('/')[1], currentDate)\r\n const fileData = new Blob([FormatData(item.Base64Strings)], { type: type || data.ImageType })\r\n var fileURL = URL.createObjectURL(fileData)\r\n window.open(fileURL)\r\n })\r\n } else {\r\n toast.error(\"Service is not able to return CCF image for this record.\")\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n errorRow,\r\n showDonorNotFoundError,\r\n showNoMatchingRandomError,\r\n showNoMatchingTestError,\r\n showAccountNotFoundError,\r\n } = this.state\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n 0}\r\n recalculateWidth={!this.state.loading}\r\n offsetVertical={330}\r\n >\r\n \r\n \r\n \r\n {this.renderColumns()}\r\n \r\n \r\n \r\n {\r\n this.state.loading ?\r\n \r\n \r\n : this.renderRows()\r\n }\r\n \r\n
\r\n
\r\n \r\n Loading...\r\n
\r\n
\r\n \r\n \r\n
\r\n {this.state.data &&\r\n \r\n \r\n Total records: {this.state.data.Total}\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {errorRow && showDonorNotFoundError && }\r\n {errorRow && showNoMatchingRandomError && }\r\n {errorRow && showNoMatchingTestError && }\r\n {errorRow && showAccountNotFoundError && }\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import { getStatusKeyByLabel } from \"../Invitation/Model/InvitationStatus\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { InvitationGridRequest } from \"./Model/InvitationGridRequest\"\r\nimport { InvitationGridResponse } from \"./Model/InvitationGridResponse\"\r\n\r\nfunction gridParams(options: InvitationGridRequest): string {\r\n return JSON.stringify({\r\n Filters: {\r\n CompanyName: options.filters.find(filter => filter.column === \"CompanyName\")?.values || [],\r\n EmailAddress: options.filters.find(filter => filter.column === \"EmailAddress\")?.values || [],\r\n EnrollmentStarted: options.filters.find(filter => filter.column === \"EnrollmentStarted\")?.values || [],\r\n InActive: options.filters.find(filter => filter.column === \"InActive\")?.values.map(value => value === \"Inactive\") || [],\r\n InvitationSent: options.filters.find(filter => filter.column === \"InvitationSent\")?.values || [],\r\n Role: options.filters.find(filter => filter.column === \"Role\")?.values || [],\r\n Status: options.filters.find(filter => filter.column === \"Status\")?.values.map(getStatusKeyByLabel) || [],\r\n },\r\n IsQuickStart: false,\r\n PageNumber: options.pageNumber,\r\n PageSize: options.pageSize || 20,\r\n SortGrid: { SortColumn: options.sort?.column || \"\", SortOrder: options.sort?.order.toUpperCase() === \"DESC\" ? \"DSC\" : options.sort?.order.toUpperCase() },\r\n TimeZoneOffset: new Date().getTimezoneOffset()\r\n })\r\n}\r\n\r\nexport default function InvitationStatusGrid(params: InvitationGridRequest) {\r\n return ObservableFromFetch(\"FFOrderClinicEnrollment/GetClinics\", gridParams(params))\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport ResendModel from \"./Model/ResendModel\"\r\n\r\nexport default function ResendInvitation(resend: ResendModel) {\r\n const requestBody = JSON.stringify(resend)\r\n return ObservableFromFetch(\"FFOrderClinicEnrollment/ResendInvitation\", requestBody)\r\n}","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport DeleteModel from \"./Model/DeleteModel\"\r\n\r\nexport default function DeleteInvitation(deleteModel: DeleteModel) {\r\n const requestBody = JSON.stringify(deleteModel)\r\n return ObservableFromFetch(\"FFOrderClinicEnrollment/DeleteInvitation\", requestBody)\r\n}","import * as React from \"react\"\r\nimport { Modal, Form, Button } from \"react-bootstrap\"\r\nimport MaskedInput from \"react-maskedinput\"\r\nimport InvitationStatusGridRecord from \"../../api/InvitationStatus/Model/InvitationStatusGridRecord\"\r\nimport { EmailRegexp, PhoneRegexp } from \"../../config/Constants\"\r\nimport ResendInvitation from \"../../api/InvitationStatus/ResendInvitation\"\r\nimport ResendModel from \"../../api/InvitationStatus/Model/ResendModel\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { toast } from \"react-toastify\"\r\nimport FormatPhone from \"../../formatters/FormatPhone\"\r\nimport DeleteModel from \"../../api/InvitationStatus/Model/DeleteModel\"\r\nimport DeleteInvitation from \"../../api/InvitationStatus/DeleteInvitation\"\r\nimport ActionButton from \"../ActionButton\"\r\n\r\ninterface ResendInvitationModalProps {\r\n show: boolean\r\n modalData?: InvitationStatusGridRecord\r\n onHide: () => void\r\n onDeleteInvitation: () => void\r\n onResendInvitation: () => void\r\n}\r\n\r\ninterface ResendInvitationModalState {\r\n email: string\r\n phone: string\r\n emailValid: boolean\r\n phoneValid: boolean\r\n deletingInvitation: boolean,\r\n resendingtInvitation: boolean\r\n}\r\n\r\nexport default class ResendInvitationModal extends React.PureComponent {\r\n resendInvitationSubscription?: Subscription\r\n deleteInvitationSubscription?: Subscription\r\n\r\n state: ResendInvitationModalState = {\r\n email: \"\",\r\n phone: \"\",\r\n emailValid: false,\r\n phoneValid: false,\r\n deletingInvitation: false,\r\n resendingtInvitation: false\r\n \r\n }\r\n\r\n isEmailValid = (value: string) => EmailRegexp.test(value)\r\n\r\n isPhoneValid = (value: string) => PhoneRegexp.test(value)\r\n\r\n handleEmailChange = (e: React.ChangeEvent) => {\r\n const value: string = e.target.value\r\n\r\n this.setState({ email: value, emailValid: this.isEmailValid(value) })\r\n }\r\n\r\n handlePhoneChange = (e: React.ChangeEvent) => {\r\n const value: string = e.target.value\r\n\r\n this.setState({ phone: value, phoneValid: this.isPhoneValid(value) })\r\n }\r\n\r\n populateContacts = () => {\r\n const email = this.props.modalData ? this.props.modalData.UserName : \"\"\r\n const phone = this.props.modalData ? FormatPhone(this.props.modalData.ContactDetail) : \"\"\r\n\r\n this.setState({ email: email, phone: phone, emailValid: this.isEmailValid(email), phoneValid: this.isPhoneValid(phone) })\r\n }\r\n\r\n resendInvitation = () => {\r\n this.setState({ resendingtInvitation: true })\r\n const resend: ResendModel = {\r\n EmailAddress: this.state.email,\r\n Link: this.props.modalData?.Link || \"\",\r\n PhoneNumber: this.state.phone.replace(/-/g, \"\")\r\n }\r\n this.resendInvitationSubscription = ResendInvitation(resend).subscribe(\r\n data => {\r\n toast.success(data)\r\n this.props.onResendInvitation()\r\n this.setState({ resendingtInvitation: false })\r\n },\r\n error => {\r\n toast.error(error.message)\r\n this.setState({ resendingtInvitation: false })\r\n },\r\n () => this.setState({ resendingtInvitation: false })\r\n )\r\n }\r\n\r\n deleteInvitation = () => {\r\n this.setState({ deletingInvitation: true })\r\n\r\n const deleteModel: DeleteModel = {\r\n Link: this.props.modalData?.Link || \"\"\r\n }\r\n this.deleteInvitationSubscription = DeleteInvitation(deleteModel).subscribe(\r\n data => {\r\n toast.success(data)\r\n this.props.onDeleteInvitation()\r\n this.setState({ deletingInvitation: false })\r\n },\r\n (error) => {\r\n toast.error(error.message)\r\n this.setState({ deletingInvitation: false })\r\n },\r\n () => this.setState({ deletingInvitation: false })\r\n )\r\n }\r\n\r\n componentDidMount() {\r\n this.populateContacts()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.resendInvitationSubscription && this.resendInvitationSubscription.unsubscribe()\r\n this.deleteInvitationSubscription && this.deleteInvitationSubscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: ResendInvitationModalProps) {\r\n if (prevProps.modalData !== this.props.modalData) {\r\n this.populateContacts()\r\n }\r\n }\r\n\r\n render() {\r\n const { show, onHide } = this.props;\r\n const deletingInvitation = this.state.deletingInvitation;\r\n const resendingtInvitation = this.state.resendingtInvitation;\r\n\r\n return \r\n \r\n Resend/Delete Invitation\r\n \r\n \r\n
\r\n \r\n Email Address\r\n \r\n Please enter valid email.\r\n \r\n \r\n Personal Phone\r\n \r\n This phone number will be used to validate the Administrator. Please provide a direct number or mobile number (not a main company number or extension)\r\n Please enter valid phone.\r\n \r\n
\r\n
\r\n \r\n this.deleteInvitation()} disabled={!this.state.emailValid || !this.state.phoneValid} spin={deletingInvitation} disableOnSpin>\r\n Delete Invitation\r\n \r\n this.resendInvitation()} disabled={!this.state.emailValid || !this.state.phoneValid} spin={resendingtInvitation} disableOnSpin>\r\n Resend Invitation\r\n \r\n \r\n \r\n
\r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { Modal, Form, Button, Col } from \"react-bootstrap\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { filter, map, switchMap } from \"rxjs/operators\"\r\nimport { connect } from \"react-redux\"\r\nimport { toast } from \"react-toastify\"\r\nimport Role from \"../../api/Roles/Model/Role\"\r\nimport { GetRoleDroplist } from \"../../api/Roles/UserRolesGet\"\r\nimport { EmailRegexp, PhoneRegexp } from \"../../config/Constants\"\r\nimport { EmailCheck } from \"../../api/Invitation/InformationGet\"\r\nimport MaskedInput from \"react-maskedinput\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { CreateSiteAdministrator } from \"../../api/Invitation/InvitationCreate\"\r\nimport { AppState, AssignedClinic } from \"../../AppState\"\r\nimport { RoleIdForSelectedCompany } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\n\r\ninterface AdminSetupModalProps {\r\n show: boolean\r\n onClose: (created: boolean) => void\r\n}\r\n\r\ninterface AdminSetupModalAuthProps {\r\n PrimaryRoleID?: number\r\n}\r\n\r\ninterface AdminSetupModalValidity {\r\n emailValid: boolean\r\n phoneValid: boolean\r\n roleValid: boolean\r\n}\r\n\r\nexport interface AdminSetupModalData {\r\n email: string\r\n phone: string\r\n roleID?: number\r\n}\r\n\r\ninterface AdminSetupModalState extends AdminSetupModalData, AdminSetupModalValidity {\r\n emailChecking: boolean\r\n emailAvailable?: boolean\r\n saving: boolean\r\n rolesLoading: boolean\r\n roles?: Role[]\r\n}\r\n\r\nexport class AdminSetupModal extends React.PureComponent {\r\n emptyData: AdminSetupModalData = {\r\n email: \"\",\r\n phone: \"\",\r\n roleID: undefined,\r\n }\r\n positiveValidity: AdminSetupModalValidity = {\r\n emailValid: true,\r\n phoneValid: true,\r\n roleValid: true,\r\n }\r\n defaultState: AdminSetupModalState = {\r\n ...this.emptyData,\r\n ...this.positiveValidity,\r\n emailChecking: false,\r\n emailAvailable: undefined,\r\n rolesLoading: false,\r\n saving: false,\r\n }\r\n state: AdminSetupModalState = { ...this.defaultState }\r\n\r\n checkEmail$ = new Subject()\r\n\r\n emailExistsSubscription?: Subscription\r\n userRolesSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.emailExistsSubscription = this.checkEmail$.pipe(\r\n map(name => name.trim()),\r\n filter(name => this.isEmailValid(name)),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n EmailCheck(name).pipe(\r\n map(result => ({ loading: false, result: result.IsEmailExists }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: boolean }) => this.setState({ emailChecking: o.loading, emailAvailable: !o.result }),\r\n (error) => this.handleAPIError(error, { emailChecking: false, emailAvailable: undefined })\r\n )\r\n\r\n //TODO: replace with correct RoleID\r\n const roleID = this.props.PrimaryRoleID || 0\r\n this.setState({ rolesLoading: true })\r\n this.userRolesSubscription = GetRoleDroplist(roleID).subscribe(\r\n (data: Role[]) => this.setState({ roles: data, roleID: data.length === 1 ? data[0].RoleID : undefined, rolesLoading: false }),\r\n (error) => this.handleAPIError(error, { rolesLoading: false, emailAvailable: undefined })\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.emailExistsSubscription && this.emailExistsSubscription.unsubscribe()\r\n this.userRolesSubscription && this.userRolesSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n isEmailValid = (value: string) => EmailRegexp.test(value)\r\n isPhoneValid = (value: string) => PhoneRegexp.test(value)\r\n isRoleValid = (value: number | undefined): boolean => !!value && !!this.state.roles?.find(item => item.RoleID === value)\r\n\r\n handleEmailChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n this.setState({ email: value, emailValid: this.isEmailValid(value), emailAvailable: undefined })\r\n }\r\n\r\n handlePhoneChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n this.setState({ phone: value, phoneValid: this.isPhoneValid(value) })\r\n }\r\n\r\n handleRoleChange = (e: React.ChangeEvent) => {\r\n const value = Number(e.target.value)\r\n this.setState({ roleID: value, roleValid: this.isRoleValid(value) })\r\n }\r\n\r\n handleClose = (hasChanges: boolean) => {\r\n const { roles } = this.state\r\n this.setState({ ...this.defaultState, roleID: roles && roles.length === 1 ? roles[0].RoleID : undefined })\r\n this.props.onClose(hasChanges)\r\n }\r\n\r\n handleCreateClick = () => {\r\n if (this.state.emailChecking || this.state.rolesLoading) {\r\n return\r\n }\r\n const { email, emailAvailable, phone, roleID } = this.state\r\n const validity: AdminSetupModalValidity = {\r\n emailValid: this.isEmailValid(email),\r\n phoneValid: this.isPhoneValid(phone),\r\n roleValid: this.isRoleValid(roleID)\r\n }\r\n const isValid = Object.values(validity).every((valid: boolean) => valid)\r\n if (!isValid) {\r\n this.setState(validity)\r\n return\r\n }\r\n if (!emailAvailable || emailAvailable === undefined) {\r\n return\r\n }\r\n\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = CreateSiteAdministrator(email, phone.replace(/-/g, \"\"), window.location.hostname, roleID || 0).subscribe(\r\n (data) => {\r\n toast.success(data)\r\n this.handleClose(true)\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n render() {\r\n const { email, emailValid, emailChecking, emailAvailable, phone, phoneValid, roleID, roleValid, rolesLoading } = this.state\r\n\r\n return (<>\r\n \r\n \r\n SITE ADMINISTRATOR SETUP\r\n \r\n \r\n
\r\n \r\n Site Administrator Email Address\r\n \r\n ) => this.checkEmail$.next(e.target.value)}\r\n isInvalid={!emailValid}\r\n disabled={emailChecking} />\r\n {!emailChecking && !emailValid && Please enter valid email}\r\n {!emailChecking && emailAvailable && < Form.Control.Feedback type=\"valid\" className=\"d-block\">Email is available}\r\n {!emailChecking && emailAvailable === false && Email is already in use}\r\n \r\n \r\n \r\n Site Administrator Personal Phone\r\n \r\n \r\n This phone number will be used to validate the Administrator. Please provide a direct number or mobile number (not a main company number or extension)\r\n \r\n \r\n \r\n Role\r\n \r\n \r\n {this.state.roles && this.state.roles.length > 1 && }\r\n {this.state.roles?.map(role => )}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n Create\r\n \r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): AdminSetupModalAuthProps {\r\n return {\r\n PrimaryRoleID: RoleIdForSelectedCompany(state)\r\n }\r\n}\r\n\r\nconst ConnectedAdminSetupModal = connect(mapStateToProps, null)(AdminSetupModal)\r\nexport default ConnectedAdminSetupModal\r\n","import * as React from \"react\"\r\nimport { Container, Row, Col, Table, Spinner, Button } from \"react-bootstrap\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { Subscription, BehaviorSubject, of, concat } from \"rxjs\"\r\nimport { distinctUntilChanged, switchMap, map, catchError } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { InvitationGridRequest } from \"../../api/InvitationStatus/Model/InvitationGridRequest\"\r\nimport { ColumnFilters, InvitationGridResponse } from \"../../api/InvitationStatus/Model/InvitationGridResponse\"\r\nimport InvitationStatusListGet from \"../../api/InvitationStatus/InvitationStatusListGet\"\r\nimport InvitationStatusGridRecord from \"../../api/InvitationStatus/Model/InvitationStatusGridRecord\"\r\nimport TablePagination from \"../TablePagination\"\r\nimport { Filter, Sort } from \"../../api/GridRequest\"\r\nimport ResendInvitationModal from \"./ResendInvitationModal\"\r\nimport ColumnHeaderFilter from \"../ColumnHeaderFilter\"\r\nimport AdminSetupModal from \"../Invitation/AdminSetupModal\"\r\nimport { getStatusLabelByKey, InvitationStatus } from \"../../api/Invitation/Model/InvitationStatus\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport { CustomizableFilterColumn } from \"../ColumnsCustomizeModal/CustomizableColumn\"\r\nimport { isSiteAdmin } from \"../../authentication/isAdminRole\"\r\nimport { connect } from \"react-redux\"\r\nimport { AppState } from \"../../AppState\"\r\nimport ColumnsCustomizeModal, { loadCustomized } from \"../ColumnsCustomizeModal/ColumnsCustomizeModal\"\r\nimport { StorageKey } from \"../../config/Constants\"\r\n\r\ntype Column = CustomizableFilterColumn\r\n\r\ninterface InvitationStatusGridProps {\r\n isSiteAdmin?: boolean\r\n}\r\n\r\ninterface InvitationStatusGridState {\r\n data?: InvitationGridResponse\r\n loading: boolean\r\n modal: boolean\r\n modalData?: InvitationStatusGridRecord\r\n pageNumber: number\r\n showAdminInvitation: boolean\r\n customizeModal: boolean,\r\n columns: Column[],\r\n sort: Sort\r\n filters: Filter[]\r\n}\r\n\r\nconst PageSize = 20\r\nconst ShowModalForStatus = [\r\n InvitationStatus.INVITATION_REQUESTED,\r\n InvitationStatus.TOO_MANY_ATTEMPT,\r\n InvitationStatus.PENDING,\r\n InvitationStatus.EXPIRED\r\n]\r\n\r\nconst defaultColumns: Column[] = [\r\n { name: \"Name\", filter: \"CompanyName\", label: \"Company\", visible: true, customize: true },\r\n { name: \"PrimaryRoleTitle\", filter: \"Role\", label: \"Role\", visible: true, customize: true },\r\n { name: \"UserName\", filter: \"EmailAddress\", label: \"Email Address\", visible: true, customize: true },\r\n { name: \"ModifiedOn\", filter: \"InvitationSent\", label: \"Invite Sent\", visible: true, customize: true },\r\n { name: \"EnrollmentStarted\", filter: \"EnrollmentStarted\", label: \"Enrollment Started\", visible: true, customize: true },\r\n { name: \"Status\", filter: \"Status\", label: \"Invite Status\", visible: true, customize: true },\r\n { name: \"InActive\", filter: \"InActive\", label: \"Active/InActive\", visible: true, customize: true },\r\n { name: \"Link\", label: \"Invite Link\", visible: false, customize: true }\r\n]\r\n\r\nexport class InvitationStatusGrid extends React.PureComponent {\r\n state: InvitationStatusGridState = {\r\n loading: false,\r\n modal: false,\r\n pageNumber: 1,\r\n showAdminInvitation: false,\r\n customizeModal: false,\r\n columns: loadCustomized(StorageKey.InvitationStatusGridColumns, defaultColumns) as Column[],\r\n sort: { column: \"ModifiedOn\", order: \"DSC\" },\r\n filters: []\r\n }\r\n\r\n page$ = new BehaviorSubject({\r\n pageNumber: 1,\r\n sort: { column: \"ModifiedOn\", order: \"DSC\" },\r\n filters: [],\r\n pageSize: PageSize\r\n })\r\n\r\n pageSubscription?: Subscription\r\n\r\n pageChanged = (pageNumber: number) => {\r\n this.setState({ pageNumber: pageNumber })\r\n this.page$.next({ ...this.page$.getValue(), pageNumber: pageNumber })\r\n }\r\n\r\n componentDidMount() {\r\n this.pageSubscription = this.page$.pipe(\r\n distinctUntilChanged(),\r\n switchMap(params => concat(\r\n of({ loading: true }),\r\n InvitationStatusListGet(params).pipe(\r\n map((result: InvitationGridResponse) => ({ data: result, loading: false })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: InvitationGridResponse }) => {\r\n if (newState.data) {\r\n if (newState.data.InActive?.length) {\r\n newState.data.InActive = newState.data.InActive.map(inactiveString => inactiveString === \"true\" ? \"Inactive\" : \"Active\")\r\n }\r\n if (newState.data.Status?.length) {\r\n newState.data.Status = newState.data.Status.map(status => getStatusLabelByKey(InvitationStatus[status as keyof typeof InvitationStatus]))\r\n }\r\n this.setState({ loading: newState.loading, data: newState.data })\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n },\r\n (error: string) => {\r\n this.setState({ loading: false })\r\n toast.error(error)\r\n }\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n this.page$.unsubscribe()\r\n }\r\n\r\n showModal = (row: InvitationStatusGridRecord) => this.setState({ modal: true, modalData: row })\r\n\r\n hideModal = () => this.setState({ modal: false, modalData: undefined })\r\n\r\n getUserName = (row: InvitationStatusGridRecord) => {\r\n if (ShowModalForStatus.indexOf(row.Status) >= 0) {\r\n return \r\n } else {\r\n return row.UserName\r\n }\r\n }\r\n\r\n sortGrid(column: string, order?: string) {\r\n const newSort = { column: column, order: order || \"\" }\r\n this.setState({ sort: newSort })\r\n this.page$.next({ ...this.page$.getValue(), sort: newSort })\r\n }\r\n\r\n filterGrid(column: string, items: string[]) {\r\n this.setState(prevState => {\r\n const filters = [...prevState.filters]\r\n const filter = { column: column, values: items }\r\n let index = filters.findIndex(item => item.column === filter.column)\r\n if (index >= 0) {\r\n filters[index] = filter\r\n } else {\r\n filters.push(filter)\r\n }\r\n return { filters: filters }\r\n }, () => {\r\n this.setState({ pageNumber: 1 })\r\n this.page$.next({ ...this.page$.getValue(), pageNumber: 1, filters: this.state.filters })\r\n })\r\n }\r\n\r\n visibleColumns = () => this.state.columns.filter(col => col.visible)\r\n\r\n renderCell = (row: InvitationStatusGridRecord, colName: keyof InvitationStatusGridRecord, key: number) => {\r\n let keyCell = `${key}_${colName}`\r\n switch (colName) {\r\n case \"UserName\":\r\n return {this.getUserName(row)}\r\n case \"ModifiedOn\":\r\n return {FormatDate(row.ModifiedOn)}\r\n case \"EnrollmentStarted\":\r\n return {FormatDate(row.EnrollmentStarted)}\r\n case \"Status\":\r\n return {getStatusLabelByKey(row.Status)}\r\n case \"InActive\":\r\n return {row.InActive ? \"InActive\" : \"Active\"}\r\n case \"Link\":\r\n return \r\n default:\r\n return {row[colName]}\r\n }\r\n }\r\n\r\n renderDataColumns = (row: InvitationStatusGridRecord) =>\r\n this.visibleColumns().map((col, i) =>\r\n this.renderCell(row, col.name as keyof InvitationStatusGridRecord, i))\r\n\r\n renderRows = () => {\r\n const { data } = this.state\r\n if (data?.Records?.length) {\r\n return data?.Records?.map((rows: InvitationStatusGridRecord[]) =>\r\n rows.map((row: InvitationStatusGridRecord, i: number) =>\r\n \r\n {this.renderDataColumns(row)}\r\n ))\r\n } else {\r\n return No Records Found\r\n }\r\n }\r\n\r\n renderHeader = () => this.visibleColumns().map((column: Column) => {\r\n const { sort, filters } = this.page$.value\r\n const { data } = this.state\r\n const { name, label, filter } = column\r\n return (\r\n \r\n {data && filter && filter in data &&\r\n item.column === filter)?.values || []}\r\n sort={sort.column === name ? sort.order === \"asc\" ? \"asc\" : \"desc\" : undefined}\r\n items={data[filter as keyof ColumnFilters]?.filter(item => !!item) || []}\r\n onSort={(order?: string) => this.sortGrid(name, order)}\r\n onFilter={(items: string[]) => filter && this.filterGrid(filter, items)}\r\n />}\r\n {(!data || !filter) && (label || name)}\r\n \r\n )\r\n })\r\n\r\n deleteInvitation = () => {\r\n this.hideModal()\r\n this.page$.next({ ...this.page$.getValue() })\r\n }\r\n\r\n resendInvitation = () => {\r\n this.hideModal()\r\n this.page$.next({ ...this.page$.getValue() })\r\n }\r\n\r\n handleInvitationSetupModalClose = (hasUpdates: boolean) => {\r\n this.setState({ showAdminInvitation: false })\r\n if (hasUpdates) {\r\n this.pageChanged(1)\r\n }\r\n }\r\n\r\n onGoToInvitationLink = (url: string) => {\r\n window.open(url, \"_blank\", \"noopener,noreferrer\")\r\n }\r\n\r\n render() {\r\n const { isSiteAdmin } = this.props\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {isSiteAdmin && <>\r\n this.setState({ customizeModal: false })}\r\n onSave={columns => this.setState({ columns: columns as Column[], customizeModal: false })} />\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderHeader()}\r\n \r\n \r\n \r\n {\r\n this.state.loading ?\r\n \r\n \r\n : this.renderRows()\r\n }\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n {this.state.data && !this.state.loading && \r\n Total records: {this.state.data.Total}\r\n \r\n }\r\n
\r\n { this.state.showAdminInvitation && }\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): InvitationStatusGridProps {\r\n return {\r\n isSiteAdmin: isSiteAdmin(state)\r\n }\r\n}\r\nconst ConnectedInvitationStatusGrid = connect(mapStateToProps, null)(InvitationStatusGrid)\r\nexport default ConnectedInvitationStatusGrid\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport GlobalParameterData from \"./Model/GlobalParameterData\"\r\n\r\nexport function GetGlobalParameter(parameterTitle: string) {\r\n const requestBody: string = new URLSearchParams({\r\n parameterTitle: parameterTitle.toString()\r\n }).toString()\r\n \r\n return ObservableFromFetch(\"FFOrderGlobalParameters/GetGlobalParameters?\" + requestBody)\r\n\r\n}\r\n\r\nexport function GlobalParameterUpdate(data: GlobalParameterData) {\r\n const requestBody = JSON.stringify({\r\n\r\n ParameterID: data.ParameterID ? data.ParameterID : undefined,\r\n ParameterTitle: data.ParameterTitle,\r\n ParameterDescription: data.ParameterDescription,\r\n ParameterType: data.ParameterType,\r\n ParameterValue: data.ParameterValue,\r\n CreatedBy: '',\r\n ModifiedBy: ''\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderGlobalParameters/SetGlobalParameters\", requestBody)\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport ParameterTypeData from \"./Model/ParameterTypeData\"\r\n\r\n\r\nexport function ParameterTypeUpdate(data: ParameterTypeData) {\r\n const requestBody = JSON.stringify({\r\n ParameterType: data.ParameterType,\r\n ParameterTypeDescription: data.ParameterTypeDescription,\r\n CreatedBy: data.CreatedBy,\r\n ModifiedBy: data.ModifiedBy\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderGlobalParameters/SetParameterType\", requestBody)\r\n}\r\n\r\nexport function GetParameterType(parameterType: string) {\r\n const requestBody: string = new URLSearchParams({\r\n parameterType: parameterType.toString()\r\n }).toString()\r\n return ObservableFromFetch(\"FFOrderGlobalParameters/GetParameterByParameterType?\" + requestBody)\r\n}\r\n\r\nexport function GetParameterTypes() {\r\n return ObservableFromFetch(\"FFOrderGlobalParameters/GetParameterType\")\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Form, Col, Row, Button } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { GetParameterType, ParameterTypeUpdate} from \"../../api/Administration/ParameterType\"\r\nimport ParameterTypeData from \"../../api/Administration/Model/ParameterTypeData\"\r\nimport ActionButton from \"../ActionButton\"\r\n\r\ninterface ParameterTypeModalProps {\r\n show:boolean\r\n LoginName:string\r\n onCancel: () => void\r\n onSubmit: (parameterType: string, parameterTypeDescription: string) => void\r\n}\r\n\r\ninterface ParameterTypeModalState {\r\n parameterTypeID: number\r\n parameterType: string\r\n parameterTypeDescription: string\r\n isTypeValid:boolean\r\n isDescriptionValid:boolean\r\n dataLoading:boolean\r\n dataLoaded:boolean\r\n dataSaving:boolean\r\n\r\n}\r\n\r\nexport default class ParameterTypeModal extends React.PureComponent {\r\n \r\n emptyState: ParameterTypeModalState = {\r\n parameterTypeID:0,\r\n parameterType: \"\",\r\n parameterTypeDescription: \"\",\r\n isTypeValid:false,\r\n isDescriptionValid:false,\r\n dataLoading:false,\r\n dataLoaded:false,\r\n dataSaving:false\r\n }\r\n state: ParameterTypeModalState = { ...this.emptyState }\r\n subscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n componentDidUpdate(prevProps: ParameterTypeModalProps) {\r\n //if (this.props.show && this.props.show !== prevProps.show) {\r\n //this.loadSubscriptionPlans()\r\n //}\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n handleTypeChange = ( value: string) => {\r\n this.setState(\r\n { \r\n parameterType: value, \r\n isTypeValid: this.isTypeValid(value),\r\n parameterTypeDescription: \"\",\r\n isDescriptionValid: this.isDescriptionValid(\"\"),\r\n dataLoaded:false\r\n \r\n }) \r\n }\r\n handleDescriptionChange = ( value: string) => {\r\n this.setState(\r\n { \r\n parameterTypeDescription: value,\r\n isDescriptionValid: this.isDescriptionValid(value) \r\n })\r\n }\r\n isTypeValid = (value: string) => {\r\n if (value.length < 1) {\r\n return false\r\n }\r\n return true;\r\n }\r\n isDescriptionValid = (value: string) => {\r\n if (value.length < 1) {\r\n return false\r\n }\r\n return true;\r\n }\r\n handleRetrieve = () => {\r\n this.setState({ dataLoading: true, dataLoaded:false })\r\n const { parameterType } = this.state\r\n\r\n this.subscription = GetParameterType(parameterType).subscribe(\r\n (data: ParameterTypeData) => {\r\n this.setState({ \r\n parameterTypeID: data.ParameterTypeID,\r\n parameterType: data.ParameterType,\r\n parameterTypeDescription: data.ParameterTypeDescription,\r\n isTypeValid: this.isTypeValid(data.ParameterType),\r\n isDescriptionValid: this.isDescriptionValid(data.ParameterTypeDescription),\r\n dataLoading: false, \r\n dataLoaded:true\r\n })\r\n },\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ dataLoading: false,dataLoaded:true })\r\n },\r\n () => {\r\n this.setState({ dataLoading: false, dataLoaded:true })\r\n }\r\n )\r\n }\r\n\r\n handleSubmit = () => {\r\n this.setState({ dataSaving: true, dataLoading:false })\r\n const updateData = this.stateToData()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = ParameterTypeUpdate(updateData).subscribe(\r\n data => {\r\n this.setState({ dataSaving: false })\r\n toast.success(data),\r\n this.onSubmit()\r\n },\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ dataSaving: false })\r\n },\r\n () => {\r\n this.setState({ dataSaving: false })\r\n }\r\n )\r\n\r\n }\r\n\r\n loadSubscriptionPlans = () => {\r\n this.setState({ dataLoading: true })\r\n /*\r\n this.subscription = GetSubscriptionPlans().subscribe(\r\n (data: SubscriptionPlan[]) => this.setState({ loading: false, availableSubscriptionPlans: data }),\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ loading: false })\r\n },\r\n () => this.setState({ loading: false })\r\n )\r\n */\r\n }\r\n\r\n onCancel = () => {\r\n this.props.onCancel()\r\n }\r\n\r\n onSubmit = () => {\r\n this.props.onSubmit(this.state.parameterType, this.state.parameterTypeDescription)\r\n }\r\n render() {\r\n\r\n const {parameterType, parameterTypeDescription, isTypeValid, isDescriptionValid, dataLoading, dataLoaded, dataSaving} = this.state\r\n //const currentPlan: SubscriptionPlan = availableSubscriptionPlans.filter((plan: SubscriptionPlan) => plan.SubscriptionPlanID === this.props.subscriptionPlanID)[0]\r\n return (\r\n <>\r\n \r\n \r\n ADD / EDIT DATA TYPE\r\n \r\n \r\n
\r\n \r\n Type\r\n \r\n this.handleTypeChange(e.target.value)}\r\n />\r\n \r\n \r\n Retrieve\r\n \r\n \r\n \r\n Description\r\n \r\n this.handleDescriptionChange(e.target.value)}\r\n disabled={ dataLoading || dataSaving || !isTypeValid || !dataLoaded}\r\n />\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Submit\r\n \r\n \r\n
\r\n \r\n )\r\n }\r\n \r\n stateToData():ParameterTypeData {\r\n return {\r\n ParameterTypeID: this.state.parameterTypeID,\r\n ParameterType: this.state.parameterType,\r\n ParameterTypeDescription: this.state.parameterTypeDescription,\r\n CreatedBy: this.props.LoginName,\r\n ModifiedBy: this.props.LoginName\r\n }\r\n }\r\n \r\n \r\n}\r\n","import React from \"react\"\r\nimport { Button, Modal, Form, Col, InputGroup, Row, Spinner } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport GlobalParameterData from \"../../api/Administration/Model/GlobalParameterData\"\r\nimport {GetGlobalParameter, GlobalParameterUpdate} from \"../../api/Administration/GlobalParameter\"\r\nimport ParameterTypeData from \"../../api/Administration/Model/ParameterTypeData\"\r\nimport {GetParameterTypes} from \"../../api/Administration/ParameterType\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { Home } from \"../../config/Routes\"\r\nimport { AppState } from \"../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport ParameterTypeModal from \"./ParameterTypeModal\"\r\nimport {getLoggedInUserName } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\n\r\ninterface GlobalParameterProps {\r\n LoginName: string\r\n}\r\n\r\ninterface GlobalParameterState {\r\n parameterID: number\r\n parameterTitle: string\r\n parameterDescription: string\r\n parameterType: string\r\n parameterValue: string\r\n createdBy: string\r\n modifiedBy: string\r\n isTitleValid: boolean\r\n isDescriptionValid: boolean\r\n isTypeValid:boolean\r\n isValueValid:boolean\r\n dataLoading:boolean\r\n dataSaving:boolean\r\n parameterTypesLoading:boolean\r\n parameterTypes: ParameterTypeData[]\r\n selectedItem?: GlobalParameterData\r\n showAddParameterType:boolean\r\n parameterTypesSubmitted:number\r\n\r\n}\r\n\r\n\r\nexport class GlobalParameter extends React.Component {\r\n \r\n emptyState: GlobalParameterState = {\r\n parameterID:0,\r\n parameterTitle: \"\",\r\n parameterDescription: \"\",\r\n parameterType: \"\",\r\n parameterValue: \"\",\r\n createdBy: \"\",\r\n modifiedBy: \"\",\r\n isTitleValid: false,\r\n isDescriptionValid: false,\r\n isTypeValid:false,\r\n isValueValid:false,\r\n dataLoading:false,\r\n dataSaving:false,\r\n parameterTypesLoading:false,\r\n parameterTypes:[],\r\n selectedItem: undefined,\r\n showAddParameterType: false,\r\n parameterTypesSubmitted:0\r\n }\r\n \r\n state: GlobalParameterState = { ...this.emptyState }\r\n\r\n saveSubscription?: Subscription\r\n loadSubscription?: Subscription\r\n loadParameterTypeSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.setState({ parameterTypesLoading: true, parameterTypes:[], selectedItem: undefined })\r\n\r\n this.loadParameterTypeSubscription = GetParameterTypes().subscribe(\r\n (parameterTypes: ParameterTypeData[]) => {\r\n this.setState({ \r\n parameterTypes: parameterTypes,\r\n parameterTypesLoading: false \r\n })\r\n },\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ parameterTypesLoading: false, parameterTypes:[]})\r\n },\r\n () => {\r\n this.setState({ parameterTypesLoading: false })\r\n }\r\n )\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.loadParameterTypeSubscription && this.loadParameterTypeSubscription.unsubscribe()\r\n }\r\n handleExit = () => {\r\n (this.props as RouteComponentProps).history?.push(Home)\r\n }\r\n handleCancel = () => {\r\n this.clearData()\r\n }\r\n handleSubmit = () => {\r\n this.setState({ dataSaving: true })\r\n const updateData = this.stateToData()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = GlobalParameterUpdate(updateData).subscribe(\r\n data => {\r\n this.setState({ dataSaving: false })\r\n toast.success(data)\r\n },\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ dataSaving: false })\r\n },\r\n () => {\r\n this.setState({ dataSaving: false })\r\n }\r\n )\r\n\r\n }\r\n\r\n handleTitleChange = ( value: string) => {\r\n this.setState(\r\n { \r\n parameterTitle: value, \r\n isTitleValid: this.isTitleValid(value) \r\n }) \r\n }\r\n\r\n handleDescriptionChange = ( value: string) => {\r\n this.setState(\r\n { \r\n parameterDescription:value, \r\n isDescriptionValid: this.isDescriptionValid(value) \r\n })\r\n }\r\n handleValueChange = ( value: string) => {\r\n this.setState(\r\n { \r\n parameterValue:value,\r\n isValueValid: this.isValueValid(value) \r\n\r\n })\r\n }\r\n handleParameterTypeChange = (e: React.ChangeEvent) => {\r\n const pt = this.state.parameterTypes.find(item => item.ParameterType === String(e.target.value))\r\n const value = pt?.ParameterType || \"\"\r\n this.setState(\r\n { \r\n parameterType: value,\r\n isTypeValid : this.isParameterTypeValid(value)\r\n })\r\n }\r\n handleRetrieve = () => {\r\n this.setState({ dataLoading: true, selectedItem: undefined })\r\n const { parameterTitle} = this.state\r\n\r\n this.loadSubscription = GetGlobalParameter(parameterTitle).subscribe(\r\n (data: GlobalParameterData) => {\r\n this.setState({ \r\n selectedItem: data,\r\n parameterID: data.ParameterID,\r\n parameterTitle: data.ParameterTitle,\r\n parameterDescription: data.ParameterDescription,\r\n parameterType: data.ParameterType,\r\n parameterValue: data.ParameterValue,\r\n isTitleValid: this.isValueValid(data.ParameterTitle),\r\n isDescriptionValid: this.isDescriptionValid(data.ParameterDescription),\r\n isTypeValid: this.isParameterTypeValid(data.ParameterType),\r\n isValueValid: this.isValueValid(data.ParameterValue),\r\n dataLoading: false \r\n })\r\n },\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ dataLoading: false })\r\n },\r\n () => {\r\n this.setState({ dataLoading: false })\r\n }\r\n )\r\n }\r\n handleAddParameterType = () => {\r\n this.setState(\r\n {\r\n showAddParameterType:true,\r\n parameterTypesSubmitted:0\r\n })\r\n }\r\n isTitleValid = (value: string) => {\r\n if (value.length < 1) {\r\n return false\r\n }\r\n return true;\r\n }\r\n isDescriptionValid = (value: string) => {\r\n if (value.length < 1) {\r\n return false\r\n }\r\n return true;\r\n }\r\n isParameterTypeValid = (value: string) => {\r\n if (value.length < 1) {\r\n return false\r\n }\r\n return true;\r\n }\r\n isValueValid = (value: string) => {\r\n if (value.length < 1) {\r\n return false\r\n }\r\n return true;\r\n }\r\n clearData= () => {\r\n const value = \"\"\r\n this.setState({ \r\n selectedItem: undefined,\r\n parameterID: 0,\r\n parameterTitle: value,\r\n parameterDescription: value,\r\n parameterType: value,\r\n parameterValue: value,\r\n isTitleValid: this.isValueValid(value),\r\n isDescriptionValid: this.isDescriptionValid(value),\r\n isTypeValid: this.isParameterTypeValid(value),\r\n isValueValid: this.isValueValid(value)\r\n })\r\n }\r\n addParameterType = (parameterType: string, parameterTypeDescription: string) => {\r\n const parameterTypesSubmitted = this.state.parameterTypesSubmitted;\r\n this.setState({parameterTypesSubmitted:parameterTypesSubmitted+1})\r\n }\r\n closeParameterType = () => {\r\n this.setState({showAddParameterType: false})\r\n if(this.state.parameterTypesSubmitted > 0){\r\n this.loadParameterTypes();\r\n }\r\n this.setState({parameterTypesSubmitted:0})\r\n }\r\n loadParameterTypes() {\r\n this.loadParameterTypeSubscription && this.loadParameterTypeSubscription.unsubscribe()\r\n this.setState({ parameterTypesLoading: true, parameterTypes:[], selectedItem: undefined })\r\n\r\n this.loadParameterTypeSubscription = GetParameterTypes().subscribe(\r\n (parameterTypes: ParameterTypeData[]) => {\r\n this.setState({ \r\n parameterTypes: parameterTypes,\r\n parameterTypesLoading: false \r\n })\r\n },\r\n (error) => {\r\n toast.error(error?.errorData?.message || error.message)\r\n this.setState({ parameterTypesLoading: false, parameterTypes:[]})\r\n },\r\n () => {\r\n this.setState({ parameterTypesLoading: false })\r\n }\r\n )\r\n\r\n }\r\n\r\n render() {\r\n const {parameterID, parameterTitle,parameterDescription, parameterType, parameterValue, \r\n isTitleValid, isDescriptionValid, isTypeValid, isValueValid, \r\n dataLoading, dataSaving, parameterTypesLoading, \r\n parameterTypes, selectedItem, showAddParameterType, parameterTypesSubmitted} = this.state;\r\n const isDataValid = isTitleValid && isDescriptionValid && isTypeValid && isValueValid\r\n const isLoadingOrSaving = dataLoading || dataSaving || parameterTypesLoading\r\n\r\n return (\r\n \r\n \r\n \r\n Add / Edit Global Parameters\r\n \r\n \r\n
\r\n {parameterTypesLoading && }\r\n \r\n Title\r\n \r\n this.handleTitleChange(e.target.value)}\r\n disabled={isLoadingOrSaving}\r\n />\r\n \r\n \r\n Retrieve\r\n \r\n \r\n \r\n Description\r\n \r\n this.handleDescriptionChange(e.target.value)}\r\n disabled={isLoadingOrSaving}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Type\r\n \r\n \r\n \r\n {parameterTypes && parameterTypes.map((pt: ParameterTypeData) => )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Value\r\n \r\n this.handleValueChange(e.target.value)}\r\n disabled={isLoadingOrSaving}\r\n />\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n Submit\r\n \r\n \r\n
\r\n\r\n{showAddParameterType && this.closeParameterType()}\r\n onSubmit={(parameterType: string, parameterTypeDescription: string) => this.addParameterType(parameterType, parameterTypeDescription)}\r\n LoginName={this.props.LoginName} />}\r\n
\r\n )\r\n }\r\n\r\n stateToData():GlobalParameterData {\r\n return {\r\n ParameterID: this.state.parameterID,\r\n ParameterTitle: this.state.parameterTitle,\r\n ParameterDescription: this.state.parameterDescription,\r\n ParameterType: this.state.parameterType,\r\n ParameterValue: this.state.parameterValue,\r\n CreatedBy: \"\",\r\n ModifiedBy: \"\"\r\n }\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): GlobalParameterProps {\r\n return {\r\n LoginName: getLoggedInUserName(state),\r\n }\r\n}\r\n\r\n\r\nconst ConnectedGlobalParameter = connect(mapStateToProps, null)(GlobalParameter)\r\nexport default ConnectedGlobalParameter\r\n","import React from \"react\"\r\nimport { Button, Modal, Table, Spinner, Col, Form, Row, OverlayTrigger, Popover } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { connect } from \"react-redux\"\r\nimport { concat, of, Subject, Subscription, forkJoin } from \"rxjs\"\r\nimport { catchError, map, switchMap } from \"rxjs/operators\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { Home } from \"../../config/Routes\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { AppState, WorkforceClinicPortal } from \"../../AppState\"\r\nimport { isPortalAdmin, isSiteAdmin } from \"../../authentication/isAdminRole\"\r\nimport { GetSelectedPortal, getUserNameForSelectedCompany } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { FaAngleDown, FaInfoCircle } from \"react-icons/fa\"\r\nimport ServicesGet, { AccountServicesGet, AccountServicesSave, SaveServices } from \"../../api/Administration/OrderableServices\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport Service from \"../../api/Administration/Model/Service\"\r\nimport AccountService from \"../../api/Administration/Model/AccountService\"\r\nimport CompanyInput from \"../FormattedInputs/CompanyInput\"\r\nimport ImplementationsGetObservable from \"../../api/Implementations/ImplementationsGet\"\r\nimport ImplementationData from \"../../api/Implementations/Model/ImplementationData\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\nimport { DisabledDefaultOrderableService } from \"../../config/Constants\"\r\n\r\ninterface OrderableServicesModalAuthProps {\r\n isPortalAdmin?: boolean\r\n isSiteAdmin?: boolean\r\n UserName?: string\r\n Portal?: WorkforceClinicPortal\r\n}\r\n\r\ninterface OrderableServicesModalProps { }\r\n\r\ninterface OrderableServicesModalState {\r\n saving: boolean\r\n loading: boolean\r\n loadingServices: boolean\r\n services: Service[]\r\n accountServices: AccountService[]\r\n portalServices: AccountService[]\r\n data: ServiceData[]\r\n portals: ImplementationData[]\r\n companies: AutoFilterCompany[]\r\n selectedPortal?: ImplementationData\r\n selectedCompany?: AutoFilterCompany\r\n selectedCompanyID?: number\r\n}\r\n\r\ninterface ServiceData {\r\n AccountServiceID?: number\r\n ImplementationID?: number\r\n AccountID?: number\r\n ServiceID: number\r\n ServiceName: string\r\n Active: boolean\r\n ActivateAll: boolean\r\n IsDefault: boolean\r\n Disabled?: boolean\r\n}\r\n\r\nexport class OrderableServicesModal extends React.PureComponent {\r\n emptyState: OrderableServicesModalState = {\r\n loading: false,\r\n loadingServices: false,\r\n saving: false,\r\n services: [],\r\n accountServices: [],\r\n portalServices: [],\r\n data: [],\r\n portals: [],\r\n companies: [],\r\n selectedPortal: undefined,\r\n selectedCompany: undefined,\r\n selectedCompanyID: undefined\r\n }\r\n state: OrderableServicesModalState = { ...this.emptyState }\r\n\r\n portalTypeahead = React.createRef>()\r\n companyTypeahead = React.createRef>()\r\n loadPortalsSubscription?: Subscription\r\n loadSubscription?: Subscription\r\n loadCompanyServicesSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n implementationName$ = new Subject()\r\n company$ = new Subject()\r\n\r\n componentWillMount() {\r\n if (this.props.isSiteAdmin) {\r\n this.setState({loading: true})\r\n this.loadPortalsSubscription = ImplementationsGetObservable().subscribe(\r\n data => {\r\n this.setState({ portals: data.Records, loading: false })\r\n },\r\n error => this.handleAPIError(error, { loading: false, portals: [] })\r\n )\r\n }\r\n\r\n if (this.props.isPortalAdmin) {\r\n this.loadCompanyServicesSubscription = this.company$.pipe(\r\n switchMap(company => concat(\r\n of({ loadingServices: true }),\r\n AccountServicesGet(this.props.Portal?.ImplementationID || 0, company.AccountID).pipe(\r\n map(result => ({ loadingServices: false, result: result })),\r\n catchError(() => of({ loadingServices: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loadingServices: boolean, result?: AccountService[] }) => {\r\n this.setState({ loadingServices: o.loadingServices, accountServices: o.result || [] })\r\n this.populateServiceData()\r\n },\r\n (error) => this.handleAPIError(error, { loadingServices: false, accountServices: undefined })\r\n )\r\n }\r\n this.loadInitialData()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.loadPortalsSubscription && this.loadPortalsSubscription.unsubscribe()\r\n this.loadCompanyServicesSubscription && this.loadCompanyServicesSubscription.unsubscribe()\r\n }\r\n\r\n loadInitialData() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.setState({ loadingServices: true })\r\n\r\n if (this.props.isPortalAdmin) {\r\n this.loadSubscription = forkJoin({\r\n services: ServicesGet(),\r\n accountServices: AccountServicesGet(this.props.Portal?.ImplementationID || 0, this.state.selectedCompanyID)\r\n }).subscribe(\r\n ({ services, accountServices }) => {\r\n this.setState({ services: services, accountServices: accountServices, loadingServices: false })\r\n if (!this.state.selectedCompanyID) this.setState({ portalServices: accountServices })\r\n this.populateServiceData()\r\n },\r\n (error) => this.handleAPIError(error, { loadingServices: false })\r\n )\r\n }\r\n\r\n if (this.props.isSiteAdmin) {\r\n if (this.state.selectedPortal) {\r\n this.loadSubscription = forkJoin({\r\n services: ServicesGet(),\r\n accountServices: AccountServicesGet(this.state.selectedPortal.ImplementationID)\r\n }).subscribe(\r\n ({ services, accountServices }) => {\r\n this.setState({ services: services, accountServices: accountServices, loadingServices: false })\r\n this.populateServiceData()\r\n },\r\n (error) => this.handleAPIError(error, { loadingServices: false })\r\n )\r\n }\r\n else {\r\n this.loadSubscription = ServicesGet().subscribe(\r\n (data) => {\r\n this.setState({ services: data, loadingServices: false})\r\n this.populateServiceData()\r\n },\r\n (error) => this.handleAPIError(error, { loadingServices: false, services: [] })\r\n )\r\n }\r\n }\r\n\r\n }\r\n\r\n mapServiceToServiceData = (services: Service[]): ServiceData[] => services.map(service => {\r\n return { ServiceID: service.ServiceID, Active: service.ActiveWorkForce, IsDefault: false, ServiceName: service.ServiceName || \"\", ActivateAll: service.ActivateAll }\r\n })\r\n\r\n mapAccountServiceToServiceData = (accountServices: AccountService[]): ServiceData[] => {\r\n const { selectedCompanyID, portalServices } = this.state\r\n var mappedServices: ServiceData[] = []\r\n this.state.services.forEach(service => {\r\n const accountService = accountServices.find(s => s.ServiceID == service.ServiceID)\r\n const portalAccountService = portalServices.find(s => s.ServiceID == service.ServiceID)\r\n const disabled = selectedCompanyID ? !service.ActiveWorkForce || (portalServices.length > 0 && !portalAccountService?.Active) : !service.ActiveWorkForce\r\n if (accountService) {\r\n mappedServices.push({ AccountServiceID: accountService.AccountServiceID, ServiceID: accountService.ServiceID, ServiceName: service.ServiceName || \"\", Active: service.ActiveWorkForce && !disabled ? accountService.Active : false, IsDefault: accountService.IsDefault, Disabled: disabled, ActivateAll: false })\r\n }\r\n else {\r\n const active = (accountServices.length === 0 && !selectedCompanyID) || (!!selectedCompanyID && !!portalAccountService && portalAccountService.IsDefault)\r\n mappedServices.push({ ServiceID: service.ServiceID, ServiceName: service.ServiceName || \"\", Active: !disabled && active, IsDefault: false, Disabled: disabled, ActivateAll: false })\r\n }\r\n })\r\n return mappedServices\r\n }\r\n\r\n handleCancel = () => (this.props as RouteComponentProps).history?.push(Home)\r\n\r\n handleSave = () => {\r\n this.setState({ saving: true })\r\n\r\n var saveObj: SaveServices = {\r\n Services: [],\r\n AccountServices: []\r\n }\r\n\r\n if (this.props.isSiteAdmin) {\r\n if (this.state.selectedPortal) {\r\n saveObj.AccountServices = this.state.data.map(service => { return { AccountServiceID: service.AccountServiceID, ServiceID: service.ServiceID, Active: service.Active, IsDefault: service.IsDefault } })\r\n saveObj.ImplementationID = this.state.selectedPortal.ImplementationID\r\n }\r\n else {\r\n saveObj.Services = this.state.data.map(service => { return { ServiceID: service.ServiceID, ActiveWorkForce: service.Active, ActivateAll: service.ActivateAll } })\r\n }\r\n }\r\n\r\n if (this.props.isPortalAdmin) {\r\n saveObj.AccountServices = this.state.data.map(service => { return { AccountServiceID: service.AccountServiceID, ServiceID: service.ServiceID, Active: service.Active, IsDefault: service.IsDefault } })\r\n saveObj.ImplementationID = this.props.Portal?.ImplementationID\r\n saveObj.AccountID = this.state.selectedCompanyID\r\n }\r\n\r\n this.saveSubscription = AccountServicesSave(saveObj).subscribe(\r\n (data) => {\r\n this.setState({saving: false})\r\n toast.success(data)\r\n this.loadInitialData()\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error(FormatError(error))\r\n }\r\n\r\n toggleActive = (index: number) => {\r\n const newData: ServiceData[] = [...this.state.data]\r\n newData[index].Active = !newData[index].Active\r\n newData[index].IsDefault = false\r\n newData[index].ActivateAll = false\r\n this.setState({ data: newData })\r\n }\r\n\r\n toggleDefault = (index: number) => {\r\n const newData: ServiceData[] = [...this.state.data]\r\n newData[index].IsDefault = !newData[index].IsDefault\r\n this.setState({ data: newData })\r\n }\r\n\r\n toggleActivate = (index: number) => {\r\n const newData: ServiceData[] = [...this.state.data]\r\n newData[index].ActivateAll = !newData[index].ActivateAll\r\n this.setState({ data: newData })\r\n }\r\n\r\n handlePortalChange = (selected: ImplementationData[]) => {\r\n const selectedPortal = selected[0]\r\n this.setState({ selectedPortal: selectedPortal })\r\n\r\n if (selectedPortal?.ImplementationID) {\r\n this.setState({ loadingServices: true })\r\n AccountServicesGet(selectedPortal?.ImplementationID).subscribe(\r\n (data) => {\r\n this.setState({ accountServices: data, loadingServices: false })\r\n this.populateServiceData()\r\n },\r\n (error) => this.handleAPIError(error, { loadingServices: false, accountServices: [] })\r\n )\r\n }\r\n }\r\n\r\n handleCompanyChange = (selected: AutoFilterCompany[]) => {\r\n const selectedCompany = selected[0]\r\n this.setState({ selectedCompany: selectedCompany })\r\n if (selectedCompany) {\r\n this.setState({ selectedCompanyID: selectedCompany.AccountID })\r\n this.company$.next(selectedCompany)\r\n } else {\r\n this.loadSubscription = AccountServicesGet(this.props.Portal?.ImplementationID || 0).subscribe(\r\n (data) => {\r\n this.setState({ accountServices: data, loadingServices: false, selectedCompanyID: undefined })\r\n this.populateServiceData()\r\n },\r\n (error) => this.handleAPIError(error, { loadingServices: false, accountServices: [], selectedCompanyID: undefined })\r\n )\r\n }\r\n }\r\n\r\n handleEmptyPortal = (company: string) => {\r\n if (company == \"\") {\r\n this.loadSubscription = ServicesGet().subscribe(\r\n (data) => {\r\n this.setState({ services: data, loadingServices: false, selectedPortal: undefined })\r\n this.populateServiceData()\r\n },\r\n (error) => this.handleAPIError(error, { loadingServices: false, services: [], selectedPortalID: undefined })\r\n )\r\n }\r\n }\r\n\r\n disableDefaultTooltip = () => {\r\n return \r\n {DisabledDefaultOrderableService}\r\n }>\r\n \r\n \r\n }\r\n\r\n populateServiceData = () => {\r\n const { selectedPortal, selectedCompanyID, services, accountServices } = this.state\r\n const { isSiteAdmin, isPortalAdmin } = this.props\r\n var data: ServiceData[] = []\r\n if (isSiteAdmin) {\r\n data = selectedPortal ? this.mapAccountServiceToServiceData(accountServices.filter(s => !s.AccountID)) : this.mapServiceToServiceData(services)\r\n }\r\n if (isPortalAdmin) {\r\n data = selectedCompanyID ? this.mapAccountServiceToServiceData(accountServices.filter(s => s.AccountID == selectedCompanyID)) : this.mapAccountServiceToServiceData(accountServices.filter(s => !s.AccountID))\r\n }\r\n this.setState({ data: data })\r\n }\r\n\r\n DataRow = (data: ServiceData, index: number) => {\r\n const isSiteAdmin = !!this.props.isSiteAdmin\r\n const showDefault = (this.props.isPortalAdmin && !this.state.selectedCompanyID) || (this.props.isSiteAdmin && !!this.state.selectedPortal)\r\n const disable = this.props.isPortalAdmin && !!this.state.selectedCompanyID && !!this.state.portalServices.find(item => item.ServiceID === data.ServiceID)?.IsDefault\r\n return \r\n {data.ServiceName}\r\n {disable && {this.disableDefaultTooltip()}}\r\n {!disable && this.toggleActive(index)} className=\"mr-auto\" />}\r\n {showDefault && <> this.toggleDefault(index)} className=\"mr-auto\" />}\r\n {!showDefault && isSiteAdmin && <> this.toggleActivate(index)} className=\"mr-auto\" />}\r\n \r\n }\r\n\r\n render() {\r\n const { saving, loading, loadingServices, data, selectedCompanyID, selectedPortal, portals } = this.state\r\n const { isSiteAdmin, isPortalAdmin } = this.props\r\n const showDefault = (isPortalAdmin && !selectedCompanyID) || (isSiteAdmin && !!selectedPortal)\r\n\r\n return (\r\n \r\n \r\n \r\n Orderable Services\r\n \r\n \r\n \r\n {isSiteAdmin && \r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n isLoading={loading}\r\n onChange={this.handlePortalChange}\r\n onInputChange={text => this.handleEmptyPortal(text)}\r\n disabled={loading || loadingServices}\r\n options={portals || []}\r\n selected={selectedPortal ? [selectedPortal || \"\"] : []}\r\n placeholder=\"Select Portal\"\r\n emptyLabel=\"No Portals Found\">\r\n {!loading && }\r\n \r\n }\r\n {isPortalAdmin && \r\n this.handleCompanyChange(items)} placeholder=\"Select Company\" />\r\n }\r\n \r\n \r\n \r\n {showDefault && <>}\r\n {!showDefault && !isSiteAdmin && <>}\r\n {!showDefault && isSiteAdmin && <>}\r\n {this.state.loadingServices ? :\r\n data.map((service, index) => this.DataRow(service, index))}\r\n
Service NameOrderableDefault
Service NameOrderable
Service NameOrderableActivate For All Portals
\r\n
\r\n
\r\n \r\n this.handleSave()} disabled={loading} spin={saving} disableOnSpin>Update\r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): OrderableServicesModalAuthProps {\r\n return {\r\n isPortalAdmin: isPortalAdmin(state),\r\n isSiteAdmin: isSiteAdmin(state),\r\n UserName: getUserNameForSelectedCompany(state),\r\n Portal: GetSelectedPortal(state)\r\n }\r\n}\r\nconst ConnectedOrderableServicesModal = connect(mapStateToProps, null)(OrderableServicesModal)\r\nexport default ConnectedOrderableServicesModal","\r\nexport default interface CompanyUserCode {\r\n AccountID: number\r\n UserFieldType: string\r\n Code: string\r\n Description: string\r\n UserDefinedCodeID: number\r\n Dependents: number\r\n ErrorMessage: string\r\n\r\n}\r\nexport function CreateEmptyCompanyUserCode(): CompanyUserCode {\r\n const result: CompanyUserCode = {\r\n AccountID: 0,\r\n UserFieldType: \"\",\r\n Code: \"\",\r\n Description: \"\",\r\n UserDefinedCodeID: 0,\r\n Dependents: 0,\r\n ErrorMessage: \"\"\r\n\r\n }\r\n return result\r\n}\r\n\r\nexport function CopyCompanyUserCode(src: CompanyUserCode): CompanyUserCode{\r\n const result = {...src}\r\n return result\r\n\r\n}\r\nexport function CopyCompanyUserCodes(src: CompanyUserCode[]): CompanyUserCode[]{\r\n const result = Array.from(src, item => CopyCompanyUserCode(item))\r\n return result\r\n}\r\n\r\n\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport CompanyUserCode from \"./Model/ComapnyUserCode\"\r\n\r\nexport default function GetCompanyUserCodes(accountID: number, userFieldType: string ) {\r\n const requestBody = JSON.stringify({\r\n AccountID: accountID,\r\n UserFieldType: userFieldType\r\n })\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/GetCompanyUserCodes\", requestBody)\r\n}\r\nexport function SaveCompanyUserCode(companyUserCode: CompanyUserCode) {\r\n const requestBody = JSON.stringify(companyUserCode)\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/SaveCompanyUserCode\", requestBody)\r\n}\r\nexport function DeleteCompanyUserCode(companyUserCode: CompanyUserCode) {\r\n const requestBody = JSON.stringify(companyUserCode)\r\n return ObservableFromFetch(\"FFOrderClientFileMaintenance/DeleteCompanyUserCode\", requestBody)\r\n}\r\n","import * as React from \"react\"\r\nimport { Container, Modal, Row, Col, Button, Form } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\nimport CompanyUserCode, { CreateEmptyCompanyUserCode, CopyCompanyUserCode, CopyCompanyUserCodes } from \"../../api/Administration/Model/ComapnyUserCode\"\r\nimport { SaveCompanyUserCode } from \"../../api/Administration/CompanyUserCodes\"\r\n\r\ninterface CompanyUserCodeModalProps {\r\n show: boolean\r\n selectedUserCode: CompanyUserCode\r\n onSave: (companyUserCode: CompanyUserCode) => void\r\n onClose: () => void\r\n}\r\n\r\ninterface CompanyUserCodeModalState {\r\n code: string\r\n description: string\r\n saving: boolean\r\n showConfirmUpdate: false\r\n}\r\n\r\nexport default class CompanyUserCodeModal extends React.PureComponent {\r\n state: CompanyUserCodeModalState = { code: this.props.selectedUserCode.Code, description: this.props.selectedUserCode.Description, saving: false, showConfirmUpdate: false }\r\n subscription?: Subscription\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n handleSave = () => {\r\n const companyUserCode = this.props.selectedUserCode\r\n const isEditMode = companyUserCode.UserDefinedCodeID > 0\r\n if (isEditMode) {\r\n this.setState({ showConfirmUpdate: true })\r\n }\r\n else {\r\n this.handleConfirmSave()\r\n }\r\n }\r\n handleConfirmSave = () => {\r\n\r\n this.setState({ saving: true, showConfirmUpdate: false })\r\n this.subscription && this.subscription.unsubscribe()\r\n const selectedUserCode = CopyCompanyUserCode(this.props.selectedUserCode)\r\n selectedUserCode.Code = this.state.code\r\n selectedUserCode.Description = this.state.description\r\n this.subscription = SaveCompanyUserCode(selectedUserCode).subscribe(\r\n (data: CompanyUserCode) => {\r\n this.setState({ saving: false })\r\n if (data.ErrorMessage === \"\") {\r\n toast.success(\"Record saved successfully\")\r\n this.props.onSave(data)\r\n }\r\n else {\r\n toast.error(data.ErrorMessage)\r\n }\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n handleConfirmClose = () => {\r\n this.setState({ showConfirmUpdate: false })\r\n }\r\n\r\n render() {\r\n const companyUserCode = this.props.selectedUserCode\r\n const code = this.state.code\r\n const description = this.state.description\r\n const disableEditCode = companyUserCode.UserDefinedCodeID > 0\r\n const title = (companyUserCode.UserDefinedCodeID > 0) ? \"Edit Code: \" + companyUserCode.UserFieldType : \"Add Code: \" + companyUserCode.UserFieldType\r\n const showConfirmUpdate = this.state.showConfirmUpdate\r\n return (\r\n <>\r\n {disableEditCode &&\r\n this.handleConfirmSave()}\r\n onHide={() => this.handleConfirmClose()} />\r\n }\r\n\r\n this.props.onClose()}\r\n size=\"lg\"\r\n disableConfirmButton={(this.state.code.trim().length === 0) || (this.state.description.trim().length === 0)}\r\n spinConfirmButton={this.state.saving}\r\n disableConfirmOnSpin={true}>\r\n
\r\n \r\n Code:\r\n \r\n this.setState({ code: e.target.value })}\r\n />\r\n \r\n \r\n \r\n Name:\r\n \r\n this.setState({ description: e.target.value })}\r\n />\r\n \r\n \r\n
\r\n
\r\n \r\n )\r\n }\r\n}","import React from \"react\"\r\nimport { Button, Modal, Table, Spinner, Col, Form, Row, Image } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { connect } from \"react-redux\"\r\nimport { concat, of, Subject, Subscription, forkJoin } from \"rxjs\"\r\nimport { catchError, map, switchMap } from \"rxjs/operators\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { Home } from \"../../config/Routes\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { AppState, WorkforceClinicPortal, AssignedClinic } from \"../../AppState\"\r\nimport { isPortalAdmin, isCompanyAdmin } from \"../../authentication/isAdminRole\"\r\nimport { GetSelectedPortal, GetSelectedAssignedClinic, getUserNameForSelectedCompany } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport KeyValue from \"../../api/Administration/Model/KeyValue\"\r\nimport CompanyUserCode, { CreateEmptyCompanyUserCode, CopyCompanyUserCode, CopyCompanyUserCodes } from \"../../api/Administration/Model/ComapnyUserCode\"\r\nimport GetImplementationAliasFields from \"../../api/Administration/ImplementationAliasFields\"\r\nimport GetCompanyUserCodes from \"../../api/Administration/CompanyUserCodes\"\r\nimport DeleteQueryImg from '../../assets/images/delete_query.png'\r\nimport CompanyUserCodeModal from \"./CompanyUserCodeModal\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\nimport { DeleteCompanyUserCode } from \"../../api/Administration/CompanyUserCodes\"\r\nimport IdName from \"../../api/Administration/Model/IdName\"\r\nimport CompanyInput from \"../FormattedInputs/CompanyInput\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\n\r\ninterface UserCodesModalAuthProps {\r\n isPortalAdmin?: boolean\r\n isCompanyAdmin?: boolean\r\n UserName?: string\r\n Company?: AssignedClinic\r\n Portal?: WorkforceClinicPortal\r\n}\r\n\r\ninterface UserCodesModalProps { }\r\n\r\ninterface UserCodesModalState {\r\n loading: boolean\r\n implementationFields: KeyValue[]\r\n implementationFieldsLoading: boolean\r\n selectedCompany?: AutoFilterCompany\r\n selectedCompanyID: number\r\n selectedCode: string\r\n companyUserCodes: CompanyUserCode[]\r\n companyUserCodesLoading: boolean\r\n showCompanyUserCodeEditor: boolean\r\n selectedIndex: number\r\n selectedUserCode: CompanyUserCode\r\n showOnDeleteConfirmation: boolean\r\n deletingUserCode: boolean\r\n}\r\n\r\n\r\nexport class UserCodesModal extends React.PureComponent {\r\n emptyState: UserCodesModalState = {\r\n loading: false,\r\n implementationFields: [],\r\n implementationFieldsLoading: false,\r\n selectedCompany: undefined,\r\n selectedCompanyID: 0,\r\n selectedCode: \"\",\r\n companyUserCodes: [],\r\n companyUserCodesLoading: false,\r\n showCompanyUserCodeEditor: false,\r\n selectedIndex: -1,\r\n selectedUserCode: CreateEmptyCompanyUserCode(),\r\n showOnDeleteConfirmation: false,\r\n deletingUserCode: false\r\n\r\n }\r\n state: UserCodesModalState = { ...this.emptyState }\r\n\r\n deleteSubscription?: Subscription\r\n loadImplementationFieldsSubscription?: Subscription\r\n loadCompanyCodesSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.loadInitialData()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.deleteSubscription && this.deleteSubscription.unsubscribe()\r\n this.loadImplementationFieldsSubscription && this.loadImplementationFieldsSubscription.unsubscribe()\r\n this.loadCompanyCodesSubscription && this.loadCompanyCodesSubscription.unsubscribe()\r\n }\r\n\r\n loadInitialData() {\r\n this.loadImplementationFieldsSubscription && this.loadImplementationFieldsSubscription.unsubscribe()\r\n this.loadCompanyCodesSubscription && this.loadCompanyCodesSubscription.unsubscribe()\r\n let selectedCompanyID = 0\r\n const selectedUserCode = CreateEmptyCompanyUserCode()\r\n this.setState({\r\n implementationFields: [],\r\n implementationFieldsLoading: true,\r\n selectedCode: \"\",\r\n companyUserCodes: [],\r\n companyUserCodesLoading: true,\r\n selectedIndex: -1,\r\n selectedUserCode: selectedUserCode\r\n })\r\n\r\n this.loadImplementationFieldsSubscription = GetImplementationAliasFields().subscribe(\r\n (data: KeyValue[]) => {\r\n const selectedCode = (data.length > 0) ? data[0].Key : \"\"\r\n this.setState({ implementationFields: data, implementationFieldsLoading: false, selectedCode: selectedCode })\r\n this.loadCompanyCodesSubscription = GetCompanyUserCodes(selectedCompanyID, selectedCode).subscribe(\r\n (data: CompanyUserCode[]) => {\r\n this.setState({ companyUserCodes: data, companyUserCodesLoading: false })\r\n },\r\n (error) => this.handleAPIError(error, { companyUserCodes: [], companyUserCodesLoading: false })\r\n )\r\n },\r\n (error) => this.handleAPIError(error, { implementationFields: [], implementationFieldsLoading: false, companyUserCodesLoading: false })\r\n )\r\n }\r\n\r\n handleCancel = () => (this.props as RouteComponentProps).history?.push(Home)\r\n\r\n handleAdd = () => {\r\n const itemIndex = -1\r\n const selectedUserCode = this.getItemForEdit(itemIndex);\r\n this.setState({ selectedIndex: itemIndex, selectedUserCode: selectedUserCode, showCompanyUserCodeEditor: true })\r\n\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n handleImplementationFieldChange = (event: React.ChangeEvent) => {\r\n const selectedCode = event.target.value\r\n const selectedCompany = this.state.selectedCompany\r\n const selectedCompanyID = selectedCompany?.AccountID || 0\r\n const selectedUserCode = CreateEmptyCompanyUserCode()\r\n this.setState({ selectedCode: selectedCode, companyUserCodesLoading: true, selectedIndex: -1, selectedUserCode: selectedUserCode })\r\n this.loadCompanyCodesSubscription && this.loadCompanyCodesSubscription.unsubscribe()\r\n this.loadCompanyCodesSubscription = GetCompanyUserCodes(selectedCompanyID, selectedCode).subscribe(\r\n (data: CompanyUserCode[]) => {\r\n this.setState({ selectedCode: selectedCode, companyUserCodes: data, companyUserCodesLoading: false })\r\n },\r\n (error) => this.handleAPIError(error, { selectedCode: selectedCode, companyUserCodes: [], companyUserCodesLoading: false })\r\n )\r\n }\r\n\r\n handleCompanyChange = (companies: AutoFilterCompany[]) => {\r\n const selectedCode = this.state.selectedCode\r\n const selectedCompany = companies[0]\r\n const selectedCompanyID = selectedCompany?.AccountID || 0\r\n const selectedUserCode = CreateEmptyCompanyUserCode()\r\n this.setState({ companyUserCodesLoading: true, selectedIndex: -1, selectedUserCode: selectedUserCode })\r\n this.loadCompanyCodesSubscription && this.loadCompanyCodesSubscription.unsubscribe()\r\n\r\n this.loadCompanyCodesSubscription = GetCompanyUserCodes(selectedCompanyID, selectedCode).subscribe(\r\n (data: CompanyUserCode[]) => {\r\n this.setState({ selectedCompany: selectedCompany, selectedCompanyID: selectedCompanyID, companyUserCodes: data, companyUserCodesLoading: false })\r\n },\r\n (error) => this.handleAPIError(error, { selectedCompany: selectedCompany, selectedCompanyID: selectedCompanyID, companyUserCodes: [], companyUserCodesLoading: false })\r\n )\r\n }\r\n\r\n getItemForEdit = (itemIndex: number) => {\r\n if (itemIndex >= 0) {\r\n return this.state.companyUserCodes[itemIndex]\r\n }\r\n const result = CreateEmptyCompanyUserCode()\r\n result.AccountID = this.state.selectedCompanyID\r\n result.UserFieldType = this.state.selectedCode\r\n return result\r\n\r\n }\r\n\r\n userCodeClick = (itemIndex: number) => {\r\n const selectedUserCode = this.getItemForEdit(itemIndex);\r\n this.setState({ selectedIndex: itemIndex, selectedUserCode: selectedUserCode, showCompanyUserCodeEditor: true })\r\n }\r\n userCodeDeleteClick = (itemIndex: number) => {\r\n const selectedUserCode = this.getItemForEdit(itemIndex);\r\n this.setState({ selectedIndex: itemIndex, selectedUserCode: selectedUserCode, showOnDeleteConfirmation: true })\r\n }\r\n \r\n DataRow = (data: CompanyUserCode, index: number) => {\r\n return \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n this.userCodeDeleteClick(index)} />\r\n \r\n \r\n }\r\n\r\n handleCompanyUserCodeSave = (data: CompanyUserCode) => {\r\n\r\n const selectedUserCode = CreateEmptyCompanyUserCode()\r\n const userDefinedCodeID = data.UserDefinedCodeID\r\n let companyUserCodes = CopyCompanyUserCodes(this.state.companyUserCodes)\r\n const itemIndex = this.state.companyUserCodes.findIndex(item => item.UserDefinedCodeID === userDefinedCodeID)\r\n if (itemIndex < 0) {\r\n companyUserCodes.push(data)\r\n }\r\n else{\r\n companyUserCodes[itemIndex].Description = data.Description\r\n }\r\n this.setState({ selectedIndex: -1, showCompanyUserCodeEditor: false, selectedUserCode: selectedUserCode, companyUserCodes: companyUserCodes })\r\n }\r\n handleCompanyUserCodeClose = () => {\r\n const selectedUserCode = CreateEmptyCompanyUserCode()\r\n this.setState({ selectedIndex: -1, showCompanyUserCodeEditor: false, selectedUserCode: selectedUserCode })\r\n }\r\n handleDeleteCompanyUserCode = () => {\r\n this.setState({ deletingUserCode: true })\r\n const emptyUserCode = CreateEmptyCompanyUserCode()\r\n const selectedUserCode = this.state.selectedUserCode\r\n this.deleteSubscription && this.deleteSubscription.unsubscribe()\r\n this.deleteSubscription = DeleteCompanyUserCode(selectedUserCode).subscribe(\r\n (data: number) => {\r\n let items = CopyCompanyUserCodes(this.state.companyUserCodes)\r\n const itemIndex = items.findIndex(item => item.UserDefinedCodeID === data);\r\n if (itemIndex >= 0) {\r\n items.splice(itemIndex, 1)\r\n }\r\n this.setState({ showOnDeleteConfirmation: false, deletingUserCode: false, selectedIndex: -1, selectedUserCode: emptyUserCode, companyUserCodes: items })\r\n toast.success(\"Record deleted successfully\")\r\n },\r\n error => this.handleAPIError(error, { showOnDeleteConfirmation: false, deletingUserCode: false, selectedIndex: -1, selectedUserCode: emptyUserCode })\r\n )\r\n\r\n\r\n }\r\n handleCloseDeleteConfirmation = () => {\r\n const selectedUserCode = CreateEmptyCompanyUserCode()\r\n this.setState({ selectedIndex: -1, selectedUserCode: selectedUserCode, showOnDeleteConfirmation: false, deletingUserCode: false })\r\n }\r\n\r\n render() {\r\n const { implementationFields, implementationFieldsLoading, companyUserCodes, companyUserCodesLoading, showCompanyUserCodeEditor, selectedUserCode } = this.state\r\n const loading = implementationFieldsLoading || companyUserCodesLoading\r\n\r\n return (\r\n <>\r\n {showCompanyUserCodeEditor && this.handleCompanyUserCodeSave(companyUserCode)}\r\n onClose={this.handleCompanyUserCodeClose} />\r\n }\r\n this.handleDeleteCompanyUserCode()}\r\n onHide={() => this.handleCloseDeleteConfirmation()} />\r\n \r\n \r\n \r\n Company User Codes\r\n \r\n \r\n \r\n \r\n Company:\r\n {(companyUserCodesLoading) && }\r\n \r\n \r\n this.handleCompanyChange(items)} />\r\n \r\n \r\n\r\n \r\n \r\n User Code Type:\r\n {(implementationFieldsLoading) && }\r\n \r\n \r\n \r\n {implementationFields && implementationFields.map((keyValue: KeyValue) => )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {companyUserCodesLoading ? :\r\n companyUserCodes.map((item, index) => this.DataRow(item, index))}\r\n
Code \r\n {(loading) && }\r\n\r\n Name/Description 
\r\n
\r\n
\r\n \r\n this.handleAdd()} disabled={loading} spin={loading} disableOnSpin>Add\r\n \r\n \r\n
\r\n
\r\n \r\n )\r\n }\r\n}\r\nfunction assignedClinicToIdName(src: AssignedClinic) : IdName{\r\n const result : IdName = {\r\n ID: src.AccountID || 0,\r\n Name: src.Name || \"\"\r\n }\r\n return result\r\n}\r\nfunction assignedClinicsToIdNames(src: AssignedClinic[]) : IdName[]{\r\n const result : IdName[] = []\r\n for(let i = 0; i < src.length; i++)\r\n {\r\n const item = assignedClinicToIdName(src[i])\r\n result.push(item)\r\n }\r\n return result\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): UserCodesModalAuthProps {\r\n\r\n let result: UserCodesModalAuthProps = {\r\n isPortalAdmin: isPortalAdmin(state),\r\n isCompanyAdmin: isCompanyAdmin(state),\r\n UserName: getUserNameForSelectedCompany(state),\r\n Company: GetSelectedAssignedClinic(state) || undefined,\r\n Portal: GetSelectedPortal(state)\r\n }\r\n return result\r\n\r\n}\r\nconst ConnectedUserCodesModal = connect(mapStateToProps, null)(UserCodesModal)\r\nexport default ConnectedUserCodesModal","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport KeyValue from \"./Model/KeyValue\"\r\n\r\nexport default function GetImplementationAliasFields() {\r\n return ObservableFromFetch(\"FFOrderClinicFileMaintenance/GetImplementationAliasFields\")\r\n}","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport ImplementationUserLabels from \"./Model/ImplementationUserLabels\"\r\n\r\nexport default function GetImplementationUserLabels() {\r\n return ObservableFromFetch(\"FFOrderClinicFileMaintenance/GetImplementationUserLabels\")\r\n}\r\n\r\nexport function SaveImplementationUserLabels(userLabels: ImplementationUserLabels) {\r\n const requestBody = JSON.stringify(userLabels)\r\n return ObservableFromFetch(\"FFOrderClinicFileMaintenance/SaveImplementationUserLabels\", requestBody)\r\n}\r\n","import React from \"react\"\r\nimport { Button, Modal, Col, Form } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { Home } from \"../../config/Routes\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport ImplementationUserLabels, { CreateEmptyImplementationUserLabels } from \"../../api/Administration/Model/ImplementationUserLabels\"\r\nimport GetImplementationUserLabels, { SaveImplementationUserLabels } from \"../../api/Administration/ImplementationUserLabels\"\r\n\r\ninterface UserLabelsModalProps { }\r\n\r\ninterface UserLabelsModalState {\r\n loading: boolean\r\n saving: boolean\r\n User1: string\r\n User2: string\r\n User3: string\r\n User4: string\r\n User5: string\r\n User6: string\r\n User7: string\r\n User8: string\r\n User9: string\r\n User10: string\r\n}\r\n\r\nexport default class UserLabelsModal extends React.PureComponent {\r\n emptyState: UserLabelsModalState = {\r\n loading: false,\r\n saving: false,\r\n User1: \"\",\r\n User2: \"\",\r\n User3: \"\",\r\n User4: \"\",\r\n User5: \"\",\r\n User6: \"\",\r\n User7: \"\",\r\n User8: \"\",\r\n User9: \"\",\r\n User10: \"\"\r\n\r\n }\r\n state: UserLabelsModalState = { ...this.emptyState }\r\n\r\n loadSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.loadInitialData()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n loadInitialData() {\r\n\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n\r\n this.setState({\r\n loading: true, saving: false\r\n })\r\n\r\n this.loadSubscription = GetImplementationUserLabels().subscribe(\r\n (data: ImplementationUserLabels) => {\r\n this.onDataLoaded(data)\r\n },\r\n (error) => this.handleAPIError(error, { loading: false, saving: false })\r\n )\r\n }\r\n\r\n onDataLoaded = (data: ImplementationUserLabels) => {\r\n this.setState({\r\n loading: false,\r\n saving: false,\r\n User1: data.User1,\r\n User2: data.User2,\r\n User3: data.User3,\r\n User4: data.User4,\r\n User5: data.User5,\r\n User6: data.User6,\r\n User7: data.User7,\r\n User8: data.User8,\r\n User9: data.User9,\r\n User10: data.User10\r\n })\r\n }\r\n\r\n dataFromState = (): ImplementationUserLabels => {\r\n const result = CreateEmptyImplementationUserLabels()\r\n result.User1 = this.state.User1\r\n result.User2 = this.state.User2\r\n result.User3 = this.state.User3\r\n result.User4 = this.state.User4\r\n result.User5 = this.state.User5\r\n result.User6 = this.state.User6\r\n result.User7 = this.state.User7\r\n result.User8 = this.state.User8\r\n result.User9 = this.state.User9\r\n result.User10 = this.state.User10\r\n return result\r\n }\r\n handleCancel = () => (this.props as RouteComponentProps).history?.push(Home)\r\n\r\n handleSave = () => {\r\n this.setState({ loading: false, saving: true })\r\n\r\n const userLabels = this.dataFromState()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = SaveImplementationUserLabels(userLabels).subscribe(\r\n (data: ImplementationUserLabels) => {\r\n this.onDataLoaded(data)\r\n toast.success(\"Record saved successfully\")\r\n },\r\n error => this.handleAPIError(error, { loading: false, saving: false })\r\n )\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n render() {\r\n const { loading, saving, User1, User2, User3, User4, User5, User6, User7, User8, User9, User10 } = this.state\r\n const inProgress = loading || saving\r\n return (\r\n \r\n \r\n \r\n User Code Labels\r\n \r\n \r\n \r\n User1Label:\r\n \r\n this.setState({ User1: e.target.value })} />\r\n \r\n \r\n \r\n User2Label:\r\n \r\n this.setState({ User2: e.target.value })} />\r\n \r\n \r\n \r\n User3Label:\r\n \r\n this.setState({ User3: e.target.value })} />\r\n \r\n \r\n \r\n User4Label:\r\n \r\n this.setState({ User4: e.target.value })} />\r\n \r\n \r\n \r\n User5Label:\r\n \r\n this.setState({ User5: e.target.value })} />\r\n \r\n \r\n \r\n User6Label:\r\n \r\n this.setState({ User6: e.target.value })} />\r\n \r\n \r\n \r\n User7Label:\r\n \r\n this.setState({ User7: e.target.value })} />\r\n \r\n \r\n \r\n User8Label:\r\n \r\n this.setState({ User8: e.target.value })} />\r\n \r\n \r\n \r\n * User9Label:\r\n \r\n this.setState({ User9: e.target.value })} />\r\n \r\n \r\n \r\n User10Label:\r\n \r\n this.setState({ User10: e.target.value })} />\r\n \r\n \r\n \r\n \r\n * These fields are free text fields, meaning they will not have codes defined for them.\r\n \r\n \r\n\r\n \r\n \r\n this.handleSave()} disabled={inProgress} spin={inProgress} disableOnSpin>Save\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}","\r\nexport default interface ImplementationUserLabels {\r\n User1: string;\r\n User2: string;\r\n User3: string;\r\n User4: string;\r\n User5: string;\r\n User6: string;\r\n User7: string;\r\n User8: string;\r\n User9: string;\r\n User10: string;\r\n}\r\n\r\n\r\n\r\nexport function CreateEmptyImplementationUserLabels(): ImplementationUserLabels {\r\n const result: ImplementationUserLabels = {\r\n User1: \"\",\r\n User2: \"\",\r\n User3: \"\",\r\n User4: \"\",\r\n User5: \"\",\r\n User6: \"\",\r\n User7: \"\",\r\n User8: \"\",\r\n User9: \"\",\r\n User10: \"\"\r\n }\r\n return result\r\n}\r\n\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { ImplementationGroupID_Workforce } from \"../../config/Constants\"\r\nimport ImplementationLabResultsReporting from \"./Model/ImplementationLabResultsReporting\"\r\n\r\n\r\n\r\nexport default function ImplementationLabResultsReportingGet() {\r\n const requestBody: string = new URLSearchParams({\r\n implementationGroupId: ImplementationGroupID_Workforce.toString()\r\n }).toString()\r\n return ObservableFromFetch(\"WorkforceLabResultsReporting/GetImplementations?\" + requestBody)\r\n}\r\n\r\nexport function ImplementationLabResultReportingGet(implementationId: number) {\r\n const requestBody: string = new URLSearchParams({\r\n implementationId: implementationId.toString()\r\n }).toString()\r\n return ObservableFromFetch(\"WorkforceLabResultsReporting/GetImplementation?\" + requestBody)\r\n}\r\n\r\nexport function SetImplementationLabResultsReporting(data: ImplementationLabResultsReporting) {\r\n const requestBody: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"WorkforceLabResultsReporting/SetImplementationLabResultsReporting\", requestBody)\r\n}","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { ImplementationGroupID_Workforce } from \"../../config/Constants\"\r\nimport AccountLabResultsReporting from \"./CompanyModel/AccountLabResultsReporting\"\r\n\r\n\r\n\r\nexport default function AccountLabResultsReportingGet(implementationId: number) {\r\n const requestBody: string = new URLSearchParams({\r\n implementationId: implementationId.toString()\r\n }).toString()\r\n return ObservableFromFetch(\"WorkforceLabResultsReporting/GetAccounts?\" + requestBody)\r\n}\r\n\r\nexport function SetAccountLabResultsReporting(data: AccountLabResultsReporting) {\r\n const requestBody: string = JSON.stringify(data)\r\n\r\n return ObservableFromFetch(\"WorkforceLabResultsReporting/SetAccountLabResultsReporting\", requestBody)\r\n}\r\n","import React from \"react\"\r\nimport { Button, Modal, Table, Spinner, Col, Form, Row, OverlayTrigger, Popover } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { connect } from \"react-redux\"\r\nimport { concat, of, Subject, Subscription, forkJoin } from \"rxjs\"\r\nimport { catchError, map, switchMap } from \"rxjs/operators\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { Home } from \"../../config/Routes\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { AppState, WorkforceClinicPortal } from \"../../AppState\"\r\nimport { isPortalAdmin, isSiteAdmin } from \"../../authentication/isAdminRole\"\r\nimport { GetSelectedPortal, getUserNameForSelectedCompany } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport { Typeahead } from \"react-bootstrap-typeahead\"\r\nimport { FaAngleDown, FaInfoCircle } from \"react-icons/fa\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\nimport ImplementationLabResultsReporting from \"../../api/Implementations/Model/ImplementationLabResultsReporting\"\r\nimport AccountLabResultsReporting from \"../../api/Companies/CompanyModel/AccountLabResultsReporting\"\r\nimport ImplementationLabResultsReportingGet, { ImplementationLabResultReportingGet, SetImplementationLabResultsReporting } from \"../../api/Implementations/ImplementationLabResultsReporting\"\r\nimport AccountLabResultsReportingGet, { SetAccountLabResultsReporting } from \"../../api/Companies/AccountLabResultsReporting\"\r\n\r\ninterface LabResultsReportingModalAuthProps {\r\n isPortalAdmin?: boolean\r\n isSiteAdmin?: boolean\r\n UserName?: string\r\n Portal?: WorkforceClinicPortal\r\n}\r\n\r\ninterface LabResultsReportingModalProps { }\r\n\r\ninterface LabResultsReportingModalState {\r\n saving: boolean\r\n loading: boolean\r\n portals: ImplementationLabResultsReporting[]\r\n companies: AccountLabResultsReporting[]\r\n selectedPortal?: ImplementationLabResultsReporting\r\n selectedCompany?: AccountLabResultsReporting\r\n MRONonDOTNeg: boolean\r\n MRONonDOTPos: boolean\r\n POCTRequireLab: boolean\r\n POCTRequireMRO: boolean\r\n}\r\n\r\n\r\n\r\nexport class LabResultsReportingModal extends React.PureComponent {\r\n emptyState: LabResultsReportingModalState = {\r\n loading: false,\r\n saving: false,\r\n portals: [],\r\n companies: [],\r\n selectedPortal: undefined,\r\n selectedCompany: undefined,\r\n MRONonDOTNeg: false,\r\n MRONonDOTPos: false,\r\n POCTRequireLab: false,\r\n POCTRequireMRO: false\r\n }\r\n state: LabResultsReportingModalState = { ...this.emptyState }\r\n\r\n portalTypeahead = React.createRef>()\r\n companyTypeahead = React.createRef>()\r\n loadPortalsSubscription?: Subscription\r\n loadPortalSubscription?: Subscription\r\n loadCompaniesSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n componentWillMount() {\r\n this.setState({ loading: true, selectedPortal: undefined, portals: [], selectedCompany: undefined, companies: [] })\r\n if (this.props.isSiteAdmin) {\r\n this.loadPortalsSubscription = ImplementationLabResultsReportingGet().subscribe(\r\n data => {\r\n this.setState({ portals: data, loading: false })\r\n },\r\n error => this.handleAPIError(error, { loading: false })\r\n )\r\n }\r\n if (this.props.isPortalAdmin) {\r\n this.loadPortalSubscription = ImplementationLabResultReportingGet(this.props.Portal?.ImplementationID || 0).subscribe(\r\n data => {\r\n const implementationId = data?.ImplementationID || 0\r\n if (implementationId > 0) {\r\n this.setState({\r\n selectedPortal: data,\r\n MRONonDOTNeg: data.MRONonDOTNeg,\r\n MRONonDOTPos: data.MRONonDOTPos,\r\n POCTRequireLab: data.POCTRequireLab,\r\n POCTRequireMRO: data.POCTRequireMRO,\r\n })\r\n this.loadCompaniesData(implementationId)\r\n }\r\n else {\r\n this.setState({ selectedPortal: data, loading: false })\r\n }\r\n },\r\n error => this.handleAPIError(error, { loading: false })\r\n )\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadPortalsSubscription && this.loadPortalsSubscription.unsubscribe()\r\n this.loadPortalSubscription && this.loadPortalSubscription.unsubscribe()\r\n this.loadCompaniesSubscription && this.loadCompaniesSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n loadCompaniesData = (implementationId: number) => {\r\n this.loadCompaniesSubscription && this.loadCompaniesSubscription.unsubscribe()\r\n this.loadCompaniesSubscription = AccountLabResultsReportingGet(implementationId).subscribe(\r\n companies => this.setState({ companies: companies, loading: false }),\r\n error => this.handleAPIError(error, { loading: false })\r\n )\r\n }\r\n\r\n handleCancel = () => {\r\n (this.props as RouteComponentProps).history?.push(Home)\r\n }\r\n\r\n handleSave = () => {\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n const { isSiteAdmin, isPortalAdmin } = this.props\r\n if (!isSiteAdmin && !isPortalAdmin) {\r\n return\r\n }\r\n const { saving, loading, selectedPortal, selectedCompany } = this.state\r\n if (saving || loading) {\r\n return\r\n }\r\n if (!selectedPortal) {\r\n return\r\n }\r\n if (isSiteAdmin || (isPortalAdmin && !selectedCompany)) {\r\n this.setState({ saving: true })\r\n const saveObj = {\r\n ImplementationID: selectedPortal.ImplementationID,\r\n ImplementationName: selectedPortal.ImplementationName,\r\n MRONonDOTNeg: this.state.MRONonDOTNeg,\r\n MRONonDOTPos: this.state.MRONonDOTPos,\r\n POCTRequireLab: this.state.POCTRequireLab,\r\n POCTRequireMRO: this.state.POCTRequireMRO,\r\n UpdateUserLoginID: selectedPortal.UpdateUserLoginID,\r\n UpdateMethodID: selectedPortal.UpdateMethodID\r\n }\r\n this.saveSubscription = SetImplementationLabResultsReporting(saveObj).subscribe(\r\n (data) => {\r\n selectedPortal.MRONonDOTNeg = saveObj.MRONonDOTNeg\r\n selectedPortal.MRONonDOTPos = saveObj.MRONonDOTPos\r\n selectedPortal.POCTRequireLab = saveObj.POCTRequireLab\r\n selectedPortal.POCTRequireMRO = saveObj.POCTRequireMRO\r\n this.setState({ saving: false, selectedPortal: selectedPortal })\r\n toast.success(data)\r\n if (isPortalAdmin) this.loadCompaniesData(selectedPortal.ImplementationID)\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n return\r\n }\r\n if (isPortalAdmin && selectedCompany) {\r\n this.setState({ saving: true })\r\n const saveObj = {\r\n AccountID: selectedCompany.AccountID,\r\n ImplementationID: selectedCompany.ImplementationID,\r\n Code: selectedCompany.Code || \"\",\r\n Name: selectedCompany.Name,\r\n MRONonDOTNeg: this.state.MRONonDOTNeg,\r\n MRONonDOTPos: this.state.MRONonDOTPos,\r\n POCTRequireLab: this.state.POCTRequireLab,\r\n POCTRequireMRO: this.state.POCTRequireMRO,\r\n UpdateUserLoginID: selectedCompany.UpdateUserLoginID,\r\n UpdateMethodID: selectedCompany.UpdateMethodID\r\n }\r\n this.saveSubscription = SetAccountLabResultsReporting(saveObj).subscribe(\r\n (data) => {\r\n selectedCompany.MRONonDOTNeg = saveObj.MRONonDOTNeg\r\n selectedCompany.MRONonDOTPos = saveObj.MRONonDOTPos\r\n selectedCompany.POCTRequireLab = saveObj.POCTRequireLab\r\n selectedCompany.POCTRequireMRO = saveObj.POCTRequireMRO\r\n this.setState({ saving: false, selectedCompany: selectedCompany })\r\n toast.success(data)\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n return\r\n }\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error(FormatError(error))\r\n }\r\n\r\n handlePortalChange = (selected: ImplementationLabResultsReporting[]) => {\r\n const selectedPortal = selected[0]\r\n const mroNonDOTNeg = selectedPortal?.MRONonDOTNeg || false\r\n const mroNonDOTPos = selectedPortal?.MRONonDOTPos || false\r\n const poctRequireLab = selectedPortal?.POCTRequireLab || false\r\n const poctRequireMRO = selectedPortal?.POCTRequireMRO || false\r\n this.setState({\r\n selectedPortal: selectedPortal,\r\n selectedCompany: undefined,\r\n companies: [],\r\n MRONonDOTNeg: mroNonDOTNeg,\r\n MRONonDOTPos: mroNonDOTPos,\r\n POCTRequireLab: poctRequireLab,\r\n POCTRequireMRO: poctRequireMRO\r\n })\r\n }\r\n\r\n handleEmptyPortal = (company: string) => {\r\n }\r\n\r\n handleCompanyChange = (selected: AccountLabResultsReporting[]) => {\r\n const selectedPortal = this.state.selectedPortal\r\n const selectedCompany = selected[0]\r\n const mroNonDOTNeg = selectedCompany?.MRONonDOTNeg || selectedPortal?.MRONonDOTNeg || false\r\n const mroNonDOTPos = selectedCompany?.MRONonDOTPos || selectedPortal?.MRONonDOTPos || false\r\n const poctRequireLab = selectedCompany?.POCTRequireLab || selectedPortal?.POCTRequireLab || false\r\n const poctRequireMRO = selectedCompany?.POCTRequireMRO || selectedPortal?.POCTRequireMRO || false\r\n this.setState({\r\n selectedCompany: selectedCompany,\r\n MRONonDOTNeg: mroNonDOTNeg,\r\n MRONonDOTPos: mroNonDOTPos,\r\n POCTRequireLab: poctRequireLab,\r\n POCTRequireMRO: poctRequireMRO\r\n })\r\n }\r\n\r\n handleEmptyCompany = (company: string) => {\r\n }\r\n\r\n\r\n toggleMRONONDOTNeg = (event: React.ChangeEvent) => {\r\n const target = event.target\r\n this.setState({ MRONonDOTNeg: target.checked })\r\n }\r\n\r\n toggleMRONONDOTPos = (event: React.ChangeEvent) => {\r\n const target = event.target\r\n this.setState({ MRONonDOTPos: target.checked })\r\n }\r\n\r\n togglePOCTReqLabConf = (event: React.ChangeEvent) => {\r\n const target = event.target\r\n this.setState({ POCTRequireLab: target.checked })\r\n }\r\n\r\n togglePOCTReqMRO = (event: React.ChangeEvent) => {\r\n const target = event.target\r\n this.setState({ POCTRequireMRO: target.checked })\r\n }\r\n\r\n render() {\r\n const { saving, loading, selectedPortal, portals, selectedCompany, companies } = this.state\r\n const { isSiteAdmin, isPortalAdmin } = this.props\r\n const mroNonDOTNeg = this.state.MRONonDOTNeg\r\n const mroNonDOTPos = this.state.MRONonDOTPos\r\n const poctRequireLab = this.state.POCTRequireLab\r\n const poctRequireMRO = this.state.POCTRequireMRO\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n Lab Results Reporting\r\n \r\n \r\n {isSiteAdmin &&\r\n \r\n \r\n props.selected.length > 0 || option.ImplementationName.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n isLoading={loading}\r\n onChange={this.handlePortalChange}\r\n onInputChange={text => this.handleEmptyPortal(text)}\r\n disabled={loading}\r\n options={portals || []}\r\n selected={selectedPortal ? [selectedPortal || \"\"] : []}\r\n placeholder=\"Select Portal\"\r\n emptyLabel=\"No Portals Found\">\r\n {!loading && }\r\n \r\n \r\n \r\n }\r\n {(isPortalAdmin && selectedPortal) &&\r\n \r\n \r\n props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n isLoading={loading}\r\n onChange={this.handleCompanyChange}\r\n onInputChange={text => this.handleEmptyCompany(text)}\r\n disabled={loading}\r\n options={companies || []}\r\n selected={selectedCompany ? [selectedCompany || \"\"] : []}\r\n placeholder=\"Select Company\"\r\n emptyLabel=\"No Companies Found\">\r\n {!loading && }\r\n \r\n \r\n \r\n }\r\n \r\n \r\n {this.state.loading &&\r\n \r\n \r\n \r\n }\r\n {(!this.state.loading && selectedPortal) &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n
For non-federal lab-based testing:
Require MRO for negative tests) => this.toggleMRONONDOTNeg(e)} className=\"mr-auto\" />
Require MRO for non-negative tests) => this.toggleMRONONDOTPos(e)} className=\"mr-auto\" />
For POCT or 'instant' testing:
Require laboratory confirmation for non-negative screens) => this.togglePOCTReqLabConf(e)} className=\"mr-auto\" />
Require MRO for laboratory non-negative confirmations) => this.togglePOCTReqMRO(e)} className=\"mr-auto\" />
\r\n
\r\n
\r\n \r\n this.handleSave()} disabled={loading || saving} spin={saving} disableOnSpin>Update\r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): LabResultsReportingModalAuthProps {\r\n return {\r\n isPortalAdmin: isPortalAdmin(state),\r\n isSiteAdmin: isSiteAdmin(state),\r\n UserName: getUserNameForSelectedCompany(state),\r\n Portal: GetSelectedPortal(state)\r\n }\r\n}\r\nconst ConnectedLabResultsReportingModal = connect(mapStateToProps, null)(LabResultsReportingModal)\r\nexport default ConnectedLabResultsReportingModal","export enum InvitationType {\r\n Unknown,\r\n Portal,\r\n Company,\r\n Location,\r\n User,\r\n ConfigurePassword\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport CheckOneTimePIN from \"./Model/CheckOneTimePIN\"\r\n\r\nexport default function GetOneTimePIN(params: CheckOneTimePIN) {\r\n const requestBody = JSON.stringify(params)\r\n return ObservableFromFetch(\"FFOrderClinicStatus/SendOTP\", requestBody)\r\n}\r\n","export enum ScoreStatus {\r\n exceed = \"exceed\",\r\n pass = \"pass\",\r\n warn = \"warn\",\r\n fail = \"fail\"\r\n}\r\n\r\nexport interface PasswordScore {\r\n calculatedScore: number\r\n numOfMidChar: number\r\n noOfSymBonus: number\r\n lcImgStatus: ScoreStatus\r\n ucImgStatus: ScoreStatus\r\n numImgStatus: ScoreStatus\r\n symImgStatus: ScoreStatus\r\n midImgStatus: ScoreStatus\r\n reqImgStatus: ScoreStatus\r\n pwdLenImgStatus: ScoreStatus\r\n pwdLength: number\r\n noOfLC: number\r\n noOfUC: number\r\n noOfNum: number\r\n noOfSym: number\r\n numOfRequirements: number\r\n noOfCharBonus: number\r\n noOfLCBonus: number\r\n noOfUCBonus: number\r\n noOfNumBonus: number\r\n noOfMidBonus: number\r\n noOfRequirementsBonus: number\r\n noOfAlphasOnly: number\r\n noOfNumbersOnly: number\r\n noOfRepChar: number\r\n noOfConsecAlphaUC: number\r\n noOfConsecAlphaLC: number\r\n noOfConsecNumber: number\r\n noOfSeqAlpha: number\r\n noOfSeqNumber: number\r\n noOfSeqSymbol: number\r\n alphasOnlyImgStatus: ScoreStatus\r\n numbersOnlyImgStatus: ScoreStatus\r\n repCharImgStatus: ScoreStatus\r\n consecAlphaUCImgStatus: ScoreStatus\r\n consecAlphaLCImgStatus: ScoreStatus\r\n consecNumberImgStatus: ScoreStatus\r\n seqAlphaImgStatus: ScoreStatus\r\n seqNumberImgStatus: ScoreStatus\r\n seqSymbolImgStatus: ScoreStatus\r\n noOfAlphasOnlyBonus: number\r\n noOfNumbersOnlyBonus: number\r\n noOfRepCharBonus: number\r\n noOfConsecAlphaUCBonus: number\r\n noOfConsecAlphaLCBonus: number\r\n noOfConsecNumberBonus: number\r\n noOfSeqAlphaBonus: number\r\n noOfSeqNumberBonus: number\r\n noOfSeqSymbolBonus: number\r\n nConsecSymbol: number\r\n nConsecCharType: number\r\n nSeqChar: number\r\n}\r\n\r\nexport default function CalculatePasswordScore(pwd: string): PasswordScore {\r\n const result: PasswordScore = {\r\n calculatedScore: 0,\r\n numOfMidChar: 0,\r\n noOfSymBonus: 0,\r\n lcImgStatus: ScoreStatus.fail,\r\n ucImgStatus: ScoreStatus.fail,\r\n numImgStatus: ScoreStatus.fail,\r\n symImgStatus: ScoreStatus.fail,\r\n midImgStatus: ScoreStatus.fail,\r\n reqImgStatus: ScoreStatus.fail,\r\n pwdLenImgStatus: ScoreStatus.fail,\r\n pwdLength: 0,\r\n noOfLC: 0,\r\n noOfUC: 0,\r\n noOfNum: 0,\r\n noOfSym: 0,\r\n numOfRequirements: 0,\r\n noOfCharBonus: 0,\r\n noOfLCBonus: 0,\r\n noOfUCBonus: 0,\r\n noOfNumBonus: 0,\r\n noOfMidBonus: 0,\r\n noOfRequirementsBonus: 0,\r\n noOfAlphasOnly: 0,\r\n noOfNumbersOnly: 0,\r\n noOfRepChar: 0,\r\n noOfConsecAlphaUC: 0,\r\n noOfConsecAlphaLC: 0,\r\n noOfConsecNumber: 0,\r\n noOfSeqAlpha: 0,\r\n noOfSeqNumber: 0,\r\n noOfSeqSymbol: 0,\r\n alphasOnlyImgStatus: ScoreStatus.pass,\r\n numbersOnlyImgStatus: ScoreStatus.pass,\r\n repCharImgStatus: ScoreStatus.pass,\r\n consecAlphaUCImgStatus: ScoreStatus.pass,\r\n consecAlphaLCImgStatus: ScoreStatus.pass,\r\n consecNumberImgStatus: ScoreStatus.pass,\r\n seqAlphaImgStatus: ScoreStatus.pass,\r\n seqNumberImgStatus: ScoreStatus.pass,\r\n seqSymbolImgStatus: ScoreStatus.pass,\r\n noOfAlphasOnlyBonus: 0,\r\n noOfNumbersOnlyBonus: 0,\r\n noOfRepCharBonus: 0,\r\n noOfConsecAlphaUCBonus: 0,\r\n noOfConsecAlphaLCBonus: 0,\r\n noOfConsecNumberBonus: 0,\r\n noOfSeqAlphaBonus: 0,\r\n noOfSeqNumberBonus: 0,\r\n noOfSeqSymbolBonus: 0,\r\n nConsecSymbol: 0,\r\n nConsecCharType: 0,\r\n nSeqChar: 0\r\n }\r\n const reverse = (str: string): string => str.split(\"\").reverse().join(\"\")\r\n let nScore: number = 0, nAlphaUC: number = 0, nAlphaLC: number = 0, nNumber: number = 0, nSymbol: number = 0,\r\n nMidChar: number = 0, nRequirements: number = 0, nAlphasOnly: number = 0, nNumbersOnly: number = 0, nUnqChar: number = 0,\r\n nRepChar: number = 0, nRepInc: number = 0, nConsecAlphaUC: number = 0, nConsecAlphaLC: number = 0, nConsecNumber: number = 0,\r\n nConsecSymbol: number = 0, nConsecCharType: number = 0, nSeqAlpha: number = 0, nSeqNumber: number = 0, nSeqSymbol: number = 0,\r\n nSeqChar: number = 0, nReqChar: number = 0\r\n let nMultMidChar: number = 2, nMultConsecAlphaUC: number = 2, nMultConsecAlphaLC: number = 2,\r\n nMultConsecNumber: number = 2\r\n let nMultSeqAlpha: number = 3, nMultSeqNumber: number = 3, nMultSeqSymbol: number = 3\r\n let nMultLength: number = 4, nMultNumber: number = 4\r\n let nMultSymbol: number = 6\r\n let nTmpAlphaUC: string = \"\", nTmpAlphaLC: string = \"\", nTmpNumber: string = \"\",\r\n nTmpSymbol: string = \"\"\r\n let sAlphaUC: string = \"0\", sAlphaLC: string = \"0\", sNumber: string = \"0\",\r\n sSymbol: string = \"0\", sMidChar: string = \"0\", sRequirements: string = \"0\",\r\n sAlphasOnly: string = \"0\", sNumbersOnly: string = \"0\", sRepChar: string = \"0\",\r\n sConsecAlphaUC: string = \"0\", sConsecAlphaLC: string = \"0\",\r\n sConsecNumber: string = \"0\", sSeqAlpha: string = \"0\",\r\n sSeqNumber: string = \"0\", sSeqSymbol: string = \"0\"\r\n let sAlphas: string = \"abcdefghijklmnopqrstuvwxyz\"\r\n let sNumerics: string = \"01234567890\"\r\n let sSymbols: string = \")!@#$%^&*()\"\r\n let nMinPwdLen = 8\r\n if (pwd) {\r\n nScore = parseInt(String(pwd.length * nMultLength), 10)\r\n result.pwdLength = pwd.length\r\n let arrPwd = pwd.replace(/\\s+/g, \"\").split(/\\s*/)\r\n let arrPwdLen = arrPwd.length\r\n\r\n /* Loop through password to check for Symbol, Numeric, Lowercase and Uppercase\r\n pattern matches\r\n */\r\n for (let charValue = 0; charValue < arrPwdLen; charValue++) {\r\n if (arrPwd[charValue].match(/[A-Z]/g)) {\r\n if (nTmpAlphaUC !== \"\") {\r\n if ((parseInt(nTmpAlphaUC) + 1) === charValue) {\r\n nConsecAlphaUC++\r\n nConsecCharType++\r\n }\r\n }\r\n nTmpAlphaUC = String(charValue)\r\n nAlphaUC++\r\n }\r\n else if (arrPwd[charValue].match(/[a-z]/g)) {\r\n if (nTmpAlphaLC !== \"\") {\r\n if ((parseInt(nTmpAlphaLC) + 1) === charValue) {\r\n nConsecAlphaLC++\r\n nConsecCharType++\r\n }\r\n }\r\n nTmpAlphaLC = String(charValue)\r\n nAlphaLC++\r\n }\r\n else if (arrPwd[charValue].match(/[0-9]/g)) {\r\n if (charValue > 0 && charValue < (arrPwdLen - 1)) {\r\n nMidChar++\r\n }\r\n if (nTmpNumber !== \"\") {\r\n if ((parseInt(nTmpNumber) + 1) === charValue) {\r\n nConsecNumber++\r\n nConsecCharType++\r\n }\r\n }\r\n nTmpNumber = String(charValue)\r\n nNumber++\r\n }\r\n else if (arrPwd[charValue].match(/[^a-zA-Z0-9_]/g)) {\r\n if (charValue > 0 && charValue < (arrPwdLen - 1)) {\r\n nMidChar++\r\n }\r\n if (nTmpSymbol !== \"\") {\r\n if ((parseInt(nTmpSymbol) + 1) === charValue) {\r\n nConsecSymbol++\r\n nConsecCharType++\r\n }\r\n }\r\n nTmpSymbol = String(charValue)\r\n nSymbol++\r\n }\r\n /* Internal loop through password to check for repeat characters */\r\n let bCharExists = false\r\n for (let repeatedChar = 0; repeatedChar < arrPwdLen; repeatedChar++) {\r\n if (arrPwd[charValue] === arrPwd[repeatedChar] && charValue !== repeatedChar) { /* repeat character exists */\r\n bCharExists = true\r\n /*\r\n Calculate increment deduction based on proximity to identical characters\r\n Deduction is incremented each time a new match is discovered\r\n Deduction amount is based on total password length divided by the\r\n difference of distance between currently selected match\r\n */\r\n nRepInc += Math.abs(arrPwdLen / (repeatedChar - charValue))\r\n }\r\n }\r\n if (bCharExists) {\r\n nRepChar++\r\n nUnqChar = arrPwdLen - nRepChar\r\n nRepInc = (nUnqChar) ? Math.ceil(nRepInc / nUnqChar) : Math.ceil(nRepInc)\r\n }\r\n }\r\n /* Check for sequential alpha string patterns (forward and reverse) */\r\n for (let sequentialAlpha = 0; sequentialAlpha < 23; sequentialAlpha++) {\r\n let sFwd = sAlphas.substring(sequentialAlpha, parseInt(String(sequentialAlpha + 3), 10))\r\n let sRev = reverse(sFwd)\r\n if (pwd.toLowerCase().indexOf(sFwd) !== -1 ||\r\n pwd.toLowerCase().indexOf(sRev) !== -1) {\r\n nSeqAlpha++\r\n nSeqChar++\r\n }\r\n }\r\n\r\n /* Check for sequential numeric string patterns (forward and reverse) */\r\n for (let sequentialNumeric = 0; sequentialNumeric < 8; sequentialNumeric++) {\r\n let sFwd = sNumerics.substring(sequentialNumeric, parseInt(String(sequentialNumeric + 3), 10))\r\n let sRev = reverse(sFwd)\r\n if (pwd.toLowerCase().indexOf(sFwd) !== -1 ||\r\n pwd.toLowerCase().indexOf(sRev) !== -1) {\r\n nSeqNumber++\r\n nSeqChar++\r\n }\r\n }\r\n\r\n /* Check for sequential symbol string patterns (forward and reverse) */\r\n for (let sequentialSymbol = 0; sequentialSymbol < 8; sequentialSymbol++) {\r\n let sFwd = sSymbols.substring(sequentialSymbol, parseInt(String(sequentialSymbol + 3), 10))\r\n let sRev = reverse(sFwd)\r\n if (pwd.toLowerCase().indexOf(sFwd) !== -1 ||\r\n pwd.toLowerCase().indexOf(sRev) !== -1) {\r\n nSeqSymbol++\r\n nSeqChar++\r\n }\r\n }\r\n\r\n /* Modify overall score value based on usage vs requirements */\r\n\r\n /* General point assignment */\r\n result.noOfCharBonus = nScore\r\n if (nAlphaUC > 0 && nAlphaUC < result.pwdLength) {\r\n nScore = parseInt(String(nScore + ((result.pwdLength - nAlphaUC) * 2)), 10)\r\n sAlphaUC = String((result.pwdLength - nAlphaUC) * 2)\r\n }\r\n if (nAlphaLC > 0 && nAlphaLC < result.pwdLength) {\r\n nScore = parseInt(String(nScore + ((result.pwdLength - nAlphaLC) * 2)), 10)\r\n sAlphaLC = String((result.pwdLength - nAlphaLC) * 2)\r\n }\r\n if (nNumber > 0 && nNumber < result.pwdLength) {\r\n nScore = parseInt(String(nScore + (nNumber * nMultNumber)), 10)\r\n sNumber = String(nNumber * nMultNumber)\r\n }\r\n if (nSymbol > 0) {\r\n nScore = parseInt(String(nScore + (nSymbol * nMultSymbol)), 10)\r\n sSymbol = String(nSymbol * nMultSymbol)\r\n }\r\n if (nMidChar > 0) {\r\n nScore = parseInt(String(nScore + (nMidChar * nMultMidChar)), 10)\r\n sMidChar = String(nMidChar * nMultMidChar)\r\n }\r\n\r\n result.noOfUCBonus = parseInt(sAlphaUC)\r\n result.noOfLCBonus = parseInt(sAlphaLC)\r\n result.noOfNumBonus = parseInt(sNumber)\r\n result.noOfSymBonus = parseInt(sSymbol)\r\n result.noOfMidBonus = parseInt(sMidChar)\r\n\r\n /* Point deductions for poor practices */\r\n if ((nAlphaLC > 0 || nAlphaUC > 0) && nSymbol === 0 && nNumber === 0) { // Only Letters\r\n nScore = parseInt(String(nScore - result.pwdLength), 10)\r\n nAlphasOnly = result.pwdLength\r\n sAlphasOnly = String(result.pwdLength)\r\n }\r\n if (nAlphaLC === 0 && nAlphaUC === 0 && nSymbol === 0 && nNumber > 0) { // Only Numbers\r\n nScore = parseInt(String(nScore - result.pwdLength), 10)\r\n nNumbersOnly = result.pwdLength\r\n sNumbersOnly = String(result.pwdLength)\r\n }\r\n if (nRepChar > 0) { // Same character exists more than once\r\n nScore = parseInt(String(nScore - nRepInc), 10)\r\n sRepChar = String(nRepInc)\r\n }\r\n if (nConsecAlphaUC > 0) { // Consecutive Uppercase Letters exist\r\n nScore = parseInt(String(nScore - (nConsecAlphaUC * nMultConsecAlphaUC)), 10)\r\n sConsecAlphaUC = String(nConsecAlphaUC * nMultConsecAlphaUC)\r\n }\r\n if (nConsecAlphaLC > 0) { // Consecutive Lowercase Letters exist\r\n nScore = parseInt(String(nScore - (nConsecAlphaLC * nMultConsecAlphaLC)), 10)\r\n sConsecAlphaLC = String(nConsecAlphaLC * nMultConsecAlphaLC)\r\n }\r\n if (nConsecNumber > 0) { // Consecutive Numbers exist\r\n nScore = parseInt(String(nScore - (nConsecNumber * nMultConsecNumber)), 10)\r\n sConsecNumber = String(nConsecNumber * nMultConsecNumber)\r\n }\r\n if (nSeqAlpha > 0) { // Sequential alpha strings exist (3 characters or more)\r\n nScore = parseInt(String(nScore - (nSeqAlpha * nMultSeqAlpha)), 10)\r\n sSeqAlpha = String(nSeqAlpha * nMultSeqAlpha)\r\n }\r\n if (nSeqNumber > 0) { // Sequential numeric strings exist (3 characters or more)\r\n nScore = parseInt(String(nScore - (nSeqNumber * nMultSeqNumber)), 10)\r\n sSeqNumber = String(nSeqNumber * nMultSeqNumber)\r\n }\r\n if (nSeqSymbol > 0) { // Sequential symbol strings exist (3 characters or more)\r\n nScore = parseInt(String(nScore - (nSeqSymbol * nMultSeqSymbol)), 10)\r\n sSeqSymbol = String(nSeqSymbol * nMultSeqSymbol)\r\n }\r\n result.noOfAlphasOnlyBonus = parseInt(sAlphasOnly)\r\n result.noOfNumbersOnlyBonus = parseInt(sNumbersOnly)\r\n result.noOfRepCharBonus = parseInt(sRepChar)\r\n result.noOfConsecAlphaUCBonus = parseInt(sConsecAlphaUC)\r\n result.noOfConsecAlphaLCBonus = parseInt(sConsecAlphaLC)\r\n result.noOfConsecNumberBonus = parseInt(sConsecNumber)\r\n result.noOfSeqAlphaBonus = parseInt(sSeqAlpha)\r\n result.noOfSeqNumberBonus = parseInt(sSeqNumber)\r\n result.noOfSeqSymbolBonus = parseInt(sSeqSymbol)\r\n\r\n\r\n /* Determine if mandatory requirements have been met and set image indicators\r\n accordingly */\r\n result.noOfUC = nAlphaUC\r\n result.noOfLC = nAlphaLC\r\n result.noOfNum = nNumber\r\n result.noOfSym = nSymbol\r\n\r\n if (result.pwdLength === 8) {\r\n result.pwdLenImgStatus = ScoreStatus.pass\r\n nReqChar++\r\n }\r\n else if (result.pwdLength > 8) {\r\n result.pwdLenImgStatus = ScoreStatus.exceed\r\n nReqChar++\r\n }\r\n else {\r\n result.pwdLenImgStatus = ScoreStatus.fail\r\n }\r\n\r\n if (result.noOfUC === 1) {\r\n result.ucImgStatus = ScoreStatus.pass\r\n nReqChar++\r\n }\r\n else if (result.noOfUC > 1) {\r\n result.ucImgStatus = ScoreStatus.exceed\r\n nReqChar++\r\n }\r\n else {\r\n result.ucImgStatus = ScoreStatus.fail\r\n }\r\n\r\n if (result.noOfLC === 1) {\r\n result.lcImgStatus = ScoreStatus.pass\r\n nReqChar++\r\n }\r\n else if (result.noOfLC > 1) {\r\n result.lcImgStatus = ScoreStatus.exceed\r\n nReqChar++\r\n }\r\n else {\r\n result.lcImgStatus = ScoreStatus.fail\r\n }\r\n\r\n if (result.noOfNum === 1) {\r\n result.numImgStatus = ScoreStatus.pass\r\n nReqChar++\r\n }\r\n else if (result.noOfNum > 1) {\r\n result.numImgStatus = ScoreStatus.exceed\r\n nReqChar++\r\n }\r\n else {\r\n result.numImgStatus = ScoreStatus.fail\r\n }\r\n\r\n if (result.noOfSym === 1) {\r\n result.symImgStatus = ScoreStatus.pass\r\n nReqChar++\r\n }\r\n else if (result.noOfSym > 1) {\r\n result.symImgStatus = ScoreStatus.exceed\r\n nReqChar++\r\n }\r\n else {\r\n result.symImgStatus = ScoreStatus.fail\r\n }\r\n\r\n nRequirements = nReqChar\r\n let nMinReqChars = 0\r\n if (pwd.length >= nMinPwdLen) {\r\n nMinReqChars = 3\r\n } else {\r\n nMinReqChars = 4\r\n }\r\n if (nRequirements > nMinReqChars) { // One or more required characters exist\r\n nScore = parseInt(String(nScore + (nRequirements * 2)), 10)\r\n sRequirements = String(nRequirements * 2)\r\n }\r\n result.noOfRequirementsBonus = parseInt(sRequirements)\r\n\r\n /* Determine if additional bonuses need to be applied and set image\r\n indicators accordingly */\r\n\r\n result.numOfMidChar = nMidChar\r\n result.numOfRequirements = nRequirements\r\n\r\n if (result.numOfMidChar === 1) {\r\n result.midImgStatus = ScoreStatus.pass\r\n }\r\n else if (result.numOfMidChar > 1) {\r\n result.midImgStatus = ScoreStatus.exceed\r\n }\r\n else {\r\n result.midImgStatus = ScoreStatus.fail\r\n }\r\n\r\n if (result.numOfRequirements === nMinReqChars + 1) {\r\n result.reqImgStatus = ScoreStatus.pass\r\n }\r\n else if (result.numOfRequirements > nMinReqChars + 1) {\r\n result.reqImgStatus = ScoreStatus.exceed\r\n }\r\n else {\r\n result.reqImgStatus = ScoreStatus.fail\r\n }\r\n\r\n /* Determine if suggested requirements have been met and set image indicators\r\n accordingly */\r\n result.noOfAlphasOnly = nAlphasOnly\r\n result.noOfNumbersOnly = nNumbersOnly\r\n result.noOfRepChar = nRepChar\r\n result.noOfConsecAlphaUC = nConsecAlphaUC\r\n result.noOfConsecAlphaLC = nConsecAlphaLC\r\n result.noOfConsecNumber = nConsecNumber\r\n result.noOfSeqAlpha = nSeqAlpha\r\n result.noOfSeqNumber = nSeqNumber\r\n result.noOfSeqSymbol = nSeqSymbol\r\n result.nConsecSymbol = nConsecSymbol\r\n result.nConsecCharType = nConsecCharType\r\n result.nSeqChar = nSeqChar\r\n\r\n if (result.noOfAlphasOnly > 0) {\r\n result.alphasOnlyImgStatus = ScoreStatus.warn\r\n }\r\n else {\r\n result.alphasOnlyImgStatus = ScoreStatus.pass\r\n }\r\n\r\n if (result.noOfNumbersOnly > 0) {\r\n result.numbersOnlyImgStatus = ScoreStatus.warn\r\n }\r\n else {\r\n result.numbersOnlyImgStatus = ScoreStatus.pass\r\n }\r\n\r\n if (result.noOfRepChar > 0) {\r\n result.repCharImgStatus = ScoreStatus.warn\r\n }\r\n else {\r\n result.repCharImgStatus = ScoreStatus.pass\r\n }\r\n\r\n if (result.noOfConsecAlphaUC > 0) {\r\n result.consecAlphaUCImgStatus = ScoreStatus.warn\r\n }\r\n else {\r\n result.consecAlphaUCImgStatus = ScoreStatus.pass\r\n }\r\n\r\n if (result.noOfConsecAlphaLC > 0) {\r\n result.consecAlphaLCImgStatus = ScoreStatus.warn\r\n }\r\n else {\r\n result.consecAlphaLCImgStatus = ScoreStatus.pass\r\n }\r\n\r\n if (result.noOfConsecNumber > 0) {\r\n result.consecNumberImgStatus = ScoreStatus.warn\r\n }\r\n else {\r\n result.consecNumberImgStatus = ScoreStatus.pass\r\n }\r\n\r\n if (result.noOfSeqAlpha > 0) {\r\n result.seqAlphaImgStatus = ScoreStatus.warn\r\n }\r\n else {\r\n result.seqAlphaImgStatus = ScoreStatus.pass\r\n }\r\n\r\n if (result.noOfSeqNumber > 0) {\r\n result.seqNumberImgStatus = ScoreStatus.warn\r\n }\r\n else {\r\n result.seqNumberImgStatus = ScoreStatus.pass\r\n }\r\n\r\n if (result.noOfSeqSymbol > 0) {\r\n result.seqSymbolImgStatus = ScoreStatus.warn\r\n }\r\n else {\r\n result.seqSymbolImgStatus = ScoreStatus.pass\r\n }\r\n result.calculatedScore = nScore\r\n }\r\n\r\n return result\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Form, Col, Row, Button } from \"react-bootstrap\"\r\nimport ReCAPTCHA from \"react-google-recaptcha\"\r\nimport { toast } from \"react-toastify\"\r\nimport { GetInvitationAttempts } from \"../../api/Invitation/GetInvitationStatus\"\r\nimport GetOneTimePIN from \"../../api/Invitation/GetOneTimePIN\"\r\nimport CheckOneTimePIN from \"../../api/Invitation/Model/CheckOneTimePIN\"\r\nimport ValidatePINModel from \"../../api/Invitation/Model/ValidatePINModel\"\r\nimport ValidateOneTimePIN from \"../../api/Invitation/ValidateOneTimePIN\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { ReCaptchaSiteKey } from \"../../config/Constants\"\r\nimport ActionButton from \"../ActionButton\"\r\n\r\ninterface ValidatePINProps {\r\n currentURL: string\r\n outboxAN: number\r\n onSuccess: (pin: string) => void\r\n onBack?: () => void\r\n}\r\n\r\ninterface ValidatePINState {\r\n pinValid?: boolean\r\n showValidatePIN: boolean\r\n didNotReceivePIN: boolean\r\n pinDidNotMatch: boolean\r\n requestNewPIN: boolean\r\n validCaptcha?: boolean\r\n showTooManyAttempts: boolean\r\n loading: boolean\r\n outboxAN: number\r\n}\r\n\r\nexport default class ValidatePIN extends React.PureComponent {\r\n currentPin: string = \"\"\r\n state = { showValidatePIN: true, didNotReceivePIN: false, pinDidNotMatch: false, requestNewPIN: false, validCaptcha: false, showTooManyAttempts: false, loading: false, outboxAN: this.props.outboxAN }\r\n\r\n validatePIN(e: React.KeyboardEvent) {\r\n const enteredPIN = (e.target as HTMLInputElement).value\r\n if (enteredPIN.length === 6) {\r\n this.currentPin = enteredPIN\r\n this.setState({ loading: true })\r\n const data: ValidatePINModel = {\r\n Link: this.props.currentURL,\r\n OneTimePin: this.currentPin,\r\n OutboxAN: this.state.outboxAN\r\n }\r\n ValidateOneTimePIN(data).subscribe(\r\n data => {\r\n this.setState({ loading: false })\r\n this.validateOneTimePinSuccess(data)\r\n },\r\n error => {\r\n GetInvitationAttempts(this.props.currentURL).subscribe(\r\n data => {\r\n if (data > 4) this.setState({ loading: false, showValidatePIN: false, showTooManyAttempts: true })\r\n else this.setState({ loading: false, showValidatePIN: false, pinDidNotMatch: true })\r\n },\r\n error => {\r\n this.handleAPIError(error)\r\n this.setState({ loading: false })\r\n }\r\n )\r\n this.handleAPIError(error)\r\n }\r\n )\r\n }\r\n }\r\n\r\n // TODO: replace type\r\n validateOneTimePinSuccess(data: any) {\r\n // TODO: verify IsConfirmation logic\r\n // TODO: verify configure-password logic\r\n this.setState({ showValidatePIN: false })\r\n toast.success(data)\r\n this.props.onSuccess(this.currentPin)\r\n }\r\n\r\n goToLogin() {\r\n window.location.hash = \"#/\"\r\n }\r\n\r\n requestNewPIN(): void {\r\n const data: CheckOneTimePIN = { Link: this.props.currentURL, method: \"email\" }\r\n this.setState({ loading: true })\r\n GetOneTimePIN(data).subscribe(\r\n data => this.sendOneTimePINSuccess(data),\r\n error => {\r\n this.setState({ loading: false })\r\n this.handleAPIError(error)\r\n }\r\n )\r\n }\r\n\r\n sendOneTimePINSuccess(data: any) {\r\n this.setState({ showValidatePIN: true, didNotReceivePIN: false, pinDidNotMatch: false, requestNewPIN: false, validCaptcha: false, loading: false, outboxAN: data })\r\n toast.success(\"PIN sent successfully\")\r\n }\r\n\r\n handleAPIError = (error: Error | APIError) => {\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n render() {\r\n const { showValidatePIN, didNotReceivePIN, pinDidNotMatch, requestNewPIN, showTooManyAttempts, loading } = this.state\r\n return (\r\n <>\r\n { showValidatePIN && \r\n \r\n Enter your PIN\r\n \r\n \r\n

We are sending you a PIN. Please enter that PIN below:

\r\n \r\n \r\n
\r\n ) => this.validatePIN(e)} />\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {!!this.props.onBack && }\r\n \r\n \r\n \r\n
}\r\n { didNotReceivePIN && \r\n \r\n I Didn't Receive My PIN\r\n \r\n \r\n

Our Apologies!

\r\n

For security purposes, we need to deliver your PIN to the phone number created when you were invited.

\r\n

If you believe the phone number set for your invitation is incorrect, or you are unable to receive a PIN at that number, please contact your administrator for assistance.

\r\n
\r\n \r\n \r\n \r\n
}\r\n { pinDidNotMatch && \r\n \r\n PIN Did Not Match\r\n \r\n \r\n

The PIN you entered did not match. Please request a new PIN

\r\n \r\n \r\n this.setState({ validCaptcha: false })} onExpired={() => this.setState({ validCaptcha: false })} onChange={(value: string | null) => this.setState({ validCaptcha: value !== null })} hl=\"en\" />\r\n \r\n \r\n
\r\n \r\n this.requestNewPIN()} spin={loading} disableOnSpin>Request New PIN\r\n \r\n
}\r\n { requestNewPIN && \r\n \r\n Request New PIN\r\n \r\n \r\n

We're sorry you did not receive the PIN. Please request a new PIN below.

\r\n \r\n \r\n this.setState({ validCaptcha: false })} onExpired={() => this.setState({ validCaptcha: false })} onChange={(value: string | null) => this.setState({ validCaptcha: value !== null })} hl=\"en\" />\r\n \r\n \r\n
\r\n \r\n this.requestNewPIN()} spin={loading} disableOnSpin>Request New PIN\r\n \r\n
}\r\n { showTooManyAttempts && \r\n \r\n Exceeded PIN attempts\r\n \r\n \r\n

Our Apologies!

\r\n

For security purposes, we limit the number of times an invitation may be accepted.

\r\n

In order to continue, your administrator will need to re-invite you. We have flagged your invitation to your administrator's attention.

\r\n

To expedite this process, please contact your administrator for assistance.

\r\n
\r\n \r\n \r\n \r\n
}\r\n \r\n )\r\n }\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport ValidatePINModel from \"./Model/ValidatePINModel\"\r\n\r\nexport default function ValidateOneTimePIN(params: ValidatePINModel) {\r\n const requestBody = JSON.stringify(params)\r\n return ObservableFromFetch(\"FFOrderClinicStatus/ValidateOneTimePin\", requestBody)\r\n}\r\n","import InvitationStatusGridRecord from \"../InvitationStatus/Model/InvitationStatusGridRecord\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function GetInvitationStatus(url: string) {\r\n const requestBody = JSON.stringify({ URL: url })\r\n return ObservableFromFetch(\"FFOrderClinicStatus/GetInvitationStatus\", requestBody)\r\n}\r\n\r\nexport function GetInvitationAttempts(url: string) {\r\n const requestBody: string = new URLSearchParams({\r\n url: url\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderClinicStatus/GetInvitationAttempts?\" + requestBody)\r\n}","import React from \"react\"\r\nimport { Modal, Form, Col, Row, Button } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { InvitationStatus } from \"../../api/Invitation/Model/InvitationStatus\"\r\n\r\nimport ValidatePIN from \"./ValidatePIN\"\r\nimport GetOneTimePIN from \"../../api/Invitation/GetOneTimePIN\"\r\n\r\nimport InvitationStatusGridRecord from \"../../api/InvitationStatus/Model/InvitationStatusGridRecord\"\r\n\r\ninterface ValidateIdentityProps {\r\n currentURL: string\r\n data: InvitationStatusGridRecord\r\n status: InvitationStatus\r\n userPhoneNumber?: string\r\n userEmail?: string\r\n onSuccess: (pin: string, outboxAN: number) => void\r\n}\r\n\r\ninterface ValidateIdentityState {\r\n\r\n showContactForm: boolean\r\n showSendPin: boolean\r\n showValidatePIN: boolean\r\n showLinkExpired: boolean\r\n showTooManyAttempts: boolean\r\n method: string\r\n}\r\n\r\nconst InvitationPage = (props: { title: string, children?: JSX.Element | JSX.Element[] }) => \r\n \r\n {props.title}\r\n \r\n { props.children }\r\n\r\n\r\nexport default class ValidateIdentity extends React.PureComponent {\r\n userMobileNumber: string = this.props.userPhoneNumber || \"\"\r\n currentOutboxAN: number = this.props.data.OutboxAN\r\n\r\n state: ValidateIdentityState = {\r\n showContactForm: [\r\n InvitationStatus.PENDING,\r\n InvitationStatus.STARTED,\r\n InvitationStatus.INVITATION_IN_USE].includes(this.props.status),\r\n showSendPin: false,\r\n showValidatePIN: this.props.status === InvitationStatus.VALIDATE_PIN,\r\n showLinkExpired: this.props.status === InvitationStatus.EXPIRED,\r\n showTooManyAttempts: this.props.status === InvitationStatus.TOO_MANY_ATTEMPT,\r\n method: \"EMAIL\"\r\n }\r\n\r\n getOneTimePIN = () => {\r\n const data = {\r\n Link: this.props.currentURL,\r\n method: this.state.method\r\n }\r\n this.setState({showSendPin: false})\r\n GetOneTimePIN(data).subscribe(\r\n data => this.getOneTimePinSuccess(data),\r\n error => this.getOneTimePinError(error)\r\n )\r\n }\r\n\r\n getOneTimePinSuccess(data: number) {\r\n this.currentOutboxAN = data\r\n this.setState({ showContactForm: false, showValidatePIN: true })\r\n toast.success(\"PIN sent successfully\")\r\n }\r\n\r\n getOneTimePinError(message: string) {\r\n toast.error(message)\r\n }\r\n\r\n setMethod = (event: React.ChangeEvent) => {\r\n this.setState({ method: event.target.value })\r\n }\r\n\r\n render() {\r\n const userPhoneNumber = this.userMobileNumber\r\n const { showContactForm, showSendPin, showLinkExpired, showTooManyAttempts } = this.state\r\n const showByVoice = this.props.status !== InvitationStatus.INVITATION_IN_USE \r\n\r\n return (\r\n <>\r\n { showLinkExpired && }\r\n { showContactForm && \r\n \r\n

To proceed, we need to provide you with a PIN:

\r\n \r\n Your information:\r\n Phone:\r\n { userPhoneNumber?.substring(0,3) }-{ userPhoneNumber?.substring(3,6) }-{ userPhoneNumber?.substring(6,10) }\r\n \r\n \r\n \r\n eMail:\r\n { this.props.userEmail }\r\n \r\n

Please indicate how we should contact you:

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {showByVoice && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n *** Message and data rates may apply. 1 message per user request. For terms: https://www.formfox.com/SMSTermsOfService . For privacy: https://www.formfox.com/PrivacyPolicy. Text HELP to 52141 for help. Text STOP to 52141 to stop receiving texts. *** \r\n \r\n
}\r\n { showSendPin && \r\n \r\n

A PIN must be texted to you for security confirmation:

\r\n \r\n \r\n \r\n
\r\n \r\n *** Message and data rates may apply. 1 message per user request. For terms: https://www.formfox.com/SMSTermsOfService . For privacy: https://www.formfox.com/PrivacyPolicy. Text HELP to 52141 for help. Text STOP to 52141 to stop receiving texts. *** \r\n \r\n
}\r\n { showTooManyAttempts && \r\n \r\n

Our Apologies!

\r\n

For security purposes, we limit the number of times an invitation may be accepted.

\r\n

In order to continue, your administrator will need to re-invite you. We have flagged your invitation to your administrator's attention.

\r\n

To expedite this process, please contact your administrator for assistance.

\r\n
\r\n
}\r\n { this.state.showValidatePIN && this.props.onSuccess(pin, this.currentOutboxAN)} onBack={() => this.setState({ showValidatePIN: false, showContactForm: true }) } /> }\r\n \r\n )\r\n }\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Button, Col, Row } from \"react-bootstrap\"\r\n\r\ninterface SetupCompleteProps {\r\n title: string\r\n url: string\r\n onNext: () => void\r\n}\r\n\r\nexport default class SetupComplete extends React.PureComponent {\r\n render() {\r\n return (\r\n \r\n \r\n {this.props.title}\r\n \r\n \r\n

Your account is activated and ready for use.

\r\n
\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABh0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzT7MfTgAAABZ0RVh0Q3JlYXRpb24gVGltZQAwOC8yNS8wN/5In/YAAAKsSURBVDiNbZM9aBNhGMd/uSaX3CXpncVaozUYo1X8wl5EUYuKoA4FcalLQR1cpOAoiA4uDq7OUnBwqQjiJG6KFNE2+IGgxGjV9COtsXe59O6S+uYcYq4d+p8e/jz/5/m98Lwh3/cJXXhEW1fO7Br4Xrbv/Zi3d30v2wpApifpprsTn7dt7Lx2//nnVwD+2BAAodUDju9J5T9MVfpz27s53d/LjpSGDxRmLJ7lfzFRWCCXXf/u5afZ/vaQEENjAGztSToJRVZuXDDo0VXW0nRliVsPXtPREXKnyrYKtAYc2rlxsr4sjOtDOdRoBICnE9NB8NzBzUFtLtW5OzZBpyrn33yZy0mDh7MDk4WycfH0XpabEpYrsFwBwOjlLI/flgPPcgUhKczwqd1MFsrG4OHsQPjbrDW6Z2s3sizz4tNcsOn2+SwAH+8c5faTYuAb2W60pEomtY5vs9ZouGK7vYNHdlL1VrauVlpf8bSRcbZv7gLgwI4UL99P9YbnF5cULRmn+h9bGxkPNqd1+GnCvpst7+rZvqBvQ5fGgukoYYBavUldCGJqguETCTynRlpfIQAYPpENKAHcRhPf95H0pOr+KFvYnsD2BJ5TC96/mubhi2LQY3uCwvQftKTqSrIslz5+naHqigAvrbfCJ/dvQRsZDyjaPZbzl8LPeaKyXJJiinK5/HuRmYodIGoj4xh9m6h6AqNvU0BS9QRVT/Br3mThj0VMUS6FGBpD1/VJIYSRyWSIRCJrXmFbjUaDYrGILMt50zRzwSnL0ZjjN5tKakuGaExZM+y5DnOlKUKS5DbqXuuUV3+mqNqZb7i1/khMIRbXiMTiACzXHbyaybLnIquJfH2pmoPWZ5LaBUDdqRod8a5jwpfyNbPiVkoFKqUCtcXfrvClfEe861g73NY/8ItPZXAHMEIAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABh0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzT7MfTgAAABZ0RVh0Q3JlYXRpb24gVGltZQAwOC8yNS8wN/5In/YAAAICSURBVDiNdZNNbxJRFIafGZDhMgNYoITEJhoS1C5swkdXZaGJC11aV3VTV7IxrvRXuPMHdOtPcOnGLURdYI3SpBEj39BQZpgBvC5ugdTCSU5ycu9533Pue87VpJRobx6zsAcnRdrmO9rmXdqmAGBz5JCwj0mev+Jj+hOAfPsBAO0SwXa7wun1LOke7DQgdQ4SaIThSwpqMUj3P/NtMzsn0Xj9iIsqNmIieFKF6JiV1gvB+x3QpUPbDAHoAGS6ZUxP8LQKYgqef7VbHjz7CsZMkOmWFcFuvUgtluNhDZDg+ta6jI/AP4P7J1CL5ditF/00rSNuDsCYgudb3Togb/VV4PkgMobUEJrWkc7Q2GK7pS7W+ByslQrqbOKD2x0YGlt++kIQHas2V1W+11yCX/5a5iVGMBDCDyhGqSlA/rcClG8s41IBXvxRQs5t6gMJOhHXoWEthNJKhctEpQIctq6KWo9A2HV0jGmdn/Hlmw+6CxKtVICD7lVdXD+cbkBwWtcxvec0LeiEluz7AwXeH6weadNU+aZ7qDYxbpeZ6TnutMCYrR0loKpXkxCYVeiG8stVFhObv5og0wHTWw0eBeBHQq2ycy0E/3+m6LjC0MgS8mDDUUTaBbAnwA5A2K1wFsyD+kz6PADgLJgjZu+hyQoty+F7Eo6T0LQcNFkhZu/NwXP7B3lr7Jdy58HcAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABh0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzT7MfTgAAABZ0RVh0Q3JlYXRpb24gVGltZQAwOC8yNS8wN/5In/YAAAJUSURBVDiNhVNNTxNRFD3zOp3mtdNhpvTbigQkIQ2SfixLWJgYNdEfgInRDYWVP8ZdJbJlY1y4I3FhjKExkbFamzRYQkEGppTaDlImUzodF6WhlqoneZt7c8695953Gcuy8GJpCT3E7ubmGhXxuXY0Mt1QRQoAYrChC76TohSsP8utxz4AQDqTAQAw/QI3bv2QKzu+ePimisnkDjzX6oAF1BQPSp8mcLAVQmhKze3mr8d7IkwmnQYASEHtzEFb9PajLHipCawt4A8srEE7dmP95TwYm6XX1REnABAAGI8ebLp4g957nAXvOgdaXJeUzgDpDFZkC2hxGBEMPFx8D4ejTcejB5sAQGKp7bm9Yigx/yAPjiGA4ei+QVzEqR1I3S9grxhKxFLbc+zxobg6NlkFT83LysPQl/OIBgKRBo4PxVXS1GgkOqteVv5PBzAcYFocpqMVNDUaYes1J/V7jOGkQYE+hANnePfTSVkAYM45AOa/BQbsEdMOywJYSTT06qFAw8HmFc7KcvqvAsquCEk0dNZFzf1vBd9UWGpfEVhMMEMtdCwG30seuKi5T7zu9tM9hUftyH11iP3/oC+nKgIU1Qmvu/2E5LaEjTG/IWe/eNA8od1Wh63zIn6qUXzMSxjzG3JuS8iyAFCuOJISb5692Rild2ZP4RXaQ2dQPWHx9isPllh6uWJPAoPHNGrKSsMW97tNTHhNBAQThAAVjaBUZXH0y4aIaMrlmi3ZdZjp3kLvNHdrtsRMoJPiGCIXFLv++jPFq02K/D6ncwyRZwKdVI/cw28S3gKH4cX13QAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABh0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzT7MfTgAAABZ0RVh0Q3JlYXRpb24gVGltZQAwOC8yNS8wN/5In/YAAAG5SURBVDiNfdOxaxRhEAXw37cqcTWRxBA8ULBQQQIKd1teGisRrNJFEG28a4KNlX+EjV0K83/YW8neIooSRDBF4p0hEVHMkoSwFrt7bEL0wVTfzPtm3rwJRVHoh6DGXRa+83KLmyNiaJHPsdbi6WvewEpRgNAkuEX2lfZ1JLiMAptI8Rk3ePeBdk0SetXPLXZj4geYcTK28QqnyEecgwjmGUwSP8R57P8jLuAJJojnGUDUZWGNzn0EzBaF9TS1x5FYT1OzReEM7mGNTpeFaMjqNaVa++iHIEkSwzQd/zxMU0mS6IdgH9O4giGr4Tm7d4ivNmZ9UQk0GAxgXPyskfMJb8lP7xBfrNqssVx1Uq+qH4LlYzmX8IM4goMTBOul6Ti51xinjkPliqNp8m/HBNOYudbEMWHXSy3yKGbjY4N5olG8hKWGsBNVJ3v4Ugq/EU3xeBNb1UNdvNj4bbFBsqd05qj0xaPQQ4vBAZ02zvo/cqWtY7IRydjKk+weEt8umU/EL7xHRP6nsvKRY5ol+0l7CnMVUagKt/AbM2Tb5a1ZKYryFup979Bp0Y3INskzpeE3yCOyFt26uMZfyw+5HAJd9fkAAAAASUVORK5CYII=\"","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport PasswordSetModel from \"./Model/PasswordSetModel\"\r\n\r\nexport default function SetPassword(password: PasswordSetModel) {\r\n const requestBody = JSON.stringify(password)\r\n return ObservableFromFetch(\"FFOrderClinicStatus/SetPassword\", requestBody, 'put')\r\n}","import * as React from \"react\"\r\nimport \"../../assets/scss/App.scss\"\r\nimport { InvitationType } from \"../../api/Invitation/Model/InvitationType\"\r\nimport ValidateIdentity from \"./ValidateIdentity\"\r\nimport SetupComplete from \"./SetupComplete\"\r\nimport SetPassword from \"./SetPassword\"\r\nimport { toast } from \"react-toastify\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { Subscription } from \"rxjs\"\r\nimport GetInvitationStatus from \"../../api/Invitation/GetInvitationStatus\"\r\nimport InvitationStatusGridRecord from \"../../api/InvitationStatus/Model/InvitationStatusGridRecord\"\r\nimport CheckInactiveURL from \"../../api/Invitation/CheckInactiveURL\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { InvitationStatus } from \"../../api/Invitation/Model/InvitationStatus\"\r\nimport { Home } from \"../../config/Routes\"\r\n\r\nenum InvitationStep {\r\n default,\r\n validateIdentity,\r\n setupComplete,\r\n setPassword\r\n}\r\n\r\ninterface InvitationProcessProps extends RouteComponentProps {\r\n linkId?: string\r\n show?: boolean\r\n onInvitationSetupClose?: (hasUpdates: boolean) => void\r\n}\r\n\r\ninterface InvitationProcessState {\r\n data?: InvitationStatusGridRecord\r\n invitationType?: InvitationType\r\n invitationStep?: InvitationStep\r\n}\r\n\r\nexport default class InvitationProcess extends React.PureComponent {\r\n subscription?: Subscription\r\n checkInactiveSubscription?: Subscription\r\n currentURL: string = window.location.href\r\n currentPin: string = \"\"\r\n currentOutboxAN?: number\r\n state: InvitationProcessState = { }\r\n\r\n componentDidMount() {\r\n this.checkInactiveSubscription = CheckInactiveURL(this.currentURL).subscribe(\r\n inactive => inactive ? this.navigateNotFound() : this.getInvitationStatus(),\r\n error => toast.error(error)\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n }\r\n\r\n navigateNotFound() {\r\n // TODO: this.router.navigate(['/page-not-found']);\r\n toast.error(\"Page not found\")\r\n }\r\n\r\n getInvitationStatus() {\r\n this.subscription = GetInvitationStatus(this.currentURL).subscribe(\r\n data => {\r\n if (!this.currentOutboxAN) {\r\n this.currentOutboxAN = this.state.data?.OutboxAN\r\n }\r\n // if (data.Status === InvitationStatus.COMPLETED || (data.Status === InvitationStatus.USER_CONFIGURED && data.IsUser)) {\r\n // this.goToLogin()\r\n // return\r\n // }\r\n this.setState({\r\n data: data,\r\n invitationType: this.mapInvitationType(data),\r\n invitationStep: this.mapStep(data)\r\n })\r\n },\r\n error => toast.error(error)\r\n )\r\n }\r\n\r\n mapInvitationType(status: InvitationStatusGridRecord): InvitationType {\r\n if (status.IsClinic) {\r\n return InvitationType.Portal\r\n }\r\n if (status.IsClient) {\r\n return InvitationType.Company\r\n }\r\n if (status.IsUser) {\r\n return InvitationType.User\r\n }\r\n if (status.IsLocation) {\r\n return InvitationType.Location\r\n }\r\n if (status.IsConfigurePassword) {\r\n return InvitationType.ConfigurePassword\r\n }\r\n return InvitationType.Unknown\r\n }\r\n\r\n mapStep(status: InvitationStatusGridRecord): InvitationStep {\r\n switch (status.Status) {\r\n case InvitationStatus.INVITATION_REQUESTED:\r\n case InvitationStatus.INVITATION_STILL_IN_PROCESS:\r\n case InvitationStatus.INVITATION_IN_USE:\r\n case InvitationStatus.TOO_MANY_ATTEMPT:\r\n case InvitationStatus.STARTED:\r\n return this.currentPin.length ? InvitationStep.setPassword : InvitationStep.validateIdentity\r\n case InvitationStatus.PASSWORD_SET:\r\n case InvitationStatus.CLINIC_CONFIGURED:\r\n case InvitationStatus.COMPLETED:\r\n return InvitationStep.setupComplete\r\n default:\r\n return InvitationStep.validateIdentity\r\n }\r\n }\r\n\r\n handleNext() {\r\n switch (this.state.invitationType) {\r\n case InvitationType.Portal:\r\n case InvitationType.Company:\r\n case InvitationType.Location:\r\n case InvitationType.User: this.handleNextUser(); break\r\n case InvitationType.ConfigurePassword: this.handleNextConfigurePassword(); break\r\n }\r\n }\r\n\r\n handleNextConfigurePassword() {\r\n switch (this.state.invitationStep) {\r\n case InvitationStep.validateIdentity: this.setState({ invitationStep: InvitationStep.setPassword }); break\r\n case InvitationStep.setPassword: this.goToLogin(); break\r\n }\r\n }\r\n\r\n handleNextUser() {\r\n switch (this.state.invitationStep) {\r\n case InvitationStep.validateIdentity: this.setState({ invitationStep: InvitationStep.setPassword }); break\r\n case InvitationStep.setPassword: this.setState({ invitationStep: InvitationStep.setupComplete }); break\r\n case InvitationStep.setupComplete: this.goToLogin(); break\r\n }\r\n }\r\n\r\n goToLogin = () => (this.props as RouteComponentProps).history.push(Home)\r\n\r\n setupCompleteTitle() {\r\n switch (this.state.invitationType) {\r\n case InvitationType.Portal: return \"Portal\"\r\n case InvitationType.Company: return \"Company\"\r\n case InvitationType.User: return \"User\"\r\n }\r\n return \"\"\r\n }\r\n\r\n render() {\r\n if (!this.props.show || !this.state.data) {\r\n return <>\r\n }\r\n const { invitationStep } = this.state\r\n const userName = this.state.data.UserName\r\n\r\n const url = `${window.location.hostname}${window.location.port ? `:${window.location.port}` : \"\"}${window.location.pathname}#/workforce-login`\r\n\r\n\r\n return (\r\n { invitationStep === InvitationStep.validateIdentity && { this.currentPin = pin; this.currentOutboxAN = outboxAN; this.handleNext() }} />}\r\n { invitationStep === InvitationStep.setPassword && this.currentOutboxAN &&\r\n this.handleNext()} />}\r\n { invitationStep === InvitationStep.setupComplete && this.handleNext()} url={url} title={`${this.setupCompleteTitle()} Setup`} />}\r\n )\r\n }\r\n\r\n static defaultProps = {\r\n show: true\r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { Container, Modal, Form, Image, Row, Col, Table, InputGroup } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Subscription } from \"rxjs\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport CalculatePasswordScore, { PasswordScore, ScoreStatus } from \"./CalculatePasswordScore\"\r\nimport passwordStatus_Exceed from \"../../assets/images/img_status_exceed.png\"\r\nimport passwordStatus_Pass from \"../../assets/images/img_status_pass.png\"\r\nimport passwordStatus_Warn from \"../../assets/images/img_status_warn.png\"\r\nimport passwordStatus_Fail from \"../../assets/images/img_status_fail.png\"\r\nimport \"../../assets/scss/App.scss\"\r\nimport \"../../assets/scss/SetPassword.scss\"\r\nimport PasswordSetModel from \"../../api/Invitation/Model/PasswordSetModel\"\r\nimport PasswordSet from \"../../api/Invitation/PasswordSet\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\n\r\ninterface SetPasswordProps {\r\n PIN: string\r\n userName: string\r\n OutboxAN: number\r\n onSave: (password: string) => void\r\n}\r\n\r\ninterface SetPasswordState {\r\n saving: boolean\r\n password: string\r\n passwordScore?: PasswordScore\r\n showPassword: boolean\r\n}\r\n\r\nexport default class SetPassword extends React.PureComponent {\r\n state: SetPasswordState = {\r\n saving: false,\r\n password: \"\",\r\n passwordScore: CalculatePasswordScore(\"\"),\r\n showPassword: false\r\n }\r\n statusImages: { [key in keyof typeof ScoreStatus]: string } = {\r\n [ScoreStatus.exceed]: passwordStatus_Exceed,\r\n [ScoreStatus.pass]: passwordStatus_Pass,\r\n [ScoreStatus.warn]: passwordStatus_Warn,\r\n [ScoreStatus.fail]: passwordStatus_Fail\r\n }\r\n\r\n saveSubscription?: Subscription\r\n\r\n componentWillUnmount() {\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n isValid = () => this.state.password.trim().length > 8\r\n\r\n handlePasswordChange = (e: React.ChangeEvent) => {\r\n const password = e.target.value\r\n this.setState({ password: password, passwordScore: CalculatePasswordScore(password) })\r\n }\r\n\r\n handleSetPasswordClick = () => {\r\n this.setState({ saving: true })\r\n const password: PasswordSetModel = {\r\n OutboxAN: this.props.OutboxAN,\r\n Password: this.state.password,\r\n UserName: this.props.userName,\r\n PIN: this.props.PIN,\r\n Link: window.location.href\r\n }\r\n //TODO check if we need to call haveIbeenPwnedURL: string = 'https://api.pwnedpasswords.com/range/';\r\n this.saveSubscription = PasswordSet(password).subscribe(\r\n data => {\r\n this.setState({ saving: false })\r\n toast.success(data)\r\n this.setState({ password: \"\", showPassword: false })\r\n this.props.onSave(password.Password)\r\n },\r\n error => {\r\n this.setState({ saving: false })\r\n this.handleAPIError(error)\r\n }\r\n )\r\n }\r\n\r\n handleAPIError = (error: Error | APIError) => {\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n passwordComplexity = (score: number): string => {\r\n if (score < 20) {\r\n return \"Very Weak\"\r\n } else if (score < 40) {\r\n return \"Weak\"\r\n } else if (score < 60) {\r\n return \"Good\"\r\n } else if (score < 80) {\r\n return \"Strong\"\r\n } else {\r\n return \"Very Strong\"\r\n }\r\n }\r\n\r\n statusImage = (status: ScoreStatus | undefined) => status && \r\n scoreValue = (score: number | undefined, scoreSign: string) => (score || 0) > 0 ? `${scoreSign}${score}` : `${score}`\r\n\r\n render() {\r\n const { passwordScore, showPassword } = this.state\r\n\r\n const requirements = \r\n \r\n \r\n
Minimum Requirements
\r\n
    \r\n
  • Minimum 8 characters in length
  • \r\n
  • Contains 3/4 of the following items:
    \r\n - Uppercase Letters
    \r\n - Lowercase Letters
    \r\n - Numbers
    \r\n - Symbols
    \r\n
  • \r\n
\r\n
\r\n\r\n const totalScore = Math.max(0, Math.min(100, passwordScore?.calculatedScore || 0))\r\n return (\r\n \r\n \r\n SET PASSWORD\r\n \r\n \r\n \r\n \r\n \r\n
Your User ID is:
\r\n
{this.props.userName}
\r\n \r\n {requirements}\r\n
\r\n \r\n \r\n Please set a password for this account:\r\n Characters: {this.state.password.length}/32\r\n \r\n \r\n ) => this.setState({ showPassword: e.target.checked })} value=\"1\" />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Score:\r\n
{totalScore}%
\r\n
Complexity:{this.passwordComplexity(this.state.passwordScore?.calculatedScore || 0)}
\r\n \r\n
\r\n {requirements}\r\n
\r\n
\r\n \r\n Set Password\r\n \r\n
\r\n )\r\n }\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function CheckInactiveURL(url: string) {\r\n const requestBody = JSON.stringify({ url: url })\r\n return ObservableFromFetch(\"FFOrderClinicFileMaintenance/InActivateUrl\", requestBody)\r\n}\r\n","import {Component} from \"react\";\r\nimport {Button, Jumbotron} from \"react-bootstrap\";\r\nimport {Redirect} from \"react-router-dom\";\r\nimport {Home} from \"../../config/Routes\";\r\n\r\ninterface InvalidPasswordResetState{\r\n goHome: boolean\r\n}\r\nexport default class InvalidPasswordReset extends Component<{}, InvalidPasswordResetState> {\r\n\r\n state: InvalidPasswordResetState = {\r\n goHome: false\r\n }\r\n\r\n render() {\r\n return \r\n

\r\n Unknown Or Expired Link! Contact the site administrator if you feel this is an error.\r\n

\r\n \r\n {this.state.goHome && }\r\n
\r\n }\r\n}\r\n","import ApiResponse from \"../ApiResponse\";\r\nimport {ApiAuthRequestInterface, BuildAuthRequestFromAppState} from \"../../authentication/BuildAuthRequestInterface\";\r\nimport {ApiErrorReturn} from \"../ApiError\";\r\nimport ApiUrl, {PortalSource} from \"../ApiUrl\";\r\n\r\ntype ChangeUserPasswordResponse = ApiResponse;\r\n\r\nconst buildFetchRequest = (body: string, apiAuth: ApiAuthRequestInterface): RequestInit => {\r\n return {\r\n method: 'post',\r\n headers: new Headers({\r\n 'auth_token': apiAuth?.auth_token,\r\n 'IsMarketPlace': apiAuth.IsMarketPlace,\r\n 'Agent': apiAuth.Agent,\r\n 'api_version' :apiAuth.api_version,\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n }),\r\n body,\r\n }}\r\n// public string Source { get; set; }\r\n// public string UserName { get; set; }\r\n\r\n// public string Phone { get; set; }\r\n\r\ntype TokenToRefresh = 'RequestEmail' | 'RequestEmailForgotPassword' | 'RequestVoicePin' | 'RequestTextPin';\r\ntype BooleanResponse = 'True' | 'False';\r\ninterface TokenForRefreshType {\r\n RequestEmail: BooleanResponse\r\n Forgot: BooleanResponse\r\n RequestVoice: BooleanResponse\r\n RequestText: BooleanResponse\r\n}\r\nconst defaultTokens: TokenForRefreshType = {\r\n RequestEmail: 'False',\r\n Forgot: 'False',\r\n RequestVoice: 'False',\r\n RequestText: 'False',\r\n}\r\nfunction GetRefreshTypeForApi(RefreshType: TokenToRefresh){\r\n switch(RefreshType){\r\n case \"RequestEmail\":{\r\n return {...defaultTokens, RequestEmail: 'True'};\r\n }\r\n case \"RequestVoicePin\":{\r\n return {...defaultTokens, RequestVoice: 'True'};\r\n }\r\n case \"RequestTextPin\":{\r\n return {...defaultTokens, RequestText: 'True'};\r\n }\r\n default:{\r\n return {...defaultTokens, RequestEmail: 'True'};\r\n }\r\n }\r\n}\r\n\r\n\r\nexport async function UpdateUserPasswordToken(RefreshType: TokenToRefresh, UserName: string, Phone: string, errorHandling: ApiErrorReturn): Promise{\r\n const apiAuth = BuildAuthRequestFromAppState(undefined);\r\n const Source = PortalSource();\r\n const body = JSON.stringify({\r\n ...GetRefreshTypeForApi(RefreshType),\r\n Source,\r\n Phone,\r\n UserName\r\n });\r\n try {\r\n const response = await fetch(ApiUrl() + \"FFOrderAccount/UpdateUserPasswordToken\", buildFetchRequest(body, apiAuth));\r\n return await response.json() as ChangeUserPasswordResponse;\r\n }catch(error: unknown){\r\n errorHandling(error);\r\n return null;\r\n }\r\n}\r\n","import {Component} from \"react\";\r\nimport {\r\n Button,\r\n Card,\r\n Col, DropdownButton,\r\n Dropdown,\r\n Form,\r\n Row\r\n} from \"react-bootstrap\";\r\nimport {UpdateUserPasswordToken} from \"../../api/Secuirty/UpdatedUserPasswordToken\";\r\nimport {toast} from \"react-toastify\";\r\n\r\nexport interface RequestPhonePinProps{\r\n requestedPhone?: ()=> void;\r\n resend?: boolean\r\n skinny?: boolean\r\n userName?: string\r\n}\r\ninterface RequestPhonePinState{\r\n requestingPhone: boolean\r\n requestText: boolean\r\n}\r\nexport default class RequestPhonePin extends Component {\r\n\r\n state: RequestPhonePinState ={\r\n requestingPhone: false,\r\n requestText: true\r\n }\r\n\r\n requestNewPhonePin = () => {\r\n if(this.state.requestingPhone){\r\n this.requestNewPhonePinVoice();\r\n }else{\r\n this.requestNewPhonePinText();\r\n }\r\n }\r\n requestNewPhonePinVoice = () => {\r\n UpdateUserPasswordToken('RequestVoicePin',this.props.userName || '', '', () => {}).then(()=> {});\r\n toast.success(\"Pin Requested.\")\r\n if(this.props.requestedPhone) {\r\n this.props.requestedPhone();\r\n }\r\n }\r\n requestNewPhonePinText = () => {\r\n UpdateUserPasswordToken('RequestTextPin',this.props.userName|| '', '', () => {}).then(()=> {});\r\n toast.success(\"Pin Requested.\")\r\n if(this.props.requestedPhone) {\r\n this.props.requestedPhone();\r\n }\r\n }\r\n\r\n render() {\r\n return <>{this.props.skinny ?\r\n <>\r\n \r\n {this.requestNewPhonePinText()}}>{this.props.resend ? \"Resend Pin As Text\": \"Send Pin As Text\" }\r\n {this.requestNewPhonePinVoice()}}>{this.props.resend ? \"Resend Pin As Voice\": \"Send Pin As Voice\" }\r\n \r\n \r\n : <>\r\n \r\n \r\n \r\n \r\n {this.props.resend ? \"Resend Pin\" : \"Change Password One Time Pin Communication\"}\r\n \r\n \r\n \r\n \r\n {this.setState({requestingPhone: e.target.checked})}}\r\n name=\"pin-request-type\"\r\n value='voice' type='radio'\r\n id='voice-pin-request'\r\n label='Voice Call Pin'/>\r\n \r\n \r\n \r\n \r\n {this.setState({requestingPhone: e.target.checked})}}\r\n defaultChecked={true}\r\n name=\"pin-request-type\"\r\n value='text' type='radio'\r\n id='text-pin-request'\r\n label='Text Pin'/>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n}\r\n","import {Component} from \"react\";\r\nimport {Button, Modal} from \"react-bootstrap\";\r\n\r\ninterface NoPinState{\r\n show: boolean\r\n}\r\nexport default class NoPin extends Component<{}, NoPinState> {\r\n state: NoPinState = {\r\n show: false,\r\n }\r\n\r\n render() {\r\n return <>\r\n \r\n\r\n {this.setState({show:false})}}>\r\n \r\n Our Apologies!\r\n \r\n \r\n

\r\n For security purposes, we need to deliver your PIN to the phone number created when you were\r\n invited.\r\n

\r\n

\r\n If you believe the phone number set for your invitation is incorrect, or you are unable to\r\n receive a PIN at that number, please contact your administrator for assistance.\r\n

\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n }\r\n}\r\n","import {Component} from \"react\";\r\nimport RequestPhonePin from \"./RequestPhonePin\";\r\nimport {Button, Card, FormText, Form} from \"react-bootstrap\";\r\nimport NoPin from \"./NoPin\";\r\nimport {Home} from \"../../config/Routes\";\r\nimport {Redirect} from \"react-router-dom\";\r\nimport {toast} from \"react-toastify\";\r\n\r\nexport interface EnterPhonePinProps {\r\n pin: string\r\n changePin: (pin: string) => void\r\n submitPin: () => void\r\n userName?: string\r\n}\r\nexport interface EnterPhonePinState {\r\n goHome: boolean\r\n}\r\nexport default class EnterPhonePin extends Component {\r\n\r\n state: EnterPhonePinState ={\r\n goHome: false\r\n }\r\n\r\n doesPinLookValid = (): boolean => {\r\n if(this.props.pin && this.props.pin.length === 6){\r\n const pinNumberFound = parseInt(this.props.pin);\r\n return !isNaN(pinNumberFound);\r\n }\r\n return false;\r\n }\r\n\r\n submitPin = () => {\r\n if(this.doesPinLookValid()){\r\n this.props.submitPin();\r\n }else{\r\n toast.error(\"PIN Appears To Be Invalid!\");\r\n }\r\n }\r\n\r\n render() {\r\n return <>\r\n
\r\n {this.state.goHome && }\r\n \r\n ENTER COMMUNICATED PIN
\r\n
{e.preventDefault();this.submitPin()}}>\r\n \r\n \r\n \r\n {this.props.changePin(e.target.value)}}\r\n type=\"text\" placeholder=\"Numeric Pin\" />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n }\r\n}\r\n","\r\nexport const PassScoreStatus = 'pass';\r\nexport const FailScoreStatus = 'fail';\r\nexport const WarnScoreStatus = 'warn';\r\nexport const ExceedScoreStatus = 'exceed';\r\nexport type ScoreStatus = 'exceed' | 'pass' | 'warn' | 'fail';\r\n\r\ntype PasswordRequirementAdditionNames = 'NumberOfCharacters'\r\n | 'UppercaseLetters' | 'LowercaseLetters'| 'Numbers'| 'Symbols'\r\n | 'MiddleNumbersOrSymbols' | 'Requirements';\r\ntype PasswordRequirementDeductionNames = 'LettersOnly' | 'NumbersOnly' | 'RepeatCharacters'\r\n | 'ConsecutiveUppercaseLetters' | 'ConsecutiveLowercaseLetters' | 'ConsecutiveNumbers'\r\n | 'SequentialLetters' | 'SequentialNumbers' | 'SequentialSymbols' ;\r\nexport type PasswordRequirementNames = PasswordRequirementAdditionNames | PasswordRequirementDeductionNames;\r\n\r\nexport interface PasswordScore{\r\n calculatedAsANumber: number\r\n requirements: {[key in PasswordRequirementNames]: PasswordRequirement}\r\n}\r\nexport interface PasswordRequirement{\r\n name: PasswordRequirementNames\r\n status: ScoreStatus\r\n count: number\r\n score: number\r\n}\r\nconst DefaultFailRequirement: PasswordRequirement = {\r\n name: 'Symbols',\r\n status: FailScoreStatus,\r\n count: 0,\r\n score: 0,\r\n}\r\nconst DefaultPassedRequirement: PasswordRequirement = {\r\n name: 'Symbols',\r\n status: PassScoreStatus,\r\n count: 0,\r\n score: 0,\r\n}\r\n\r\nexport const DefaultPasswordScore: PasswordScore= {\r\n calculatedAsANumber: 0,\r\n requirements:{\r\n 'NumberOfCharacters': {...DefaultFailRequirement, name:'NumberOfCharacters'},\r\n 'UppercaseLetters': {...DefaultFailRequirement, name:'UppercaseLetters'} ,\r\n 'LowercaseLetters': {...DefaultFailRequirement, name:'LowercaseLetters'},\r\n 'Numbers': {...DefaultFailRequirement, name:'Numbers'},\r\n 'Symbols': {...DefaultFailRequirement, name:'Symbols'},\r\n\r\n 'MiddleNumbersOrSymbols': {...DefaultFailRequirement, name:'MiddleNumbersOrSymbols'} ,\r\n 'Requirements': {...DefaultFailRequirement, name:'Requirements'},\r\n\r\n 'LettersOnly': {...DefaultPassedRequirement, name:'LettersOnly'} ,\r\n 'NumbersOnly': {...DefaultPassedRequirement, name:'NumbersOnly'} ,\r\n\r\n 'RepeatCharacters': {...DefaultPassedRequirement, name:'RepeatCharacters'},\r\n\r\n 'ConsecutiveUppercaseLetters': {...DefaultPassedRequirement, name:'ConsecutiveUppercaseLetters'},\r\n 'ConsecutiveLowercaseLetters': {...DefaultPassedRequirement, name:'ConsecutiveLowercaseLetters'},\r\n 'ConsecutiveNumbers': {...DefaultPassedRequirement, name:'ConsecutiveNumbers'},\r\n\r\n 'SequentialLetters': {...DefaultPassedRequirement, name:'SequentialLetters'},\r\n 'SequentialNumbers': {...DefaultPassedRequirement, name:'SequentialNumbers'} ,\r\n 'SequentialSymbols': {...DefaultPassedRequirement, name:'SequentialSymbols'},\r\n }\r\n};\r\n\r\nconst passwordScoreMultipliers = {\r\n SequentialLetters: 3,\r\n SequentialNumber: 3,\r\n SequentialSymbol: 3,\r\n ConsecutiveNumbers: 2,\r\n ConsecutiveUpperCaseLetters: 2,\r\n ConsecutiveLowerCaseLetters: 2,\r\n BaseLength: 4,\r\n NumbersInPassword: 4,\r\n SymbolsInPassword: 6,\r\n IncrementalNumbers: 2,\r\n}\r\nconst allUpperCaseLettersRegex = /[A-Z]/g;\r\nconst allLowerCaseLettersRegex = /[a-z]/g;\r\nconst allNumbersRegex = /[0-9]/g;\r\nconst allSymbolsRegex = /[^a-zA-Z0-9_]/g;\r\n\r\ninterface CardinalityStateOfPasswordCharLookUp{\r\n lastUpperCaseLetterCharValue: string\r\n UpperCaseLetterCount: number\r\n ConsecutiveUpperCaseLetterCount: number\r\n\r\n lastLowerCaseLetterCharValue: string\r\n ConsecutiveLowerCaseLetterCount: number\r\n LowerCaseLetterCount: number\r\n\r\n lastNumberCharValue: string\r\n ConsecutiveNumberCount: number\r\n numberCount: number\r\n\r\n lastSymbolCharValue: string,\r\n ConsecutiveSymbolCount: number\r\n symbolCount: number\r\n\r\n ConsecutiveCount: number\r\n middleCharacterCount: number\r\n repetitionIncrement: number\r\n repetitionCharacter: number\r\n passwordLength: number\r\n}\r\n\r\nfunction determineCardinalityOfPassword(password: string): CardinalityStateOfPasswordCharLookUp{\r\n const cardinality: CardinalityStateOfPasswordCharLookUp = {\r\n lastUpperCaseLetterCharValue: '',\r\n lastLowerCaseLetterCharValue: '',\r\n lastNumberCharValue: '',\r\n lastSymbolCharValue: '',\r\n ConsecutiveSymbolCount: 0,\r\n UpperCaseLetterCount: 0,\r\n ConsecutiveUpperCaseLetterCount:0,\r\n ConsecutiveLowerCaseLetterCount: 0,\r\n LowerCaseLetterCount: 0,\r\n ConsecutiveNumberCount: 0,\r\n ConsecutiveCount: 0,\r\n middleCharacterCount: 0,\r\n numberCount: 0,\r\n symbolCount: 0,\r\n repetitionIncrement: 0,\r\n repetitionCharacter: 0,\r\n passwordLength: password.length\r\n }\r\n // Loop through password to check for Symbol, Numeric, Lowercase and Uppercase pattern matches\r\n const stringArrayOfPassword = password.replace(/\\s+/g, \"\").split(/\\s*/)\r\n\r\n for (let indexOfCharValue = 0; indexOfCharValue < cardinality.passwordLength; indexOfCharValue++) {\r\n if (stringArrayOfPassword[indexOfCharValue].match(allUpperCaseLettersRegex)) {\r\n if (cardinality.lastUpperCaseLetterCharValue !== \"\") {\r\n if ((parseInt(cardinality.lastUpperCaseLetterCharValue) + 1) === indexOfCharValue) {\r\n cardinality.ConsecutiveUpperCaseLetterCount++\r\n cardinality.ConsecutiveCount++\r\n }\r\n }\r\n cardinality.lastUpperCaseLetterCharValue = String(indexOfCharValue)\r\n cardinality.UpperCaseLetterCount++\r\n }\r\n else if (stringArrayOfPassword[indexOfCharValue].match(allLowerCaseLettersRegex)) {\r\n if (cardinality.lastLowerCaseLetterCharValue !== \"\") {\r\n if ((parseInt(cardinality.lastLowerCaseLetterCharValue) + 1) === indexOfCharValue) {\r\n cardinality.ConsecutiveLowerCaseLetterCount++\r\n cardinality.ConsecutiveCount++\r\n }\r\n }\r\n cardinality.lastLowerCaseLetterCharValue = String(indexOfCharValue)\r\n cardinality.LowerCaseLetterCount ++\r\n }\r\n else if (stringArrayOfPassword[indexOfCharValue].match(allNumbersRegex)) {\r\n if (indexOfCharValue > 0 && indexOfCharValue < (cardinality.passwordLength - 1)) {\r\n cardinality.middleCharacterCount++\r\n }\r\n if (cardinality.lastNumberCharValue !== \"\") {\r\n if ((parseInt(cardinality.lastNumberCharValue) + 1) === indexOfCharValue) {\r\n cardinality.ConsecutiveNumberCount++\r\n cardinality.ConsecutiveCount++\r\n }\r\n }\r\n cardinality.lastNumberCharValue = String(indexOfCharValue)\r\n cardinality.numberCount++\r\n }\r\n else if (stringArrayOfPassword[indexOfCharValue].match(allSymbolsRegex)) {\r\n if (indexOfCharValue > 0 && indexOfCharValue < (cardinality.passwordLength - 1)) {\r\n cardinality.middleCharacterCount++\r\n }\r\n if (cardinality.lastSymbolCharValue !== \"\") {\r\n if ((parseInt(cardinality.lastSymbolCharValue) + 1) === indexOfCharValue) {\r\n cardinality.ConsecutiveSymbolCount++\r\n cardinality.ConsecutiveCount++\r\n }\r\n }\r\n cardinality.lastSymbolCharValue = String(indexOfCharValue)\r\n cardinality.symbolCount++\r\n }\r\n\r\n\r\n // Internal loop through password to check for repeat characters\r\n let repeatCharacterExists = false\r\n for (let repeatedChar = 0; repeatedChar < cardinality.passwordLength; repeatedChar++) {\r\n if (stringArrayOfPassword[indexOfCharValue] === stringArrayOfPassword[repeatedChar] && indexOfCharValue !== repeatedChar) {\r\n repeatCharacterExists = true\r\n\r\n // Calculate increment deduction based on proximity to identical characters\r\n // Deduction is incremented each time a new match is discovered\r\n // Deduction amount is based on total password length divided by the\r\n // difference of distance between currently selected match\r\n cardinality.repetitionIncrement += Math.abs(cardinality.passwordLength / (repeatedChar - indexOfCharValue))\r\n }\r\n }\r\n if (repeatCharacterExists) {\r\n cardinality.repetitionCharacter++\r\n const numberForUniqueCharacters = cardinality.passwordLength - cardinality.repetitionCharacter\r\n cardinality.repetitionIncrement = (numberForUniqueCharacters) ?\r\n Math.ceil(cardinality.repetitionIncrement / numberForUniqueCharacters) :\r\n Math.ceil(numberForUniqueCharacters)\r\n }\r\n }\r\n return cardinality;\r\n}\r\n\r\nfunction determinePasswordScoreFromPasswordCardinality(initialScore: number, cardinality: CardinalityStateOfPasswordCharLookUp): number{\r\n const passwordLength = cardinality.passwordLength;\r\n let currentScore = initialScore;\r\n\r\n if (cardinality.UpperCaseLetterCount > 0 && cardinality.UpperCaseLetterCount < passwordLength) {\r\n currentScore = parseInt(String(currentScore + ((passwordLength - cardinality.UpperCaseLetterCount) * 2)), 10)\r\n // sAlphaUC = String((passwordLength - cardinality.UpperCaseLetterCount) * 2)\r\n }\r\n if (cardinality.LowerCaseLetterCount > 0 && cardinality.LowerCaseLetterCount < passwordLength) {\r\n currentScore = parseInt(String(currentScore + ((passwordLength - cardinality.LowerCaseLetterCount) * 2)), 10)\r\n // sAlphaLC = String((passwordLength - cardinality.LowerCaseLetterCount) * 2)\r\n }\r\n if (cardinality.numberCount > 0 && cardinality.numberCount < passwordLength) {\r\n currentScore = parseInt(String(currentScore + (cardinality.numberCount * passwordScoreMultipliers.NumbersInPassword)), 10)\r\n // sNumber = String(cardinality.numberCount * passwordScoreMultipliers.NumbersInPassword)\r\n }\r\n if (cardinality.symbolCount > 0) {\r\n currentScore = parseInt(String(currentScore + (cardinality.symbolCount * passwordScoreMultipliers.SymbolsInPassword)), 10)\r\n //sSymbol = String(cardinality.symbolCount * passwordScoreMultipliers.SymbolsInPassword)\r\n }\r\n if (cardinality.middleCharacterCount > 0) {\r\n currentScore = parseInt(String(currentScore + (cardinality.middleCharacterCount * passwordScoreMultipliers.IncrementalNumbers)), 10)\r\n //sMidChar = String(cardinality.middleCharacterCount * passwordScoreMultipliers.IncrementalNumbers)\r\n }\r\n return currentScore;\r\n}\r\n\r\nfunction reverseText(str: string): string{\r\n return str.split(\"\").reverse().join(\"\")\r\n}\r\nfunction CheckForSequentialPatterns(pattern: string, sizeOfPatternToCheck: number, password: string): number{\r\n // Check for sequential string patterns (forward and reverse)\r\n let sequenceCount = 0;\r\n for (let sequentialAlpha = 0; sequentialAlpha < sizeOfPatternToCheck; sequentialAlpha++) {\r\n let sFwd = pattern.substring(sequentialAlpha, parseInt(String(sequentialAlpha + 3), 10))\r\n let sRev = reverseText(sFwd)\r\n if (password.toLowerCase().indexOf(sFwd) !== -1 ||\r\n password.toLowerCase().indexOf(sRev) !== -1) {\r\n sequenceCount++;\r\n }\r\n }\r\n return sequenceCount;\r\n}\r\ninterface SequenceChecks{\r\n AlphaSequenceDuplicates: number,\r\n NumericSequenceDuplicates: number,\r\n SequenceSymbolDuplicates: number,\r\n SequenceCount: number\r\n}\r\nfunction RunSequenceChecks(password: string): SequenceChecks{\r\n const result = {\r\n AlphaSequenceDuplicates: 0,// nSeqAlpha++\r\n NumericSequenceDuplicates:0,// nSeqNumber++\r\n SequenceSymbolDuplicates: 0,// nSeqSymbol++\r\n SequenceCount: 0,// nSeqChar++\r\n }\r\n const alphaSequence: string = \"abcdefghijklmnopqrstuvwxyz\"\r\n result.AlphaSequenceDuplicates = CheckForSequentialPatterns(alphaSequence,23,password);\r\n const numberSequence: string = \"01234567890\"\r\n result.NumericSequenceDuplicates = CheckForSequentialPatterns(numberSequence,8,password);\r\n let SequenceSymbols: string = \")!@#$%^&*()\"\r\n result.SequenceSymbolDuplicates = CheckForSequentialPatterns(SequenceSymbols,8,password);\r\n\r\n result.SequenceCount = result.SequenceSymbolDuplicates+ result.NumericSequenceDuplicates+ result.AlphaSequenceDuplicates;\r\n return result;\r\n}\r\n\r\nconst decimalNumberRadix = 10;\r\nfunction checkIfPasswordMissesRequirements(cardinality: CardinalityStateOfPasswordCharLookUp, sequenceChecksResults:SequenceChecks, currentPasswordScore: number): PasswordScore{\r\n const result: PasswordScore = JSON.parse(JSON.stringify(DefaultPasswordScore));\r\n const passwordLength = cardinality.passwordLength;\r\n let passwordScore = currentPasswordScore;\r\n if ((cardinality.LowerCaseLetterCount > 0 || cardinality.UpperCaseLetterCount > 0) && cardinality.symbolCount === 0 && cardinality.numberCount === 0) { // Only Letters\r\n passwordScore = parseInt(String(passwordScore - passwordLength), decimalNumberRadix);\r\n result.requirements[\"LettersOnly\"].status = FailScoreStatus;\r\n result.requirements[\"LettersOnly\"].count = passwordLength;\r\n result.requirements[\"LettersOnly\"].score = passwordLength;\r\n }\r\n if (cardinality.LowerCaseLetterCount === 0 && cardinality.UpperCaseLetterCount === 0 && cardinality.symbolCount === 0 && cardinality.numberCount > 0) { // Only Numbers\r\n passwordScore = parseInt(String(passwordScore - passwordLength), decimalNumberRadix);\r\n result.requirements[\"NumbersOnly\"].status = FailScoreStatus;\r\n result.requirements[\"NumbersOnly\"].count = passwordLength;\r\n result.requirements[\"NumbersOnly\"].score = passwordLength;\r\n }\r\n\r\n if (cardinality.repetitionCharacter > 0) { // Same character exists more than once\r\n passwordScore = parseInt(String(passwordScore - cardinality.repetitionIncrement), decimalNumberRadix);\r\n result.requirements[\"RepeatCharacters\"].status = PassScoreStatus;\r\n result.requirements[\"RepeatCharacters\"].count = cardinality.repetitionCharacter;\r\n result.requirements[\"RepeatCharacters\"].score = cardinality.repetitionIncrement;\r\n }\r\n if (cardinality.ConsecutiveUpperCaseLetterCount > 0) { // Consecutive Uppercase Letters exist\r\n result.requirements[\"ConsecutiveUppercaseLetters\"].score = cardinality.ConsecutiveUpperCaseLetterCount * passwordScoreMultipliers.ConsecutiveUpperCaseLetters;\r\n passwordScore = parseInt(String(passwordScore - result.requirements[\"ConsecutiveUppercaseLetters\"].score), decimalNumberRadix);\r\n result.requirements[\"ConsecutiveUppercaseLetters\"].count = cardinality.ConsecutiveUpperCaseLetterCount ;\r\n result.requirements[\"ConsecutiveUppercaseLetters\"].status = FailScoreStatus;\r\n }\r\n if (cardinality.ConsecutiveLowerCaseLetterCount > 0) { // Consecutive Lowercase Letters exist\r\n result.requirements[\"ConsecutiveLowercaseLetters\"].score = cardinality.ConsecutiveLowerCaseLetterCount * passwordScoreMultipliers.ConsecutiveLowerCaseLetters;\r\n passwordScore = parseInt(String(passwordScore - result.requirements[\"ConsecutiveLowercaseLetters\"].score ), decimalNumberRadix);\r\n result.requirements[\"ConsecutiveLowercaseLetters\"].count = cardinality.ConsecutiveLowerCaseLetterCount ;\r\n result.requirements[\"ConsecutiveLowercaseLetters\"].status = FailScoreStatus;\r\n }\r\n if (cardinality.ConsecutiveNumberCount > 0) { // Consecutive Numbers exist\r\n result.requirements[\"ConsecutiveNumbers\"].score = cardinality.ConsecutiveNumberCount * passwordScoreMultipliers.ConsecutiveNumbers;\r\n passwordScore = parseInt(String(passwordScore - result.requirements[\"ConsecutiveNumbers\"].score), decimalNumberRadix);\r\n result.requirements[\"ConsecutiveNumbers\"].count = cardinality.ConsecutiveNumberCount ;\r\n result.requirements[\"ConsecutiveNumbers\"].status = FailScoreStatus;\r\n }\r\n\r\n if (sequenceChecksResults.AlphaSequenceDuplicates > 0) { // Sequential alpha strings exist (3 characters or more)\r\n result.requirements[\"SequentialLetters\"].score = sequenceChecksResults.AlphaSequenceDuplicates * passwordScoreMultipliers.SequentialLetters;\r\n passwordScore = parseInt(String(passwordScore - result.requirements[\"SequentialLetters\"].score), decimalNumberRadix);\r\n result.requirements[\"SequentialLetters\"].count = sequenceChecksResults.AlphaSequenceDuplicates ;\r\n result.requirements[\"SequentialLetters\"].status = FailScoreStatus;\r\n }\r\n\r\n if (sequenceChecksResults.NumericSequenceDuplicates > 0) { // Sequential numeric strings exist (3 characters or more)\r\n result.requirements[\"SequentialNumbers\"].score = sequenceChecksResults.NumericSequenceDuplicates * passwordScoreMultipliers.SequentialNumber;\r\n passwordScore = parseInt(String(passwordScore - result.requirements[\"SequentialNumbers\"].score), decimalNumberRadix);\r\n result.requirements[\"SequentialNumbers\"].count = sequenceChecksResults.NumericSequenceDuplicates ;\r\n result.requirements[\"SequentialNumbers\"].status = FailScoreStatus;\r\n\r\n }\r\n if (sequenceChecksResults.SequenceSymbolDuplicates > 0) { // Sequential symbol strings exist (3 characters or more)\r\n result.requirements[\"SequentialSymbols\"].score = sequenceChecksResults.SequenceSymbolDuplicates * passwordScoreMultipliers.SequentialSymbol;\r\n passwordScore = parseInt(String(passwordScore - result.requirements[\"SequentialSymbols\"].score), decimalNumberRadix);\r\n result.requirements[\"SequentialSymbols\"].count = sequenceChecksResults.SequenceSymbolDuplicates ;\r\n result.requirements[\"SequentialSymbols\"].status = FailScoreStatus;\r\n\r\n }\r\n let requirementsMet = 0;\r\n if (passwordLength === 8) {\r\n result.requirements[\"NumberOfCharacters\"].status = PassScoreStatus;\r\n result.requirements[\"NumberOfCharacters\"].count = passwordLength;\r\n requirementsMet++;\r\n }\r\n else if (passwordLength > 8) {\r\n result.requirements[\"NumberOfCharacters\"].status = ExceedScoreStatus;\r\n result.requirements[\"NumberOfCharacters\"].count = passwordLength;\r\n requirementsMet++;\r\n }\r\n\r\n if(cardinality.UpperCaseLetterCount > 0){\r\n result.requirements[\"UppercaseLetters\"].status = PassScoreStatus;\r\n result.requirements[\"UppercaseLetters\"].count = cardinality.UpperCaseLetterCount;\r\n requirementsMet++;\r\n }\r\n if(cardinality.LowerCaseLetterCount > 0){\r\n result.requirements[\"LowercaseLetters\"].status = PassScoreStatus;\r\n result.requirements[\"LowercaseLetters\"].count = cardinality.LowerCaseLetterCount;\r\n requirementsMet++;\r\n }\r\n if(cardinality.numberCount > 0){\r\n result.requirements[\"Numbers\"].status = PassScoreStatus;\r\n result.requirements[\"Numbers\"].count = cardinality.numberCount;\r\n requirementsMet++;\r\n }\r\n if(cardinality.symbolCount > 0){\r\n result.requirements[\"Symbols\"].status = PassScoreStatus;\r\n result.requirements[\"Symbols\"].count = cardinality.symbolCount;\r\n requirementsMet++;\r\n }\r\n if(cardinality.middleCharacterCount > 0){\r\n result.requirements[\"MiddleNumbersOrSymbols\"].status = PassScoreStatus;\r\n result.requirements[\"MiddleNumbersOrSymbols\"].count = cardinality.middleCharacterCount;\r\n requirementsMet++;\r\n }\r\n const neededRequirements = passwordLength > 3 ? 3 : 4;\r\n result.requirements[\"Requirements\"].count = requirementsMet;\r\n const metRequirements = (requirementsMet > neededRequirements);\r\n if(metRequirements){\r\n passwordScore = parseInt(String(passwordScore + (requirementsMet * 2)), decimalNumberRadix)\r\n result.requirements[\"Requirements\"].status = (neededRequirements+1) > requirementsMet ?\r\n PassScoreStatus :\r\n ExceedScoreStatus;\r\n }\r\n result.calculatedAsANumber = passwordScore;\r\n return result;\r\n}\r\n\r\nexport default function CalculatePasswordScore(pwd: string): PasswordScore {\r\n if (pwd) {\r\n let passwordScoreAsNumber = parseInt(String(pwd.length * passwordScoreMultipliers.BaseLength), 10);\r\n const passwordCardinality = determineCardinalityOfPassword(pwd);\r\n const sequenceChecks = RunSequenceChecks(pwd);\r\n passwordScoreAsNumber = determinePasswordScoreFromPasswordCardinality(passwordScoreAsNumber, passwordCardinality);\r\n return checkIfPasswordMissesRequirements(passwordCardinality, sequenceChecks, passwordScoreAsNumber);\r\n }\r\n return JSON.parse(JSON.stringify(DefaultPasswordScore));\r\n}\r\n","import {ExceedScoreStatus, PassScoreStatus, ScoreStatus, WarnScoreStatus} from \"../CalculatePasswordScore\";\r\nimport passwordStatus_Exceed from \"../../../assets/images/img_status_exceed.png\"\r\nimport passwordStatus_Pass from \"../../../assets/images/img_status_pass.png\"\r\nimport passwordStatus_Warn from \"../../../assets/images/img_status_warn.png\"\r\nimport passwordStatus_Fail from \"../../../assets/images/img_status_fail.png\"\r\nimport {Image} from \"react-bootstrap\";\r\nimport * as React from \"react\";\r\n\r\nexport interface PasswordCheckStatusImageProps {status: ScoreStatus};\r\nexport default function PasswordCheckStatusImage(props: PasswordCheckStatusImageProps){\r\n switch(props.status){\r\n case PassScoreStatus:{\r\n return \r\n }\r\n case ExceedScoreStatus:{\r\n return \r\n }\r\n case WarnScoreStatus:{\r\n return \r\n }\r\n default: {\r\n return \r\n }\r\n }\r\n}\r\n","import {Component} from \"react\";\r\nimport {Table} from \"react-bootstrap\";\r\nimport PasswordCheckStatusImage from \"./PasswordCheckStatusImage\";\r\nimport {PasswordRequirementNames, PasswordScore} from \"../CalculatePasswordScore\";\r\n\r\nexport interface PasswordDeductionsProps{\r\n score: PasswordScore\r\n}\r\nexport default class PasswordDeductions extends Component {\r\n\r\n render() {\r\n const showScore = (score: number | undefined) => (score || 0) > 0 ? `-${score}` : `${score}`;\r\n const requirementsTableRow = (requirement: PasswordRequirementNames, otherRows: JSX.Element) => {\r\n return <>\r\n \r\n {otherRows}\r\n
{this.props.score.requirements[requirement].count}
\r\n {showScore(this.props.score.requirements[requirement].score)}\r\n \r\n }\r\n return <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {requirementsTableRow('LettersOnly',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {requirementsTableRow('NumbersOnly',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {requirementsTableRow('RepeatCharacters',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {requirementsTableRow('ConsecutiveUppercaseLetters',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {requirementsTableRow('ConsecutiveLowercaseLetters',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {requirementsTableRow('ConsecutiveNumbers',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {requirementsTableRow('SequentialLetters',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {requirementsTableRow('SequentialNumbers',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {requirementsTableRow('SequentialSymbols',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n
DeductionsTypeRateCountBonus
Letters OnlyFlat-n
Numbers OnlyFlat-n
Repeat Characters (Case Insensitive)Comp -
Consecutive Uppercase LettersFlat-(n*2)
Consecutive Lowercase LettersFlat-(n*2)
Consecutive NumbersFlat-(n*2)
Sequential Letters (3+)Flat-(n*3)
Sequential Numbers (3+)Flat-(n*3)
Sequential Symbols (3+)Flat-(n*3)
\r\n \r\n }\r\n}\r\n","import {Component} from \"react\";\r\nimport {Table} from \"react-bootstrap\";\r\nimport {PasswordRequirementNames, PasswordScore} from \"../CalculatePasswordScore\";\r\nimport PasswordCheckStatusImage from \"./PasswordCheckStatusImage\";\r\n\r\nexport interface PasswordScoreAdditionsProps{\r\n score: PasswordScore\r\n}\r\nexport default class PasswordScoreAdditions extends Component {\r\n\r\n render() {\r\n const showScore = (score: number | undefined) => (score || 0) > 0 ? `+${score}` : `${score}`;\r\n const requirementsTableRow = (requirement: PasswordRequirementNames, otherRows: JSX.Element) => {\r\n return <>\r\n \r\n {otherRows}\r\n
{this.props.score.requirements[requirement].count}
\r\n {showScore(this.props.score.requirements[requirement].score)}\r\n \r\n }\r\n return <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {requirementsTableRow('NumberOfCharacters',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {requirementsTableRow('UppercaseLetters',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {requirementsTableRow('LowercaseLetters',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {requirementsTableRow('Numbers',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {requirementsTableRow('Symbols',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {requirementsTableRow('MiddleNumbersOrSymbols',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {requirementsTableRow('Requirements',<>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n
AdditionsTypeRateCountBonus
Number of CharactersFlat+(n*4)
Uppercase LettersCond/Incr+((len-n)*2)
Lowercase LettersCond/Incr+((len-n)*2)
NumbersCond+(n*4)
SymbolsFlat+(n*6)
Middle Numbers or SymbolsFlat+(n*2)
RequirementsFlat+(n*2)
\r\n \r\n }\r\n}\r\n","import {Component} from \"react\";\r\nimport {Button, Card, Col, Form, FormText, Row, Table} from \"react-bootstrap\";\r\nimport {Redirect} from \"react-router-dom\";\r\nimport {Home} from \"../../../config/Routes\";\r\nimport {toast} from \"react-toastify\";\r\nimport \"../../../assets/scss/SetPassword.scss\"\r\nimport PasswordDeductions from \"./PasswordDeductions\";\r\nimport PasswordScoreAdditions from \"./PasswordScoreAdditions\";\r\nimport CalculatePasswordScore, {DefaultPasswordScore, PasswordScore} from \"../CalculatePasswordScore\";\r\nimport {FaEye, FaEyeSlash} from \"react-icons/all\";\r\n\r\nexport interface NewPasswordProps{\r\n submitPassword: (password: string)=> void\r\n}\r\ninterface NewPasswordState{\r\n password: string\r\n goHome: boolean\r\n score: PasswordScore\r\n showPasswordText: boolean\r\n}\r\nexport default class NewPassword extends Component {\r\n\r\n state: NewPasswordState ={\r\n goHome: false,\r\n password: '',\r\n showPasswordText: false,\r\n score: DefaultPasswordScore\r\n }\r\n passwordAppearsValid = (): boolean => {\r\n return true;\r\n }\r\n submitPassword = ()=> {\r\n if(this.passwordAppearsValid()){\r\n this.props.submitPassword(this.state.password);\r\n }else{\r\n toast.error(\"Password strength does not meet minimum strength requirements!\")\r\n }\r\n }\r\n changePassword = (password: string): void => {\r\n const score = CalculatePasswordScore(password);\r\n this.setState({password, score});\r\n }\r\n\r\n render() {\r\n return
\r\n {this.state.goHome && }\r\n \r\n Enter New Password\r\n
{e.preventDefault();this.submitPassword()}}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.showPasswordText && {this.setState({showPasswordText: false})}}/> }\r\n {!this.state.showPasswordText && {this.setState({showPasswordText: true})}}/>}\r\n \r\n \r\n \r\n \r\n {this.changePassword(e.target.value)}}\r\n type={this.state.showPasswordText ?'text' :'password'} placeholder=\"New Password\" />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n }\r\n}\r\n","import ApiResponse from \"../ApiResponse\";\r\nimport {ApiAuthRequestInterface, BuildAuthRequestFromAppState} from \"../../authentication/BuildAuthRequestInterface\";\r\nimport {ApiErrorReturn} from \"../ApiError\";\r\nimport ApiUrl, {PortalSource} from \"../ApiUrl\";\r\n\r\ntype ChangeUserPasswordResponse = ApiResponse;\r\n\r\nconst buildFetchRequest = (body: string, apiAuth: ApiAuthRequestInterface): RequestInit => {\r\n return {\r\n method: 'post',\r\n headers: new Headers({\r\n 'auth_token': apiAuth?.auth_token,\r\n 'IsMarketPlace': apiAuth.IsMarketPlace,\r\n 'Agent': apiAuth.Agent,\r\n 'api_version' :apiAuth.api_version,\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n }),\r\n body,\r\n }}\r\nexport async function UpdateUserPassword(UserName: string, EmailSecret: string, Pin: string, NewPassword: string, Phone: string, errorHandling: ApiErrorReturn): Promise{\r\n const apiAuth = BuildAuthRequestFromAppState(undefined);\r\n const Source = PortalSource();\r\n const body = JSON.stringify({\r\n Source,\r\n UserName,\r\n EmailSecret,\r\n Pin,\r\n Phone,\r\n NewPassword,\r\n OldPassword: '',\r\n\r\n });\r\n try {\r\n const response = await fetch(ApiUrl() + \"FFOrderAccount/UpdateUserPassword\", buildFetchRequest(body, apiAuth));\r\n return await response.json() as ChangeUserPasswordResponse;\r\n }catch(error: unknown){\r\n errorHandling(error);\r\n return null;\r\n }\r\n}\r\n","import {Component} from \"react\";\r\nimport {AppPageWrapper} from \"../NavMenu/AppPageWrapper\";\r\nimport {Spinner} from \"react-bootstrap\";\r\nimport InvalidPasswordReset from \"./InvalidPasswordReset\";\r\nimport RequestPhonePin from \"./RequestPhonePin\";\r\nimport EnterPhonePin from \"./EnterPhonePin\";\r\nimport NewPassword from \"./PasswordInputs/NewPassword\";\r\nimport {Home} from \"../../config/Routes\";\r\nimport {Redirect} from \"react-router-dom\";\r\nimport {UpdateUserPassword} from \"../../api/Secuirty/UpdateUserPassword\";\r\nimport {toast} from \"react-toastify\";\r\n\r\nfunction addDays(date: Date, days: number) {\r\n const result = new Date(date);\r\n result.setDate(result.getDate() + days);\r\n return result;\r\n}\r\n\r\nexport interface PasswordResetRouteLandingRoute{\r\n linkId?: string\r\n linkTime?: string\r\n userName?: string\r\n}\r\ninterface PasswordResetRouteLandingState{\r\n requestedPhonePinSend: boolean\r\n pin: string\r\n showPassword: boolean\r\n changingPassword: boolean\r\n goHome: boolean\r\n}\r\nexport default class PasswordResetLanding extends Component {\r\n\r\n state: PasswordResetRouteLandingState = {\r\n requestedPhonePinSend: false,\r\n pin: '',\r\n showPassword: false,\r\n changingPassword: false,\r\n goHome: false,\r\n }\r\n\r\n isPasswordTimeInvalid = (): boolean => {\r\n const linkTime = parseInt(this.props.linkTime || '');\r\n if(!this.props.linkTime || isNaN(linkTime)){\r\n return true;\r\n }\r\n const linkCreatedEpochTimeMS = linkTime * 1000;\r\n const currentDate = new Date(Date.now());\r\n const expireDate = addDays(new Date(linkCreatedEpochTimeMS), 1);\r\n const timeBetweenDate = expireDate.getUTCMilliseconds() - currentDate.getUTCMilliseconds();\r\n return timeBetweenDate < 1;\r\n }\r\n\r\n pinRequested = (): void => {\r\n this.setState({requestedPhonePinSend: true})\r\n }\r\n\r\n pinChanged = (pin: string): void => {\r\n this.setState({pin})\r\n }\r\n\r\n pinSubmitted = (): void => {\r\n this.setState({showPassword: true});\r\n }\r\n\r\n requestPasswordChange = (newPassword: string): void => {\r\n const reportError = () => {\r\n toast.error(\"Unknown Error Updating Password! Password May Have Been To Similar!\")\r\n this.setState({changingPassword: false, showPassword: true});\r\n }\r\n const passwordChanged = () => {\r\n toast.success(\"Password Changed!\")\r\n this.setState({goHome: true});\r\n }\r\n UpdateUserPassword(this.props.userName || '', this.props.linkId || '', this.state.pin, newPassword, '', reportError).then(passwordChanged);\r\n this.setState({changingPassword: true});\r\n }\r\n\r\n render() {\r\n const validLinkTime = this.isPasswordTimeInvalid();\r\n return\r\n
\r\n {this.state.goHome && }\r\n {!validLinkTime &&\r\n \r\n }\r\n {!this.state.changingPassword && validLinkTime && !this.state.requestedPhonePinSend &&\r\n \r\n }\r\n {!this.state.changingPassword && validLinkTime && !this.state.showPassword && this.state.requestedPhonePinSend &&\r\n {this.pinChanged(e)}}\r\n submitPin={()=>{this.pinSubmitted()}} />\r\n }\r\n {!this.state.changingPassword && validLinkTime && this.state.showPassword &&\r\n {this.requestPasswordChange(password)}}/>\r\n }\r\n {validLinkTime && this.state.changingPassword && <>\r\n \r\n
\r\n Updating Password..\r\n }\r\n
\r\n
\r\n }\r\n}\r\n","import { RoleData } from \"../../components/Administration/RolesPermissions/PermissionsRoleModal\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport Role from \"../Roles/Model/Role\"\r\n\r\nexport interface Permission {\r\n PermissionID: number\r\n Title: string\r\n Description?: string\r\n RecordStatusType?: string\r\n ActiveDate?: string\r\n InActiveDate?: string\r\n ModifiedBy?: string\r\n UpdateDate?: string\r\n ApprovedBy?: string\r\n ApprovedOn?: string\r\n Role?: string\r\n Permission?: string\r\n SubscriptionPlan?: string\r\n SubscriptionPlanID?: number\r\n}\r\n\r\n// Subscription\r\nexport default function PermissionsGet() {\r\n return ObservableFromFetch(\"FFOrderPermissionSubscription/GetPermission\")\r\n}\r\n\r\nexport function UnassignedSubscriptionPermissionsGet() {\r\n return ObservableFromFetch(\"FFOrderSubscriptionPermission/GetNotAssignedPermission\")\r\n}\r\n\r\nexport function PermissionsOfSubscriptionPlanGet(id: number, title: string) {\r\n const requestBody: string = new URLSearchParams({\r\n subscriptionPlanID: id.toString(),\r\n subscriptionPlanTitle: title\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderSubscriptionPermission/GetAssignedPermissionOfSubscriptionPlan?\" + requestBody)\r\n}\r\n\r\nexport function NotAssignedPermissionsOfSubscriptionPlanGet(id: number, title: string) {\r\n const requestBody: string = new URLSearchParams({\r\n subscriptionPlanID: id.toString(),\r\n subscriptionPlanTitle: title\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderSubscriptionPermission/GetNotAssignedPermissionOfSubscriptionPlan?\" + requestBody)\r\n}\r\n\r\nexport function SubscriptionPlanPermissionSave(subscriptionPlanID: number, description: string, modifiedBy: string, permissions: Permission[]) {\r\n const requestBody: string = JSON.stringify({\r\n SubscriptionPlanID: subscriptionPlanID,\r\n Description: description,\r\n ModifiedBy: modifiedBy,\r\n AssignedPermission: permissions\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderSubscriptionPermission/SaveSubscriptionPlanPermission\", requestBody)\r\n}\r\n\r\n// Permissions Approval\r\nexport function PendingPermissionsGet() {\r\n return ObservableFromFetch(\"FFOrderPermissionApproval/GetPendingPermission\")\r\n}\r\n\r\nexport function InactivePermissionsGet() {\r\n return ObservableFromFetch(\"FFOrderPermissionApproval/GetInActivePermission\")\r\n}\r\n\r\nexport function PermissionsApprove(permissions: Permission[], approvedBy: string) {\r\n const requestBody = JSON.stringify({\r\n ApprovePermission: permissions,\r\n ApprovedBy: approvedBy\r\n })\r\n return ObservableFromFetch(\"FFOrderPermissionApproval/ApprovedPermission\", requestBody)\r\n}\r\n\r\n// Role\r\nexport function RolesGet() {\r\n return ObservableFromFetch(\"FFOrderRolePermission/GetRole\")\r\n}\r\n\r\nexport function PermissionsOfRoleGet(id: number, title: string) {\r\n const requestBody: string = new URLSearchParams({\r\n roleID: id.toString(),\r\n roleTitle: title\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderRolePermission/GetAssignedPermissionOfRole?\" + requestBody)\r\n}\r\n\r\nexport function NotAssignedPermissionsOfRoleGet(id: number, title: string) {\r\n const requestBody: string = new URLSearchParams({\r\n roleID: id.toString(),\r\n roleTitle: title\r\n }).toString()\r\n\r\n return ObservableFromFetch(\"FFOrderRolePermission/GetNotAssignedPermissionOfRole?\" + requestBody)\r\n}\r\n\r\nexport function RoleCreate(data: RoleData) {\r\n const requestBody: string = JSON.stringify(data)\r\n return ObservableFromFetch(\"FFOrderRolePermission/CreateRole\", requestBody)\r\n}\r\n\r\nexport function PermissionInRoleSave(data: RoleData | undefined, permissions: Permission[]) {\r\n const requestBody: string = JSON.stringify({\r\n RoleID: data?.RoleID,\r\n ModifiedBy: data?.ModifiedBy,\r\n Level: data?.Level,\r\n Description: data?.Description,\r\n ActiveDate: data?.ActiveDate,\r\n InActiveDate: data?.InActiveDate,\r\n AssignedPermission: permissions,\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderRolePermission/SavePermissionInRole\", requestBody)\r\n}\r\n\r\n// Subscriptions/Permissions Relationship\r\nexport function PendingSubscriptionsPermissionsMappingGet() {\r\n return ObservableFromFetch(\"FFOrderSubscriptionPermissionApproval/GetPendingSubscriptionPlanPermissionMapping\")\r\n}\r\n\r\nexport function InactiveSubscriptionsPermissionsMappingGet() {\r\n return ObservableFromFetch(\"FFOrderSubscriptionPermissionApproval/GetInActiveSubscriptionPlanPermissionMapping\")\r\n}\r\n\r\nexport function SubscriptionsPermissionsMappingApprove(permissions: Permission[], approvedBy: string) {\r\n const requestBody = JSON.stringify({\r\n ApproveSubscriptionPlanPermission: permissions,\r\n ApprovedBy: approvedBy\r\n })\r\n return ObservableFromFetch(\"FFOrderSubscriptionPermissionApproval/ApprovedSubscriptionPlanPermissionMapping\", requestBody)\r\n}\r\n\r\n// Role Permissions Approval\r\nexport function PendingRolePermissionsGet() {\r\n return ObservableFromFetch(\"FFOrderRolePermissionApproval/GetPendingRolePermissionMapping\")\r\n}\r\n\r\nexport function InactiveRolePermissionsGet() {\r\n return ObservableFromFetch(\"FFOrderRolePermissionApproval/GetInActiveRolePermissionMapping\")\r\n}\r\n\r\nexport function RolePermissionsApprove(permissions: Permission[], approvedBy: string) {\r\n const requestBody = JSON.stringify({\r\n ApproveRolePermission: permissions,\r\n ApprovedBy: approvedBy\r\n })\r\n return ObservableFromFetch(\"FFOrderRolePermissionApproval/ApprovedRolePermissionMapping\", requestBody)\r\n}","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function SubscriptionPlanCreate(title: string, description: string, username: string) {\r\n const requestBody: string = JSON.stringify({\r\n Title: title,\r\n Description: description,\r\n ModifiedBy: username\r\n })\r\n\r\n return ObservableFromFetch(\"FFOrderSubscriptionPermission/CreateSubscriptionPlan\", requestBody)\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Form, Col, Button, Row, Table, Container, Image } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport { APIError } from \"../../../api/ObservableFromFetch\"\r\nimport SubscriptionPlan from \"../../../api/Administration/Model/SubscriptionPlan\"\r\nimport SubscriptionPermissionsGet, { PermissionsOfSubscriptionPlanGet, NotAssignedPermissionsOfSubscriptionPlanGet, Permission, UnassignedSubscriptionPermissionsGet } from \"../../../api/Administration/Permissions\"\r\nimport { forkJoin, Subscription } from \"rxjs\"\r\nimport GetSubscriptionPlans from \"../../../api/Administration/GetSubscriptionPlans\"\r\nimport { FaAngleDoubleDown, FaAngleDoubleLeft, FaAngleDoubleRight, FaAngleDoubleUp, FaAngleDown, FaAngleUp, FaChevronLeft, FaChevronRight, FaPencilAlt } from \"react-icons/fa\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\nimport DatePicker from 'react-datepicker'\r\nimport { parseISO, format } from \"date-fns\"\r\nimport { BirthdayInput } from \"../../FormattedInputs/BirthdayInput\"\r\nimport { SubscriptionPlanPermissionSave } from \"../../../api/Administration/Permissions\"\r\nimport SubscriptionPlanCreate from \"../../../api/Administration/SubscriptionPlanCreate\"\r\n\r\ninterface PermissionsSubscriptionModalProps {\r\n onCancel: () => void\r\n userName?: string\r\n}\r\n\r\ninterface PermissionsSubscriptionModalState {\r\n loading: boolean\r\n saving: boolean\r\n selectedSubscription?: SubscriptionData\r\n editPermission?: EditPermission\r\n subscriptions: SubscriptionPlan[]\r\n permissions: Permission[]\r\n unassigned: Permission[]\r\n assigned: Permission[]\r\n notassigned: Permission[]\r\n selectionLeft: number[]\r\n selectionRight: number[]\r\n showAddNewModal: boolean\r\n showEditModal: boolean\r\n newSubscription?: SubscriptionData\r\n}\r\n\r\nexport interface EditPermission {\r\n ID?: number\r\n ActiveDate?: Date\r\n InactiveDate?: Date\r\n Title?: string\r\n}\r\n\r\ninterface SubscriptionData {\r\n Description?: string\r\n SubscriptionPlanID?: number\r\n Title?: string\r\n}\r\n\r\nexport default class PermissionsSubscriptionModal extends React.PureComponent {\r\n state: PermissionsSubscriptionModalState = {\r\n loading: false,\r\n saving: false,\r\n selectedSubscription: undefined,\r\n editPermission: undefined,\r\n subscriptions: [],\r\n permissions: [],\r\n unassigned: [],\r\n assigned: [],\r\n notassigned: [],\r\n selectionLeft: [],\r\n selectionRight: [],\r\n showAddNewModal: false,\r\n showEditModal: false,\r\n newSubscription: undefined\r\n }\r\n\r\n initialLoadSubscriptions?: Subscription\r\n loadSubscription?: Subscription\r\n updateSubscription?: Subscription\r\n activedate = React.createRef()\r\n inactivedate = React.createRef()\r\n\r\n componentDidMount() {\r\n this.loadInitialData()\r\n }\r\n\r\n loadInitialData() {\r\n this.initialLoadSubscriptions && this.initialLoadSubscriptions.unsubscribe()\r\n this.setState({ loading: true })\r\n this.initialLoadSubscriptions = forkJoin({\r\n subscriptions: GetSubscriptionPlans(),\r\n permissions: SubscriptionPermissionsGet(),\r\n unassigned: UnassignedSubscriptionPermissionsGet()\r\n })\r\n .subscribe(\r\n ({ subscriptions, permissions, unassigned }) => {\r\n const subscriptionPlanID = this.state.selectedSubscription?.SubscriptionPlanID\r\n this.setState({ subscriptions: [...subscriptions], permissions: [...permissions], unassigned: [...unassigned], loading: false, selectedSubscription: undefined, selectionLeft: [], selectionRight: [] })\r\n if (subscriptionPlanID) this.selectSubscription(subscriptionPlanID)\r\n },\r\n (error) => {\r\n this.handleAPIError(error, { loading: false })\r\n }\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.initialLoadSubscriptions && this.initialLoadSubscriptions.unsubscribe()\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.updateSubscription && this.updateSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n selectSubscription = (id: number) => {\r\n const subs = this.state.subscriptions.find(item => item.SubscriptionPlanID === id)\r\n if (subs) {\r\n this.setState({ selectedSubscription: {Title: subs.Title, Description: subs.Description, SubscriptionPlanID: subs.SubscriptionPlanID} })\r\n\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.loadSubscription = forkJoin({\r\n assigned: PermissionsOfSubscriptionPlanGet(subs?.SubscriptionPlanID || 0, subs?.Title || \"\"),\r\n notassigned: NotAssignedPermissionsOfSubscriptionPlanGet(subs?.SubscriptionPlanID || 0, subs?.Title || \"\")\r\n })\r\n .subscribe(\r\n ({ assigned, notassigned }) => this.setState({ assigned: [...assigned], notassigned: [...notassigned], loading: false }),\r\n (error) => {\r\n this.handleAPIError(error, { loading: false })\r\n }\r\n )\r\n }\r\n else {this.setState({ selectedSubscription: undefined })}\r\n }\r\n\r\n handleAddNewCancel = () => this.setState({ showAddNewModal: false, newSubscription: undefined })\r\n handleEditCancel = () => this.setState({ showEditModal: false, editPermission: undefined })\r\n handleSubmit = () => {\r\n this.updateSubscription && this.updateSubscription.unsubscribe()\r\n this.setState({ saving: true })\r\n const { selectedSubscription, assigned } = this.state\r\n\r\n const subscriptionPlanID = selectedSubscription?.SubscriptionPlanID || 0\r\n const subscriptionPlanDescription = selectedSubscription?.Description || \"\"\r\n this.updateSubscription = SubscriptionPlanPermissionSave(subscriptionPlanID, subscriptionPlanDescription, this.props.userName || \"\", assigned).subscribe(\r\n data => {\r\n this.setState({ saving: false })\r\n toast.success(data)\r\n this.loadInitialData()\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n handleAddNewSubmit = () => {\r\n this.updateSubscription && this.updateSubscription.unsubscribe()\r\n this.setState({ saving: true })\r\n const { newSubscription } = this.state\r\n\r\n this.updateSubscription = SubscriptionPlanCreate(newSubscription?.Title || \"\", newSubscription?.Description || \"\", this.props.userName || \"\").subscribe(\r\n data => {\r\n this.setState({ saving: false, showAddNewModal: false, loading: true })\r\n toast.success(data)\r\n GetSubscriptionPlans().subscribe(\r\n data => this.setState({ subscriptions: data, loading: false, selectedSubscription: undefined }),\r\n error => this.handleAPIError(error, { loading: false })\r\n )\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n handleEditSubmit = () => {\r\n const { editPermission, assigned } = this.state\r\n const relatedPermission = assigned.find(item => item.PermissionID === editPermission?.ID)\r\n\r\n if (relatedPermission) {\r\n relatedPermission.ActiveDate = format(editPermission?.ActiveDate || 0, \"yyyy-MM-dd'T'HH:mm:ss\")\r\n relatedPermission.InActiveDate = format(editPermission?.InactiveDate || 0, \"yyyy-MM-dd'T'HH:mm:ss\")\r\n }\r\n\r\n this.setState({ showEditModal: false, editPermission: undefined })\r\n }\r\n handleAddNew = () => this.setState({ showAddNewModal: true })\r\n handleEdit = (permission: Permission) => this.setState({ showEditModal: true, editPermission: { ID: permission.PermissionID, Title: permission.Title, ActiveDate: parseISO(permission.ActiveDate || \"\"), InactiveDate: parseISO(permission.InActiveDate || \"\") } })\r\n\r\n addNewValid = () => {\r\n const { newSubscription } = this.state\r\n return !!newSubscription && !!newSubscription.Title && !!newSubscription.Description\r\n }\r\n editValid = () => {\r\n const { editPermission } = this.state\r\n return !!editPermission && !!editPermission.ActiveDate && !!editPermission.InactiveDate\r\n }\r\n validSubmit = () => {\r\n const { selectedSubscription } = this.state\r\n return !!selectedSubscription && !!selectedSubscription.Description\r\n }\r\n\r\n\r\n handleActiveDateChange = (date: Date) => {\r\n const inactiveDate = this.state.editPermission?.InactiveDate\r\n const dateiInPast: boolean = inactiveDate instanceof Date && inactiveDate < new Date\r\n const allowChange = inactiveDate instanceof Date ? date < inactiveDate || dateiInPast : true\r\n this.setState({ editPermission: { ...this.state.editPermission, ActiveDate: allowChange ? date : undefined, InactiveDate: dateiInPast ? undefined : inactiveDate } })\r\n }\r\n\r\n handleInActiveDateChange = (date: Date) => {\r\n const activeDate = this.state.editPermission?.ActiveDate\r\n const allowChange = activeDate instanceof Date ? date > activeDate : true\r\n this.setState({ editPermission: { ...this.state.editPermission, InactiveDate: allowChange ? date : undefined } })\r\n }\r\n\r\n move(dir: \"ltr\" | \"rtl\", all?: boolean) {\r\n if (dir === \"ltr\") {\r\n const ids = !!all ? this.state.notassigned.map(item => item.PermissionID) : this.state.selectionLeft\r\n this.setState({\r\n selectionLeft: [],\r\n notassigned: this.state.notassigned.filter(item => !ids.includes(item.PermissionID)),\r\n assigned: [...this.state.assigned, ...this.state.notassigned.filter(item => ids.includes(item.PermissionID))]\r\n })\r\n } else {\r\n const ids = !!all ? this.state.assigned.map(item => item.PermissionID) : this.state.selectionRight\r\n this.setState({\r\n selectionRight: [],\r\n notassigned: [...this.state.notassigned, ...this.state.assigned.filter(item => ids.includes(item.PermissionID))],\r\n assigned: this.state.assigned.filter(item => !ids.includes(item.PermissionID))\r\n })\r\n }\r\n }\r\n\r\n handleRightItemClick = (id: number) => {\r\n if (this.state.selectionRight.includes(id)) {\r\n this.setState({ selectionRight: this.state.selectionRight.filter(item => item !== id) })\r\n } else {\r\n this.setState({ selectionRight: [...this.state.selectionRight, id] })\r\n }\r\n }\r\n\r\n render() {\r\n const { loading, saving, selectedSubscription, editPermission, subscriptions, selectionLeft, selectionRight, showAddNewModal, showEditModal, newSubscription } = this.state\r\n const left = !selectedSubscription ? this.state.unassigned : this.state.notassigned\r\n const right = !selectedSubscription ? [] : this.state.assigned\r\n const disabled = !selectedSubscription || loading\r\n\r\n return (\r\n <>\r\n \r\n \r\n Subscription/Permission\r\n \r\n \r\n \r\n \r\n Subscription\r\n \r\n this.selectSubscription(Number(e.target.value))}>\r\n \r\n {subscriptions && subscriptions.map((plan: SubscriptionPlan) => )}\r\n \r\n \r\n \r\n \r\n Description\r\n \r\n this.setState({ selectedSubscription: {...selectedSubscription, Description: e.target.value}})} />\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n Add New\r\n \r\n Submit\r\n \r\n
\r\n\r\n this.handleAddNewCancel()} size=\"lg\" backdrop=\"static\" dialogClassName=\"dark\">\r\n \r\n Add New Subscription\r\n \r\n \r\n \r\n Subscription \r\n \r\n this.setState({ newSubscription: { ...newSubscription, Title: e.target.value } })} />\r\n \r\n \r\n \r\n Description\r\n \r\n this.setState({ newSubscription: { ...newSubscription, Description: e.target.value } })} />\r\n \r\n \r\n \r\n \r\n \r\n this.handleAddNewSubmit()} disabled={!this.addNewValid()} spin={saving} disableOnSpin>Next\r\n \r\n \r\n\r\n {!!editPermission && this.handleEditCancel()} size=\"lg\" backdrop=\"static\" dialogClassName=\"dark\">\r\n \r\n Edit Subscription\r\n \r\n \r\n \r\n Subscription\r\n \r\n \r\n \r\n \r\n Active Date\r\n \r\n { if (this.activedate && this.activedate.current && e.key === 'Tab') { this.activedate.current.setOpen(false) } }}\r\n onChange={date => this.handleActiveDateChange(date as Date)}\r\n customInput={} />\r\n \r\n \r\n \r\n Permission\r\n \r\n \r\n \r\n \r\n Inactive Date\r\n \r\n { if (this.inactivedate && this.inactivedate.current && e.key === 'Tab') { this.inactivedate.current.setOpen(false) } }}\r\n onChange={date => this.handleInActiveDateChange(date as Date)}\r\n customInput={} />\r\n \r\n \r\n \r\n \r\n \r\n this.handleEditSubmit()} disabled={!this.editValid()} spin={saving} disableOnSpin>Finish\r\n \r\n }\r\n \r\n )\r\n }\r\n}\r\n","import React, { ReactFragment } from \"react\"\r\nimport { Col, Row, Button, Container, Table } from \"react-bootstrap\"\r\nimport { FaAngleDoubleDown, FaAngleDoubleLeft, FaAngleDoubleRight, FaAngleDoubleUp, FaAngleDown, FaAngleUp, FaChevronLeft, FaChevronRight } from \"react-icons/fa\"\r\nimport _lodash from \"lodash\"\r\n\r\nexport interface ColumnDefinition {\r\n title: string\r\n value: keyof T | ((data: T) => ReactFragment)\r\n}\r\n\r\ninterface DualTableBoxProps {\r\n disabled?: boolean\r\n idKey: keyof T\r\n options: T[]\r\n optionsAtRight: T[]\r\n leftTitle: string\r\n rightTitle: string\r\n leftColumns: ColumnDefinition[]\r\n rightColumns: ColumnDefinition[]\r\n hideLeftHeader?: boolean\r\n hideRightHeader?: boolean\r\n onChange: (selected: T[]) => void\r\n}\r\n\r\ninterface DualTableBoxSelection {\r\n optionsAtRight: T[]\r\n selectionLeft: T[]\r\n selectionRight: T[]\r\n}\r\n\r\ninterface DualTableBoxState extends DualTableBoxSelection {\r\n optionsAtRight: T[]\r\n}\r\n\r\nexport default class DualTableBox extends React.PureComponent, DualTableBoxState> {\r\n state: DualTableBoxState = {\r\n optionsAtRight: [...this.props.optionsAtRight],\r\n selectionLeft: [],\r\n selectionRight: []\r\n }\r\n\r\n componentDidUpdate(prevProps: DualTableBoxProps, prevState: DualTableBoxState) {\r\n if (!_lodash.isEqual(this.props.optionsAtRight, prevProps.optionsAtRight)) {\r\n this.setState({ optionsAtRight: [...this.props.optionsAtRight] })\r\n }\r\n if (!_lodash.isEqual(this.state.optionsAtRight, prevState.optionsAtRight)) {\r\n const selection = this.props.options.filter(option => this.state.optionsAtRight.includes(option))\r\n this.props.onChange(selection)\r\n }\r\n }\r\n\r\n move(dir: \"ltr\" | \"rtl\", all?: boolean) {\r\n const { selectionLeft, selectionRight, optionsAtRight } = this.state\r\n const newSelection = all\r\n ? (dir === \"ltr\")\r\n ? this.props.options\r\n : []\r\n : (dir === \"ltr\")\r\n ? [...optionsAtRight, ...selectionLeft]\r\n : optionsAtRight.filter(option => !selectionRight.includes(option))\r\n\r\n dir === \"ltr\"\r\n ? this.setState({ selectionLeft: [], optionsAtRight: newSelection })\r\n : this.setState({ selectionRight: [], optionsAtRight: newSelection })\r\n }\r\n\r\n columnValue = (column: ColumnDefinition, data: T) => {\r\n if (typeof column.value === \"string\" && column.value in data) {\r\n return data[column.value as keyof T]\r\n } else if (typeof column.value === \"function\") {\r\n const columnFn = (column.value as ((data: T) => ReactFragment))\r\n return columnFn(data)\r\n }\r\n return \"\"\r\n }\r\n\r\n handleItemClick = (clicked: T, fieldName: keyof DualTableBoxSelection) => {\r\n if (this.state[fieldName].includes(clicked)) {\r\n this.setState({ ...{}, [fieldName]: this.state[fieldName].filter(item => item !== clicked) })\r\n } else {\r\n this.setState({ ...{}, [fieldName]: [...this.state[fieldName], clicked] })\r\n }\r\n }\r\n\r\n render() {\r\n const table = (options: T[], columns: ColumnDefinition[], selectionFieldName: keyof DualTableBoxSelection, showHeader: boolean) =>\r\n \r\n {showHeader && \r\n \r\n {columns.map((item, i) => )}\r\n \r\n }\r\n \r\n {options.map((item, i) =>\r\n this.handleItemClick(item, selectionFieldName)}>\r\n {columns.map((col, j) => )}\r\n )}\r\n \r\n
{item.title}
{this.columnValue(col, item)}
\r\n const { selectionLeft, selectionRight, optionsAtRight } = this.state\r\n const options: T[] = this.props.options\r\n const availableOptions = options.filter(option => !optionsAtRight.includes(option))\r\n return (\r\n <>\r\n \r\n \r\n {this.props.leftTitle}\r\n \r\n {this.props.rightTitle}\r\n \r\n \r\n {this.props.leftTitle}\r\n \r\n {table(availableOptions, this.props.leftColumns, \"selectionLeft\", !this.props.hideLeftHeader)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.props.rightTitle}\r\n \r\n {table(optionsAtRight, this.props.rightColumns, \"selectionRight\", !this.props.hideRightHeader)}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n static defaultProps = { selected: [] }\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Form, Col, Button } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { connect } from \"react-redux\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { Home } from \"../../config/Routes\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport PermissionsSubscriptionModal from \"./RolesPermissions/PermissionsSubscriptionModal\"\r\nimport { AppState } from \"../../AppState\"\r\nimport { getUserNameForSelectedCompany } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport ApproveNewPermissionsModal from \"./RolesPermissions/ApproveNewPermissionsModal\"\r\nimport PermissionsRoleModal from \"./RolesPermissions/PermissionsRoleModal\"\r\nimport ApproveRolePermissionsModal from \"./RolesPermissions/ApproveRolePermissionsModal\"\r\nimport ApproveSubscriptionRelationshipsModal from \"./RolesPermissions/ApproveSubscriptionRelationshipsModal\"\r\n\r\ninterface PermissionsSelectionProps {\r\n}\r\n\r\ninterface PermissionsSelectionAuthProps {\r\n UserName?: string\r\n}\r\n\r\nenum PermissionSelectionType {\r\n PermissionsSubscription = \"permSubs\",\r\n PermissionsRole = \"permRole\",\r\n ApproveNewPermissions = \"approvePerms\",\r\n ApproveSubscriptions = \"approveSubs\",\r\n ApproveRoles = \"approveRoles\",\r\n NoSelection = \"\"\r\n}\r\n\r\ninterface PermissionsSelectionState {\r\n selected: PermissionSelectionType\r\n showSelection: boolean\r\n showPermissionsSubscriptionModal: boolean\r\n showPermissionsRoleModal: boolean\r\n showApproveNewPermissionsModal: boolean\r\n showApproveSubscriptionsModal: boolean\r\n showApproveRolesModal: boolean\r\n}\r\n\r\nexport class PermissionsSelection extends React.PureComponent {\r\n emptyState: PermissionsSelectionState = {\r\n selected: PermissionSelectionType.NoSelection,\r\n showSelection: true,\r\n showPermissionsSubscriptionModal: false,\r\n showPermissionsRoleModal: false,\r\n showApproveNewPermissionsModal: false,\r\n showApproveSubscriptionsModal: false,\r\n showApproveRolesModal: false\r\n }\r\n state: PermissionsSelectionState = { ... this.emptyState }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n handleCancel = () => (this.props as RouteComponentProps).history?.push(Home)\r\n handleSelect = (e: React.ChangeEvent) => this.setState({ selected: e.target.value as PermissionSelectionType })\r\n handleNext = () => {\r\n this.setState({\r\n showSelection: false,\r\n showPermissionsSubscriptionModal: this.state.selected === PermissionSelectionType.PermissionsSubscription,\r\n showPermissionsRoleModal: this.state.selected === PermissionSelectionType.PermissionsRole,\r\n showApproveNewPermissionsModal: this.state.selected === PermissionSelectionType.ApproveNewPermissions,\r\n showApproveSubscriptionsModal: this.state.selected === PermissionSelectionType.ApproveSubscriptions,\r\n showApproveRolesModal: this.state.selected === PermissionSelectionType.ApproveRoles\r\n })\r\n }\r\n\r\n handleModalCancel = () => this.setState({ ... this.emptyState })\r\n\r\n render() {\r\n const { selected, showSelection, showPermissionsSubscriptionModal, showApproveNewPermissionsModal, showApproveSubscriptionsModal, showPermissionsRoleModal, showApproveRolesModal } = this.state\r\n\r\n return (\r\n \r\n {showSelection && \r\n \r\n Subscription/Role/Permission Selection\r\n \r\n \r\n \r\n I Would Like To:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.handleNext()} disabled={!selected} >Next\r\n \r\n }\r\n\r\n {showPermissionsSubscriptionModal && this.handleModalCancel()} userName={this.props.UserName} />}\r\n {showApproveNewPermissionsModal && }\r\n {showApproveSubscriptionsModal && }\r\n {showPermissionsRoleModal && this.handleModalCancel()} userName={this.props.UserName} />}\r\n {showApproveRolesModal && this.handleModalCancel()} userName={this.props.UserName} />}\r\n \r\n )\r\n }\r\n\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): PermissionsSelectionProps {\r\n return {\r\n UserName: getUserNameForSelectedCompany(state)\r\n }\r\n}\r\nconst ConnectedPermissionsSelection = connect(mapStateToProps, null)(PermissionsSelection)\r\nexport default ConnectedPermissionsSelection","import React from \"react\"\r\nimport { Modal, Col, Button, Row, Container, Spinner } from \"react-bootstrap\"\r\nimport { Subject, concat, of, Subscription } from \"rxjs\"\r\nimport { catchError, map, switchMap } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport { APIError } from \"../../../api/ObservableFromFetch\"\r\nimport { Permission, PendingPermissionsGet, InactivePermissionsGet, PermissionsApprove } from \"../../../api/Administration/Permissions\"\r\nimport DualTableBox from \"../DualTableBox\"\r\nimport Checkbox from \"../../Checkbox\"\r\n\r\ninterface ApproveNewPermissionsModalProps {\r\n onCancel: () => void\r\n userName?: string\r\n}\r\n\r\ninterface ApproveNewPermissionsModalState {\r\n loading: boolean\r\n saving: boolean\r\n showInactive: boolean\r\n permissions: Permission[]\r\n selectedPermissions: Permission[]\r\n}\r\n\r\nexport default class ApproveNewPermissionsModal extends React.PureComponent {\r\n state: ApproveNewPermissionsModalState = {\r\n loading: false,\r\n saving: false,\r\n showInactive: false,\r\n permissions: [],\r\n selectedPermissions: []\r\n }\r\n\r\n showInactivePermissions$ = new Subject()\r\n loadSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.loadSubscription = this.showInactivePermissions$.pipe(\r\n switchMap(showInactive => concat(\r\n of({ loading: true, showInactive: showInactive }),\r\n (showInactive\r\n ? InactivePermissionsGet\r\n : PendingPermissionsGet\r\n )().pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, showInactive?: boolean, result?: Permission[] }) => this.setState(prevState => ({\r\n loading: o.loading,\r\n showInactive: o.showInactive === undefined ? prevState.showInactive : o.showInactive,\r\n permissions: o.result || prevState.permissions,\r\n selectedPermissions: []\r\n })),\r\n (error) => this.handleAPIError(error, { loading: false })\r\n )\r\n this.showInactivePermissions$.next(this.state.showInactive)\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: ApproveNewPermissionsModalProps, prevState: ApproveNewPermissionsModalState) {\r\n if (prevState.saving && !this.state.saving) {\r\n this.showInactivePermissions$.next(this.state.showInactive)\r\n }\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n handleApprove = () => {\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = PermissionsApprove(this.state.selectedPermissions, this.props.userName || \"\").subscribe(\r\n data => {\r\n this.setState({ saving: false, permissions: [], selectedPermissions: [] })\r\n toast.success(data)\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n render() {\r\n const { loading, saving, showInactive, permissions, selectedPermissions } = this.state\r\n\r\n return (<>\r\n \r\n \r\n APPROVE PERMISSIONS {loading && }\r\n \r\n \r\n this.setState({ selectedPermissions: options })} />\r\n \r\n \r\n \r\n ) => this.showInactivePermissions$.next(e.target.checked)} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n Approve\r\n \r\n \r\n )\r\n }\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Form, Col, Button, Row, Table, Container, Image } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport { APIError } from \"../../../api/ObservableFromFetch\"\r\nimport { NotAssignedPermissionsOfRoleGet, Permission, PermissionInRoleSave, PermissionsOfRoleGet, RoleCreate, RolesGet, UnassignedSubscriptionPermissionsGet } from \"../../../api/Administration/Permissions\"\r\nimport { forkJoin, Subscription } from \"rxjs\"\r\nimport { parseISO, format } from \"date-fns\"\r\nimport DatePicker from 'react-datepicker'\r\nimport Role from \"../../../api/Roles/Model/Role\"\r\nimport { EditPermission } from \"./PermissionsSubscriptionModal\"\r\nimport { BirthdayInput } from \"../../FormattedInputs/BirthdayInput\"\r\nimport NumericInput from 'react-numeric-input'\r\nimport { FaAngleDoubleDown, FaAngleDoubleLeft, FaAngleDoubleRight, FaAngleDoubleUp, FaAngleDown, FaAngleUp, FaChevronLeft, FaChevronRight, FaPencilAlt } from \"react-icons/fa\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\n\r\ninterface PermissionsRoleModalProps {\r\n onCancel: () => void\r\n userName?: string\r\n}\r\n\r\ninterface PermissionsRoleModalState {\r\n loading: boolean\r\n saving: boolean\r\n roles: Role[]\r\n selectedRole?: RoleData\r\n unassigned: Permission[]\r\n assigned: Permission[]\r\n notassigned: Permission[]\r\n editPermission?: EditPermission\r\n showAddNewModal: boolean\r\n showEditModal: boolean\r\n newRole?: RoleData\r\n titleDuplicated: boolean\r\n selectionLeft: number[]\r\n selectionRight: number[]\r\n}\r\n\r\nexport interface RoleData {\r\n RoleID?: number\r\n Description?: string\r\n Level?: number\r\n Title?: string\r\n ActiveDate?: Date\r\n InActiveDate?: Date\r\n ModifiedBy?: string\r\n}\r\n\r\nexport default class PermissionsRoleModalModal extends React.PureComponent {\r\n state: PermissionsRoleModalState = {\r\n loading: false,\r\n saving: false,\r\n roles: [],\r\n selectedRole: undefined,\r\n unassigned: [],\r\n assigned: [],\r\n notassigned: [],\r\n showAddNewModal: false,\r\n showEditModal: false,\r\n editPermission: undefined,\r\n newRole: undefined,\r\n titleDuplicated: false,\r\n selectionLeft: [],\r\n selectionRight: []\r\n }\r\n\r\n initialLoadSubscriptions?: Subscription\r\n loadSubscription?: Subscription\r\n updateSubscription?: Subscription\r\n activedate = React.createRef()\r\n inactivedate = React.createRef()\r\n roleActivedate = React.createRef()\r\n roleInactivedate = React.createRef()\r\n newRoleActivedate = React.createRef()\r\n newRoleInactivedate = React.createRef()\r\n\r\n componentDidMount() {\r\n this.loadInitialData()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.initialLoadSubscriptions && this.initialLoadSubscriptions.unsubscribe()\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.updateSubscription && this.updateSubscription.unsubscribe()\r\n }\r\n\r\n loadInitialData() {\r\n this.initialLoadSubscriptions && this.initialLoadSubscriptions.unsubscribe()\r\n this.setState({ loading: true })\r\n this.initialLoadSubscriptions = forkJoin({\r\n roles: RolesGet(),\r\n unassigned: UnassignedSubscriptionPermissionsGet()\r\n })\r\n .subscribe(\r\n ({ roles, unassigned }) => {\r\n const roleID = this.state.selectedRole?.RoleID\r\n this.setState({ roles: [...roles], unassigned: [...unassigned], loading: false, selectedRole: undefined, selectionLeft: [], selectionRight: [] })\r\n if (roleID) this.selectRole(roleID)\r\n },\r\n (error) => {\r\n this.handleAPIError(error, { loading: false })\r\n }\r\n )\r\n }\r\n\r\n selectRole = (id: number) => {\r\n const role = this.state.roles.find(item => item.RoleID === id)\r\n if (role) {\r\n this.setState({ selectedRole: { RoleID: role?.RoleID, Title: role?.Title, Description: role?.Description, ActiveDate: parseISO(role?.ActiveDate || \"\"), InActiveDate: parseISO(role?.InActiveDate || \"\"), Level: role?.Level, ModifiedBy: this.props.userName || \"\" } })\r\n\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.loadSubscription = forkJoin({\r\n assigned: PermissionsOfRoleGet(role?.RoleID || 0, role?.Title || \"\"),\r\n notassigned: NotAssignedPermissionsOfRoleGet(role?.RoleID || 0, role?.Title || \"\")\r\n })\r\n .subscribe(\r\n ({ assigned, notassigned }) => this.setState({ assigned: [...assigned], notassigned: [...notassigned], loading: false }),\r\n (error) => {\r\n this.handleAPIError(error, { loading: false })\r\n }\r\n )\r\n }\r\n else {this.setState({ selectedRole: undefined})}\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n handleSubmit = () => {\r\n this.updateSubscription && this.updateSubscription.unsubscribe()\r\n this.setState({ saving: true })\r\n const { selectedRole, assigned } = this.state\r\n\r\n this.updateSubscription = PermissionInRoleSave(selectedRole, assigned).subscribe(\r\n data => {\r\n this.setState({ saving: false })\r\n toast.success(data)\r\n this.loadInitialData()\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n validSubmit = () => {\r\n const { selectedRole } = this.state\r\n return !!selectedRole && !!selectedRole.Title && !!selectedRole.Description && !!selectedRole.ActiveDate && !!selectedRole.InActiveDate && !!selectedRole.Level\r\n }\r\n\r\n handleEdit = (permission: Permission) => this.setState({ showEditModal: true, editPermission: { ID: permission.PermissionID, Title: permission.Title, ActiveDate: parseISO(permission.ActiveDate || \"\"), InactiveDate: parseISO(permission.InActiveDate || \"\") } })\r\n handleEditCancel = () => { this.setState({ showEditModal: false, editPermission: undefined }) }\r\n handleEditSubmit = () => {\r\n const { editPermission, assigned } = this.state\r\n const relatedPermission = assigned.find(item => item.PermissionID === editPermission?.ID)\r\n\r\n if (relatedPermission) {\r\n relatedPermission.ActiveDate = format(editPermission?.ActiveDate || 0, \"yyyy-MM-dd'T'HH:mm:ss\")\r\n relatedPermission.InActiveDate = format(editPermission?.InactiveDate || 0, \"yyyy-MM-dd'T'HH:mm:ss\")\r\n }\r\n\r\n this.setState({ showEditModal: false, editPermission: undefined })\r\n }\r\n\r\n editValid = () => {\r\n const { editPermission } = this.state\r\n return !!editPermission && !!editPermission.ActiveDate && !!editPermission.InactiveDate\r\n }\r\n\r\n handleAddNew = () => { this.setState({ showAddNewModal: true }) }\r\n handleAddNewCancel = () => { this.setState({ showAddNewModal: false, newRole: undefined }) }\r\n handleAddNewSubmit = () => {\r\n this.updateSubscription && this.updateSubscription.unsubscribe()\r\n this.setState({ saving: true })\r\n const { newRole } = this.state\r\n const data = {\r\n Description: newRole?.Description,\r\n Level: newRole?.Level,\r\n Title: newRole?.Title,\r\n ActiveDate: newRole?.ActiveDate,\r\n InActiveDate: newRole?.InActiveDate,\r\n ModifiedBy: this.props.userName\r\n }\r\n\r\n this.updateSubscription = RoleCreate(data).subscribe(\r\n data => {\r\n this.setState({ saving: false, showAddNewModal: false, loading: true })\r\n toast.success(data)\r\n RolesGet().subscribe(\r\n data => this.setState({ roles: data, loading: false, selectedRole: undefined }),\r\n error => this.handleAPIError(error, { loading: false })\r\n )\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n addNewValid = () => {\r\n const { newRole, titleDuplicated } = this.state\r\n return !!newRole && !!newRole.Title && !!newRole.Description && !!newRole.ActiveDate && !!newRole.InActiveDate && !!newRole.Level && !titleDuplicated\r\n }\r\n\r\n handleNewTitleChange = (title: string) => {\r\n this.setState({ newRole: {...this.state.newRole, Title: title}, titleDuplicated: this.validateTitle(title)})\r\n }\r\n\r\n validateTitle = (title: string) => { return this.state.roles.some(role => role.Title === title) }\r\n\r\n handleRoleActiveDateChange = (date: Date) => {\r\n const { selectedRole } = this.state\r\n if (selectedRole) {\r\n const inactiveDate = selectedRole?.InActiveDate\r\n const dateiInPast: boolean = inactiveDate instanceof Date && inactiveDate < new Date\r\n const allowChange = inactiveDate instanceof Date ? date < inactiveDate || dateiInPast : true\r\n this.setState({ selectedRole: {...selectedRole, ActiveDate: (allowChange ? date : undefined), InActiveDate: (dateiInPast ? undefined : inactiveDate)}})\r\n }\r\n }\r\n\r\n handleRoleInActiveDateChange = (date: Date) => {\r\n const { selectedRole } = this.state\r\n if (selectedRole) {\r\n const activeDate = selectedRole?.ActiveDate\r\n const allowChange = activeDate instanceof Date ? date > activeDate : true\r\n this.setState({ selectedRole: {...selectedRole, InActiveDate: (allowChange ? date : undefined)}})\r\n }\r\n }\r\n\r\n handleActiveDateChange = (date: Date) => {\r\n const inactiveDate = this.state.editPermission?.InactiveDate\r\n const dateiInPast: boolean = inactiveDate instanceof Date && inactiveDate < new Date\r\n const allowChange = inactiveDate instanceof Date ? date < inactiveDate || dateiInPast : true\r\n this.setState({ editPermission: { ...this.state.editPermission, ActiveDate: allowChange ? date : undefined, InactiveDate: dateiInPast ? undefined : inactiveDate } })\r\n }\r\n\r\n handleInActiveDateChange = (date: Date) => {\r\n const activeDate = this.state.editPermission?.ActiveDate\r\n const allowChange = activeDate instanceof Date ? date > activeDate : true\r\n this.setState({ editPermission: { ...this.state.editPermission, InactiveDate: allowChange ? date : undefined } })\r\n }\r\n\r\n move(dir: \"ltr\" | \"rtl\", all?: boolean) {\r\n if (dir === \"ltr\") {\r\n const ids = !!all ? this.state.notassigned.map(item => item.PermissionID) : this.state.selectionLeft\r\n this.setState({\r\n selectionLeft: [],\r\n notassigned: this.state.notassigned.filter(item => !ids.includes(item.PermissionID)),\r\n assigned: [...this.state.assigned, ...this.state.notassigned.filter(item => ids.includes(item.PermissionID))]\r\n })\r\n } else {\r\n const ids = !!all ? this.state.assigned.map(item => item.PermissionID) : this.state.selectionRight\r\n this.setState({\r\n selectionRight: [],\r\n notassigned: [...this.state.notassigned, ...this.state.assigned.filter(item => ids.includes(item.PermissionID))],\r\n assigned: this.state.assigned.filter(item => !ids.includes(item.PermissionID))\r\n })\r\n }\r\n }\r\n\r\n handleRightItemClick = (id: number) => {\r\n if (this.state.selectionRight.includes(id)) {\r\n this.setState({ selectionRight: this.state.selectionRight.filter(item => item !== id) })\r\n } else {\r\n this.setState({ selectionRight: [...this.state.selectionRight, id] })\r\n }\r\n }\r\n\r\n render() {\r\n const { loading, saving, selectedRole, roles, showAddNewModal, showEditModal, editPermission, newRole, titleDuplicated, selectionRight, selectionLeft } = this.state\r\n const left = !selectedRole ? this.state.unassigned : this.state.notassigned\r\n const right = !selectedRole ? [] : this.state.assigned\r\n const disabled = !selectedRole || loading\r\n\r\n return (\r\n <>\r\n \r\n \r\n Role/Permissions\r\n \r\n \r\n \r\n Role\r\n \r\n this.selectRole(Number(e.target.value))}>\r\n \r\n {roles && roles.map((role: Role) => )}\r\n \r\n \r\n \r\n Active Date\r\n \r\n { if (this.roleActivedate && this.roleActivedate.current && e.key === 'Tab') { this.roleActivedate.current.setOpen(false) } }}\r\n onChange={date => this.handleRoleActiveDateChange(date as Date)}\r\n customInput={} />\r\n \r\n \r\n \r\n Level\r\n \r\n this.setState({ selectedRole: {...selectedRole, Level: value as number}})} />\r\n \r\n \r\n Inactive Date\r\n \r\n { if (this.roleInactivedate && this.roleInactivedate.current && e.key === 'Tab') { this.roleInactivedate.current.setOpen(false) } }}\r\n onChange={date => this.handleRoleInActiveDateChange(date as Date)}\r\n customInput={} />\r\n \r\n \r\n \r\n Description\r\n \r\n this.setState({ selectedRole: {...selectedRole, Description: e.target.value}})} />\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n Add New\r\n \r\n Submit\r\n \r\n
\r\n\r\n this.handleAddNewCancel()} size=\"lg\" backdrop=\"static\" dialogClassName=\"dark\">\r\n \r\n Add New Role\r\n \r\n \r\n \r\n Role\r\n \r\n this.handleNewTitleChange(e.target.value)} />\r\n {titleDuplicated && The Role Already Exists. Please reenter or modify and press the next button.\"}\r\n \r\n \r\n Active Date\r\n \r\n { if (this.newRoleActivedate && this.newRoleActivedate.current && e.key === 'Tab') { this.newRoleActivedate.current.setOpen(false) } }}\r\n onChange={date => this.setState({ newRole: {...newRole, ActiveDate: date as Date}})}\r\n customInput={} />\r\n \r\n \r\n \r\n Level\r\n \r\n this.setState({ newRole: {...newRole, Level: value as number}})} />\r\n \r\n \r\n Inactive Date\r\n \r\n { if (this.newRoleInactivedate && this.newRoleInactivedate.current && e.key === 'Tab') { this.newRoleInactivedate.current.setOpen(false) } }}\r\n onChange={date => this.setState({ newRole: {...newRole, InActiveDate: date as Date}})}\r\n customInput={} />\r\n \r\n \r\n \r\n Description\r\n \r\n this.setState({ newRole: {...newRole, Description: e.target.value} })} />\r\n \r\n \r\n \r\n \r\n \r\n this.handleAddNewSubmit()} disabled={!this.addNewValid()} spin={saving} disableOnSpin>Next\r\n \r\n \r\n\r\n {!!editPermission && this.handleEditCancel()} size=\"lg\" backdrop=\"static\" dialogClassName=\"dark\">\r\n \r\n Edit Permission\r\n \r\n \r\n \r\n Role\r\n \r\n \r\n \r\n \r\n Active Date\r\n \r\n { if (this.activedate && this.activedate.current && e.key === 'Tab') { this.activedate.current.setOpen(false) } }}\r\n onChange={date => this.handleActiveDateChange(date as Date)}\r\n customInput={} />\r\n \r\n \r\n \r\n Permission\r\n \r\n \r\n \r\n \r\n Inactive Date\r\n \r\n { if (this.inactivedate && this.inactivedate.current && e.key === 'Tab') { this.inactivedate.current.setOpen(false) } }}\r\n onChange={date => this.handleInActiveDateChange(date as Date)}\r\n customInput={} />\r\n \r\n \r\n \r\n \r\n \r\n this.handleEditSubmit()} disabled={!this.editValid()} spin={saving} disableOnSpin>Finish\r\n \r\n }\r\n \r\n )\r\n }\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Col, Button, Row, Container, Spinner } from \"react-bootstrap\"\r\nimport { Subject, concat, of, Subscription } from \"rxjs\"\r\nimport { catchError, map, switchMap } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport { APIError } from \"../../../api/ObservableFromFetch\"\r\nimport { Permission, PendingRolePermissionsGet, InactiveRolePermissionsGet, RolePermissionsApprove } from \"../../../api/Administration/Permissions\"\r\nimport DualTableBox from \"../DualTableBox\"\r\nimport Checkbox from \"../../Checkbox\"\r\n\r\ninterface ApproveRolePermissionsModalProps {\r\n onCancel: () => void\r\n userName?: string\r\n}\r\n\r\ninterface ApproveRolePermissionsModalState {\r\n loading: boolean\r\n saving: boolean\r\n showInactive: boolean\r\n permissions: Permission[]\r\n selectedPermissions: Permission[]\r\n}\r\n\r\nexport default class ApproveRolePermissionsModal extends React.PureComponent {\r\n state: ApproveRolePermissionsModalState = {\r\n loading: false,\r\n saving: false,\r\n showInactive: false,\r\n permissions: [],\r\n selectedPermissions: []\r\n }\r\n\r\n showInactivePermissions$ = new Subject()\r\n loadSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.loadSubscription = this.showInactivePermissions$.pipe(\r\n switchMap(showInactive => concat(\r\n of({ loading: true, showInactive: showInactive }),\r\n (showInactive\r\n ? InactiveRolePermissionsGet\r\n : PendingRolePermissionsGet\r\n )().pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, showInactive?: boolean, result?: Permission[] }) => this.setState(prevState => ({\r\n loading: o.loading,\r\n showInactive: o.showInactive === undefined ? prevState.showInactive : o.showInactive,\r\n permissions: o.result || prevState.permissions,\r\n selectedPermissions: []\r\n })),\r\n (error) => this.handleAPIError(error, { loading: false })\r\n )\r\n this.showInactivePermissions$.next(this.state.showInactive)\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: ApproveRolePermissionsModalProps, prevState: ApproveRolePermissionsModalState) {\r\n if (prevState.saving && !this.state.saving) {\r\n this.showInactivePermissions$.next(this.state.showInactive)\r\n }\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n handleApprove = () => {\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = RolePermissionsApprove(this.state.selectedPermissions, this.props.userName || \"\").subscribe(\r\n data => {\r\n this.setState({ saving: false, permissions: [], selectedPermissions: [] })\r\n toast.success(data)\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n render() {\r\n const { loading, saving, showInactive, permissions, selectedPermissions } = this.state\r\n\r\n return (<>\r\n \r\n \r\n Approve Roles/Permissions {loading && }\r\n \r\n \r\n this.setState({ selectedPermissions: options })} />\r\n \r\n \r\n \r\n ) => this.showInactivePermissions$.next(e.target.checked)} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n Approve\r\n \r\n \r\n )\r\n }\r\n}\r\n","import React from \"react\"\r\nimport { Modal, Col, Button, Row, Container, Spinner } from \"react-bootstrap\"\r\nimport { Subject, concat, of, Subscription } from \"rxjs\"\r\nimport { catchError, map, switchMap } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport { APIError } from \"../../../api/ObservableFromFetch\"\r\nimport { Permission, PendingSubscriptionsPermissionsMappingGet, InactiveSubscriptionsPermissionsMappingGet, SubscriptionsPermissionsMappingApprove } from \"../../../api/Administration/Permissions\"\r\nimport DualTableBox from \"../DualTableBox\"\r\nimport Checkbox from \"../../Checkbox\"\r\n\r\ninterface ApproveSubscriptionRelationshipsModalProps {\r\n onCancel: () => void\r\n userName?: string\r\n}\r\n\r\ninterface ApproveSubscriptionRelationshipsModalState {\r\n loading: boolean\r\n saving: boolean\r\n showInactive: boolean\r\n permissions: Permission[]\r\n selectedPermissions: Permission[]\r\n}\r\n\r\nexport default class ApproveSubscriptionRelationshipsModal extends React.PureComponent {\r\n state: ApproveSubscriptionRelationshipsModalState = {\r\n loading: false,\r\n saving: false,\r\n showInactive: false,\r\n permissions: [],\r\n selectedPermissions: []\r\n }\r\n\r\n showInactivePermissions$ = new Subject()\r\n loadSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.loadSubscription = this.showInactivePermissions$.pipe(\r\n switchMap(showInactive => concat(\r\n of({ loading: true, showInactive: showInactive }),\r\n (showInactive\r\n ? InactiveSubscriptionsPermissionsMappingGet\r\n : PendingSubscriptionsPermissionsMappingGet\r\n )().pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, showInactive?: boolean, result?: Permission[] }) => this.setState(prevState => ({\r\n loading: o.loading,\r\n showInactive: o.showInactive === undefined ? prevState.showInactive : o.showInactive,\r\n permissions: o.result || prevState.permissions,\r\n selectedPermissions: []\r\n })),\r\n (error) => this.handleAPIError(error, { loading: false })\r\n )\r\n this.showInactivePermissions$.next(this.state.showInactive)\r\n }\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: ApproveSubscriptionRelationshipsModalProps, prevState: ApproveSubscriptionRelationshipsModalState) {\r\n if (prevState.saving && !this.state.saving) {\r\n this.showInactivePermissions$.next(this.state.showInactive)\r\n }\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n handleApprove = () => {\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = SubscriptionsPermissionsMappingApprove(this.state.selectedPermissions, this.props.userName || \"\").subscribe(\r\n data => {\r\n this.setState({ saving: false, permissions: [], selectedPermissions: [] })\r\n toast.success(data)\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n render() {\r\n const { loading, saving, showInactive, permissions, selectedPermissions } = this.state\r\n\r\n return (<>\r\n \r\n \r\n APPROVE SUBSCRIPTION/PERMISSIONS {loading && }\r\n \r\n \r\n this.setState({ selectedPermissions: options })} />\r\n \r\n \r\n \r\n ) => this.showInactivePermissions$.next(e.target.checked)} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n Approve\r\n \r\n \r\n )\r\n }\r\n}\r\n","import { Component } from \"react\"\r\nimport { Redirect, Route, RouteProps } from \"react-router-dom\"\r\nimport UserAccessSettings from \"../authentication/UserAccessSettings\"\r\nimport UserState from \"../authentication/UserState\"\r\nimport HasAccessToRoute, { HasAccessToAtLeastOneRoute } from \"../authentication/hasAccessToRoute\"\r\nimport { Home } from \"../config/Routes\"\r\n\r\nexport interface ProtectedRouteProps {\r\n userAccess: UserAccessSettings\r\n userState: UserState\r\n}\r\n\r\nexport default class ProtectedRoute extends Component{\r\n render() {\r\n const { path, userAccess, userState } = this.props\r\n const hasAccess = !!path && Array.isArray(path)\r\n ? HasAccessToAtLeastOneRoute(path, userAccess, userState)\r\n : HasAccessToRoute(path as string | undefined, userAccess, userState)\r\n return hasAccess ? : \r\n }\r\n}\r\n","import { PortalAdministrationRoute, MyInformationRoute, OrdersRoute, OrderRoute, SSOOrderRoute, SSOSiteSearchRoute, SSOGetAuthFormRoute } from \"../config/Routes\"\r\nimport HasAccessToRoute from \"./hasAccessToRoute\"\r\nimport UserAccessSettings from \"./UserAccessSettings\"\r\nimport UserState from \"./UserState\"\r\n\r\nexport function GetUserDefaultRoute(userAccess: UserAccessSettings, userState: UserState): string {\r\n const isSSO = userState.ssoToken !== \"\"\r\n const routes = userAccess.isSiteAdmin ? [PortalAdministrationRoute, MyInformationRoute] : (isSSO ? [SSOSiteSearchRoute, SSOOrderRoute, SSOGetAuthFormRoute] : [OrdersRoute, OrderRoute, MyInformationRoute])\r\n return routes.find(route => HasAccessToRoute(route, userAccess, userState)) || \"\"\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { Table, Image } from \"react-bootstrap\"\r\nimport dotImage from \"../../assets/images/dot-img.png\"\r\nimport { GovServiceDataModel } from \"./OrderModels\"\r\n\r\nexport interface GovOrderedServicesProps {\r\n service?: GovServiceDataModel,\r\n}\r\n\r\nexport default class GovOrderedServices extends Component {\r\n render() {\r\n const { service } = this.props\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
SERVICE TYPEACCOUNTTEST TO BE PERFORMED
\r\n {service?.serviceType}\r\n {service?.labAccount}{service?.testToPerform}
\r\n
\r\n )\r\n }\r\n}\r\n","const FormatGender = (gender: string = \"\") => {\r\n switch (gender) {\r\n case \"M\":\r\n return \"Male\"\r\n case \"F\":\r\n return \"Female\"\r\n default:\r\n return \"Unknown\"\r\n }\r\n}\r\n\r\nexport default FormatGender\r\n","import { Col, Container, Row } from \"react-bootstrap\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport FormatGender from \"../../formatters/FormatGender\"\r\nimport { DonorInformationModel } from \"./OrderModels\"\r\nimport FormatPhone from \"../../formatters/FormatPhone\"\r\n\r\nexport interface GovOrderDonorInfo extends DonorInformationModel {\r\n accessCode?: number\r\n}\r\n\r\nconst GovOrderDonorInfo = (props: GovOrderDonorInfo) => {\r\n const {\r\n donorId,\r\n firstName,\r\n lastName,\r\n accessCode,\r\n birthdate,\r\n gender,\r\n daytimePhone\r\n } = props\r\n\r\n return (\r\n \r\n \r\n \r\n ID: {donorId}\r\n \r\n \r\n First Name: {firstName}\r\n \r\n \r\n Last Name: {lastName}\r\n \r\n \r\n Access Code: {accessCode}\r\n \r\n \r\n \r\n \r\n \r\n DOB: {FormatDate(birthdate)}\r\n \r\n \r\n Gender: {FormatGender(gender)}\r\n \r\n \r\n \r\n \r\n \r\n Phone: {FormatPhone(daytimePhone || \"\")}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default GovOrderDonorInfo\r\n","import { Component } from \"react\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Container, Row, Col, Button, Form } from \"react-bootstrap\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { Subscription } from \"rxjs\"\r\nimport DonorInformation from \"./DonorInformation\"\r\nimport { DonorInformationModel, OTHER_REASON_TEXT, GetRegulatoryModeDonor, GovServiceDataModel, GovLabModel, GovPanelModel, ServiceTypeOld } from \"./OrderModels\"\r\nimport OrderRequestsHeader, { StepData } from \"./OrderRequestsHeader\"\r\nimport PotentialDonorMatchModal from \"./PotentialDonorMatchModal\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport FormatPhone from \"../../formatters/FormatPhone\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { TestReasonsObservable, RegulatoryModeObservable } from \"../../api/OrderRequests/OrderRequestsConstraintGet\"\r\nimport { TestReasonType } from \"../../api/OrderRequests/OrderRequestsModel/TestReasonType\"\r\nimport { AdvanceSearchDonorGetObservable } from \"../../api/OrderRequests/SearchDonorGet\"\r\nimport { Donor } from \"../../api/OrderRequests/OrderRequestsModel/Donor\"\r\nimport OrderData from \"../../api/OrderRequests/OrderRequestsModel/OrderData\"\r\nimport { EventType, MaxDonorIdLength, StorageKey } from \"../../config/Constants\"\r\nimport GovCollection from \"./GovCollection\"\r\nimport GovOrderedService from \"./GovOrderedService\"\r\nimport { GovPanel, SampleType } from \"../../api/Randoms/GovPoolModel/CollectionTypeResponse\"\r\nimport LabAccount from \"../../api/LabService/LabServiceModel/LabAccount\"\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\nimport SaveOrder from \"../../api/OrderRequests/OrderRequestsModel/SaveOrder\"\r\nimport OrderSubmitObservable from \"../../api/OrderRequests/OrderSubmit\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport AutoFilterCompaniesGetObservable from \"../../api/Companies/AutoFilterCompaniesGet\"\r\nimport GridRow from \"../../api/GovDonor/GridRow\"\r\nimport GovDevice from \"../../api/Randoms/GovPoolModel/GovDevice\"\r\nimport { OrdersRoute } from \"../../config/Routes\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\nimport { addProcessingCollectionTest } from \"../../api/CachedCollectionTest\"\r\nimport GovPerformCollection, { GovPerformCollectionProps } from \"./GovPerformCollection\"\r\nimport { FullBaseUrl } from \"../../api/ApiUrl\"\r\nimport GovOrderDonorInfo from \"./GovOrderDonorInfo\"\r\n\r\ninterface GovOrderRequestProps {\r\n location: {\r\n state?: {\r\n formData?: GridRow[],\r\n pendingRandom?: boolean\r\n },\r\n }\r\n}\r\n\r\ninterface GovOrderRequestData {\r\n company?: string,\r\n selectedCompany?: AutoFilterCompany\r\n companyID: number,\r\n reasonObj?: TestReasonType,\r\n reasonOther?: string\r\n reason?: string\r\n donor: DonorInformationModel\r\n}\r\n\r\ninterface GovOrderRequestState extends GovOrderRequestData {\r\n formKey: string\r\n step: number\r\n infoHtml?: string\r\n isDonorInfoSuccess: boolean\r\n showPotentialMatches: boolean\r\n potentialDonorMatchList: Donor[]\r\n isDonorValid: boolean\r\n reasonsLoading: boolean\r\n companies: AutoFilterCompany[]\r\n reasons: TestReasonType[]\r\n idTypes: GetRegulatoryModeDonor[]\r\n orderSubmitting: boolean\r\n submittedOrder: boolean\r\n authorizationID?: number\r\n accessCode?: number\r\n showConfirmation: boolean\r\n serviceDOT?: boolean\r\n sampleType?: SampleType\r\n isPOCTDevice: boolean\r\n labAccount?: LabAccount\r\n panel?: GovPanel\r\n device?: GovDevice\r\n testDetailID: string\r\n showPerformCollection: boolean\r\n}\r\n\r\nexport interface DonorData {\r\n PersonID: number\r\n FirstName: string\r\n LastName: string\r\n DonorID: string\r\n IDType: string\r\n MockDonorID: string\r\n}\r\n\r\nconst RandomReason = \"Random\"\r\n\r\nconst emptyDonor: DonorInformationModel = {\r\n idType: undefined,\r\n idTypeObj: undefined,\r\n state: undefined,\r\n stateCode: undefined,\r\n donorId: undefined,\r\n firstName: undefined,\r\n middleInitial: undefined,\r\n lastName: undefined,\r\n eveningPhone: undefined,\r\n daytimePhone: undefined,\r\n birthdate: undefined,\r\n gender: undefined\r\n}\r\n\r\nconst emptyData: GovOrderRequestData = {\r\n company: undefined,\r\n companyID: 0,\r\n selectedCompany: undefined,\r\n reasonObj: undefined,\r\n reasonOther: undefined,\r\n reason: undefined,\r\n donor: { ...emptyDonor }\r\n}\r\n\r\nconst buildOrderRequestData = (orderFormData?: GridRow[]) => ({\r\n ...emptyData,\r\n company: orderFormData ? orderFormData[0]?.CompanyName : undefined,\r\n reason: orderFormData ? RandomReason : undefined,\r\n donor: {\r\n ...emptyDonor,\r\n idType: \"EmployerID\",\r\n donorId: orderFormData ? orderFormData[0]?.EmployerID.toString() : undefined,\r\n }\r\n})\r\n\r\nexport default class GovOrderRequest extends Component {\r\n completingPendingOrders: boolean = false\r\n pendingRandom?: boolean\r\n serviceDOT?: boolean\r\n sampleType?: SampleType\r\n labAccount?: LabAccount\r\n panel?: GovPanel\r\n device?: GovDevice\r\n orderFormData?: GridRow[]\r\n testDetailID: string\r\n donorData?: DonorData\r\n accessCode?: number\r\n\r\n constructor(props: GovOrderRequestProps) {\r\n super(props)\r\n\r\n this.orderFormData = props.location.state?.formData\r\n this.pendingRandom = props.location.state?.pendingRandom\r\n if (this.orderFormData) {\r\n this.completingPendingOrders = (typeof this.pendingRandom === 'undefined') ? true : this.pendingRandom\r\n this.donorData = {\r\n PersonID: this.orderFormData[0].PersonID,\r\n FirstName: this.orderFormData[0].FirstName,\r\n LastName: this.orderFormData[0].LastName,\r\n DonorID: (this.orderFormData[0].EmployerID || \"\").toString(),\r\n IDType: \"EmployerID\",\r\n MockDonorID: (this.orderFormData[0].DonorID || \"\").toString(),\r\n }\r\n this.serviceDOT = this.orderFormData[0].DOT\r\n this.sampleType = { SampleTypeID: this.orderFormData[0].SampleTypeID } as SampleType\r\n this.labAccount = { LabAccount: this.orderFormData[0].LabAccountNumber } as LabAccount\r\n this.panel = { ID: this.orderFormData[0].Panel } as GovPanel\r\n this.device = { Code: this.orderFormData[0].Device } as GovDevice\r\n // If ad-hoc order, do not try to use an existing test detail id from a pending random test\r\n this.testDetailID = (this.completingPendingOrders == false) ? \"\" : (this.orderFormData[0].TestDetailID || \"\").toString() // TODO: verify\r\n this.accessCode = this.orderFormData[0].GovAccessCode\r\n } else {\r\n this.completingPendingOrders = false\r\n this.testDetailID = \"\"\r\n this.accessCode = 0 // TODO: pull from donor info endpoint\r\n }\r\n\r\n const data = buildOrderRequestData(this.orderFormData)\r\n this.state = {\r\n ...data,\r\n formKey: \"GovOrderRequestForm\",\r\n step: 1,\r\n infoHtml: undefined,\r\n isDonorInfoSuccess: false,\r\n showPotentialMatches: false,\r\n potentialDonorMatchList: [],\r\n isDonorValid: false,\r\n companies: [],\r\n reasonsLoading: false,\r\n reasons: [],\r\n idTypes: [],\r\n submittedOrder: false,\r\n orderSubmitting: false,\r\n showConfirmation: false,\r\n serviceDOT: this.serviceDOT,\r\n panel: this.panel,\r\n device: this.device,\r\n sampleType: this.sampleType,\r\n labAccount: this.labAccount,\r\n testDetailID: this.testDetailID,\r\n accessCode: this.accessCode,\r\n isPOCTDevice: false,\r\n showPerformCollection: false\r\n }\r\n }\r\n\r\n subscriptions = new Subscription()\r\n advanceSearchDonorSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.setState({ reasonsLoading: true })\r\n this.subscriptions.add(AutoFilterCompaniesGetObservable(\"\").subscribe(\r\n (data: AutoFilterCompany[]) => {\r\n const companyName = this.state.company || data[0]?.Name || \"\"\r\n this.setState({\r\n companies: data,\r\n company: companyName,\r\n companyID: data[0]?.AccountID || 0,\r\n selectedCompany: data.find((item: AutoFilterCompany) => item.Name === companyName)\r\n })\r\n }\r\n ))\r\n\r\n this.subscriptions.add(\r\n RegulatoryModeObservable(this.regulatoryModeFromServices()).subscribe(\r\n results => this.setState({ idTypes: results }),\r\n error => toast.error(error)\r\n )\r\n )\r\n\r\n this.subscriptions.add(\r\n TestReasonsObservable().subscribe(\r\n (results: TestReasonType[]) => this.setState({\r\n reasons: results,\r\n reasonsLoading: false,\r\n reasonObj: this.orderFormData && results.find(item => item.Description === \"Random\")\r\n }),\r\n error => toast.error(error)\r\n )\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions.unsubscribe()\r\n this.advanceSearchDonorSubscription && this.advanceSearchDonorSubscription.unsubscribe()\r\n }\r\n\r\n resetForm = () => {\r\n const data = buildOrderRequestData(this.orderFormData)\r\n const reasonObj = data.reason ? this.state.reasons.find(item => item.Description === data.reason) : undefined\r\n const idTypeObj = data.donor.idType ? this.state.idTypes.find(item => item.PrimaryIDType === data.donor.idType) : undefined\r\n\r\n this.setState({\r\n ...data,\r\n formKey: Math.random().toString(),\r\n reasonObj: reasonObj,\r\n donor: { ...data.donor, idTypeObj: idTypeObj },\r\n step: 1,\r\n infoHtml: undefined,\r\n isDonorInfoSuccess: false,\r\n showPotentialMatches: false,\r\n potentialDonorMatchList: [],\r\n isDonorValid: false,\r\n submittedOrder: false,\r\n orderSubmitting: false,\r\n isPOCTDevice: false,\r\n panel: this.panel,\r\n device: this.device,\r\n sampleType: this.sampleType,\r\n labAccount: this.labAccount,\r\n })\r\n }\r\n\r\n onReasonChange = (value: string) => {\r\n const reasonObject = this.state.reasons?.find((item: TestReasonType) => item.Description === value)\r\n this.setState({ reason: reasonObject?.Description, reasonObj: reasonObject, submittedOrder: false })\r\n }\r\n onDonorChange = (donor: DonorInformationModel, isValid: boolean, isDonorInfoSuccess: boolean) => this.setState({ donor: donor, accessCode: donor.accessCode, isDonorValid: isValid, isDonorInfoSuccess: isDonorInfoSuccess, submittedOrder: false })\r\n onInfoHtmlChange = (infoHtml?: string) => this.setState({ infoHtml: infoHtml, submittedOrder: false })\r\n\r\n onTypeChange = (type?: SampleType, isPOCTDevice?: boolean) => this.setState({ isPOCTDevice: !!isPOCTDevice, sampleType: type, labAccount: undefined, panel: undefined, device: undefined })\r\n onLabChange = (lab?: LabAccount) => this.setState({ labAccount: lab, panel: undefined, device: undefined })\r\n onPanelChange = (panel?: GovPanel) => this.setState({ panel: panel })\r\n onDeviceChange = (device?: GovDevice) => this.setState({ device: device })\r\n\r\n // Navigation methods\r\n onCancel = () => {\r\n localStorage.removeItem(StorageKey.SavedOrderData)\r\n localStorage.removeItem(StorageKey.CanViewOrderFinish)\r\n if (this.props.location.state?.formData) {\r\n (this.props as RouteComponentProps).history.goBack()\r\n } else {\r\n this.resetForm()\r\n }\r\n }\r\n\r\n onGoToStep1 = () => this.setState({ step: 1 })\r\n onGoToStep2 = () => this.setState({ step: 2 })\r\n\r\n onSubmit = () => {\r\n if (this.state.isDonorInfoSuccess) {\r\n this.saveOrder()\r\n }\r\n else {\r\n this.advanceSearchDonorSubscription && this.advanceSearchDonorSubscription.unsubscribe()\r\n const params = {\r\n CompanyID: this.state.selectedCompany?.AccountID || 0,\r\n DayTimePhone: this.state.donor?.daytimePhone || \"\",\r\n EveningPhone: this.state.donor?.eveningPhone || \"\",\r\n Mobile: null,\r\n RegulatoryModeID: this.regulatoryModeFromServices(),\r\n LastName: this.state.donor?.lastName,\r\n DateOfBirth: this.state.donor?.birthdate ? FormatDate(this.state.donor?.birthdate) : undefined\r\n }\r\n this.advanceSearchDonorSubscription = AdvanceSearchDonorGetObservable(params).subscribe(\r\n (response: Donor[]) => {\r\n if (response.length) {\r\n this.setState({ potentialDonorMatchList: response, showPotentialMatches: true })\r\n }\r\n else {\r\n this.saveOrder()\r\n }\r\n },\r\n (error: string) => toast.error(error)\r\n )\r\n }\r\n }\r\n\r\n regulatoryModeFromServices = () => 0 // TODO: verify\r\n getSampleTypeCode = (sampleType: string, isPOCT: boolean): EventType => {\r\n return sampleType.indexOf(EventType.Urine) !== -1 ?\r\n (isPOCT ? EventType.UrinePOCT : EventType.Urine) :\r\n (isPOCT ? EventType.SalivaDrugPOCT : EventType.SalivaDrug)\r\n }\r\n\r\n saveOrder() {\r\n const formatPhone = (phone?: string) => {\r\n if (!phone || phone === \"np\" || phone === \"n/p\" || phone === \"NP\" || phone === \"N/P\") {\r\n return \"N/P\"\r\n }\r\n return phone.replace(/-/g, \"\")\r\n }\r\n\r\n const formatDate = (date?: Date) => {\r\n if (!date) {\r\n return \"\"\r\n }\r\n return FormatDate(date)\r\n }\r\n\r\n\r\n const sampleTypeCode = this.getSampleTypeCode(this.state.sampleType?.LabCode?.toUpperCase() || \"\", this.state.isPOCTDevice)\r\n const order: SaveOrder = {\r\n MultipleDrug: [],\r\n MultipleAlcohol: [],\r\n MultiplePOCT: [],\r\n MultipleClinical: [],\r\n MultiplePhysical: {},\r\n POCTCount: 0,\r\n CollectionVendorID: \"\",\r\n FormFoxVendorAN: 0,\r\n Collector: {\r\n VendorID: 0,\r\n ParentVendorID: null,\r\n FFID: \"\",\r\n Name: \"\",\r\n Code: \"\",\r\n Type: null,\r\n Address1: \"\",\r\n Address2: \"\",\r\n City: \"\",\r\n State: \"\",\r\n Zip: \"\",\r\n Phone: \"\",\r\n HoursOfOperation: \"\",\r\n Private: false,\r\n Distance: 0,\r\n Latitude: 0,\r\n Longitude: 0,\r\n UseDOTForm: false,\r\n FFEnabled: false,\r\n OutOfNetwork: false,\r\n iVendorID: 0,\r\n SiteID: null,\r\n Fax: \"\"\r\n },\r\n CollectorPhone: null,\r\n CollectorVendorName: \"\",\r\n ConfirmDeviceCode: \"\",\r\n ConfirmDeviceDescription: \"\",\r\n ConfirmDeviceExpirationDate: null,\r\n ConfirmDeviceID: null,\r\n ConfirmDeviceSerialNumber: \"\",\r\n EventData: {\r\n AccountID: this.state.selectedCompany?.AccountID || 0,\r\n CompanyID: this.state.selectedCompany?.AccountID || 0,\r\n CompanyCode: this.state.selectedCompany?.Code || \"\",\r\n CompanyFullName: this.state.selectedCompany?.Code ? `${this.state.selectedCompany?.Name || \"\"} (${this.state.selectedCompany?.Code || \"\"})` : \"\",\r\n CompanyName: this.state.selectedCompany?.Name || \"\",\r\n DateOrdered: \"\",\r\n DateScheduled: \"\",\r\n ExpirationDate: \"\",\r\n LocationID: \"\",\r\n PrimaryID: (this.state.donor.donorId || \"\").replace(/-/g, \"\"),\r\n PrimaryIDRank: this.state.donor.idTypeObj?.Rank || 0,\r\n PrimaryIDType: this.state.donor.idTypeObj?.PrimaryIDType || \"\",\r\n RegulatoryModeID: this.regulatoryModeFromServices(),\r\n RegionID: \"\",\r\n RegionName: \"\",\r\n TimeZone: \"\",\r\n ProceedImmediately:false,\r\n ExtendExpirationHours: 0\r\n },\r\n Panel: {\r\n PanelID: \"\",\r\n Description: \"\",\r\n Code: \"\",\r\n ClientID: \"\",\r\n BeginEffectiveDate: \"\",\r\n EndEffectiveDate: \"\",\r\n UserLogin: \"\",\r\n UpdateMethod: \"\",\r\n UpdateDate: \"\"\r\n },\r\n PanelDescription: \"\",\r\n IsAlcohol: \"\",\r\n IsAssociatedWithPool: false,\r\n IsCompleted: false,\r\n IsDrug: \"\",\r\n IsBackground: false,\r\n IsNew: false,\r\n IsPhysical: false,\r\n IsAudiogram: false,\r\n IsPoct: false,\r\n IsRandom: false,\r\n IsReleased: false,\r\n LaboratoryVendorCode: \"\",\r\n LaboratoryVendorID: \"\",\r\n LaboratoryVendorName: \"\",\r\n LabPanelID: 0,\r\n TestReasonID: this.state.reasonObj?.TestReasonID || 0,\r\n TestReasonDescription: this.state.reasonObj?.Description || \"\",\r\n TestTypeDescription: \"Drug\",\r\n TestTypeID: 1,\r\n SampleTypeID: \"\",\r\n SampleTypeDescription: \"\",\r\n Labbased: true,\r\n OrderComment: \"\",\r\n SplitSpecimen: \"\",\r\n Observed: \"\",\r\n DOT: false,\r\n Normal: \"\",\r\n SampleTypeCode: sampleTypeCode,\r\n PersonDetail: {\r\n PersonID: this.state.donor.personId || 0,\r\n DateOfBirth: formatDate(this.state.donor.birthdate),\r\n HomePhone: \"\",\r\n CellPhone: formatPhone(this.state.donor.daytimePhone),\r\n WorkPhone: formatPhone(this.state.donor.eveningPhone),\r\n MiddleInitial: this.state.donor.middleInitial || \"\",\r\n AlternateID: \"\",\r\n DriverID: \"\",\r\n EmployerID: this.state.donor.donorId || \"\",\r\n SSN: \"\",\r\n FirstName: this.state.donor.firstName || \"\",\r\n LastName: this.state.donor.lastName || \"\",\r\n CCFPersonnelID: (this.state.donor.donorId || \"\").replace(/-/g, \"\"),\r\n DriverLicStateOfIssue: this.state.donor?.stateCode || this.state.donor?.state?.Abbreviation || \"\",\r\n Gender: this.state.donor.gender,\r\n Email: this.state.donor.email || \"\"\r\n },\r\n MockAlcoholTestDetailID: \"\",\r\n MockDrugTestDetailID: this.state.testDetailID,\r\n SSOToken: \"\",\r\n BaseUrl: FullBaseUrl(),\r\n //TODO: verify PoolMembersID: this.orderFormData ? this.orderFormData[0]?.PoolMembersID : undefined\r\n }\r\n\r\n order.MultipleDrug.push(\r\n {\r\n DOT: this.state.labAccount?.Regulated === \"Yes\",\r\n IsPoct: false,\r\n SplitSpecimen: false,\r\n Observed: false,\r\n Normal: true,\r\n RegulatoryModeID: \"\",\r\n RegulatoryModeName: \"\",\r\n EmployeeCategoryID: \"\",\r\n EmployeeCategoryName: \"\",\r\n LabAccountNumber: this.state.labAccount?.LabAccount || \"\",\r\n LaboratoryVendorCode: this.state.labAccount?.LabCode || \"\",\r\n LaboratoryVendorID: this.state.labAccount?.LabClientMemberId || 0,\r\n LabPanelID: this.state.panel?.Name || \"\",\r\n PanelDescription: this.state.panel?.Name || \"\",\r\n PanelCode: this.state.panel?.ID || \"\",\r\n SampleTypeCode: sampleTypeCode,\r\n Device: this.state.device?.Code || \"\"\r\n }\r\n )\r\n\r\n this.setState({ orderSubmitting: true })\r\n this.subscriptions.add(\r\n OrderSubmitObservable(order).subscribe(\r\n (results: OrderData) => {\r\n this.setState({ submittedOrder: true, orderSubmitting: false, accessCode: results.GovAccessCode })\r\n this.saveSuccess(results)\r\n\r\n },\r\n error => {\r\n this.setState({ submittedOrder: false, orderSubmitting: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n )\r\n }\r\n\r\n saveSuccess = (orderFinishData: OrderData) => {\r\n localStorage.setItem(StorageKey.SavedOrderData, JSON.stringify(orderFinishData))\r\n if (orderFinishData.FormFoxTestAN > 0 || orderFinishData.ProfileNumber) {\r\n if (orderFinishData.FormFoxTestAN === 0) {\r\n toast.error(orderFinishData.FFresult)\r\n }\r\n localStorage.setItem(StorageKey.CanViewOrderFinish, JSON.stringify(true))\r\n localStorage.setItem(StorageKey.FromSelectionInbox, JSON.stringify(!!this.orderFormData))\r\n } else {\r\n toast.error(orderFinishData.FFresult)\r\n }\r\n this.setState({ authorizationID: orderFinishData.FormFoxTestAN })\r\n if (orderFinishData.FormFoxTestAN > 0) {\r\n this.setState({ showConfirmation: true })\r\n }\r\n }\r\n\r\n closePotentialDonorMatchModal = () => {\r\n //this.PersonID = 0\r\n toast.error(\"Donor was not found. New donor will be created.\")\r\n this.setState({ showPotentialMatches: false }, () => this.saveOrder())\r\n }\r\n\r\n submitPotentialDonorMatchModal = (response: Donor) => {\r\n toast.success(\"Your Order will be placed with the selected ID Type.\")\r\n const fetchedDate = response.DateOfBirth ? new Date(response.DateOfBirth) : undefined\r\n const validDate = fetchedDate && fetchedDate.getTime && !isNaN(fetchedDate.getTime())\r\n const newDonor: DonorInformationModel = {\r\n ...this.state.donor,\r\n personId: response.PersonID,\r\n firstName: response.FirstName,\r\n middleInitial: response.MiddleInitial,\r\n lastName: response.LastName,\r\n eveningPhone: FormatPhone(response.WorkPhone),\r\n daytimePhone: FormatPhone(response.CellPhone),\r\n birthdate: validDate ? fetchedDate : undefined,\r\n\r\n firstNameReadOnly: !!response.FirstName,\r\n middleInitialReadOnly: !!response.MiddleInitial,\r\n lastNameReadOnly: !!response.LastName,\r\n homePhoneReadOnly: !!(response.HomePhone && response.HomePhone !== \"N/P\"),\r\n workPhoneReadOnly: !!(response.WorkPhone && response.WorkPhone !== \"N/P\"),\r\n state: undefined,\r\n stateCode: response.DriverLICStateOfIssue ? response.DriverLICStateOfIssue : undefined\r\n }\r\n this.setState({\r\n donor: newDonor,\r\n showPotentialMatches: false\r\n }, () => this.saveOrder())\r\n }\r\n\r\n performCollection = () => {\r\n this.setState({ showConfirmation: false, showPerformCollection: true })\r\n }\r\n\r\n closeConfirmation = () => {\r\n this.setState({ showConfirmation: false })\r\n this.onCancel();\r\n (this.props as RouteComponentProps).history.push(OrdersRoute)\r\n }\r\n\r\n closePerformCollection = () => {\r\n this.setState({ showPerformCollection: false });\r\n (this.props as RouteComponentProps).history?.push(OrdersRoute)\r\n }\r\n\r\n createGovPerformCollectionProps = (): GovPerformCollectionProps => {\r\n\r\n\r\n let testDetailID: number = 0\r\n let testDetailIDHash: string = \"\"\r\n let referenceID: number = 0\r\n let labCode: string = \"\"\r\n let sampleID: string = \"\"\r\n let tempInRange: number = 0\r\n let personID: number = 0\r\n let firstName: string = \"\"\r\n let lastName: string = \"\"\r\n let dateOfBirth: Date | undefined\r\n let gender: string = \"\"\r\n let sampleTypeCode = this.getSampleTypeCode(this.state.sampleType?.LabCode?.toUpperCase() || \"\", this.state.isPOCTDevice)\r\n let DeviceID: number = 0\r\n let AccountID: number = 0\r\n\r\n const authorizationID: number = this.state.authorizationID || 0\r\n if (authorizationID > 0) {\r\n\r\n const orderString = localStorage.getItem(StorageKey.SavedOrderData) || \"\"\r\n const orderData: OrderData = JSON.parse(orderString)\r\n if (orderData) {\r\n\r\n testDetailID = orderData.TestDetailID || 0\r\n if (testDetailID === 0) {\r\n testDetailID = orderData.DrugTestDetailID || 0\r\n }\r\n if (testDetailID === 0) {\r\n if (Array.isArray(orderData.DrugTestDetailIDList)) {\r\n if (orderData.DrugTestDetailIDList.length > 0) {\r\n testDetailID = orderData.DrugTestDetailIDList[0]\r\n }\r\n }\r\n }\r\n }\r\n testDetailIDHash = this.state.testDetailID || this.testDetailID\r\n referenceID = this.state.authorizationID || 0\r\n labCode = this.state.labAccount?.LabAccount || \"\"\r\n sampleID = \"\"\r\n tempInRange = 0\r\n personID = this.state.donor.personId || 0\r\n firstName = this.state.donor.firstName || \"\"\r\n lastName = this.state.donor.lastName || \"\"\r\n dateOfBirth = this.state.donor.birthdate\r\n gender = this.state.donor.gender || \"\"\r\n DeviceID = this.state.device?.DeviceID || 0\r\n AccountID = this.state.companyID\r\n }\r\n const result: GovPerformCollectionProps = {\r\n testDetailID: testDetailID,\r\n testDetailIDHash: testDetailIDHash,\r\n referenceID: referenceID,\r\n sampleTypeCode: sampleTypeCode,\r\n sampleTypeID: 0,\r\n labCode: labCode,\r\n sampleID: sampleID,\r\n tempInRange: tempInRange,\r\n personID: personID,\r\n firstName: firstName,\r\n lastName: lastName,\r\n dateOfBirth: dateOfBirth,\r\n gender: gender,\r\n onHide: () => this.closePerformCollection(),\r\n DeviceID: DeviceID,\r\n AccountID: AccountID\r\n }\r\n return result\r\n }\r\n\r\n render() {\r\n const { reasonObj, reasonOther, submittedOrder, isPOCTDevice, sampleType, labAccount, panel, device } = this.state\r\n const isIssuerValid = !!reasonObj && (reasonObj?.Description !== OTHER_REASON_TEXT || !!reasonOther)\r\n const panelSelected = !!panel?.ID && (!isPOCTDevice || (isPOCTDevice && !!device?.Code))\r\n const isPanelValid = !!sampleType?.SampleTypeID && !!labAccount?.LabAccount && panelSelected\r\n const canGoToOrderFeatures = isIssuerValid && isPanelValid && this.state.isDonorValid\r\n const isStep2Available = this.state.step !== 2 && canGoToOrderFeatures\r\n const isOrderCanBeSubmitted = canGoToOrderFeatures && !submittedOrder\r\n const isBirthDateRequired = true\r\n\r\n const performCollectionProps = this.createGovPerformCollectionProps()\r\n\r\n\r\n const headerSteps: StepData[] = [\r\n {\r\n title: '1',\r\n disabled: this.state.step === 1,\r\n current: this.state.step === 1,\r\n onClick: () => this.setState({ step: 1 })\r\n },\r\n {\r\n title: '2',\r\n disabled: !isStep2Available,\r\n current: this.state.step === 2,\r\n onClick: () => this.setState({ step: 2 })\r\n }\r\n ]\r\n\r\n const service: GovServiceDataModel = {\r\n serviceType: ServiceTypeOld.Drug,\r\n sampleType: sampleType?.LabCode,\r\n isDOT: labAccount?.Regulated === \"Yes\",\r\n panelCode: panel?.ID,\r\n panelDescription: panel?.Name,\r\n testToPerform: panel?.Name,\r\n labAccount: labAccount?.LabAccount,\r\n labCode: labAccount?.LabCode || \"\",\r\n labClientMemberId: labAccount?.LabClientMemberId || 0\r\n }\r\n\r\n return (<>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n REASON\r\n this.onReasonChange(e.target.value)}\r\n disabled={this.state.reasonsLoading || this.completingPendingOrders}>\r\n )}\r\n \r\n \r\n \r\n {!!this.state.selectedCompany && }\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {this.state.step === 2 && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.performCollection()}\r\n onHide={() => this.closeConfirmation()} />\r\n {this.state.showPerformCollection && this.state.authorizationID &&\r\n performCollectionProps.onHide()}\r\n DeviceID={performCollectionProps.DeviceID}\r\n AccountID={performCollectionProps.AccountID}>\r\n }\r\n \r\n )\r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport { toast } from \"react-toastify\"\r\nimport CollectionSite from \"../../api/Location/LocationModel/CollectionSite\"\r\nimport { stateAbbreviationsToCommonWealthState, StateToTimeZone } from \"../../api/Location/LocationModel/CommonWealthStateTextMapping\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { GetOrderRequest, SetFFTestDetailVendor, SetTestDetailVendor, SetTestDetailVendorParameters } from \"../../api/OrderRequests/SSOOrderRequest\"\r\nimport { StorageKey } from \"../../config/Constants\"\r\nimport { GetSSOToken } from \"../../storage/AuthToken\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport OrderFinish from \"../OrderRequests/OrderFinish\"\r\nimport ProcessingModal from \"../ProcessingModal\"\r\nimport SiteSearch from \"../SiteSearch/SiteSearch\"\r\nimport {AuthFormByToken} from \"../../api/OrderResults/AuthForm\"\r\nimport { Subscription } from \"rxjs\"\r\nimport printPdf,{showPdf} from \"../../utils/printPdf\"\r\n\r\ninterface GetAuthFormPageState {\r\n formFoxTestAN: number\r\n isLoading: boolean\r\n ssoToken: string\r\n spinnerMessage: string\r\n}\r\nexport default class GetAuthFormPage extends React.PureComponent<{}, GetAuthFormPageState> {\r\n state: GetAuthFormPageState = {\r\n formFoxTestAN: 0,\r\n isLoading: true,\r\n ssoToken: GetSSOToken(),\r\n spinnerMessage: \"Data is loading...\"\r\n }\r\n loadSubscription?: Subscription\r\n\r\n componentWillUnmount() {\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n }\r\n componentDidMount() {\r\n this.loadAuthFormPdf()\r\n }\r\n\r\n loadAuthFormPdf = () => {\r\n this.setState({isLoading:true, spinnerMessage: \"Data is loading...\"})\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n const params = {\r\n requestToken: this.state.ssoToken,\r\n FormFoxTestAN: 0\r\n }\r\n this.loadSubscription = AuthFormByToken(params).subscribe(\r\n data => {\r\n this.setState({isLoading:false, spinnerMessage:\"\"})\r\n showPdf(data)\r\n },\r\n error => {\r\n this.handleAPIError(error, { isLoading: false, spinnerMessage: \"\" })\r\n }\r\n )\r\n}\r\n\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n render() {\r\n const { isLoading, formFoxTestAN } = this.state;\r\n return \r\n {(isLoading) && }\r\n \r\n }\r\n}\r\n","import React, { Component } from \"react\"\r\nimport { RouteComponentProps } from 'react-router-dom'\r\nimport AuthService from \"./AuthService\"\r\nimport { AppState } from \"../AppState\"\r\nimport { Action, Dispatch } from \"redux\"\r\nimport { connect } from 'react-redux'\r\nimport { ssoOrderRequest } from \"../actions/WorkforceOneLoginActions\"\r\nimport { GetSSOPayload, SetEmbeddedOrderMode, SetSiteSearchMode } from \"../storage/AuthToken\"\r\nimport PageLoading from \"../components/PageLoading\"\r\nimport FormatData from \"../formatters/FormatBase64\"\r\n\r\nexport interface SSOCallbackState {\r\n spinnerMessage: string\r\n}\r\nexport interface SSOCallbackAppStateProps { }\r\nexport interface SSOCallbackDispatchProps {\r\n login: (ssoToken: string, data?: string) => void\r\n}\r\n\r\nexport class SSOCallback extends Component{\r\n state: SSOCallbackState = { spinnerMessage: \"Logging in...\" }\r\n\r\n componentDidMount() {\r\n const data = GetSSOPayload()\r\n const payload = parsePayload(data)\r\n if (payload && (payload as { Target: string }).Target === 'site-search') {\r\n SetSiteSearchMode()\r\n }\r\n if (payload && (payload as { Target: string }).Target === 'order') {\r\n SetEmbeddedOrderMode()\r\n }\r\n const authService = new AuthService()\r\n authService.signinRedirectCallback(this.props.location.pathname?.replace(\"/access_token=\", \"/&access_token=\")).then((user) => {\r\n if (user) {\r\n this.props.login(user.access_token, data)\r\n }\r\n }).catch(() => {\r\n this.setState({ spinnerMessage: \"Logging in error...\" })\r\n })\r\n }\r\n\r\n render() { return <>\r\n \r\n \r\n }\r\n}\r\n\r\nfunction parsePayload(base64String: string): object | undefined {\r\n try {\r\n const bytes = FormatData(base64String)\r\n const str = new TextDecoder().decode(bytes)\r\n return JSON.parse(str)\r\n } catch (error) {\r\n return undefined\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): SSOCallbackAppStateProps {\r\n return {\r\n }\r\n}\r\n\r\nfunction mapDispatchProps(dispatch: Dispatch): SSOCallbackDispatchProps {\r\n return {\r\n login: (ssoToken: string, data?: string) => (dispatch(ssoOrderRequest(ssoToken, data)))\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps, mapDispatchProps)(SSOCallback)\r\n","import { \r\n ReportSpecimenPositivityRoute, \r\n ReportTestingSummaryRoute, \r\n ReportDrugDetailRoute, \r\n ReportDailySummaryRoute, \r\n ReportIvrCallInComplianceRoute, \r\n ReportNoShowRoute \r\n} from \"../../config/Routes\";\r\n\r\nexport enum OnTrackReportType {\r\n IVRCallInCompliance = 1,\r\n DailySummary = 2,\r\n TestSummary = 3,\r\n SpecimenPositivity = 4,\r\n DrugDetail = 5,\r\n NoShow = 6\r\n}\r\nconst Reports = [\r\n ReportSpecimenPositivityRoute, \r\n ReportTestingSummaryRoute, \r\n ReportDrugDetailRoute, \r\n ReportDailySummaryRoute, \r\n ReportIvrCallInComplianceRoute,\r\n ReportNoShowRoute\r\n] as const\r\nexport type Report = typeof Reports[number]\r\nexport type OnTrackReportRecord = {\r\n type: OnTrackReportType\r\n title: string\r\n}\r\nexport type OnTrackReport = Record\r\n\r\nexport default function getOnTrackReport(report: Report) {\r\n const OnTrackReports: OnTrackReport = {\r\n [ReportTestingSummaryRoute]: { type: OnTrackReportType.TestSummary, title: \"Testing Summary\" },\r\n [ReportSpecimenPositivityRoute]: { type: OnTrackReportType.SpecimenPositivity, title: \"Specimen Positivity\" },\r\n [ReportDrugDetailRoute]: { type: OnTrackReportType.DrugDetail, title: \"Drug Detail\" },\r\n [ReportDailySummaryRoute]: { type: OnTrackReportType.DailySummary, title: \"Daily Summary\" },\r\n [ReportIvrCallInComplianceRoute]: { type: OnTrackReportType.IVRCallInCompliance, title: \"IVR Call-In Compliance\" },\r\n [ReportNoShowRoute]: { type: OnTrackReportType.NoShow, title: \"No Show\" }\r\n }\r\n return OnTrackReports[report]\r\n}\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { OnTrackReportType } from \"./OnTrackReport\"\r\n\r\nexport interface ReportParameters {\r\n reportType: OnTrackReportType\r\n fromDate?: string\r\n toDate?: string\r\n accountID?: number\r\n groupID?: number\r\n personID?: number\r\n}\r\n\r\nexport function GovReportsObservable(parameters: ReportParameters) {\r\n const requestBody: string = JSON.stringify(parameters)\r\n\r\n return ObservableFromFetch(\"Report/OnTrackGetReport\", requestBody)\r\n}\r\n","import * as React from \"react\"\r\nimport { connect } from \"react-redux\";\r\nimport { toast } from \"react-toastify\";\r\nimport DatePicker from \"react-datepicker\";\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\";\r\nimport { Button, Col, Form, InputGroup, Modal, ModalBody, Spinner } from \"react-bootstrap\";\r\nimport { FaAngleDown, FaSearch } from \"react-icons/fa\";\r\nimport 'react-datepicker/dist/react-datepicker.css'\r\nimport { AsyncTypeahead } from \"react-bootstrap-typeahead\";\r\nimport { Subscription } from \"rxjs\";\r\nimport ActionButton from \"../ActionButton\";\r\nimport TextFormControl from \"../OrderRequests/TextFormControl\";\r\nimport { DonorIdRegexp, InvalidDonorId, MaxDonorIdLength } from \"../../config/Constants\";\r\nimport { SearchDonorGetObservable } from \"../../api/OrderRequests/SearchDonorGet\";\r\nimport { BirthdayInput } from \"../FormattedInputs/BirthdayInput\";\r\nimport { GovReportsObservable } from \"../../api/GovReports/GovReportsObservable\";\r\nimport CompanyInput from \"../FormattedInputs/CompanyInput\";\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\";\r\nimport { AppState } from \"../../AppState\";\r\nimport { isCompanyAdmin, isLocationAdmin, isPortalAdmin } from \"../../authentication/isAdminRole\";\r\nimport GovPoolGet from \"../../api/Randoms/GovPoolGet\";\r\nimport GovPoolData from \"../../api/Randoms/RandomsModel/GovPoolData\";\r\nimport FormatError from \"../../formatters/FormatError\";\r\nimport { GetSelectedAssignedClinic } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\";\r\nimport { Donor } from \"../../api/OrderRequests/OrderRequestsModel/Donor\";\r\nimport { RegulatoryModeObservable } from \"../../api/OrderRequests/OrderRequestsConstraintGet\";\r\nimport { GetRegulatoryModeDonor } from \"../OrderRequests/OrderModels\";\r\nimport { RouteComponentProps } from \"react-router\";\r\nimport { Home } from \"../../config/Routes\";\r\nimport getOnTrackReport, { OnTrackReportRecord, Report } from \"../../api/GovReports/OnTrackReport\";\r\nimport { IsOnTrack } from \"../../App\";\r\nimport { LogOut } from \"../../AppStore\";\r\nimport FormatDate from \"../../formatters/FormatDate\";\r\nimport AutoFilterLocation from '../../api/Location/LocationModel/AutoFilterLocation';\r\nimport AutoFilterRegion from '../../api/Regions/Model/AutoFilterRegion';\r\nimport AutoFilterLocationsGet from '../../api/Location/AutoFilterLocationsGet';\r\n\r\ninterface ReportParametersProps {\r\n isLocationAdmin?: boolean\r\n isCompanyAdmin?: boolean\r\n isPortalAdmin?: boolean\r\n company?: number\r\n}\r\n\r\ninterface ReportParametersState {\r\n report: OnTrackReportRecord\r\n from?: Date\r\n to?: Date\r\n donorId?: string\r\n donor?: Donor\r\n companies: AutoFilterCompany[]\r\n locations: AutoFilterLocation[]\r\n idType?: GetRegulatoryModeDonor\r\n selectedCompany?: AutoFilterCompany\r\n selectedLocation?: AutoFilterLocation\r\n locationsLoading: boolean\r\n groups: GovPoolData[]\r\n selectedGroup?: GovPoolData\r\n groupLoading: boolean\r\n donorLoading: boolean\r\n regulatoryModeLoading: boolean\r\n companyChecked: boolean\r\n groupChecked: boolean\r\n donorChecked: boolean\r\n loading?: boolean\r\n}\r\n\r\nclass ReportParameters extends React.PureComponent {\r\n state: ReportParametersState = {\r\n report: getOnTrackReport(this.props.location.pathname as Report),\r\n companies: [],\r\n locations: [],\r\n groups: [],\r\n locationsLoading: false,\r\n groupLoading: false,\r\n donorLoading: false,\r\n regulatoryModeLoading: false,\r\n companyChecked: true,\r\n groupChecked: false,\r\n donorChecked: false\r\n }\r\n\r\n typeaheadGroup = React.createRef>()\r\n\r\n subscriptions = new Subscription()\r\n printSubscription?: Subscription\r\n donorSubscription?: Subscription\r\n\r\n handleCompanyChange = (companies: AutoFilterCompany[]) => {\r\n this.setState({ companies: companies, selectedCompany: companies[0] })\r\n this.loadAllLocations(companies[0])\r\n }\r\n handleLocationChange = (event: React.ChangeEvent) => {\r\n let location = this.state.locations.find(l => l.AccountID === Number(event.target.value))\r\n this.setState({ selectedLocation: location })\r\n }\r\n handleGroupChange = (selected: GovPoolData) => this.setState({ selectedGroup: selected })\r\n handleDonorIdChange = (value: string) => this.setState({ donorId: value })\r\n\r\n handleCompanyChecked = (e: React.ChangeEvent) => {\r\n this.setState({ companyChecked: e.target.checked, selectedCompany: this.state.companies[0], groupChecked: false, donorChecked: false, selectedGroup: undefined, donorId: undefined, donor: undefined })\r\n }\r\n\r\n handleGroupChecked = (e: React.ChangeEvent) => {\r\n this.setState({ companyChecked: false, groupChecked: e.target.checked, donorChecked: false, selectedCompany: undefined, donorId: undefined, donor: undefined })\r\n }\r\n\r\n handleDonorChecked = (e: React.ChangeEvent) => {\r\n this.setState({ companyChecked: false, groupChecked: false, donorChecked: e.target.checked, selectedGroup: undefined, selectedCompany: undefined })\r\n }\r\n\r\n handleGenerateReportClick = () => {\r\n this.setState({ loading: true })\r\n this.printSubscription && this.printSubscription.unsubscribe()\r\n let accountID = this.state.selectedLocation?.AccountID || this.state.selectedCompany?.AccountID\r\n this.printSubscription = GovReportsObservable({\r\n reportType: this.state.report.type,\r\n fromDate: FormatDate(this.state.from),\r\n toDate: FormatDate(this.state.to),\r\n accountID: this.state.companyChecked ? accountID : undefined,\r\n groupID: this.state.groupChecked ? this.state.selectedGroup?.GovPoolId : undefined,\r\n personID: this.state.donorChecked ? this.state.donor?.PersonID : undefined\r\n }).subscribe(\r\n data => {\r\n this.setState({ loading: false })\r\n this.print(data)\r\n },\r\n error => {\r\n this.setState({ loading: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n }\r\n\r\n handleCancelClick = () => (this.props as RouteComponentProps).history?.push(Home)\r\n\r\n print(base64pdf: string) {\r\n const pdfWindow = window.open('about:blank')\r\n if (pdfWindow) {\r\n pdfWindow.document.write(\"\")\r\n }\r\n }\r\n\r\n validateDonorFormat = () => {\r\n const donorId = this.state.donorId || \"\"\r\n return !this.state.donorChecked || (donorId.length > 0 && donorId.length <= MaxDonorIdLength && DonorIdRegexp.test(donorId))\r\n }\r\n\r\n isParamsValid = () => {\r\n const { selectedCompany, selectedGroup, donor, companyChecked, groupChecked, donorChecked, from, to } = this.state\r\n return from && to && ((companyChecked && selectedCompany) || (groupChecked && selectedGroup) || (donorChecked && donor))\r\n }\r\n\r\n onDonorSearch = () => {\r\n this.donorSubscription && this.donorSubscription.unsubscribe()\r\n this.donorSubscription = SearchDonorGetObservable({\r\n CompanyID: this.props.company || 0,\r\n Identifier: this.state.donorId,\r\n IdentifierType: this.state.idType?.Rank,\r\n RegulatoryModeID: 0,\r\n isPortalAdmin: this.props.isPortalAdmin\r\n }).subscribe(\r\n (result: Donor[]) => {\r\n this.setState({ donorLoading: false, donor: result[0] })\r\n !result.length && toast.error(\"Donor was not found.\")\r\n },\r\n (error) => {\r\n this.setState({ donorLoading: false })\r\n toast.error(FormatError(error))\r\n })\r\n }\r\n\r\n componentDidUpdate(prevProps: ReportParametersProps & RouteComponentProps) {\r\n if (this.props.location.pathname !== prevProps.location.pathname) {\r\n this.setState(prev => ({\r\n ...prev,\r\n report: getOnTrackReport(this.props.location.pathname as Report),\r\n selectedCompany: this.props.isPortalAdmin ? undefined : prev.selectedCompany,\r\n selectedGroup: undefined,\r\n donorId: undefined,\r\n donor: undefined\r\n }))\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if(!IsOnTrack()) {\r\n toast.error(\"The request is unauthorized.\")\r\n LogOut()\r\n }\r\n this.setState({ groupLoading: true, regulatoryModeLoading: true })\r\n\r\n this.subscriptions.add(\r\n RegulatoryModeObservable(0).subscribe(\r\n results => this.setState({ idType: results.find(item => item.PrimaryIDType === \"EmployerID\"), regulatoryModeLoading: false }),\r\n error => {\r\n this.setState({ regulatoryModeLoading: false })\r\n toast.error(error)\r\n }\r\n )\r\n )\r\n\r\n this.subscriptions.add(\r\n GovPoolGet().subscribe(\r\n (results: GovPoolData[]) => this.setState({ groups: results, groupLoading: false }),\r\n (error) => {\r\n this.setState({ groupLoading: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions && this.subscriptions.unsubscribe()\r\n this.donorSubscription && this.donorSubscription.unsubscribe()\r\n this.printSubscription && this.printSubscription.unsubscribe()\r\n }\r\n\r\n loadAllLocations = (company?: AutoFilterCompany, region?: AutoFilterRegion) => {\r\n this.setState({ locationsLoading: true })\r\n this.subscriptions.add(\r\n AutoFilterLocationsGet(company?.AccountID || 0, region?.Code || \"\", \"\").subscribe(\r\n data =>\r\n {\r\n let location = undefined\r\n if (this.props.isLocationAdmin)\r\n {\r\n location = data[0]\r\n }\r\n this.setState({ locations: data, locationsLoading: false, selectedLocation: location })\r\n },\r\n () => this.setState({ locationsLoading: false })\r\n )\r\n )\r\n }\r\n\r\n render() {\r\n const { report, donorId, donor, donorLoading, companyChecked, groupChecked, donorChecked, from, to } = this.state\r\n\r\n return (\r\n \r\n \r\n Report Parameters for {report.title}\r\n \r\n \r\n
\r\n \r\n Date Collected\r\n From\r\n \r\n this.setState({ from: date as Date })}\r\n customInput={}\r\n />\r\n \r\n To\r\n \r\n this.setState({ to: date as Date })}\r\n customInput={}\r\n />\r\n \r\n \r\n \r\n Filter by:\r\n \r\n \r\n \r\n this.handleCompanyChecked(e)}\r\n />\r\n \r\n Company\r\n \r\n \r\n \r\n \r\n \r\n \r\n
 
\r\n \r\n Location\r\n \r\n \r\n {!this.props.isLocationAdmin && }\r\n {this.state.locations.map(l => )}\r\n \r\n \r\n
\r\n \r\n \r\n this.handleGroupChecked(e)}\r\n />\r\n \r\n Group\r\n \r\n true}\r\n isLoading={this.state.groupLoading}\r\n onChange={items => this.handleGroupChange(items[0])}\r\n onSearch={() => { }}\r\n options={this.state.groups}\r\n selected={this.state.selectedGroup ? [this.state.selectedGroup] : []}\r\n minLength={0}\r\n labelKey=\"Name\"\r\n disabled={!groupChecked}\r\n placeholder=\"Enter the Group name\"\r\n inputProps={{ autoComplete: \"chrome-off\" }}>\r\n {!this.state.groupLoading && groupChecked &&\r\n }\r\n \r\n \r\n \r\n \r\n \r\n this.handleDonorChecked(e)}\r\n />\r\n \r\n Donor ID\r\n \r\n \r\n this.handleDonorIdChange(value)}\r\n isValid={() => this.validateDonorFormat()}\r\n enterTapHandler={this.onDonorSearch} />\r\n {InvalidDonorId}\r\n \r\n \r\n \r\n \r\n {!donorLoading && donor && Donor: {donor.FirstName} {donor.LastName} was found.}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n this.handleGenerateReportClick()} spin={this.state.loading} disableOnSpin>Continue\r\n \r\n
\r\n
)\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): ReportParametersProps {\r\n return {\r\n isLocationAdmin: isLocationAdmin(state),\r\n isCompanyAdmin: isCompanyAdmin(state),\r\n isPortalAdmin: isPortalAdmin(state),\r\n company: GetSelectedAssignedClinic(state)?.AccountID\r\n }\r\n}\r\n\r\nconst ConnectedReportParameters = connect(mapStateToProps, null)(ReportParameters)\r\nexport default ConnectedReportParameters\r\n","import * as React from \"react\"\r\nimport { Modal, Form, Button, Col } from \"react-bootstrap\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { debounceTime, filter, map, switchMap } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { connect } from \"react-redux\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport { EmailRegexp, PhoneRegexp, SiteDomain } from \"../../../config/Constants\"\r\nimport { AsyncTypeahead } from \"react-bootstrap-typeahead\"\r\nimport MaskedInput from \"react-maskedinput\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport { EmailCheck } from \"../../../api/Invitation/InformationGet\"\r\nimport { GetRoles } from \"../../../api/Roles/UserRolesGet\"\r\nimport Role from \"../../../api/Roles/Model/Role\"\r\nimport ImplementationSearchResult from \"../../../api/Invitation/Model/ImplementationSearchResult\"\r\nimport { AllImplementationsGet } from \"../../../api/Invitation/InformationGet\"\r\nimport { PortalInvitation } from \"../../../api/Invitation/InvitationCreate\"\r\nimport { APIError } from \"../../../api/ObservableFromFetch\"\r\nimport { AppState } from \"../../../AppState\"\r\nimport { getUserNameForSelectedCompany, RoleIdForSelectedCompany } from \"../../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\n\r\ninterface AddNewAdminModalProps {\r\n show: boolean\r\n onClose: (created: boolean) => void\r\n}\r\n\r\ninterface AddNewAdminAuthProps {\r\n PrimaryRoleID?: number\r\n UserName?: string\r\n}\r\n\r\ninterface AddNewAdminModalValidity {\r\n implementationValid: boolean\r\n emailValid: boolean\r\n phoneValid: boolean\r\n roleValid: boolean\r\n firstNameValid: boolean\r\n lastNameValid: boolean\r\n}\r\n\r\nexport interface AddNewAdminModalData {\r\n implementationID?: number\r\n email: string\r\n phone: string\r\n firstName: string\r\n lastName: string\r\n roleID?: number\r\n}\r\n\r\ninterface AddNewAdminModalState extends AddNewAdminModalData, AddNewAdminModalValidity {\r\n emailChecking: boolean\r\n emailAvailable?: boolean\r\n saving: boolean\r\n rolesLoading: boolean\r\n roles?: Role[]\r\n implementationsLoading: boolean\r\n implementations: ImplementationSearchResult[]\r\n selectedImplementation?: ImplementationSearchResult\r\n}\r\n\r\nexport class AddNewAdminModal extends React.PureComponent {\r\n emptyData: AddNewAdminModalData = {\r\n implementationID: undefined,\r\n email: \"\",\r\n phone: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n roleID: undefined\r\n }\r\n positiveValidity: AddNewAdminModalValidity = {\r\n implementationValid: true,\r\n emailValid: true,\r\n phoneValid: true,\r\n roleValid: true,\r\n firstNameValid: true,\r\n lastNameValid: true\r\n }\r\n defaultState: AddNewAdminModalState = {\r\n ...this.emptyData,\r\n ...this.positiveValidity,\r\n emailChecking: false,\r\n emailAvailable: undefined,\r\n rolesLoading: false,\r\n saving: false,\r\n implementationsLoading: false,\r\n implementations: []\r\n }\r\n state: AddNewAdminModalState = { ...this.defaultState }\r\n\r\n checkEmail$ = new Subject()\r\n emailExistsSubscription?: Subscription\r\n userRolesSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n implementationsSubscription?: Subscription\r\n\r\n searchImplementation$ = new Subject()\r\n typeahead = React.createRef>()\r\n\r\n componentDidMount() {\r\n this.emailExistsSubscription = this.checkEmail$.pipe(\r\n map(name => name.trim()),\r\n filter(name => this.isEmailValid(name)),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n EmailCheck(name).pipe(\r\n map(result => ({ loading: false, result: result.IsEmailExists }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: boolean }) => this.setState({ emailChecking: o.loading, emailAvailable: !o.result }),\r\n (error) => this.handleAPIError(error, { emailChecking: false, emailAvailable: undefined })\r\n )\r\n\r\n //TODO: replace with correct RoleID\r\n const roleID = this.props.PrimaryRoleID || 0\r\n this.setState({ rolesLoading: true })\r\n this.userRolesSubscription = GetRoles(roleID).subscribe(\r\n (data: Role[]) => this.setState({ roles: data, roleID: data.length === 1 ? data[0].RoleID : undefined, rolesLoading: false }),\r\n (error) => this.handleAPIError(error, { rolesLoading: false, emailAvailable: undefined })\r\n )\r\n\r\n this.implementationsSubscription = this.searchImplementation$.pipe(\r\n filter(filter => filter.length >= 3),\r\n debounceTime(500),\r\n map(filter => (filter ?? \"\").trim()),\r\n switchMap((filter) => concat(\r\n of({ isLoading: true }),\r\n AllImplementationsGet(filter).pipe(\r\n map((data) => ({ isLoading: false, items: data }))\r\n )\r\n ))\r\n ).subscribe(\r\n (state: { isLoading: boolean, items?: ImplementationSearchResult[] }) => {\r\n state.items\r\n ? this.setState({ implementationsLoading: state.isLoading, implementations: state.items })\r\n : this.setState({ implementationsLoading: state.isLoading })\r\n },\r\n (error) => this.handleAPIError(error, { isImplementationsLoading: false })\r\n )\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n this.emailExistsSubscription && this.emailExistsSubscription.unsubscribe()\r\n this.userRolesSubscription && this.userRolesSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.implementationsSubscription && this.implementationsSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error(FormatError(error))\r\n }\r\n\r\n isEmailValid = (value: string) => EmailRegexp.test(value)\r\n isPhoneValid = (value: string) => PhoneRegexp.test(value)\r\n isRoleValid = (value: number | undefined): boolean => !!value && !!this.state.roles?.find(item => item.RoleID === value)\r\n isNameValid = (value: string) => !!value.trim()\r\n\r\n handleImplementationChange = (items: ImplementationSearchResult[]) => {\r\n this.setState({\r\n selectedImplementation: items[0],\r\n implementationID: items[0]?.ImplementationID || 0,\r\n implementationValid: !!items[0],\r\n })\r\n }\r\n\r\n handleEmailChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n this.setState({ email: value, emailValid: this.isEmailValid(value), emailAvailable: undefined })\r\n }\r\n\r\n handlePhoneChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n this.setState({ phone: value, phoneValid: this.isPhoneValid(value) })\r\n }\r\n\r\n handleRoleChange = (e: React.ChangeEvent) => {\r\n const value = Number(e.target.value)\r\n this.setState({ roleID: value, roleValid: this.isRoleValid(value) })\r\n }\r\n\r\n handleClose = (hasChanges: boolean) => {\r\n const { roles } = this.state\r\n this.setState({ ...this.defaultState, roleID: roles && roles.length === 1 ? roles[0].RoleID : undefined })\r\n this.props.onClose(hasChanges)\r\n }\r\n\r\n getPortalSetupModalValidity = () =>{\r\n const { implementationID, email, emailAvailable, phone, roleID, lastName, firstName } = this.state\r\n const validity: AddNewAdminModalValidity = {\r\n implementationValid: !!implementationID,\r\n emailValid: this.isEmailValid(email) && !!emailAvailable,\r\n phoneValid: this.isPhoneValid(phone),\r\n roleValid: this.isRoleValid(roleID),\r\n firstNameValid: this.isNameValid(firstName),\r\n lastNameValid: this.isNameValid(lastName)\r\n }\r\n return validity\r\n }\r\n\r\n prepareUrl = (value: string) => value.replace(/[^a-zA-Z0-9_-]/g, \"\").toLowerCase()\r\n\r\n handleCreateClick = () => {\r\n if (this.state.emailChecking || this.state.rolesLoading || this.state.implementationsLoading) {\r\n return\r\n }\r\n const { implementationID, email, emailAvailable, phone, roleID, selectedImplementation, firstName, lastName } = this.state\r\n const validity = this.getPortalSetupModalValidity()\r\n const isValid = Object.values(validity).every((valid: boolean) => valid)\r\n if (!isValid) {\r\n this.setState(validity)\r\n return\r\n }\r\n\r\n const name = selectedImplementation?.ImplementationName || \"\"\r\n const subdomain = selectedImplementation?.SubDomain.split('.')[0] || \"\"\r\n\r\n this.setState({ saving: true })\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.saveSubscription = PortalInvitation({\r\n CompanyName: name,\r\n EmailAddress: email,\r\n Link: `${this.prepareUrl(subdomain)}.${SiteDomain}`,\r\n ModifiedBy: this.props.UserName || \"\",\r\n PhoneNumber: phone.replace(/-/g, \"\"),\r\n RoleID: roleID || 0,\r\n IsExistingUser: !emailAvailable,\r\n ImplementationID: implementationID || 0,\r\n SubscriptionPlanID: 0,\r\n IsGOVTPortal: false,\r\n LastName: lastName,\r\n FirstName: firstName\r\n }).subscribe(\r\n (result) => {\r\n this.setState({ saving: false })\r\n toast.success(result)\r\n this.handleClose(true)\r\n },\r\n (error) => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n handleFirstNameChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n this.setState({ firstName: value, firstNameValid: this.isNameValid(value) })\r\n }\r\n\r\n handleLastNameChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value\r\n this.setState({ lastName: value, lastNameValid: this.isNameValid(value) })\r\n }\r\n\r\n render() {\r\n const { implementationValid, email, emailValid, emailChecking, emailAvailable, \r\n phone, phoneValid,\r\n roleID, roleValid, rolesLoading,\r\n firstName, firstNameValid, lastName, lastNameValid } = this.state\r\n let disableCreate = emailChecking || rolesLoading\r\n\r\n if (!disableCreate){\r\n const validity = this.getPortalSetupModalValidity()\r\n const isValid = Object.values(validity).every((valid: boolean) => valid)\r\n disableCreate = !isValid\r\n }\r\n return (<>\r\n \r\n \r\n ADD NEW PORTAL ADMIN\r\n \r\n \r\n
\r\n \r\n Portal Name\r\n \r\n true}\r\n isLoading={this.state.implementationsLoading}\r\n onSearch={() => { }}\r\n onInputChange={input => this.searchImplementation$.next(input)}\r\n onChange={this.handleImplementationChange}\r\n options={this.state.implementations}\r\n selected={this.state.selectedImplementation ? [this.state.selectedImplementation] : []}\r\n minLength={3}\r\n emptyLabel=\"No Portals Found\"\r\n placeholder=\"\"\r\n isInvalid={!implementationValid}\r\n inputProps={{ autoComplete: \"chrome-off\" }}>\r\n {!this.state.implementationsLoading &&\r\n }\r\n \r\n \r\n \r\n \r\n Portal Admin Email Address\r\n \r\n ) => this.checkEmail$.next(e.target.value)}\r\n isInvalid={!emailValid}\r\n disabled={emailChecking} />\r\n {!emailChecking && !emailValid && Please enter valid email}\r\n {!emailChecking && emailAvailable && < Form.Control.Feedback type=\"valid\" className=\"d-block\">Email is available}\r\n {!emailChecking && emailAvailable === false && Email is already in use}\r\n \r\n \r\n \r\n Portal Admin Personal Phone\r\n \r\n \r\n This phone number will be used to validate the Administrator. Please provide a direct number or mobile number (not a main company number or extension)\r\n \r\n \r\n \r\n Portal Admin First Name\r\n \r\n \r\n \r\n \r\n \r\n Portal Admin Last Name\r\n \r\n \r\n \r\n \r\n \r\n User's Role\r\n \r\n \r\n {this.state.roles && this.state.roles.length > 1 && }\r\n {this.state.roles?.map(role => )}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n Create\r\n \r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): AddNewAdminAuthProps {\r\n return {\r\n PrimaryRoleID: RoleIdForSelectedCompany(state),\r\n UserName: getUserNameForSelectedCompany(state)\r\n }\r\n}\r\n\r\nconst ConnectedPortalSetupModal = connect(mapStateToProps, null)(AddNewAdminModal)\r\nexport default ConnectedPortalSetupModal\r\n","import React, { PureComponent } from 'react'\r\nimport { Button, Col, Container, Row, Spinner, Table } from 'react-bootstrap'\r\nimport { Subscription, BehaviorSubject, of, concat } from \"rxjs\"\r\nimport { distinctUntilChanged, switchMap, map, catchError } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { connect } from \"react-redux\"\r\nimport { AppState } from '../../../AppState'\r\nimport { Filter, Sort } from \"../../../api/GridRequest\"\r\nimport { CustomizableFilterColumn } from '../../ColumnsCustomizeModal/CustomizableColumn'\r\nimport { AppPageWrapper } from '../../NavMenu/AppPageWrapper'\r\nimport TablePagination from '../../TablePagination'\r\nimport SearchField from '../../../api/SearchField'\r\nimport SearchBar from '../../SearchBar'\r\nimport FormatError from '../../../formatters/FormatError'\r\nimport ColumnHeaderFilter from '../../ColumnHeaderFilter'\r\nimport PortalGridRow from '../../../api/Invitation/Portal/PortalGridRow'\r\nimport { PortalColumnFilter } from '../../../api/Invitation/Portal/PortalColumnFilter'\r\nimport PortalGridData from '../../../api/Invitation/Portal/PortalGridData'\r\nimport { PortalGridGetObservable } from '../../../api/Invitation/Portal/PortalGridGetObservable'\r\nimport { isSiteAdmin } from '../../../authentication/isAdminRole'\r\nimport UserInfo, { UserInfoMode } from '../../Administration/UserInfo'\r\nimport { ImplementationGroupID_Workforce } from '../../../config/Constants'\r\nimport { AddNewPortalRoute, PortalDetailsRoute } from '../../../config/Routes'\r\nimport { Link } from 'react-router-dom'\r\nimport FormatPhone from '../../../formatters/FormatPhone'\r\nimport FormatZipCode from '../../../formatters/FormatZipCode'\r\nimport {RouteComponentProps} from \"react-router\";\r\nimport AddNewAdminModal from './AddNewAdminModal'\r\n\r\ntype Column = CustomizableFilterColumn\r\n\r\ninterface PortalGridState {\r\n loading: boolean\r\n data?: PortalGridData\r\n details?: PortalGridRow\r\n columns: Column[]\r\n showUserInfo: boolean\r\n showUserInfoFor?: string\r\n participationId?: number\r\n showAddAdmin: boolean\r\n}\r\n\r\ninterface PortalGridProps {\r\n isSiteAdmin?: boolean\r\n}\r\n\r\nconst PageSize = 30\r\n\r\nconst DefaultSearchFields: SearchField[] = [\r\n { ID: \"ImplementationName\", Name: \"Portal Name\" },\r\n { ID: \"Email\", Name: \"Email\" }\r\n]\r\n\r\nconst DefaultColumns: Column[] = [\r\n { name: \"ImplementationName\", label: \"Portal Name\", visible: true},\r\n { name: \"ImplementationType\", label: \"Type\", visible: true },\r\n { name: \"CompanyName\", label: \"Company Name\", visible: true },\r\n { name: \"Address\", label: \"Address\", visible: true },\r\n { name: \"City\", label: \"City\", visible: true },\r\n { name: \"StateCode\", label: \"State\", visible: true },\r\n { name: \"Zip\", label: \"Zip\", visible: true },\r\n { name: \"Email\", label: \"Admin Email\", visible: true },\r\n { name: \"Phone\", label: \"Admin Phone\", visible: true },\r\n { name: \"Inactive\", label: \"Active/Inactive\", visible: true }\r\n]\r\n\r\ninterface GridSearchParams {\r\n pageNumber: number\r\n sort: Sort\r\n filters: Filter[]\r\n search: { field: string, text: string }\r\n}\r\n\r\nclass PortalGrid extends PureComponent {\r\n state: PortalGridState = {\r\n loading: false,\r\n columns: DefaultColumns,\r\n showUserInfo: false,\r\n showAddAdmin: false\r\n }\r\n\r\n page$ = new BehaviorSubject({\r\n pageNumber: 1,\r\n sort: { column: \"\", order: \"\" },\r\n filters: [],\r\n search: { field: \"\", text: \"\" }\r\n })\r\n\r\n sortGrid(column: string, order?: string) {\r\n const newSort = { column: column, order: order || \"\" }\r\n this.page$.next({ ...this.page$.value, sort: newSort })\r\n }\r\n\r\n filterGrid(column: string, items: string[]) {\r\n const filters = [...this.page$.value.filters]\r\n const filter = { column: column, values: items }\r\n let index = filters.findIndex(item => item.column === filter.column)\r\n if (index >= 0) {\r\n filters[index] = filter\r\n } else {\r\n filters.push(filter)\r\n }\r\n\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, filters: filters })\r\n }\r\n\r\n onSearch = (field: string, text: string) => this.page$.next({ ...this.page$.value, pageNumber: 1, search: { field: field, text: text } })\r\n handlePageChange = (pageNumber: number) => this.page$.next({ ...this.page$.value, pageNumber: pageNumber })\r\n handleAddPortal = () => (this.props as RouteComponentProps).history?.push(AddNewPortalRoute)\r\n reload = () => this.page$.next({ ...this.page$.value, pageNumber: 1 })\r\n hideUserInfo = () => this.setState({ showUserInfoFor: undefined, showUserInfo: false })\r\n showUserInfo = (data: PortalGridRow) => {\r\n this.setState({ showUserInfoFor: data.UserName, participationId: data.ParticipationID, showUserInfo: true })\r\n }\r\n handleAddAdminModalClose = (hasUpdates: boolean) => {\r\n this.setState({ showAddAdmin: false })\r\n if (hasUpdates) {\r\n this.handlePageChange(1)\r\n }\r\n }\r\n\r\n pageSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.pageSubscription = this.page$.pipe(\r\n distinctUntilChanged(),\r\n switchMap((params: GridSearchParams) => concat(\r\n of({ loading: true }),\r\n PortalGridGetObservable(params.pageNumber, PageSize, params.sort, params.filters, params.search, ImplementationGroupID_Workforce).pipe(\r\n map((result: PortalGridData) => ({ data: result, loading: false })),\r\n catchError((error) => of({ loading: false, errorMessage: FormatError(error) }))\r\n )))\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: PortalGridData, errorMessage?: string }) => {\r\n if (newState.data) {\r\n this.setState({ loading: newState.loading, data: newState.data })\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n newState.errorMessage && toast.error(newState.errorMessage)\r\n },\r\n (error) => {\r\n this.setState({ loading: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n this.page$.unsubscribe()\r\n }\r\n\r\n visibleColumns = () => this.state.columns.filter(col => col.visible)\r\n\r\n renderHeader = () => this.visibleColumns().map((col: Column, i) => {\r\n const sort = this.page$.value.sort\r\n return (\r\n \r\n {this.state.data && col.filter && col.filter in this.state.data && item.column === col.filter)?.values || []}\r\n sort={sort.column === col.name ? sort.order === \"asc\" ? \"asc\" : \"desc\" : undefined}\r\n items={this.state.data[col.filter as keyof PortalColumnFilter]?.filter(item => !!item) || []}\r\n onSort={(order?: string) => this.sortGrid(col.name, order)}\r\n onFilter={(items: string[]) => col.filter && this.filterGrid(col.filter, items)}\r\n />}\r\n {(this.state.data && !col.filter) && {col.label || col.name}}\r\n \r\n )\r\n })\r\n\r\n renderRows = () => {\r\n if (this.state.data?.Records && this.state.data?.Records.length) {\r\n return this.state.data.Records.map((row: PortalGridRow, i: number) =>\r\n \r\n {row.ImplementationName}\r\n {row.ImplementationType}\r\n {row.CompanyName}\r\n {row.Address}\r\n {row.City}\r\n {row.StateCode}\r\n {FormatZipCode(row.Zip)}\r\n \r\n {FormatPhone(row.Phone)}\r\n {row.Inactive ? \"Inactive\" : \"Active\"}\r\n )\r\n } else {\r\n return No Records Found\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderHeader()}\r\n \r\n \r\n \r\n {\r\n this.state.loading ?\r\n \r\n \r\n : this.renderRows()\r\n }\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n {this.state.data ?\r\n \r\n \r\n Total records: {this.state.loading ? \" ... \" : this.state.data.Total}\r\n \r\n \r\n : undefined}\r\n
\r\n {this.state.showAddAdmin && }\r\n
\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): PortalGridProps {\r\n return {\r\n isSiteAdmin: isSiteAdmin(state)\r\n }\r\n}\r\nconst ConnectedPortalGrid = connect(mapStateToProps, null)(PortalGrid)\r\nexport default ConnectedPortalGrid\r\n","import { ObservableFromFetch } from \"../../ObservableFromFetch\"\r\nimport { Filter, Sort } from \"../../GridRequest\"\r\nimport PortalGridData from \"./PortalGridData\"\r\n\r\nexport function PortalGridGetObservable(pageNumber: number, pageSize: number, sort: Sort, filters: Filter[], search: { field: string, text: string }, implementationGroupID?: number) {\r\n const requestBody: string = JSON.stringify({\r\n ImplementationGroupID: implementationGroupID,\r\n PageNumber: pageNumber,\r\n PageSize: pageSize,\r\n SearchBy: search.field || \"\",\r\n SearchText: search.text || \"\",\r\n SortGrid: { SortColumn: sort.column, SortOrder: sort.order.toUpperCase() }\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceSuperUser/PortalDetails\", requestBody)\r\n}\r\n","import * as React from \"react\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport CompanyInformation from \"../../Administration/CompanyInformation\";\r\n\r\nexport default class AddNewPortal extends React.PureComponent {\r\n render() {\r\n return \r\n }\r\n}","import * as React from \"react\"\r\nimport { Typeahead, AsyncTypeahead } from \"react-bootstrap-typeahead\"\r\nimport { Button, Form } from \"react-bootstrap\"\r\nimport { FaAngleDown } from \"react-icons/fa\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { catchError, debounceTime, filter, map, switchMap } from \"rxjs/operators\"\r\nimport { DataLoader } from \"../OrderRequests/GovCollection\"\r\nimport GetAccountsByNameObservable from \"../../api/Companies/GetAccountsByName\"\r\nimport { RouteComponentProps, withRouter } from \"react-router\"\r\nimport { WorkforceClinicPortal } from \"../../AppState\"\r\nimport { AccountType } from \"../../config/Constants\"\r\n\r\ninterface AccountInputState {\r\n accounts: DataLoader\r\n}\r\n\r\ninterface AccountInputProps {\r\n defaultValue?: string\r\n forceEdit?: boolean\r\n id?: string\r\n disabled?: boolean\r\n filter?: boolean\r\n placeholder?: string\r\n emptyLabel?: string\r\n accountType: AccountType\r\n onChange?: (items: AutoFilterCompany[]) => void\r\n}\r\n\r\nclass AccountInput extends React.PureComponent {\r\n accountAsyncTypeahead = React.createRef>()\r\n accountTypeahead = React.createRef>()\r\n accounts$ = new Subject()\r\n subscription?: Subscription\r\n state: AccountInputState = { accounts: {} }\r\n defaultAccountName: string = this.props.defaultValue || this.getAccountName()\r\n\r\n componentDidMount() {\r\n this.subcribeAccounts()\r\n this.onInputChange(this.defaultAccountName)\r\n }\r\n\r\n componentDidUpdate(prevProps: AccountInputProps & RouteComponentProps, prevState: AccountInputState) {\r\n if ((this.props.accountType !== prevProps.accountType) || !this.defaultAccountName && this.props.location.pathname !== prevProps.location.pathname) {\r\n this.accountAsyncTypeahead?.current?.clear()\r\n this.onInputChange(\"\")\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n }\r\n\r\n onInputChange(value: string) {\r\n if (value === \"\") {\r\n this.setState({ accounts: { selected: undefined } }, () => this.props.onChange && this.props.onChange([]))\r\n }\r\n else {\r\n this.accounts$.next(value)\r\n }\r\n }\r\n\r\n getAccountName() {\r\n\r\n const participation = sessionStorage.getItem(\"company-selection\")\r\n const portals: WorkforceClinicPortal[] = JSON.parse(sessionStorage.getItem(\"wf2-STRY0045127-portals\") || \"{}\")\r\n var account = undefined\r\n for (const p of portals) {\r\n for (const c of p.AssignedClientDetailsOfClinic) {\r\n if (c.ParticipationID.toString() == participation) {\r\n account = c\r\n break\r\n }\r\n }\r\n if (account) {\r\n break\r\n }\r\n }\r\n return account?.Name || \"\"\r\n }\r\n\r\n onChange = (accounts: AutoFilterCompany[]) => {\r\n this.setState({ accounts: { ...this.state.accounts, selected: accounts[0] } })\r\n this.props.onChange && this.props.onChange(accounts)\r\n }\r\n\r\n subcribeAccounts() {\r\n this.subscription = this.accounts$.pipe(\r\n debounceTime(500),\r\n filter(filter => filter.length >= 1 || filter.length === 0),\r\n switchMap((filter) => filter.length === 0 ?\r\n of({ loading: false, accounts: this.state.accounts.data }) :\r\n concat(\r\n of({ loading: true }),\r\n GetAccountsByNameObservable(filter, undefined, this.props.accountType).pipe(\r\n map((data) => ({ loading: false, accounts: data })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n )\r\n )\r\n ).subscribe(\r\n (state: { loading: boolean, accounts?: AutoFilterCompany[] }) => {\r\n state.accounts ?\r\n this.setState({ accounts: { loading: state.loading, data: state.accounts, selected: this.defaultAccountName ? state.accounts[0] : undefined } }, () => this.defaultAccountName && this.onChange((state.accounts || []))) :\r\n this.setState({ accounts: { loading: state.loading } })\r\n },\r\n () => this.setState({ accounts: { loading: false } })\r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n {(!this.defaultAccountName || this.props.forceEdit) ? this.props.filter ? props.selected.length > 0 || option.Name.toLowerCase().indexOf(props.text.toLowerCase()) !== -1 : true}\r\n id={this.props.id || AccountType[this.props.accountType]}\r\n isLoading={!!this.state.accounts.loading}\r\n labelKey=\"Name\"\r\n minLength={0}\r\n onInputChange={input => this.onInputChange(input)}\r\n onChange={items => this.onChange(items)}\r\n onSearch={() => { }}\r\n options={this.state.accounts.data || []}\r\n placeholder={this.props.placeholder || \"Enter the \" + AccountType[this.props.accountType] + \" name\"}\r\n ref={this.accountAsyncTypeahead}\r\n selected={this.state.accounts.selected ? [this.state.accounts.selected] : []}>\r\n {!this.state.accounts.loading && !this.props.disabled &&\r\n }\r\n : }\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(AccountInput)\r\n","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport default function DriverCertificationReportGet(reportID: number, company: number, donorStatus: number): Observable {\r\n const requestBody: string = JSON.stringify({\r\n ClientDetails: {},\r\n ReportID: reportID,\r\n Company: [company],\r\n DonorStatus: donorStatus,\r\n BreakByCompanies: true\r\n })\r\n\r\n return ObservableFromFetch(\"WorkforceReport/DriverReport\", requestBody)\r\n}\r\n","import * as React from \"react\"\r\nimport { connect } from \"react-redux\"\r\nimport { toast } from \"react-toastify\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { Button, Col, Form, InputGroup, Modal, ModalBody, Spinner } from \"react-bootstrap\"\r\nimport { Subscription } from \"rxjs\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport AccountInput from \"../FormattedInputs/AccountInput\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport { AppState } from \"../../AppState\"\r\nimport FormatError from \"../../formatters/FormatError\"\r\nimport { Home } from \"../../config/Routes\"\r\nimport { isCompanyAdmin, isLocationAdmin, isPortalAdmin, isSiteAdmin } from \"../../authentication/isAdminRole\"\r\nimport getWorkforceReport, { WorkforceReportRecord, Report, WorkforceReportType, RegulatoryModesGet, YearListGet, ManagementSummaryReport, MISReport, ManagementSummaryReportGenerate, MISReportGenerate, SelectedNotTestedReportGenerate } from \"../../api/Reports/WorkforceReport\"\r\nimport { GetSelectedAssignedClinic } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport ToggleSwitch from \"../FormattedInputs/ToggleSwitch\"\r\nimport FromToDates from \"./FromToDates\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport { AccountTypeID, DonorIdRegexp, InvalidDonorId, MaxDonorIdLength } from \"../../config/Constants\"\r\nimport DriverCertificationReportGet from \"../../api/Reports/DriverCertificationReportGet\"\r\nimport printPdf from \"../../utils/printPdf\"\r\nimport { AccountType } from \"../../config/Constants\"\r\nimport DualListBox from \"../../components/Administration/DualListBox\"\r\nimport { GetAllAccountsByNameObservable } from \"../../api/Companies/GetAccountsByName\"\r\nimport LocationInput from \"../FormattedInputs/LocationInput\"\r\nimport { Pool } from \"../../api/Randoms/RandomsModel/PoolData\"\r\nimport TextFormControl from \"../OrderRequests/TextFormControl\"\r\nimport { FaAngleDown, FaSearch } from \"react-icons/fa\"\r\nimport { SearchDonorGetObservable } from \"../../api/OrderRequests/SearchDonorGet\"\r\nimport { Donor } from \"../../api/OrderRequests/OrderRequestsModel/Donor\"\r\nimport { GetRegulatoryModeDonor } from \"../OrderRequests/OrderModels\"\r\nimport { RegulatoryModeObservable } from \"../../api/OrderRequests/OrderRequestsConstraintGet\"\r\nimport CompanyInput from \"../FormattedInputs/CompanyInput\"\r\nimport { AsyncTypeahead } from \"react-bootstrap-typeahead\"\r\nimport { PoolsGetObservable } from \"../../api/Randoms/PoolGeneralInfoGet\"\r\nimport { FaFileCsv, FaFilePdf} from \"react-icons/fa\"\r\nimport exportCsv from \"../../utils/exportCsv\"\r\nimport FormatTimestampFileName from \"../../formatters/FormatTimestampFileName\"\r\n\r\ninterface WorkforceReportParametersProps {\r\n isLocationAdmin?: boolean\r\n isCompanyAdmin?: boolean\r\n isPortalAdmin?: boolean\r\n isSiteAdmin?: boolean\r\n company?: number\r\n}\r\n\r\ninterface WorkforceReportParametersState {\r\n report: WorkforceReportRecord\r\n from?: Date\r\n to?: Date\r\n regulatoryModes: string[]\r\n statuses: { name: string, value: number }[]\r\n years: number[]\r\n ranges: string[]\r\n selectedLocation?: AutoFilterCompany\r\n selectedCompany?: AutoFilterCompany\r\n selectedPool?: Pool\r\n pools: Pool[]\r\n donor?: Donor\r\n donorId?: string\r\n idType?: GetRegulatoryModeDonor\r\n selectedStatus: number\r\n selectedMode?: string\r\n selectedYear?: number\r\n selectedRange: string\r\n regulatoryModeLoading: boolean\r\n yearsLoading: boolean\r\n includeAlcohol: boolean\r\n rangeChecked: boolean\r\n yearChecked: boolean\r\n donorChecked: boolean\r\n donorLoading: boolean\r\n poolChecked: boolean\r\n allPoolsChecked: boolean\r\n poolLoading: boolean\r\n companyChecked: boolean\r\n allCompaniesChecked: boolean\r\n accountType: AccountType\r\n loading: boolean\r\n saving: boolean\r\n selectedCompanies: AutoFilterCompany[]\r\n companies: AutoFilterCompany[]\r\n companiesLoading: boolean\r\n}\r\n\r\n\r\nclass WorkforceReportParameters extends React.PureComponent {\r\n statuses = [{ name: \"All\", value: 1 }, { name: \"Active\", value: 2 }, { name: \"Inactive\", value: 3 }]\r\n ranges = [\"Collected\", \"Reviewed\", \"Ordered\", \"Scheduled\"]\r\n\r\n state: WorkforceReportParametersState = {\r\n report: getWorkforceReport(this.props.location.pathname as Report),\r\n statuses: this.statuses,\r\n years: [],\r\n pools: [],\r\n ranges: this.ranges,\r\n regulatoryModes: [],\r\n selectedStatus: this.statuses[0].value,\r\n selectedRange: this.ranges[0],\r\n regulatoryModeLoading: false,\r\n yearsLoading: false,\r\n includeAlcohol: false,\r\n rangeChecked: false,\r\n yearChecked: true,\r\n companyChecked: false,\r\n allCompaniesChecked: false,\r\n donorChecked: false,\r\n donorLoading: false,\r\n poolLoading: false,\r\n poolChecked: false,\r\n allPoolsChecked: false,\r\n accountType: AccountType.Company,\r\n loading: false,\r\n saving: false,\r\n selectedCompanies: [],\r\n companies: [],\r\n companiesLoading: false\r\n }\r\n\r\n typeaheadPool = React.createRef>()\r\n subscriptions = new Subscription()\r\n donorSubscription?: Subscription\r\n printSubscription?: Subscription\r\n\r\n handleCompanyChange = (selected: AutoFilterCompany[]) => this.setState({ selectedCompany: selected[0] })\r\n handleLocationChange = (locations: AutoFilterCompany[]) => this.setState({ selectedLocation: locations[0] })\r\n handlePoolChange = (selected: Pool) => this.setState({ selectedPool: selected })\r\n handleDonorStatusChange = (event: React.ChangeEvent) => this.setState({ selectedStatus: parseInt(event.target.value) })\r\n handleRegModeChange = (event: React.ChangeEvent) => this.setState({ selectedMode: event.target.value })\r\n handleYearChange = (event: React.ChangeEvent) => this.setState({ selectedYear: parseInt(event.target.value) })\r\n handleDateRangeChange = (event: React.ChangeEvent) => this.setState({ selectedRange: event.target.value })\r\n handleDonorChecked = (e: React.ChangeEvent) => this.switchRadioButton(false, e.target.checked, false, false, false)\r\n handlePoolChecked = (e: React.ChangeEvent) => this.switchRadioButton(false, false, e.target.checked, false, false)\r\n handleCompanyChecked = (e: React.ChangeEvent) => this.switchRadioButton(e.target.checked, false, false, false, false)\r\n handleAllPoolsChecked = (e: React.ChangeEvent) => this.switchRadioButton(false, false, false, false, e.target.checked)\r\n handleAllCompaniesChecked = (e: React.ChangeEvent) => this.switchRadioButton(false, false, false, e.target.checked, false)\r\n\r\n switchRadioButton = (companyChecked: boolean, donorChecked: boolean, poolChecked: boolean, allCompaniesChecked:boolean, allPoolsChecked:boolean) => {\r\n const currentCompany = !!this.props.isCompanyAdmin || !!this.props.isLocationAdmin ? this.state.selectedCompany : undefined\r\n const currentLocation = !!this.props.isLocationAdmin ? this.state.selectedLocation : undefined\r\n this.setState({ poolChecked: poolChecked, companyChecked: companyChecked, donorChecked: donorChecked, \r\n selectedPool: undefined, selectedCompany: currentCompany, selectedLocation: currentLocation, \r\n donorId: undefined, donor: undefined, allCompaniesChecked:allCompaniesChecked, allPoolsChecked:allPoolsChecked })\r\n }\r\n\r\n handleDonorIdChange = (value: string) => this.setState({ donorId: value })\r\n\r\n onDonorSearch = () => {\r\n this.donorSubscription && this.donorSubscription.unsubscribe()\r\n this.donorSubscription = SearchDonorGetObservable({\r\n CompanyID: this.props.company || 0,\r\n Identifier: this.state.donorId,\r\n IdentifierType: this.state.idType?.Rank,\r\n RegulatoryModeID: 0,\r\n isPortalAdmin: this.props.isPortalAdmin\r\n }).subscribe(\r\n (result: Donor[]) => {\r\n this.setState({ donorLoading: false, donor: result[0] })\r\n !result.length && toast.error(\"Donor was not found.\")\r\n },\r\n (error) => {\r\n this.setState({ donorLoading: false })\r\n toast.error(FormatError(error))\r\n })\r\n }\r\n\r\n handleAccountTypeChanged = (e: React.ChangeEvent) => {\r\n let at = e.target.value === AccountType.Company.toString() ? AccountType.Company : AccountType.MasterAccount\r\n this.setState({ accountType: at, selectedCompany: undefined })\r\n }\r\n\r\n handleYearChecked = (e: React.ChangeEvent) => {\r\n this.setState({ yearChecked: e.target.checked, rangeChecked: false })\r\n }\r\n\r\n handleRangeChecked = (e: React.ChangeEvent) => {\r\n this.setState({ yearChecked: false, rangeChecked: e.target.checked })\r\n }\r\n\r\n handleCancelClick = () => (this.props as RouteComponentProps).history?.push(Home)\r\n\r\n handleClearClick = () => {\r\n const report = getWorkforceReport(this.props.location.pathname as Report)\r\n this.setState({\r\n report: report,\r\n selectedCompany: (this.props.isPortalAdmin ? undefined : this.state.selectedCompany),\r\n accountType: AccountType.Company,\r\n selectedMode: this.state.regulatoryModes[0],\r\n selectedStatus: this.state.statuses[0].value,\r\n from: undefined,\r\n to: undefined,\r\n selectedYear: this.currentYear(),\r\n selectedRange: this.state.ranges[0],\r\n rangeChecked: false,\r\n donorChecked: false,\r\n poolChecked: false,\r\n allPoolsChecked:false,\r\n companyChecked: false,\r\n allCompaniesChecked:false,\r\n yearChecked: true,\r\n includeAlcohol: false\r\n })\r\n }\r\n\r\n handleGenerateReportClick = () => {\r\n const { report } = this.state\r\n switch (report.type) {\r\n case WorkforceReportType.CertificationRenewal:\r\n case WorkforceReportType.CertificationStatus:\r\n this.generateDriverCertification(report.type)\r\n break\r\n case WorkforceReportType.ManagementSummary:\r\n this.generateManagementSummary()\r\n break\r\n case WorkforceReportType.MIS:\r\n this.generateMIS()\r\n break\r\n case WorkforceReportType.SelectedNotTested:\r\n this.generateSNTPDF()\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n\r\n generateDriverCertification = (reportID: number) => {\r\n this.setState({ saving: true })\r\n\r\n const { selectedCompany, selectedStatus } = this.state\r\n\r\n DriverCertificationReportGet(reportID, selectedCompany?.AccountID || 0, selectedStatus).subscribe(\r\n (base64pdf: string) => {\r\n this.setState({ saving: false })\r\n printPdf(base64pdf)\r\n },\r\n error => {\r\n this.setState({ saving: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n }\r\n\r\n generateCertificationStatus = () => {\r\n this.setState({ saving: true })\r\n }\r\n\r\n generateManagementSummary = () => {\r\n this.setState({ saving: true })\r\n const { report, from, to, selectedRange, includeAlcohol, companies, selectedCompanies } = this.state\r\n\r\n let companyIds: number[] = selectedCompanies?.map(a => a.AccountID) || []\r\n if (this.isAccountType(AccountType.MasterAccount)) {\r\n companyIds = companies?.map(a => a.AccountID) || []\r\n } \r\n \r\n const params: ManagementSummaryReport = {\r\n AccountTypeID: AccountTypeID,\r\n BreakByCompanies: true,\r\n BreakByLocations: false,\r\n ClientDetails: {},\r\n Company: companyIds,\r\n DateFrom: FormatDate(from),\r\n DateTo: FormatDate(to),\r\n DateType: selectedRange,\r\n IncludeAlcoholTests: includeAlcohol,\r\n MasterAccount: null,\r\n ReportID: report.type\r\n }\r\n\r\n this.subscriptions.add(\r\n ManagementSummaryReportGenerate(params).subscribe(\r\n (base64pdf: string) => {\r\n this.setState({ saving: false })\r\n printPdf(base64pdf)\r\n },\r\n (error) => {\r\n this.setState({ saving: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n )\r\n }\r\n\r\n generateMIS = () => {\r\n this.setState({ saving: true })\r\n const { from, to, selectedYear, yearChecked, selectedMode, companies, selectedCompanies } = this.state\r\n let companyIds: number[] = selectedCompanies?.map(a => a.AccountID) || []\r\n if (this.isAccountType(AccountType.MasterAccount)) {\r\n companyIds = companies?.map(a => a.AccountID) || []\r\n } \r\n const params: MISReport = {\r\n AccountType: AccountType.Company,\r\n AccountID: companyIds[0] || 0,\r\n DtFromDate: FormatDate(from),\r\n DtToDate: FormatDate(to),\r\n RegMode: selectedMode || \"\",\r\n ReportMode: yearChecked ? 1 : 2,\r\n Year: yearChecked ? selectedYear?.toString() || \"\" : \"\",\r\n Company: companyIds\r\n }\r\n\r\n this.subscriptions.add(\r\n MISReportGenerate(params).subscribe(\r\n (base64pdf: string) => {\r\n this.setState({ saving: false })\r\n printPdf(base64pdf)\r\n },\r\n (error) => {\r\n this.setState({ saving: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n )\r\n }\r\n generateSNTPDF = () => {\r\n this.generateSNT(\"pdf\")\r\n }\r\n generateSNTCSV = () => {\r\n this.generateSNT(\"csv\")\r\n }\r\n\r\n generateSNT = (outputFormat: string) => {\r\n this.setState({ loading: true })\r\n this.printSubscription && this.printSubscription.unsubscribe()\r\n const {companyChecked, poolChecked, donorChecked, allCompaniesChecked, allPoolsChecked, selectedCompany, selectedLocation, selectedPool, from, to, donor} = this.state\r\n const accountID = selectedLocation?.AccountID || selectedCompany?.AccountID\r\n this.printSubscription = SelectedNotTestedReportGenerate({\r\n fromDate: FormatDate(from),\r\n toDate: FormatDate(to),\r\n accountID: companyChecked ? accountID : undefined,\r\n poolID: poolChecked ? selectedPool?.PoolID : undefined,\r\n personID: donorChecked ? donor?.PersonID : undefined,\r\n CompanyName: selectedCompany?.Name || \"\",\r\n LocationName: selectedLocation?.Name || \"\",\r\n PoolName: selectedPool?.PoolName || \"\",\r\n DonorName: (donorChecked ? `${donor?.FirstName} ${donor?.LastName}` : \"\"),\r\n OutputFormat:outputFormat\r\n }).subscribe(\r\n data => {\r\n this.setState({ loading: false })\r\n if(outputFormat === \"csv\"){\r\n exportCsv(data, FormatTimestampFileName(\"SelectedNotTestedReport\", \"csv\", new Date()))\r\n }\r\n else\r\n {\r\n printPdf(data)\r\n }\r\n },\r\n error => {\r\n this.setState({ loading: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n }\r\n\r\n validateDonorFormat = () => {\r\n const donorId = this.state.donorId || \"\"\r\n return !this.state.donorChecked || (donorId.length > 0 && donorId.length <= MaxDonorIdLength && DonorIdRegexp.test(donorId))\r\n }\r\n\r\n isAccountType = (type: AccountType) => this.state.accountType === type\r\n\r\n isReportParametersValid = () => {\r\n const { report, selectedCompany, selectedStatus, selectedRange, from, to, selectedMode, selectedYear, \r\n companyChecked, poolChecked, allCompaniesChecked, allPoolsChecked, donorChecked, yearChecked, rangeChecked, \r\n selectedPool, donor, companies, selectedCompanies } = this.state\r\n let companyIds: number[] = selectedCompanies?.map(a => a.AccountID) || []\r\n if (this.isAccountType(AccountType.MasterAccount)) {\r\n companyIds = companies?.map(a => a.AccountID) || []\r\n }\r\n let companiesSelected: boolean = companyIds.length > 0\r\n switch (report.type) {\r\n case WorkforceReportType.CertificationRenewal:\r\n case WorkforceReportType.CertificationStatus:\r\n return !!selectedCompany && !!selectedStatus\r\n case WorkforceReportType.ManagementSummary:\r\n return companiesSelected && !!selectedRange && !!from && !!to\r\n case WorkforceReportType.MIS:\r\n return (companiesSelected || this.isAccountType(AccountType.MasterAccount)) && !!selectedMode && ((!!from && !!to && rangeChecked) || (yearChecked && !!selectedYear))\r\n case WorkforceReportType.SelectedNotTested:\r\n return !!from && !!to && ((companyChecked && !!selectedCompany) || allCompaniesChecked || (poolChecked && !!selectedPool) || allPoolsChecked || (donorChecked && !!donor))\r\n default:\r\n return false\r\n }\r\n }\r\n\r\n showDonorStatusSection = () => {\r\n const { report } = this.state\r\n return [WorkforceReportType.CertificationRenewal, WorkforceReportType.CertificationStatus].some(item => report.type === item)\r\n }\r\n\r\n showDonorSelector = () => false\r\n\r\n showSummarySection = () => this.state.report.type === WorkforceReportType.ManagementSummary\r\n\r\n showDatesSection = () => this.state.rangeChecked\r\n\r\n showMISSection = () => this.state.report.type === WorkforceReportType.MIS\r\n\r\n showSNTSection = () => this.state.report.type === WorkforceReportType.SelectedNotTested\r\n\r\n showAcountInput = () => {\r\n if (this.isAccountType(AccountType.MasterAccount)) {\r\n return false\r\n }\r\n const reportType = this.state.report.type\r\n if ((reportType === WorkforceReportType.ManagementSummary) || (reportType === WorkforceReportType.MIS) || (reportType === WorkforceReportType.SelectedNotTested)) {\r\n return false\r\n }\r\n return true\r\n }\r\n\r\n showCompanySelection = () => {\r\n if (this.isAccountType(AccountType.MasterAccount)) {\r\n return false\r\n }\r\n const reportType = this.state.report.type\r\n if ((reportType === WorkforceReportType.ManagementSummary) || (reportType === WorkforceReportType.MIS)) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n currentYear = () => (new Date).getFullYear()\r\n\r\n needLoadCompanies = () => {\r\n const reportType = this.state.report.type\r\n const companies = this.state.companies\r\n if (((reportType === WorkforceReportType.ManagementSummary) || (reportType === WorkforceReportType.MIS)) && companies.length === 0) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n loadCompanies = () => {\r\n if (this.needLoadCompanies()) {\r\n this.subscriptions.add(\r\n GetAllAccountsByNameObservable(\"\", undefined, AccountType.Company).subscribe(\r\n (results) => {\r\n this.setState({ companies: results, companiesLoading: false })\r\n },\r\n (error) => {\r\n this.setState({ companiesLoading: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n )\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (this.needLoadCompanies()) {\r\n this.setState({ regulatoryModeLoading: true, yearsLoading: true, companiesLoading: true })\r\n }\r\n else {\r\n this.setState({ regulatoryModeLoading: true, yearsLoading: true, companiesLoading: false })\r\n }\r\n\r\n this.loadCompanies()\r\n\r\n this.subscriptions.add(\r\n YearListGet().subscribe(\r\n (results) => this.setState({ years: results, yearsLoading: false, selectedYear: this.currentYear() }),\r\n (error) => {\r\n this.setState({ yearsLoading: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n )\r\n\r\n this.subscriptions.add(\r\n RegulatoryModesGet().subscribe(\r\n (results) => this.setState({ regulatoryModes: results, selectedMode: results[0], regulatoryModeLoading: false }),\r\n (error) => {\r\n this.setState({ regulatoryModeLoading: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n )\r\n\r\n this.subscriptions.add(\r\n RegulatoryModeObservable(0).subscribe(\r\n results => this.setState({ idType: results.find(item => item.PrimaryIDType === \"EmployerID\"), regulatoryModeLoading: false }),\r\n error => {\r\n this.setState({ regulatoryModeLoading: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n )\r\n\r\n this.subscriptions.add(\r\n PoolsGetObservable().subscribe(\r\n (results: Pool[]) => this.setState({ pools: results, poolLoading: false }),\r\n (error) => {\r\n this.setState({ poolLoading: false })\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions && this.subscriptions.unsubscribe()\r\n this.donorSubscription && this.donorSubscription.unsubscribe()\r\n this.printSubscription && this.printSubscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: WorkforceReportParametersProps & RouteComponentProps) {\r\n if (this.props.location.pathname !== prevProps.location.pathname) {\r\n this.handleClearClick()\r\n }\r\n this.loadCompanies()\r\n }\r\n onCompanyChange = (selected: AutoFilterCompany[]) => {\r\n this.setState({ selectedCompanies: selected || [] })\r\n }\r\n render() {\r\n const { report, selectedStatus, includeAlcohol, selectedMode, selectedCompany, from, to, yearChecked, rangeChecked, \r\n donorChecked, donorLoading, donor, poolChecked, companyChecked, donorId, selectedYear, selectedRange, regulatoryModeLoading, \r\n yearsLoading, allCompaniesChecked, allPoolsChecked } = this.state\r\n const showCompanyLabel = ((!this.showMISSection() && !this.showSummarySection()) || !!this.props.isCompanyAdmin) && !this.showSNTSection()\r\n const showFilterByCompany = ((this.showMISSection() || this.showSummarySection()) && (this.props.isPortalAdmin || this.props.isSiteAdmin)) && !this.showSNTSection()\r\n const showFilterByMasterAccount = ((this.showMISSection() || this.showSummarySection()) && (this.props.isPortalAdmin || this.props.isSiteAdmin)) && !this.showSNTSection()\r\n //const generateReportText = this.showSNTSection() ? \"Export PDF\" : \"Continue\"\r\n const isSNT = this.showSNTSection()\r\n const showAllCompanies = isSNT && this.props.isPortalAdmin\r\n const showAllPools = isSNT && this.props.isPortalAdmin\r\n return (\r\n \r\n \r\n {report.title}\r\n \r\n \r\n
\r\n \r\n {showCompanyLabel && Company}\r\n {showFilterByCompany &&\r\n \r\n \r\n }\r\n {this.showAcountInput() && \r\n \r\n }\r\n \r\n \r\n {this.showCompanySelection() && \r\n \r\n }\r\n \r\n {showFilterByMasterAccount &&\r\n \r\n \r\n \r\n \r\n }\r\n\r\n {this.showSNTSection() && <>\r\n \r\n Date Collected\r\n \r\n {this.setState({from: date})}} onChangeTo={(date: Date) => {this.setState({to: date})}}/>\r\n \r\n \r\n Filter By:\r\n \r\n \r\n this.handleCompanyChecked(e)}\r\n />\r\n \r\n \r\n {companyChecked && }\r\n \r\n \r\n {companyChecked && !!selectedCompany && \r\n \r\n \r\n \r\n }\r\n {showAllCompanies && \r\n \r\n this.handleAllCompaniesChecked(e)}\r\n />\r\n \r\n \r\n  \r\n \r\n }\r\n\r\n {this.showDonorSelector() && \r\n \r\n this.handleDonorChecked(e)}\r\n />\r\n \r\n \r\n {donorChecked && \r\n this.handleDonorIdChange(value)}\r\n isValid={() => this.validateDonorFormat()}\r\n enterTapHandler={this.onDonorSearch} />\r\n {InvalidDonorId}\r\n \r\n \r\n \r\n }\r\n {!donorLoading && donor && Donor: {donor.FirstName} {donor.LastName} was found.}\r\n \r\n }\r\n \r\n \r\n this.handlePoolChecked(e)}\r\n />\r\n \r\n \r\n {poolChecked && props.selected.length > 0 || option.PoolName.toLowerCase().indexOf(props.text.toLowerCase()) !== -1 || option.Code.toLowerCase().indexOf(props.text.toLowerCase()) !== -1}\r\n isLoading={this.state.poolLoading}\r\n onChange={items => this.handlePoolChange(items[0])}\r\n onSearch={() => { }}\r\n options={this.state.pools}\r\n selected={this.state.selectedPool ? [this.state.selectedPool] : []}\r\n minLength={0}\r\n labelKey={(option) => `${option.PoolName} (${option.Code})${ option.IsConsortium ? \" - Consortium Pool\" : \"\"}`}\r\n disabled={!poolChecked}\r\n placeholder=\"Enter the Pool name or Code\"\r\n inputProps={{ autoComplete: \"chrome-off\" }}>\r\n {!this.state.poolLoading && poolChecked &&\r\n }\r\n }\r\n \r\n \r\n {showAllPools && \r\n \r\n this.handleAllPoolsChecked(e)}\r\n />\r\n \r\n \r\n  \r\n \r\n }\r\n }\r\n\r\n {this.showDonorStatusSection() && \r\n Donor Status\r\n \r\n \r\n {this.state.statuses?.map(s => )}\r\n \r\n \r\n }\r\n {this.showSummarySection() && \r\n Include Alcohol Tests\r\n this.setState({ includeAlcohol: checked })} />\r\n }\r\n {this.showMISSection() && \r\n Regulatory Mode\r\n \r\n \r\n {this.state.regulatoryModes?.map(m => )}\r\n \r\n \r\n }\r\n {(this.showMISSection()) && <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.years?.map(y => )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.showDatesSection() && { this.setState({ from: date }) }} onChangeTo={(date: Date) => { this.setState({ to: date }) }} />}\r\n \r\n \r\n }\r\n {(this.showSummarySection()) && <>\r\n \r\n By Date Range\r\n \r\n \r\n {this.state.ranges?.map(r => )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n { this.setState({ from: date }) }} onChangeTo={(date: Date) => { this.setState({ to: date }) }} />\r\n \r\n \r\n }\r\n
\r\n
\r\n \r\n \r\n \r\n {!isSNT && Continue}\r\n {isSNT && Export PDF }\r\n {isSNT && Export CSV }\r\n \r\n
\r\n
)\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): WorkforceReportParametersProps {\r\n return {\r\n isLocationAdmin: isLocationAdmin(state),\r\n isCompanyAdmin: isCompanyAdmin(state),\r\n isPortalAdmin: isPortalAdmin(state),\r\n isSiteAdmin: isSiteAdmin(state),\r\n company: GetSelectedAssignedClinic(state)?.AccountID\r\n }\r\n}\r\n\r\nconst ConnectedWorkforceReportParameters = connect(mapStateToProps, null)(WorkforceReportParameters)\r\nexport default ConnectedWorkforceReportParameters","import { Observable } from \"rxjs\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nconst mapParams = (params: SummaryReportParams) => {\r\n return {\r\n AccountTypeID: params.AccountTypeID,\r\n ColumnFilters: {},\r\n DateFrom: '',\r\n DateTo: '',\r\n Exact: false,\r\n Filters: {\r\n Company: params.Company,\r\n DateRange: params.DateRange,\r\n DateType: params.DateType,\r\n EndDate: params.DateTo,\r\n Location: [],\r\n Reason: [],\r\n Region: [],\r\n Regulated: \"Regulated & Non-Regulated\",\r\n Service: [],\r\n StartDate: params.DateFrom,\r\n Status: \"In Process\"\r\n },\r\n InProcessStatus: true,\r\n IsMarketPlace: true,\r\n IsReviewed: false,\r\n IncludeArchived: params.IncludeArchived,\r\n Mask: \"\",\r\n Pending: true,\r\n SearchBy: \"AllIDs\",\r\n Type: \"All\"\r\n }\r\n}\r\n\r\nexport interface SummaryReportParams {\r\n AccountTypeID: number,\r\n Company: string[],\r\n DateRange: string,\r\n DateType: string,\r\n DateFrom: string,\r\n DateTo: string,\r\n IncludeArchived: boolean\r\n}\r\n\r\nexport function SummaryReportGetCsv(params: SummaryReportParams): Observable {\r\n const requestBody: string = JSON.stringify(mapParams(params))\r\n return ObservableFromFetch(\"WorkforceTrack/ExportTrackRecord\", requestBody)\r\n}\r\n\r\nexport default function SummaryReportPdf(params: SummaryReportParams): Observable {\r\n const requestBody: string = JSON.stringify(mapParams(params))\r\n return ObservableFromFetch(\"WorkforceReport/SummaryReport\", requestBody)\r\n}\r\n","import { Dispatch, SetStateAction } from \"react\"\r\n\r\nimport { Form } from \"react-bootstrap\"\r\n\r\ninterface IncludeArchivedOrdersProps {\r\n value: boolean\r\n onChange: Dispatch>\r\n}\r\n\r\nfunction IncludeArchivedOrders(props: IncludeArchivedOrdersProps) {\r\n const { value, onChange } = props\r\n\r\n const onChangeIncludeArchived = (event: React.ChangeEvent) => {\r\n const { checked } = event.target\r\n onChange(checked)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n Include Archived Orders\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default IncludeArchivedOrders\r\n","import { useEffect, useState } from \"react\"\r\nimport { Form, Col, Modal, ModalBody, Button, Row } from \"react-bootstrap\"\r\nimport { AppPageWrapper } from \"../../NavMenu/AppPageWrapper\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport FromToDates from \"../FromToDates\"\r\nimport { useHistory } from \"react-router\"\r\nimport { Home } from \"../../../config/Routes\"\r\nimport DualListBox from \"../../Administration/DualListBox\"\r\nimport { AccountTypeID } from \"../../../config/Constants\"\r\nimport AutoFilterCompany from \"../../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport { useSelector } from \"react-redux\"\r\nimport { isCompanyAdmin, isPortalAdmin } from \"../../../authentication/isAdminRole\"\r\nimport { AppState } from \"../../../AppState\"\r\nimport { GetSelectedAssignedClinic } from \"../../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport { FaFileCsv, FaFilePdf, FaSync, FaSyncAlt } from \"react-icons/fa\"\r\nimport printPdf from \"../../../utils/printPdf\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\nimport SummaryReportGetPdf, { SummaryReportGetCsv, SummaryReportParams } from \"../../../api/Reports/SummaryReportGet\"\r\nimport FormatTimestampFileName from \"../../../formatters/FormatTimestampFileName\"\r\nimport exportCsv from \"../../../utils/exportCsv\"\r\nimport AutoFilterCompaniesGet from \"../../../api/Companies/AutoFilterCompaniesGet\"\r\nimport handleAPIError from \"../../../utils/handleAPIError\"\r\nimport { CompanyDataLoader } from \"../../../api/Reports/CompanyDataLoader\"\r\nimport IncludeArchivedOrders from \"./IncludeArchivedOrders\"\r\n\r\nenum DateRange {\r\n CURRENT_MONTH = \"Current Month\",\r\n PREVIOUS_MONTH = \"Previous Month\",\r\n LAST_30_DAYS = \"Last 30 Days\",\r\n FROM_BEGINNING_OF_YEAR = \"From beginning of year\",\r\n CUSTOM_FILTER = \"Custom\"\r\n}\r\n\r\nenum DateType {\r\n EVENTED = \"Event Date\",\r\n REVIEWED = \"Reviewed Date\",\r\n ORDERED = \"Order Date\",\r\n TESTED = \"Date Tested\",\r\n SCHEDULED = \"Schedule Date\"\r\n}\r\n\r\nconst DateTypeLabel = new Map([\r\n [DateType.EVENTED, 'Collection Date'],\r\n [DateType.REVIEWED, DateType.REVIEWED],\r\n [DateType.ORDERED, DateType.ORDERED],\r\n [DateType.TESTED, DateType.TESTED],\r\n [DateType.SCHEDULED, DateType.SCHEDULED]\r\n]);\r\n\r\nconst SummaryReport = () => {\r\n const portalAdmin = useSelector((state: AppState) => isPortalAdmin(state))\r\n const clinic = useSelector((state: AppState) => GetSelectedAssignedClinic(state))\r\n const history = useHistory();\r\n\r\n const [generatingCsv, setGeneratingCsv] = useState(false)\r\n const [generatingPdf, setGeneratingPdf] = useState(false)\r\n const [companies, setCompanies] = useState({ data: [], loading: false })\r\n const [selectedCompanies, setSelectedCompanies] = useState([])\r\n const [selectedDateType, setDateType] = useState(DateType.ORDERED)\r\n const [selectedDateRange, setDateRange] = useState(DateRange.CUSTOM_FILTER)\r\n const [from, setFrom] = useState()\r\n const [to, setTo] = useState()\r\n const [includeArchivedOrders, setIncludeArchivedOrders] = useState(true)\r\n\r\n useEffect(() => {\r\n setCompanies(prev => ({ data: prev.data, loading: true }))\r\n const sub = AutoFilterCompaniesGet(\"\").subscribe(\r\n res => setCompanies({ data: res, loading: false }),\r\n error => handleAPIError(error, () => setCompanies(prev => ({ ...prev, loading: false })))\r\n )\r\n return () => sub.unsubscribe()\r\n }, []);\r\n\r\n useEffect(() => {\r\n setSelectedCompanies(companies.data)\r\n }, [companies.data]);\r\n\r\n useEffect(() => {\r\n let from, to\r\n const toDay = new Date()\r\n const currentYear = toDay.getFullYear()\r\n const currentMonth = toDay.getMonth()\r\n switch (selectedDateRange) {\r\n case DateRange.CURRENT_MONTH:\r\n from = new Date(currentYear, currentMonth, 1)\r\n to = new Date(currentYear, currentMonth + 1, 0)\r\n break;\r\n case DateRange.PREVIOUS_MONTH:\r\n from = new Date(currentYear, currentMonth - 1, 1)\r\n to = new Date(currentYear, currentMonth, 0)\r\n break;\r\n case DateRange.FROM_BEGINNING_OF_YEAR:\r\n from = new Date(currentYear, 0, 1)\r\n to = new Date(currentYear, currentMonth, toDay.getDate())\r\n break;\r\n case DateRange.LAST_30_DAYS:\r\n from = new Date(toDay.setDate(toDay.getDate() - 30))\r\n to = new Date(currentYear, currentMonth, toDay.getDate())\r\n break;\r\n default:\r\n break;\r\n }\r\n setFrom(from)\r\n setTo(to)\r\n }, [selectedDateRange])\r\n\r\n const isParamsValid = () => (\r\n selectedCompanies.length > 0 &&\r\n !!selectedDateRange &&\r\n !!selectedDateType &&\r\n (selectedDateRange !== DateRange.CUSTOM_FILTER || (!!from && !!to))\r\n )\r\n\r\n const getReportParams = (): SummaryReportParams => ({\r\n AccountTypeID: portalAdmin ? 0 : AccountTypeID,\r\n Company: !portalAdmin || selectedCompanies.length != companies.data.length ? selectedCompanies?.map(a => a.Name) : [],\r\n DateRange: selectedDateRange,\r\n DateType: selectedDateType,\r\n DateFrom: FormatDate(from),\r\n DateTo: FormatDate(to),\r\n IncludeArchived: includeArchivedOrders\r\n })\r\n\r\n const handleCancelClick = () => history.push(Home)\r\n const handleClearClick = () => {\r\n setSelectedCompanies(companies.data)\r\n setDateRange(DateRange.CUSTOM_FILTER)\r\n setDateType(DateType.ORDERED)\r\n setFrom(undefined)\r\n setTo(undefined)\r\n setIncludeArchivedOrders(true)\r\n }\r\n\r\n const handleDateTypeChange = (event: React.ChangeEvent) => setDateType(event.target.value)\r\n const handleDateRangeChange = (event: React.ChangeEvent) => setDateRange(event.target.value)\r\n\r\n const handleGenerateCsvClick = () => {\r\n setGeneratingCsv(true)\r\n SummaryReportGetCsv(getReportParams()).subscribe(\r\n (results: string) => {\r\n setGeneratingCsv(false)\r\n exportCsv(results, FormatTimestampFileName(\"SummaryReport\", \"csv\", new Date()))\r\n },\r\n error => handleAPIError(error, () => setGeneratingCsv(false))\r\n )\r\n }\r\n\r\n const handleGeneratePdfClick = () => {\r\n setGeneratingPdf(true)\r\n SummaryReportGetPdf(getReportParams()).subscribe(\r\n (results: string) => {\r\n setGeneratingPdf(false)\r\n printPdf(results)\r\n },\r\n error => handleAPIError(error, () => setGeneratingPdf(false))\r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Summary Report\r\n \r\n \r\n
\r\n {portalAdmin && \r\n \r\n Companies\r\n \r\n \r\n }\r\n {!portalAdmin && \r\n Company\r\n \r\n }\r\n \r\n Date Type\r\n \r\n \r\n {Array.from(DateTypeLabel).map(([k, v]) => )}\r\n \r\n \r\n \r\n \r\n \r\n Date Range\r\n \r\n \r\n {Object.values(DateRange).map(r => )}\r\n \r\n \r\n \r\n \r\n {selectedDateRange === DateRange.CUSTOM_FILTER && \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Export PDF \r\n Export CSV \r\n \r\n
\r\n
)\r\n}\r\nexport default SummaryReport\r\n","import React, { Component } from 'react'\r\nimport { Button, Col, Container, Dropdown, Modal, Row } from \"react-bootstrap\"\r\nimport { connect } from 'react-redux'\r\nimport { RouteComponentProps } from \"react-router-dom\"\r\nimport { AppState, WorkforceClinicPortal } from \"../../AppState\"\r\n\r\nexport interface PortalSelectionProps { }\r\n\r\nexport interface PortalSelectionAppStateProps {\r\n portals?: WorkforceClinicPortal[];\r\n}\r\n\r\nexport class PortalSelectionModal extends Component{\r\n\r\n selectPortal = (portal: WorkforceClinicPortal) => {\r\n const link = portal.Link || portal.AssignedClientDetailsOfClinic[0]?.Link\r\n link && window.location.replace(link.split('#')[0])\r\n }\r\n\r\n render() {\r\n const portals = this.props.portals?.sort((a, b) => (a.ImplementationName || \"\").localeCompare(b.ImplementationName || \"\")) || []\r\n return \r\n \r\n Invalid Login\r\n \r\n \r\n \r\n \r\n \r\n
The username and password you entered do not belong to this portal.
\r\n

Please try to login using the below portal.

\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n Select Portal\r\n \r\n {portals.map((portal, i) => this.selectPortal(portal)}\r\n key={`${portal.ImplementationID}_${i}`}\r\n eventKey={`${portal.ImplementationID}_${i}`}\r\n variant=\"menu-item\">\r\n {portal.ImplementationName}\r\n )}\r\n \r\n \r\n \r\n
\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): PortalSelectionAppStateProps {\r\n return {\r\n portals: state.Workforce1Companies.visibleCompanies\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, null)(PortalSelectionModal)\r\n","import * as React from \"react\"\r\nimport { RouteComponentProps } from \"react-router\"\r\nimport CompanyInformation from \"../Administration/CompanyInformation\";\r\n\r\nexport default class AddNewCompany extends React.PureComponent {\r\n render() {\r\n return \r\n }\r\n}","import * as React from \"react\"\r\nimport { WorkforceOneUserLogOut } from \"../../actions/WorkforceOneLoginActions\"\r\nimport { AppState } from \"../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport { Action, Dispatch } from \"redux\";\r\nimport ConfirmationModal from \"../ConfirmationModal\"\r\nimport { GetSelectedAssignedClinic } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\n\r\ninterface RequireCompleteSetupModalProps {\r\n link?: string\r\n}\r\n\r\ninterface RequireCompleteSetupModalDispatchProps {\r\n logout: () => void\r\n}\r\n\r\nexport class RequireCompleteSetupModal extends React.PureComponent {\r\n openInvitation = () =>{\r\n if (this.props.link) {\r\n this.props.logout()\r\n window.location.replace(this.props.link)\r\n }\r\n }\r\n\r\n render() {\r\n return \r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): RequireCompleteSetupModalProps {\r\n return {\r\n link: GetSelectedAssignedClinic(state)?.Link || state.Workforce1State.link || \"\"\r\n }\r\n}\r\n\r\nfunction mapDispatchProps(dispatch: Dispatch): RequireCompleteSetupModalDispatchProps {\r\n return {\r\n logout: () => (dispatch(WorkforceOneUserLogOut(true)))\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps, mapDispatchProps)(RequireCompleteSetupModal)\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\ninterface LogData {\r\n Url?: string,\r\n Message?: string\r\n Exception?: string\r\n Stack?: string | string[]\r\n ComponentStack?: string\r\n WindowWidth: number\r\n WindowHeight: number\r\n}\r\n\r\nexport default function LogErrorToServer(error: Error, info?: React.ErrorInfo) {\r\n PostLogData(error, info)\r\n}\r\n\r\nfunction PostLogData(error: Error, info?: React.ErrorInfo) {\r\n const data: LogData = {\r\n Url: location.href,\r\n Exception: error.message,\r\n Stack: error.stack,\r\n ComponentStack: info?.componentStack,\r\n WindowWidth: window.screen.availWidth,\r\n WindowHeight: window.screen.availHeight\r\n }\r\n const requestBody = JSON.stringify(data)\r\n return ObservableFromFetch(\"Log/WriteUILog\", requestBody).subscribe(() => { }, error => { } )\r\n}\r\n\r\nwindow.onerror = function (event: Event | string, source?: string, lineno?: number, colno?: number, error?: Error) {\r\n // if (__DEVELOPMENT__) { // default error handling of the browser\r\n // return false;\r\n // }\r\n if (!error) {\r\n return\r\n }\r\n PostLogData(error)\r\n\r\n return true;\r\n};\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport GridResponse from \"../GridResponse\"\r\nimport { Filter, Sort } from \"../GridRequest\"\r\nimport SendingFacilityRecord from \"./Model/SendingFacilityRecord\"\r\nimport Timezone from \"./Model/Timezone\"\r\n\r\nconst Columns = [\"SendingFacility\", \"WS_Url\", \"Namespace\", \"SendingFacility_Code\"] as const\r\ntype Column = typeof Columns[number]\r\n\r\nexport type ColumnFilters = Record\r\nexport type SendingFacilityGridResponse = GridResponse & ColumnFilters\r\n\r\nfunction columnFilters(filters: Filter[]): ColumnFilters {\r\n return {\r\n SendingFacility: filters.find(filter => filter.column === \"SendingFacility\")?.values || [],\r\n WS_Url: filters.find(filter => filter.column === \"WS_Url\")?.values || [],\r\n Namespace: filters.find(filter => filter.column === \"Namespace\")?.values || [],\r\n SendingFacility_Code: filters.find(filter => filter.column === \"SendingFacility_Code\")?.values || []\r\n }\r\n}\r\n\r\nexport default function SendingFacilityObservable(pageNumber: number, pageSize: number, filters: Filter[], sort?: Sort) {\r\n var params: object = {\r\n Filters: columnFilters(filters),\r\n PageNumber: pageNumber,\r\n PageSize: pageSize || 20,\r\n SortGrid: { SortColumn: sort?.column || \"\", SortOrder: sort?.order.toUpperCase() === \"DESC\" ? \"DSC\" : sort?.order.toUpperCase() }\r\n }\r\n\r\n const requestBody: string = JSON.stringify(params)\r\n return ObservableFromFetch(\"SendingFacility/GetSendingFacilities\", requestBody)\r\n}\r\n\r\nexport function TimezoneObservable() {\r\n return ObservableFromFetch(\"CommonData/GetTimezones\")\r\n}\r\n\r\nexport function SaveSendingFacilityObservable(model: SendingFacilityRecord) {\r\n const requestBody: string = JSON.stringify(model)\r\n\r\n return ObservableFromFetch(\"SendingFacility/SetSendingFacility\", requestBody)\r\n}","export enum DateType {\r\n COLLECTED = \"DATE_COLLECTED\",\r\n MRO_REPORTED = \"MRO_REPORTED_DATE\",\r\n LAB_REPORTED = \"LAB_REPORTED_DATE\",\r\n}\r\n\r\nexport const DateTypeLabel = new Map([\r\n [DateType.COLLECTED, \"Collected Date\"],\r\n [DateType.MRO_REPORTED, \"MRO Reported Date\"],\r\n [DateType.LAB_REPORTED, \"Lab Reported Date\"],\r\n])\r\n","import React from \"react\"\r\nimport { Modal, Form, Col, Button } from \"react-bootstrap\"\r\nimport { FaAngleDown, FaPencilAlt, FaTimes } from \"react-icons/fa\"\r\nimport { toast } from \"react-toastify\"\r\nimport { concat, of, Subject, Subscription } from \"rxjs\"\r\nimport { catchError, debounceTime, filter, map, switchMap } from \"rxjs/operators\"\r\nimport SendingFacilityRecord from \"../../api/Administration/Model/SendingFacilityRecord\"\r\nimport Timezone from \"../../api/Administration/Model/Timezone\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport AutoFilterPortalsGetObservable from \"../../api/Portals/AutoFilterPortalsGet\"\r\nimport PortalData from \"../../api/Portals/PortalModel/PortalData\"\r\nimport PortalsGetObservable, { PortalGetObservable } from \"../../api/Portals/PortalsGet\"\r\nimport ActionButton from \"../ActionButton\"\r\nimport { AsyncTypeahead, Typeahead } from \"react-bootstrap-typeahead\"\r\nimport ToggleSwitch from \"../FormattedInputs/ToggleSwitch\"\r\nimport { SaveSendingFacilityObservable } from \"../../api/Administration/SendingFacilities\"\r\n\r\ninterface SendingFacilityModalProps {\r\n addNew?: boolean\r\n timezones: Timezone[]\r\n details?: SendingFacilityRecord\r\n onHide: () => void\r\n onSave: () => void\r\n}\r\n\r\ninterface SendingFacilityModalState {\r\n isSendingFacilityValid: boolean,\r\n loading: boolean\r\n saving: boolean\r\n editing: boolean\r\n currentPortal?: PortalData\r\n initialPortalData?: PortalData\r\n retrievedPortalPredictions?: string[]\r\n retrievedPortals?: PortalData[]\r\n SendingFacility: string\r\n WS_Url?: string\r\n UserName?: string\r\n Password?: string\r\n SOAPVersion?: string\r\n Namespace?: string\r\n SendingFacility_Code?: string\r\n TimeZoneAN?: number\r\n WSUserName?: string\r\n WSPassword?: string\r\n MaskPos?: boolean\r\n SendImages?: boolean\r\n ImplementationID?: number\r\n CRMUpdates?: boolean\r\n InstallationId?: string\r\n}\r\n\r\nexport default class SendingFacilityModal extends React.PureComponent {\r\n state: SendingFacilityModalState = {\r\n loading: false,\r\n saving: false,\r\n editing: false,\r\n SendingFacility: \"\",\r\n isSendingFacilityValid: true\r\n }\r\n\r\n subscription?: Subscription\r\n loadSubscription?: Subscription\r\n saveSubscription?: Subscription\r\n loadPortalNameSubscription?: Subscription\r\n implementationName$ = new Subject()\r\n searchImplementation$ = new Subject()\r\n timezoneTypeahead = React.createRef>()\r\n portalTypeahead = React.createRef>()\r\n\r\n componentDidMount() {\r\n this.setState({...this.defaultStateFromProps()})\r\n\r\n this.subscription = this.searchImplementation$.pipe(\r\n debounceTime(500),\r\n filter(name => name.length >= 3),\r\n map(name => name.trim()),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n AutoFilterPortalsGetObservable(name).pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: string[] }) => this.setState({ loading: o.loading, retrievedPortalPredictions: o.result }),\r\n (error) => this.handleAPIError(error, { loading: false })\r\n )\r\n\r\n this.loadSubscription = this.implementationName$.pipe(\r\n map(name => name.trim()),\r\n switchMap(name => concat(\r\n of({ loading: true }),\r\n PortalsGetObservable(name).pipe(\r\n map(result => ({ loading: false, result: result })),\r\n catchError(() => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (o: { loading: boolean, result?: PortalData[] }) => this.setState({\r\n loading: o.loading,\r\n retrievedPortals: o.result && o.result.length > 1 ? o.result : undefined,\r\n ImplementationID: o.result && o.result.length === 1 ? o.result[0].ImplementationID : undefined,\r\n currentPortal: o.result && o.result.length === 1 ? o.result[0] : undefined\r\n }),\r\n (error) => this.handleAPIError(error, { loading: false })\r\n )\r\n\r\n if (this.props.details?.ImplementationID) {\r\n this.loadPortalNameSubscription = PortalGetObservable(this.props.details?.ImplementationID).subscribe(\r\n data => this.setState({initialPortalData: data, currentPortal: data}),\r\n error => this.handleAPIError(error, {})\r\n )\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n this.loadSubscription && this.loadSubscription.unsubscribe()\r\n this.saveSubscription && this.saveSubscription.unsubscribe()\r\n this.loadPortalNameSubscription && this.loadPortalNameSubscription.unsubscribe()\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n onCancel = () => this.props.onHide()\r\n\r\n onSubmit = () => {\r\n this.setState({saving: true})\r\n const data: SendingFacilityRecord = {\r\n SendingFacilityAN: this.props.details?.SendingFacilityAN,\r\n SendingFacility: this.state.SendingFacility,\r\n WS_Url: this.state.WS_Url,\r\n UserName: this.state.UserName,\r\n Password: this.state.Password,\r\n SOAPVersion: this.state.SOAPVersion,\r\n Namespace: this.state.Namespace,\r\n SendingFacility_Code: this.state.SendingFacility_Code,\r\n TimeZoneAN: this.state.TimeZoneAN,\r\n WSUserName: this.state.WSUserName,\r\n WSPassword: this.state.WSPassword,\r\n MaskPos: this.state.MaskPos,\r\n SendImages: this.state.SendImages,\r\n ImplementationID: this.state.ImplementationID,\r\n CRMUpdates: this.state.CRMUpdates,\r\n InstallationId: this.state.InstallationId\r\n }\r\n\r\n this.saveSubscription = SaveSendingFacilityObservable(data).subscribe(\r\n data => {\r\n this.setState({ saving: false })\r\n toast.success(data)\r\n this.props.onSave()\r\n },\r\n error => this.handleAPIError(error, { saving: false })\r\n )\r\n }\r\n\r\n timezoneValue = () => this.props.timezones.find(zone => zone.TimeZoneID === this.state.TimeZoneAN) || undefined\r\n valueText = (text: string | number | undefined) => {text}\r\n rowClassName = (required: boolean = false) => required ? \"form-group required\" : \"form-group\"\r\n\r\n isValid = () => this.state.isSendingFacilityValid && this.state.SendingFacility.length > 0\r\n\r\n handleToggleEditMode = () => {\r\n this.setState({editing: !this.state.editing, ...this.defaultStateFromProps()})\r\n }\r\n\r\n defaultStateFromProps = () => {\r\n const data = this.props.details\r\n return {\r\n SendingFacility: data?.SendingFacility || \"\",\r\n WS_Url: data?.WS_Url,\r\n UserName: data?.UserName,\r\n Password: undefined,\r\n SOAPVersion: data?.SOAPVersion,\r\n Namespace: data?.Namespace,\r\n SendingFacility_Code: data?.SendingFacility_Code,\r\n TimeZoneAN: data?.TimeZoneAN,\r\n WSUserName: data?.WSUserName,\r\n WSPassword: undefined,\r\n MaskPos: data?.MaskPos,\r\n SendImages: data?.SendImages,\r\n ImplementationID: data?.ImplementationID,\r\n CRMUpdates: data?.CRMUpdates,\r\n InstallationId: data?.InstallationId,\r\n currentPortal: this.state.initialPortalData\r\n }\r\n }\r\n\r\n handleSendingFacilityChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value\r\n this.setState({ SendingFacility: value, isSendingFacilityValid: value.length >= 1 })\r\n }\r\n\r\n handleImplementationChange = (selected: string[]) => {\r\n if (selected[0]) {\r\n this.implementationName$.next(selected[0])\r\n }\r\n else {\r\n this.setState({currentPortal: undefined, ImplementationID: undefined})\r\n }\r\n }\r\n\r\n render() {\r\n const { loading, saving, currentPortal, SendingFacility, MaskPos, WS_Url, UserName, SOAPVersion,\r\n Namespace, SendingFacility_Code, WSUserName, SendImages, CRMUpdates, InstallationId, Password, WSPassword } = this.state\r\n const editing = this.state.editing || !!this.props.addNew\r\n const timezone = this.timezoneValue()\r\n\r\n return (\r\n \r\n \r\n {!!this.props.addNew && Add New Sending Facility}\r\n {!editing && Sending Facility}\r\n {editing && !this.props.addNew && Edit Sending Facility}\r\n \r\n \r\n
\r\n {!this.props.addNew && \r\n
MODIFY SENDING FACILITY
\r\n \r\n
\r\n \r\n
\r\n \r\n
}\r\n \r\n Sending Facility\r\n {!editing && this.valueText(SendingFacility)}\r\n {editing &&\r\n \r\n \r\n }\r\n \r\n \r\n Namespace\r\n {!editing && this.valueText(Namespace)}\r\n {editing &&\r\n \r\n this.setState({ Namespace: e.target.value })} />\r\n }\r\n \r\n \r\n Code\r\n {!editing && this.valueText(SendingFacility_Code)}\r\n {editing &&\r\n \r\n this.setState({ SendingFacility_Code: e.target.value })} />\r\n }\r\n \r\n \r\n WS Url\r\n {!editing && this.valueText(WS_Url)}\r\n {editing &&\r\n \r\n this.setState({ WS_Url: e.target.value })} />\r\n }\r\n \r\n \r\n UserName\r\n {!editing && this.valueText(UserName)}\r\n {editing &&\r\n \r\n this.setState({ UserName: e.target.value })} />\r\n }\r\n \r\n {editing && \r\n Password\r\n \r\n this.setState({ Password: e.target.value })} />\r\n \r\n }\r\n \r\n WS UserName\r\n {!editing && this.valueText(WSUserName)}\r\n {editing &&\r\n \r\n this.setState({ WSUserName: e.target.value })} />\r\n }\r\n \r\n {editing && \r\n WS Password\r\n \r\n this.setState({ WSPassword: e.target.value })} />\r\n \r\n }\r\n \r\n Timezone\r\n {!editing && this.valueText(timezone?.Description)}\r\n {editing &&\r\n \r\n true}\r\n onChange={(items: Timezone[]) => this.setState({TimeZoneAN: items[0]?.TimeZoneID || undefined})}\r\n options={this.props.timezones}\r\n selected={timezone ? [timezone] : []}\r\n emptyLabel=\"No Timezone\"\r\n placeholder=\"Select\">\r\n \r\n \r\n }\r\n \r\n \r\n Implementation\r\n {!editing && this.valueText(currentPortal?.CompanyName)}\r\n {editing &&\r\n \r\n true}\r\n isLoading={loading}\r\n onSearch={() => { }}\r\n onInputChange={input => this.searchImplementation$.next(input)}\r\n onChange={selected => this.handleImplementationChange(selected)}\r\n options={this.state.retrievedPortalPredictions || []}\r\n selected={currentPortal ? [currentPortal.CompanyName || \"\"] : []}\r\n minLength={0}\r\n emptyLabel=\"No Portals Found\"\r\n placeholder=\"\"\r\n inputProps={{ autoComplete: \"chrome-off\" }}>\r\n {!loading &&\r\n }\r\n \r\n }\r\n \r\n \r\n Mask Pos\r\n \r\n this.setState({MaskPos: !this.state.MaskPos})} />\r\n \r\n \r\n \r\n Send Images\r\n \r\n this.setState({SendImages: !this.state.SendImages})} />\r\n \r\n \r\n \r\n CRM Updates\r\n \r\n this.setState({CRMUpdates: !this.state.CRMUpdates})} />\r\n \r\n \r\n \r\n SOAP Version\r\n {!editing && this.valueText(SOAPVersion)}\r\n {editing &&\r\n \r\n this.setState({ SOAPVersion: e.target.value })} />\r\n }\r\n \r\n \r\n Installation Id\r\n {!editing && this.valueText(InstallationId)}\r\n {editing &&\r\n \r\n this.setState({ InstallationId: e.target.value })} />\r\n }\r\n \r\n
\r\n
\r\n \r\n \r\n {editing && {!!this.props.addNew ? \"Save\" : \"Update\"}}\r\n \r\n
\r\n )\r\n }\r\n}\r\n","import React from \"react\"\r\nimport { Subscription } from \"rxjs\"\r\nimport { Sort, Filter } from \"../../api/GridRequest\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { toast } from \"react-toastify\"\r\nimport { Container, Row, Col, Table, Button, Spinner } from \"react-bootstrap\"\r\nimport { FaSync } from \"react-icons/fa\"\r\nimport ColumnHeaderFilter from \"../ColumnHeaderFilter\"\r\nimport TablePagination from \"../TablePagination\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport SendingFacilityRecord from \"../../api/Administration/Model/SendingFacilityRecord\"\r\nimport SendingFacilityObservable, { ColumnFilters, SendingFacilityGridResponse, TimezoneObservable } from \"../../api/Administration/SendingFacilities\"\r\nimport { CustomizableFilterColumn } from \"../ColumnsCustomizeModal/CustomizableColumn\"\r\nimport SendingFacilityModal from \"./SendingFacilityModal\"\r\nimport Timezone from \"../../api/Administration/Model/Timezone\"\r\n\r\ntype Column = CustomizableFilterColumn\r\n\r\ninterface SendingFacilityProps {\r\n\r\n}\r\n\r\ninterface SendingFacilityState {\r\n loading: boolean\r\n data?: SendingFacilityGridResponse\r\n timezones: Timezone[]\r\n columns: Column[]\r\n sort?: Sort\r\n filters: Filter[]\r\n pageNumber: number\r\n sendingFacilityDetails: boolean\r\n details?: SendingFacilityRecord\r\n addNew: boolean\r\n}\r\n\r\nconst defaultColumns: Column[] = [\r\n { name: \"SendingFacility\", filter: \"SendingFacility\", label: \"Sending Facility\" },\r\n { name: \"Namespace\", filter: \"Namespace\", label: \"Namespace\" },\r\n { name: \"SendingFacility_Code\", filter: \"SendingFacility_Code\", label: \"SendingFacility_Code\" },\r\n { name: \"WS_Url\", filter: \"WS_Url\", label: \"WS_Url\" },\r\n]\r\n\r\nconst PageSize = 20\r\n\r\nexport default class SendingFacilityPage extends React.PureComponent {\r\n commonSubscription?: Subscription\r\n subscription?: Subscription\r\n\r\n state: SendingFacilityState = {\r\n loading: false,\r\n data: undefined,\r\n timezones: [],\r\n details: undefined,\r\n columns: defaultColumns,\r\n sort: undefined,\r\n filters: [],\r\n pageNumber: 1,\r\n sendingFacilityDetails: false,\r\n addNew: false\r\n }\r\n\r\n componentDidMount() {\r\n this.commonSubscription = TimezoneObservable().subscribe(\r\n data => this.setState({ timezones: data }),\r\n error => this.handleAPIError(error, { })\r\n )\r\n this.refreshGrid()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscription && this.subscription.unsubscribe()\r\n this.commonSubscription && this.commonSubscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: SendingFacilityProps, prevState: SendingFacilityState) {\r\n if (this.state.sort !== prevState.sort ||\r\n this.state.filters !== prevState.filters ||\r\n this.state.pageNumber !== prevState.pageNumber) {\r\n this.refreshGrid()\r\n }\r\n }\r\n\r\n refreshGrid() {\r\n this.setState({ loading: true })\r\n this.subscription && this.subscription.unsubscribe()\r\n this.subscription = SendingFacilityObservable(this.state.pageNumber, PageSize, this.state.filters, this.state.sort).subscribe(\r\n (data: SendingFacilityGridResponse) => this.setState({ data: data, loading: false }),\r\n error => this.handleAPIError(error, { loading: false })\r\n )\r\n }\r\n\r\n pageChanged = (pageNumber: number) => this.setState({ pageNumber: pageNumber })\r\n sortGrid = (column: string, order?: string) => this.setState({ sort: { column: column, order: order || \"\" }, pageNumber: 1 })\r\n\r\n filterGrid(column: string, items: string[]) {\r\n this.setState(prevState => {\r\n const filters = [...prevState.filters]\r\n const filter = { column: column, values: items }\r\n let index = filters.findIndex(item => item.column === filter.column)\r\n if (index >= 0) {\r\n filters[index] = filter\r\n } else {\r\n filters.push(filter)\r\n }\r\n return { filters: filters, pageNumber: 1 }\r\n })\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n onSave = () => {\r\n this.setState({addNew: false, sendingFacilityDetails: false, details: undefined, filters: []})\r\n }\r\n\r\n showSendingFacilityDetailsModal = (data: SendingFacilityRecord) => this.setState({ sendingFacilityDetails: true, details: data })\r\n\r\n renderCell(row: SendingFacilityRecord, colName: keyof SendingFacilityRecord, key: number) {\r\n switch (colName) {\r\n case \"SendingFacility\":\r\n return \r\n default:\r\n return {row[colName]}\r\n }\r\n }\r\n\r\n render() {\r\n const headerColumns = this.state.columns.map((col: Column, i) => {\r\n return (\r\n \r\n {this.state.data && col.filter && col.filter in this.state.data && item.column === col.filter) >= 0}\r\n sort={this.state.sort && this.state.sort.column === col.name ? this.state.sort.order === \"asc\" ? \"asc\" : \"desc\" : undefined}\r\n items={this.state.data[col.filter as keyof ColumnFilters] || []}\r\n onSort={(order?: string) => this.sortGrid(col.name, order)}\r\n onFilter={(items: string[]) => col.filter && this.filterGrid(col.filter, items)}\r\n offsetTop={19}\r\n />}\r\n {(!this.state.data || !col.filter) && (col.label || col.name)}\r\n \r\n )\r\n })\r\n\r\n const dataRows = (data: SendingFacilityGridResponse) => data.Records.map((row: SendingFacilityRecord, i: number) => {dataColumns(row)})\r\n const dataColumns = (row: SendingFacilityRecord) => this.state.columns.map((col, i) => this.renderCell(row, col.name as keyof SendingFacilityRecord, i))\r\n\r\n const { loading, data, sendingFacilityDetails, pageNumber, addNew, timezones } = this.state\r\n\r\n const emptyRow = NO DATA FOUND\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {addNew && this.setState({ addNew: false })} timezones={timezones} onSave={() => this.onSave()}/>}\r\n {sendingFacilityDetails && this.setState({ sendingFacilityDetails: false, details: undefined })} timezones={timezones} details={this.state.details} onSave={() => this.onSave()} />}\r\n \r\n \r\n \r\n \r\n {loading ? :\r\n \r\n \r\n {headerColumns}\r\n \r\n \r\n { data?.Records && data.Records.length > 0 ? dataRows(data) : emptyRow }\r\n \r\n
}\r\n {data && !loading &&\r\n Total records: {data.Total}}\r\n {data && !loading &&\r\n }\r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import * as React from \"react\"\r\nimport RandomPools from \"./RandomPools\"\r\n\r\nexport default class ConsortiumPools extends React.PureComponent {\r\n render() {\r\n return \r\n }\r\n}","import * as React from \"react\"\r\nimport RandomPersonnelGrid from \"./RandomPersonnelGrid\"\r\n\r\nexport default class ConsortiumPersonnel extends React.PureComponent {\r\n render() {\r\n return \r\n }\r\n}","import * as React from \"react\"\r\nimport { toast } from \"react-toastify\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { Button, Col, Container, Form, Modal, Spinner, Table } from \"react-bootstrap\"\r\nimport TablePagination from \"../TablePagination\"\r\nimport { FaSync } from \"react-icons/fa\"\r\nimport downloadCsv from \"../../assets/images/download-csv.png\"\r\nimport { Subscription } from \"rxjs\"\r\nimport FromToDates from \"./FromToDates\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport { PositiveReportExport, PositiveReportLoad, PositiveReportRow } from \"../../api/Reports/WorkforceReport\"\r\nimport { GenerateMROReport } from \"../../api/OrderResults/GenerateCCFImage\"\r\nimport FormatTimestampFileName from \"../../formatters/FormatTimestampFileName\"\r\nimport FileSaver from \"file-saver\"\r\nimport printPdf from \"../../utils/printPdf\"\r\nimport ImageMRO from \"../../assets/images/MRO.png\"\r\nimport GridResponse from \"../../api/GridResponse\"\r\nimport AutoFilterCompany from \"../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport { GetAllAccountsByNameObservable } from \"../../api/Companies/GetAccountsByName\"\r\nimport { AccountType } from \"../../config/Constants\"\r\nimport DualListBox from \"../Administration/DualListBox\"\r\nimport ActionButton from \"../ActionButton\"\r\n\r\ninterface PositiveReportProps {\r\n}\r\n\r\ninterface PositiveReportState {\r\n isLoading: boolean\r\n pageNumber: number\r\n ranges: string[]\r\n selectedRange: string\r\n selectedCompanies: AutoFilterCompany[]\r\n companies: AutoFilterCompany[]\r\n companiesLoading: boolean\r\n loadingCSV: boolean\r\n from?: Date\r\n to?: Date\r\n data?: GridResponse\r\n}\r\n\r\nconst PageSize = 20\r\n\r\nexport default class PositiveReport extends React.PureComponent {\r\n ranges = [\"Collected\", \"Reported\"]\r\n\r\n state: PositiveReportState = {\r\n isLoading: false,\r\n loadingCSV: false,\r\n pageNumber: 1,\r\n ranges: this.ranges,\r\n selectedRange: this.ranges[0],\r\n selectedCompanies: [],\r\n companies: [],\r\n companiesLoading: false\r\n }\r\n\r\n subscriptions = new Subscription()\r\n exportSubscription?: Subscription\r\n loadImageSubscription?: Subscription\r\n loadReportSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.setState({ companiesLoading: true })\r\n this.subscriptions.add(\r\n GetAllAccountsByNameObservable(\"\", undefined, AccountType.Company).subscribe(\r\n (results) => this.setState({ companies: results, companiesLoading: false }),\r\n (error) => this.handleAPIError(error, { companiesLoading: false})\r\n )\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.subscriptions && this.subscriptions.unsubscribe()\r\n this.exportSubscription && this.exportSubscription.unsubscribe()\r\n this.loadImageSubscription && this.loadImageSubscription.unsubscribe()\r\n this.loadReportSubscription && this.loadReportSubscription.unsubscribe()\r\n }\r\n\r\n componentDidUpdate(prevProps: PositiveReportProps, prevState: PositiveReportState) {\r\n if (this.state.pageNumber !== prevState.pageNumber) {\r\n this.refreshGrid(this.state.pageNumber)\r\n }\r\n }\r\n\r\n refreshGrid(pageNumber: number) {\r\n this.setState({ isLoading: true })\r\n this.loadReportSubscription && this.loadReportSubscription.unsubscribe()\r\n const companyIds: number[] = this.state.selectedCompanies?.map(a => a.AccountID) || []\r\n\r\n this.loadReportSubscription = PositiveReportLoad({\r\n DateFrom: FormatDate(this.state.from),\r\n DateTo: FormatDate(this.state.to),\r\n DateType: this.state.selectedRange,\r\n PageNumber: pageNumber,\r\n CompanyIds: companyIds,\r\n PageSize: PageSize\r\n }).subscribe(\r\n data => this.setState({ data: data, isLoading: false }),\r\n error => this.handleAPIError(error, { isLoading: false})\r\n )\r\n }\r\n\r\n handleDateRangeChange = (event: React.ChangeEvent) => this.setState({ selectedRange: event.target.value })\r\n\r\n onCompanyChange = (selected: AutoFilterCompany[]) => {\r\n this.setState({ selectedCompanies: selected || [] })\r\n }\r\n\r\n pageChanged = (pageNumber: number) => {\r\n this.setState({ pageNumber: pageNumber })\r\n }\r\n\r\n handleClearClick = () => {\r\n this.setState({\r\n selectedCompanies: [],\r\n from: undefined,\r\n to: undefined,\r\n selectedRange: this.state.ranges[0]\r\n })\r\n }\r\n\r\n export(csv: string) {\r\n const csvData = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, FormatTimestampFileName(\"Positive_report\", \"csv\", new Date()), true)\r\n toast.success(\"CSV file downloaded successfully.\")\r\n }\r\n\r\n printMROReport = (row: PositiveReportRow) => {\r\n this.loadReportSubscription && this.loadReportSubscription.unsubscribe()\r\n this.loadReportSubscription = GenerateMROReport(row.TestDetailID).subscribe(\r\n (data) => this.processReport(data),\r\n (error) => this.handleAPIError(error, {})\r\n )\r\n }\r\n\r\n processReport = (data: string) => {\r\n if (data && data !== \"\") {\r\n printPdf(data)\r\n } else {\r\n toast.error(\"Data not found.\")\r\n }\r\n }\r\n\r\n handleLoadClick = () => {\r\n this.refreshGrid(1)\r\n }\r\n\r\n handleExportClick = () => {\r\n this.setState({ loadingCSV: true })\r\n const companyIds: number[] = this.state.selectedCompanies?.map(a => a.AccountID) || []\r\n PositiveReportExport({\r\n DateFrom: FormatDate(this.state.from),\r\n DateTo: FormatDate(this.state.to),\r\n DateType: this.state.selectedRange,\r\n CompanyIds: companyIds,\r\n }).subscribe(\r\n (data: string) => {\r\n this.export(data)\r\n this.setState({ loadingCSV: false })\r\n } ,\r\n error => this.handleAPIError(error, {loadingCSV: false})\r\n )\r\n }\r\n\r\n isReportParametersValid = () => {\r\n const { from, to, selectedCompanies } = this.state\r\n return (!!from && !!to && selectedCompanies.length > 0)\r\n }\r\n\r\n handleAPIError = (error: Error | APIError, stateChanges: object) => {\r\n this.setState(stateChanges)\r\n error && toast.error((error as APIError)?.errorData?.message || error.message)\r\n }\r\n\r\n mapMROReport = (row: PositiveReportRow) => {\r\n return this.printMROReport(row)} src={ImageMRO} alt={\"MRO Report\"} title={\"MRO Report\"} />\r\n }\r\n\r\n renderRow = (row: PositiveReportRow) => {\r\n return <>\r\n {row.CompanyName}\r\n {row.LocationName}\r\n {row.RegulatoryMode}\r\n {row.EmployeeCategory}\r\n {row.ReferenceID}\r\n {row.DonorID}\r\n {row.DonorFirstName}\r\n {row.DonorLastName}\r\n {row.ResultDescription}\r\n {row.TestType}\r\n {FormatDate(row.DateCollected)}\r\n {FormatDate(row.MROReportDate)}\r\n {row.Reason}\r\n {row.Regulated}\r\n {row.PositiveDrugList}\r\n {this.mapMROReport(row) }\r\n \r\n }\r\n\r\n render() {\r\n const { isLoading, data, pageNumber, from, to, selectedRange, companiesLoading, loadingCSV } = this.state\r\n const emptyRow = NO DATA FOUND\r\n const dataRows = (rows: PositiveReportRow[]) => rows.map((row: PositiveReportRow, i: number) =>\r\n \r\n {this.renderRow(row)}\r\n )\r\n\r\n return \r\n \r\n \r\n POSITIVE ONLY REPORT\r\n \r\n \r\n \r\n Companies Filter:\r\n Date Range Filter:\r\n \r\n \r\n {!companiesLoading && }\r\n \r\n \r\n \r\n \r\n {this.state.ranges?.map(r => )}\r\n \r\n \r\n \r\n \r\n \r\n {this.setState({from: date})}} onChangeTo={(date: Date) => {this.setState({to: date})}}/>\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.handleLoadClick()} disabled={!this.isReportParametersValid()} spin={this.state.isLoading} disableOnSpin>LOAD\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n isLoading ?\r\n :\r\n data?.Records && data.Records.length > 0 ? dataRows(data.Records) : emptyRow\r\n }\r\n \r\n
CompanyLocationRegulatory ModeEmployee CategoryCCF#DonorIDDonor First NameDonor Last NameResultTest TypeDate CollectedDate ReportedReason For TestRegulatedPositiveDrugList
\r\n {data && !isLoading &&\r\n Total records: {data.Total}}\r\n {data && !isLoading &&\r\n }\r\n \r\n
\r\n
\r\n }\r\n}\r\n","import { Col, Form } from \"react-bootstrap\"\r\n\r\nimport { DateType, DateTypeLabel } from \"../../../api/Reports/UnmergedRandomResultsReport/DateType\"\r\n\r\ninterface DateTypeSelectionProps {\r\n selectedType: DateType\r\n required?: boolean\r\n onChange: (event: React.ChangeEvent) => void\r\n}\r\n\r\nfunction DateTypeSelection(props: DateTypeSelectionProps) {\r\n const { selectedType, required, onChange } = props\r\n\r\n return (\r\n <>\r\n \r\n Date Type\r\n \r\n \r\n \r\n {Array.from(DateTypeLabel).map(([k, v]) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n )\r\n}\r\nDateTypeSelection.defaultProps = {\r\n required: true,\r\n}\r\nexport default DateTypeSelection\r\n","import { useEffect, useState } from \"react\"\r\n\r\nimport { Button, Col, Form, Modal, ModalBody } from \"react-bootstrap\"\r\nimport { FaSync } from \"react-icons/fa\"\r\nimport { useSelector } from \"react-redux\"\r\nimport { useHistory } from \"react-router\"\r\n\r\nimport DateTypeSelection from \"./DateTypeSelection\"\r\nimport AutoFilterCompaniesGet from \"../../../api/Companies/AutoFilterCompaniesGet\"\r\nimport AutoFilterCompany from \"../../../api/Companies/CompanyModel/AutoFilterCompany\"\r\nimport { CompanyDataLoader } from \"../../../api/Reports/CompanyDataLoader\"\r\nimport { DateType } from \"../../../api/Reports/UnmergedRandomResultsReport/DateType\"\r\nimport {\r\n UnmergedRandomResultsReportParams,\r\n UnmergedRandomResultsReportPdf,\r\n} from \"../../../api/Reports/UnmergedRandomResultsReportGet\"\r\nimport { AppState } from \"../../../AppState\"\r\nimport { isPortalAdmin } from \"../../../authentication/isAdminRole\"\r\nimport { GetSelectedAssignedClinic } from \"../../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport { Home } from \"../../../config/Routes\"\r\nimport FormatDate from \"../../../formatters/FormatDate\"\r\nimport handleAPIError from \"../../../utils/handleAPIError\"\r\nimport printPdf from \"../../../utils/printPdf\"\r\nimport ActionButton from \"../../ActionButton\"\r\nimport DualListBox from \"../../Administration/DualListBox\"\r\nimport { AppPageWrapper } from \"../../NavMenu/AppPageWrapper\"\r\nimport FromToDates from \"../FromToDates\"\r\n\r\nfunction UnmergedRandomResultsReport() {\r\n const portalAdmin = useSelector((state: AppState) => isPortalAdmin(state))\r\n const clinic = useSelector((state: AppState) => GetSelectedAssignedClinic(state))\r\n const history = useHistory()\r\n\r\n const [generatingPdf, setGeneratingPdf] = useState(false)\r\n const [companies, setCompanies] = useState({ data: [], loading: false })\r\n const [selectedCompanies, setSelectedCompanies] = useState([])\r\n const [selectedDateType, setDateType] = useState(DateType.COLLECTED)\r\n const [from, setFrom] = useState()\r\n const [to, setTo] = useState()\r\n\r\n useEffect(() => {\r\n setCompanies((prev) => ({ data: prev.data, loading: true }))\r\n const sub = AutoFilterCompaniesGet(\"\").subscribe(\r\n (res) => setCompanies({ data: res, loading: false }),\r\n (error) => handleAPIError(error, () => setCompanies((prev) => ({ ...prev, loading: false })))\r\n )\r\n return () => sub.unsubscribe()\r\n }, [])\r\n\r\n useEffect(() => {\r\n setSelectedCompanies(companies.data)\r\n }, [companies.data])\r\n\r\n const isParamsValid = () => selectedCompanies.length > 0 && !!selectedDateType && !!from && !!to\r\n\r\n const getReportParams = (): UnmergedRandomResultsReportParams => {\r\n return {\r\n CompanyIds: selectedCompanies?.map((a) => a.AccountID) || [],\r\n DateType: selectedDateType,\r\n DateFrom: FormatDate(from),\r\n DateTo: FormatDate(to),\r\n }\r\n }\r\n\r\n const handleCancelClick = () => history.push(Home)\r\n\r\n const handleClearClick = () => {\r\n setSelectedCompanies(companies.data)\r\n setDateType(DateType.COLLECTED)\r\n setFrom(undefined)\r\n setTo(undefined)\r\n }\r\n\r\n const handleDateTypeChange = (event: React.ChangeEvent) =>\r\n setDateType(event.target.value as DateType)\r\n\r\n const handleGeneratePdfClick = () => {\r\n setGeneratingPdf(true)\r\n UnmergedRandomResultsReportPdf(getReportParams()).subscribe(\r\n (results: string) => {\r\n setGeneratingPdf(false)\r\n printPdf(results)\r\n },\r\n (error) => handleAPIError(error, () => setGeneratingPdf(false))\r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Unmerged Random Results\r\n \r\n \r\n
\r\n {portalAdmin && (\r\n \r\n \r\n Companies\r\n \r\n \r\n \r\n )}\r\n {!portalAdmin && (\r\n \r\n \r\n Company\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Continue\r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\nexport default UnmergedRandomResultsReport\r\n","import { DateType } from \"./UnmergedRandomResultsReport/DateType\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\n\r\nexport interface UnmergedRandomResultsReportParams {\r\n DateFrom: string\r\n DateTo: string\r\n DateType: DateType\r\n CompanyIds: number[]\r\n}\r\n\r\nexport function UnmergedRandomResultsReportPdf(parameters: UnmergedRandomResultsReportParams) {\r\n const requestBody: string = JSON.stringify(parameters)\r\n\r\n return ObservableFromFetch(\"WorkforceReport/UnmergedRandomResultsReport\", requestBody)\r\n}\r\n","import { Component } from \"react\";\r\nimport { Action, Dispatch } from \"redux\";\r\nimport { connect } from \"react-redux\"\r\nimport { HashRouter as Router, Redirect, Route, RouteComponentProps, Switch } from \"react-router-dom\"\r\nimport { AppState } from \"./AppState\"\r\nimport RandomPools from \"./components/Randomization/RandomPools\"\r\nimport RandomGovPools from \"./components/Randomization/GovPools/RandomGovPools\"\r\nimport GovDonor from \"./components/GovDonor/GovDonorGrid\"\r\nimport OrderRequest from \"./components/OrderRequests/OrderRequest\"\r\nimport OrderFinish from \"./components/OrderRequests/OrderFinish\"\r\nimport OrderResults from \"./components/OrderResults/OrderTracking\"\r\nimport SiteSearchPage from \"./components/SiteSearch/SiteSearchPage\"\r\nimport \"./App.scss\"\r\nimport ConnectedWorkforce1Login from \"./authentication/Workforce1Login\"\r\nimport ConnectedSSOWorkforce1Login from \"./authentication/SSOWorkforce1Login\"\r\nimport PageLoading from \"./components/PageLoading\"\r\nimport { PageLoaded } from \"./actions/WorkforceOnePageActions\"\r\nimport ClinicSearchOptions from \"./components/Administration/ClinicSearchOptions\"\r\nimport ConnectedCompanySelection from \"./components/Companies/CompanySelection\"\r\nimport RandomPersonnelGrid from \"./components/Randomization/RandomPersonnelGrid\"\r\nimport SelectionInbox from \"./components/Randomization/SelectionInbox\"\r\nimport MyInformation from \"./components/Accounts/MyInformation\"\r\nimport UserDetailsGrid from \"./components/Administration/UserDetailsGrid\"\r\nimport UserActivation from \"./components/Administration/UserActivation\"\r\nimport RegulatoryModeForm from \"./components/Accounts/RegulatoryMode/RegulatoryModeForm\"\r\nimport CompanyActivation from \"./components/Administration/CompanyActivation\"\r\nimport PortalActivation from \"./components/Administration/PortalActivation\"\r\nimport CompanyInformation from \"./components/Administration/CompanyInformation\"\r\nimport LocationInformation from \"./components/Administration/LocationInformation\"\r\nimport MyOrganization from \"./components/Administration/MyOrganization\"\r\nimport OrphanedResults from \"./components/OrphanedResults/OrphanedResults\"\r\nimport InvitationStatusGrid from \"./components/InvitationStatus/InvitationStatusGrid\"\r\nimport GlobalParameter from \"./components/Administration/GlobalParameter\"\r\nimport OrderableServicesModal from \"./components/Administration/OrderableServicesModal\"\r\nimport UserCodesModal from \"./components/Administration/UserCodesModal\"\r\nimport UserLabelsModal from \"./components/Administration/UserLabelsModal\"\r\nimport LabResultsReportingModal from \"./components/Administration/LabResultsReportingModal\"\r\nimport {\r\n Home,\r\n WorkforceOnePswUpdate,\r\n OrderFinishRoute,\r\n OrderRoute,\r\n OrdersRoute,\r\n RandomsPersonnelRoute,\r\n RandomsRoute,\r\n SelectionInboxRoute,\r\n SiteSearchOptionsRoute,\r\n SiteSearchRoute,\r\n ActivateCompanyRoute,\r\n ActivatePortalRoute,\r\n MyOrganizationRoute,\r\n MyOrganizationNameRoute,\r\n CompanyInformationRoute,\r\n LocationInformationRoute,\r\n InviteStatusRoute,\r\n MyInformationRoute,\r\n OrphanedResultsRoute,\r\n OurTeamStatusRoute,\r\n RegulatoryModeRoute,\r\n PermissionsRoute,\r\n LegacyWorkforceUserInvitationRoute,\r\n LegacyWorkforcePortalInvitationRoute,\r\n LegacyWorkforceCompanyInvitationRoute,\r\n GlobalParameterRoute,\r\n OrderableServicesRoute,\r\n UserCodesRoute,\r\n WorkforceOnePswConfigureRoute,\r\n GovDonorRoute,\r\n RandomsGovRoute,\r\n GovOrderRoute,\r\n SSOOrderRoute,\r\n SSOOrderFinishRoute,\r\n SSOSiteSearchRoute,\r\n SSOGetAuthFormRoute,\r\n SSOHome,\r\n SSOCallbackRoute,\r\n ReportPositiveRoute,\r\n ReportTestingSummaryRoute,\r\n ReportDrugDetailRoute,\r\n ReportDailySummaryRoute,\r\n ReportSpecimenPositivityRoute,\r\n ReportIvrCallInComplianceRoute,\r\n ReportNoShowRoute,\r\n UserLabelsRoute,\r\n ReportCertificationRenewalRoute,\r\n ReportCertificationStatusRoute,\r\n ReportManagementSummaryRoute,\r\n ReportMISRoute,\r\n ReportSummaryRoute,\r\n PortalAdministrationRoute,\r\n AddNewPortalRoute,\r\n ActivateUserRoute,\r\n ConfigureOrderDefaultsRoute,\r\n AddNewCompanyRoute,\r\n AddNewCompanyNameRoute,\r\n SendingFacilityRoute,\r\n ConsortiumsRoute,\r\n ConsortiumPersonnelRoute,\r\n CompanyInformationNameRoute,\r\n ReportSelectedNotTestedRoute,\r\n LabResultsReportingRoute,\r\n ReportUnmergedRandomResultsRoute\r\n} from \"./config/Routes\"\r\nimport InvitationProcess from \"./components/Invitation/InvitationProcess\"\r\nimport PasswordResetLanding from \"./components/Secuirty/PasswordResetLanding\";\r\nimport Permissions from \"./components/Administration/Permissions\"\r\nimport UserAccessSettings from \"./authentication/UserAccessSettings\"\r\nimport { BuildUserAccess } from \"./authentication/BuildUserAccess\"\r\nimport UserState from \"./authentication/UserState\"\r\nimport { BuildUserState } from \"./authentication/BuildUserState\"\r\nimport ProtectedRoute from \"./components/ProtectedRoute\"\r\nimport { GetUserDefaultRoute } from \"./authentication/GetUserDefaultRoute\";\r\nimport GovOrderRequest from \"./components/OrderRequests/GovOrderRequest\";\r\nimport SSOSiteSearchPage from \"./components/sso/SiteSearchPage\";\r\nimport SSOGetAuthFormPage from \"./components/sso/GetAuthFormPage\";\r\nimport SSOCallback from \"./authentication/SSOCallback\"\r\nimport { GetAuthToken } from \"./storage/AuthToken\";\r\nimport ReportParameters from \"./components/Reports/ReportParameters\";\r\nimport { ImplementationTypeGovt, StorageKey } from \"./config/Constants\";\r\nimport PortalGrid from \"./components/Invitation/Portal/PortalGrid\";\r\nimport AddNewPortal from \"./components/Invitation/Portal/AddNewPortal\";\r\nimport { AppPageWrapper } from \"./components/NavMenu/AppPageWrapper\"\r\nimport ProcessingModal from \"./components/ProcessingModal\"\r\nimport packageJson from '../package.json'\r\nimport WorkforceReportParameters from \"./components/Reports/WorkforceReportParameters\";\r\nimport SummaryReport from \"./components/Reports/SummaryReport/SummaryReport\";\r\nimport OrderDefaults from \"./components/Administration/OrderDefaults\";\r\nimport PortalSelectionModal from \"./components/Companies/PortalSelectionModal\";\r\nimport AddNewCompany from \"./components/Invitation/AddNewCompany\";\r\nimport RequireCompleteSetupModal from \"./components/Invitation/RequireCompleteSetupModal\"\r\nimport LogErrorToServer from \"./api/Logging/LogErrorToServer\";\r\nimport { Button } from \"react-bootstrap\";\r\nimport SendingFacilityPage from \"./components/Administration/SendingFacilityPage\";\r\nimport ConsortiumPools from \"./components/Randomization/ConsortiumPools\";\r\nimport ConsortiumPersonnel from \"./components/Randomization/ConsortiumPersonnel\";\r\nimport PositiveReport from \"./components/Reports/PositiveReport\";\r\nimport UnmergedRandomResultsReport from \"./components/Reports/UnmergedRandomResultsReport/UnmergedRandomResultsReport\";\r\n\r\nrequire('source-map-support').install({\r\n handleUncaughtExceptions: false\r\n});\r\n\r\nexport interface GlobalAppStateProps {\r\n PageLoading: boolean\r\n loadedUserPermission: boolean\r\n selectedCompany: boolean\r\n authenticated: boolean\r\n requireCompleteSetup: boolean\r\n userAccess: UserAccessSettings\r\n userState: UserState\r\n loadingCompany?: string\r\n link: string\r\n wrongUrl: boolean\r\n showCompanySelection: boolean\r\n}\r\nexport interface AppStateDispatchProps {\r\n pageLoaded: () => void\r\n}\r\n\r\nexport function IsOnTrack() {\r\n return sessionStorage.getItem(StorageKey.ImplementationType) === ImplementationTypeGovt\r\n}\r\n\r\ninterface GlobalAppState {\r\n error?: Error\r\n}\r\nexport type AppProps = GlobalAppStateProps & AppStateDispatchProps;\r\nexport class App extends Component{\r\n state: GlobalAppState = { error: undefined }\r\n\r\n constructor(props: AppProps) {\r\n super(props)\r\n this.props.pageLoaded()\r\n this.checkAppVersionAndReload()\r\n }\r\n\r\n checkAppVersionAndReload = () => {\r\n const appVersion = packageJson.version\r\n fetch('meta.json')\r\n .then((response) => response.json())\r\n .then((meta) => {\r\n const latestVersion = meta.version\r\n const currentVersion = appVersion\r\n const shouldForceRefresh = this.appVerGreaterThan(latestVersion, currentVersion)\r\n if (shouldForceRefresh) {\r\n this.loadNewAppVersion()\r\n }\r\n })\r\n }\r\n\r\n appVerGreaterThan = (latestVersion: string, currentVersion: string) => {\r\n const versionsA = latestVersion.split(/\\./g)\r\n const versionsB = currentVersion.split(/\\./g)\r\n\r\n while (versionsA.length || versionsB.length) {\r\n const a = Number(versionsA.shift())\r\n const b = Number(versionsB.shift())\r\n\r\n if (a === b) continue\r\n return a > b || isNaN(b)\r\n }\r\n return false\r\n }\r\n\r\n loadNewAppVersion = () => {\r\n if ('caches' in window) {\r\n caches.keys().then((names) => {\r\n names.forEach(async (name) => {\r\n await caches.delete(name)\r\n })\r\n })\r\n location.reload()\r\n }\r\n }\r\n\r\n componentDidCatch(error: Error, info: React.ErrorInfo) {\r\n this.setState({ error: error })\r\n LogErrorToServer(error, info);\r\n }\r\n\r\n render() {\r\n const token = GetAuthToken()\r\n const { authenticated, selectedCompany, userAccess, userState, requireCompleteSetup, wrongUrl, showCompanySelection } = this.props\r\n const authenticatedAndCompanySelected = this.props?.authenticated && this.props?.selectedCompany\r\n const authenticatedAndSelectedAndUserAccessLoaded = authenticatedAndCompanySelected && this.props?.loadedUserPermission\r\n\r\n if (!!token && !(authenticated && !selectedCompany) && (!this.props?.loadedUserPermission || this.props.loadingCompany)) {\r\n return \r\n \r\n \r\n }\r\n\r\n return <>\r\n \r\n \r\n {this.state.error && \r\n \r\n
\r\n

Something went wrong:

\r\n
{this.state.error?.message}
\r\n \r\n
\r\n
\r\n } />}\r\n \r\n {/* Invitation process */}\r\n } />\r\n } />\r\n } />\r\n } />\r\n \r\n } />\r\n\r\n {authenticated && requireCompleteSetup && }\r\n {authenticated && wrongUrl && }\r\n {/* Authorized user routes */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Loading and Company selection */}\r\n {this.props?.PageLoading && } />}\r\n {authenticated && !selectedCompany && showCompanySelection && } />}\r\n {authenticatedAndCompanySelected && !this.props?.loadedUserPermission && } />}\r\n\r\n {/* Authorized user's Default page */}\r\n {authenticatedAndSelectedAndUserAccessLoaded && } />}\r\n\r\n {/* Login page and redirect to Home */}\r\n {/**/}\r\n {!authenticated && } />}\r\n {\r\n const path = props?.location?.pathname || \"\"\r\n if (path.startsWith(\"/access_token=\")) {\r\n return \r\n } else {\r\n return \r\n }\r\n }\r\n } />\r\n
\r\n
\r\n \r\n }\r\n}\r\nfunction mapStateToProps(state: AppState): GlobalAppStateProps {\r\n return {\r\n PageLoading: state.Workforce1State.isLoading ?? true,\r\n loadedUserPermission: state.Workforce1State.loadedSelectedCompanyPermission,\r\n selectedCompany: !!state.Workforce1State.selectedCompany,\r\n authenticated: !!state.Workforce1State && state.Workforce1State.isLoggedIn,\r\n requireCompleteSetup: !!state.Workforce1State.requireCompleteSetup,\r\n link: state.Workforce1State.link || \"\",\r\n userAccess: BuildUserAccess(state),\r\n userState: BuildUserState(state),\r\n showCompanySelection: state.Workforce1State.showCompanySelection,\r\n loadingCompany: state.Workforce1State.loadingCompany,\r\n wrongUrl: !!state.Workforce1State.loginResultMessage // Copied this logic from an Angular app: the presence of a message means there's an invalid url\r\n }\r\n}\r\nfunction mapDispatchProps(dispatch: Dispatch): AppStateDispatchProps {\r\n return {\r\n pageLoaded: () => dispatch(PageLoaded()),\r\n }\r\n}\r\n\r\nconst ConnectedApp = connect(mapStateToProps, mapDispatchProps)(App)\r\nexport default ConnectedApp\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport { Provider } from 'react-redux';\r\nimport ConnectedApp from \"./App\";\r\nimport store from \"./AppStore\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}