{"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","components/Randomization/Pools/TestingPeriodBreakdownGrid.tsx","api/Randoms/RandomsModel/PoolCriteria.ts","api/Reports/WorkforceReport.ts","formatters/FormatError.ts","formatters/FormatBase64.ts","utils/printPdf.ts","components/Randomization/Pools/PoolStatistics.tsx","api/Randoms/CloseProgramInterval.ts","assets/images/warning.png","components/ConfirmationModal.tsx","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/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","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/SearchFieldsGet.ts","api/OrderResults/CompleteTest.ts","api/OrderResults/OrderResultModel/Status.ts","components/OrderResults/CompleteModal.tsx","api/OrderResults/CompanyPoolsGet.ts","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","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","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/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/OrphanedResults/PendingDrugTests/PendingDrugTests.tsx","components/OrphanedResults/PendingDrugTests/PendingDrugTestsButtons.tsx","components/OrphanedResults/DonorNotFoundError/DonorNotFoundError.tsx","components/OrphanedResults/NoMatchingRandomError/NoMatchingRandomError.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","components/Reports/FromToDates.tsx","api/Reports/DriverCertificationReportGet.ts","components/Reports/WorkforceReportParameters.tsx","api/Reports/SummaryReportGet.ts","utils/handleAPIError.ts","components/Reports/SummaryReport/IncludeArchivedOrders.tsx","components/Reports/SummaryReport/SummaryReport.tsx","utils/exportCsv.ts","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","PoolSelectionListGetObservable","pageSize","PageNumber","FilterDataModule","FilterCriteriaCode","FilterSaveResult","TestingPeriodBreakdownGrid","selectionListModal","page$","BehaviorSubject","pageSubscription","convertDate","renderRows","Records","showRandomSelectionLink","showSelectionList","Period","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","FormatError","FormatData","byteCharacters","atob","byteNumbers","k","charCodeAt","Uint8Array","printPdf","fileData","fileURL","URL","createObjectURL","showPdf","replace","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","CurrentPoolSize","TargetDrug","RateOrFixed","TargetAlcohol","AveragePoolSize","CloseProgramIntervalObservable","ConfirmationModal","showImage","textTitle","cancelButtonText","confirmButtonText","disableConfirmButton","spinConfirmButton","disableConfirmOnSpin","onConfirm","showCancelButton","showCloseButton","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","xl","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","ImportErrorDetails","useState","errors","TableHeaderItems","TableRows","Total","TitleMessage","CanBeImported","setErrors","useMemo","useEffect","errorMessage","prev","bordered","Cells","dangerouslySetInnerHTML","__html","pageChange","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","isActualToSelectDrugValid","isActualToSelectAlcoholValid","isAlternateDrugValid","isAlternateAlcoholValid","showRunConfirmation","validateSizeValue","handleSizeChange","handleFormSubmit","preventDefault","actualToSelectDrug","actualToSelectAlcohol","alternateDrug","alternateAlcohol","validity","GenerateAlternates","runSelection","ContactId","UpdateMethodID","PoolId","RequiredDrug","RequiredAlcohol","AlternateDrug","AlternateAlcohol","runResults","sizeRowItem","valueField","valueValidityField","invalidMessage","sizeRow","statRequiredValue","alternateValueField","alternateValueValidityField","showAlternates","alternateInvalidMessage","DrugRequired","AlcoholRequired","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","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","isInactiveValid","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","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","finalize","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","RandomPools","updatingReadyToRun","modal","readyToRunChanges","runPools","cancelPools","updateReadyToRunSubscription","changePrintRowSelection","renderHeaderColumn","columnName","filterGrid","renderReadyToRunHeaderColumn","isReadyToRun","setAscSort","handleReadyToRunClick","strokeWidth","Selection","ReadyToRunDate","RequireManualVerify","handleChangeReadyToRunChange","hideDetailsModal","reload","hideModal","handleCreateSuccessful","onRun","onExportClick","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","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","TimeZone","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","Exact","DateRange","DateType","EndDate","StartDate","InProcessStatus","IsReviewed","Pending","IsSearch","SearchString","TrackPersonID","OrderResultsPrint","SearchFieldsGet","CompleteTest","Images","CompleteModal","pools","hireDate","didHire","currentTest","currentDonorIndex","showHireModal","showCompleteModal","testsToProcess","processedTests","poolSubscription","handlePoolChange","onCancelHireModal","onSubmitHireModal","completeAllTests","completeTest","testToComplete","currentIndex","newDonorIndex","newDonorTest","testForSameDonor","testEventId","stepStatusColor","stage","showCompleteOrders","InProcess","Alert","Cancelled","NoStatus","GridStatusInfo","Stages","stages","scheduleStatusId","ScheduleStatusID","testEventStatus","TestEventStatus","testDetailClinicalId","showEventStatus","shownStage","whiteSpace","IsStatusVisible","Sequence","StatusDetail","Detail","TestTypes","stageStatus","ModalStatusInfo","fields","detail","DateOrder","ProcessedBy","SiteName","SiteAddress","CollectionDate","NotificationDate","Recipient","Method","LaboratoryName","DateReceived","MROStatus","CollectionStatus","renderStatus","ImageGet","GenerateMROReport","ReportKey","PrintRecords","GetMROLetter","OrderTrackingCheckbox","buildId","idPrefix","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","GridIDNumber","idValue","idRow","OrderTracking","searchFieldsSubscription","loadImageSubscription","loadReportSubscription","OrderTrackingGridColumns","showStatusModal","showArchivedOrders","completeModal","statusInfo","eventDetails","showAuthFormModal","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","showEventDetailsModal","showEventDetailsCompareModal","isFirstRow","isLastRow","showImageAlert","MockMergeFrom","MockTestEventAlertID","AlertResolved","showImageAlertResolved","ImageAlert","ImageAlertResolved","canView","mapCCFImages","mapMROReport","MROStage","linkVisible","getResultText","MROResultID","LaboratoryTestingComplete","LaboratoryTestingCompleteReleased","MRONonDOTNeg","LabResultID","IsPOCT","IsFLEX","PoctComplete","PoctCompleteReleased","CRLCovidClearAntibody","CRLRapidResponseCovid","ccfImageDescription","isPositiveFlexInstantReport","imgSrc","ImageOHS","ImageCCF","ImageMRO","selectedIdentifierByRow","flattenResults","hideMergeEvent","onMergeEvent","ResultsGridObservable","OrderResultsExportCsv","dataColumns","printCell","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","searchParams","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","subs","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","Content","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","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","downloadTemplate","ImportJobCreateAndPerform","click","handleRemoveClick","ConnectedRandomPersonnelGrid","Pool","Site","CRMUniqueID","RetireDate","Country","StateName","SelectionInboxGridCsv","EventExcuseObservable","testEventID","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","IsAllEvents","IsAllServices","IsNotificationEnabled","IsUser","ModifiedBy","NotificationEventIDs","NotificationServiceIDs","NotifyByEmail","NotifyByPhone","NotifyInBrowser","PhoneNumberList","RoleList","RoleTitle","IsActive","Locations","timeZoneID","isCollectorActive","CreateUser","UserRevoke","applicationUserId","RoleOrderSecurityCheckObservable","roleID","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","showNotifications","allServicesChecked","allEventsChecked","checkedNotificationServiceIDs","checkedNotificationEventIDs","notifyEmail","notifyText","notifyWeb","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","notificationServiceID","NotificationServiceID","notificationEventID","NotificationEventID","AssociatedEmail","AssociatedPhone","AllServices","AllEvents","handleRoleChange","phoneIndex","newPhoneArray","handlePhoneChangeByEditModal","newActivePhone","isLocationAdministrator","handleEmailBlur","showNewUser","existingUser","emailExists","AssociatedRole","emailData","phoneData","roleData","Personal","SaveMethod","performRevoke","performPasswordReset","performClose","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","PendingDrugTests","importTest","onSelectTest","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","NoMatchingTestError","NoMatchingTest","AccountNotFoundError","ImportExceptionSubType","setAccountID","testDetailImportID","testImportExceptionID","OrphanedResults","selectedList","recordCount","showDonorNotFoundError","showNoMatchingRandomError","showNoMatchingTestError","showAccountNotFoundError","actionsSubscription","handleAllTestDetailCheck","handleTestDetailCheck","isClinical","handleDelete","deleteRecords","renderColumns","testDetailSelected","clinicalId","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","modifiedBy","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","SetAccountLabResultsReporting","LabResultsReportingModal","MRONonDOTPos","POCTRequireLab","POCTRequireMRO","loadPortalSubscription","UpdateUserLoginID","mroNonDOTNeg","mroNonDOTPos","poctRequireLab","poctRequireMRO","handleEmptyCompany","toggleMRONONDOTNeg","toggleMRONONDOTPos","togglePOCTReqLabConf","togglePOCTReqMRO","implementationGroupId","AccountLabResultsReportingGet","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","handleCancelClick","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","FromToDates","onFromSelect","onChangeFrom","onToSelect","onChangeTo","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","IncludeArchived","IncludeArchivedOrders","DateTypeLabel","EVENTED","REVIEWED","ORDERED","TESTED","SCHEDULED","SummaryReport","portalAdmin","useSelector","useHistory","generatingCsv","setGeneratingCsv","generatingPdf","setGeneratingPdf","setCompanies","setSelectedCompanies","selectedDateType","setDateType","CUSTOM_FILTER","selectedDateRange","setDateRange","setFrom","setTo","includeArchivedOrders","setIncludeArchivedOrders","toDay","currentMonth","CURRENT_MONTH","PREVIOUS_MONTH","FROM_BEGINNING_OF_YEAR","LAST_30_DAYS","getReportParams","exportCsv","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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","file":"static/js/main.b28d6840.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 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 {!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
COMPANYPRIMARY IDNAMETEST FOR
NO SELECTIONS FOR THIS ACCOUNT.
{row.Company}{row.ID}{row.Name}{row.TestFor}
\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 * 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\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 )\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 this.state.loading ?\r\n \r\n \r\n : this.renderRows()\r\n }\r\n \r\n
PERIODPOOL SIZESELECTION DATETESTS SELECTEDEXTRA TESTSTESTS COMPLETED
DRUGALCOHOLDRUGALCOHOLDRUGALCOHOL
\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 { 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 { \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","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","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","export default \"data:image/png;base64,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\"","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}","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: editingAndNoRunNonClosePY,\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\ninterface 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 React, { useEffect, useMemo, useState } from \"react\";\r\nimport { Row, Col, Table, Spinner, Container } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\";\r\nimport { BehaviorSubject, concat, of, ReplaySubject, Subject } from \"rxjs\";\r\nimport { distinctUntilChanged, switchMap, catchError, map, filter } from \"rxjs/operators\";\r\nimport ImportJobValidationResultGetObservable, { ImportJobValidationResult } from \"../../api/Randoms/Import/ImportJobValidationResultGet\"\r\nimport FormatError from \"../../formatters/FormatError\";\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\nconst ImportErrorDetails = (props: ImportErrorDetailsProps) => {\r\n const [errors, setErrors] = useState(\r\n {\r\n data: props.errors || {\r\n ImportJobID: props.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 new BehaviorSubject(\r\n {\r\n importJobID: props.errors ? -1 : props.importJobID,\r\n pageSize: props.pageSize,\r\n pageNumber: 1\r\n }\r\n ), [])\r\n\r\n useEffect(() => {\r\n const pageSubscription = page$.pipe(\r\n filter(v => v.importJobID > 0),\r\n distinctUntilChanged(),\r\n switchMap((params: GetErrorsParams) => 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 ).subscribe(\r\n (o: { loading: boolean, data?: ImportJobValidationResult, errorMessage?: string }) => {\r\n setErrors(prev => ({ data: { ...prev.data, ...o.data }, loading: o.loading }))\r\n o.errorMessage && toast.error(o.errorMessage)\r\n },\r\n (error) => {\r\n setErrors(prev => ({ data: { ...prev.data }, loading: false }))\r\n toast.error(FormatError(error))\r\n }\r\n )\r\n return () => pageSubscription.unsubscribe()\r\n }, []);\r\n\r\n const pageChange = (page: number) => page$.next({ ...page$.value, importJobID: props.importJobID, pageNumber: page })\r\n\r\n const { TitleMessage, TableHeaderItems = [], TableRows = [], Pages = 1 } = errors.data\r\n\r\n return (\r\n \r\n {TitleMessage && {TitleMessage}}\r\n {TableRows.length > 0 && <>\r\n \r\n \r\n \r\n \r\n \r\n {TableHeaderItems.map(item => )}\r\n \r\n \r\n \r\n {errors.loading && }\r\n {!errors.loading && TableRows.map((row, i) =>\r\n \r\n {row.Cells.map((item, j) =>\r\n )}\r\n )}\r\n \r\n
{item}
\r\n {j === 1 ?
: {item}}\r\n
\r\n \r\n
\r\n \r\n \r\n pageChange(page)} />\r\n \r\n \r\n }\r\n
\r\n )\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\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\"] 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 }\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 isInactiveValid = () => {\r\n return true\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 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 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 \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: \"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","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\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 {row.Selection}\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 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 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 = 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 { Observable } from \"rxjs\"\r\nimport { 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 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 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 { 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}","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 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 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 }\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 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 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 this.completeAllTests(0)\r\n return (\r\n <>\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","import React from \"react\"\r\nimport { Container, Row, Col } from \"react-bootstrap\"\r\nimport OrderResultRecord from \"../../api/OrderResults/OrderResultModel/OrderResultRecord\"\r\nimport Stage from \"../../api/OrderResults/OrderResultModel/Stage\"\r\nimport { Status } from \"../../api/OrderResults/OrderResultModel/Status\"\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 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 let shownStage = stages.find((stage: Stage) => stage.Status === Status.Completed)\r\n if (!shownStage)\r\n shownStage = stages[stages.length - 1]\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 {shownStage.StatusDetail.Detail}\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 * as React from \"react\"\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 onChange: (item: OrderResultRecordIdentifier, checked: boolean) => void\r\n}\r\n\r\nexport default class OrderTrackingCheckbox extends React.PureComponent {\r\n onChange = (e: React.ChangeEvent) => this.props.onChange(this.props.item, e.target.checked)\r\n buildId = (item: OrderResultRecordIdentifier) => `${this.props.idPrefix}_${item.TestDetailID}_${item.TestDetailClinicalID}`\r\n render() { return }\r\n}\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) {\r\n const requestBody: string = JSON.stringify({\r\n MockTestDetailID: testDetailID,\r\n MockTestDetailClinicalID: testDetailClinicalID\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: 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: 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).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,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\"","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 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 { 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 { 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\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 loadingCsv?: 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 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\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 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 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 }\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 }, 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({ loadingCsv: true })\r\n OrderResultsExportCsv({\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 }, this.props.isPortalAdmin ? 0 : AccountTypeID).subscribe(\r\n (data: string) => this.export(data),\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(\"Tracking\", \"csv\", new Date()), true)\r\n toast.success(\"CSV file downloaded successfully.\")\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 })\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 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 const linkVisible = row.FormFoxTestAN !== \"\" && !row.DateCollected && row.ScheduleStatusID != ScheduleStatus.Cancelled\r\n return \r\n {linkVisible ? : row.FormFoxTestAN || \"\"}\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 (row.TestType === ServiceTypeCode.Drug && row.MROResultID === 0\r\n && (row.TestReleaseStatusID === TestReleaseStatusID.LaboratoryTestingComplete\r\n || row.TestReleaseStatusID === TestReleaseStatusID.LaboratoryTestingCompleteReleased)\r\n && stage.Sequence === 6 && !row.MRONonDOTNeg && row.LabResultID === 3) {\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 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 {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, loadingCsv, selectedTests,\r\n customizeModal, completeModal, searchFields, statusInfo, employeeDetails,\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 \r\n \r\n \r\n \r\n {this.props.implementationType === ImplementationTypeGovt && }\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 \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 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
\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 React, { useState } from \"react\";\r\nimport { Modal, Button } from \"react-bootstrap\"\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\nconst ImportErrorDetailsModal = (props: ImportErrorDetailsProps) => {\r\n const [show, setShow] = useState(props.show)\r\n\r\n const handleClose = () => {\r\n props.onClose?.()\r\n setShow(false)\r\n }\r\n\r\n return (\r\n handleClose()} dialogClassName=\"modal-90w\" size=\"xl\">\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\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\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 \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 csvData = new Blob([\"COMPCODE,DonorID,Fname,Lname,RegMode,Category,Location,OccupationCode\\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 pageSize={10}\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 = {\r\n TestEventID: data.TestEventID,\r\n MockTestDetailID: data.TestDetailID,\r\n FormFoxTestAN: data.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) => {\r\n if ([\"ORDERED\", \"ORDERED ALT\"].includes(row.Status))\r\n return this.updateToPending(row)}>\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)}\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 { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport AssociatedData from \"./Model/AssociatedData\"\r\nimport RoleData from \"./Model/RoleData\"\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 NotifyByEmail: boolean\r\n NotifyByPhone: boolean\r\n NotifyInBrowser: boolean\r\n IsAllEvents: boolean\r\n IsAllServices: boolean\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 => ({EmailAddress: item.ContactDetail, isActive: item.Active, DeliveryType: \"EMAIL\"})),\r\n FirstName: params.FirstName,\r\n IsAllEvents: params.IsAllEvents,\r\n IsAllServices: params.IsAllServices,\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 NotifyByEmail: params.NotifyByEmail,\r\n NotifyByPhone: params.NotifyByPhone,\r\n NotifyInBrowser: params.NotifyInBrowser,\r\n ParticipationID: params.ParticipationID,\r\n PhoneNumberList: params.PhoneNumberList.map(item => ({PhoneNumber: item.ContactDetail, isActive: item.Active, DeliveryType: item.DeliveryType})),\r\n RoleList: params.RoleList.map(item => ({RoleID: item.RoleID, RoleTitle: item.Title, IsActive: item.Active, Locations: item.Locations})),\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}","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport { UpdateUserDetailParams } from \"./UserNotificationInfoUpdate\"\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 => ({EmailAddress: item.ContactDetail, isActive: item.Active, DeliveryType: \"EMAIL\"})),\r\n FirstName: params.FirstName,\r\n IsAllEvents: params.IsAllEvents,\r\n IsAllServices: params.IsAllServices,\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 NotifyByEmail: params.NotifyByEmail,\r\n NotifyByPhone: params.NotifyByPhone,\r\n NotifyInBrowser: params.NotifyInBrowser,\r\n ParticipationID: params.ParticipationID,\r\n PhoneNumberList: params.PhoneNumberList.map(item => ({PhoneNumber: item.ContactDetail, isActive: item.Active, DeliveryType: item.DeliveryType})),\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}","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 * as React from \"react\"\r\nimport { Row, Col, Spinner } from \"react-bootstrap\"\r\nimport { Subscription } from \"rxjs\"\r\nimport ToggleSwitch from \"../FormattedInputs/ToggleSwitch\"\r\nimport NotificationDetails from \"../../api/Notifications/Model/NotificationDetails\"\r\nimport NotificationService from \"../../api/Notifications/Model/NotificationService\"\r\nimport NotificationEvent from \"../../api/Notifications/Model/NotificationEvent\"\r\nimport NotificationDetailGet from \"../../api/Notifications/NotificationDetailGet\"\r\n\r\nexport interface NotificationSettings {\r\n showNotifications: boolean\r\n allServicesChecked: boolean\r\n allEventsChecked: boolean\r\n checkedNotificationServiceIDs: number[]\r\n checkedNotificationEventIDs: number[]\r\n notifyEmail: boolean\r\n notifyText: boolean\r\n notifyWeb: boolean\r\n}\r\n\r\ninterface NotificationsSelectionProps extends NotificationSettings {\r\n canViewOrderTrackingGrid?: boolean\r\n onChange: (data: NotificationSettings) => void\r\n}\r\n\r\ninterface NotificationsSelectionState {\r\n loading: boolean\r\n notificationServices?: NotificationService[]\r\n notificationEvents?: NotificationEvent[]\r\n}\r\n\r\nexport default class NotificationSelection extends React.Component {\r\n state: NotificationsSelectionState = { loading: true }\r\n\r\n notificationDetailSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.notificationDetailSubscription = NotificationDetailGet().subscribe(\r\n (data: NotificationDetails) => this.setState({ loading: false, notificationServices: data.NotificationService, notificationEvents: data.NotificationEvent }),\r\n () => this.setState({ loading: false })\r\n )\r\n }\r\n\r\n componentWillUnmount() {\r\n this.notificationDetailSubscription && this.notificationDetailSubscription.unsubscribe()\r\n }\r\n\r\n handleCheckChange = (what: keyof NotificationSettings, checked: boolean, id?: number) => {\r\n const data = this.props as NotificationSettings\r\n switch (what) {\r\n case \"allServicesChecked\":\r\n const { notificationServices } = this.state\r\n this.props.onChange({ ...data, allServicesChecked: checked, checkedNotificationServiceIDs: checked && notificationServices ? notificationServices.map((item: NotificationService) => item.NotificationServiceID) : [] })\r\n break\r\n case \"allEventsChecked\":\r\n const { notificationEvents } = this.state\r\n this.props.onChange({ ...data, allEventsChecked: checked, checkedNotificationEventIDs: checked && notificationEvents ? notificationEvents.filter((item: NotificationEvent) => !(!this.props.canViewOrderTrackingGrid && item.Title === \"MRO_RES\")).map((item: NotificationEvent) => item.NotificationEventID) : [] })\r\n break\r\n case \"checkedNotificationServiceIDs\":\r\n if (id) {\r\n const { allServicesChecked } = this.props\r\n const checkedNotificationServiceIDs = allServicesChecked\r\n ? this.state.notificationServices?.map(item => item.NotificationServiceID) || []\r\n : this.props.checkedNotificationServiceIDs\r\n const newChecked = checked ? [...checkedNotificationServiceIDs, id] : checkedNotificationServiceIDs.filter(itemID => itemID !== id)\r\n const allNewChecked = newChecked.length === this.state.notificationServices?.length\r\n this.props.onChange({ ...data, checkedNotificationServiceIDs: newChecked, allServicesChecked: allNewChecked })\r\n }\r\n break\r\n case \"checkedNotificationEventIDs\":\r\n if (id) {\r\n const { allEventsChecked } = this.props\r\n const checkedNotificationEventIDs = allEventsChecked\r\n ? this.state.notificationEvents?.filter((item: NotificationEvent) => !(!this.props.canViewOrderTrackingGrid && item.Title === \"MRO_RES\")).map(item => item.NotificationEventID) || []\r\n : this.props.checkedNotificationEventIDs\r\n const newChecked = checked ? [...checkedNotificationEventIDs, id] : checkedNotificationEventIDs.filter(itemID => itemID !== id)\r\n const allNewChecked = newChecked.length === this.state.notificationEvents?.length\r\n this.props.onChange({ ...data, checkedNotificationEventIDs: newChecked, allEventsChecked: allNewChecked })\r\n }\r\n break\r\n default:\r\n this.props.onChange({ ...data, [what]: checked })\r\n break\r\n }\r\n }\r\n\r\n render() {\r\n const { loading, notificationServices, notificationEvents } = this.state\r\n const { showNotifications, notifyEmail, notifyText, notifyWeb, checkedNotificationServiceIDs, checkedNotificationEventIDs, canViewOrderTrackingGrid } = this.props\r\n\r\n const allServicesChecked = this.props.allServicesChecked || (notificationServices?.length && notificationServices.length === checkedNotificationServiceIDs.length) === true\r\n const allEventsChecked = this.props.allEventsChecked || (notificationEvents?.length && notificationEvents.length === checkedNotificationEventIDs.length) === true\r\n return <>\r\n \r\n \r\n

\r\n Should we notify you about services and events?\r\n this.handleCheckChange(\"showNotifications\", checked)} />\r\n

\r\n Note: Your ability to receive a notification will depend on your access level. Contact your Administrator if you have questions about your access level.\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 { 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, { NotificationSettings } from \"./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\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 allServicesChecked: false,\r\n allEventsChecked: false,\r\n checkedNotificationServiceIDs: [],\r\n checkedNotificationEventIDs: [],\r\n notifyEmail: false,\r\n notifyText: false,\r\n notifyWeb: false\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 && this.saveSubscription.unsubscribe()\r\n this.userRevokeSubscription && this.userRevokeSubscription.unsubscribe()\r\n this.userPasswordResetSubscription && this.userPasswordResetSubscription.unsubscribe()\r\n this.loadUserSubscription && this.loadUserSubscription.unsubscribe()\r\n this.roleSecurityCheckSubscription && this.roleSecurityCheckSubscription.unsubscribe()\r\n this.timeZoneSubscription.unsubscribe()\r\n this.userRolesSubscription && this.userRolesSubscription.unsubscribe()\r\n this.existSubscription && this.existSubscription.unsubscribe()\r\n this.companiesSubscription && this.companiesSubscription.unsubscribe()\r\n this.locationsSubscription && this.locationsSubscription.unsubscribe()\r\n this.removeRoleSubscription && 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 const notificationServiceID = (info.NotificationServiceID as number[] || []).filter(item => !!item)\r\n const notificationEventID = (info.NotificationEventID as number[] || []).filter(item => !!item)\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 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 allServicesChecked: info.AllServices,\r\n allEventsChecked: info.AllEvents,\r\n checkedNotificationServiceIDs: notificationServiceID,\r\n checkedNotificationEventIDs: notificationEventID,\r\n notifyEmail: info.NotifyByEmail,\r\n notifyText: info.NotifyByPhone,\r\n notifyWeb: info.NotifyInBrowser\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, allServicesChecked, allEventsChecked, checkedNotificationServiceIDs, checkedNotificationEventIDs, notifyEmail, notifyText, notifyWeb } = 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 NotifyByEmail: showNotifications && notifyEmail,\r\n NotifyByPhone: showNotifications && notifyText,\r\n NotifyInBrowser: showNotifications && notifyWeb,\r\n IsAllEvents: showNotifications && userInfo?.UserAccessViewModel?.CanViewOrderTrackingGrid && allEventsChecked || false,\r\n IsAllServices: showNotifications ? allServicesChecked : false,\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 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 hideNotificationSection = true // STRY0097834 Hide all information below \"User Role\". Will be fixing/updating all of this in a future project. \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 {title}\r\n \r\n \r\n
\r\n {loading && }\r\n {!loading && formRows}\r\n {!hideNotificationSection && !emailExists && }\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 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 { Filter, Sort } from \"../GridRequest\"\r\nimport { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport OrphanedGridResponse from \"./Models/OrphanedGridResponse\"\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 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 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\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","import { useEffect, useMemo, useState } from \"react\"\r\n\r\nimport { Spinner } from \"react-bootstrap\"\r\nimport { toast } from \"react-toastify\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { distinctUntilChanged, finalize, switchMap } from \"rxjs/operators\"\r\n\r\nimport PendingDrugTestRow from \"./PendingDrugTestRow\"\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 FormatError from \"../../../formatters/FormatError\"\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 onSelectTest: (test: PendingDrugTest | undefined) => void\r\n}\r\n\r\nfunction PendingDrugTests(props: PendingDrugTestsProps) {\r\n const { donorId, importTest, selectedTest, onSelectTest } = 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 setLoadingTests(true)\r\n const subscription = page$\r\n .pipe(\r\n distinctUntilChanged(),\r\n switchMap((params) => GetPendingDrugTestsObservable(params).pipe(finalize(() => setLoadingTests(false))))\r\n )\r\n .subscribe(\r\n (data) => {\r\n const parsedRecords = data.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 setGridData({ ...data, Records: parsedRecords })\r\n },\r\n (error) => toast.error(FormatError(error))\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
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 {loadingTests && (\r\n \r\n \r\n \r\n )}\r\n {!loadingTests && gridData.Records.length === 0 && (\r\n \r\n \r\n \r\n )}\r\n {!loadingTests &&\r\n gridData.Records.map((test: PendingDrugTest) => (\r\n \r\n ))}\r\n \r\n
\r\n ReasonPoolIDRegulatedTypeCreated
\r\n \r\n
Not Tests Found
\r\n {!loadingTests && 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\nPendingDrugTests.defaultProps = {\r\n selectedTest: undefined,\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, 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 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 PendingDrugTests from \"../PendingDrugTests/PendingDrugTests\"\r\nimport PendingDrugTestsButtons from \"../PendingDrugTests/PendingDrugTestsButtons\"\r\nimport { DraggableModalDialog } from \"../../Randomization/GovPools/RandomSchedulingExclusionsModal\"\r\nimport DonorNotFoundError from \"../DonorNotFoundError/DonorNotFoundError\"\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 \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\nexport default NoMatchingRandomError\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 OrphanedRow from \"../../../api/OrphanedResults/Models/OrphanedRow\"\r\nimport PendingDrugTest from \"../../../api/OrphanedResults/Models/PendingDrugTest\"\r\nimport {\r\n NoMatchingCreateNewObservable,\r\n NoMatchingTestAcceptObservable,\r\n} from \"../../../api/OrphanedResults/ResultExceptionsProcess\"\r\nimport FormatError from \"../../../formatters/FormatError\"\r\nimport PendingDrugTests from \"../PendingDrugTests/PendingDrugTests\"\r\nimport PendingDrugTestsButtons from \"../PendingDrugTests/PendingDrugTestsButtons\"\r\nimport { DraggableModalDialog } from \"../../Randomization/GovPools/RandomSchedulingExclusionsModal\"\r\n\r\ninterface NoMatchingTestErrorProps {\r\n errorRow: OrphanedRow\r\n onClose: (withUpdate: boolean) => void\r\n}\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\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 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 \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.loadCompaniesSubscription = AccountLabResultsReportingGet(implementationId).subscribe(\r\n companies => {\r\n this.setState({ selectedPortal: data, companies: companies, loading: false })\r\n },\r\n error => this.handleAPIError(error, { loading: false })\r\n )\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 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 },\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 * 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 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\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 { 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 { toast } from \"react-toastify\"\r\nimport { APIError } from \"../api/ObservableFromFetch\"\r\nimport FormatError from \"../formatters/FormatError\"\r\n\r\nconst handleAPIError = (error: Error | APIError, action: () => void) => {\r\n action()\r\n error && toast.error(FormatError(error))\r\n}\r\nexport default handleAPIError\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 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 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":""}