{"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","components/Administration/OrderDefaults.tsx","assets/images/dot-img.png","components/OrderRequests/OrderServices/SelectService.tsx","api/LabService/TestToBePerformGet.ts","api/Administration/OrderDefaults.ts","api/Implementations/ImplementationsGet.ts","api/OrderRequests/OrderRequestsModel/SampleType.ts","components/OrderRequests/OrderServices/SelectSampleTestType.tsx","components/OrderRequests/OrderServices/SelectSpecimenCollection.tsx","components/OrderRequests/OrderServices/SelectObserved.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/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","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","regulatoryModes","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","selectedIds","selectedIndex","selectedRegulatoryMode","splice","ind","loadSelectionIntervals","createPanelsSubscription","availableLabPanels","selectedLabPanel","loadLabAccounts","selectedLabAccount","loadPrimaryIDTypes","selectedCalcType","handleLabPanelChange","handleRegulatoryModeChange","handleSelectionIntervalChange","calcTypeCode","handleDateChange","toISOString","parsePoolSize","handleSampleSizeChangeChange","what","validityField","numberValue","handleLabAccountChange","Panel","handleNoSelectionChange","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","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","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","personnelCheckEmptyData","idType","isPersonnelFound","checkMember","showAddPersonnelPanel","isRegionsLoading","regions","categories","idTypes","regionTypeahead","loadAllRegions","AutoFilterRegionsGet","loadCategories","savePoolMember","selectedRegion","Region","ConsortiumPoolCode","IsConsortiumPool","EmployeeCategory","searchString","poolCompanyData","onAdd","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","DefaultLookupCode","EmptyServiceData","serviceTypeCode","None","serviceCode","isMarketplace","testToPerform","testToPerformObj","labAccountObj","reqSpecimenCollection","observedCollection","regulatoryModeObj","category","categoryObj","selectedTests","selectedServices","selectedTestType","SelectService","isAllServicesDisabled","shouldResetDOT","canAddDOT","canAddNonDOT","TestToBePerformGetObservable","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","SelectSampleTestType","availableTests","UR","SLD","SelectSpecimenCollection","SelectObserved","SelectDrugTest","defaultService","categoriesLoading","testsLoading","filteredModes","dotTestCount","ndotTestCount","poctTestCount","flexTestCount","regulatoryMode$","service$","setInitialState","labAccountCompanyName","filterFields","defaultMode","def","filterTests","orderableServices","selectedService","isPoct","isFlex","filteredTests","NDOT","t","dotTestsCount","ndotTestsCount","poctTestsCount","flexTestsCount","setDefaultDrugSampleType","onChangeLab","onChangeTestType","isPOCT","req_specimen_collection","selectedTest","onChangeCategory","onChangeSampleTestsType","onServiceAdd","isObservedMandatory","onPanelClose","denyAddService","hasAvailableTests","showSelectSampleTestType","showSpecimenCollection","showObserved","showDOTRelatedControls","isDot","employeeCategoryID","filteredCategories","FAADefaults","defaultFAA","labAccountNumber","newLabAccount","newLabAccountsArray","regulatoryModeID","observedCheckedDisabled","getServicesComponents","dotImage","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","statesLoading","birthDateInput","isDonorInfoSuccess","lastSearch","populateSSODonorData","SSODonorData","handleIdTypeChange","DonorIDType","idReadOnly","DonorFirstName","DonorLastName","donorId","DonorDOB","daytimePhone","DonorPhone","DonorEmail","address","Line1","Address2","Line2","onDonorSearch","idTypeObject","displayState","updateState","stateCode","handleBirthDateChange","handleChange","require","identifier","Identifier","IdentifierType","Rank","getDonorInfoSuccess","getDonorError","firstNameReadOnly","middleInitialReadOnly","lastNameReadOnly","homePhoneReadOnly","workPhoneReadOnly","stateReadOnly","genderReadOnly","middleInitial","eveningPhone","accessCode","fetchedDate","validDate","noValueOrEmpty","MiddleInitial","eveningPhoneField","daytimePhoneField","DriverLICStateOfIssue","sendDonorInformation","info","validateDonorIdFormat","isFormValid","daytimePhoneRequired","isBirthDateRequired","showGenderField","onDonorChange","DisplayState","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","priceTiers","pt","PriceTier","DisplayName","minRadius","clinicSearchOptions","SearchRadius1","maxRadius","SearchRadius2","getFilters","radius","onFilterChanged","clearFiltersIcon","PRICE_TIER_IMAGES","SiteCard","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","onConfirmServices","SavedOrderData","CanViewOrderFinish","goBack","handleAllowDonorClinicSelect","lastValue","allowDonorClinicSelect","donor_email","getIdTypes","regulatoryModeFromServices","onGoToStep1","onGoToStep2","saveOrder","DayTimePhone","EveningPhone","Mobile","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","stepStatusClass","Sequence","GridStatusInfo","Stages","stages","scheduleStatusId","ScheduleStatusID","testEventStatus","TestEventStatus","testDetailClinicalId","showEventStatus","IsStatusVisible","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","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","isEmployerIDValid","isDriverIDValid","isAlternateIDValid","isHomePhoneValid","Province","loadLocationsWithRegion","isNotEmpty","handlePhoneChange","ssn","ConnectedEmploymentDetails","AddIndividualModal","addPersonnel","phoneString","primaryIDKeys","Supervisor1ID","selectedSupervisor1","Supervisor2ID","selectedSupervisor2","PreEmploymentTest","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","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","mode","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","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","OrphanedAccept","OrphanedDelete","OrphanedResults","selectedList","recordCount","actionsSubscription","handleAllTestDetailCheck","handleTestDetailCheck","clinicalId","testDetailSelected","handleDelete","handleAccept","renderColumns","TestRAImageID","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","ModalBody","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.46cd5a21.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 })\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 //const selectedIds = selectedRegModes.map(({RegulatoryModeID}) => RegulatoryModeID)\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 \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={regulatoryModeId === 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\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 selectedRegulatoryMode?: RegulatoryMode\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\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 const selectedIds = dt?.RegulatoryModes || []\r\n this.regulatoryModesSubscription && this.regulatoryModesSubscription.unsubscribe()\r\n this.regulatoryModesSubscription = LabServiceRegulatoryModesGetObservable(true).subscribe(\r\n (data: RegulatoryMode[]) =>\r\n this.setState(prevState => {\r\n const selectedRegulatoryModes = []\r\n let availableToSelectRegModes = data\r\n let selectedIndex = -1\r\n if (prevState.editData) {\r\n selectedIndex = data.findIndex(item => item.RegulatoryModeID === prevState.editData?.RegulatoryModeID)\r\n } else {\r\n selectedIndex = data.findIndex(item => item.RegulatoryModeID === dt?.RegulatoryModeID)\r\n }\r\n const selectedRegulatoryMode = (selectedIndex >= 0) ? data[selectedIndex] : undefined\r\n if (selectedRegulatoryMode) {\r\n selectedRegulatoryModes.push(selectedRegulatoryMode)\r\n availableToSelectRegModes.splice(selectedIndex, 1)\r\n }\r\n for (let i = 0; i < selectedIds.length; i++) {\r\n let ind = data.findIndex(item => item.RegulatoryModeID === selectedIds[i])\r\n if (ind >= 0) {\r\n selectedRegulatoryModes.push(data[ind])\r\n availableToSelectRegModes.splice(selectedIndex, 1)\r\n }\r\n }\r\n return {\r\n regulatoryModes: data,\r\n regulatoryModesLoading: false,\r\n selectedRegulatoryMode: data.find(item => item.RegulatoryModeID === prevState.editData?.RegulatoryModeID),\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 this.setState({\r\n ...this.positiveValidity,\r\n editing: false,\r\n editData: undefined,\r\n selectedRegulatoryMode: undefined,\r\n selectedCalcType: undefined,\r\n selectedLabAccount: undefined,\r\n selectedLabPanel: undefined\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 selectedRegulatoryMode: prevState.regulatoryModes ? prevState.regulatoryModes.find(item => item.RegulatoryModeID === prevState.data?.RegulatoryModeID) : undefined,\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 selectedRegulatoryMode: undefined,\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 selectedRegulatoryMode: items[0],\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 } = 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\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}\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}\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}\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 }\r\n positiveValidity: AddPoolMemberModalValidity = { isCompanyValid: true, isLastNameValid: true, isFirstNameValid: 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 }\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 ]\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 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 }\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\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 }\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 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\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\nclass 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}\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}\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","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","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 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 { 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","export enum SampleType {\r\n UR = \"UR\",\r\n SD = \"SD\",\r\n SLD = \"SLD\",\r\n}\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 { 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 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 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 { DefaultLookupCode } from \"../../Administration/OrderDefaults\"\r\nimport SelectSampleTestType from \"./SelectSampleTestType\"\r\nimport { SampleType } from \"../../../api/OrderRequests/OrderRequestsModel/SampleType\"\r\nimport SelectSpecimenCollection from \"./SelectSpecimenCollection\"\r\nimport SelectObserved from \"./SelectObserved\"\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 regulatoryModeID?: number\r\n employeeCategoryID?: number\r\n isObservedMandatory: boolean\r\n}\r\n\r\ninterface SelectDrugTestState extends SelectServiceState {\r\n regulatoryModesLoading: boolean\r\n categoriesLoading: boolean\r\n labAccountsLoading: boolean\r\n testsLoading: boolean\r\n regulatoryModes: RegulatoryMode[]\r\n filteredModes: RegulatoryMode[]\r\n categories: EmployeeCategory[]\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 regulatoryModesLoading: false,\r\n categoriesLoading: false,\r\n labAccountsLoading: false,\r\n testsLoading: false,\r\n regulatoryModes: [],\r\n filteredModes: [],\r\n categories: [],\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 }\r\n\r\n subscriptions = new Subscription()\r\n regulatoryMode$ = new Subject()\r\n company$ = new BehaviorSubject(0)\r\n labAccount$ = new Subject()\r\n service$ = new Subject()\r\n\r\n componentDidMount() {\r\n this.setState({\r\n isDOT: this.props.isDot,\r\n reqSpecimenCollection: this.props.isDot ? \"split\" : \"single\",\r\n })\r\n\r\n this.subscriptions.add(\r\n this.regulatoryMode$.subscribe((selected) =>\r\n this.setState({\r\n regulatoryMode: `${selected?.RegulatoryModeID}`,\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 === this.props.employeeCategoryID)\r\n if (this.state.regulatoryMode == \"3\") {\r\n let filteredCategories: EmployeeCategory[] = []\r\n let FAADefaults = this.props.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 category: defaultFAA?.FieldName,\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 category: categoryObj?.Code || \"\",\r\n categoryObj: categoryObj,\r\n })\r\n }\r\n })\r\n )\r\n\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.setState({ regulatoryModesLoading: true })\r\n this.subscriptions.add(\r\n LabServiceRegulatoryModesGetObservable(true).subscribe(\r\n (result: RegulatoryMode[]) => {\r\n const regulatoryModeObj = result.find((item) => item.RegulatoryModeID === this.props.regulatoryModeID)\r\n this.setState({\r\n regulatoryModes: result,\r\n regulatoryModesLoading: false,\r\n regulatoryModeObj: regulatoryModeObj,\r\n })\r\n this.regulatoryMode$.next(regulatoryModeObj)\r\n },\r\n () => this.setState({ regulatoryModesLoading: false })\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 if (this.props.defaults !== prevProps.defaults && !this.props.regulatoryModeID) {\r\n this.filterFields()\r\n }\r\n }\r\n\r\n setInitialState = () => this.setState({ ...this.defaultService, labAccountCompanyName: undefined })\r\n\r\n filterFields = () => {\r\n let modeDefaults = this.props.defaults?.filter((item) => item.LookupCode === DefaultLookupCode.RegMode)\r\n if (modeDefaults && modeDefaults.length === 0)\r\n modeDefaults = this.props.defaults?.filter(\r\n (item) => item.LookupCode === DefaultLookupCode.RegMode && !item.AccountID\r\n )\r\n if (modeDefaults && modeDefaults.length > 0) {\r\n let filteredModes: RegulatoryMode[] = []\r\n const defaultMode = modeDefaults.find((item) => !!item.Show && !!item.IsDefault)\r\n this.state.regulatoryModes.forEach((item, index) => {\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: filteredModes })\r\n if (defaultMode) this.regulatoryMode$.next(filteredModes.find((item) => item.Name === defaultMode?.FieldName))\r\n } else {\r\n this.setState({ filteredModes: [...this.state.regulatoryModes] })\r\n }\r\n }\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 if (isDOT) this.filterFields()\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 onChangeCategory = (selected: EmployeeCategory[]) => {\r\n const item = selected.length > 0 ? selected[0] : undefined\r\n this.setState({ category: item?.Code || \"\", categoryObj: item })\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 // DOT is not set\r\n || (\r\n !!data.regulatoryModeObj // Regulatory mode is selected\r\n && (\r\n !!data.categoryObj // Category is selected\r\n || (this.state.categories.length === 0 && !this.state.categoriesLoading) // No categories for regulatory mode\r\n )))\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 filteredModes,\r\n regulatoryModeObj,\r\n regulatoryModesLoading,\r\n categories,\r\n categoryObj,\r\n categoriesLoading,\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() && (\r\n \r\n \r\n \r\n \r\n REGULATORY MODE\r\n \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 disabled={regulatoryModesLoading || !!this.props.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 {this.showDOTRelatedControls() && (\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={this.onChangeCategory}\r\n isInvalid={!categoryObj}\r\n options={this.state.categories}\r\n disabled={categoriesLoading}\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 {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 ServiceType, { ServiceTypeCode } from \"../../../api/Administration/Model/ServiceType\"\r\nimport Service, { ServiceCode, IsServiceActive, ServicesByServiceSampleType, ServiceByCode } from \"../../../api/Administration/Model/Service\"\r\nimport { EventType } from '../../../config/Constants'\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 }\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 \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 ServiceType, { ServiceTypeCode } from \"../../../api/Administration/Model/ServiceType\"\r\nimport Service, { ServiceCode, IsServiceActive, ServiceByCode } from \"../../../api/Administration/Model/Service\"\r\nimport AccountService from \"../../../api/Administration/Model/AccountService\"\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\";\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 \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 OrderDefaults from '../Administration/OrderDefaults'\r\nimport { OrderDefault } from '../../api/Administration/OrderDefaults'\r\n\r\ninterface ServicesSelectionProps {\r\n company?: number\r\n location?: number\r\n reason?: TestReasonType\r\n services: ServiceDataModel[]\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\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 regulatoryModeID: number\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[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[]) => Object.entries(obj1).toString() === Object.entries(obj2).toString()\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.regulatoryModeID\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[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.regulatoryModeID }).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: !!this.state.stateCode,\r\n genderReadOnly: !!data.Gender,\r\n\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?.DisplayState\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 } = 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\r\n if (this.props.priceTiers) {\r\n this.props.priceTiers.forEach(pt => {\r\n const existsTier = this.props.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) {\r\n if (!service) {\r\n return <>\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\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 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 }\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 this.setState({\r\n showDrugWarning: showDrugWarning,\r\n nextServiceID: newServiceID,\r\n services: newServices,\r\n isServicesConfirmed: false,\r\n submittedOrder: false\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 this.setState({ services: services, isServicesConfirmed: false, submittedOrder: false })\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\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 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\nconst stepStatusClass = (stage: Stage) => {\r\n let results = [\"px-1 step\"]\r\n if ((stage.Sequence !== 1) && (stage.Status === Status.Completed || stage.Status === Status.InProcess || stage.Status === Status.Alert)) {\r\n results.push(\"step-line\")\r\n }\r\n return results.join(' ')\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\r\n return (\r\n <>\r\n \r\n {stages.map((stage: Stage, key: number) => {\r\n if (stage.IsStatusVisible) {\r\n return (\r\n \r\n \r\n {complete && stage.Status !== 1 ? 'X' : stage.Sequence}\r\n {showEventStatus? testEventStatus : stage.StatusDetail.Description}\r\n {stage.StatusDetail.Detail}\r\n \r\n \r\n )\r\n } else {\r\n return {stage.Name}\r\n }\r\n })}\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 = 20\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\">\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 })\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 {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 {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\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}\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 states: State[]\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 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 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 }\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\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 this.setState({ isCompaniesLoading: false })\r\n this.handleCompanyChange(data)\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\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 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 }\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 this.setState({\r\n selectedCompany: companies[0],\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\r\n this.loadAllRegions(companies[0])\r\n this.loadAllLocations(companies[0], 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 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 \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
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: () => 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 }\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()\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 = data.map((row) => ({\r\n TestEventID: row.TestEventID,\r\n MockTestDetailID: row.TestDetailID,\r\n }))\r\n\r\n const params: string = JSON.stringify(tests)\r\n return ObservableFromFetch(\"WorkforceRandomTest/UpdateStatusToPending\", params, \"put\")\r\n}\r\n","import React from \"react\"\r\nimport { Container, Row, Col, Table, Button, Spinner } from \"react-bootstrap\"\r\nimport { AppPageWrapper } from \"../NavMenu/AppPageWrapper\"\r\nimport { Subscription, BehaviorSubject, of, concat } from \"rxjs\"\r\nimport { distinctUntilChanged, switchMap, map, catchError } from \"rxjs/operators\"\r\nimport { toast } from \"react-toastify\"\r\nimport { FaSync } from \"react-icons/fa\"\r\nimport FileSaver from \"file-saver\"\r\nimport SearchBar from \"../SearchBar\"\r\nimport SearchField from \"../../api/SearchField\"\r\nimport ColumnsCustomizeModal from \"../ColumnsCustomizeModal/ColumnsCustomizeModal\"\r\nimport { CustomizableFilterColumn } from \"../ColumnsCustomizeModal/CustomizableColumn\"\r\nimport ColumnHeaderFilter from \"../ColumnHeaderFilter\"\r\nimport TablePagination from \"../TablePagination\"\r\nimport FormatTimestampFileName from \"../../formatters/FormatTimestampFileName\"\r\nimport downloadCsv from \"../../assets/images/download-csv.png\"\r\nimport { SelectionInboxGridObservable, SelectionInboxGridCsv } from \"../../api/Randoms/SelectionInboxGrid\"\r\nimport SelectionInboxGridRow from \"../../api/Randoms/SelectionInboxModel/SelectionInboxGridRow\"\r\nimport { ColumnFilters } from \"../../api/Randoms/SelectionInboxModel/ColumnFilters\"\r\nimport { SearchFieldsGet } from \"../../api/OrderResults/SearchFieldsGet\"\r\nimport FormatSSN from \"../../formatters/FormatSSN\"\r\nimport { Link } from \"react-router-dom\"\r\nimport FormatDate from \"../../formatters/FormatDate\"\r\nimport EmployeeDetailsModal from \"../OrderResults/EmployeeDetailsModal\"\r\nimport { SelectionInboxGridResponse } from \"../../api/Randoms/SelectionInboxModel/SelectionInboxGridResponse\"\r\nimport { Filter, Sort } from \"../../api/GridRequest\"\r\nimport { StorageKey } from \"../../config/Constants\"\r\nimport { loadCustomized, saveCustomized } from \"../ColumnsCustomizeModal/ColumnsCustomizeModal\"\r\nimport ExcuseEventModal from \"./ExcuseEventModal\"\r\nimport UnexcuseEventModal from \"./UnexcuseEventModal\"\r\nimport UpdateStatusToPending from \"../../api/Randoms/SelectionInboxPending\"\r\nimport { isPortalAdmin } from \"../../authentication/isAdminRole\"\r\nimport { connect } from \"react-redux\"\r\nimport { AppState } from \"../../AppState\"\r\n\r\ntype Column = CustomizableFilterColumn\r\n\r\ninterface SelectionInboxProps {\r\n isPortalAdmin: boolean\r\n}\r\n\r\ninterface SelectionInboxState {\r\n loading: boolean\r\n data?: SelectionInboxGridResponse\r\n columns: Column[]\r\n loadingCsv?: boolean\r\n customizeModal: boolean\r\n searchFields?: SearchField[]\r\n details?: SelectionInboxGridRow\r\n excuseRow?: SelectionInboxGridRow\r\n unexcuseRow?: SelectionInboxGridRow\r\n employeeDetails: boolean\r\n}\r\n\r\nconst defaultColumns: Column[] = [\r\n { name: \"Status\", filter: \"Status\", label: \"STATUS\", visible: true, customize: true, required: true },\r\n { name: \"DonorID\", filter: \"IDNumber\", label: \"PERSONNEL ID\", visible: true, customize: true },\r\n { name: \"DonorName\", filter: \"Name\", label: \"NAME\", visible: true, customize: true },\r\n { name: \"Service\", filter: \"Service\", label: \"SERVICE\", visible: true, customize: true },\r\n { name: \"PoolName\", filter: \"Pool\", label: \"POOL\", visible: true, customize: true },\r\n { name: \"Selection\", filter: \"Selection\", label: \"SELECTION\", visible: true, customize: true },\r\n { name: \"CompanyName\", filter: \"Company\", label: \"COMPANY\", visible: true, customize: true },\r\n { name: \"LocationName\", filter: \"Location\", label: \"LOCATION\", visible: false, customize: true },\r\n { name: \"Regulated\", filter: \"Regulated\", label: \"REGULATED\", visible: true, customize: true },\r\n { name: \"EventDate\", filter: \"EventDate\", label: \"CREATED\", visible: true, customize: true },\r\n { name: \"DateNotified\", filter: \"NotificationDate\", label: \"NOTIFIED\", visible: true, customize: true },\r\n { name: \"FormFoxTestAN\", filter: \"AuthorizationID\", label: \"AUTHORIZATION ID\", visible: true, customize: true },\r\n { name: \"SiteName\", filter: \"Site\", label: \"SITE\", visible: true, customize: true },\r\n { name: \"RegulatoryMode\", filter: \"RegulatoryMode\", label: \"REGULATORY MODE\", visible: true, customize: true },\r\n { name: \"Occupation\", filter: \"Occupation\", label: \"OCCUPATION\", visible: false, customize: true },\r\n { name: \"LastName\", filter: \"LastName\", label: \"LAST NAME\", visible: false, customize: true },\r\n { name: \"MiddleInitial\", filter: \"MiddleInitial\", label: \"MIDDLE INITIAL\", visible: false, customize: true },\r\n { name: \"FirstName\", filter: \"FirstName\", label: \"FIRST NAME\", visible: false, customize: true },\r\n { name: \"Gender\", filter: \"Gender\", label: \"GENDER\", visible: false, customize: true },\r\n { name: \"DateOfBirth\", filter: \"DateOfBirth\", label: \"DOB\", visible: false, customize: true },\r\n { name: \"PrimaryIDType\", filter: \"PrimaryIDType\", label: \"PRIMARY ID TYPE\", visible: false, customize: true },\r\n { name: \"SSN\", filter: \"SSN\", label: \"SSN\", visible: false, customize: true },\r\n { name: \"DriverID\", filter: \"DriverID\", label: \"DRIVER ID\", visible: false, customize: true },\r\n { name: \"EmployerID\", filter: \"EmployerID\", label: \"EMPLOYER ID\", visible: false, customize: true },\r\n { name: \"AlternateID\", filter: \"AlternateID\", label: \"ALTERNATE ID\", visible: false, customize: true },\r\n { name: \"CRMUniqueID\", filter: \"CRMUniqueID\", label: \"CRM UNIQUE ID\", visible: false, customize: true },\r\n { name: \"HireDate\", filter: \"HireDate\", label: \"HIRE DATE\", visible: false, customize: true },\r\n { name: \"TerminationDate\", filter: \"TerminationDate\", label: \"TERMINATION DATE\", visible: false, customize: true },\r\n { name: \"CellPhone\", filter: \"CellPhone\", label: \"CELL PHONE\", visible: false, customize: true },\r\n { name: \"HomePhone\", filter: \"HomePhone\", label: \"HOME PHONE\", visible: false, customize: true },\r\n { name: \"WorkPhone\", filter: \"WorkPhone\", label: \"WORK PHONE\", visible: false, customize: true },\r\n { name: \"Email\", filter: \"Email\", label: \"EMAIL\", visible: false, customize: true },\r\n { name: \"Inactive\", filter: \"Inactive\", label: \"INACTIVE\", visible: false, customize: true },\r\n { name: \"RetireDate\", filter: \"RetireDate\", label: \"RETIRE DATE\", visible: false, customize: true },\r\n { name: \"Supervisor1\", filter: \"Supervisor1\", label: \"SUPERVISOR 1\", visible: false, customize: true },\r\n { name: \"Supervisor2\", filter: \"Supervisor2\", label: \"SUPERVISOR 2\", visible: false, customize: true },\r\n { name: \"Address\", filter: \"Address\", label: \"ADDRESS\", visible: false, customize: true },\r\n { name: \"Province\", filter: \"Province\", label: \"PROVINCE\", visible: false, customize: true },\r\n { name: \"Zip\", filter: \"Zip\", label: \"ZIP\", visible: false, customize: true },\r\n { name: \"Country\", filter: \"Country\", label: \"COUNTRY\", visible: false, customize: true },\r\n { name: \"StateCode\", filter: \"StateCode\", label: \"STATE CODE\", visible: false, customize: true },\r\n { name: \"StateName\", filter: \"StateName\", label: \"STATE NAME\", visible: false, customize: true },\r\n { name: \"Manager\", filter: \"Manager\", label: \"MANAGER\", visible: false, customize: true },\r\n]\r\n\r\ninterface SelectionInboxSearchParams {\r\n pageNumber: number\r\n sort: Sort\r\n filters: Filter[]\r\n search: { field: string, text: string }\r\n}\r\n\r\nconst PageSize = 20\r\nexport class SelectionInbox extends React.PureComponent {\r\n searchFieldsSubscription?: Subscription\r\n \r\n state: SelectionInboxState = {\r\n loading: false,\r\n data: undefined,\r\n columns: loadCustomized(StorageKey.SelectionInboxGridColumns, defaultColumns) as Column[],\r\n customizeModal: false,\r\n employeeDetails: false\r\n }\r\n\r\n page$ = new BehaviorSubject({\r\n pageNumber: 1,\r\n sort: { column: \"\", order: \"\" },\r\n filters: [],\r\n search: { field: \"\", text: \"\" }\r\n })\r\n pageSubscription?: Subscription\r\n csvSubscription?: Subscription\r\n\r\n componentDidMount() {\r\n this.pageSubscription = this.page$.pipe(\r\n distinctUntilChanged(),\r\n switchMap(params => concat(\r\n of({ loading: true }),\r\n SelectionInboxGridObservable(params.pageNumber, PageSize, params.sort, params.filters, params.search).pipe(\r\n map((result: SelectionInboxGridResponse) => ({ data: result, loading: false })),\r\n catchError((error) => of({ loading: false }))\r\n )\r\n ))\r\n ).subscribe(\r\n (newState: { loading: boolean, data?: SelectionInboxGridResponse }) => {\r\n if (newState.data) {\r\n // Loads prev page in case of current non-first page is empty\r\n if ((!newState.data.Records || newState.data.Records.length === 0) && this.page$.value.pageNumber > 1) {\r\n this.page$.next({ ...this.page$.value, pageNumber: this.page$.value.pageNumber - 1 })\r\n } else {\r\n if (newState.data.Regulated?.length) {\r\n newState.data.Regulated = newState.data.Regulated.map(regulated => regulated ? \"True\" : \"False\")\r\n }\r\n\r\n if (this.props.isPortalAdmin && newState.data.Manager?.length) {\r\n newState.data.Manager = newState.data.Manager.map(manager => manager ? manager = \"TRUE\" : manager = \"FALSE\")\r\n newState.data.Records = this.mapManager(newState.data.Records)\r\n }\r\n else {\r\n this.setState({columns: this.state.columns.filter( x => x.name != \"Manager\")})\r\n }\r\n\r\n this.setState({ loading: newState.loading, data: newState.data })\r\n \r\n }\r\n } else {\r\n this.setState({ loading: newState.loading })\r\n }\r\n\r\n },\r\n (error: string) => {\r\n this.setState({ loading: false })\r\n toast.error(error)\r\n }\r\n )\r\n\r\n this.searchFieldsSubscription = SearchFieldsGet().subscribe(\r\n (data: SearchField[]) => this.setState({ searchFields: data }),\r\n error => toast.error(error)\r\n )\r\n }\r\n\r\n mapManager = (records: SelectionInboxGridRow[][]): SelectionInboxGridRow[][] => {\r\n return records.map((r) => {\r\n return r.map((element) => {\r\n element.Manager = (element.Manager || element.Manager == \"TRUE\") ? \"TRUE\" : \"FALSE\"\r\n return element\r\n })\r\n })\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageSubscription && this.pageSubscription.unsubscribe()\r\n this.csvSubscription && this.csvSubscription.unsubscribe()\r\n this.searchFieldsSubscription && this.searchFieldsSubscription.unsubscribe()\r\n this.page$.unsubscribe()\r\n }\r\n\r\n pageChanged = (pageNumber: number) => {\r\n this.page$.next({ ...this.page$.value, pageNumber: pageNumber })\r\n }\r\n\r\n sortGrid(column: string, order?: string) {\r\n this.page$.next({ ...this.page$.value, sort: { column: column, order: order || \"\" } })\r\n }\r\n\r\n filterGrid(column: string, items: string[]) {\r\n const filters = [...this.page$.value.filters]\r\n const filter = { column: column, values: items }\r\n let index = filters.findIndex(item => item.column === filter.column)\r\n if (index >= 0) {\r\n filters[index] = filter\r\n } else {\r\n filters.push(filter)\r\n }\r\n\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, filters: filters })\r\n }\r\n\r\n clearFilters() {\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, filters: [] })\r\n }\r\n\r\n onSearch = (field: string, text: string) => {\r\n this.page$.next({ ...this.page$.value, pageNumber: 1, search: { field: field, text: text } })\r\n }\r\n\r\n onExportClick = () => {\r\n this.setState({ loadingCsv: true })\r\n const value = this.page$.value\r\n this.csvSubscription = SelectionInboxGridCsv(value.pageNumber, 0, value.sort, value.filters, value.search).subscribe(\r\n result => this.export(result),\r\n error => {\r\n this.setState({ loadingCsv: false })\r\n toast.error(error)\r\n },\r\n (() => this.setState({ loadingCsv: false }))\r\n )\r\n }\r\n\r\n export(csv: string) {\r\n const csvData = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\r\n FileSaver.saveAs(csvData, FormatTimestampFileName(\"Selection_Inbox\", \"csv\", new Date()), true)\r\n toast.success(\"CSV file downloaded successfully.\")\r\n }\r\n\r\n print(base64pdf: string) {\r\n const pdfWindow = window.open(\"\")\r\n if (pdfWindow) {\r\n pdfWindow.document.write(\"\")\r\n }\r\n }\r\n\r\n handleExcuseModalClose = (success: boolean) => {\r\n this.setState({ excuseRow: undefined })\r\n if (success) {\r\n this.refreshGrid()\r\n }\r\n }\r\n\r\n handleUnexcuseModalClose = (success: boolean) => {\r\n this.setState({ unexcuseRow: undefined })\r\n if (success) {\r\n this.page$.next({ ...this.page$.value })\r\n }\r\n }\r\n\r\n isCanExcuse = (row: SelectionInboxGridRow)=> {\r\n return row.Status.startsWith(\"PENDING\")\r\n }\r\n\r\n isCanUnexcuse = (row: SelectionInboxGridRow)=> {\r\n return row.Status.startsWith(\"EXCUSED\")\r\n }\r\n\r\n visibleColumns = () => this.state.columns.filter(col => col.visible)\r\n\r\n statusButton = (row: SelectionInboxGridRow, group: SelectionInboxGridRow[]) => {\r\n switch(row.Status) {\r\n case \"ORDERED\":\r\n case \"ORDERED ALT\":{\r\n return \r\n }\r\n case \"EXCUSED\":{\r\n return \r\n }\r\n default:{\r\n return {row.Status}\r\n }\r\n }\r\n }\r\n\r\n setPending = (row: SelectionInboxGridRow, group: SelectionInboxGridRow[]) => {\r\n if ([\"ORDERED\", \"ORDERED ALT\"].includes(row.Status))\r\n return this.updateToPending(group)}>\r\n [Set to PENDING]\r\n \r\n else\r\n return \"\"\r\n }\r\n\r\n updateToPending = (group: SelectionInboxGridRow[]) => {\r\n UpdateStatusToPending(group).subscribe(\r\n result => this.refreshGrid(),\r\n error => toast.error(error)\r\n )\r\n }\r\n\r\n createdDateButton = (row: SelectionInboxGridRow) => {\r\n if (this.isCanExcuse(row)) {\r\n return \r\n }\r\n else if (this.isCanUnexcuse(row)) {\r\n return \r\n }\r\n else {\r\n return FormatDate(row[\"EventDate\"])\r\n }\r\n }\r\n\r\n renderCell = (row: SelectionInboxGridRow, colName: keyof SelectionInboxGridRow, key: number, isFirstRow: boolean, isLastRow: boolean, group: SelectionInboxGridRow[]) => {\r\n switch (colName) {\r\n case \"DonorID\":\r\n case \"DonorName\":\r\n return {isFirstRow && row[colName]}\r\n case \"Status\":\r\n return \r\n {isFirstRow && this.statusButton(row, group)}\r\n {isFirstRow && this.setPending(row, group)}\r\n \r\n case \"EventDate\":\r\n return {this.createdDateButton(row)}\r\n case \"DateNotified\":\r\n return {FormatDate(row[colName])}\r\n default:\r\n return {row[colName]}\r\n }\r\n }\r\n\r\n headerColumns = () => this.visibleColumns().map((col: Column, i) => {\r\n const sort = this.page$.value.sort\r\n return (\r\n \r\n {this.state.data && col.filter && col.filter in this.state.data && item.column === col.filter)?.values || []}\r\n sort={sort.column === col.name ? sort.order === \"asc\" ? \"asc\" : \"desc\" : undefined}\r\n items={this.state.data[col.filter as keyof ColumnFilters]?.filter(item => !!item) || []}\r\n onSort={(order?: string) => this.sortGrid(col.name, order)}\r\n onFilter={(items: string[]) => col.filter && this.filterGrid(col.filter, items)}\r\n />}\r\n {(!this.state.data || !col.filter) && (col.label || col.name)}\r\n \r\n )\r\n })\r\n\r\n formatSearchString = (ID: string, value: string): string => {\r\n return ID === \"SSN\" ? FormatSSN(value) : value\r\n }\r\n \r\n refreshGrid = () => this.page$.next({ ...this.page$.value })\r\n\r\n render() {\r\n const emptyRow = NO DATA FOUND\r\n const groupedRows = (data: SelectionInboxGridResponse) => data.Records.map((rows: SelectionInboxGridRow[]) => dataRows(rows))\r\n const dataRows = (rows: SelectionInboxGridRow[]) => rows.map((row: SelectionInboxGridRow, i: number) => {dataColumns(row, i === 0, i === rows.length - 1, rows)})\r\n const dataColumns = (row: SelectionInboxGridRow, isFirstRow: boolean, isLastRow: boolean, group: SelectionInboxGridRow[]) => this.visibleColumns().map((col, i) => this.renderCell(row, col.name as keyof SelectionInboxGridRow, i, isFirstRow, isLastRow, group))\r\n\r\n return <>\r\n \r\n {this.state.employeeDetails && this.state.details && this.setState({ employeeDetails: false }, () => updated && this.refreshGrid())} />}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n x.name != \"Manager\")}\r\n storeKey={StorageKey.SelectionInboxGridColumns}\r\n onClose={() => this.setState({ customizeModal: false })}\r\n onSave={columns => this.setState({ columns: columns as Column[], customizeModal: false })} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.headerColumns()}\r\n \r\n \r\n \r\n {\r\n this.state.loading ?\r\n :\r\n this.state.data?.Records && this.state.data.Records.length > 0 ? groupedRows(this.state.data) : emptyRow\r\n }\r\n \r\n
\r\n {this.state.data && !this.state.loading &&\r\n Total records: {this.state.data.Total}}\r\n {this.state.data && !this.state.loading &&\r\n }\r\n \r\n
\r\n
\r\n
\r\n {!!this.state.excuseRow && }\r\n {!!this.state.unexcuseRow && }\r\n \r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: AppState): SelectionInboxProps {\r\n return {\r\n isPortalAdmin: isPortalAdmin(state)\r\n }\r\n}\r\nconst ConnectedSelectionInbox = connect(mapStateToProps)(SelectionInbox)\r\nexport default ConnectedSelectionInbox\r\n","import { ObservableFromFetch } from \"../ObservableFromFetch\"\r\nimport UserInformation from \"./Model/UserInformation\"\r\n\r\nexport function UserInformationObservable(userName: string, IsOrderSecurityOverride: boolean, exactMatch: boolean = true) {\r\n const requestBody: string = JSON.stringify({ UserName: userName })\r\n return ObservableFromFetch(\"FFOrderUserFileMaintenance/GetUserInformation\", requestBody)\r\n}\r\n\r\nexport function UserNotificationInformationObservable(userName: string, IsOrderSecurityOverride: boolean, exactMatch: boolean = true) {\r\n const requestBody: string = JSON.stringify({ UserName: userName })\r\n return ObservableFromFetch(\"FFOrderUserFileMaintenance/GetUserNotificationInformation\", requestBody)\r\n}\r\n\r\nexport function ActiveUserInformationGetObservable(userName: string, isActivateUser: boolean = false) {\r\n const requestBody: string = JSON.stringify({ UserName: userName, IsActivateUser: isActivateUser })\r\n return ObservableFromFetch(\"FFOrderUserFileMaintenance/GetActiveUserInformation\", requestBody)\r\n}","import { 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: false,\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] }),\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 ) => this.handleInputChange(e)} />\r\n \r\n \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 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 },\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: 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 * as React from \"react\"\r\nimport { Container, Row, Col, Table, Spinner, Form, 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, OrphanedAccept, OrphanedDelete, OrphanedRecordsCount } 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 Image from \"../../assets/images/CCF.png\"\r\nimport CompanyInput from \"../FormattedInputs/CompanyInput\"\r\nimport Checkbox from \"../Checkbox\"\r\nimport { Filter, Sort } from \"../../api/GridRequest\"\r\nimport { getOrphanedResultsCount, setOrphanedResultsCount} from \"../../storage/LogInPortals\"\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}\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 | \"Company\" | \"Image\" | \"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: \"Company\", label: \"Company\" },\r\n { name: \"Reason\", label: \"Reason\" },\r\n { name: \"TestType\", label: \"Type\" },\r\n { name: \"ReferenceID\", label: \"Reference\" },\r\n { name: \"LabAccountNumber\", label: \"Lab Account\" },\r\n { name: \"DateCollected\", label: \"Collected\" },\r\n { name: \"Image\", label: \"Image\" }\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 }\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) => {\r\n const value = e.target.value\r\n let tests = [...this.state.selectedList]\r\n\r\n const index = tests.findIndex(test => 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: value, TestDetailClinicalID: 0 })\r\n }\r\n this.setState({ selectedList: tests })\r\n }\r\n\r\n handleCompanyChange = (id: number, selected?: number, clinicalId?: number) => {\r\n if (this.testDetailSelected(id)) {\r\n let tests = [...this.state.selectedList]\r\n\r\n const index = tests.findIndex(test => test.TestDetailID === id)\r\n tests[index] = { TestDetailID: id, AccountID: selected, TestDetailClinicalID: clinicalId || 0}\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 handleAccept = () => {\r\n this.actionsSubscription = OrphanedAccept(this.state.selectedList).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 hideModal = () => {\r\n this.setState({ confirmModal: false })\r\n }\r\n\r\n confirmDelete = () => {\r\n this.hideModal()\r\n this.actionsSubscription = OrphanedDelete(this.state.selectedList.map(item => item.TestDetailID) as string[]).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: number) => {\r\n return this.state.selectedList.findIndex(test => 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 \r\n \r\n case \"Company\":\r\n return \r\n this.handleCompanyChange(row.TestDetailID, selected[0]?.AccountID) }\r\n disabled={ !this.testDetailSelected(row.TestDetailID) } />\r\n \r\n case \"Image\":\r\n return \r\n {row.TestRAImageID > 0 && \"\"}\r\n \r\n case \"DateCollected\":\r\n return {this.convertDate(row.DateCollected)}\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 render() {\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 \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":""}