{"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","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","formatters/FormatDate.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/BirthdayInput.tsx","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","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/EventDetails/Cards/PhoneNumberCard.tsx","components/OrderResults/EventDetails/Cards/PhoneNumbers.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/download-csv.png","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/Reports/FromToDates.tsx","components/OrderResults/ExportCSVModal.tsx","components/OrderResults/WatchCell.tsx","assets/images/watch.png","assets/images/watch-resolved.png","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","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","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","api/OrphanedResults/Models/ImportExceptionSubType.ts","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","onConfirm","showCancelButton","showCloseButton","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","maintainAspectRatio","layout","padding","right","legend","position","labels","usePointStyle","boxWidth","fontSize","plugins","datalabels","display","scales","yAxes","ticks","xAxes","defaults","global","defaultFontFamily","defaultFontColor","PoolStatistics","statisticsLoading","criteriaLoading","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","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","showMonthDropdown","showYearDropdown","dropdownMode","required","popperPlacement","enableTabLoop","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","FormatDate","delimiter","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","onClose","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","BirthdayInput","mask","MaskedInput","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","personID","pdo","OccupationCode","User1Code","User2Code","User3Code","User4Code","User5Code","User6Code","User7Code","User8Code","RegModCatList","ssnRequired","CompanyPrimaryID","employerIDRequired","driverIDRequired","alternateIDRequired","checkIsPhoneValid","checkIsNotEmpty","checkIsSSNValid","checkIsEmailValid","createFirstNameRow","isFirstNameValid","handleFirstNameChange","createLastNameRow","isLastNameValid","handleLastNameChange","createEmployerIdRow","Employer","isEmployerIdValid","handleEmployerIdChange","createAlternateIdRow","Alternate","isAlternateIdValid","handleAlternateIdChange","createSSNRow","SSN","isSSNValid","handleSSNChange","createDriverIdRow","Driver","isDriverIdValid","handleDriverIdChange","createOccupationRow","ImplementationAlias","PersonDemographicObj","occupationTitle","occupation","Key","Value","handleOccupationChange","isOccupationValid","createRegulatoryModeRow","handleRegulatoryModeClick","handleRegulatoryModeSave","handleSupervisorsSave","Supervisor1Data","Supervisor2Data","handleRegulatoryModeClose","handleSupervisorsClose","createHireDateRow","maxDate","setOpen","handleHireDateChange","customInput","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","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","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","inline","IN_RANGE","OUT_OF_RANGE","SpecimenIdInput","readOnly","InputSpecimenId","sampleId","setId","idRepeat","setIdRepeat","isIdValid","setIdValid","isIdRepeatValid","setIdRepeatValid","isIdFormatValid","alowEmpty","CollectorNotes","notes","AdditionalPanels","panels","setPanels","formatDrugLabel","from","to","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","PhoneNumberCard","readonly","isRequired","phoneNumber","PhoneNumbers","phones","RandomTestCard","description","useIcon","TestReleaseStatusID","DrugTestInfo","testEventData","CCFPersonnelID","CCFFirstName","CCFLastName","baseNameState","ccfName","CCFName","ccfFirstName","ccfLastName","showPerformCollection","ccfPersonnelID","closePerformCollection","isEditNow","editModeChanged","handleDonorIdChange","updateFields","handleCcfFirstNameChange","handleCcfLastNameChange","createGovPerformCollectionProps","SampleType","TemperatureInRange","TestDetailDocument","onPhoneNumberChange","panelInfo","isPending","PendingCollection","isProcessing","CollectionInProcess","PendingLaboratoryTesting","isProcessingTest","isDrug","isEditable","performCollectionProps","ScreenDeviceID","IsRandom","OverlayTrigger","delay","hide","overlay","Popover","DonorID","EmployeeCategoryName","onMerge","PanelDescription","ConnectedDrugTestInfo","EventDetailsModal","editMode","updated","handleEditModeChanged","handleUpdateFields","handleSaveChanges","onRefreshGrid","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","showConfirmSave","confirmSaveText","locationSubscription","confirmSave","deletedCompanies","getDeletedCompanies","getConfirmText","companyCriteria","handleConfirmSave","handleConfirmClose","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","selectedCategory","stateCode","personnelCheckEmptyData","idType","isPersonnelFound","checkMember","showAddPersonnelPanel","isRegionsLoading","regions","categories","statesLoading","idTypes","regionTypeahead","loadAllRegions","AutoFilterRegionsGet","loadCategories","savePoolMember","selectedRegion","Region","ConsortiumPoolCode","IsConsortiumPool","EmployeeCategory","searchString","DriverLICStateOfIssue","poolCompanyData","onAdd","validateState","handleAddMember","handleMemberSearch","formatSearchString","handleRegionChange","handleCategoryChange","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","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","minDate","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","modes","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","employeeCategoryID","regulatoryModeID","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","DeafultExtendExpirationMS","DefaultExtendExpirationHours","ExpirationDateChangeMarker","Schedule","schedule","handleOverrideAllowedChange","overrideAllowed","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","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","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","whiteSpace","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","collectionVendorID","formFoxVendorAN","FFVendorCode","collectorVendorName","callbackAction","OrderEditModal","clinicLoading","cancelling","showConfirmCancelOrderModal","showConfirmSaveModal","loadClinicSubscription","cancelSubscription","onClinicChange","calculateTimezone","newClinic","stateAbbr","performCancelOrder","onOrderUpdated","timeZoneName","CollectionSiteInfoGet","clinicToDisplay","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","FromToDates","onFromSelect","onChangeFrom","onToSelect","onChangeTo","ExportCSVModal","searchParams","generatingCsv","setGeneratingCsv","setFrom","setTo","includeAllDates","setIncludeAllDates","includeArchivedOrders","setIncludeArchivedOrders","includeActiveOrders","setIncludeActiveOrders","handleCancelClick","OrderResultsExportCsv","WatchCell","TestEventAlert","Watch","WatchResolved","FormFoxTestANColumn","showAuthFormModal","GridIDNumber","idValue","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","downloadCsv","DonorName","transform","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","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","DonorNotFoundError","errorRow","AddNew","setAddNew","Search","setSearch","acceptProc","setAcceptProc","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","ImportExceptionSubType","setAccountID","testDetailImportID","testImportExceptionID","OrphanedResults","selectedList","recordCount","showDonorNotFoundError","showNoMatchingRandomError","showNoMatchingTestError","showAccountNotFoundError","actionsSubscription","handleAllTestDetailCheck","handleTestDetailCheck","isClinical","handleDelete","deleteRecords","renderColumns","testDetailSelected","clinicalId","linkVisible","isShowErrorDialog","showErrorDialog","ImportException","onCloseDonorNotFoundError","withUpdate","onCloseAccountNotFoundError","onCloseNoMatchingRandomError","onCloseNoMatchingTestError","isShowDonorNotFoundError","importExceptionSubType","ImportExceptionSubTypeID","DonorDoesNotExist","MoreThanOneDonorMatch","isShowNoMatchingRandomError","TestDoesNotExist","MoreThanOneTestMatch","ReasonCode","isShowNoMatchingTestError","isShowAccountNotFoundError","LabAccountNotFoundorNotAssignedtoaCompany","LabAccountAssignedMorethanOneCompany","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","poolChecked","typeaheadPool","selectedPool","handleDonorStatusChange","handleRegModeChange","selectedMode","handleYearChange","selectedYear","handleDateRangeChange","switchRadioButton","handlePoolChecked","handleAccountTypeChanged","at","MasterAccount","handleYearChecked","handleRangeChecked","handleClearClick","currentYear","generateDriverCertification","generateManagementSummary","generateMIS","generateSNT","generateCertificationStatus","isAccountType","BreakByLocations","IncludeAlcoholTests","DtFromDate","DtToDate","ReportMode","isReportParametersValid","companiesSelected","showDonorStatusSection","showDonorSelector","showSummarySection","showDatesSection","showMISSection","showSNTSection","showAcountInput","needLoadCompanies","loadCompanies","showCompanyLabel","showFilterByCompany","showFilterByMasterAccount","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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mB,YACnBC,kBAAmB,YACnBK,sBAAsB,EACtBE,iBAAiB,GCheW,IAAIruD,OAChC,gIAEqC,IAAIA,OACzC,kfAIuC,KAoBpC,IAAMovD,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,QAAS,MACTC,KAAM,MACNC,OAAQ,MACRC,SAAU,MACVC,UAAW,MACXC,MAAO,MACPC,SAAU,MACVC,cAAe,MACfC,SAAU,MACVC,UAAW,MACXC,YAAa,MACbC,SAAU,MACVC,QAAS,MACTC,SAAU,MACVC,OAAQ,MACRC,aAAc,MACdC,UAAW,MACXC,UAAW,MACXC,QAAS,MACTC,cAAe,MACfC,YAA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","file":"static/js/main.0844ca96.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 FORCOMLETED 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, 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\nimport { Container, Modal, Row, Col, Button } from \"react-bootstrap\"\r\nimport WarningImage from \"../assets/images/warning.png\"\r\nimport ActionButton from \"./ActionButton\"\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\nexport default class ConfirmationModal extends React.PureComponent {\r\n render() {\r\n const { show, showImage, title, textTitle, text, cancelButtonText, confirmButtonText, children, size, disableConfirmButton, spinConfirmButton, disableConfirmOnSpin, onHide, onConfirm, showCancelButton, showCloseButton } = this.props\r\n return \r\n \r\n {title}\r\n \r\n \r\n {children && children}\r\n {!children &&\r\n \r\n \r\n {showImage && \"\"}\r\n \r\n {textTitle &&
{textTitle}
}\r\n {text &&

{text}

}\r\n \r\n
\r\n
}\r\n
\r\n \r\n {showCancelButton && }\r\n {confirmButtonText}\r\n \r\n
\r\n }\r\n\r\n static defaultProps = {\r\n title: \"CONFIRM\",\r\n showImage: true,\r\n cancelButtonText: \"CANCEL\",\r\n confirmButtonText: \"CONFIRM\",\r\n disableConfirmButton: false,\r\n spinConfirmButton: false,\r\n disableConfirmOnSpin: false,\r\n showCancelButton: true,\r\n showCloseButton: true\r\n }\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 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 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}\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 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}\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","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\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}\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}\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 }\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 } = this.state\r\n\r\n let labels = ['ESTIMATED TESTS REQUIRED', 'TOTAL TESTS COMPLETED', 'TOTAL TESTS PENDING'];\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 \r\n \r\n \r\n \r\n \r\n \r\n \r\n
TESTING TOTALS
\r\n \r\n \r\n \r\n DRUG\r\n ALCOHOL\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 SPECIMEN\r\n {statistics?.TargetDrug}{statistics?.RateOrFixed === 1 && %}\r\n \r\n \r\n \r\n \r\n SPECIMEN\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 PERCENTAGE\r\n {statistics?.TotalTestsCompletedDrug}{statistics?.RateOrFixed === 1 && %}\r\n \r\n \r\n \r\n \r\n PERCENTAGE\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,\r\n hideContent,\r\n withBorder,\r\n withHeader,\r\n children,\r\n}: LoadingTableWrapperProps) {\r\n\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\nLoadingTableWrapper.defaultProps = {\r\n variant: \"dark\",\r\n hideContent: false,\r\n withBorder: true,\r\n withHeader: false,\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","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 * 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, 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 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 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\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\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 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 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 {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 })\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 { 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 { 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 { 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","\r\nimport React, { Component } from \"react\"\r\nimport { Container, Row, Col, Button, Form, OverlayTrigger, Popover } from \"react-bootstrap\"\r\nimport { FaInfoCircle, FaPencilAlt, FaTimes } from \"react-icons/fa\"\r\nimport { addProcessingCollectionTest, hasCachedCollectionTests, isProcessingCollection, ProcessingCollectionLabel } from \"../../../api/CachedCollectionTest\"\r\nimport OrderResultRecord from \"../../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport ServiceDetails from \"../../../api/OrderResults/OrderResultModel/ServiceDetails\"\r\nimport CardRow from \"./Cards/CardRow\"\r\nimport TestEventUpdateData from \"../../../api/OrderResults/OrderResultModel/TestEventUpdateData\"\r\nimport { AppState } from \"../../../AppState\"\r\nimport { connect } from \"react-redux\"\r\nimport { BuildUserAccess } from \"../../../authentication/BuildUserAccess\"\r\nimport GovPerformCollection, { GovPerformCollectionProps } from \"../../OrderRequests/GovPerformCollection\"\r\nimport PhoneType from \"../../../api/PhoneType\"\r\nimport PhoneNumbers from \"./Cards/PhoneNumbers\"\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}\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 }\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 }\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 { editing: isEditNow, testEventData: this.testEventData, ccfPersonnelID: isEditNow ? '' : this.props.currentServiceInfo.CCFPersonnelID, ...this.baseNameState }\r\n })\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 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 render() {\r\n const { currentRowInfo, currentServiceInfo, isOnTrack, canEditPendingOrders, canMergeTests } = this.props\r\n const { editing, testEventData: { Phones } } = this.state\r\n \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 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 && }\r\n {!isOnTrack && }\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 { Button, 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 RandomPools from \"../Randomization/RandomPools\"\r\nimport SearchTestToMerge from \"./SearchTestToMerge\"\r\nimport PhoneType from \"../../api/PhoneType\"\r\nimport { APIError } from \"../../api/ObservableFromFetch\"\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 editMode: boolean\r\n testEventData?: TestEventUpdateData\r\n updated: 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, editMode: false, testEventData: undefined, updated: 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 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 }\r\n })\r\n }\r\n\r\n handleUpdateFields = (testEventData: TestEventUpdateData) => {\r\n this.setState({ testEventData: testEventData })\r\n }\r\n\r\n handleSaveChanges = () => {\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}, () => this.props.onHide(this.state.updated))\r\n },\r\n (error) => {\r\n this.handleAPIError(error)\r\n this.props.onHide(this.state.updated)\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 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 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 \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 PENDTESTS 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'];\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?.TotalEstimatedCompleteDrug || 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\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\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 \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}\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\nconst DefaultExtendExpirationHours: number = 24\r\nconst DeafultExtendExpirationMS: 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 = (overrideAllowed: boolean) => {\r\n this.updateState({ overrideAllowed: overrideAllowed }, 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 + DeafultExtendExpirationMS\r\n }\r\n else {\r\n if (expirationHours !== ExpirationDateChangeMarker) {\r\n expirationMS = expirationMS - DeafultExtendExpirationMS\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 if ((prevProps.defaultExpiration !== this.props.defaultExpiration) || (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,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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,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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 SetTestDetailVendorParameters {\r\n formFoxTestAN: number\r\n collectionVendorID: number\r\n formFoxVendorAN: number\r\n FFVendorCode: string\r\n collectorVendorName: string\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}\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 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 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: true,\r\n hoursUntilExpires: undefined,\r\n expirationDate: undefined,\r\n formattedExpirationDate: \"\",\r\n displayExpirationDate: \"\",\r\n comment: \"\",\r\n proceedImmediately:false\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 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.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\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 def = this.state.defaults.find(item => item.LookupCode === DefaultLookupCode.ExpTime && !!item.AccountID)\r\n if (!def) def = this.state.defaults.find(item => item.LookupCode === DefaultLookupCode.ExpTime && !item.AccountID)\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.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 },\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,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\"","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, 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\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 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 ssoToken: this.state.ssoToken,\r\n\t 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 }\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, Modal, Spinner } from \"react-bootstrap\"\r\nimport DatePicker from 'react-datepicker'\r\nimport 'react-datepicker/dist/react-datepicker.css'\r\nimport { FaChevronRight } 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}\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 }\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) => 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 }),\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 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 }\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 render() {\r\n const { clinicLoading, cancelling, saving, clinic, newClinic, expirationDate, timezone, showSiteSearch,\r\n showConfirmCancelOrderModal, showConfirmSaveModal, loading, data, proceedImmediately } = 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 Expiration Date\r\n {proceedImmediately && \r\n Proceed Immediately to the Collection Site\r\n }\r\n {!proceedImmediately && \r\n this.setState({ expirationDate: date as Date || undefined })} />\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,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\"","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 * 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 { 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 { 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 { FaSync } from \"react-icons/fa\"\r\nimport FileSaver from \"file-saver\"\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, OrderResultsExportCsv, 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 CustomizableColumn, { 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 downloadCsv from \"../../assets/images/download-csv.png\"\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, saveCustomized } from \"../ColumnsCustomizeModal/ColumnsCustomizeModal\"\r\nimport { getLoggedInUserName, GetSelectedAssignedClinic, GetSelectedPortal } from \"../../authentication/SelectedCompany/CompanySelectionDrivenSelectors\"\r\nimport ResultsResolveObservable from \"../../api/OrderResults/ResultsResolve\"\r\nimport { BuildUserAccess } from \"../../authentication/BuildUserAccess\"\r\nimport { IsServiceTypeCodeOHS, 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 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) => <>{idType}\r\n const value = props.value\r\n return (\r\n {idRow(value.DonorID, idType(value.IDType))}\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 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
\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 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 {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\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","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(props: LoadingTableBodyWrapperProps) {\r\n const { loading, recordsCount, columnsCount, noDataText, children } = props\r\n\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\nLoadingTableBodyWrapper.defaultProps = {\r\n noDataText: \"No Data Found\",\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","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\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 return (\r\n \r\n \r\n Donor Not Found Error\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","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 * 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\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: \"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 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\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.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 \"ImportException\":\r\n const linkVisible = this.isShowErrorDialog(row)\r\n return \r\n {linkVisible ? : row.ImportException}\r\n \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\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 \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 \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 \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 },\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\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 poolLoading: boolean\r\n companyChecked: 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 donorChecked: false,\r\n donorLoading: false,\r\n poolLoading: false,\r\n poolChecked: 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)\r\n handlePoolChecked = (e: React.ChangeEvent) => this.switchRadioButton(false, false, e.target.checked)\r\n handleCompanyChecked = (e: React.ChangeEvent) => this.switchRadioButton(e.target.checked, false, false)\r\n\r\n switchRadioButton = (companyChecked: boolean, donorChecked: boolean, poolChecked: 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, selectedPool: undefined, selectedCompany: currentCompany, selectedLocation: currentLocation, donorId: undefined, donor: undefined })\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 companyChecked: 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.generateSNT()\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\r\n generateSNT = () => {\r\n this.setState({ loading: true })\r\n this.printSubscription && this.printSubscription.unsubscribe()\r\n const {companyChecked, poolChecked, donorChecked, 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 }).subscribe(\r\n data => {\r\n this.setState({ loading: false })\r\n printPdf(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 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, companyChecked, poolChecked, donorChecked, yearChecked, rangeChecked, 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) || (poolChecked && !!selectedPool) || (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, donorChecked, donorLoading, donor, poolChecked, companyChecked, donorId, selectedYear, selectedRange, regulatoryModeLoading, yearsLoading } = 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 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 {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 }\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 Continue\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\r\n","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.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 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 ReportedPositiveDrugList
\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}","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":""}