{"version":3,"sources":["frontEnd/vetModule/vetModule.module.scss","backOffice/viewRequestId/viewRequestId.module.scss","components/base/confirmation/confirmation.module.scss","frontEnd/holdingRegister/holdingDetails/holdingDetails.module.scss","frontEnd/home/home.module.scss","components/animalSummary/animalSummary.module.scss","components/base/modal/modal.module.scss","components/summary/addressSummary/addressSummary.module.scss","components/otherHoldingSelection/otherHoldingSelection.module.scss","components/addReplacementTag/addReplacementTag.module.scss","frontEnd/animals/animalDetails/animalDetails.module.scss","backOffice/paperDetails/paperDetails.module.scss","components/address/address.module.scss","components/table/pagination/pagination.module.scss","components/summary/fciSummary/fciSummary.module.scss","pages/landing/landing.module.scss","backOfficeComponents/summary/transportSummary/transportSummary.module.scss","components/header/banner/banner.module.scss","components/header/holding/holding.module.scss","frontEnd/activityDetails/activityDetails.module.scss","backOfficeComponents/summary/fciSummary/fciSummary.module.scss","components/footer/footer.module.scss","frontEnd/movementsGatherings/movementsGatherings.module.scss","backOfficeComponents/header/navBar/navBar.module.scss","frontEnd/abattoirAttestation/abattoirAttestationHome.module.scss","backOfficeComponents/base/pageTitle/pageTitle.module.scss","components/movementDates/movementDates.module.scss","pages/tokens/tokens.module.scss","components/base/tooltip/tooltip.module.scss","components/summary/animalSummary/animalSummary.module.scss","components/base/textEntry/textEntry.module.scss","backOfficeComponents/header/headerBackOffice.module.scss","components/table/filters/filtersBoUserActivity/filtersBoUserActivity.module.scss","components/table/filters/filtersGatheringSearch/filtersGatheringSearch.module.scss","components/summary/dateSummary/dateSummary.module.scss","backOfficeComponents/base/sectionTitleBar/sectionTitleBar.module.scss","backOfficeComponents/summary/addressSummary/addressSummary.module.scss","components/base/tabs/tabs.module.scss","components/base/modalConfirm/modalConfirm.module.scss","components/summary/transportSummary/transportSummary.module.scss","backOfficeComponents/base/displayValue/displayValue.module.scss","backOfficeComponents/sections/locationAddressDate/locationAddressDate.module.scss","backOffice/viewMovement/viewMovement.module.scss","components/header/navBar/navBar.module.scss","components/base/radioButton/radioButton.module.scss","components/base/dateRange/dateRange.module.scss","backOfficeComponents/base/fieldEntry/fieldEntry.module.scss","backOfficeComponents/summary/dateSummary/dateSummary.module.scss","frontEnd/movements/step3/durationInputFields/durationInputFields.module.scss","frontEnd/tagging/application/tagApplication.module.scss","components/base/button/button.module.scss","components/base/errorLabel/errorLabel.module.scss","components/base/checkbox/checkbox.module.scss","backOfficeComponents/address/address.module.scss","components/table/filters/filtersAnimalsOnHolding/filtersAnimalsOnHolding.module.scss","components/table/filters/filtersBoHoldingActivity/filtersBoHoldingActivity.module.scss","components/table/filters/filtersBoSearchMovements/filtersBoSearchMovements.module.scss","backOfficeComponents/base/tooltip/tooltip.module.scss","components/summary/exemptionSummary/exemptionSummary.module.scss","components/base/fileUpload/fileUpload.module.scss","backOfficeComponents/addBatch/addBatch.module.scss","backOfficeComponents/addTagRange/addTagRange.module.scss","backOfficeComponents/sections/paperTransport/paperTransport.module.scss","backOfficeComponents/sections/sourceDocument/sourceDocument.module.scss","backOfficeComponents/summary/exemptionSummary/exemptionSummary.module.scss","pages/landing/landingModal/landingModal.module.scss","components/welcomeBanner/welcomeBanner.module.scss","components/addTagRange/addTagRange.module.scss","components/modalFileUpload/modalFileUpload.module.scss","frontEnd/viewMovement/viewMovement.module.scss","components/base/linker/linker.module.scss","components/base/tab/tab.module.scss","backOfficeComponents/base/button/button.module.scss","components/base/dropdownSearch/dropdownSearch.module.scss","components/base/aboutPanel/aboutPanel.module.scss","components/summary/userComment/userComment.module.scss","components/modalAddAnimalsToHolding/modalAddAnimalsToHolding.module.scss","backOffice/editMovement/editMovement.module.scss","backOfficeComponents/base/checkboxGroup/checkboxGroup.module.scss","backOfficeComponents/base/checkbox/checkbox.module.scss","backOfficeComponents/base/fileUpload/fileUpload.module.scss","backOffice/vaModule/vaRecordDeclaration.module.scss","frontEnd/deaths/summary/summary.module.scss","frontEnd/holdingSummary/handshake/handshake.module.scss","components/summary/transportInformationBox/transportInformationBox.module.scss","frontEnd/movements/step2/movementStep2.module.scss","components/modalAddBatch/modalAddBatch.module.scss","components/modalTagNumberRange/modalTagNumberRange.module.scss","components/modalManualTagNumbers/modalManualTagNumbers.module.scss","frontEnd/movements/summary/summary.module.scss","images/svg/logo-livestock-blue.svg","frontEnd/abattoirAttestation/abattoirAttestationTagResult/abattoirAttestationTagResult.module.scss","components/base/legend/legend.module.scss","components/base/fieldLabel/fieldLabel.module.scss","components/table/filters/filtersBoAnimalActivity/filtersBoAnimalActivity.module.scss","components/base/radioButtons/radioButtons.module.scss","components/base/checkboxGroup/checkboxGroup.module.scss","backOfficeComponents/base/legend/legend.module.scss","backOfficeComponents/sections/verifyCustomerInformation/verifyCustomerInformation.module.scss","backOfficeComponents/sections/foodChainInformation/foodChainInformation.module.scss","backOfficeComponents/sections/verifyCustomerSearch/verifyCustomerSearch.module.scss","backOfficeComponents/base/messageBanner/messageBanner.module.scss","components/addBatch/addBatch.module.scss","frontEnd/holdingSummary/holdingSummary.module.scss","components/header/navBarSub/navBarSub.module.scss","frontEnd/movementsGatherings/foodChainInformation/foodChainInformation.module.scss","components/modalAnimalsOnHolding/modalAnimalsOnHolding.module.scss","components/base/infoContainer/infoContainer.module.scss","frontEnd/tagging/replacement/tagReplacement.module.scss","images/svg/icon-help.svg","components/table/customTable/customTableBoAnimalActivity/customTableBoAnimalActivity.module.scss","components/base/hint/hint.module.scss","backOfficeComponents/cphEntry/cphEntry.module.scss","components/base/inputDate/inputDate.module.scss","backOfficeComponents/base/hint/hint.module.scss","components/table/filters/filtersHoldingRegister/filtersHoldingRegister.module.scss","components/table/filters/filtersUserActivity/filtersUserActivity.module.scss","components/base/backdrop/backdrop.module.scss","backOfficeComponents/sections/paperAnimalBatch/paperAnimalBatch.module.scss","backOfficeComponents/sections/paperAnimalIndividual/paperAnimalIndividual.module.scss","components/manualTagEntry/manualTagEntry.module.scss","frontEnd/holdingRegister/holdingRegister.module.scss","templates/page1.png","templates/page2.png","templates/suplimentary_form.png","templates/suplimentary_form_last.png","templates/fci_animals_form.png","templates/fci_animals_form_last.png","templates/page1_deer.png","templates/page2_deer.png","templates/page3-cattle.png","templates/page3-deer.png","templates/page3-goats.png","templates/page3-pigs.png","templates/page3-sheep.png","templates/signPage3.png","components/base/cphField/cphField.module.scss","backOfficeComponents/base/fieldLabel/fieldLabel.module.scss","components/table/filters/filtersBoSearchRequestId/filtersBoSearchRequestId.module.scss","components/base/spinner/spinner.module.scss","components/base/numberEntry/numberEntry.module.scss","backOfficeComponents/manualTagEntry/manualTagEntry.module.scss","backOffice/holdingActivity/holdingActivity.module.scss","backOfficeComponents/sections/notes/userNotes.module.scss","components/summary/animalDetails/animalDetails.module.scss","components/authNavigation/authNavigation.module.scss","components/vetAuthNavigation/vetAuthNavigation.module.scss","frontEnd/movementsGatherings/transportDetails/transportDetails.module.scss","frontEnd/movements/step3/movementStep3.module.scss","frontEnd/movements/step3/transportDetailsForm/transportDetailsForm.module.scss","components/base/dropdown/dropdown.module.scss","pages/error/error.module.scss","images/svg/logo-livestock.svg","components/base/loading/loading.module.scss","frontEnd/abattoirAttestation/uploadTags/uploadTags.module.scss","../node_modules/@duetds/date-picker/dist/esm-es5 lazy /^/.*/.entry/.js$/ groupOptions: {} namespace object","services/serviceWorker.js","services/i18n.js","services/codeHelper.js","services/appInsightsService.js","services/b2cService.js","msalClient.js","routing.js","services/constants.js","services/storeService.js","services/errors.js","services/bff.js","config.js","services/userRoleType.js","services/holdingHelper.js","components/base/button/button.js","services/helpers.js","services/featureToggles.js","services/breedsHelper.js","services/configHelper.js","services/permissions.js","services/initialise.js","services/navigation.js","components/address/address.js","components/base/errorLabel/errorLabel.js","components/summary/addressSummary/addressSummary.js","components/base/tooltip/tooltip.js","components/base/legend/legend.js","components/base/checkbox/checkbox.js","components/base/linker/linker.js","services/vetModuleHelper.js","templates/movementDocumentPDF.js","templates/movementDocumentDeerPDF.js","components/pdfButton/pdfButton.js","services/tableColumns.js","backOfficeComponents/address/address.js","components/base/tab/tab.js","components/base/tabsNavigational/tabsNavigational.js","components/table/customTable/customTableBoAnimalActivity/customTableBoAnimalActivity.js","components/table/customTable/customTableBoHoldingActivity/customTableBoHoldingActivity.js","components/dropdownAgeRange/dropdownAgeRange.js","components/dropdownBreedsMulti/dropdownBreedsMulti.js","components/dropdownGender/dropdownGender.js","components/base/fieldLabel/fieldLabel.js","components/base/hint/hint.js","components/base/textEntry/textEntry.js","components/base/searchField/searchField.js","components/table/filters/filtersAnimalsOnHolding/filtersAnimalsOnHolding.js","backOfficeComponents/base/button/button.js","components/base/radioButton/radioButton.js","components/base/radioButtons/radioButtons.js","components/table/filters/filtersBoAnimalActivity/filtersBoAnimalActivity.js","components/base/checkboxGroup/checkboxGroup.js","components/base/cphField/cphField.js","backOfficeComponents/cphEntry/cphEntry.js","components/base/datePicker/datePicker.js","images/svg/Download_icon.svg","components/base/inputDate/inputDate.js","components/base/dateRange/dateRange.js","components/base/dropdownSearch/dropdownSearch.js","components/table/filters/filtersBoUserHoldingActivity.js","components/table/filters/filtersBoHoldingActivity/filtersBoHoldingActivity.js","backOfficeComponents/base/tooltip/tooltip.js","backOfficeComponents/base/fieldLabel/fieldLabel.js","backOfficeComponents/base/hint/hint.js","backOfficeComponents/base/fieldEntry/fieldEntry.js","backOfficeComponents/base/legend/legend.js","components/table/filters/filtersBoSearchMovements/filtersBoSearchMovements.js","components/table/filters/filtersBoSearchRequestId/filtersBoSearchRequestId.js","components/table/filters/filtersBoUserActivity/filtersBoUserActivity.js","components/base/tabs/tabs.js","components/table/filters/filtersGatheringSearch/filtersGatheringSearch.js","images/svg/icon-cattle.svg","components/base/aboutPanel/aboutPanel.js","components/table/filters/filtersHoldingRegister/filtersHoldingRegister.js","components/table/filters/filtersUserActivity/filtersUserActivity.js","components/table/pagination/pagination.js","components/base/spinner/spinner.js","components/table/table.js","components/animalSummary/animalSummary.js","components/base/confirmation/confirmation.js","components/summary/dateSummary/dateSummary.js","components/summary/exemptionSummary/exemptionSummary.js","components/summary/fciSummary/fciSummary.js","components/base/backdrop/backdrop.js","components/base/modalConfirm/modalConfirm.js","components/summary/transportSummary/transportSummary.js","components/summary/userComment/userComment.js","frontEnd/activityDetails/activityDetails.js","components/base/modal/modal.js","components/base/fileUpload/fileUpload.js","components/modalAddAnimalsToHolding/modalAddAnimalsToHolding.js","frontEnd/animals/animals.js","frontEnd/animals/animalDetails/animalDetails.js","services/recentlyUsedHelper.js","components/dropdownBreeds/dropdownBreeds.js","components/dropdownDamIds/dropdownDamIds.js","components/dropdownSireIds/dropdownSireIds.js","components/dropdownTagNumbersAvailable/dropdownTagNumbersAvailable.js","components/dropdownGeneticDamIds/dropdownGeneticDamIds.js","components/geneticDamTab/geneticDamTab.js","frontEnd/births/births.js","images/svg/icon-sheep.svg","images/svg/icon-goat.svg","images/svg/icon-pig.svg","images/svg/icon-deer.svg","backOfficeComponents/base/pageTitle/pageTitle.js","backOfficeComponents/base/sectionTitleBar/sectionTitleBar.js","backOffice/animalActivity/animalActivity.js","backOfficeComponents/base/displayValue/displayValue.js","backOfficeComponents/sections/verifyCustomerInformation/verifyCustomerInformation.js","backOffice/editCustomer/editCustomer.js","backOfficeComponents/base/checkbox/checkbox.js","backOfficeComponents/base/checkboxGroup/checkboxGroup.js","backOfficeComponents/sections/exemptions/exemptions.js","components/foodChainInformationHelper/foodChainInformationHelper.js","backOfficeComponents/sections/foodChainInformation/foodChainInformation.js","components/base/numberEntry/numberEntry.js","backOfficeComponents/sections/locationAddressDate/locationAddressDate.js","backOfficeComponents/addBatch/addBatch.js","backOfficeComponents/sections/paperAnimalBatch/paperAnimalBatch.js","backOfficeComponents/addTagRange/addTagRange.js","backOfficeComponents/base/fileUpload/fileUpload.js","backOfficeComponents/manualTagEntry/manualTagEntry.js","backOfficeComponents/sections/paperAnimalIndividual/paperAnimalIndividual.js","backOfficeComponents/sections/paperTransport/paperTransport.js","backOffice/editMovement/editMovement.js","backOffice/holdingActivity/holdingActivity.js","backOfficeComponents/sections/sourceDocument/sourceDocument.js","backOfficeComponents/sections/notes/userNotes.js","backOffice/paperDetails/paperDetails.js","backOffice/searchMovements/searchMovements.js","backOffice/searchRequestId/searchRequestId.js","backOffice/userActivity/userActivity.js","services/searchHelper.js","backOffice/vaModule/vaRecordDeclaration.js","backOfficeComponents/base/messageBanner/messageBanner.js","backOfficeComponents/sections/verifyCustomerSearch/verifyCustomerSearch.js","backOfficeComponents/sections/verifyCustomerResults/verifyCustomerResults.js","backOffice/verifyCustomer/verifyCustomer.js","backOfficeComponents/summary/addressSummary/addressSummary.js","backOfficeComponents/summary/dateSummary/dateSummary.js","backOfficeComponents/summary/exemptionSummary/exemptionSummary.js","backOfficeComponents/summary/fciSummary/fciSummary.js","backOfficeComponents/summary/transportSummary/transportSummary.js","backOffice/viewMovement/viewMovement.js","backOffice/viewRequestId/viewRequestId.js","pages/connectionCheck/connectionCheck.js","components/addBatch/addBatch.js","components/manualTagEntry/manualTagEntry.js","frontEnd/deaths/step1/deathsStep1.js","components/dropdownHoldings/dropdownHoldings.js","components/otherHoldingSelection/otherHoldingSelection.js","frontEnd/deaths/step2/deathsStep2.js","components/summary/animalSummary/animalSummary.js","frontEnd/deaths/summary/summary.js","frontEnd/deaths/deaths.js","components/summary/animalDetails/animalDetails.js","components/movementDates/movementDates.js","components/summary/transportInformationBox/transportInformationBox.js","frontEnd/holdingSummary/handshake/handshake.js","frontEnd/holdingSummary/holdingSummary.js","components/header/navBarSub/navBarSub.js","components/modalProductionTypes/modalProductionTypes.js","frontEnd/holdingRegister/holdingDetails/holdingDetails.js","components/modalAdjacentMovements/modalAdjacentMovements.js","components/dropdownYear/dropdownYear.js","components/annualYear/annualYear.js","components/modalAnnualInventory/modalAnnualInventory.js","frontEnd/holdingRegister/holdingRegister.js","frontEnd/home/userActivity/userActivity.js","frontEnd/home/home.js","components/authNavigation/authNavigation.js","components/vetAuthNavigation/vetAuthNavigation.js","components/footer/footer.js","pages/landing/landingModal/landingModal.js","components/welcomeBanner/welcomeBanner.js","pages/landing/landing.js","pages/logout/logout.js","frontEnd/deaths/missingAndFound/step1/missingAndFoundStep1.js","frontEnd/deaths/missingAndFound/missingAndFound.js","frontEnd/movementsGatherings/animalsBatches/animalsBatches.js","components/dropdownBatchNumbersAvailable/dropdownBatchNumbersAvailable.js","components/addTagRange/addTagRange.js","frontEnd/movementsGatherings/animalsIndividuals/animalsIndividuals.js","frontEnd/movementsGatherings/exemptions/exemptions.js","frontEnd/movementsGatherings/foodChainInformation/foodChainInformation.js","frontEnd/movementsGatherings/movementType/movementType.js","frontEnd/movementsGatherings/transportDetails/transportDetails.js","frontEnd/movementsGatherings/movementsGatherings.js","frontEnd/movements/step1/movementStep1.js","components/modalAddBatch/modalAddBatch.js","components/modalAnimalsOnHolding/modalAnimalsOnHolding.js","components/modalFileUpload/modalFileUpload.js","components/modalTagNumberRange/modalTagNumberRange.js","components/modalManualTagNumbers/modalManualTagNumbers.js","frontEnd/movements/step2/movementStep2.js","components/base/dropdown/dropdown.js","frontEnd/movements/step3/durationInputFields/durationInputFields.js","frontEnd/movements/step3/transportDetailsForm/transportDetailsForm.js","frontEnd/movements/step3/transportDetails/transportDetails.js","frontEnd/movements/step3/movementStep3.js","frontEnd/movements/step4/fciFormFields/fciFormFields.js","components/base/infoContainer/infoContainer.js","frontEnd/movements/step4/movementStep4.js","frontEnd/movements/summary/summary.js","frontEnd/movements/movements.js","frontEnd/movementSearch/movementSearch.js","pages/error/error.js","components/header/banner/banner.js","components/base/loading/loading.js","components/header/holding/holding.js","components/header/navBar/navBar.js","components/header/header.js","backOfficeComponents/header/headerBackOffice.js","backOfficeComponents/header/navBar/navBar.js","pages/protectedRoute/protectedRoute.js","components/dropdownMonth/dropdownMonth.js","frontEnd/tagging/application/tagApplication.js","components/addReplacementTag/addReplacementTag.js","frontEnd/tagging/replacement/tagReplacement.js","pages/tokens/tokens.js","frontEnd/viewMovement/viewMovement.js","frontEnd/vetModule/vetHome.js","frontEnd/vetModule/components/vetHoldingInfo.js","frontEnd/vetModule/components/vetTitle.js","frontEnd/vetModule/components/vetClaimsInfo.js","frontEnd/vetModule/vetCreate/vetCreate.js","frontEnd/vetModule/components/vetSummaryInfo.js","frontEnd/vetModule/vetDeclaration/vetDeclaration.js","frontEnd/vetModule/vetDetails/vetDetails.js","frontEnd/vetModule/vetSummary/vetSummary.js","frontEnd/abattoirAttestation/abattoirAttestationHome.js","frontEnd/abattoirAttestation/abattoirAttestationTagResult/abattoirAttestationTagResult.js","frontEnd/abattoirAttestation/abattoirAttestationDeclaration/abattoirAttestationDeclaration.js","frontEnd/abattoirAttestation/manualTags/manualTags.js","frontEnd/abattoirAttestation/uploadTags/uploadTags.js","frontEnd/abattoirAttestation/abattoirAttestationDeclarationTags/abattoirAttestationDeclarationTags.js","frontEnd/abattoirAttestation/checkHolding/checkHolding.js","frontEnd/abattoirAttestation/abattoirAttestationResult/abattoirAttestationResult.js","app.js","index.js"],"names":["module","exports","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","keys","Object","Boolean","window","location","hostname","match","initI18N","i18n","use","Backend","LanguageDetector","initReactI18next","init","fallbackLng","debug","interpolation","escapeValue","react","useSuspense","backend","queryStringParams","v","catch","error","console","env","require","config","local","decode","substring","length","codeHelper","forEach","key","includes","browserHistory","createBrowserHistory","basename","reactPlugin","ReactPlugin","appInsights","ApplicationInsights","connectionString","APP_INSIGHT","extensions","extensionConfig","identifier","history","enableAutoRouteTracking","autoTrackPageVisitTime","samplingPercentage","enableUnhandledPromiseRejectionTracking","enableCorsCorrelation","distributedTracingMode","loggingLevelConsole","loggingLevelTelemetry","enableDebugExceptions","loadAppInsights","appInsightsService","startTrackPage","name","stopTrackPage","url","properties","measurements","trackEvent","event","trackException","exception","trackMetric","message","trackPageView","trackTrace","sprintf","format","b2cConfigJson","credentials","tenantName","B2C_TENANT","clientID","B2C_CLIENTID","policies","signUpSignIn","B2C_POLICY","vetSignUp","B2C_VETPOLICY","forgotPassword","B2C_POLICY_FORGOT","editProfile","B2C_POLICY_CHANGE","metadata","b2cDomain","B2C_DOMAIN","protectedRoutes","bff","scopes","B2C_SCOPE","apiEndpoint","BFF_URL","settings","redirectUrl","cacheLocation","postLogoutRedirectUri","navigateToLoginRequestUrl","storeAuthStateInCookie","generateSecureRandomString","crypto","getRandomValues","array","Uint8Array","Array","from","byte","toString","join","baseUrl","getAuthority","uri","authority","b2cPolicies","names","authorities","authorityDomain","msalB2CConfig","auth","clientId","knownAuthorities","redirectUri","cache","system","loggerOptions","loggerCallback","level","containsPii","LogLevel","Warning","Verbose","protectedResources","endpoint","loginRequest","vetSignUpRequest","responseType","state","nonce","msalInstance","PublicClientApplication","Routing","connectionCheck","tokens","logout","root","version","signIn","changePassword","abattoirRoot","aiCentreRoot","assemblyRoot","boRoot","collectionRoot","commonRoot","keeperRoot","marketRoot","otherRoot","portRoot","quarantineRoot","showRoot","slaughterMarketRoot","storeMarketRoot","vetRoot","home","holdings","userActivity","activityDetails","activityUndo","abattoirMovements","abattoirMovementConfirm","abattoirMovementDetails","abattoirSearch","abattoirAttestation","abattoirAttestationTagResult","abattoirAttestationDeclaration","abattoirManualTags","abattoirUploadTags","abattoirAttestationDeclarationTags","abattoirCheckHolding","abattoirAttestationResult","aiCentreMovements","aiCentreMovementConfirm","aiCentreMovementDetails","aiCentreSearch","assemblyMovements","assemblyMovementConfirm","assemblyMovementDetails","assemblySearch","boAnimalActivity","boAnimalActivityMovementHistory","boAnimalActivityTaggingHistory","boAnimalActivityAnimalDetails","boAnimalActivityProgeny","boEditCustomer","boEditMovements","boHoldingActivity","boHoldingActivityAdjacentMovements","boHoldingActivityAnimalsAdded","boHoldingActivityAnimalsOnHolding","boHoldingActivityAnnualInventory","boHoldingActivityAssociatedHoldings","boHoldingActivityDeaths","boHoldingActivityHoldingDetails","boHoldingActivityMovements","boHoldingActivityPendingReviews","boHoldingActivityTaggingApplications","boHoldingActivityTaggingReplacement","boMovementDetails","boMovements","boMovementsConfirm","boRequestIdDetails","boSearchMovements","boSearchMovementsByDateAndCph","boSearchMovementsByMovementReference","boSearchMovementsByPaperId","boSearchRequestId","boUserActivity","boUserActivityAll","boUserActivityAnimalsAdded","boUserActivityAnnualInventory","boUserActivityBirths","boUserActivityDeaths","boUserActivityMovements","boUserActivityMovementAmends","boUserActivityMovementReviews","boUserActivityTaggingApplications","boUserActivityTaggingReplacement","boVerifyCustomer","boVaRecords","boVaRecordDeclaration","collectionMovements","collectionMovementConfirm","collectionMovementDetails","collectionSearch","commonMovements","commonMovementConfirm","commonMovementDetails","commonSearch","marketMovements","marketMovementConfirm","marketMovementDetails","marketSearch","otherMovements","otherMovementConfirm","otherMovementDetails","otherSearch","portMovements","portMovementConfirm","portMovementDetails","portSearch","quarantineMovements","quarantineMovementConfirm","quarantineMovementDetails","quarantineSearch","showMovements","showMovementConfirm","showMovementDetails","showSearch","slaughterMarketMovements","slaughterMarketMovementConfirm","slaughterMarketMovementDetails","slaughterMarketSearch","storeMarketMovements","storeMarketMovementConfirm","storeMarketMovementDetails","storeMarketSearch","vetMovements","vetMovementConfirm","vetMovementDetails","vetSearch","animals","births","birthsConfirm","deaths","deathsStep1","deathsStep2","deathsSummary","deathsConfirm","foundConfirm","handshake","holdingRegister","holdingRegisterAnnualInventory","holdingRegisterBirths","holdingRegisterDeaths","holdingRegisterDetails","holdingRegisterDownload","holdingRegisterMovementsOff","holdingRegisterMovementsOn","holdingRegisterAdjacentMovements","holdingRegisterTaggingApplications","holdingRegisterTaggingReplacement","keeperHandshakeDetails","keeperHolding","missingFound","missingFoundStep1","missingFoundSummary","missingConfirm","movements","movementsStep1","movementsStep2","movementsStep3","movementsStep4","movementsSummary","movementsConfirm","tagging","taggingApplications","taggingApplicationsConfirm","taggingRecent","taggingReplacements","taggingReplacementsConfirm","vetPath","vetHome","vetDetails","vetCreate","vetSummary","vetDeclaration","speciesId","UNKNOWN","SHEEP","GOATS","CATTLE","ALPACAS","PIGS","DEER","HORSES","internalSpeciesLabel","speciesName","speciesBabyName","fieldWidthType","requestType","adjacentMovement","animalsAdded","annualInventoryCreate","annualInventoryDelete","birth","correctTransfer","death","holdingProductionTypeCreate","holdingProductionTypeDelete","movement","movementHandshake","paperMovementAdd","paperMovementEdit","tagApplication","tagReplacement","undo","constants","address","empty","full","short","line","inline","keeper","none","onlyAddress","status","BFF_ERROR1","BFF_ERROR2","NO_NAME","NO_TYPE","NO_ADDRESS","NOT_FOUND","ERROR","ERROR_NOT_FOUND","FOUND_WITHOUT_ADDRESS","CPH_NOT_LINKED","FETCH","abattoirTag","maxTagLimit","bo","holdingActivity","eventTypes","adjacentMovements","label","showDateRange","showSpecies","animalsOnHolding","showDate","speciesRequired","annualInventory","associatedHoldings","holdingDetails","useComponent","pendingReviews","tagReplacements","tagApplications","vaRecords","movementSearch","tabs","tab_MovementRange","movementType","movementTypeSearch","cancelled","tab_MovementRef","tab_PaperId","all","subtitle","movementAmends","movementReviews","claConfig","movement_Date_MaxDaysInFuture_OffMove","movement_Date_MaxDaysInFuture_OnMove","movement_Dates_MaxDaysBetween","cph","abattoir","agriculturalHolding","assemblyCentre","collectionCentre","market","showground","unknown","cphState","dropdown","entry","readOnly","dateTypes","found","dateRangeErrors","default","addressMessage","errorAndWarning","warning","filters","inside","outside","flags","departure","destination","end","single","start","to","gender","1","2","3","4","5","table","AdjacentMovements","AnnualInventory","Deaths","Download","MovementsOn","MovementsOff","TagApplications","TagReplacements","VaRecords","type","download","movementsOn","movementsOff","Births","inputType","number","password","text","labelPosition","above","linkTypes","pdfButton","mimeList","extension","mimeType","modalActions","add","close","delete","edit","view","crossBorderUnsupportedRequestType","standard","xb","multiItem","row","column","noRecordsToFetch","three","option","animalsSatisfy","doSatisfy","doNotSatisfy","embryo","yes","no","exemption","male","female","haulierMapping","receivingKeeper","departureKeeper","haulier","holdingReport","allEntries","offMovements","onMovements","identification","breedingTags","slaughterTags","knowCPHNumber","fsa","green","red","messageStatus","amended","rejectedMovementReview","unconfirmed","missingOrFound","missing","business","newMovement","off","on","permit","reviewMovement","recordCPH","recordFCI","recordTransportInformation","searchStatus","reportedMoves","unconfirmedMoves","selectionMethod","batch","holding","individual","manualTagNumbers","tagNumberRange","uploadFile","tag","individualTag","upgradeTags","tagMethod","onHolding","selectFromLists","tagsManually","transporter","destinationKeeper","transporterReverse","Haulier","DEP","DEST","HAULIER","transporterType","departureKeeperType","destinationKeeperType","haulierType","transporterTypeId","viewTag","viewAllTags","viewInvalidTags","pagination","bottom","defaultParams","top","hidePageXofY","hideShowingXofY","hideRecordsPerPage","paperDocumentStatus","COMPLETE","DELETED","HAS_PROCESSING_ERRORS","HAS_VALIDATION_ERRORS","NOT_AVAILABLE","period","days","hours","minutes","months","seconds","weeks","years","permitMovesMandatory","destinationExhibition","polling","CONFIRM","CONFIRM_ERROR","ENTRY","PENDING","postType","CREATE","DELETE","REJECT","UPDATE","UNDO","recordedBy","regions","England","Scotland","Wales","sorting","ascending","descending","species","animalTypes","toLowerCase","babyName","internalLabel","internalList","list","baby","order","states","invalid","reformatted","valid","claPending","completed_error","completed_warning","errors","pending","reported","processErrors","processing","success","validation_error","warnings","animalDetails","donor","enterHolding","manualEntry","missingAndFound","movementHistory","movementRef","movementRange","nonCph","paperId","progeny","recentHoldings","recentLocations","tagHistory","transporterTypes","undoRequestTypes","transfer","correction","review","defraGuidance","defraSupport","storageType","session","cookie","PATHS","path","defaultValue","sessionRemove","isRemoveAll","item","get","Cookie","pathArray","split","topLevelKey","shift","topLevelValue","getItem","JSON","parse","set","arrItem","value","options","undefined","stringify","push","setItem","remove","removeItem","tempPathArray","bottomLevelKey","pop","deepValue","obj","pathArr","i","getDeepValue","newPath","storeService","removeAll","bearer","jwt","username","xOnBehalfOf","msal","msalStatus","savedLocalStorage","keyHasDots","filter","arr","param","index","bffErrorList","errorCode","errorMessages","labelCancel","labelConfirm","modalMessage","redirect","findServerError","find","bffErrorItem","BFF","setModal","data","response","errorMessage","errorStatus","cookieConsent","Hotjar","isReady","axios","isCancel","matchedError","modalProps","modalConfirm","modalClose","modalTitle","href","alert","printf","baseURL","create","consolidateErrorOrWarning","reduce","acc","current","concat","bffStatus","isCancelled","isClaPending","isCompletedError","isCompletedWarning","isError","isPending","isProcessError","isReported","isSuccess","isUnconfirmed","getStatus","reqStatus","bffResponse","asyncId","String","poll","movementDocumentRef","content","documentRef","movementDocument","requestId","requestStatus","interceptors","request","activeAccount","getActiveAccount","accounts","getAllAccounts","acquireTokenSilent","account","idToken","headers","Authorization","accessToken","reject","APPLICATION_VERSION","DEFAULT_TABLE_PAGE_SIZE","LENGTH_DESCRIPTION","LENGTH_EMAIL","LENGTH_HOLDING_CPH","LENGTH_HOLDING_EU","LENGTH_HOLDING_RESTRICTIONS","LENGTH_NON_COMPLIANCE_REASON","LENGTH_REFERENCE_OR_COMMENT","LENGTH_START_NUMBER","LENGTH_YEAR","MAX_BIRTH_DATE_RANGE","MAX_DAYS_TO_REPORT_DEATH","MAX_DAYS_TO_REPORT_MOVEMENT","MAXLENGTH_CPH_MANUAL","MAXLENGTH_COMMENT","MAXLENGTH_NON_CPH_LOCATION","MAXLENGTH_OWN_USE","MAX_TOTAL_ANIMAL_RANGE","MAX_UPLOAD_RECORDS","MAX_UPLOAD_RECORDS_EXTENDED_CSV","POLLS_ENABLED","ROWS_COMMENT","ROWS_CPH_MANUAL","ROWS_FCI_NON_COMPLIANCE","ROWS_HOLDING_RESTRICTIONS","ROWS_TEXTAREA","ROWS_USER_NOTES","SPECIES_DEFAULT","TIMEOUT","WIDTH_BATCH_NUMBER","WIDTH_CPH","WIDTH_CPH_MANUAL","WIDTH_DAY","WIDTH_DOCUMENT_ID","WIDTH_GROUP_ID","WIDTH_DAYS","WIDTH_HOURS","WIDTH_MINUTES","WIDTH_MONTH","WIDTH_MOVEMENT_ID","WIDTH_MOVEMENT_REF","WIDTH_NUM_RECEIVED","WIDTH_PHONE_NUMBER","WIDTH_REGISTRATION","WIDTH_START_NUMBER","WIDTH_TAG_REF","WIDTH_TAGS","WIDTH_TOTAL_NUMBER","WIDTH_TRANSPORTER_AUTH","WIDTH_TRANSPORTER_NAME","WIDTH_USER_NOTES","REGIONS","userRoleType","ABATTOIR","AICENTRE","ASSEMBLY","BACKOFFICE","COLLECTION","COMMON","GENERIC","KEEPER","MARKET","OTHER","PORT","QUARANTINE","SHOW","SLAUGHTERMARKET","STOREMARKET","VET","VETUSER","RCVSVET","regionCodes","regionalCPHs","region","cphList","fill","element","holdingHelper","findHoldings","regionsList","allMatchedRegions","matchedRegion","regionalCPH","findRegion","startCphCode","isEngland","isWales","isScotland","isTest","isEnglish","isNonCph","isNotEnglish","isWelsh","isScottish","isUnknownCph","isCommonLand","Button","ariaLabel","autoFocus","buttonType","classNames","disabled","extraContent","icon","onClick","tabIndex","useTranslation","ready","t","componentClassNames","classes","primary","className","trim","aria-label","XLSX","digitsRegex","consolidateMessages","RegExp","to1","consolidateMessagesWith3Fields","messageMapping","boRoles","rcvsRoles","helpers","pastOneYearFromToday","datePastOneYear","today","Date","setFullYear","getFullYear","setDate","getDate","date","formatYYYYMMDD","vetmaxDate","todayDate","vetAttestationNumber","generateVan","rcvsNo","attestationDate","expireDate","formattedDate","moment","getProcessingCheckStatus","flagData","flagId1","flagId2","flagId3","flagId4","flagId5","flagId6","filterFlagData","restrictBackFromVetDeclaration","restrictBackFlow","restrictBackFromVetSummary","restrictSummaryBack","isInline","isKeeper","isLine","isNoNameFound","isNone","isOnlyAddress","isShort","isStatusError","isStatusError1","isStatusError2","isStatusFetch","isStatusNoAddress","isStatusNotFound","isCphNotLinked","isStatusFoundWithoutAddress","isUnknown","nameStatus","lastName","statusText","withAddress","withErrorAddress","nameFull","result","title","firstName","typeFull","holdingType","fullName","addressFull","propertyName","address1","address2","town","county","postCode","addressShort","addressLine","formatLine","addressKeeper","formatAddress","addressWithoutHoldingName","formatOnlyAddressInline","addressOnly","formatAddressWithoutHoldingName","animal","ageToDisplay","startDate","endDate","withSameCalendarDay","age","ageInYears","addDobAndAgeForDisplay","inputData","dob","animalWithSameDay","tempNewAge","dobToDisplay","year","beginBirthPeriod","endBirthPeriod","getYearDob","removeAllInvalid","animalsToChange","isValid","removeAllInvalidExtended","isValidExtended","duplicates","duplicateIndex","duplicateItem","indexToRemove","indexOf","splice","getFormatExamples","isSheepId","isGoatId","description","isDeerId","isInvalid","isSevenDigitsFormat","batchPrefix","substr","toUpperCase","batchNumber","test","isValidBatch","batchList","blankBatchNumber","animalTotal","isOffMoveMaxDays","fieldName","isOnMoveMaxDays","isMoveBetweenMaxDays","confirmation","getConfirmIdLabel","submitType","getContent","withErrors","withWarnings","validationError","getTitle","movement_Ref","width","isHalf","isQuarter","knownCPH","isCph","isFsa","isNo","isYes","addPeriod","isMoment","clone","appendTime","dateToCheck","dateHours","zerosPadLeft","dateMinutes","dateSeconds","duration","diff","dateFormat","subDateFormat","object","arrivalMax","dateAdvanced","momentToJSDate","momentMinDate","todayEndOfDay","dateAhead","departureDaysAhead","daysAHead","departureMax","arriveData","isOff","differenceInDays","Math","floor","getTime","formatForSubmission","inValue","fullDateTime","formatJSDate","formatJSDatePreformatted","formatTime","formatDDMMYYYYtoYYYMMDD","formatDDMMYYYY","formatYYYYMMDDPreformatted","is","afterDate","date1","date2","dateToCheck1","milliseconds","dateToCheck2","isAfter","beforeDate","isBefore","betweenMoments","isSame","inRange","filterValue","subtract","inTheFuture","errorContext","overSevenDaysAgo","errorLabel","xDaysInThePast","overThreeDaysAgo","overAYearAgo","same","sameDayOrNextDay","sameDay","nextDay","tomorrow","dateFormatPattern","validCsvDate","isNaN","parseInt","xPeriodAfterDate","limit","xPeriodBeforeDate","xDaysInTheFuture","futureLimit","xDaysInTheFutureOverLimit","isoToMomentDate","isoDate","min","toDate","momentToISODate","toISOString","now","splitStringDate","stringDate","day","month","concatToStringDate","stringDateToMoment","subtractPeriod","timestamp","replace","toDateTime","todayStartOfDay","startOf","endOf","startOfDay","endOfDay","mth","temp","dateType","isBirth","isDeath","isFound","isMovement","isTagApplication","isDeparture","flag","isDestination","isFrom","isSingle","isTo","addToAnimalObjects","animalList","errorIndexes","objectChildName","amendResponseError","isMatchedCheck","otherCode","isUndoMovementErrorCode","isUndoMoveCheck","errorCodeUndoMove","cfgDepartureDateError","consolidate","messages","isArray","startMessage","consolidateMessage","matchedList","noMatchedList","tagList","matched","exec","tagRange","consolidateTagAndBatchNumbers","threeFieldsList","Set","speciesTagList","speciesArray","mapping","check","mapCode","extract","fciDetail","isAllAnimalsFciCompliant","isAllAnimalsFCICompliant","batches","reviewBatches","movementGroups","newMovementArray","devices","reviewDevices","tagNumber","deviceTag","itemMap","withdrawalPeriod","withdrawalPeriods","metFCIWithdrawalPeriodCode","withdrawalPeriodMetId","withdrawalPeriodObservedText","metFCIWithdrawalPeriod","fciPeriods","processingFlags","movementDetailsProcessingFlags","approvedMovementProcessingFlags","processingLabel","processingItems","processingName","processingStatus","processingFlagId","approvedMovementId","requestBatches","locationData","requestDevices","idToName","genderId","dod","dateStart","dateEnd","dateOut","interval","dateUnitDifference","cancelToken","params","setLoadPending","setData","setDataLoaded","animalsToFilterOut","isModal","setTotal","res","added","finalData","searchResultsAnimalsOnHolding","approvedMovement","inData","onMovement","recordBy","isByDestination","cancelledMovementsListFiltered","departureHolding","destinationHolding","startTransferDate","endTransferDate","comments","queryKeeper","searchHoldingDetails","holdingAddress","currentCPH","holdingTypes","source","setHoldingTypes","token","nameOnly","typeList","holdingRegistersMovementDetails","holdingsInBusiness","searchHoldingKeeper","metFciWithdrawalPeriods","reviewStatus","paperMovements","requestTypeId","requestByIdAndType","requests","reviewHoldingMovements","searchHolding","undoRequest","fields","copyBuffer","emptyBuffer","tagRangesArray","oldBuffer","oldBatch","buffer","endNumber","batchKeys","getReference","sessionHolding","sessionSpecies","sessionHoldingRegister","fromDate","initFromDate","initToDate","downloadPdfLink","isCattleId","movementId","isOffMove","setPending","filename","areas","openFileFromResponse","saveDates","types","isAdjacentMovement","isAnnualInventory","isBirths","isDeaths","isDownload","isMovementOff","isMovementOn","isTaggingApplications","isTaggingReplacements","isAbove","position","lookup","transportedBy","isDefault","isTransfer","fci","doRecord","record","doNotRecord","identificationType","isBreedingTags","isSlaughterTags","isCrossBorder","isCrossBorderUnsupportedRequestType","isExempt","isMoveToCommonGround","otherHolding","isNew","isOn","isPermitMove","isReview","isStandard","movementReviewStatus","hasBeenConfirmed","hasBeenPartiallyConfirmed","hasBeenRejected","hasNotBeenReviewed","inNotRequired","isByDeparture","recorder","reportType","isMissing","isAnimalsAdded","isAnnualInventoryCreate","isAnnualInventoryDelete","isCorrectedMovement","isHoldingProductionTypeCreate","isHoldingProductionTypeDelete","isMovementHandshake","isTagReplacement","isPaperMovementAdd","isPaperMovementEdit","isUndo","isBatch","isHolding","isIndividual","isManualTagNumbers","isTagNumberRange","isUploadFile","isReformatted","isOnHolding","isSelectFromLists","isTagsManually","tagType","isBreeding","isSlaughter","isUpgrade","isDepartureKeeper","isDestinationKeeper","isHaulier","isConfirm","pType","isCreate","isDelete","isReject","isUpdate","searchByMovementReference","searchResults","activeTabId","tableFiltersMovements","searchByPaperId","paperMovement","resData","isWarning","formatName","values","nameToId","matchSpecies","checkSpeciesId","isPigId","isWelshOrScottish","isNonEnglishCPHs","sourceHolding","fromHolding","toHolding","isUnknownMove","isCancelledMove","cancelledMove","requestTypeUndone","movementReferenceCorrected","getType","confirmed","tab","isMovementRange","isMovementRef","isPaperId","canLink","convertToRfid","formatNumber","theLength","outValue","getColour","getInvalidField","hasNonEidTagsSheep","tagsToCheck","extractBatchNumber","newTag","newBatch","oldTag","some","isInvalidExtended","isNonEid","tagToCheck","isValidTagNumber","strLength","string","newString","repeat","pluralCheck","theString","argumentsArray","regex","p","c","sentenceCase","charAt","slice","camelCase","pascalCase","getContentsLink","contentsMatch","stringParts","returnArray","dangerouslySetInnerHTML","__html","rel","target","isBoolean","isCorrection","userRole","isAbattoir","role","isAICentre","isAssembly","isBackOffice","isCollection","isCommon","isGeneric","isMarket","isOther","isPort","isQuarantine","isShow","isSlaughterMarket","isStoreMarket","validate","cphNumber","fsaNumber","tagNumbers","batchNumbers","post","checkObjectEquality","object1","object2","object1Copy","cloneDeep","object2Copy","mergeWith","objectValue","sourceValue","isEqual","log","movementReferenceByRequest","generatePDF","dropdownSearch","optionsList","items","generateUUID","j","random","fileType","datestamp","link","document","createElement","matchedMimeType","mimeItem","body","appendChild","click","removeChild","writeWorkbookToFile","workbook","fileName","writeFile","compression","generateWorkbook","utils","book_new","keyData","worksheet","json_to_sheet","arrayWidths","header","arrayOfWordLengths","keyDataItem","Number","wch","max","book_append_sheet","generateAnimalWorkbook","timeStamp","workSheetData","formattedAddress","str","tempAge","breedName","ws","aoa_to_sheet","replaceNull","scrollToTop","scrollTop","documentElement","setCaretPosition","ctrl","pos","setSelectionRange","setTimeout","focus","createTextRange","range","collapse","moveEnd","moveStart","select","sortArrayOfObjects","property","direction","sort","a","b","propA","propB","sortByProperty","sortTags","tags","rec","o1","o2","p1","p2","resetDropdownFocusState","setInterval","highlightedOptions","getElementsByClassName","clearInterval","classList","getUserRole","roles","r","checkTags","trimmedElement","featureToggles","features","isEnabled","featureName","allFeatures","toggles","accessibilityTooltipsKeyboardFocus","version_1_0","version_1_1","breedsHelper","fetchBreeds","setLoading","allBreeds","breedsAll","prevState","breeds","fetchBreedsOnHolding","onHoldingDate","returnRequest","prepareBreedsOnHolding","getBreedId","currentSpecies","matchedBreeds","breedObject","getBreedName","breedId","getBreeds","addUnknown","unshift","getBreedsOnHolding","unknownBreedsPresent","breedsOnHolding","breed","unknownBreedOnHolding","unknownBreed","update","configHelper","fetchConfig","findValue","ruleKeyFunc","requestTypeIdFunc","ruleKey","ruleValue","offMoveMaxDays","onMoveMaxDays","gatheringRoles","validateRoles","nonBORoles","permissionsHelper","permissions","isGathering","isLoggedIn","isNonBO","isUserAllowed","users","isVet","isRCVSVet","getHoldingInfo","processHoldings","initialise","requestTypes","getRequestTypes","navMapping","handshakeDetails","useRoleType","movementConfirm","movementDetails","paperDetails","search","searchMapping","lookupMenu","menuType","holdingRole","storedPermissions","matchedType","routing","navigation","lookupHome","getSearchURL","roleToCheck","Address","addPadding","displayCPH","isManual","setAddressPending","setSearchedHolding","storeIn","updateAddressInStore","React","useState","setAddress","setName","setType","useCallback","display","holdingTypeId","otherData","useEffect","isOwnHolding","fetchHoldingDetails","responseData","sessionHoldings","saveHoldingAddress","CancelToken","holdingOther","movementOtherHolding","deathOtherHolding","checkAddressInSessionStorage","cancel","bold","fetching","he","ErrorLabel","outputLabel","AddressSummary","blockLayout","info1","info2","info3","label1","label2","label3","setAddress1","setAddress2","storeIn1","storeIn2","block","addressSummary","summaryRow","holdingId","commentBlock","comment","action","Tooltip","tooltip","tooltipPosition","showTooltip","setTooltip","addEventListener","toggleTooltip","alt","onKeyPress","src","iconTooltip","show","Legend","legend","optional","outputLegend","Checkbox","checkboxClassNames","isChecked","onChange","checkbox","checkboxClasses","checkmark","htmlFor","checked","Linker","linkType","backLink","pathname","vetModuleHelper","fetchVetDetails","cphNo","isOnlyValidattestation","showOnlyValidAttestation","fetchAbattoirVetAttestationList","deviceIdentifiers","fetchVetDetailsForDigitalForm","dfCphNo","dfMoveDate","dfSource","moveDate","pdfProperties","page","flexDirection","fontSize","flexGrow","margin","padding","section","borderBottomWidth","borderBottomStyle","borderBottomColor","section2","image","left","exemptions","border","fontWeight","height","exemptionsText","wordWrap","textAlign","departDetailSection","departureLocation","processingData","vetAttestationDetails","transportDetail","receivingLocation","withdrawlPeriodSection","extraSheetDetails","extraSheetTable","addressToSendTo","fciPage","pageBackground","supplimentaryFormRow","flexWrap","supplimentaryFormColumn","justifyContent","supplimentaryFormColumnTitle","backgroundColor","color","fciAnimalRow","fciAnimalColumn","MovementDocumentPDF","inputText","haulierName","keeperTitle","keeperFirstName","keeperLastName","attestationRecord","vetAttestationExpiryDate","vetAttestationStatus","vetRCVS","expDate","departureDetail","styles","StyleSheet","tagOutput","individualNumber","addComma","render","style","pageNumber","totalPages","haulageCompanyIgnoreList","displayDataInCells","marginRight","displayDataInCellsWithVariation","haulierCompanyName","loadingTime","timeOfDepature","expectedDuration","timeFirstAnimlLoaded","transportHaulierName","MAX_FIELD_WIDTH","loadingDateTime","setDepartTime","departureDateTime","durationOfJourney","expectedDurationOfJourney","totalHours","departAddress","keeperName","transporterAuthNumber","driverName","driverTelephone","telephoneNumber","nameOfOwner","departureOwner","printName","nonCompliantReason","holdingRestrictions","departureTime","depatureDate","movementDate","arrivalTime","destinationDetail","arrivalDateTime","arrivalDate","loadingDate","splittedList","allIndividualTagList","allBatchTagList","allTagList","totalBatchAnimals","devicelist","deviceList","results","activeNo1","activeNo2","device","tagItem","tempIndividualNumber","getTagList","totalIndividualAnimals","getAllTagAnimals","AnimalData","children","SuplimentaryFormLast","SuplimentaryForm","startsWith","SupplementaryFormPage","size","fontFamily","letterSpacing","alignItems","fciDetails","fciAnimalList","fciSplittedList","nonCompliantDevices","FciAnimalData","FciAnimalFormLast","FciAnimalForm","AdditionalFciPage","BackgroundPage1","destAddress","fciData","getFciCheckbox","bothValues","toValues","fromValues","borderTop","strikeFromOrTo","transportTypeStyle","getTransportTypeCheckout","transportVehicleRegistrationNo","PDF_Page1","BackgroundPage2","withdrawlType","getWithdrawlPeriod","deerPage","deerRow","deerLine","deerSection","deerSection2","deerImage","deerExemptions","deerExemptionsText","deerDepartureLocation","deerTransportDetail","deerReceivingLocation","deerFciDetail","deerExtraSheetDetails","deerExtraSheetTable","deerAddressToSendTo","zeroTimeList","MovementDocumentDeerPDF","truncateField","field","getText","html","divContainer","innerHTML","textContent","innerText","trimName","first","second","getRelevantFiller","commaPlacement","tagOutputType3","toactive3","displayAddress","owner","departTime","updatedBatches","sorted","lastBatchNumber","finalNumber","output","total","tot","getBatchList","tagType3","tagType2","tags3Result","formattedTagType2","deerBatchNumber","deerIndividualNumber","deerActiveNo1","deerActiveNo2","deerActiveNo3","deerTempIndividualNumber","checkTagType3","batchNumberType2","individualNumberType2","activeNo1Type2","activeNo2Type2","resultsType2","formatTagType2","devicesBreak1","ceil","devicesBreak2","devicesBreak3","batchesBreak1","batchesBreak2","batchesBreak3","exempt","paddingRight","paddingTop","tagNumberDisplayed","departureFullName","BackgroundPage3Cattle","BackgroundPage3Deer","BackgroundPage3Goats","BackgroundPage3Pigs","BackgroundPage3Sheep","getAuthNumber","updatedFciDetail","metFCIWithdrawalPeriods","matchFCI","fciItem","getMetFCIWithdrawalPeriod","BottomPage3","PDFButton","referenceId","firstTimePDfDownload","useRef","setAttestationRecord","pdfUrl","documentReference","setDocumentReference","downloadUrl","movementReference","setAttribute","parentNode","docRef","getMovementDetails","docReference","userHolding","getMovementHolding","res2","prevData","nonCPHAddress","vetResult","periods","nonComplianceReason","unfitAnimals","setAnimalTotals","setTransportInfo","setProcessingFlags","getTransportedBy","tData","tInfo","transportAuthNumber","transportInformation","contactPhone","vehicleRegistrationNumber","getProcessingStatus","allRecs","printReady","blob","loading","prototype","hasOwnProperty","call","columns","manualTagDetails","accessor","sortable","attestationCph","setPic","vetAttestationData","viewLink","dateOfMovement","dateOfTagging","initialTagNumber","replacementTagNumber","taggingReference","setShowProgeny","replaceAll","removeAnimal","sortColumn","ageSortColumn","sortReverse","dobSortColumn","animalSummary","batchNumberNew","batchNumberOld","damId","dobOnly","geneticDamId","genotype","quantity","replacedBy","sireId","tagNumberNew","tagNumberOld","animalActivity","appliedBy","departureCph","departureDate","destinationCph","replacementDate","replacedIdentifier","replacingIdentifier","systemMove","adjacentCph","animalsAddedDate","birthYear","breedName2","createRequestId","dateArrival","dateDeparture","disposalLocation","formatAppliedDate","formatDeathDate","formatEnteredDate","formatInventoryDate","formatMovementDate","formatReplacementDate","frequency","genderName","holdingName","movementDirection","noOfAnimalsIdentified","noOfAnimalsInInventory","noOfAnimalsMoved","noOfAnimalsDied","noOfAnimalsReplaced","otherCph","quantityDevicesWithDetail","replacedAnimalIdentifier","replacingAnimalIdentifier","speciesNameContent","tagOrBatchNumber","vaRCVS","vaStartDate","vaExpiryDate","vaStatus","vaViewLink","actionPaper","searchEnabled","approved","movementStatus","arrival","depart","paperArrivalCPH","paperCount","paperDepartCPH","userCph","dateReported","eventType","eventDate","dateEntered","inventoryDate","carcassLocation","verifyCustomer","holdingPostcode","deathsMissingAndFound","actionType","actionFunction","actionBatch","removeBatch","editCustomer","dateOfDeath","deathReference","disposalRoute","numberOfAnimals","unfit","animalSelected","gatheringSearch","actionRemoveIndividual","actionRestoreIndividual","restoreAnimal","actionRemoveBatch","actionRestoreBatch","restoreBatch","hint","deleteRecord","showDeleteConfirm","formatArrivalDate","formatDepartureDate","ownUseOff","ownUseOn","sourceHoldingFrom","sourceHoldingTo","formattedEndDate","getEndDate","modalShow","holdingSelection","selectHolding","holdingSummary","actionRequired","summary","isAmend","dobFci","tagNumberCheckbox","movementsGatherings","removeRow","dateTime","note","statusBatch","statusIndividual","user","spacer","x1","x2","x3","x4","newBatchNumber","newTagNumber","oldBatchNumber","oldTagNumber","quantityAnimalsAdded","approvedDisposalRoute","disposalHolding","reviewedNotifications","tableColumns","progenies","searchMovements","byDateAndCph","byMovementRef","deer","nonDeer","modalColumns","batchTagReplacement","individualActivityDetails","individualActivityDetailsAnimalsAdded","individualTagReplacement","byMovementReference","batchRemoved","individualRemoved","abattoirAttestationDetails","modalAnimalsOnHolding","modalAddBatch","modalFileUpload","modalManualTagNumbers","modalTagNumberRange","userNotes","availableTags","replacement","replacementSlaughterTags","vetAbattoirManualTag","initialSorting","individuals","errorClassNames","setCphType","setCphValid","setUserName","queryUserByCPH","userByCph","hasAddress","getAddressFromBff","Tab","isActive","tabSelected","navLink","TabsNavigational","tabsList","child","props","active","tabContent","AnimalActivityCustomTable","useLocation","line1","line2","showAddressOnLine","animalState","killDate","killHolding","notApplied","tagDispatchDate","replaced","locationHistoryList","tagDetails","dataProvided","initialSortBy","initialSortDirection","setDataProp","prop","store","dateApplied","systemDateApplied","replacementHolding","initialTaggingRequestId","rfid","genderSpecies","damTagNumber","sireTagNumber","geneticDamTagNumber","HoldingActivityCustomTable","holdingRegisters","holdingRegisterHoldingBatchNumbers","holdingBatchNumber","holdingBatchNumberId","holdingMHS","mhsNumber","holdingRegisterProductionTypes","productionType","holdingIntegration","singleBusinessIdentifier","partyId","samEmail","mobilePhone","keeperAddressPK","DropdownAgeRange","selectedValues","setSelectedValues","closeOnSelect","inputId","multiple","onFocus","theArray","getItemList","placeholder","printOptions","DropdownBreedsMulti","refreshFilters","setOptions","encodeURIComponent","refresh","filterOptions","DropdownGender","FieldLabel","outputLabel2","Hint","outputHint","classname","notFound","TextEntry","encrypted","fieldDescription","hideCharacterCount","maxLength","maxWidth","onBlur","onKeyDown","onKeyUp","onMouseLeave","reference","rows","warningLabel","lastKey","setLastKey","labelClassNames","inputClassNames","textbox","areaClassNames","textarea","countClassNames","count","handleChanges","onKeyDownHandlerInput","preventDefault","onKeyDownHandlerTextarea","keyCode","data-count","ref","SearchField","reduceSpace","AnimalsOnHoldingFilters","setTableParams","storeFilters","tableParams","ageRange","filterAgeRange","setFilterAgeRange","filterBreed","setFilterBreed","filterGender","setFilterGender","filterTagNumber","setFilterTagNumber","filtersInitialised","setFiltersInitialised","storedFilters","prevStateFilters","prevStoredFilters","typingTimer","clearTimeout","fieldSearch","fieldBreed","fieldGender","fieldAgeRange","RadioButton","defaultChecked","radioButton","RadioButtons","hideLegend","legendClassNames","suppressHint","suppressLabel","radioButtons","allFieldsDisabled","getRadioLabel","showIf","hideIf","itemId","itemLabel","itemValue","BoAnimalActivityFilters","hasData","loadPending","setRenderTable","useHistory","filterSpeciesName","setFilterSpeciesName","searchDisabled","setSearchDisabled","sheepAndGoatsPattern","deerPattern","submitButton","CheckboxGroup","legendLabel","objects","getLabel","checkboxLabel","checkboxGroup","CPHField","hideTooltip","isFormGroup","setCph","setKey","formGroupClassName","formGroup","caret","selectionStart","requestAnimationFrame","getElementById","getSelection","selectionEnd","newCphNumber","CPHEntry","addressClassNames","cphError","labelText","nonEnglishCph","defineCustomElements","_path","useListener","eventName","handler","removeEventListener","yearLength","localisation","buttonLabel","selectedDateMessage","prevMonthLabel","nextMonthLabel","monthSelectLabel","yearSelectLabel","closeLabel","keyboardInstruction","calendarHeading","dayNames","monthNames","monthNamesShort","mapDateFormat","DatePicker","onClose","onOpen","fieldCheck","theField","localization","dateAdapter","createDate","matches","getYear","yearToParse","InputDate","clear","dontValidate","errorPosition","maxDate","minDate","setClear","setError","setValue","warningPosition","dateField","dateFieldValue","reformattedValueForEndpoint","detail","hasInlineWarningOrError","setHasInlineWarningOrError","inlineWarningOrError","DateRange","allowTomorrow","fromDateError","fromDateRequired","maxRange","setFromDate","setFromDateError","setToDate","setToDateError","submit","submitDisabled","submitLabel","toDateError","toDateRequired","getDates","unit","disableSubmit","setDisableSubmit","fromMin","setFromMin","fromMax","setFromMax","toMin","setToMin","toMax","setToMax","dateRange","validateDate","which","hasError","fromDateIsInTheFuture","fromDateIsAfterToDate","fromDateFromIsOneYearBeforeToDate","toDateIsInTheFuture","toDateIsBeforeFromDate","fromDateFromIsOneYearAfterToDate","blockStyling","enter","DropdownSearch","isSearchable","isSearchEnabled","isSelect","optionList","pendingError","valueObject","setValueObject","selectClassName","classNamePrefix","formatGroupLabel","groupLabel","groupBadge","selectedValue","newEvent","filtersBoUserHoldingActivity","comingFromHolding","dateError","eventTypeOptions","filterDate","filterEventType","filterFromDate","filterToDate","setDateError","setFilterDate","setFilterEventType","setFilterFromDate","setFilterToDate","isFromTo","doNotClearData","sortBy","sortDirection","by","eventTypeAndDate","dateMax","BoHoldingActivityFilters","defaultEventTypeOptions","entries","itemKey","filterCph","setFilterCph","filterMovementType","setFilterMovementType","cphValid","setEventTypeOptions","cphType","holdingEventType","valHolding","doNotClearDataHolding","valueMovement","storedFiltersMovement","valueSpecies","storedFiltersSpecies","getColumnsByEventType","runRequest","queryHoldingRegisters","queryHoldingIntegration","processData","speciesAndMovementType","navigate","FieldEntry","alphaNumeric","isSplCharPasteAllowed","lPosition","inputBaseClassName","inputErrorClassName","inputClassName","onChangeHandler","ignoreSpecialChar","onBlurHandler","fieldLabel","onPaste","clipboardData","getData","onWheel","activeElement","blur","legendStyle","theTooltip","BoMovementSearchByDateAndCphFilters","sessionActiveTabId","fromCph","filterFromCph","setFilterFromCph","toCph","filterToCph","setFilterToCph","filterMovementRef","setFilterMovementRef","filterPaperId","setFilterPaperId","crossBorderError","setCrossBorderError","showRecordPaperMovementButton","setShowRecordPaperMovementButton","crossBorderReview","getApproved","departureCPH","destinationCPH","resetForm","premises","searchResultsMovements","newRequest","movementReferenceUndone","redirectTo","fromCphIsEnglish","toCphIsEnglish","filterRequestId","setFilterRequestId","resetTable","setResetTable","BoUserActivityFilters","userName","filterUserName","setFilterUserName","setCphError","taggingEventProperties","dateOfApplication","applicationItems","replaceItems","getAnimalCount","acceptedBatches","acceptedDevices","batchDetails","killedDevices","devicesWithDetail","isFullUndone","taggingDate","taggingQuantity","notificationQuantity","deathQuantity","animalsAddedQuantity","annualInventorySpecies","annualInventoryStocks","boUserActivityAssociatedHoldings","boUserActivityHoldingDetails","tableFiltersUser","Tabs","setActiveTabId","onClickTabItem","tabId","maxMovementRefLength","GatheringSearchFilters","setResultsLabel","sessionCph","sevenDaysAgo","filterActiveTabId","setFilterActiveTabId","filterCphNumber","setFilterCphNumber","filterMovementStatus","setFilterMovementStatus","firstSet","pageIndex","otherFields","validKeys","actions","right","_extends","assign","bind","arguments","apply","this","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_ref","svgRef","viewBox","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","ForwardRef","forwardRef","AboutPanel","descriptions","keepOpen","linkText","linkUrl","onToggle","open","styleContent","noSidebar","aboutPanel","desc","HoldingRegisterFilters","columnParams","setEventType","sixMonthsAgo","downloadPending","setDownloadPending","setEventTypes","checkboxId","selectedEventTypes","previous","UserActivityFilters","sessionAnimalsAdded","threeMonthsAgo","hasKeeperHoldings","getRequestTypeOptions","initialRequestTypeOptions","filterRequestType","setFilterRequestType","animalsAddedPending","setAnimalsAddedPending","requestTypeOptions","setRequestTypeOptions","setSearchEnabled","includeUndo","countOnly","Pagination","columnsNumber","numberOfPages","numberOfRecords","paginationParams","resultsLabel","showingXofY","pageXofY","recordsPerPage","setRender","jumpToPage","targetPage","hideTotal","colSpan","paginationContent","numRecords","totals","pageTotals","totalLabel","pages","aria-labelledby","btnPagination","arrowLeft","srOnly","arrowRight","pageSize","numberPerPage","Spinner","spinner","Table","filteredSessionFilters","addAll","addAllAbove","clearAll","fetchingDataLabel","filtersComponents","generatePostCall","hideColumnHeaders","hidePagination","initialPageIndex","initialPageSize","noDataIsError","noDataLabel","removeAllAdded","renderTable","rowLinks","searchState","setDataTotal","sessionFilters","loadError","setLoadError","setNumberOfRecords","setNumberOfPages","externalCancelTokenSource","setExternalCancelTokenSource","redirectWarningOrError","setRedirectWarningOrError","tableRowLinks","tagName","linkIf","rowData","cell","cells","tableData","customComponent","cellIndex","cellClassNames","sb","sd","rowIndex","data-hint","sessionData","postData","postResponse","postDataToStore","fetchPostData","sortedRecords","orderBy","dataToStore","numPages","AnimalSummary","batchesRejected","extraData","hideAnimalDetails","individualAnimals","individualAnimalsRejected","isReviewedAndRejected","noBottomBorder","printing","setBatches","setBatchesRejected","setIndividualAnimals","setIndividualAnimalsRejected","totalAnimals","recentDetailsLabel","setTotalIndividualAnimals","totalIndividualAnimalsRejected","setTotalIndividualAnimalsRejected","setTotalBatchAnimals","totalBatchAnimalsRejected","setTotalBatchAnimalsRejected","batchRejected","individualRejected","setPaginationParams","animalCount","totalAnimalsRejected","checkIcon","crossIcon","hourGlassIcon","displayHtml","clearSession","hasReference","confirm","displayLinkContents","Confirmation","buttons","isUnamendable","links","specificErrorLabel","isBackButtonClicked","setBackButtonPress","onBackButtonEvent","pushState","specificErrorCode","isCancellationPending","isCancellationError","referenceNumber","whatNow","parsedHtml","newMessages","statusAndMovementRef","withCheckIcon","labelWithReference","labelWithoutReference","statusClass","statusLabel","normal","contents","errorWarning","completedError","footer","completedErrorAndWarning","completedWarning","linkers","toViewPDF","toUrl","button","unListen","listen","actionButtons","DateSummary","dateString","confirmMode","date2Error","restrictArrivalDate","setDate2","setDate2Error","showBothDates","entryDay","entryMonth","entryYear","ExemptionSummary","displayExemption","FciSummary","animalsData","collapsible","isActivityDetails","numberBeingMoved","numberOfUnfitAnimals","animalsBeingMoved","FCINotSatisfied","FCISatisfied","FCINotSupplied","details","Backdrop","backdrop","querySelector","ModalConfirm","cleanUp","currentOpenModalId","confirmDisabled","setConfirmDisabled","onkeydown","modal","firstFocusable","querySelectorAll","currentOpenModal","observer","MutationObserver","mutations_list","mutation","removedNodes","removed_node","disconnect","observe","subtree","childList","hiddenInput","modalHeader","modalBody","modalFooter","TransportSummary","transportedByLabel","UserComment","userCommentRow","ActivityDetails","prevPermissions","prevHolding","setPermission","allHoldings","setSpeciesId","setRequestType","setRequestId","setMovementDocumentRef","setReviewStatus","movementDocumentRefCorrected","setMovementDocumentRefCorrected","setDepartureDate","setArrivalDate","setEventDate","cancelPending","setCancelPending","setExtraData","setTransportInformation","setFciDetails","setMetFCIWithdrawalPeriods","setHideAnimalDetails","confirmUndo","setConfirmUndo","confirmAmend","setConfirmAmend","isMissingOrFound","setIsMissingOrFound","setIsMissing","setPrinting","returnUrl","onafterprint","cancelButton","cancelPrompt","cancelTitle","confirmLabel","contentSubmission","dateHeader","failedCancellationLabel","subTitle","addressHeader","amendButton","fciHeader","locationFrom","locationTo","movementRefCorrected","transportHeader","cancellationPending","confirmContent","amendMovement","sessionDepartureDate","sessionArrivalDate","transferDate","amend","inBusinessMovement","isPermitMoveExemption","mandatoryExemption","dataFlag","selectedAnimalDetails","unfitAnimal","movementArrivalDate","deviceApplication","movementRecordTagAllocationDetails","movementTagApplicationDate","movementYearOfBirth","movementBreed","movementRecordAnimalDetails","movementGender","movementRecordTransportInformation","movementFciRecordFci","movementTransportInformation","driverFirstName","driverLastName","authorisationNumber","ownerFirstName","ownerLastName","movementFciAnimalsSatisfy","movementFciUnfitAnimals","movementFciWithdrawalPeriod","movementFciHoldingRestrictions","movementFciNonComplianceReason","originalMovement","returnState","activityUrl","redirectToMovementSummary","confirmRequestType","confirmRequestId","confirmPollingStatus","confirmPollingErrors","confirmPollingWarnings","tagClassname","flagId","fetch","activityData","stateData","source1","source2","source3","holdingToSelect","isPermitMoveCheck","isPermitMoveDates","getMovementType","defaultHolding","isSheepOrGoats","tempBatches","tempBatchesRejected","tempIndividualAnimals","tempIndividualAnimalsRejected","dateAnimalsWereLocated","createBirthList","deathofUntaggedAnimals","group","requestDate","rejectedBatches","rejectedDevices","dateOfBirthRangeStart","batchReplacing","batchReplaced","deviceReplacing","deviceReplaced","item1","item2","setPreviousPermissionsAndHolding","dateOfBirthRange_Start","dateOfBirthRange_End","geneticDam","birthDam","sire","downloadAnimalList","individualTagNumbers","Quantity","tagsNotMoved","individualErrorTags","tagsNotMovedLabel","individualErrorTag","batchesNotMoved","rejectedDevice","rejectedBatch","totalRejectedBatchAnimals","source4","statues","arrivalReviewStatus","reviewRequestId","reviewStatusStatus","departureReviewStatus","tableFilters","onpopstate","undoRequestId","undoRequestType","pollingStatus","pollingErrors","pollingWarnings","newWarnings","newErrors","errorText","print","exit","stepPicker","Modal","footerContent","headerContent","showConfirmation","submitChanges","submitPending","FileUpload","acceptExtendedCsv","addDate","hideHint","hideLabel","maxTagsAllowed","notes","onUpload","setAnimalsToChange","sessionBreeds","selectedFile","setSelectedFile","invalidFileError","setInvalidFileError","fileError","setFileError","fileTypeError","setFileTypeError","maxRecordsError","setMaxRecordsError","buttonRef","createRef","currentYear","validDate","lcGender","handleOpenDialog","fileUpload","fileBrowser","delimiter","encoding","noClick","noDrag","onFileLoad","file","parsedData","parsedKey","dateParts","matchedBreed","el","browseWrap","newTags","formattedDevice","originalIdentifier","duplicateWithIndexes","uniqueTags","ModalAddAnimalsToHolding","addDateError","confirmReUpload","setAddDate","setAddDateError","setUploadPending","upload","uploadPending","dataHasInvalidTags","dataHasNonEidTags","infoOpen","setInfoOpen","getHelpAndGuidance","translations","viewSummary","getConfirmation","input","tableContainer","Animals","desc1","desc2","desc3","desc4","desc5","modalVisible","setModalVisible","confirmCloseModal","setConfirmCloseModal","confirmSubmitModal","setConfirmSubmitModal","confirmUploadNewFile","setConfirmUploadNewFile","setSubmitPending","modalHasChanges","setModalHasChanges","modalAnimals","setModalAnimals","modalAddDate","setModalAddDate","modalAddDateError","setModalAddDateError","setShowConfirmation","setPolling","tempUploadedTags","setTempUploadedTags","closeAndReset","confirmUpload","getFooterContent","invalidAnimals","duplicateAnimals","summaryText","getHeaderContent","getModalId","hide","confirmClose","newModalAnimals","saveDisabled","addDateIsInTheFuture","addDateIsOverSevenDaysAgo","uploadedTags","saveChanges","tableFilter","finally","AnimalDetails","animalsList","showProgeny","currentId","setCurrentId","displayTagNumber","animalItem","formattedDob","formattedAge","initialTagging","createDataWithExtraInfo","animalInfo","accordions","recentlyUsedHelper","setRecentlyUsedList","dropdownType","selectedOption","storedDropdownName","recentlyUsedList","setRecentlyUsedBreedList","storedBreedDropdownName","getRecentlyUsedList","DropdownBreeds","itemList","recentlyUsed","setRecentlyUsed","optionsToSend","setOptionsToSend","updateRecentList","breedsCheck","setItemList","listLabel","DropdownDamIds","DropdownSireIds","DropdownTagNumbersAvailable","applicationDate","includeSystemAppliedTags","systemAppliedTagsPresent","setSystemAppliedTagsPresent","notAppliedTagsPending","setNotAppliedTagsPending","systemAppliedTagsPending","setSystemAppliedTagsPending","isSystemApplied","systemAppliedTagNumber","DropdownGeneticDamIds","GeneticDamTab","geneticDamAI","geneticDamIdError","geneticDamTabs","setGeneticDamAI","setGeneticDamId","sireTabs","sessionDataChanged","dataChanged","setDataChanged","setTagNumber","setBreedId","birthDamId","setBirthDamId","setSireId","sireAI","setSireAI","setGender","setEmbryo","entryDate","setEntryDate","entryDateError","setEntryDateError","entryDateWarning","setEntryDateWarning","registerAnother","setRegisterAnother","setGeneticDamIdError","genderError","setGenderError","activeTabGeneticDam","setActiveTabGeneticDam","activeTabSire","setActiveTabSire","tagNumberLabel","handleSubmit","errorCount","validateForm","reset","dateIsOver27DaysAgo","dateIsInTheFuture","birthActiveTabGeneticDam","birthActiveTabSire","birthBreed","birthBirthDate","birthEmbryo","birthGeneticDamId","birthGeneticDamAI","birthGender","another","birthRegisterAnother","birthSireAI","birthSireId","birthTagNumber","sessionTagNumber","sessionBirthDate","sessionBreed","sessionGender","sessionEmbryo","sessionBirthDamId","sessionSireId","sessionSireAI","sessionActiveTabGeneticDam","sessionActiveTabSire","sessionGeneticDamId","sessionGeneticDamAI","idle","_g","x","y","xmlSpace","transform","_path2","_path3","_path4","_path5","preserveAspectRatio","clipRule","PageTitle","pageTitleOne","pageTitleTwo","pageTitle","h1","arrow","SectionTitleBar","sectionTitleBar","iconContainer","CompletedError","CompletedWarning","statusErrorHint","statusWarningHint","BoAnimalActivity","sessionAnimalActivity","searchResultsAnimalActivity","getPageSubTitle","DisplayValue","valueChecked","displayValue","multiValues","VerifyCustomerInformation","keeperEmail","keeperEmailOld","setKeeperEmailOld","keeperEmailNew","setKeeperEmailNew","keeperEmailValid","setKeeperEmailValid","setHoldingId","setKeeperAddressPK","setPartyId","setSingleBusinessIdentifier","partyIdError","setPartyIdError","email","validateEmail","contactNumber","verifyCustomerInformation","keeperDetails","modalMessages","BoEditCustomer","disabledOptions","Exemptions","hasErrors","needUpdate","panelTitle","permitMove","sessionMovementExemptions","movementExemptions","ex","selectedExemptions","FoodChainInformationHelper","choiceDisabled","disabledIcon","doAnimalsSatisfy","setAnimals","setDoAnimalsSatisfy","setFciData","setHoldingRestrictions","setNonComplianceReason","setRecordFCI","setUnfitAnimalTagNumbers","setWithdrawalPeriod","unfitAnimalTagNumbers","permission","dataHasChanged","animalTagNumber","satisfy","eventTarget","setRadioChoice","FoodChainInformation","setAnimalDetails","recordFCIBO","setRecordFCIBO","doAnimalsSatisfyBO","setDoAnimalsSatisfyBO","paginationParamsBO","validateTextFields","characterLimit","changeHoldingRestrictions","sessionRecordFCIBO","sessionAnimalsSatisfyBO","sessionUnfitAnimalsBO","sessionNonComplianceReasonBO","sessionWithdrawalPeriodBO","sessionHoldingRestrictionsBO","foodChainInformation","labelBold","NumberEntry","numberEntry","eventObject","ctrlKey","LocationAddressDate","dateLabel","isPaper","numberReceivedError","numberReceivedLabel","pmMove","changeFunction","newValue","validatePermitMoveComment","manualCPH","dateIsXDayAheadOverLimit","dateIsXDayAhead","movementDepartureDate","movementAnimalTotal","numberReceived","locationAndDate","CPH","movementFromHolding","movementToHolding","pmDate","monthsShown","animalsReceived","pow","AddBatch","batchHeader","setBatchList","setBatchTotal","speciesLabel","totalAnimalsError","setTotalAnimalsError","setBatch","groupAnimalClassname","warningClassname","addBatch","hidden","PaperAnimalBatch","removeAllBatches","movementBatchList","newBatchList","removeAllAnimals","itemsTotal","AddTagRange","batchNumberError","setBatchNumberError","totalAnimalsLimitError","setTotalAnimalsLimitError","setBatchNumber","startNumber","setStartNumber","setTotalAnimals","tagRangeSubTitle","batchNumberLabel","validResult","batchNum","startNum","numberOfLeadingZeros","tagNum","uuid","prevArray","validateTags","ManualTagEntry","textFieldTags","setTextFieldTags","backOfficeTagEntry","validTags","manualTagEntry","tagArray","PaperAnimalIndividual","setValidationState","setSelectionMethod","newAnimalDetails","movementAnimalsBeingMoved","animalToRemove","method","PaperTransport","haulierNameError","setTransportDetails","transportAuthNumberError","transportDetails","transportDetailsError","authNum","movementAuthorisationNumber","transportAuthorisationNumber","movementTransportedBy","transporterName","movementTransporter","regNum","movementVehicleRegistrationNumber","vehicleAndHaulier","vehicleRegiatration","mapHaulierName","isNonCPH","movementData","animalDetail","nonMatchDevices","nonMatchDevicesWithDetails","batchItem","newMovementGroups","movementGroup","matchedTagNumber","matchedBatchNumber","BoEditMovement","ERR_TEMPLATE","setMovementReference","setMovementData","setSpecies","departDataInit","setDepartDataInit","departData","setDepartData","arriveDataInit","setArriveDataInit","setArriveData","transportData","setTransportData","exemptionOptions","setExemptionOptions","batchListInit","setBatchListInit","batchTotal","animalDetailsInit","setAnimalDetailsInit","pageErrors","setPageErrors","pageWarnings","setPageWarnings","marketType","setMarketType","setMovementType","departureDateError","setDepartureDateError","arrivalDateError","setArrivalDateError","departureHoldingError","setDepartureHoldingError","destinationHoldingError","setDestinationHoldingError","destinationDetailTotalAnimalsReceivedError","setDestinationDetailTotalAnimalsReceivedError","transportDataError","setTransportDataError","setHaulierNameError","setTransportAuthNumberError","exitClicked","setExitClicked","submitted","setSubmitted","setMovementRef","setPaperId","setPollingStatus","setChoiceDisabled","setValidationError","setPmMove","isInBusinessMovement","setIsInBusinessMovement","pageContent","animalBatch","arrivalLocation","searchedData","holdingRestriction","showIsByDestination","setTransportDetailsError","restrictions","reason","fixedActionsHeight","marginBottom","offsetHeight","setMargin","sources","holdingRes","isInBusiness","movementRefNo","recordByDestination","departureDetails","arrivalDetails","mapRecordedBy","getRecordedByFromData","animalDetailsToRestore","batchListToRestore","displayConfirmation","onClickEvent","goBack","fixedActions","mapSourceHolding","altErrors","trackingId","finalAnimalDetails","numberOfAnimalsSelected","originalMovementId","sessionRequest","previousRequest","handleSubmissionResponse","BoHoldingActivity","sessionHoldingActivity","searchResultsHoldingActivity","area","hdContainer","SourceDocument","setProps","documentIdRef","validation","validateElements","documentType","getError","dateToValidate","receivedDate","receivedDateError","idValid","documentId","documentIdError","validateDocumentId","dateValid","speciesValid","speciesError","validateSpecies","typeValid","documentTypeError","validateDocumentType","sourceValid","documentSource","documentSourceError","validateDocumentSource","prev","sourceDocument","inputError","UserNotes","setNotes","noteText","setNoteText","addNote","canRemove","removeNote","addUserNote","transportType","getErrorIndexes","incomingError","BoPaperDetails","undoStatus","setUndoStatus","setPostType","setNeedUpdate","emptyStates","sourceDocumentProps","sourceDocumentInit","setSourceDocumentInit","setSourceDocument","setSourceDocumentProps","transportDataInit","setTransportDataInit","optionsInit","setOptionsInit","isExemptionsValid","setIsExemptionsValid","exemptionsValidation","setExemptionsValidation","setUserNotes","validationState","validateCount","setValidateCount","setAsyncId","setValidation","func","resetExemptions","getCount","sdp","resetPage","emptySession","confirmSubmitType","confirmAsyncId","validatePaperMovement","validateBO","getSubmissionParams","errorList","errorItem","matchTargets","lastError","lookupErrorWarningField","errArray","warningItem","lastWarning","warningArray","invalidBatches","lastIndexOf","checkCodes","invalidIndividualAnimals","errorObject","invalidateSourceDocumentProps","typeIdentifier","animalStatus","aId","confirmPaperId","confirmMovementReference","rId","paper_Id","confirmPmMove","processPermitMoveErrors","confirmStatus","recordAnother","transport","createDepartureDetail","manualEntryHoldingAddress","createArrivalDetail","totalAnimalsReceived","removeManualCPH","validated","documentSourceFormat","noteDate","notification","notificationTitle","needReset","appContent","removeAttribute","isPmMove","sourceDocumentSection","scannedDocumentId","doc","departureSection","transportSection","destinationSection","createBatchesSection","createDevicesSection","clickEvent","getConfirmId","BoSearchMovements","sessionMovementSearch","BoSearchRequestId","BoUserActivity","sessionUserActivity","searchResultsUserActivity","queryList","searchHelper","searchCPH","searchQuery","setSearched","setSearchNoResults","queryItem","api","VARecordDeclaration","holdingBOResult","setHoldingBOResult","filterData","declarationId","boCphNo","query","printClasses","boVaDeclaration","boTitleSection","boheaderPrint","logo","CompanyPrintLogo","mainContanier","titleSection","bottomBorder","bodySection","summaryBlock","topSpace","vetName","vetEmployer","vetEmploymentAddress","declarationBlock","fontBold","declartionContent","MessageBanner","VerifyCustomerSearch","enabledSearch","onClear","onSearch","verifyCustomerSearch","holdingCPH","holdingFlock","keeperTelephone","VerifyCustomerResults","searched","searchPending","initialSearchInputs","matchIgnoredError","hasOnlyCPHData","holdingInfo","holdingTypeName","holdingTypeFullName","keeperDetail","keepersDetail","BoVerifyCustomer","setSearch","searchInputs","setSearchInputs","setEnabledSearch","setSearchPending","updatedInputs","isValidCHP","errorArray","completedSearchResponse","fetchKeeperDetail","canSearchKeeperDetail","info3isComment","showBorder","noBorder","dates","showFCI","setShowFCI","toggleFCI","fciSummary","determineIfMovementInBusiness","setIsInBusinessMove","requestSent","acceptedAndRejectedAnimals","requestIdUndone","devicesRejected","fciWithdrawalPeriods","responseRequestType","animalDetailsRejected","totalBatchesAndDevices","batchMovementId","idMark","stockType","cancelledMovementReference","cancelledMovementsList","originalMovementRef","movementHolding","movementSubTitle","spawnToken","requestToBeUndoneId","originalMovementReference","rejectedAnimals","statuses","initialProcessData","bothEnglishHoldings","initRequest","BoViewMovement","setDoc","setTotalAnimalsRejected","showAmendButton","setShowAmendButton","showConfirmModal","setShowConfirmModal","setConfirmMode","setAction","movementReferences","setMovementReferences","movementAnimals","viewErrors","setViewErrors","viewWarnings","setViewWarnings","viewStatus","setViewStatus","isPermitMovement","setIsPermitMovement","retrieveMovementReferences","processCommonData","restInData","devicesTotal","rejectedDevicesTotal","batchesTotal","rejectedBatchesTotal","setTInfo","processExemptions","confirmMovement","confirmMovementCancel","goBackSearchPage","undoConfirmation","getCph","recordedByDestination","handleSubmission","createConfirmQuery","isMoveToCommonLand","tempData","removedBatches","removedDevices","outData","isAccepted","createRejectQuery","postQuery","apiCall","submitConfirm","submitReject","submitUndoDelete","submitUndo","submitUndoReview","determineButtonsToShow","saveMovementRequestToSession","initData","initPromises","initRequestData","cancelledReviewPromises","dataProcessingAsync","isPreMovement","movementPendingId","displayErrorOrWarnings","listOfStatus","newList","crossBorderMove","moreThan1Record","isXBReportMove","isCPHUnknown","isCrossBorderMove","isReportEnglish","isEmpty","deleteConfirmation","rejectedConfirmation","BoViewRequestId","dataContent","requestHasData","disposalDate","followingAnAmendment","requestTypeLabels","10","14","15","31","141","142","145","165","229","238","240","241","242","243","244","246","requestTypeLabel","requestTypeName","getRequestTypeLabel","reqId","tableFiltersRequestId","ConnectionCheck","connectionOK","setConnectionOK","animalTotalLabel","batchNumberOptional","updateBatchList","replacementErrorLabel","batchOptionalLabel","totalNumberOfAnimals","validatedBatchNumber","originalBatchNumber","formattedBatchNumber","addAnimals","addDisabled","freezeBrand","available","DeathsStep1","setDeathData","isCattle","desc2Label","setAnimalsOnHolding","setAnimalsBeingMoved","setIdentificationType","selectionType","setSelectionType","deathDate","setDeathDate","deathDateError","setDeathDateError","deathDateWarning","setDeathDateWarning","birthDate","setBirthDate","birthDateError","setBirthDateError","birthDateWarning","setBirthDateWarning","calfDiedBeforeTagging","setCalfDiedBeforeTagging","setBreedName","birthDamIdError","disableCalfBefore","setDisableClfBefore","setSubmitDisabled","setRefreshFilters","uniqueNewTags","animalsBeingMovedCopy","deathAnimalsBeingMoved","addAnimalsAll","newAnimalsBeingMoved","deathBatchList","deathBirthDamId","deathBreed","deathDiedBeforeTagging","deathBirthDate","diedBeforeTagging","whichDate","deathIdentificationType","deathSelectionType","newState","removeAnimalsAll","removeAnimalsAllInvalid","toggleAnimal","newAnimal","sessionSearchResults","sessionAnimalToToggle","batchDescription","deathDateIsInTheFuture","deathDateIsOverSevenDaysAgo","birthDateIsInTheFuture","birthDateIsOverSevenDaysAgo","birthDateIsAfterDeathDate","sessionDeathDate","sessionIdentificationType","sessionSelectionType","sessionBatchList","sessionAnimalsBeingMoved","sessionCalfDiedBeforeTagging","disableFlag","DropdownHoldings","currentHolding","RecentHoldings","ownHoldingKeys","ownHoldings","recentlyUsedDeathHoldings","recentlyUsedDepartureHoldings","recentlyUsedDestinationHoldings","setOtherHolding","removeUsersHoldings","recentlyUsedHoldings","myOwnHoldingKeys","OtherHoldingSelection","autoSelect","setInBusinessMovement","sessionTabId","activeTabIdOtherHoldingSelection","recentTabId","recentTabLabel","searchValue","setSearchValue","buttonDisabled","setButtonDisabled","includesOwnHoldingsError","setIncludesOwnHoldingsError","sameHoldingError","setSameHoldingError","setKnowCPHNumber","searchType","setSearchType","searchNoResults","setCphNumber","cphNumberError","setCphNumberError","setFsaNumber","setHoldingType","setHoldingName","setHoldingPostcode","holdingTable","setHoldingTable","totalRecords","setTotalRecords","clearAllInputs","updateTab","recentHoldingPresent","searchForHolding","searchByCPH","buildHoldingItem","holdingAddressObject","holdingResult","filteredResult","confirmSearchCorrect","allResults","updateHolding","selectedCPH","movementInBusiness","updateCPHFSAFlag","cphFsaFlag","updateSearchType","searchTypeFlag","updateCphNumber","updateFsaNumber","newFsaNumber","updateHoldingType","newHoldingType","updateHoldingName","newHoldingName","updateHoldingPostcode","newHoldingPostcode","viewType","singleSearch","multiSearch","holdingTypeDropdown","holdingTypesDropdown","holdingsDropdown","DeathsStep2","deathData","sessionCurrentHolding","sessionOtherHolding","recentlyUsedHolding","batchesDataProp","setAnimalsData","tagOnly","numberOfAnimalsInBatches","numberOfIndividualAnimals","totalAnimalsInMovement","Summary","missingOrFoundData","setMissingOrFound","numberOfDeadAnimals","setNumberOfDeadAnimals","numberOfMissingOrFoundAnimals","setNumberOfMissingOrFoundAnimals","setHoldingInfo","dateMissingLabel","dateFoundLabel","postDeathData","postMissingOrFoundData","redirectDeath","deathAmend","promptPathList","sessionDeathData","removeBatchesAll","removeBatchesAllInvalid","removed","MovementDates","movementDateString","arrivalDateFormatted","departureDateFormatted","TransportInformationBox","numberMoved","Handshake","movementNotificationArrivalDate","handShakeData","sessionStorage","originalData","setPage","accept","setAccept","handshakeId","animalDataChanged","setAnimalDataChanged","setPollingErrors","setPollingWarnings","animalsAddedOrRemoved","setAnimalsAddedOrRemoved","showRejectModal","setShowRejectModal","sessionAnimalTotal","setSessionAnimalTotal","returnToHoldingSummary","returnToUserActivity","viewMovementDocument","processResponse","addedDevices","reviewDevice","addedDevice","removedDevice","addedBatches","reviewBatch","addedBatch","removedBatch","animalsRemoved","uniqueBatches","unique","reduceItem","findItem","mapItem","newMovementOutData","recordAnimalDetails","recordAnimalTagAllocationDetails","postHandshake","getConfirmLabel","newData","animalsPresent","sessionAddedAnimals","movementNotificationAddedAnimals","batchesPresent","sessionAddedBatches","movementNotificationAddedBatches","newDeviceList","sessionRemovedAnimals","movementNotificationRemovedAnimals","sessionRemovedBatches","movementNotificationRemovedBatches","sessionRemovedDevices","setMovementDateArrival","departureDateMoment","arrivalDateMoment","retainedData","removedAnimal","movementNotification","sessionAnimalTotalBatches","sessionAnimalTotalIndividual","formatInfoData","exitBtn","HoldingSummary","notificationsWarning","NavBarSub","navSub","menuItems","linkTo","hideForSpecies","showForSpecies","menuItem","menuItemKey","isVisible","checkMenuItemVisibility","activeClassName","activeIf","ModalProductionTypes","holdingProductionTypes","setProductionTypesSubmitted","productionTypes","setProductionTypes","initialProductionTypes","setInitialProductionTypes","setDisabled","selectedTypes","initProdTypes","returnData","holdingProductionTypeId","initialItemStatus","HoldingRegisterDetails","setHolding","productionTypesSubmitted","animalType","productionTypeId","addProductionTypesLink","ModalAdjacentMovements","modalData","modalMode","setConfirmAction","setDeleteData","setModalSubmitted","currentCph","adjacentHolding","setAdjacentHolding","setFrequency","adjacentMovementId","setAdjacentMovementId","adjacentHoldingError","setAdjacentHoldingError","holdingLinkTypeId","setHoldingLinkTypeId","frequencyList","setFrequencyList","submitStatus","setSubmitStatus","submitError","setSubmitError","fromDateIsOver1DayInTheFuture","toDateIsOver1DayInTheFuture","holdingLinkTypeOption","holdingLinkTypeOptionId","tempToDate","inBusiness","DropdownYear","doNotAllowCurrentYear","previouslySubmittedYears","yearsArray","numberOfYears","buildYearsList","AnnualYear","displayName","groupHint","incoming","theYear","monthUi","ModalAnnualInventory","numberHint","numberLabel","reportDate","setReportDate","inventoryMonth","setInventoryMonth","inventoryYear","setInventoryYear","totalNumber","setTotalNumber","setDay","setMonth","setStockType","dateIsBeforeInventoryDate","dateIs31DaysAfterInventoryDate","HoldingRegister","sessionPermissions","setReturnUrl","setModalData","setModalMode","modalSubmitted","confirmAction","deleteData","deletePending","setDeletePending","deleteConfirmed","setDeleteConfirmed","rowToDelete","setRowToDelete","supportedRequestTypes","mode","getHint","isBoConfirmOrAmend","getLinkIf","getOnClick","getState","getUrl","hrContainer","UserActivity","setRequestTypes","sessionRequestTypes","HoldingButton","holdingKey","Home","myHoldingTabActive","userActivityTabActive","totalNotifications","setTotalNotifications","setHoldings","numHoldings","setNumHoldings","notificationsBanner","bannerClasses","setBannerClasses","disableHoldingAccess","setDisableHoldingAccess","noteClassname","notifications","sourcesArray","numberOfHoldings","sortedHoldings","isShown","holdingsQueryString","specificHolding","numberOfNotifications","animalTypesNotifications","notificationsLoading","notificationsPresent","notificationsNotPresent","notificationCount","notificationDescription","strippedHolding","toggleHolding","selectedHolding","notificationsWrapper","AuthNavigation","landingVar","instance","useMsal","authNavigation","logoutRedirect","loginRedirect","VetAuthNavigation","Footer","nav","info","LandingModal","modalOpen","modalContent","stopPropagation","modalCloseIcon","WelcomeBanner","intro","welcomeBanner","welcomeBanner__container","welcomeBanner__title","welcomeBanner__intro","welcomeBanner__content","Landing","eventError","setEventError","setLandingVar","setOpen","isCookieExist","setIsCookieExist","checkMsalStatusCookie","Cookies","msalStatusExisting","checkCookieTime","LoginUI","lazy","redirectPage","LandingLink","externalWindow","landingLink","setCookie","cookieValue","expires","Suspense","fallback","topBody","linkGroup","heading","lowerContent","Logout","MissingAndFoundStep1","setMissingOrFoundData","dateLostLabel","missingFoundLabel","dateIsOverAYearAgo","addAnimal","newAnimalsOnHolding","findIndex","missingAndFoundAnimalsBeingMoved","missingAndFoundBatchList","missingAndFoundDate","missingAndFoundIdentificationType","missingAndFoundReportType","sessionReportType","sessionEntryDate","MissingAndFound","sessionMissingAndFoundData","summaryDescription","AnimalsBatches","batchListValidation","DropdownBatchNumbersAvailable","validationPending","isDropdown","isGatheringMovement","quantityLimitError","setQuantityLimitError","batchNumberValid","setBatchNumberValid","batchNumberNonEid","setBatchNumberNonEid","setQuantity","batchNumberEid","quantityLimit","addBatchRow","fullTagNumber","listOfTags","AnimalsIndividuals","animalDetailsValidation","setAnimalDetailsValidation","uploadAnimalDetails","hasWarning","setHasWarning","errorAnimals","warningAnimals","findPermitExemption","sessionOriginalExemptions","originalMovementExemptions","sessionExemptions","sessionRecordFCI","sessionAnimalsSatisfy","sessionUnfitAnimals","sessionNonComplianceReason","sessionWithdrawalPeriod","sessionHoldingRestrictions","MovementType","TransportDetails","setAuthorisationNumber","setTransportedBy","setTransporterName","setVehicleRegistrationNumber","vehicleRegNoError","MovementsGatherings","sessionMovement","validateErrors","setValidateErrors","sessionRequestId","setVehicleRegNoError","setResetForm","sessionStatus","sessionMovementReference","setIsAmend","amendChangedData","setAmendChangedData","setDepartAddress","arriveAddress","setArriveAddress","resetAddresses","setDataFromSessionStorage","departureDateFromIsAfterDestinationDate","departureDateIsMoreThanOneDayBeforeArrivalDate","destinationDateIsInTheFuture","destinationDateIsBeforeDepartureDate","destinationDateIsMoreThanOneDayAfterDepartureDate","registrationNumber","daysAhead","cphAndDate","animalDetailsCopy","clearTransporterName","addressCheck","movementOtherHoldingAddress","exemptionsList","movementMarketType","oldDepartCPH","oldArriveCPH","newAnimalsDetails","returnToHomePage","returnTo","homePage","pdf","movementSummary","sessionMovementOriginal","sessionMovementType","sessionMovementInBusiness","sessionTransportedBy","sessionTransporter","sessionVehicleRegistrationNumber","sessionAuthorisationNumber","sessionIndividualAnimals","sessionFciData","original","dateFromField","dateToField","checkSubmitButtonStatus","origMovementData","tempMovementData","selectedTempExemption","changesPresent","movementFci","datesSection","hasAddresses","mapResponse","processArea","responseRequestId","responseStatus","responseMovementRef","tempParams","sessionErrors","sessionWarnings","withErrorsOrWarnings","submissionConfirmation","MovementStep1","fromSummary","movementExempt","setMovementExempt","setRecordCPH","showExemptions","setShowExemptions","departureDateWarning","setDepartureDateWarning","holdingSelectionError","setHoldingSelectionError","arrivalDateDisabled","setArrivalDateDisabled","setComment","setIsMoveToCommonGround","businessMove","dateIsOverThreeDaysAgo","movementComment","openOrHiddenExemptionList","isOpen","clearedExemptions","movementRecordCPH","permitMoveExemptions","sessionRecordCph","sessionMovementExempt","sessionComment","sessionShowExemptions","exemptionOptionsSelected","userCommentEdit","submitValues","ModalAddBatch","ModalAnimalsOnHolding","setModalAnimalsInitial","toggleAllAnimals","numberOfAnimalsOnHolding","setNumberOfAnimalsOnHolding","animalsToChangeOnHoldingsOnly","ModalFileUpload","isTagLimitExeed","uploadInPopup","setuploadFile","ModalTagNumberRange","addRange","ModalManualTagNumbers","MovementStep2","addByBatchOrIndividual","setAddByBatchOrIndividual","setRecordAnimalTagAllocationDetails","yearOfBirth","setYearOfBirth","setApplicationDate","modalAnimalsInitial","cancelTokenSource","setCancelTokenSource","animal1","animal2","modalAnimalsCopy","toggleAllAnimalsOnHolding","toggleAnimalOnHolding","batchesString","summaryTotal","sum","addAnimalsByBatchOrIndividual","batchListCopy","reducedBatchList","foundItem","elem","existingItem","recordTagAllocationDetails","clearTaggingAndAnimalAllocationDetails","newAnimalsToChange","ResetfciData","selectedBatches","batch1","existingBatch","batch2","removedAnimals","addedAnimals","selectedAnimals","tagApplicationDate","sessionRecordAnimalDetails","sessionRecordTagAllocationDetails","selectedAnimalSessionData","sessionTagApplicationDate","sessionYearOfBirth","animalLists","accordionHeader","selectionMethods","movementSelectedAnimalDetails","Dropdown","selectOption","DurationInput","hoursError","isTimePicker","maxTime","minTime","minutesError","setHoursError","setMinutesError","setTime","time","timePicker","timePickerInput","selected","showTimeSelect","showTimeSelectOnly","timeCaption","timeIntervals","durationInput","TransportDetailsForm","depTime","contactDetailsIndex","contactPhoneError","driverFirstNameError","driverLastNameError","ownerFirstNameError","ownerLastNameError","setContactDetailsIndex","setContactPhone","setContactPhoneError","setDepartureTime","setDriverFirstName","setDriverFirstNameError","setDriverLastName","setDriverLastNameError","setDurationOfJourney","setOwnerFirstName","setOwnerFirstNameError","setOwnerLastName","setOwnerLastNameError","setTransporter","setTransportError","transportError","vehicleRegistrationNumberError","dropdownOptions","setDropdownOptions","isInteger","setHours","setMinutes","getContactLabel","contact","phone","vehicle","createContactsDropdownOptions","contactList","whoseName","firstOrLast","phoneNumber","onSelectContactDetails","localStoreGetter","selectedIndex","storedContact","authNumber","storedDropdownOptions","recentlyUsedDestinationTransportDetail","recentlyUsedDepartureTransportDetail","recentlyUsedHaulierTransportDetail","driverInformation","authorisationNumberError","durationOfJourneyError","setAuthorisationNumberError","setDurationOfJourneyError","MovementStep3","setRecordTransportInformation","setVehicleRegistrationNumberError","updateTransportDetail","getStoredDetails","setStoredDetails","drvFirstName","drvLastName","ownFirstName","ownLastName","tempDrvFirstName","tempDrvLastName","tempOwnFirstName","tempOwnLastName","tempPhone","tempVehicle","tempAuthNumber","tempHaulier","newRecord","existingElement","clearTransportDetails","movementContactPhone","movementDriverFirstName","movementDriverLastName","movementOwnerFirstName","movementOwnerLastName","movementDepartureTime","movementDurationOfJourney","sessionRecordTransportInformation","sessionContactPhone","sessionDriverFirstName","sessionDriverLastName","sessionOwnerFirstName","sessionOwnerLastName","sessionDepartureTime","sessionDurationOfJourney","hasOnlyZeros","every","val","FciFormFields","InfoContainer","infoTitle","informationMessage","MovementStep4","setFCIData","setActions","setFinalAnimalDetails","setFromSummary","submitMovement","fciStoredData","Movements","animalSelectionDetails","setAnimalSelectionDetails","exemptionsLoaded","setExemptionsLoaded","movementsUrl","storedfci","newExemptions","foundExemption","amendWithErrors","MovementSearchGatherings","tableFiltersGatheringSearch","ErrorPage","showError","errorWrapper","Banner","setShowNav","showNav","wrapperRef","toggleClassname","toggleNav","userDropDown","setUserDropDown","toggleUserDropdown","handleClickOutside","contains","useOutsideAlerter","headerPrint","homeLink","CompanyLogo","userInfo","userOptions","Loading","Holding","NavBar","resetErrorBoundaries","alwaysShow","menuItemsByUserRole","menu","setMenu","currentMenu","vetMenu","homeIcon","Header","HeaderBackOffice","menuOpen","closed","toggleMenu","navBar","bar","closeIcon","navMenu","BackOfficeUI","PublicUI","ProtectedRoute","exact","MountComponent","usersAllowed","useErrorBoundary","didCatch","ErrorBoundary","isLogin","idleTimerRef","isUserIdle","setIsUserIdle","getScreenSize","innerWidth","eventsThrottle","onActive","onIdle","timeout","DropdownMonth","TagApplication","isSheepOrGoat","batchHeaderLabel","desc1Label","setTagType","setWarnings","applicationDateError","setApplicationDateError","monthOfBirth","setMonthOfBirth","setGenotype","checkWarning","oldValue","oldAnimalsToChange","tagApplicationAnimalsToChange","existingAnimal","tagApplicationBatchNumber","newBirthDamId","tagApplicationBirthDamId","oldBreed","tagApplicationBreed","oldBreedId","oldComment","tagApplicationComment","oldDate","tagApplicationBirthDate","tagApplicationEmbryo","tagApplicationGeneticDamAI","tagApplicationGeneticDamId","newGender","oldGender","tagApplicationGender","tagApplicationGenotype","tagApplicationMonthOfBirth","padTagNumber","paddedTagNumber","tagApplicationTagNumber","animalsToMoveBack","animalsToChangeCopy","tagApplicationSelectionMethod","tagApplicationSireId","newTagType","tagApplicationTagType","tagApplicationYearOfBirth","newYearOfBirth","oldYearOfBirth","applicationDateIsInTheFuture","birthDateIsAfterApplicationDate","animalsToSubmit","validGeneticDamId","enterDatesOK","sessionApplicationDate","sessionTagType","sessionAnimalsToChange","sessionMonthOfBirth","sessionSelectionMethod","sessionBatchNumber","sessionGenotype","addIndividualRow","invalidTagNumber","invalidBatchNumber","AddReplacementTag","newIndividualNumber","newTagNumberError","oldTagNumberError","setNewBatchNumber","setNewIndividualNumber","setNewTagNumber","setOldBatchNumber","setOldTagNumber","isSlaughterTag","newIndividualNo","firstTag","handleManualTag","oldFieldIsBatch","oldFieldIsTag","handleUpgradeTag","resBatches","handleSlaughterTag","addReplacementTag","newTagNumberWrapper","TagReplacement","desc3Label","desc4Label","setReplacementDate","replacementDateError","setReplacementDateError","replacementDateWarning","setReplacementDateWarning","setOldTagNumberError","setNewTagNumberError","replacementReason","currentAnimal","tagReplacementAnimalsToChange","tagReplacementOldTagNumber","tagReplacementQuantity","tagReplacementNewTagNumber","tagReplacementComment","tagReplacementDate","replacementDateIsInTheFuture","replacementDateIsOverAYearAgo","tagReplacementNewBatchNumber","tagReplacementNewIndividualNumber","tagReplacementOldBatchNumber","tagReplacementSelectionMethod","selectOldTagNumber","tagReplacementTagType","extractQuantity","sessionReplacementDate","sessionQuantity","sessionNewTagNumber","sessionOldTagNumber","sessionNewBatchNumber","sessionNewIndividualNumber","Tokens","setBearer","tryAgain","setTryAgain","tokensCopied","setTokensCopied","copyIntoClipboard","elm","selection","createRange","selectNodeContents","removeAllRanges","execCommand","fetchBearerToken","highlightParts","tokenParts","newTokenParts","tokensPage","tokenRow","copied","ViewMovement","setSearchState","setDestAddress","printData","setPrintData","submitConfirmedMove","setSubmitConfirmedMove","returnToPrevious","flagRes","transportInfo","cancelToken1","cancelToken2","getAnimals","firstData","dataToProcess","fetchMovementData","hasFciDetail","individualTags","VetHomePage","cphHoldingData","setCPHHoldingData","cphValue","isNextDisabled","setIsNextDisabled","vetCPHData","cphData","scrollTo","flexRow","alignFlexEnd","cphResultSection","sectionTitle","buttonSection","displayBtnRight","VetHoldingInfo","setCphData","cphDetails","holdingInfoContanier","holdingInfoBlock","fieldvalue","VetTitle","VetClaimsInfo","vetAbattoirInfo","claimsDetails","vetClaims","vetemployer","vetemploymentaddress","rcvsMembershipNo","rcvsmembershipno","VetCreate","isCreateDateValid","setIsCreateDateValid","createDateError","setCreateDateError","setAttestationDate","newAttestationDate","hasDateError","dateOverAYearAge","newCphData","handleVetDate","displayBtnBoth","VetSummaryInfo","vanNo","visitDate","VetDeclaration","setVetClaims","setVanNo","notForPrint","buttonLink","VetDetails","vetAttestationList","setVetAttestationList","noBottomSpace","VetSummary","isDisabled","setIsDisabled","setResponseData","isRefreshDisabled","setIsRefreshDisabled","programCode","holdingStatuses","statusAttributes","Name","Data","programStatusCode","updateDate","bffFunctionCall","isRefresh","refreshCall","vetRequestId","sectionTitleInfo","notificationSection","titleText","AbattoirAttestation","abattoirSelectedTagDetails","vetBlock","vetTitle","vetdesc","vetLink","AbattoirAttestationTagResult","tagAnimalList","setTagAnimalList","abattoirTagDetails","prevPage","tableParamsForPost","abattoirTagsData","abattoirPrint","AbattoirDeclaration","abattoirCPHData","vetDeclarationBack","AbattoirManualTags","disableSearchBtn","setDisableSearchBtn","setAnimalTagNumber","isTagLimtExeed","setIsTagLimtExeed","addAnimalTags","newAnimalTagNumbers","removeAnimalTag","removeAllAnimalTags","AbattoirUploadTags","tagLimitExeed","setTagLimitExeed","newUploadedTags","getAbattoirVetAttestationList","selectedTags","searchButton","AbattoirDeclarationTags","tagId","setHoldingResult","AbattoirCheckHolding","resultPage","AbattoirAttestationResult","initialised","Pages","sessionPermission","callbackId","addEventCallback","EventType","LOGIN_FAILURE","interactionType","InteractionType","Redirect","Popup","loginPopup","LOGOUT_FAILURE","LOGIN_SUCCESS","ACQUIRE_TOKEN_SUCCESS","payload","setActiveAccount","idTokenClaims","acr","removeEventCallback","isExact","HoldingDetails","BoVARecordDeclaration","AbattoirAttestationDeclarationTags","AbattoirAttestationDeclaration","App","userConfirmation","callback","node","answer","ReactDOM","unmountComponentAtNode","getUserConfirmation","AppInsightsContext","Provider","HOTJAR_SITE_ID","StrictMode","navigator","serviceWorker","registration","unregister"],"mappings":"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,OACV8yH,EAAUvyH,gBACVuyH,EAAU56H,eACV46H,EAAUh7H,SACX,cACAk8C,GAAYzxB,OAAS,CACpBuwG,EAAU55H,KACV45H,EAAUtxH,UACVsxH,EAAU1+E,OACV0+E,EAAU56H,eACV46H,EAAUh7H,SACX,cACAk8C,GAAYxxB,MAAQ,CACnBswG,EAAU55H,KACV45H,EAAUtxH,UACVsxH,EAAU1+E,OACV0+E,EAAU56H,eACV46H,EAAUh7H,SACX,cACAk8C,GAAYvxB,KAAO,CAClBqwG,EAAU55H,KACV45H,EAAUtxH,UACVsxH,EAAU1+E,OACV0+E,EAAU56H,eACV46H,EAAUh7H,SACX,cACAk8C,GAAYtxB,WAAa,CACxBowG,EAAU55H,KACV45H,EAAUtxH,UACVsxH,EAAU1+E,OACV0+E,EAAU56H,eACV46H,EAAUh7H,SACX,cACAk8C,GAAYrxB,KAAO,CAClBmwG,EAAU55H,KACV45H,EAAUtxH,UACVsxH,EAAU1+E,OACV0+E,EAAU56H,eACV46H,EAAUh7H,SACX,cACAk8C,GAAYpxB,gBAAkB,CAC7BkwG,EAAU55H,KACV45H,EAAUtxH,UACVsxH,EAAU1+E,OACV0+E,EAAU56H,eACV46H,EAAUh7H,SACX,cACAk8C,GAAYnxB,YAAc,CACzBiwG,EAAU55H,KACV45H,EAAUtxH,UACVsxH,EAAU1+E,OACV0+E,EAAU56H,eACV46H,EAAUh7H,SACX,cACAk8C,GAAYlxB,IAAM,CACjBgwG,EAAU55H,KACV45H,EAAUtxH,UACVsxH,EAAU1+E,OACV0+E,EAAU56H,eACV46H,EAAUh7H,SACX,cACAk8C,GAAYhxB,QAAU,CACrB8vG,EAAU56H,eACV46H,EAAUh7H,SACX,GAGH,EAAwB29C,mBAASmhG,EAAoB52C,IAAY,mBAA1D62C,EAAI,KAAEC,EAAO,KA2BpB,OALAthG,IAAMS,WAAU,WACd6gG,EAAQF,EAAoB52C,MAE3B,CAACA,EAAYrxG,EAASsrD,WAGvB,oCACG50B,GACC,yBAAKO,aAAYN,EAAE,uBAAwBI,UAAWF,KAAQg3G,IAAM,gBAAkBgZ,EAAU,UAAY,UAAW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","file":"static/js/main.94b51901.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"flexRow\":\"vetModule_flexRow__1Pns1\",\"mainContanier\":\"vetModule_mainContanier__D5Gjy\",\"buttonSection\":\"vetModule_buttonSection__1el-8\",\"flexCoulmn\":\"vetModule_flexCoulmn__LIldr\",\"alignFlexEnd\":\"vetModule_alignFlexEnd__e0sSL\",\"alignFlexCenter\":\"vetModule_alignFlexCenter__2x1I7\",\"noMargin\":\"vetModule_noMargin__wxtu-\",\"noPadding\":\"vetModule_noPadding__-nBld\",\"fontBold\":\"vetModule_fontBold__2Wn8p\",\"titleSection\":\"vetModule_titleSection__3WUH7\",\"bottomBorder\":\"vetModule_bottomBorder__2F9-U\",\"pageTitle\":\"vetModule_pageTitle__2tEdw\",\"bodySection\":\"vetModule_bodySection__3iDq1\",\"summaryBlock\":\"vetModule_summaryBlock__2Aqrp\",\"summaryRow\":\"vetModule_summaryRow__4bcxX\",\"label\":\"vetModule_label__3IANK\",\"action\":\"vetModule_action__11Qjc\",\"block\":\"vetModule_block__3QWij\",\"noBorder\":\"vetModule_noBorder__2V9fi\",\"topSpace\":\"vetModule_topSpace__6eB_T\",\"declarationBlock\":\"vetModule_declarationBlock__1dEe3\",\"declartionContent\":\"vetModule_declartionContent__UgvWv\",\"displayBtnRight\":\"vetModule_displayBtnRight__7enIX\",\"displayBtnBoth\":\"vetModule_displayBtnBoth__2t10e\",\"buttonLink\":\"vetModule_buttonLink__el1KR\",\"sectionTitle\":\"vetModule_sectionTitle__2o0Q3\",\"noBottomSpace\":\"vetModule_noBottomSpace__jdv3S\",\"sectionTitleInfo\":\"vetModule_sectionTitleInfo__2gbxR\",\"vetDeclarationBack\":\"vetModule_vetDeclarationBack__3rO0Y\",\"notificationSection\":\"vetModule_notificationSection__11HwY\",\"titleText\":\"vetModule_titleText__3lzqV\",\"cphNumber\":\"vetModule_cphNumber__3tndX\",\"cphResultSection\":\"vetModule_cphResultSection__IUIzR\",\"cphValue\":\"vetModule_cphValue__27664\",\"holdingInfoContanier\":\"vetModule_holdingInfoContanier__1jU7s\",\"holdingInfoBlock\":\"vetModule_holdingInfoBlock__12bvR\",\"fieldLabel\":\"vetModule_fieldLabel__20X-8\",\"notificationsWarning\":\"vetModule_notificationsWarning__3CX66\",\"icon\":\"vetModule_icon__1DN8c\",\"text\":\"vetModule_text__1p58R\",\"notForPrint\":\"vetModule_notForPrint__2A_MI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"summaryRow\":\"viewRequestId_summaryRow__2U15W\",\"label\":\"viewRequestId_label__1TNkP\",\"action\":\"viewRequestId_action__3u8B4\",\"noBorder\":\"viewRequestId_noBorder__1kIM6\",\"status\":\"viewRequestId_status__3z6GE\",\"title\":\"viewRequestId_title__27u6K\",\"code\":\"viewRequestId_code__3Ltp_\",\"noBottomBorder\":\"viewRequestId_noBottomBorder__nIiyr\",\"marginBottom\":\"viewRequestId_marginBottom__3eBGp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"confirmation\":\"confirmation_confirmation__1-rwE\",\"pending\":\"confirmation_pending__3uAJr\",\"confirm\":\"confirmation_confirm__2qigj\",\"basic\":\"confirmation_basic__2bPn8\",\"error\":\"confirmation_error__38-Le\",\"warning\":\"confirmation_warning__2D1AW\",\"errorWarning\":\"confirmation_errorWarning__bdH85\",\"icon\":\"confirmation_icon__3IQKy\",\"title\":\"confirmation_title__1ARez\",\"bold\":\"confirmation_bold__1AtAs\",\"normal\":\"confirmation_normal__1sRe_\",\"text\":\"confirmation_text__1uDu_\",\"status\":\"confirmation_status__1xtJT\",\"statusText\":\"confirmation_statusText__1WbLM\",\"whatNow\":\"confirmation_whatNow__3OntB\",\"parsedHtml\":\"confirmation_parsedHtml__2wuE1\",\"actionButtons\":\"confirmation_actionButtons__Cq4OH\",\"action\":\"confirmation_action__39jeq\",\"messages\":\"confirmation_messages__3r7qF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fetching\":\"holdingDetails_fetching__2322y\",\"summaryRow\":\"holdingDetails_summaryRow__OUclk\",\"label\":\"holdingDetails_label__3FeZj\",\"action\":\"holdingDetails_action__YxP1m\",\"block\":\"holdingDetails_block__NXgn8\",\"noBorder\":\"holdingDetails_noBorder__39ALH\",\"addProductionTypesLink\":\"holdingDetails_addProductionTypesLink__1QNXG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"notificationsBanner\":\"home_notificationsBanner__Bk6G_\",\"notificationsLoading\":\"home_notificationsLoading__b_ETy\",\"notificationsPresent\":\"home_notificationsPresent__2O44W\",\"notificationsNotPresent\":\"home_notificationsNotPresent__1l_KL\",\"notificationCount\":\"home_notificationCount__OvD4h\",\"notificationDescription\":\"home_notificationDescription__3_yZj\",\"fetching\":\"home_fetching__2QP_B\",\"holdings\":\"home_holdings__1qshJ\",\"icon\":\"home_icon__6qna9\",\"accordionContent\":\"home_accordionContent__cIpcg\",\"holding\":\"home_holding__11O8X\",\"error\":\"home_error__1v8US\",\"label\":\"home_label__3fw9o\",\"species\":\"home_species__2vLHJ\",\"speciesName\":\"home_speciesName__3FVFF\",\"cphNumber\":\"home_cphNumber__1lQT0\",\"notifications\":\"home_notifications__3WB3M\",\"notificationsWrapper\":\"home_notificationsWrapper__2bA8w\",\"bold\":\"home_bold__39-In\",\"normal\":\"home_normal__13JnA\",\"address\":\"home_address__POMJ8\",\"arrowRight\":\"home_arrowRight__cd2Le\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"animalCount\":\"animalSummary_animalCount__3jRla\",\"noBottomBorder\":\"animalSummary_noBottomBorder__1Ys2K\",\"row\":\"animalSummary_row__OgvLX\",\"label\":\"animalSummary_label__1wCbn\",\"count\":\"animalSummary_count__18Knp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"modal_modal__2DYu3\",\"open\":\"modal_open__1foDS\",\"notification\":\"modal_notification__3B0Bg\",\"modalHeader\":\"modal_modalHeader__1dtiE\",\"modalBody\":\"modal_modalBody__2Uwhs\",\"tableFilters\":\"modal_tableFilters__L5_Oq\",\"modalFooter\":\"modal_modalFooter__ntK5c\",\"modalMessage\":\"modal_modalMessage__2FtNp\",\"modalActions\":\"modal_modalActions__2Bj-j\",\"hiddenInput\":\"modal_hiddenInput__23SWl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"value\":\"addressSummary_value__1u8xF\",\"address\":\"addressSummary_address__tlReQ\",\"commentBlock\":\"addressSummary_commentBlock__1CWuf\",\"comment\":\"addressSummary_comment__27iAe\",\"title\":\"addressSummary_title__LMOZI\",\"addressSummary\":\"addressSummary_addressSummary__2C-Ei\",\"block\":\"addressSummary_block__1xsw9\",\"label\":\"addressSummary_label__2oR5W\",\"summaryRow\":\"addressSummary_summaryRow__1OTMW\",\"action\":\"addressSummary_action__3KqRT\",\"noBorder\":\"addressSummary_noBorder__2-ocr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"holdingListRadios\":\"otherHoldingSelection_holdingListRadios__228Nj\",\"selectHoldingLabel\":\"otherHoldingSelection_selectHoldingLabel__1iYGp\",\"cph\":\"otherHoldingSelection_cph__1WQ7c\",\"address\":\"otherHoldingSelection_address__2Cp_J\",\"holdingApproval\":\"otherHoldingSelection_holdingApproval__21KP1\",\"noBottomBorder\":\"otherHoldingSelection_noBottomBorder__2koeC\",\"confirmHolding\":\"otherHoldingSelection_confirmHolding__2IcBJ\",\"yes\":\"otherHoldingSelection_yes__1ueto\",\"no\":\"otherHoldingSelection_no__3974Q\",\"cphSearch\":\"otherHoldingSelection_cphSearch__OBvFF\",\"cphSearchError\":\"otherHoldingSelection_cphSearchError__1LWbo\",\"destinationHoldingAddress\":\"otherHoldingSelection_destinationHoldingAddress__1KKG4\",\"recentlyUsedHoldings\":\"otherHoldingSelection_recentlyUsedHoldings__37RIs\",\"holdingListRow\":\"otherHoldingSelection_holdingListRow__zbppx\",\"holdingListRowSelected\":\"otherHoldingSelection_holdingListRowSelected__2_ddk\",\"search\":\"otherHoldingSelection_search__3sS8r\",\"input\":\"otherHoldingSelection_input__3rZqm\",\"message\":\"otherHoldingSelection_message__JJN2d\",\"summaryRow\":\"otherHoldingSelection_summaryRow__R9gE2\",\"label\":\"otherHoldingSelection_label__29OZq\",\"action\":\"otherHoldingSelection_action__1JM2R\",\"block\":\"otherHoldingSelection_block__3ImI-\",\"noBorder\":\"otherHoldingSelection_noBorder__3ETpf\",\"multiSearch\":\"otherHoldingSelection_multiSearch__2AVzB\",\"holdingsDropdown\":\"otherHoldingSelection_holdingsDropdown__27Xnd\",\"holdingName\":\"otherHoldingSelection_holdingName__3xteM\",\"holdingPostcode\":\"otherHoldingSelection_holdingPostcode__2B42c\",\"holdingTypeDropdown\":\"otherHoldingSelection_holdingTypeDropdown__lufv7\",\"singleSearch\":\"otherHoldingSelection_singleSearch__3-1Kr\",\"cphNumber\":\"otherHoldingSelection_cphNumber__2p1Ow\",\"fsaNumber\":\"otherHoldingSelection_fsaNumber__3YHib\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tagReplacement\":\"addReplacementTag_tagReplacement__2W9lt\",\"addReplacementTag\":\"addReplacementTag_addReplacementTag__3ttRm\",\"input\":\"addReplacementTag_input__3-rE6\",\"newTagNumberWrapper\":\"addReplacementTag_newTagNumberWrapper__G_0ay\",\"newTagNumber\":\"addReplacementTag_newTagNumber__1eRPz\",\"batchNumber\":\"addReplacementTag_batchNumber__nrqhL\",\"tagNumber\":\"addReplacementTag_tagNumber__2OKHG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"animalInfo\":\"animalDetails_animalInfo__ivzyS\",\"data\":\"animalDetails_data__TDcDa\",\"label\":\"animalDetails_label__205Pk\",\"accordions\":\"animalDetails_accordions__2wji1\",\"print\":\"animalDetails_print__kcVto\",\"actions\":\"animalDetails_actions__3GW82\",\"left\":\"animalDetails_left__2oTtC\",\"right\":\"animalDetails_right__28gpy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"totalAnimals\":\"paperDetails_totalAnimals__3w7Wb\",\"itemsTotal\":\"paperDetails_itemsTotal__S3xqa\",\"icon\":\"paperDetails_icon__1GyiW\",\"label\":\"paperDetails_label__3Ybrg\",\"notification\":\"paperDetails_notification__1w5Fx\",\"error\":\"paperDetails_error__G2Evk\",\"notificationTitle\":\"paperDetails_notificationTitle__3H5q8\",\"success\":\"paperDetails_success__2sQN6\",\"warning\":\"paperDetails_warning__1xBDa\",\"alert\":\"paperDetails_alert__3cesX\",\"fixedActions\":\"paperDetails_fixedActions__1Tzc_\",\"right\":\"paperDetails_right__3WuKV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fetching\":\"address_fetching__2iT9y\",\"addPadding\":\"address_addPadding__1YOD0\",\"bold\":\"address_bold__2acgD\",\"inline\":\"address_inline__2OkZ3\",\"type\":\"address_type__NiQoG\",\"name\":\"address_name__3TERu\",\"address\":\"address_address__1vWC7\",\"cphInformation\":\"address_cphInformation__2F0pq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"paginationContent\":\"pagination_paginationContent__2uChh\",\"count\":\"pagination_count__3hcnl\",\"pageSize\":\"pagination_pageSize__2wRLX\",\"arrowRight\":\"pagination_arrowRight__xjpSW\",\"arrowLeft\":\"pagination_arrowLeft__3ZWfd\",\"btnPagination\":\"pagination_btnPagination__1ViCd\",\"pages\":\"pagination_pages__2-quh\",\"loadPending\":\"pagination_loadPending__3d0zI\",\"srOnly\":\"pagination_srOnly__2RH9W\",\"label\":\"pagination_label__3wZ98\",\"select\":\"pagination_select__m_kEu\",\"digits1\":\"pagination_digits1__3He9F\",\"digits2\":\"pagination_digits2__3vUZq\",\"digits3\":\"pagination_digits3__2qoUi\",\"digits4\":\"pagination_digits4__1FVtG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"summaryRow\":\"fciSummary_summaryRow__1lhqr\",\"label\":\"fciSummary_label__118_F\",\"action\":\"fciSummary_action__1qxG7\",\"block\":\"fciSummary_block__20SOt\",\"noBorder\":\"fciSummary_noBorder__3tXdd\",\"fciDetails\":\"fciSummary_fciDetails__t9O_S\",\"title\":\"fciSummary_title__GppcN\",\"actions\":\"fciSummary_actions__2wAIi\",\"fci\":\"fciSummary_fci__bbC7v\",\"fciSummary\":\"fciSummary_fciSummary__317OM\",\"details\":\"fciSummary_details__3cu4p\",\"summary\":\"fciSummary_summary__1MUJJ\",\"content\":\"fciSummary_content__3noQ9\",\"p\":\"fciSummary_p__271tc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"authPanel\":\"landing_authPanel__3oA9F\",\"content\":\"landing_content__1YMK2\",\"heading\":\"landing_heading__1yDH2\",\"title\":\"landing_title__1QYUF\",\"bodyfirst\":\"landing_bodyfirst__35qgm\",\"body\":\"landing_body__3gAFT\",\"topBody\":\"landing_topBody__1wc9D\",\"buttonLanding\":\"landing_buttonLanding__X3xEb\",\"linkGroup\":\"landing_linkGroup__sQlQY\",\"landingLink\":\"landing_landingLink__2lbkP\",\"lowerContent\":\"landing_lowerContent__32mF8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"summaryRow\":\"transportSummary_summaryRow__2HtQ7\",\"label\":\"transportSummary_label__39eaq\",\"action\":\"transportSummary_action__Kf_2i\",\"noBorder\":\"transportSummary_noBorder__Sr-eB\",\"noBottomBorder\":\"transportSummary_noBottomBorder__3-XoD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"banner_header__3w0Zx\",\"logo\":\"banner_logo__3aTIj\",\"homeLink\":\"banner_homeLink__34Swh\",\"toggleNav\":\"banner_toggleNav__1eXvd\",\"close\":\"banner_close__3HJ7E\",\"userInfo\":\"banner_userInfo__3vG_i\",\"icon\":\"banner_icon__2Ahb2\",\"open\":\"banner_open__3YPV4\",\"closed\":\"banner_closed__2zlSl\",\"option\":\"banner_option__32KaA\",\"user\":\"banner_user__kK177\",\"userOptions\":\"banner_userOptions__2g0dT\",\"headerPrint\":\"banner_headerPrint__3n25Z\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"selectedHolding\":\"holding_selectedHolding__2DnDL\",\"loading\":\"holding_loading__1baXD\",\"cph\":\"holding_cph__3Agms\",\"address\":\"holding_address__17G73\",\"species\":\"holding_species__qtdO1\",\"title\":\"holding_title__12Cxz\",\"icon\":\"holding_icon__28ab_\",\"changeHolding\":\"holding_changeHolding__3NqfD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"actions\":\"activityDetails_actions__2zZpi\",\"errorText\":\"activityDetails_errorText__3yTbi\",\"amend\":\"activityDetails_amend__1ZIBC\",\"print\":\"activityDetails_print__L1q4T\",\"cancel\":\"activityDetails_cancel__2TH9x\",\"exit\":\"activityDetails_exit__2ABKs\",\"tag\":\"activityDetails_tag__3YNeW\",\"summaryRow\":\"activityDetails_summaryRow__TXB1o\",\"label\":\"activityDetails_label__QPtuC\",\"action\":\"activityDetails_action__10IJN\",\"block\":\"activityDetails_block__35mKY\",\"noBorder\":\"activityDetails_noBorder__1ofKF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"summaryRow\":\"fciSummary_summaryRow__2tqKC\",\"label\":\"fciSummary_label__2GAC3\",\"action\":\"fciSummary_action__2WM1i\",\"noBorder\":\"fciSummary_noBorder__2tR7S\",\"showFCI\":\"fciSummary_showFCI__2hJRH\",\"icon\":\"fciSummary_icon__8Jhhy\",\"totalAnimals\":\"fciSummary_totalAnimals__PGN42\",\"title\":\"fciSummary_title__1hAg8\",\"fci\":\"fciSummary_fci__1gVHd\",\"fciSummary\":\"fciSummary_fciSummary__3UPBI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer\":\"footer_footer__2NDAI\",\"content\":\"footer_content__1Lyla\",\"title\":\"footer_title__mjUW3\",\"info\":\"footer_info__2KquG\",\"nav\":\"footer_nav__1dKHx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"totalAnimals\":\"movementsGatherings_totalAnimals__1-0p6\",\"notification\":\"movementsGatherings_notification__7aWoF\",\"error\":\"movementsGatherings_error__7apEd\",\"notificationTitle\":\"movementsGatherings_notificationTitle__3_6nL\",\"icon\":\"movementsGatherings_icon__2p8zy\",\"success\":\"movementsGatherings_success__3vYFJ\",\"warning\":\"movementsGatherings_warning__2_o7D\",\"alert\":\"movementsGatherings_alert__1T2BF\",\"cphAndDate\":\"movementsGatherings_cphAndDate__2ZJlP\",\"datesSection\":\"movementsGatherings_datesSection__19RZU\",\"hasAddresses\":\"movementsGatherings_hasAddresses__XSkY_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"logo\":\"navBar_logo__sb6o2\",\"toggleMenu\":\"navBar_toggleMenu__LsGE1\",\"bar\":\"navBar_bar__2_Tus\",\"navMenu\":\"navBar_navMenu__3JgPw\",\"active\":\"navBar_active__13r_c\",\"change_password\":\"navBar_change_password__3JA81\",\"logout\":\"navBar_logout__2FbvA\",\"navBar\":\"navBar_navBar__MNfOX\",\"closed\":\"navBar_closed__3YkgI\",\"closeIcon\":\"navBar_closeIcon__3YYwv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"vetBlock\":\"abattoirAttestationHome_vetBlock__1jM9t\",\"vetTitle\":\"abattoirAttestationHome_vetTitle__1-B01\",\"vetdesc\":\"abattoirAttestationHome_vetdesc__3hjDc\",\"vetLink\":\"abattoirAttestationHome_vetLink__PEsC3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"pageTitle\":\"pageTitle_pageTitle__2egax\",\"h1\":\"pageTitle_h1__33r8p\",\"pageTitleOne\":\"pageTitle_pageTitleOne__18GPG\",\"pageTitleTwo\":\"pageTitle_pageTitleTwo__10xBu\",\"icon\":\"pageTitle_icon__2bGd0\",\"back\":\"pageTitle_back__zDp-S\",\"arrow\":\"pageTitle_arrow__2nMj0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dates\":\"movementDates_dates__N2hBy\",\"date\":\"movementDates_date__161ZY\",\"movementDates\":\"movementDates_movementDates__LVLGl\",\"summaryRow\":\"movementDates_summaryRow__3bLcf\",\"label\":\"movementDates_label__Y0N2V\",\"action\":\"movementDates_action__2Xr2f\",\"block\":\"movementDates_block__-eELU\",\"noBorder\":\"movementDates_noBorder__1JKYM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tokensPage\":\"tokens_tokensPage__2m0kV\",\"tokenRow\":\"tokens_tokenRow__18i7k\",\"token\":\"tokens_token__1RrGs\",\"header\":\"tokens_header__2t4UV\",\"body\":\"tokens_body__8y0FL\",\"footer\":\"tokens_footer__11yQD\",\"button\":\"tokens_button__1QGoO\",\"copied\":\"tokens_copied__1kZgc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tooltip\":\"tooltip_tooltip__3BD9W\",\"icon\":\"tooltip_icon__1Jzcw\",\"content\":\"tooltip_content__2UsEf\",\"show\":\"tooltip_show__SSQar\",\"bottom\":\"tooltip_bottom__33WSU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"animalSummary\":\"animalSummary_animalSummary__1fiH2\",\"title\":\"animalSummary_title__A21Xs\",\"actions\":\"animalSummary_actions__2YlDc\",\"animals\":\"animalSummary_animals__3azPM\",\"tagList\":\"animalSummary_tagList__1mKLM\",\"details\":\"animalSummary_details__ttEp1\",\"summary\":\"animalSummary_summary__2K6jg\",\"content\":\"animalSummary_content__3kGCL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"count\":\"textEntry_count__3omaK\",\"textbox\":\"textEntry_textbox__2K82C\",\"w25\":\"textEntry_w25__23eXz\",\"w50\":\"textEntry_w50__3IWE1\",\"w75\":\"textEntry_w75__1Tlwq\",\"textarea\":\"textEntry_textarea__3ne_r\",\"maxWidth\":\"textEntry_maxWidth__2Dlnb\",\"fieldDescription\":\"textEntry_fieldDescription__2uTq2\",\"bo\":\"textEntry_bo__2U3tv\",\"full\":\"textEntry_full__2MxtW\",\"three-quarters\":\"textEntry_three-quarters__tJSzj\",\"half\":\"textEntry_half__2tvPW\",\"one-quarter\":\"textEntry_one-quarter__1h7_9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"logo\":\"headerBackOffice_logo__3OevW\",\"header\":\"headerBackOffice_header__2f3B1\",\"closed\":\"headerBackOffice_closed__2kQ_C\",\"userInfo\":\"headerBackOffice_userInfo__3qJsg\",\"icon\":\"headerBackOffice_icon__2VEIG\",\"open\":\"headerBackOffice_open__SA-OI\",\"option\":\"headerBackOffice_option__3CZ8N\",\"user\":\"headerBackOffice_user__11oft\",\"userOptions\":\"headerBackOffice_userOptions__3NwdZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"cph\":\"filtersBoUserActivity_cph__2YBSl\",\"eventTypeAndDate\":\"filtersBoUserActivity_eventTypeAndDate__3a1K_\",\"eventType\":\"filtersBoUserActivity_eventType__ao0PB\",\"date\":\"filtersBoUserActivity_date__3vk-G\",\"dateRange\":\"filtersBoUserActivity_dateRange__sxlDo\",\"speciesAndMovementType\":\"filtersBoUserActivity_speciesAndMovementType__6_Gud\",\"submitButton\":\"filtersBoUserActivity_submitButton__V__B5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dateRange\":\"filtersGatheringSearch_dateRange__3fYfe\",\"otherFields\":\"filtersGatheringSearch_otherFields__35zJo\",\"date\":\"filtersGatheringSearch_date__EU5kL\",\"field\":\"filtersGatheringSearch_field__1Hkhl\",\"movementRef\":\"filtersGatheringSearch_movementRef__3td7j\",\"actions\":\"filtersGatheringSearch_actions__uLjlq\",\"left\":\"filtersGatheringSearch_left__19I3f\",\"right\":\"filtersGatheringSearch_right__3W_ww\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"value\":\"dateSummary_value__3ekq3\",\"date\":\"dateSummary_date__fSMR9\",\"title\":\"dateSummary_title__dARRf\",\"summaryRow\":\"dateSummary_summaryRow__mzf1V\",\"label\":\"dateSummary_label__3AHDd\",\"action\":\"dateSummary_action__2dpNc\",\"block\":\"dateSummary_block__5MKH3\",\"noBorder\":\"dateSummary_noBorder__2ksgt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sectionTitleBar\":\"sectionTitleBar_sectionTitleBar__2Y3fh\",\"iconContainer\":\"sectionTitleBar_iconContainer__2Z3gi\",\"icon\":\"sectionTitleBar_icon__2S-hl\",\"title\":\"sectionTitleBar_title__35tH6\",\"status\":\"sectionTitleBar_status__2tPcF\",\"statusWarningHint\":\"sectionTitleBar_statusWarningHint__3nzus\",\"statusErrorHint\":\"sectionTitleBar_statusErrorHint__QpPES\",\"CompletedWarning\":\"sectionTitleBar_CompletedWarning__20b-h\",\"CompletedError\":\"sectionTitleBar_CompletedError__1F9V0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"summaryRow\":\"addressSummary_summaryRow__qdxK4\",\"label\":\"addressSummary_label__1RJit\",\"action\":\"addressSummary_action__GXp0I\",\"noBorder\":\"addressSummary_noBorder__1JkhM\",\"movement\":\"addressSummary_movement__G2alT\",\"address\":\"addressSummary_address__5xvx1\",\"title\":\"addressSummary_title__iyqdi\",\"holdingId\":\"addressSummary_holdingId__5TndT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tabs\":\"tabs_tabs__1jMTp\",\"tabsList\":\"tabs_tabsList__2glxc\",\"tabContent\":\"tabs_tabContent__2nW9z\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"modalConfirm_modal__29OCT\",\"open\":\"modalConfirm_open__2CgZR\",\"wide\":\"modalConfirm_wide__3-oh5\",\"modalHeader\":\"modalConfirm_modalHeader__3IxV-\",\"modalBody\":\"modalConfirm_modalBody__1AfqV\",\"modalFooter\":\"modalConfirm_modalFooter__WmDUK\",\"hiddenInput\":\"modalConfirm_hiddenInput__R37fP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"summaryRow\":\"transportSummary_summaryRow__1RK7v\",\"label\":\"transportSummary_label__2s4ZQ\",\"action\":\"transportSummary_action__3Pd_M\",\"block\":\"transportSummary_block__15oe_\",\"noBorder\":\"transportSummary_noBorder__1URqU\",\"p\":\"transportSummary_p__2Uoz2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"displayValue\":\"displayValue_displayValue__2pl0u\",\"label\":\"displayValue_label__33de-\",\"block\":\"displayValue_block__2s5MJ\",\"multiValues\":\"displayValue_multiValues__32WMJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inBusinessMove\":\"locationAddressDate_inBusinessMove__1BeZ4\",\"locationAndDate\":\"locationAddressDate_locationAndDate__2_12r\",\"animalsReceived\":\"locationAddressDate_animalsReceived__1FNYR\",\"manualCPH\":\"locationAddressDate_manualCPH__1jtYy\",\"cph\":\"locationAddressDate_cph__1c8yO\",\"pmDate\":\"locationAddressDate_pmDate__1E7uz\",\"comment\":\"locationAddressDate_comment__3ZWRy\",\"entryDate\":\"locationAddressDate_entryDate__3gSGi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"summaryRow\":\"viewMovement_summaryRow__ZJUgQ\",\"label\":\"viewMovement_label__2VgbM\",\"action\":\"viewMovement_action__30Iqs\",\"noBorder\":\"viewMovement_noBorder__3XITR\",\"download\":\"viewMovement_download__c4L5J\",\"status\":\"viewMovement_status__2JJV5\",\"title\":\"viewMovement_title__3dtei\",\"code\":\"viewMovement_code__3bxaO\",\"noBottomBorder\":\"viewMovement_noBottomBorder__MlkSE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nav\":\"navBar_nav__t1XJJ\",\"homeIcon\":\"navBar_homeIcon__14HlK\",\"vetMenu\":\"navBar_vetMenu__BvYgp\",\"changePassword\":\"navBar_changePassword__2U1Rt\",\"logout\":\"navBar_logout__pwZNi\",\"active\":\"navBar_active__22EFA\",\"home\":\"navBar_home__2nBmf\",\"label\":\"navBar_label__15hj8\",\"movements\":\"navBar_movements__2tH_F\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"radioButton\":\"radioButton_radioButton__38rTG\",\"checkmark\":\"radioButton_checkmark__R-cGp\",\"otherHolding\":\"radioButton_otherHolding__kprcC\",\"checked\":\"radioButton_checked__sMrR0\",\"disabled\":\"radioButton_disabled__3Ye74\",\"inline\":\"radioButton_inline__jr4lh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dateRange\":\"dateRange_dateRange__1tBuk\",\"date\":\"dateRange_date__2dvj4\",\"enter\":\"dateRange_enter__Yn1L3\",\"bo\":\"dateRange_bo__3X-gy\",\"inline\":\"dateRange_inline__3l47T\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"block\":\"fieldEntry_block__2M8LT\",\"inline\":\"fieldEntry_inline__5j5s5\",\"formGroup\":\"fieldEntry_formGroup__3u54Z\",\"textbox\":\"fieldEntry_textbox__3uhlm\",\"half\":\"fieldEntry_half__1Wb3l\",\"quarter\":\"fieldEntry_quarter__3kH5z\",\"fieldDescription\":\"fieldEntry_fieldDescription__12Ajq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"summaryRow\":\"dateSummary_summaryRow__2BV1Q\",\"label\":\"dateSummary_label__2WUW1\",\"action\":\"dateSummary_action__1nnN2\",\"noBorder\":\"dateSummary_noBorder__2_JQF\",\"dates\":\"dateSummary_dates__CBx50\",\"date\":\"dateSummary_date__2D89F\",\"title\":\"dateSummary_title__1N7JA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"durationInput\":\"durationInputFields_durationInput__2Od7Z\",\"days\":\"durationInputFields_days__3l2qK\",\"hours\":\"durationInputFields_hours__1-ITk\",\"minutes\":\"durationInputFields_minutes__2aHrD\",\"timePicker\":\"durationInputFields_timePicker__15tG1\",\"timePickerInput\":\"durationInputFields_timePickerInput__1HrSI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addIndividualRow\":\"tagApplication_addIndividualRow__dGu6T\",\"batchNumber\":\"tagApplication_batchNumber__15w5T\",\"tagNumber\":\"tagApplication_tagNumber__3DLOh\",\"actions\":\"tagApplication_actions__15O3U\",\"submit\":\"tagApplication_submit__1mZB_\",\"exit\":\"tagApplication_exit__3JxSy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btn\":\"button_btn__2g8Pv\",\"tab\":\"button_tab__1E-4Z\",\"link\":\"button_link__z6gtW\",\"inTextLink\":\"button_inTextLink__38Yaj\",\"add\":\"button_add__lvoZx\",\"remove\":\"button_remove__nCVoc\",\"linkDanger\":\"button_linkDanger__2COpl\",\"iconLink\":\"button_iconLink__18Zn_\",\"danger\":\"button_danger__1MYMD\",\"clear\":\"button_clear__1hVBc\",\"tertiary\":\"button_tertiary__3S98n\",\"upload\":\"button_upload__3Ut2_\",\"secondary\":\"button_secondary__365sE\",\"calendar\":\"button_calendar__1Crxf\",\"primary\":\"button_primary__16ZHA\",\"downloadReport\":\"button_downloadReport__3lcXY\",\"extraContent\":\"button_extraContent__3tBc5\",\"icon\":\"button_icon__WGsGm\",\"modalClose\":\"button_modalClose__1xpFq\",\"modalConfirm\":\"button_modalConfirm__J1eNg\",\"bo-keeper-email\":\"button_bo-keeper-email__3QTab\",\"fullWidth\":\"button_fullWidth__3VgUh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"message\":\"errorLabel_message__e0A0E\",\"success\":\"errorLabel_success__2s6Ay\",\"warning\":\"errorLabel_warning__2gTlT\",\"error\":\"errorLabel_error__3KpM5\",\"inline\":\"errorLabel_inline__2ouLM\",\"inline-bo\":\"errorLabel_inline-bo__V8Vza\",\"dateWidth\":\"errorLabel_dateWidth__1cQFo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkmark\":\"checkbox_checkmark__3hw66\",\"bo-checkbox\":\"checkbox_bo-checkbox__H1moO\",\"checkbox\":\"checkbox_checkbox__3kpg7\",\"inline\":\"checkbox_inline__2zGIx\",\"disabled\":\"checkbox_disabled__3f5hK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fetching\":\"address_fetching__1FoXR\",\"bold\":\"address_bold__1lVTr\",\"inline\":\"address_inline__3xsQL\",\"type\":\"address_type__13S-9\",\"name\":\"address_name__3M3m8\",\"address\":\"address_address__2iGB9\",\"cphInformation\":\"address_cphInformation__dbEtU\",\"noAddress\":\"address_noAddress__33Cfr\",\"icon\":\"address_icon__3g5PX\",\"addressLine\":\"address_addressLine__3UEd-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fields\":\"filtersAnimalsOnHolding_fields__2TBvk\",\"fieldSearch\":\"filtersAnimalsOnHolding_fieldSearch__2ozz-\",\"fieldBreed\":\"filtersAnimalsOnHolding_fieldBreed__2mh_V\",\"fieldGender\":\"filtersAnimalsOnHolding_fieldGender__3trdo\",\"fieldAgeRange\":\"filtersAnimalsOnHolding_fieldAgeRange__3_Br7\",\"fieldLocation\":\"filtersAnimalsOnHolding_fieldLocation__3hzXG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"cph\":\"filtersBoHoldingActivity_cph__1TwvF\",\"eventTypeAndDate\":\"filtersBoHoldingActivity_eventTypeAndDate__o7dSB\",\"eventType\":\"filtersBoHoldingActivity_eventType__1ph9B\",\"date\":\"filtersBoHoldingActivity_date__2NtmV\",\"dateRange\":\"filtersBoHoldingActivity_dateRange__3YCdb\",\"speciesAndMovementType\":\"filtersBoHoldingActivity_speciesAndMovementType__2b0uz\",\"submitButton\":\"filtersBoHoldingActivity_submitButton__3vfIY\",\"navigate\":\"filtersBoHoldingActivity_navigate__1StlN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"transferDates\":\"filtersBoSearchMovements_transferDates__1hdN0\",\"selectDates\":\"filtersBoSearchMovements_selectDates__2trYo\",\"crossBorder\":\"filtersBoSearchMovements_crossBorder__14TFO\",\"actions\":\"filtersBoSearchMovements_actions__YOsSQ\",\"premises\":\"filtersBoSearchMovements_premises__2vHIX\",\"date\":\"filtersBoSearchMovements_date__1ZQGl\",\"cph\":\"filtersBoSearchMovements_cph__1wjPD\",\"reset\":\"filtersBoSearchMovements_reset__NB281\",\"movementId\":\"filtersBoSearchMovements_movementId__2oGuL\",\"paperId\":\"filtersBoSearchMovements_paperId__DhKwt\",\"error\":\"filtersBoSearchMovements_error__2A6q3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tooltip\":\"tooltip_tooltip__2TYmi\",\"icon\":\"tooltip_icon__2AEzn\",\"content\":\"tooltip_content__2-W9d\",\"show\":\"tooltip_show__1n7kC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"summaryRow\":\"exemptionSummary_summaryRow__nDVCV\",\"label\":\"exemptionSummary_label__22Qpo\",\"action\":\"exemptionSummary_action__1Z8W6\",\"block\":\"exemptionSummary_block__1Ber_\",\"noBorder\":\"exemptionSummary_noBorder__3Aa63\",\"exemption\":\"exemptionSummary_exemption__2r2-f\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fileUpload\":\"fileUpload_fileUpload__1TYkf\",\"fileBrowser\":\"fileUpload_fileBrowser__1AHYY\",\"browseWrap\":\"fileUpload_browseWrap__2Aq2F\",\"upload\":\"fileUpload_upload__B55Xp\",\"description\":\"fileUpload_description__3zumw\",\"notes\":\"fileUpload_notes__1-NIt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addBatch\":\"addBatch_addBatch__XM411\",\"totalAnimals\":\"addBatch_totalAnimals__cnt5J\",\"batchNumber\":\"addBatch_batchNumber__2jfcx\",\"batchDescription\":\"addBatch_batchDescription__3dCUO\",\"action\":\"addBatch_action__1Bs6M\",\"table\":\"addBatch_table__3cQa_\",\"remove\":\"addBatch_remove__3o_wN\",\"itemsTotal\":\"addBatch_itemsTotal__2qcjS\",\"label\":\"addBatch_label__1Cdzy\",\"hidden\":\"addBatch_hidden__-aQYo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tagNumberRange\":\"addTagRange_tagNumberRange__HGWq9\",\"batchNumber\":\"addTagRange_batchNumber__2w6ik\",\"startNumber\":\"addTagRange_startNumber__2uPOy\",\"totalAnimals\":\"addTagRange_totalAnimals__1vh-O\",\"action\":\"addTagRange_action__iTLys\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"vehicleAndHaulier\":\"paperTransport_vehicleAndHaulier__1HAHL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"permitMove\":\"sourceDocument_permitMove__1A_pX\",\"sourceDocument\":\"sourceDocument_sourceDocument__pEr4k\",\"species\":\"sourceDocument_species__1DMMb\",\"documentType\":\"sourceDocument_documentType__27SrJ\",\"documentSource\":\"sourceDocument_documentSource__3biMm\",\"documentId\":\"sourceDocument_documentId__3ryHG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"summaryRow\":\"exemptionSummary_summaryRow__2eEXj\",\"label\":\"exemptionSummary_label__4cANx\",\"action\":\"exemptionSummary_action__3YWDG\",\"noBorder\":\"exemptionSummary_noBorder__1FDUM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"landingModal_modal__1pCTt\",\"modalContent\":\"landingModal_modalContent__xyzov\",\"modalOpen\":\"landingModal_modalOpen__2eJti\",\"modalClose\":\"landingModal_modalClose__36gBn\",\"modalCloseIcon\":\"landingModal_modalCloseIcon__2_10U\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"welcomeBanner\":\"welcomeBanner_welcomeBanner__3Jfsm\",\"welcomeBanner__container\":\"welcomeBanner_welcomeBanner__container__2k8pJ\",\"welcomeBanner__title\":\"welcomeBanner_welcomeBanner__title__1jDws\",\"welcomeBanner__intro\":\"welcomeBanner_welcomeBanner__intro__2peQ_\",\"welcomeBanner__content\":\"welcomeBanner_welcomeBanner__content__IHWOo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addBatchRow\":\"addTagRange_addBatchRow__3PtN1\",\"batchNumber\":\"addTagRange_batchNumber__29QlA\",\"startNumber\":\"addTagRange_startNumber__12wPD\",\"quantity\":\"addTagRange_quantity__3t4q4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"modalFileUpload_content__2rMXD\",\"input\":\"modalFileUpload_input__1590o\",\"output\":\"modalFileUpload_output__2Mymc\",\"tagNumber\":\"modalFileUpload_tagNumber__2FLuR\",\"action\":\"modalFileUpload_action__3wo93\",\"tableContainer\":\"modalFileUpload_tableContainer__2kHeO\",\"uploadInPage\":\"modalFileUpload_uploadInPage__2vr7_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"actions\":\"viewMovement_actions__3Z-Pb\",\"accept\":\"viewMovement_accept__1AtAS\",\"reject\":\"viewMovement_reject___r2gO\",\"exitBtn\":\"viewMovement_exitBtn__3EKuO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"marginLeft\":\"linker_marginLeft__5H8eI\",\"link\":\"linker_link__1YNYc\",\"backLink\":\"linker_backLink__2WHx2\",\"icon\":\"linker_icon__3IP0n\",\"btn\":\"linker_btn__1xCRH\",\"clear\":\"linker_clear__29XLC\",\"tertiary\":\"linker_tertiary__27xO_\",\"secondary\":\"linker_secondary__1kvkU\",\"primary\":\"linker_primary__1Wiw5\",\"extraContent\":\"linker_extraContent__S6qKF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tab\":\"tab_tab__2as7E\",\"navLink\":\"tab_navLink__1VBT5\",\"tabSelected\":\"tab_tabSelected__2QpFW\",\"hidden\":\"tab_hidden__3ggji\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btn\":\"button_btn__1vUJL\",\"link\":\"button_link__2LU11\",\"linkDanger\":\"button_linkDanger__c6IV2\",\"danger\":\"button_danger__3hUKH\",\"tertiary\":\"button_tertiary__7t2Q-\",\"upload\":\"button_upload__2Ykee\",\"secondary\":\"button_secondary__1-T5z\",\"calendar\":\"button_calendar__2IFZd\",\"primary\":\"button_primary__5y0cG\",\"downloadReport\":\"button_downloadReport__Z34MG\",\"extraContent\":\"button_extraContent__1s_xN\",\"icon\":\"button_icon__2Lah8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"groupLabel\":\"dropdownSearch_groupLabel__2hBl_\",\"groupBadge\":\"dropdownSearch_groupBadge__3UK95\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"aboutPanel\":\"aboutPanel_aboutPanel__1jDk8\",\"summary\":\"aboutPanel_summary__1DDHD\",\"content\":\"aboutPanel_content__mkjuY\",\"noSidebar\":\"aboutPanel_noSidebar__2hCmw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"userCommentRow\":\"userComment_userCommentRow__2mgFQ\",\"label\":\"userComment_label__2Q_Mp\",\"action\":\"userComment_action__23riq\",\"block\":\"userComment_block__3yEdr\",\"noBorder\":\"userComment_noBorder__3zxwR\",\"value\":\"userComment_value__263oN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"modalAddAnimalsToHolding_content__3o2Ue\",\"input\":\"modalAddAnimalsToHolding_input__39Rk7\",\"output\":\"modalAddAnimalsToHolding_output__Iia4K\",\"tagNumber\":\"modalAddAnimalsToHolding_tagNumber__1HFz-\",\"action\":\"modalAddAnimalsToHolding_action__1PBUu\",\"tableContainer\":\"modalAddAnimalsToHolding_tableContainer__3zeJ4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"totalAnimals\":\"editMovement_totalAnimals__2o1yZ\",\"itemsTotal\":\"editMovement_itemsTotal__6vVtW\",\"icon\":\"editMovement_icon__dlyCQ\",\"label\":\"editMovement_label__1lhrF\",\"notification\":\"editMovement_notification__14_GJ\",\"error\":\"editMovement_error__AIwvn\",\"notificationTitle\":\"editMovement_notificationTitle__3JXa5\",\"success\":\"editMovement_success__3IHjz\",\"warning\":\"editMovement_warning__3_axh\",\"alert\":\"editMovement_alert__23fXF\",\"fixedActions\":\"editMovement_fixedActions__29SV6\",\"right\":\"editMovement_right__1U0CB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"formGroup\":\"checkboxGroup_formGroup__2K8R8\",\"checkboxGroup\":\"checkboxGroup_checkboxGroup__2Gshe\",\"inline\":\"checkboxGroup_inline__Hun98\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkmark\":\"checkbox_checkmark__3cubY\",\"checkbox\":\"checkbox_checkbox__26Vge\",\"inline\":\"checkbox_inline__3y4PV\",\"disabled\":\"checkbox_disabled__PfWac\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fileUpload\":\"fileUpload_fileUpload__vbp5r\",\"fileBrowser\":\"fileUpload_fileBrowser__3zPQL\",\"browseWrap\":\"fileUpload_browseWrap__2UFS3\",\"upload\":\"fileUpload_upload__1nqnX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"boVaDeclaration\":\"vaRecordDeclaration_boVaDeclaration__2UJFO\",\"boheaderPrint\":\"vaRecordDeclaration_boheaderPrint__1FHEz\",\"boTitleSection\":\"vaRecordDeclaration_boTitleSection__1ulqd\",\"logo\":\"vaRecordDeclaration_logo__9QVzj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"summary\":\"summary_summary__2JfNM\",\"actions\":\"summary_actions__35csv\",\"submit\":\"summary_submit__2xgl4\",\"exit\":\"summary_exit__2K4gW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"actions\":\"handshake_actions__B1Kmz\",\"accept\":\"handshake_accept__3s1zU\",\"reject\":\"handshake_reject__3KXT1\",\"hide\":\"handshake_hide__2qEne\",\"exitBtn\":\"handshake_exitBtn__2Youc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"transportInformation\":\"transportInformationBox_transportInformation__1iy8K\",\"numberMoved\":\"transportInformationBox_numberMoved__1UD8t\",\"bold\":\"transportInformationBox_bold__2IAe_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"animalLists\":\"movementStep2_animalLists__1djHz\",\"addAnimals\":\"movementStep2_addAnimals__37bAa\",\"selectionMethods\":\"movementStep2_selectionMethods__ePsHh\",\"accordionHeader\":\"movementStep2_accordionHeader__3mIEP\",\"accordionContent\":\"movementStep2_accordionContent__2GEil\",\"notAvailable\":\"movementStep2_notAvailable__3d7Jy\",\"modalFooterCount\":\"movementStep2_modalFooterCount__3PxZ6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"modalAddBatch_content__1nf8o\",\"input\":\"modalAddBatch_input__2Jn1G\",\"output\":\"modalAddBatch_output__ppIWh\",\"batchNumber\":\"modalAddBatch_batchNumber__3rXwG\",\"description\":\"modalAddBatch_description__2CBVf\",\"action\":\"modalAddBatch_action__1ZY-F\",\"animalTotal\":\"modalAddBatch_animalTotal__3cY3I\",\"tableContainer\":\"modalAddBatch_tableContainer__15Nh2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"modalTagNumberRange_content__KV-MT\",\"input\":\"modalTagNumberRange_input__3F0Ar\",\"output\":\"modalTagNumberRange_output__3AG7w\",\"breedId\":\"modalTagNumberRange_breedId__3_1sp\",\"genderName\":\"modalTagNumberRange_genderName__2F3RH\",\"dob\":\"modalTagNumberRange_dob__3P8s7\",\"age\":\"modalTagNumberRange_age__18Bkd\",\"action\":\"modalTagNumberRange_action__1eRcJ\",\"tagNumber\":\"modalTagNumberRange_tagNumber__3zw5e\",\"tableContainer\":\"modalTagNumberRange_tableContainer__e4m1O\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"modalManualTagNumbers_content__36KWH\",\"input\":\"modalManualTagNumbers_input__37Ehw\",\"output\":\"modalManualTagNumbers_output__2JHqd\",\"action\":\"modalManualTagNumbers_action__KT4tK\",\"tagNumber\":\"modalManualTagNumbers_tagNumber__2DHYq\",\"tableContainer\":\"modalManualTagNumbers_tableContainer__3O3Pp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"actions\":\"summary_actions__1A0Vm\",\"submit\":\"summary_submit__1PW4h\",\"exit\":\"summary_exit__3xNMn\"};","module.exports = __webpack_public_path__ + \"static/media/logo-livestock-blue.ff165919.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"abattoirPrint\":\"abattoirAttestationTagResult_abattoirPrint__2i8xB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"legend\":\"legend_legend__1RTEu\",\"disabled\":\"legend_disabled__3ihB7\",\"nonBold\":\"legend_nonBold__3I7-d\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"label\":\"fieldLabel_label__23vto\",\"notFound\":\"fieldLabel_notFound__3YZTi\",\"small\":\"fieldLabel_small__dLnXa\",\"medium\":\"fieldLabel_medium__1Nkmr\",\"bo-inline\":\"fieldLabel_bo-inline__33_u-\",\"optional\":\"fieldLabel_optional__3ZkIh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"animalActivity\":\"filtersBoAnimalActivity_animalActivity__3GI6C\",\"tagNumber\":\"filtersBoAnimalActivity_tagNumber__2R-fl\",\"submitButton\":\"filtersBoAnimalActivity_submitButton__3LCuj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"radioButtons\":\"radioButtons_radioButtons__1idtt\",\"inline\":\"radioButtons_inline__2jqZq\",\"bo\":\"radioButtons_bo__2nEXH\",\"otherHolding\":\"radioButtons_otherHolding__YFMD3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkboxGroup\":\"checkboxGroup_checkboxGroup__3i1-l\",\"inline\":\"checkboxGroup_inline__LkP2M\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"legend\":\"legend_legend__3QYdL\",\"disabled\":\"legend_disabled__1ksLP\",\"reducedMargin\":\"legend_reducedMargin__3msEj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"verifyCustomerInformation\":\"verifyCustomerInformation_verifyCustomerInformation__1ictQ\",\"keeperDetails\":\"verifyCustomerInformation_keeperDetails__3iUQp\",\"holdingDetails\":\"verifyCustomerInformation_holdingDetails__NselS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"foodChainInformation\":\"foodChainInformation_foodChainInformation__2njfh\",\"input\":\"foodChainInformation_input__pxPXy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"verifyCustomerSearch\":\"verifyCustomerSearch_verifyCustomerSearch__3oQZe\",\"keeperDetails\":\"verifyCustomerSearch_keeperDetails__M7hi9\",\"holdingDetails\":\"verifyCustomerSearch_holdingDetails__3YAkb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"message\":\"messageBanner_message__1UDLj\",\"warning\":\"messageBanner_warning__cw3Go\",\"error\":\"messageBanner_error__sP__P\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addBatch\":\"addBatch_addBatch__2lqnn\",\"totalAnimals\":\"addBatch_totalAnimals__qHTE0\",\"batchNumber\":\"addBatch_batchNumber__3lTmb\",\"batchDescription\":\"addBatch_batchDescription__4co1r\",\"summaryRow\":\"addBatch_summaryRow__1_K_D\",\"label\":\"addBatch_label__3E3np\",\"action\":\"addBatch_action__9dq2w\",\"block\":\"addBatch_block__veA5b\",\"noBorder\":\"addBatch_noBorder__1SDcX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"notificationsWarning\":\"holdingSummary_notificationsWarning__1zdSN\",\"icon\":\"holdingSummary_icon__aFOJw\",\"text\":\"holdingSummary_text__3b84J\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navSub\":\"navBarSub_navSub__2eLhP\",\"active\":\"navBarSub_active__2lHlm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"foodChainInformation\":\"foodChainInformation_foodChainInformation__1Rrxk\",\"input\":\"foodChainInformation_input__3QrrC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"modalAnimalsOnHolding_content__FOMi8\",\"input\":\"modalAnimalsOnHolding_input__2Cgad\",\"output\":\"modalAnimalsOnHolding_output__1UJ72\",\"tableContainer\":\"modalAnimalsOnHolding_tableContainer__2sbms\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"informationMessage\":\"infoContainer_informationMessage__eY5A5\",\"title\":\"infoContainer_title__38Wqh\",\"content\":\"infoContainer_content__3DmTV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"actions\":\"tagReplacement_actions__2wsZr\",\"submit\":\"tagReplacement_submit__xoLdu\",\"exit\":\"tagReplacement_exit__2ltUI\",\"addIndividualRow\":\"tagReplacement_addIndividualRow__212gG\",\"batchNumber\":\"tagReplacement_batchNumber__1bLai\",\"tagNumber\":\"tagReplacement_tagNumber__1yxx5\"};","module.exports = __webpack_public_path__ + \"static/media/icon-help.6c9156c9.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tagDetails\":\"customTableBoAnimalActivity_tagDetails__PFV93\",\"summary\":\"customTableBoAnimalActivity_summary__2VKd8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"hint\":\"hint_hint__tOD4d\",\"fileUpload\":\"hint_fileUpload__3yltb\",\"notFound\":\"hint_notFound__33ARQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inline\":\"cphEntry_inline__3cJPO\",\"nonEnglishCph\":\"cphEntry_nonEnglishCph__2QKZx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"date\":\"inputDate_date__34aOo\",\"block\":\"inputDate_block__33_AU\",\"inline\":\"inputDate_inline__aBhx3\",\"inlineWarningOrError\":\"inputDate_inlineWarningOrError__3vypo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"hint\":\"hint_hint__1DZvy\",\"notFound\":\"hint_notFound__28r06\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filters\":\"filtersHoldingRegister_filters__1Kpec\",\"download\":\"filtersHoldingRegister_download__2OFcY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchButton\":\"filtersUserActivity_searchButton__2l-aH\",\"filters\":\"filtersUserActivity_filters__1Ck-k\",\"requestTypeAndSearch\":\"filtersUserActivity_requestTypeAndSearch__2arDd\",\"requestType\":\"filtersUserActivity_requestType__3-X4d\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"backdrop\":\"backdrop_backdrop__O11Tw\",\"isConfirm\":\"backdrop_isConfirm__3-jsL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"itemsTotal\":\"paperAnimalBatch_itemsTotal__1_h1K\",\"label\":\"paperAnimalBatch_label__Rr-Sy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"itemsTotal\":\"paperAnimalIndividual_itemsTotal__OdinV\",\"label\":\"paperAnimalIndividual_label__26ECh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"manualTagEntry\":\"manualTagEntry_manualTagEntry__2HAZg\",\"notes\":\"manualTagEntry_notes__36YZj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"hrContainer\":\"holdingRegister_hrContainer__3Udgk\",\"actions\":\"holdingRegister_actions__2sCQz\"};","module.exports = __webpack_public_path__ + \"static/media/page1.aa70684b.png\";","module.exports = __webpack_public_path__ + \"static/media/page2.8546b1ea.png\";","module.exports = __webpack_public_path__ + \"static/media/suplimentary_form.73cd518f.png\";","module.exports = __webpack_public_path__ + \"static/media/suplimentary_form_last.55b23a82.png\";","module.exports = __webpack_public_path__ + \"static/media/fci_animals_form.5e7935ae.png\";","module.exports = __webpack_public_path__ + \"static/media/fci_animals_form_last.cc6476b6.png\";","module.exports = __webpack_public_path__ + \"static/media/page1_deer.42abc519.png\";","module.exports = __webpack_public_path__ + \"static/media/page2_deer.937bc38d.png\";","module.exports = __webpack_public_path__ + \"static/media/page3-cattle.7603bcf7.png\";","module.exports = __webpack_public_path__ + \"static/media/page3-deer.76b7b6fe.png\";","module.exports = __webpack_public_path__ + \"static/media/page3-goats.9055679e.png\";","module.exports = __webpack_public_path__ + \"static/media/page3-pigs.d7368624.png\";","module.exports = __webpack_public_path__ + \"static/media/page3-sheep.df37fed4.png\";","module.exports = \"data:image/png;base64,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\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"formGroup\":\"cphField_formGroup__24tFD\",\"half\":\"cphField_half__2H7wF\",\"quarter\":\"cphField_quarter__2GXSz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"label\":\"fieldLabel_label__BIVsf\",\"notFound\":\"fieldLabel_notFound__2j7E-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"actions\":\"filtersBoSearchRequestId_actions__1FX4i\",\"requestId\":\"filtersBoSearchRequestId_requestId__2Wewn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"spinner\":\"spinner_spinner__1cm6N\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"numberEntry\":\"numberEntry_numberEntry__3N1Kh\",\"w25\":\"numberEntry_w25__1QyK2\",\"w50\":\"numberEntry_w50__2HLTk\",\"w75\":\"numberEntry_w75__2sFed\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"manualTagEntry\":\"manualTagEntry_manualTagEntry__39FJF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"hdContainer\":\"holdingActivity_hdContainer__2LC3E\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"notes\":\"userNotes_notes__1R0Cq\",\"itemListHeader\":\"userNotes_itemListHeader__1JEAI\",\"itemList\":\"userNotes_itemList__1VPFw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"animalDetails_title__1Oehj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"authNavigation\":\"authNavigation_authNavigation__1kYZu\",\"authNavigation__link\":\"authNavigation_authNavigation__link__2mv9P\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"authNavigation\":\"vetAuthNavigation_authNavigation__2g9Fo\",\"authNavigation__link\":\"vetAuthNavigation_authNavigation__link__3v6Yr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"transportInformation\":\"transportDetails_transportInformation__2CMit\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"transportDetails\":\"movementStep3_transportDetails__aUhJu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"phoneNumber\":\"transportDetailsForm_phoneNumber__3vdkg\",\"vehicleRegistration\":\"transportDetailsForm_vehicleRegistration__1JHpv\",\"authorisationNumber\":\"transportDetailsForm_authorisationNumber__3JbaZ\",\"data\":\"transportDetailsForm_data__1XXAq\",\"firstName\":\"transportDetailsForm_firstName__3Cu-j\",\"lastName\":\"transportDetailsForm_lastName__3shsi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"select\":\"dropdown_select__hcMpl\",\"w25\":\"dropdown_w25__454Va\",\"w50\":\"dropdown_w50__2q0Ff\",\"w75\":\"dropdown_w75__2Hbmv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"errorWrapper\":\"error_errorWrapper__bTKfV\"};","module.exports = __webpack_public_path__ + \"static/media/logo-livestock.442ad965.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loading\":\"loading_loading__3f9y1\",\"loading1\":\"loading_loading1__1CulY\",\"loading2\":\"loading_loading2__3wBMk\",\"loading3\":\"loading_loading3__3i1TW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchButton\":\"uploadTags_searchButton__1IchJ\"};","var map = {\n\t\"./duet-date-picker.entry.js\": [\n\t\t616,\n\t\t9\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 560;\nmodule.exports = webpackAsyncContext;","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nconst register = (config) => {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = process.env.PUBLIC_URL + '/service-worker.js';\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n }).catch((error) => {\n console.error(error); //eslint-disable-line\n });;\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nconst registerValidSW = (swUrl, config) => {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker === null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n};\n\nconst checkValidServiceWorker = (swUrl, config) => {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType !== null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister()\n .then(() => {\n window.location.reload();\n })\n .catch((error) => {\n console.error(error);\n })\n }).catch((error) => {\n console.error(error); //eslint-disable-line\n });;\n } else {\n // Service worker found. Can proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n};\n\nconst unregister = () => {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister()\n .catch((error) => {\n console.error(error); //eslint-disable-line\n });\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n};\n\nexport { register, unregister };\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport Backend from 'i18next-http-backend';\nimport LanguageDetector from 'i18next-browser-languagedetector';\n\nconst initI18N = () => {\n i18n\n // load translation using http -> see /public/locales (i.e. https://github.com/i18next/react-i18next/tree/master/example/react/public/locales)\n // learn more: https://github.com/i18next/i18next-http-backend\n .use(Backend)\n // detect user language\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n .use(LanguageDetector)\n // pass the i18n instance to react-i18next.\n .use(initReactI18next)\n // init i18next\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n fallbackLng: 'en',\n debug: false,\n interpolation: {\n escapeValue: false\n },\n react: {\n useSuspense: false\n },\n backend: {\n queryStringParams: { v: '1.72.1' }\n }\n }).catch((error) => {\n console.error(error); //eslint-disable-line\n });\n};\n\nexport default initI18N;\n","import decode from 'jwt-decode';\nconst env = require('./env.json');\nconst localhost = require('./localhost.json');\n\nconst { config } = localhost;\nconst local = decode(config.substring(7, config.length - 7));\nconst keys = Object.keys(env);\n\nconst codeHelper = {};\nkeys.forEach((key) => {\n codeHelper[key] = typeof env[key] !== 'string' || !env[key].includes('#') ? env[key] : local[key];\n});\n\nexport default codeHelper;\n","import { ApplicationInsights } from '@microsoft/applicationinsights-web';\nimport { ReactPlugin } from '@microsoft/applicationinsights-react-js';\nimport { createBrowserHistory } from 'history';\nimport codeHelper from 'services/codeHelper';\n\nconst browserHistory = createBrowserHistory({ basename: '' });\nconst reactPlugin = new ReactPlugin();\n\nconst appInsights = new ApplicationInsights({\n config: {\n connectionString: codeHelper.APP_INSIGHT,\n //instrumentationKey: codeHelper.APP_INSIGHT,\n extensions: [reactPlugin],\n extensionConfig: {\n [reactPlugin.identifier]: { history: browserHistory }\n },\n enableAutoRouteTracking: true,\n autoTrackPageVisitTime: true,\n samplingPercentage: 100,\n enableUnhandledPromiseRejectionTracking: true,\n enableCorsCorrelation: true,\n distributedTracingMode: 1,\n loggingLevelConsole: 0,\n loggingLevelTelemetry: 2,\n enableDebugExceptions: true\n }\n});\n// distributedTracingMode from https://docs.microsoft.com/en-us/azure/azure-monitor/app/correlation\n// AI = 0\n// AI_AND_W3C = 1\n\n// AI\n// Request-Id: Carries the globally unique ID of the call.\n// Correlation-Context: Carries the name-value pairs collection of the distributed trace properties.\n\n// AI_AND_W3C\n// W3C Trace-Context, which defines:\n// traceparent: Carries the globally unique operation ID and unique identifier of the call.\n// tracestate: Carries system-specific tracing context.\n\n// * loggingLevelConsole / loggingLevelTelemetry\n// * All logs with a severity level higher\n// * than the configured level will be printed to console / sent as telemetry. Otherwise\n// * they are suppressed. ie Level 2 will print both CRITICAL and\n// * WARNING logs to console, level 1 prints only CRITICAL.\n// *\n// * Note: Logs sent as telemetry to instrumentation key will also\n// * be logged to console if their severity meets the configured loggingConsoleLevel\n// *\n// * 0: ALL console logging off\n// * 1: logs to console: severity >= CRITICAL\n// * 2: logs to console: severity >= WARNING\n\nappInsights.loadAppInsights();\n//appInsights.trackPageView();\n\nconst appInsightsService = {\n startTrackPage: (name) => appInsights.startTrackPage(name),\n stopTrackPage: (name, url, properties, measurements) => appInsights.stopTrackPage(name, url, properties, measurements),\n trackEvent: (event) => appInsights.trackEvent(event),\n trackException: (exception) => appInsights.trackException(exception),\n trackMetric: (message) => appInsights.trackMetric(message),\n trackPageView: (name, url) => appInsights.trackPageView(name, url),\n trackTrace: (message) => appInsights.trackTrace(message),\n reactPlugin: reactPlugin,\n appInsights: appInsights\n};\n\nexport default appInsightsService;\n","import { LogLevel } from '@azure/msal-browser';\nimport appInsightsService from 'services/appInsightsService';\nimport codeHelper from 'services/codeHelper';\n\nconst sprintf = require('util').format;\n\nconst b2cConfigJson = {\n credentials: {\n tenantName: codeHelper.B2C_TENANT,\n clientID: codeHelper.B2C_CLIENTID\n },\n policies: {\n signUpSignIn: codeHelper.B2C_POLICY,\n vetSignUp: codeHelper.B2C_VETPOLICY,\n forgotPassword: codeHelper.B2C_POLICY_FORGOT,\n editProfile: codeHelper.B2C_POLICY_CHANGE\n },\n metadata: {\n b2cDomain: codeHelper.B2C_DOMAIN\n },\n protectedRoutes: {\n bff: {\n scopes: [\n codeHelper.B2C_SCOPE\n ],\n apiEndpoint: codeHelper.BFF_URL\n }\n },\n settings: {\n redirectUrl: '/',\n cacheLocation: 'sessionStorage',\n postLogoutRedirectUri: '/logged-out',\n navigateToLoginRequestUrl: true,\n storeAuthStateInCookie: false\n }\n};\n\nconst generateSecureRandomString = (length) => {\n if (typeof window !== 'undefined' && window.crypto && window.crypto.getRandomValues) {\n const array = new Uint8Array(length);\n window.crypto.getRandomValues(array);\n const randomString = Array.from(array, (byte) => byte.toString(36)).join('');\n return randomString;\n }\n};\n\n/**\n * Enter here the user flows and custom policies for your B2C application\n * To learn more about user flows, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview\n * To learn more about custom policies, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-overview\n */\nconst baseUrl = sprintf('https://%s/%s/', b2cConfigJson.metadata.b2cDomain, b2cConfigJson.credentials.tenantName);\nconst getAuthority = (uri) => ({ authority: sprintf('%s%s', baseUrl, uri) });\n\nconst signUpSignIn = getAuthority(b2cConfigJson.policies.signUpSignIn);\nconst vetSignUp = getAuthority(b2cConfigJson.policies.vetSignUp);\nconst forgotPassword = getAuthority(b2cConfigJson.policies.forgotPassword);\nconst editProfile = getAuthority(b2cConfigJson.policies.editProfile);\n\nexport const b2cPolicies = {\n names: {\n signUpSignIn: b2cConfigJson.policies.signUpSignIn,\n vetSignUp: b2cConfigJson.policies.vetSignUp,\n forgotPassword: b2cConfigJson.policies.forgotPassword,\n editProfile: b2cConfigJson.policies.editProfile\n },\n authorities: {\n signUpSignIn,\n vetSignUp,\n forgotPassword,\n editProfile\n },\n authorityDomain: b2cConfigJson.metadata.b2cDomain\n};\n\n/**\n * Configuration object to be passed to MSAL instance on creation.\n * For a full list of MSAL.js configuration parameters, visit:\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md\n */\nexport const msalB2CConfig = {\n auth: {\n clientId: b2cConfigJson.credentials.clientID, // \"b6cbd16e-f393-4089-83d5-9c0db776119b\" This is the ONLY mandatory field that you need to supply.\n authority: b2cPolicies.authorities.signUpSignIn.authority, // Choose SUSI as your default authority.\n knownAuthorities: [b2cPolicies.authorityDomain], // Mark your B2C tenant's domain as trusted.\n redirectUri: b2cConfigJson.settings.redirectUrl, // You must register this URI on Azure Portal/App Registration. Defaults to window.location.origin\n postLogoutRedirectUri: b2cConfigJson.settings.postLogoutRedirectUri, // Indicates the page to navigate after logout.\n navigateToLoginRequestUrl: b2cConfigJson.settings.navigateToLoginRequestUrl // If \"true\", will navigate back to the original request location before processing the auth code response.\n },\n cache: {\n cacheLocation: b2cConfigJson.settings.cacheLocation, // Configures cache location. \"sessionStorage\" is more secure, but \"localStorage\" gives you SSO between tabs.\n storeAuthStateInCookie: b2cConfigJson.settings.storeAuthStateInCookie // Set this to \"true\" if you are having issues on IE11 or Edge\n },\n system: {\n loggerOptions: {\n loggerCallback: (level, message, containsPii) => {\n if (containsPii) {\n return;\n }\n switch (level) {\n case LogLevel.Error: {\n appInsightsService.trackException(message);\n break;\n }\n case LogLevel.Warning: {\n appInsightsService.trackTrace(message);\n break;\n }\n case LogLevel.Verbose: {\n appInsightsService.trackTrace(message);\n break;\n }\n default:\n break;\n }\n }\n }\n }\n};\n\n/**\n * Add here the endpoints and scopes when obtaining an access token for protected web APIs. For more information, see:\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md\n */\nexport const protectedResources = {\n bff: {\n endpoint: b2cConfigJson.protectedRoutes.bff.apiEndpoint,\n scopes: [...b2cConfigJson.protectedRoutes.bff.scopes] // e.g. api://xxxxxx/access_as_user\n }\n};\n\n/**\n * Scopes you add here will be prompted for user consent during sign-in.\n * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.\n * For more information about OIDC scopes, visit:\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes\n */\nexport const loginRequest = {\n scopes: [...protectedResources.bff.scopes]\n};\n\nexport const vetSignUpRequest = {\n scopes: [...protectedResources.bff.scopes],\n authority: b2cPolicies.authorities.vetSignUp.authority,\n responseType: 'code',\n redirectUri: b2cConfigJson.settings.redirectUrl,\n state: generateSecureRandomString(16),\n nonce: generateSecureRandomString(16)\n};\n","import { PublicClientApplication } from '@azure/msal-browser';\nimport { msalB2CConfig } from 'services/b2cService';\n\nconst msalInstance = new PublicClientApplication(msalB2CConfig);\n\nexport default msalInstance;\n","const Routing = {\n connectionCheck: '/connection-check',\n tokens: '/tokens',\n\n logout: '/logout',\n root: '/',\n version: '/version',\n signIn: '/signin',\n changePassword: '/change-password/',\n\n abattoirRoot: '/abattoir',\n aiCentreRoot: '/ai-centre',\n assemblyRoot: '/assembly',\n boRoot: '/bo',\n collectionRoot: '/collection',\n commonRoot: '/common',\n keeperRoot: '/keeper',\n marketRoot: '/market',\n otherRoot: '/other',\n portRoot: '/port',\n quarantineRoot: '/quarantine',\n showRoot: '/show',\n slaughterMarketRoot: '/slaughter-market',\n storeMarketRoot: '/store-market',\n vetRoot: '/veterinary',\n\n home: '/home',\n holdings: '/home/holdings',\n userActivity: '/home/user-activity',\n activityDetails: '/activity-details/',\n activityUndo: '/activity-undo/',\n\n abattoirMovements: '/abattoir/movements',\n abattoirMovementConfirm: '/abattoir/movements/confirm',\n abattoirMovementDetails: '/abattoir/movement-details/',\n abattoirSearch: '/abattoir/search',\n abattoirAttestation: '/abattoir/abattoirAttestation',\n abattoirAttestationTagResult: '/abattoir/abattoirAttestationTagResult',\n abattoirAttestationDeclaration: '/abattoir/abattoirAttestationDeclaration/',\n abattoirManualTags: '/abattoir/abattoirManualTag',\n abattoirUploadTags: '/abattoir/abattoirUploadTag',\n abattoirAttestationDeclarationTags: '/abattoir/abattoirAttestationDeclarationTags/',\n abattoirCheckHolding: '/abattoir/abattoirCheckHolding',\n abattoirAttestationResult: '/abattoir/abattoirAttestationResult',\n\n aiCentreMovements: '/ai-centre/movements',\n aiCentreMovementConfirm: '/ai-centre/movements/confirm',\n aiCentreMovementDetails: '/ai-centre/movement-details/',\n aiCentreSearch: '/ai-centre/search',\n\n assemblyMovements: '/assembly/movements',\n assemblyMovementConfirm: '/assembly/movements/confirm',\n assemblyMovementDetails: '/assembly/movement-details/',\n assemblySearch: '/assembly/search',\n\n boAnimalActivity: '/bo/animal-activity/',\n boAnimalActivityMovementHistory: '/bo/animal-activity/movement-history/',\n boAnimalActivityTaggingHistory: '/bo/animal-activity/tagging-history/',\n boAnimalActivityAnimalDetails: '/bo/animal-activity/animal-details/',\n boAnimalActivityProgeny: '/bo/animal-activity/progeny/',\n boEditCustomer: '/bo/edit-customer/',\n boEditMovements: '/bo/edit-movements/',\n boHoldingActivity: '/bo/holding-activity/',\n boHoldingActivityAdjacentMovements: '/bo/holding-activity/adjacent-movements/',\n boHoldingActivityAnimalsAdded: '/bo/holding-activity/animals-added/',\n boHoldingActivityAnimalsOnHolding: '/bo/holding-activity/animals-on-holding/',\n boHoldingActivityAnnualInventory: '/bo/holding-activity/annual-inventory/',\n boHoldingActivityAssociatedHoldings: '/bo/holding-activity/associated-holdings/',\n boHoldingActivityDeaths: '/bo/holding-activity/deaths/',\n boHoldingActivityHoldingDetails: '/bo/holding-activity/holding-details/',\n boHoldingActivityMovements: '/bo/holding-activity/movements/',\n boHoldingActivityPendingReviews: '/bo/holding-activity/pending-reviews/',\n boHoldingActivityTaggingApplications: '/bo/holding-activity/tagging-applications/',\n boHoldingActivityTaggingReplacement: '/bo/holding-activity/tagging-replacement/',\n boMovementDetails: '/bo/movement-details/',\n boMovements: '/bo/movements/',\n boMovementsConfirm: '/bo/movements/confirm',\n boRequestIdDetails: '/bo/request-id-details/',\n boSearchMovements: '/bo/search-movements',\n boSearchMovementsByDateAndCph: '/bo/search-movements/by-date-and-cph/',\n boSearchMovementsByMovementReference: '/bo/search-movements/by-movement-reference/',\n boSearchMovementsByPaperId: '/bo/search-movements/by-paper-id/',\n boSearchRequestId: '/bo/search-request-id',\n boUserActivity: '/bo/user-activity/',\n boUserActivityAll: '/bo/user-activity/all/',\n boUserActivityAnimalsAdded: '/bo/user-activity/animals-added/',\n boUserActivityAnnualInventory: '/bo/user-activity/annual-inventory/',\n boUserActivityBirths: '/bo/user-activity/births/',\n boUserActivityDeaths: '/bo/user-activity/deaths/',\n boUserActivityMovements: '/bo/user-activity/movements/',\n boUserActivityMovementAmends: '/bo/user-activity/movement-amends/',\n boUserActivityMovementReviews: '/bo/user-activity/movement-reviews/',\n boUserActivityTaggingApplications: '/bo/user-activity/tagging-applications/',\n boUserActivityTaggingReplacement: '/bo/user-activity/tagging-replacement/',\n boVerifyCustomer: '/bo/verify-customer',\n boVaRecords: '/bo/holding-activity/va-records/',\n boVaRecordDeclaration: '/bo/holding-activity/va-declaration/',\n\n collectionMovements: '/collectionCentre/movements',\n collectionMovementConfirm: '/collectionCentre/movements/confirm',\n collectionMovementDetails: '/collectionCentre/movement-details/',\n collectionSearch: '/collectionCentre/search',\n\n commonMovements: '/common/movements',\n commonMovementConfirm: '/common/movements/confirm',\n commonMovementDetails: '/common/movement-details/',\n commonSearch: '/common/search',\n\n marketMovements: '/market/movements',\n marketMovementConfirm: '/market/movements/confirm',\n marketMovementDetails: '/market/movement-details/',\n marketSearch: '/market/search',\n\n otherMovements: '/other/movements',\n otherMovementConfirm: '/other/movements/confirm',\n otherMovementDetails: '/other/movement-details/',\n otherSearch: '/other/search',\n\n portMovements: '/port/movements',\n portMovementConfirm: '/port/movements/confirm',\n portMovementDetails: '/port/movement-details/',\n portSearch: '/port/search',\n\n quarantineMovements: '/quarantine/movements',\n quarantineMovementConfirm: '/quarantine/movements/confirm',\n quarantineMovementDetails: '/quarantine/movement-details/',\n quarantineSearch: '/quarantine/search',\n\n showMovements: '/show/movements',\n showMovementConfirm: '/show/movements/confirm',\n showMovementDetails: '/show/movement-details/',\n showSearch: '/show/search',\n\n slaughterMarketMovements: '/slaughter-market/movements',\n slaughterMarketMovementConfirm: '/slaughter-market/movements/confirm',\n slaughterMarketMovementDetails: '/slaughter-market/movement-details/',\n slaughterMarketSearch: '/slaughter-market/search',\n\n storeMarketMovements: '/store-market/movements',\n storeMarketMovementConfirm: '/store-market/movements/confirm',\n storeMarketMovementDetails: '/store-market/movement-details/',\n storeMarketSearch: '/store-market/search',\n\n vetMovements: '/veterinary/movements',\n vetMovementConfirm: '/veterinary/movements/confirm',\n vetMovementDetails: '/veterinary/movement-details/',\n vetSearch: '/veterinary/search',\n\n animals: '/keeper/animals/',\n births: '/keeper/births/',\n birthsConfirm: '/keeper/births/confirm/',\n deaths: '/keeper/deaths/',\n deathsStep1: '/keeper/deaths/step1/',\n deathsStep2: '/keeper/deaths/step2/',\n deathsSummary: '/keeper/deaths/summary/',\n deathsConfirm: '/keeper/deaths/confirm/',\n foundConfirm: '/keeper/missing-and-found/found/confirm/',\n handshake: '/keeper/handshake/',\n holdingRegister: '/keeper/holding-register/',\n holdingRegisterAnnualInventory: '/keeper/holding-register/annual-inventory/',\n holdingRegisterBirths: '/keeper/holding-register/births/',\n holdingRegisterDeaths: '/keeper/holding-register/deaths/',\n holdingRegisterDetails: '/keeper/holding-register/holding-details/',\n holdingRegisterDownload: '/keeper/holding-register/download/',\n holdingRegisterMovementsOff: '/keeper/holding-register/movements-off/',\n holdingRegisterMovementsOn: '/keeper/holding-register/movements-on/',\n holdingRegisterAdjacentMovements: '/keeper/holding-register/adjacent-movements/',\n holdingRegisterTaggingApplications: '/keeper/holding-register/tagging-applications/',\n holdingRegisterTaggingReplacement: '/keeper/holding-register/tagging-replacement/',\n keeperHandshakeDetails: '/keeper/handshake/',\n keeperHolding: '/keeper/holding-summary/',\n missingFound: '/keeper/missing-and-found/',\n missingFoundStep1: '/keeper/missing-and-found/step1/',\n missingFoundSummary: '/keeper/missing-and-found/summary/',\n missingConfirm: '/keeper/missing-and-found/missing/confirm/',\n movements: '/keeper/movements/',\n movementsStep1: '/keeper/movements/step1/',\n movementsStep2: '/keeper/movements/step2/',\n movementsStep3: '/keeper/movements/step3/',\n movementsStep4: '/keeper/movements/step4/',\n movementsSummary: '/keeper/movements/summary/',\n movementsConfirm: '/keeper/movements/confirm',\n tagging: '/keeper/tagging/',\n taggingApplications: '/keeper/tagging/applications/',\n taggingApplicationsConfirm: '/keeper/tagging/applications/confirm/',\n taggingRecent: '/keeper/tagging/recent/',\n taggingReplacements: '/keeper/tagging/replacements/',\n taggingReplacementsConfirm: '/keeper/tagging/replacements/confirm/',\n\n vetPath: '/vet/',\n vetHome: '/vet/home',\n vetDetails: '/vet/details',\n vetCreate: '/vet/create',\n vetSummary: '/vet/summary',\n vetDeclaration: '/vet/declaration'\n};\n\nexport default Routing;\n","import Routing from 'routing';\n\nconst speciesId = {\n UNKNOWN: 0,\n SHEEP: 1,\n GOATS: 2,\n CATTLE: 3,\n ALPACAS: 4,\n PIGS: 5,\n DEER: 6,\n HORSES: 7\n};\n\nconst internalSpeciesLabel = {\n UNKNOWN: 'Unknown',\n SHEEP: 'Sheep',\n GOATS: 'Goats',\n CATTLE: 'Cattle',\n ALPACAS: 'Alpacas',\n PIGS: 'Pigs',\n DEER: 'Deer',\n HORSES: 'Horses'\n};\n\nconst speciesName = {\n UNKNOWN: 'animal-plural.' + speciesId.UNKNOWN.toString(),\n SHEEP: 'animal-plural.' + speciesId.SHEEP.toString(),\n GOATS: 'animal-plural.' + speciesId.GOATS.toString(),\n CATTLE: 'animal-plural.' + speciesId.CATTLE.toString(),\n ALPACAS: 'animal-plural.' + speciesId.ALPACAS.toString(),\n PIGS: 'animal-plural.' + speciesId.PIGS.toString(),\n DEER: 'animal-plural.' + speciesId.DEER.toString(),\n HORSES: 'animal-plural.' + speciesId.HORSES.toString()\n};\n\nconst speciesBabyName = {\n UNKNOWN: 'baby.' + speciesId.UNKNOWN.toString(),\n SHEEP: 'baby.' + speciesId.SHEEP.toString(),\n GOATS: 'baby.' + speciesId.GOATS.toString(),\n CATTLE: 'baby.' + speciesId.CATTLE.toString(),\n ALPACAS: 'baby.' + speciesId.ALPACAS.toString(),\n PIGS: 'baby.' + speciesId.PIGS.toString(),\n DEER: 'baby.' + speciesId.DEER.toString(),\n HORSES: 'baby.' + speciesId.HORSES.toString()\n};\n\nexport const fieldWidthType = {\n HALF: 'half',\n QUARTER: 'quarter'\n};\n\nconst requestType = {\n adjacentMovement: 240,\n animalsAdded: 246,\n annualInventoryCreate: 141,\n annualInventoryDelete: 142,\n birth: 165,\n correctTransfer: 15,\n death: 31,\n holdingProductionTypeCreate: 241,\n holdingProductionTypeDelete: 242,\n movement: 4,\n movementHandshake: 145,\n paperMovementAdd: 229,\n paperMovementEdit: 238,\n tagApplication: 10,\n tagReplacement: 14,\n undo: 32\n};\n\nconst constants = {\n address: {\n empty: 'No Address',\n format: {\n full: 'full',\n short: 'short',\n line: 'line',\n inline: 'inline',\n keeper: 'keeper',\n none: 'none',\n onlyAddress: 'onlyAddress'\n },\n status: {\n BFF_ERROR1: 'ERROR RESPONSE',\n BFF_ERROR2: 'Not Found',\n NO_NAME: 'label.noName',\n NO_TYPE: 'label.noType',\n NO_ADDRESS: 'label.noAddress',\n NOT_FOUND: 'label.cphNotFound',\n ERROR: 'ERROR',\n ERROR_NOT_FOUND: 'uiError.404address',\n FOUND_WITHOUT_ADDRESS: 'label.cphFoundWithoutAddress',\n CPH_NOT_LINKED: 'label.cphNotLinked',\n FETCH: 'label.fetchingData'\n }\n },\n\n abattoirTag: {\n maxTagLimit: 200\n },\n\n bo: {\n holdingActivity: {\n eventTypes: {\n adjacentMovements: {\n label: 'label.adjacentMovements',\n url: Routing.boHoldingActivityAdjacentMovements,\n showDateRange: true,\n showSpecies: [internalSpeciesLabel.SHEEP, internalSpeciesLabel.GOATS, internalSpeciesLabel.DEER],\n endpoint: '/adjacentMovements'\n },\n // animalsAdded: {\n // label: 'label.animalsAdded',\n // url: Routing.boHoldingActivityAnimalsAdded,\n // showDateRange: true,\n // showSpecies: [internalSpeciesLabel.SHEEP, internalSpeciesLabel.GOATS, internalSpeciesLabel.DEER],\n // speciesRequired: true,\n // endpoint: '/animalsAdded'\n // },\n animalsOnHolding: {\n label: 'label.animalsOnHolding',\n url: Routing.boHoldingActivityAnimalsOnHolding,\n showSpecies: [internalSpeciesLabel.SHEEP, internalSpeciesLabel.GOATS, internalSpeciesLabel.DEER],\n showDate: true,\n speciesRequired: true,\n endpoint: '/animals'\n },\n annualInventory: {\n label: 'label.annualInventory',\n url: Routing.boHoldingActivityAnnualInventory,\n showSpecies: [internalSpeciesLabel.SHEEP, internalSpeciesLabel.GOATS],\n endpoint: '/annualInventory'\n },\n associatedHoldings: {\n label: 'label.associatedHoldings',\n url: Routing.boHoldingActivityAssociatedHoldings,\n endpoint: '/holdingsInBusiness'\n },\n deaths: {\n label: 'label.deaths',\n url: Routing.boHoldingActivityDeaths,\n showDateRange: true,\n showSpecies: [internalSpeciesLabel.SHEEP, internalSpeciesLabel.GOATS, internalSpeciesLabel.DEER],\n endpoint: '/holdingRegister'\n },\n holdingDetails: {\n label: 'label.holdingDetails',\n url: Routing.boHoldingActivityHoldingDetails,\n endpoint: '/holdingDetails',\n useComponent: 'BoHoldingActivity'\n },\n movements: {\n label: 'label.movements',\n url: Routing.boHoldingActivityMovements,\n showDateRange: true,\n showSpecies: [internalSpeciesLabel.SHEEP, internalSpeciesLabel.GOATS, internalSpeciesLabel.DEER],\n endpoint: '/holdingRegister'\n },\n pendingReviews: {\n label: 'label.pendingReviews',\n url: Routing.boHoldingActivityPendingReviews,\n showDateRange: true,\n showSpecies: [internalSpeciesLabel.SHEEP, internalSpeciesLabel.GOATS, internalSpeciesLabel.DEER],\n speciesRequired: true,\n endpoint: '/notifications'\n },\n tagReplacements: {\n label: 'label.replacementTags',\n url: Routing.boHoldingActivityTaggingReplacement,\n showDateRange: true,\n showSpecies: [internalSpeciesLabel.SHEEP, internalSpeciesLabel.GOATS, internalSpeciesLabel.DEER],\n endpoint: '/holdingRegister'\n },\n tagApplications: {\n label: 'label.tagApplications',\n url: Routing.boHoldingActivityTaggingApplications,\n showDateRange: true,\n showSpecies: [internalSpeciesLabel.SHEEP, internalSpeciesLabel.GOATS, internalSpeciesLabel.DEER],\n endpoint: '/holdingRegister'\n },\n vaRecords: {\n label: 'label.vaRecords',\n url: Routing.boVaRecords,\n endpoint: '/getVetAttestationsDetails'\n }\n }\n },\n\n movementSearch: {\n tabs: {\n tab_MovementRange: {\n endpoint: (movementType) => movementType === constants.movementTypeSearch.cancelled ? '/cancelledMovementsList' : '/approvedMovementsList'\n },\n\n tab_MovementRef: {\n endpoint: () => '/movementDetails'\n },\n\n tab_PaperId: {\n endpoint: () => '/paperDocument'\n }\n }\n },\n\n userActivity: {\n eventTypes: {\n all: {\n name: 'all',\n label: 'label.allEventTypes',\n subtitle: 'label.allEventTypes',\n url: Routing.boUserActivityAll,\n showDateRange: true,\n endpoint: '/userActivity'\n },\n animalsAdded: {\n name: 'animalsAdded',\n label: 'label.animalsAdded',\n subtitle: 'label.animalsAdded',\n url: Routing.boUserActivityAnimalsAdded,\n showDateRange: true,\n endpoint: '/userActivity'\n },\n annualInventory: {\n name: 'annualInventory',\n label: 'label.annualInventory',\n subtitle: 'label.annualInventory',\n url: Routing.boUserActivityAnnualInventory,\n endpoint: '/userActivity'\n },\n births: {\n name: 'births',\n label: 'label.births',\n subtitle: 'label.birthsIndividualTagging',\n url: Routing.boUserActivityBirths,\n showDateRange: true,\n endpoint: '/userActivity'\n },\n deaths: {\n name: 'deaths',\n label: 'label.deaths',\n subtitle: 'label.deaths',\n url: Routing.boUserActivityDeaths,\n showDateRange: true,\n endpoint: '/userActivity'\n },\n movements: {\n name: 'movements',\n label: 'label.movements',\n subtitle: 'label.movements',\n url: Routing.boUserActivityMovements,\n showDateRange: true,\n endpoint: '/userActivity'\n },\n movementAmends: {\n name: 'movementAmends',\n label: 'label.movementAmends',\n subtitle: 'label.movementAmendsCorrectedMovements',\n url: Routing.boUserActivityMovementAmends,\n showDateRange: true,\n endpoint: '/userActivity'\n },\n movementReviews: {\n name: 'movementReviews',\n label: 'label.movementReviews',\n subtitle: 'label.movementReviews',\n url: Routing.boUserActivityMovementReviews,\n showDateRange: true,\n endpoint: '/userActivity'\n },\n tagReplacements: {\n name: 'tagReplacements',\n label: 'label.replacementTags',\n subtitle: 'label.replacementTags',\n url: Routing.boUserActivityTaggingReplacement,\n showDateRange: true,\n endpoint: '/userActivity'\n },\n tagApplications: {\n name: 'tagApplications',\n label: 'label.tagApplications',\n subtitle: 'label.tagApplications',\n url: Routing.boUserActivityTaggingApplications,\n showDateRange: true,\n endpoint: '/userActivity'\n }\n }\n }\n },\n\n claConfig: {\n movement_Date_MaxDaysInFuture_OffMove: 'Movement_Date_MaxDaysInFuture_OffMove',\n movement_Date_MaxDaysInFuture_OnMove: 'Movement_Date_MaxDaysInFuture_OnMove',\n movement_Dates_MaxDaysBetween: 'Movement_Dates_MaxDaysBetween'\n },\n\n cph: {\n abattoir: 'Abattoir',\n agriculturalHolding: 'Agricultural Holding',\n assemblyCentre: 'Assembly Centre',\n collectionCentre: 'Collection Centre',\n market: 'Market',\n none: 'NON-CPH',\n showground: 'Showground',\n unknown: 'UNKNOWN'\n },\n\n cphState: {\n dropdown: 'dropdown',\n entry: 'entry',\n readOnly: 'readOnly'\n },\n\n dateTypes: {\n birth: 'birth',\n death: 'death',\n found: 'found',\n movement: 'movement',\n tagApplication: 'tagApplication'\n },\n\n dateRangeErrors: {\n birth: 'error.birthDateAboveRange',\n death: 'error.deathDateAboveRange',\n found: 'error.foundDateAboveRange',\n movement: 'error.movementDateAboveRange',\n tagApplication: 'error.taggingDateAboveRange',\n default: 'error.genericDateAboveRange'\n },\n\n error: {\n addressMessage: 'Request failed with status code 404'\n },\n\n errorAndWarning: {\n error: 'Error',\n warning: 'Warning'\n },\n\n filters: {\n inside: 'inside',\n outside: 'outside'\n },\n\n flags: {\n departure: 'departure',\n destination: 'destination',\n end: 'end',\n from: 'from',\n single: 'single',\n start: 'start',\n to: 'to'\n },\n\n gender: {\n 1: 'unknown',\n 2: 'female',\n 3: 'male',\n 4: 'male',\n 5: 'female'\n },\n\n holdingRegister: {\n identifier: {\n all: 'all'\n },\n\n table: {\n AdjacentMovements: 'HoldingRegisterAdjacentMovements',\n AnnualInventory: 'HoldingRegisterAnnualInventory',\n Deaths: 'HoldingRegisterDeaths',\n Download: 'HoldingRegisterDownload',\n MovementsOn: 'HoldingRegisterMovementsOn',\n MovementsOff: 'HoldingRegisterMovementsOff',\n TagApplications: 'HoldingRegisterTagApplications',\n TagReplacements: 'HoldingRegisterTagReplacements',\n VaRecords: 'HoldingRegisterVaRecords'\n },\n\n type: {\n adjacentMovements: 'AdjacentMovements',\n annualInventory: 'AnnualInventory',\n births: 'Births',\n deaths: 'Deaths',\n download: 'Download',\n movementsOn: 'MovementsOn',\n movementsOff: 'MovementsOff',\n tagApplications: 'TagApplications',\n tagReplacements: 'TagReplacements',\n vaRecords: 'VaRecords'\n },\n\n endpoint: {\n AdjacentMovements: '/adjacentMovements',\n AnnualInventory: '/annualInventory',\n Births: '/holdingRegister',\n Deaths: '/holdingRegister',\n MovementsOn: '/holdingRegister',\n MovementsOff: '/holdingRegister',\n TagApplications: '/holdingRegister',\n TagReplacements: '/holdingRegister',\n VaRecords: '/getVetAttestationsDetails'\n }\n },\n\n inputType: {\n number: 'number',\n password: 'password',\n text: 'text'\n },\n\n labelPosition: {\n above: 'above',\n inline: 'inline',\n none: 'none'\n },\n\n linkTypes: {\n pdfButton: 'pdfButton',\n url: 'url'\n },\n\n mimeList: [\n { extension: 'avi', mimeType: 'video/x-msvideo' },\n { extension: 'bin', mimeType: 'application/octet-stream' },\n { extension: 'bmp', mimeType: 'image/bmp' },\n { extension: 'bz', mimeType: 'application/x-bzip' },\n { extension: 'bz2', mimeType: 'application/x-bzip2' },\n { extension: 'css', mimeType: 'text/css' },\n { extension: 'csv', mimeType: 'text/csv' },\n { extension: 'doc', mimeType: 'application/msword' },\n { extension: 'docx', mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' },\n { extension: 'gz', mimeType: 'application/gzip' },\n { extension: 'gif', mimeType: 'image/gif' },\n { extension: 'htm', mimeType: 'text/html' },\n { extension: 'html', mimeType: 'text/html' },\n { extension: 'ico', mimeType: 'image/vnd.microsoft.icon' },\n { extension: 'ics', mimeType: 'text/calendar' },\n { extension: 'jar', mimeType: 'application/java-archive' },\n { extension: 'jpeg', mimeType: 'image/jpeg' },\n { extension: 'jpg', mimeType: 'image/jpeg' },\n { extension: 'js', mimeType: 'text/javascript' },\n { extension: 'json', mimeType: 'application/json' },\n { extension: 'midi', mimeType: 'audio/midi' },\n { extension: 'mp3', mimeType: 'audio/mpeg' },\n { extension: 'mpeg', mimeType: 'video/mpeg' },\n { extension: 'mpkg', mimeType: 'application/vnd.apple.installer+xml' },\n { extension: 'ods', mimeType: 'application/vnd.oasis.opendocument.spreadsheet' },\n { extension: 'png', mimeType: 'image/png' },\n { extension: 'pdf', mimeType: 'application/pdf' },\n { extension: 'php', mimeType: 'application/x-httpd-php' },\n { extension: 'ppt', mimeType: 'application/vnd.ms-powerpoint' },\n { extension: 'pptx', mimeType: 'application/vnd.openxmlformats-officedocument.presentationml.presentation' },\n { extension: 'rar', mimeType: 'application/vnd.rar' },\n { extension: 'rtf', mimeType: 'application/rtf' },\n { extension: 'svg', mimeType: 'image/svg+xml' },\n { extension: 'swf', mimeType: 'application/x-shockwave-flash' },\n { extension: 'tar', mimeType: 'application/x-tar' },\n { extension: 'tif', mimeType: 'image/tiff' },\n { extension: 'tiff', mimeType: 'image/tiff' },\n { extension: 'ttf', mimeType: 'font/ttf' },\n { extension: 'txt', mimeType: 'text/plain' },\n { extension: 'wav', mimeType: 'audio/wav' },\n { extension: 'weba', mimeType: 'audio/webm' },\n { extension: 'webm', mimeType: 'video/webm' },\n { extension: 'webp', mimeType: 'image/webp' },\n { extension: 'woff', mimeType: 'font/woff' },\n { extension: 'woff2', mimeType: 'font/woff2' },\n { extension: 'xhtml', mimeType: 'application/xhtml+xml' },\n { extension: 'xls', mimeType: 'application/vnd.ms-excel' },\n { extension: 'xlsx', mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' },\n { extension: 'xml', mimeType: 'application/xml' },\n { extension: 'xul', mimeType: 'application/vnd.mozilla.xul+xml' },\n { extension: 'zip', mimeType: 'application/zip' },\n { extension: '3gp', mimeType: 'video/3gpp' },\n { extension: '3g2', mimeType: 'video/3gpp2' },\n { extension: '7z', mimeType: 'application/x-7z-compressed' }\n ],\n\n modalActions: {\n add: 'add',\n close: 'close',\n delete: 'delete',\n edit: 'edit',\n view: 'view'\n },\n\n movement: {\n crossBorderUnsupportedRequestType: [\n requestType.paperMovementAdd\n ]\n },\n\n movementTypeSearch: {\n standard: 'standard',\n xb: 'xb',\n cancelled: 'cancelled'\n },\n\n multiItem: {\n row: 'row',\n column: 'column'\n },\n\n noRecordsToFetch: {\n three: 3\n },\n\n option: {\n animalsSatisfy: {\n doSatisfy: 'satisfy',\n doNotSatisfy: 'dontSatisfy'\n },\n\n embryo: {\n yes: 'yes',\n no: 'no'\n },\n\n exemption: {\n yes: 'yes',\n no: 'no'\n },\n\n gender: {\n male: 'male',\n female: 'female'\n },\n\n haulierMapping: {\n receivingKeeper: 'Receiving keeper',\n departureKeeper: 'Departure keeper',\n haulier: 'Haulier'\n },\n\n holdingReport: {\n allEntries: 'allEntries',\n annualInventory: 'annualInventory',\n deaths: 'deaths',\n offMovements: 'offMovements',\n onMovements: 'onMovements',\n tagApplications: 'tagApplications',\n tagReplacements: 'tagReplacements'\n },\n\n identification: {\n breedingTags: 'breedingTags',\n slaughterTags: 'slaughterTags'\n },\n\n knowCPHNumber: {\n cph: 'cph',\n fsa: 'fsa',\n no: 'no',\n unknown: 'unknown',\n yes: 'yes'\n },\n\n market: {\n green: 'green',\n red: 'red'\n },\n\n messageStatus: {\n amended: 'AM',\n default: 'DE',\n rejectedMovementReview: 'RMR',\n unconfirmed: 'No',\n unknown: 'UN'\n },\n\n missingOrFound: {\n missing: 'missing',\n found: 'found'\n },\n\n movement: {\n business: 'business',\n newMovement: 'newMovement',\n off: 'off',\n on: 'on',\n permit: 'permitMove',\n reviewMovement: 'reviewMovement'\n },\n\n recordCPH: {\n yes: 'yes',\n no: 'no'\n },\n\n recordFCI: {\n yes: 'yes',\n no: 'no'\n },\n\n recordTransportInformation: {\n yes: 'yes',\n no: 'no'\n },\n\n requestType,\n\n searchStatus: {\n reportedMoves: 'reportedMoves',\n unconfirmedMoves: 'unconfirmedMoves'\n },\n\n selectionMethod: {\n batch: 'batch',\n holding: 'holding',\n individual: 'individual',\n manualTagNumbers: 'manualTagNumbers',\n tagNumberRange: 'tagNumberRange',\n uploadFile: 'uploadFile'\n },\n\n tag: {\n breedingTags: 'breedingTags',\n individualTag: 'individualTag',\n slaughterTags: 'slaughterTags',\n upgradeTags: 'upgradeTags'\n },\n\n tagMethod: {\n onHolding: 'onHolding',\n selectFromLists: 'selectFromLists',\n tagsManually: 'tagsManually',\n batch: 'batch'\n },\n\n transporter: {\n departureKeeper: 'departureKeeper',\n destinationKeeper: 'destinationKeeper',\n haulier: 'haulier'\n },\n\n transporterReverse: {\n 'Departure Keeper': 'departureKeeper',\n 'Destination Keeper': 'destinationKeeper',\n Haulier: 'haulier',\n DEP: 'departureKeeper',\n DEST: 'destinationKeeper',\n HAULIER: 'haulier',\n 1: 'departureKeeper',\n 2: 'destinationKeeper',\n 3: 'haulier'\n },\n\n transporterType: {\n departureKeeperType: 'DEP' || 1,\n destinationKeeperType: 'DEST' || 2,\n haulierType: 'HAULIER' || 3\n },\n\n transporterTypeId: {\n departureKeeperType: 1,\n destinationKeeperType: 2,\n haulierType: 3\n },\n\n viewTag: {\n viewAllTags: 'viewAllTags',\n viewInvalidTags: 'viewInvalidTags'\n }\n },\n\n pagination: {\n bottom: 'bottom',\n defaultParams: {\n top: {\n hidePageXofY: true,\n hideShowingXofY: true\n },\n bottom: {\n hidePageXofY: true,\n hideShowingXofY: true,\n hideRecordsPerPage: true\n }\n },\n top: 'top'\n },\n\n paperDocumentStatus: {\n COMPLETE: 'Complete',\n DELETED: 'Deleted',\n HAS_PROCESSING_ERRORS: 'HasProcessingErrors',\n HAS_VALIDATION_ERRORS: 'HasValidationErrors',\n NOT_AVAILABLE: 'NotAvailable'\n },\n\n period: {\n days: 'days',\n hours: 'hours',\n minutes: 'minutes',\n months: 'months',\n seconds: 'seconds',\n weeks: 'weeks',\n years: 'years'\n },\n\n permitMovesMandatory: {\n destinationExhibition: {\n id: 22,\n name: 'Destination_Exhibition'\n }\n },\n\n polling: {\n CONFIRM: 'confirm',\n CONFIRM_ERROR: 'confirm_error',\n ENTRY: 'entry',\n PENDING: 'pending',\n ERROR: 'error'\n },\n\n postType: {\n CONFIRM: 'confirm',\n CREATE: 'create',\n DELETE: 'delete',\n REJECT: 'reject',\n UPDATE: 'update',\n UNDO: 'undo'\n },\n\n recordedBy: {\n departure: 'Departure',\n destination: 'Destination'\n },\n\n regions: {\n England: 'en',\n Scotland: 'sc',\n Wales: 'cy'\n },\n\n sorting: {\n ascending: 'asc',\n descending: 'desc'\n },\n\n species: {\n animalTypes: {\n UNKNOWN: internalSpeciesLabel.UNKNOWN.toLowerCase(),\n SHEEP: internalSpeciesLabel.SHEEP.toLowerCase(),\n GOATS: internalSpeciesLabel.GOATS.toLowerCase(),\n CATTLE: internalSpeciesLabel.CATTLE.toLowerCase(),\n ALPACAS: internalSpeciesLabel.ALPACAS.toLowerCase(),\n PIGS: internalSpeciesLabel.PIGS.toLowerCase(),\n DEER: internalSpeciesLabel.DEER.toLowerCase(),\n HORSES: internalSpeciesLabel.HORSES.toLowerCase()\n },\n\n babyName: {\n UNKNOWN: speciesBabyName.UNKNOWN,\n SHEEP: speciesBabyName.SHEEP,\n GOATS: speciesBabyName.GOATS,\n CATTLE: speciesBabyName.CATTLE,\n ALPACAS: speciesBabyName.ALPACAS,\n PIGS: speciesBabyName.PIGS,\n DEER: speciesBabyName.DEER,\n HORSES: speciesBabyName.HORSES\n },\n\n id: {\n UNKNOWN: speciesId.UNKNOWN,\n SHEEP: speciesId.SHEEP,\n GOATS: speciesId.GOATS,\n CATTLE: speciesId.CATTLE,\n ALPACAS: speciesId.ALPACAS,\n PIGS: speciesId.PIGS,\n DEER: speciesId.DEER,\n HORSES: speciesId.HORSES\n },\n\n internalLabel: {\n UNKNOWN: internalSpeciesLabel.UNKNOWN,\n SHEEP: internalSpeciesLabel.SHEEP,\n GOATS: internalSpeciesLabel.GOATS,\n CATTLE: internalSpeciesLabel.CATTLE,\n ALPACAS: internalSpeciesLabel.ALPACAS,\n PIGS: internalSpeciesLabel.PIGS,\n DEER: internalSpeciesLabel.DEER,\n HORSES: internalSpeciesLabel.HORSES\n },\n\n internalList: [\n { id: speciesId.SHEEP, name: internalSpeciesLabel.SHEEP },\n { id: speciesId.GOATS, name: internalSpeciesLabel.GOATS },\n { id: speciesId.CATTLE, name: internalSpeciesLabel.CATTLE },\n { id: speciesId.PIGS, name: internalSpeciesLabel.PIGS },\n { id: speciesId.DEER, name: internalSpeciesLabel.DEER }\n ],\n\n list: [\n { id: speciesId.UNKNOWN, name: speciesName.UNKNOWN, baby: speciesBabyName.UNKNOWN },\n { id: speciesId.SHEEP, name: speciesName.SHEEP, baby: speciesBabyName.SHEEP },\n { id: speciesId.GOATS, name: speciesName.GOATS, baby: speciesBabyName.GOATS },\n { id: speciesId.CATTLE, name: speciesName.CATTLE, baby: speciesBabyName.CATTLE },\n { id: speciesId.ALPACAS, name: speciesName.ALPACAS, baby: speciesBabyName.ALPACAS },\n { id: speciesId.PIGS, name: speciesName.PIGS, baby: speciesBabyName.PIGS },\n { id: speciesId.DEER, name: speciesName.DEER, baby: speciesBabyName.DEER },\n { id: speciesId.HORSES, name: speciesName.HORSES, baby: speciesBabyName.HORSES }\n ],\n\n name: {\n UNKNOWN: speciesName.UNKNOWN,\n SHEEP: speciesName.SHEEP,\n GOATS: speciesName.GOATS,\n CATTLE: speciesName.CATTLE,\n ALPACAS: speciesName.ALPACAS,\n PIGS: speciesName.PIGS,\n DEER: speciesName.DEER,\n HORSES: speciesName.HORSES\n },\n\n order: [\n speciesId.CATTLE,\n speciesId.SHEEP,\n speciesId.GOATS,\n speciesId.PIGS,\n speciesId.DEER\n ]\n },\n\n states: {\n invalid: 'Invalid',\n reformatted: 'Reformatted',\n valid: 'Valid'\n },\n\n status: {\n cancelled: 'Cancelled',\n claPending: 'claPending',\n completed_error: 'CompletedError',\n completed_warning: 'CompletedWarning',\n error: 'Error',\n errors: 'Errors',\n pending: 'Pending',\n reported: 'reported',\n processErrors: 'HasProcessingErrors',\n processing: 'Processing',\n success: 'Success',\n unconfirmed: 'unconfirmed',\n validation_error: 'ValidationError',\n warnings: 'Warnings'\n },\n\n tabs: {\n animalDetails: 'tab_AnimalDetails',\n deaths: 'tab_Deaths',\n donor: 'tab_Donor',\n enterHolding: 'tab_EnterHolding',\n holdings: 'tab_Holdings',\n manualEntry: 'tab_ManualEntry',\n missingAndFound: 'tab_MissingAndFound',\n movementHistory: 'tab_MovementHistory',\n movementRef: 'tab_MovementRef',\n movementRange: 'tab_MovementRange',\n nonCph: 'tab_NonCph',\n onHolding: 'tab_OnHolding',\n paperId: 'tab_PaperId',\n progeny: 'tab_Progeny',\n recentHoldings: 'tab_RecentHoldings',\n recentLocations: 'tab_RecentLocations',\n tagApplications: 'tab_TagApplications',\n tagHistory: 'tab_TagHistory',\n tagReplacements: 'tab_TagReplacements',\n userActivity: 'tab_UserActivity'\n },\n\n tag: {\n invalid: 'Invalid',\n reformatted: 'Reformatted',\n valid: 'Valid'\n },\n\n transporter: {\n DEP: 'DEP',\n departureKeeper: 'Departure Keeper',\n DEST: 'DEST',\n destinationKeeper: 'Destination Keeper',\n HAULIER: 'HAULIER',\n haulier: 'Haulier'\n },\n\n transporterTypes: {\n departureKeeper: ['Departure Keeper', 'DEP', 1],\n destinationKeeper: ['Destination Keeper', 'DEST', 2],\n haulier: ['Haulier', 'HAULIER', 3]\n },\n\n undoRequestTypes: {\n transfer: 'Transfer',\n correction: 'Correction',\n review: 'Review'\n },\n\n unknown: 'Unknown',\n\n url: {\n defraGuidance: 'https://www.gov.uk/guidance/sheep-and-goat-keepers-how-to-keep-a-holding-register',\n defraSupport: 'https://www.livestockinformation.org.uk/lis-support/'\n }\n};\n\nexport default constants;\n","import Cookie from 'js-cookie';\nimport { get, set } from 'lodash';\n\nconst storageType = {\n local: 'localStorage',\n session: 'sessionStorage',\n cookie: 'cookieStorage'\n};\n\nconst PATHS = {\n cookie: [\n { name: 'animalTypes', path: 'animalTypes' },\n { name: 'bearer', path: 'bearer' },\n { name: 'cookieConsent', path: 'cookie-consent' },\n { name: 'cph', path: 'cph' },\n { name: 'jwt', path: 'JWT' },\n { name: 'msalStatus', path: 'msal.interaction.status' },\n { name: 'species', path: 'species' },\n { name: 'username', path: 'username' },\n { name: 'xOnBehalfOf', path: 'x-on-behalf-of' }\n ],\n\n local: [\n { name: 'dropdown', path: 'dropdown' },\n { name: 'dropdownBirthDamId', path: 'dropdown.birthDamId' },\n { name: 'dropdownBreed1', path: 'dropdown.breed1' },\n { name: 'dropdownBreed2', path: 'dropdown.breed2' },\n { name: 'dropdownBreed3', path: 'dropdown.breed3' },\n { name: 'dropdownBreed4', path: 'dropdown.breed4' },\n { name: 'dropdownBreed5', path: 'dropdown.breed5' },\n { name: 'dropdownHoldingTypes', path: 'dropdown.holdingTypes' },\n { name: 'dropdownSireId', path: 'dropdown.sireId' },\n { name: 'recentlyUsed', path: 'recentlyUsed' },\n { name: 'recentlyUsedDeathHolding', path: 'recentlyUsed.deathHolding', defaultValue: {} },\n { name: 'recentlyUsedDeathHoldings', path: 'recentlyUsed.deathHoldings', defaultValue: {} },\n { name: 'recentlyUsedDepartureHolding', path: 'recentlyUsed.departureHolding', defaultValue: {} },\n { name: 'recentlyUsedDepartureHoldings', path: 'recentlyUsed.departureHoldings', defaultValue: {} },\n { name: 'recentlyUsedDepartureTransportDetail', path: 'recentlyUsed.departureTransportDetail', defaultValue: [] },\n { name: 'recentlyUsedDestinationHolding', path: 'recentlyUsed.destinationHolding', defaultValue: {} },\n { name: 'recentlyUsedDestinationHoldings', path: 'recentlyUsed.destinationHoldings', defaultValue: {} },\n { name: 'recentlyUsedDestinationTransportDetail', path: 'recentlyUsed.destinationTransportDetail', defaultValue: [] },\n { name: 'recentlyUsedHaulierTransportDetail', path: 'recentlyUsed.haulierTransportDetail', defaultValue: [] }\n ],\n\n session: [\n { name: 'activeTabId', path: 'activeTabId' },\n { name: 'activeTabIdOtherHoldingSelection', path: 'activeTabId.otherHoldingSelection' },\n { name: 'animals', path: 'animals', sessionRemove: true },\n { name: 'animalsAdded', path: 'animalsAdded', sessionRemove: true },\n { name: 'birth', path: 'birth', isRemoveAll: true, sessionRemove: true },\n { name: 'birthActiveTabGeneticDam', path: 'birth.activeTabGeneticDam' },\n { name: 'birthActiveTabSire', path: 'birth.activeTabSire' },\n { name: 'birthDamId', path: 'birth.birthDamId' },\n { name: 'birthDate', path: 'birth.birthDate' },\n { name: 'birthBreed', path: 'birth.breed' },\n { name: 'birthEmbryo', path: 'birth.embryo' },\n { name: 'birthGender', path: 'birth.gender' },\n { name: 'birthGeneticDamAI', path: 'birth.geneticDamAI' },\n { name: 'birthGeneticDamId', path: 'birth.geneticDamId' },\n { name: 'birthRegisterAnother', path: 'birth.registerAnother' },\n { name: 'birthSireAI', path: 'birth.sireAI' },\n { name: 'birthSireId', path: 'birth.sireId' },\n { name: 'birthTagNumber', path: 'birth.tagNumber' },\n { name: 'breedsAll', path: 'breedsAll', sessionRemove: true },\n { name: 'breedsOnHolding', path: 'breedsOnHolding', sessionRemove: true },\n { name: 'config', path: 'config', sessionRemove: true },\n { name: 'confirm', path: 'confirm', isRemoveAll: true, sessionRemove: true },\n { name: 'confirmAsyncId', path: 'confirm.confirmAsyncId' },\n { name: 'confirmMovementReference', path: 'confirm.movementReference' },\n { name: 'confirmPaperId', path: 'confirm.paperId' },\n { name: 'confirmPmMove', path: 'confirm.pmMove' },\n { name: 'confirmPolling', path: 'confirm.polling' },\n { name: 'confirmPollingErrors', path: 'confirm.polling.errors' },\n { name: 'confirmPollingStatus', path: 'confirm.polling.status' },\n { name: 'confirmPollingWarnings', path: 'confirm.polling.warnings' },\n { name: 'confirmRequestId', path: 'confirm.requestId' },\n { name: 'confirmRequestType', path: 'confirm.requestType' },\n { name: 'confirmSubmitType', path: 'confirm.submitType' },\n { name: 'confirmStatus', path: 'confirm.status' },\n { name: 'dataChanged', path: 'dataChanged', sessionRemove: true },\n { name: 'death', path: 'death', isRemoveAll: true, sessionRemove: true },\n { name: 'deathAmend', path: 'death.amend' },\n { name: 'deathAnimalsBeingMoved', path: 'death.animalsBeingMoved' },\n { name: 'deathBatchList', path: 'death.batchList' },\n { name: 'deathBirthDate', path: 'death.birthDate' },\n { name: 'deathBirthDamId', path: 'death.birthDamId' },\n { name: 'deathBreed', path: 'death.breed' },\n { name: 'deathDate', path: 'death.deathDate' },\n { name: 'deathDiedBeforeTagging', path: 'death.diedBeforeTagging' },\n { name: 'deathIdentificationType', path: 'death.identificationType' },\n { name: 'deathOtherHolding', path: 'death.otherHolding' },\n { name: 'deathSelectionType', path: 'death.selectionType' },\n { name: 'email', path: 'email' },\n { name: 'features', path: 'features', sessionRemove: true },\n { name: 'holding', path: 'holding', sessionRemove: true },\n { name: 'holdingAddress', path: 'holding.address' },\n { name: 'holdingRegister', path: 'holdingRegister', sessionRemove: true },\n { name: 'holdingRegisterFromDate', path: 'holdingRegister.fromDate' },\n { name: 'holdingRegisterToDate', path: 'holdingRegister.toDate' },\n { name: 'holdings', path: 'holdings', sessionRemove: true },\n { name: 'idle', path: 'idle' },\n { name: 'missingAndFound', path: 'missingAndFound', isRemoveAll: true, sessionRemove: true },\n { name: 'missingAndFoundAnimalsBeingMoved', path: 'missingAndFound.animalsBeingMoved' },\n { name: 'missingAndFoundBatchList', path: 'missingAndFound.batchList' },\n { name: 'missingAndFoundDate', path: 'missingAndFound.date' },\n { name: 'missingAndFoundIdentificationType', path: 'missingAndFound.identificationType' },\n { name: 'missingAndFoundReportType', path: 'missingAndFound.reportType' },\n { name: 'movement', path: 'movement', isRemoveAll: true, sessionRemove: true },\n { name: 'movementAmend', path: 'movement.amend' },\n { name: 'movementAnimalTotal', path: 'movement.animalTotal' },\n { name: 'movementArrivalDate', path: 'movement.arrivalDate' },\n { name: 'movementComment', path: 'movement.comment' },\n { name: 'movementDepartureDate', path: 'movement.departureDate' },\n { name: 'movementExempt', path: 'movement.exempt' },\n { name: 'movementExemptions', path: 'movement.exemptions' },\n { name: 'movementFromHolding', path: 'movement.fromHolding' },\n { name: 'movementFci', path: 'movement.fci' },\n { name: 'movementFciAnimalsSatisfy', path: 'movement.fci.animalsSatisfy' },\n { name: 'movementFciHoldingRestrictions', path: 'movement.fci.holdingRestrictions' },\n { name: 'movementFciNonComplianceReason', path: 'movement.fci.nonComplianceReason' },\n { name: 'movementFciRecordFci', path: 'movement.fci.recordFCI' },\n { name: 'movementFciUnfitAnimals', path: 'movement.fci.unfitAnimals' },\n { name: 'movementFciWithdrawalPeriod', path: 'movement.fci.withdrawalPeriod' },\n { name: 'movementInBusiness', path: 'movement.inBusinessMovement' },\n { name: 'movementMarketType', path: 'movement.marketType' },\n { name: 'movementOtherHolding', path: 'movement.otherHolding' },\n { name: 'movementOtherHoldingAddress', path: 'movement.otherHolding.address' },\n { name: 'movementType', path: 'movement.movementType' },\n { name: 'movementRecordCPH', path: 'movement.recordCPH' },\n { name: 'movementReference', path: 'movement.reference' },\n { name: 'movementSelectedAnimalDetails', path: 'movement.selectedAnimalDetails' },\n { name: 'movementAnimalsBeingMoved', path: 'movement.selectedAnimalDetails.animalsBeingMoved' },\n { name: 'movementBatchList', path: 'movement.selectedAnimalDetails.batchList' },\n { name: 'movementBreed', path: 'movement.selectedAnimalDetails.breed' },\n { name: 'movementCommentAnimalDetails', path: 'movement.selectedAnimalDetails.reasonOrComment' },\n { name: 'movementGender', path: 'movement.selectedAnimalDetails.gender' },\n { name: 'movementRecordAnimalDetails', path: 'movement.selectedAnimalDetails.recordAnimalDetails' },\n { name: 'movementRecordTagAllocationDetails', path: 'movement.selectedAnimalDetails.recordTagAllocationDetails' },\n { name: 'movementTagApplicationDate', path: 'movement.selectedAnimalDetails.tagApplicationDate' },\n { name: 'movementYearOfBirth', path: 'movement.selectedAnimalDetails.yearOfBirth' },\n { name: 'movementToHolding', path: 'movement.toHolding' },\n { name: 'movementTransportInformation', path: 'movement.transportInformation' },\n { name: 'movementAuthorisationNumber', path: 'movement.transportInformation.authorisationNumber' },\n { name: 'movementContactPhone', path: 'movement.transportInformation.contactPhone' },\n { name: 'movementDepartureTime', path: 'movement.transportInformation.departureTime' },\n { name: 'movementDriverFirstName', path: 'movement.transportInformation.driverFirstName' },\n { name: 'movementDriverLastName', path: 'movement.transportInformation.driverLastName' },\n { name: 'movementDurationOfJourney', path: 'movement.transportInformation.durationOfJourney' },\n { name: 'movementOwnerFirstName', path: 'movement.transportInformation.ownerFirstName' },\n { name: 'movementOwnerLastName', path: 'movement.transportInformation.ownerLastName' },\n { name: 'movementTransportedBy', path: 'movement.transportInformation.transportedBy' },\n { name: 'movementTransporter', path: 'movement.transportInformation.transporter' },\n { name: 'movementRecordTransportInformation', path: 'movement.transportInformation.recordTransportInformation' },\n { name: 'movementVehicleRegistrationNumber', path: 'movement.transportInformation.vehicleRegistrationNumber' },\n { name: 'movementNotification', path: 'movementNotification' },\n { name: 'movementNotificationArrivalDate', path: 'movementNotification.arrivalDate' },\n { name: 'movementNotificationAddedAnimals', path: 'movementNotification.addedAnimals' },\n { name: 'movementNotificationAddedBatches', path: 'movementNotification.addedBatches' },\n { name: 'movementNotificationRemovedAnimals', path: 'movementNotification.removedAnimals' },\n { name: 'movementNotificationRemovedBatches', path: 'movementNotification.removedBatches' },\n { name: 'original', path: 'original', isRemoveAll: true, sessionRemove: true },\n { name: 'originalMovement', path: 'original.movement' },\n { name: 'originalMovementExemptions', path: 'original.movement.exemptions' },\n { name: 'permissions', path: 'permissions', sessionRemove: true },\n { name: 'restrictBackFlow', path: 'restrictBackFlow', sessionRemove: true },\n { name: 'restrictSummaryBack', path: 'restrictSummaryBack', sessionRemove: true },\n { name: 'vetCPHData', path: 'vetCPHData', sessionRemove: true },\n { name: 'abattoirCPHData', path: 'abattoirCPHData', sessionRemove: true },\n { name: 'abattoirTagsData', path: 'abattoirTagsData', sessionRemove: true },\n { name: 'vetClaims', path: 'vetClaims', sessionRemove: true },\n { name: 'profileInfo', path: 'profileInfo' },\n { name: 'requestTypes', path: 'requestTypes', sessionRemove: true },\n { name: 'request', path: 'prevRequest', sessionRemove: true },\n { name: 'resource', path: 'resource' },\n { name: 'searchResults', path: 'searchResults', isRemoveAll: true, sessionRemove: true },\n { name: 'searchResultsAnimalActivity', path: 'searchResults.animalActivity' },\n { name: 'searchResultsAnimalsOnHolding', path: 'searchResults.animalsOnHolding' },\n { name: 'searchResultsMovements', path: 'searchResults.movements' },\n { name: 'searchResultsGatheringSearch', path: 'searchResults.gatheringSearch' },\n { name: 'searchResultsHoldingActivity', path: 'searchResults.holdingActivity' },\n { name: 'searchResultsHoldingActivityAdjacentMovements', path: 'searchResults.holdingActivity.adjacentMovements' },\n { name: 'searchResultsHoldingRegister', path: 'searchResults.holdingRegister' },\n { name: 'searchResultsHoldingRegisterAdjacentMovements', path: 'searchResults.holdingRegister.adjacentMovements' },\n { name: 'searchResultsHoldingRegisterAnnualInventory', path: 'searchResults.holdingRegister.annualInventory' },\n { name: 'searchResultsHoldingRegisterDeaths', path: 'searchResults.holdingRegister.deaths' },\n { name: 'searchResultsHoldingRegisterMovementsOff', path: 'searchResults.holdingRegister.movementsOff' },\n { name: 'searchResultsHoldingRegisterMovementsOn', path: 'searchResults.holdingRegister.movementsOn' },\n { name: 'searchResultsHoldingRegisterTagApplications', path: 'searchResults.holdingRegister.taggingApplications' },\n { name: 'searchResultsHoldingRegisterTagReplacements', path: 'searchResults.holdingRegister.taggingReplacements' },\n { name: 'searchResultsHoldingRegisterVaRecords', path: 'searchResults.holdingRegister.vaRecords' },\n { name: 'searchResultsUserActivity', path: 'searchResults.userActivity' },\n { name: 'species', path: 'species', sessionRemove: true },\n { name: 'tableFilters', path: 'tableFilters', isRemoveAll: true, sessionRemove: true },\n { name: 'tableFiltersAnimalActivity', path: 'tableFilters.animalActivity', defaultValue: {} },\n { name: 'tableFiltersAnimalActivityPageIndex', path: 'tableFilters.animalActivity.pageIndex' },\n { name: 'tableFiltersAnimalActivityPageSize', path: 'tableFilters.animalActivity.pageSize' },\n { name: 'tableFiltersAnimalActivitySortBy', path: 'tableFilters.animalActivity.sortBy' },\n { name: 'tableFiltersAnimalActivitySortDirection', path: 'tableFilters.animalActivity.sortDirection' },\n { name: 'tableFiltersAnimalActivityMovementHistory', path: 'tableFilters.animalActivity.movementHistory', defaultValue: {} },\n { name: 'tableFiltersAnimalActivityMovementHistoryPageIndex', path: 'tableFilters.animalActivity.movementHistory.pageIndex' },\n { name: 'tableFiltersAnimalActivityMovementHistoryPageSize', path: 'tableFilters.animalActivity.movementHistory.pageSize' },\n { name: 'tableFiltersAnimalActivityMovementHistorySortBy', path: 'tableFilters.animalActivity.movementHistory.sortBy' },\n { name: 'tableFiltersAnimalActivityMovementHistorySortDirection', path: 'tableFilters.animalActivity.movementHistory.sortDirection' },\n { name: 'tableFiltersAnimalActivityProgeny', path: 'tableFilters.animalActivity.progeny', defaultValue: {} },\n { name: 'tableFiltersAnimalActivityProgenyPageIndex', path: 'tableFilters.animalActivity.progeny.pageIndex' },\n { name: 'tableFiltersAnimalActivityProgenyPageSize', path: 'tableFilters.animalActivity.progeny.pageSize' },\n { name: 'tableFiltersAnimalActivityProgenySortBy', path: 'tableFilters.animalActivity.progeny.sortBy' },\n { name: 'tableFiltersAnimalActivityProgenySortDirection', path: 'tableFilters.animalActivity.progeny.sortDirection' },\n { name: 'tableFiltersAnimalActivityTaggingHistory', path: 'tableFilters.animalActivity.taggingHistory', defaultValue: {} },\n { name: 'tableFiltersAnimalActivityTaggingHistoryPageIndex', path: 'tableFilters.animalActivity.taggingHistory.pageIndex' },\n { name: 'tableFiltersAnimalActivityTaggingHistoryPageSize', path: 'tableFilters.animalActivity.taggingHistory.pageSize' },\n { name: 'tableFiltersAnimalActivityTaggingHistorySortBy', path: 'tableFilters.animalActivity.taggingHistory.sortBy' },\n { name: 'tableFiltersAnimalActivityTaggingHistorySortDirection', path: 'tableFilters.animalActivity.taggingHistory.sortDirection' },\n { name: 'tableFiltersAnimalsOnHolding', path: 'tableFilters.animalsOnHolding', defaultValue: {} },\n { name: 'tableFiltersAnimalsOnHoldingPageIndex', path: 'tableFilters.animalsOnHolding.pageIndex' },\n { name: 'tableFiltersAnimalsOnHoldingPageSize', path: 'tableFilters.animalsOnHolding.pageSize' },\n { name: 'tableFiltersAnimalsOnHoldingSortBy', path: 'tableFilters.animalsOnHolding.sortBy' },\n { name: 'tableFiltersAnimalsOnHoldingSortDirection', path: 'tableFilters.animalsOnHolding.sortDirection' },\n { name: 'tableFiltersAnimalsSelected', path: 'tableFilters.animalsSelected' },\n { name: 'tableFiltersGatheringSearch', path: 'tableFilters.gatheringSearch', defaultValue: {} },\n { name: 'tableFiltersGatheringSearchPageIndex', path: 'tableFilters.gatheringSearch.pageIndex' },\n { name: 'tableFiltersGatheringSearchPageSize', path: 'tableFilters.gatheringSearch.pageSize' },\n { name: 'tableFiltersGatheringSearchSortBy', path: 'tableFilters.gatheringSearch.sortBy' },\n { name: 'tableFiltersGatheringSearchSortDirection', path: 'tableFilters.gatheringSearch.sortDirection' },\n { name: 'tableFiltersHoldingActivity', path: 'tableFilters.filtersHoldingActivity', defaultValue: {} },\n { name: 'tableFiltersHoldingActivityPageIndex', path: 'tableFilters.filtersHoldingActivity.pageIndex' },\n { name: 'tableFiltersHoldingActivityPageSize', path: 'tableFilters.filtersHoldingActivity.pageSize' },\n { name: 'tableFiltersHoldingActivitySortBy', path: 'tableFilters.filtersHoldingActivity.sortBy' },\n { name: 'tableFiltersHoldingActivitySortDirection', path: 'tableFilters.filtersHoldingActivity.sortDirection' },\n { name: 'tableFiltersHoldingSummary', path: 'tableFilters.holdingSummary', defaultValue: {} },\n { name: 'tableFiltersHoldingSummaryPageIndex', path: 'tableFilters.holdingSummary.pageIndex' },\n { name: 'tableFiltersHoldingSummaryPageSize', path: 'tableFilters.holdingSummary.pageSize' },\n { name: 'tableFiltersHoldingSummarySortBy', path: 'tableFilters.holdingSummary.sortBy' },\n { name: 'tableFiltersHoldingSummarySortDirection', path: 'tableFilters.holdingSummary.sortDirection' },\n { name: 'tableFiltersHoldingRegisterAdjacentMovements', path: 'tableFilters.holdingRegister.adjacentMovements', defaultValue: {} },\n { name: 'tableFiltersHoldingRegisterAdjacentMovementsPageIndex', path: 'tableFilters.holdingRegister.adjacentMovements.pageIndex' },\n { name: 'tableFiltersHoldingRegisterAdjacentMovementsPageSize', path: 'tableFilters.holdingRegister.adjacentMovements.pageSize' },\n { name: 'tableFiltersHoldingRegisterAdjacentMovementsSortBy', path: 'tableFilters.holdingRegister.adjacentMovements.sortBy' },\n { name: 'tableFiltersHoldingRegisterAdjacentMovementsSortDirection', path: 'tableFilters.holdingRegister.adjacentMovements.sortDirection' },\n { name: 'tableFiltersHoldingRegisterAnnualInventory', path: 'tableFilters.holdingRegister.annualInventory', defaultValue: {} },\n { name: 'tableFiltersHoldingRegisterAnnualInventoryPageIndex', path: 'tableFilters.holdingRegister.annualInventory.pageIndex' },\n { name: 'tableFiltersHoldingRegisterAnnualInventoryPageSize', path: 'tableFilters.holdingRegister.annualInventory.pageSize' },\n { name: 'tableFiltersHoldingRegisterAnnualInventorySortBy', path: 'tableFilters.holdingRegister.annualInventory.sortBy' },\n { name: 'tableFiltersHoldingRegisterAnnualInventorySortDirection', path: 'tableFilters.holdingRegister.annualInventory.sortDirection' },\n { name: 'tableFiltersHoldingRegisterDeaths', path: 'tableFilters.holdingRegister.deaths', defaultValue: {} },\n { name: 'tableFiltersHoldingRegisterDeathsPageIndex', path: 'tableFilters.holdingRegister.deaths.pageIndex' },\n { name: 'tableFiltersHoldingRegisterDeathsPageSize', path: 'tableFilters.holdingRegister.deaths.pageSize' },\n { name: 'tableFiltersHoldingRegisterDeathsSortBy', path: 'tableFilters.holdingRegister.deaths.sortBy' },\n { name: 'tableFiltersHoldingRegisterDeathsSortDirection', path: 'tableFilters.holdingRegister.deaths.sortDirection' },\n { name: 'tableFiltersHoldingRegisterDownload', path: 'tableFilters.holdingRegister.download', defaultValue: {} },\n { name: 'tableFiltersHoldingRegisterDownloadPageIndex', path: 'tableFilters.holdingRegister.download.pageIndex' },\n { name: 'tableFiltersHoldingRegisterDownloadPageSize', path: 'tableFilters.holdingRegister.download.pageSize' },\n { name: 'tableFiltersHoldingRegisterDownloadSortBy', path: 'tableFilters.holdingRegister.download.sortBy' },\n { name: 'tableFiltersHoldingRegisterDownloadSortDirection', path: 'tableFilters.holdingRegister.download.sortDirection' },\n { name: 'tableFiltersHoldingRegisterMovementsOff', path: 'tableFilters.holdingRegister.movementsOff', defaultValue: {} },\n { name: 'tableFiltersHoldingRegisterMovementsOffPageIndex', path: 'tableFilters.holdingRegister.movementsOff.pageIndex' },\n { name: 'tableFiltersHoldingRegisterMovementsOffPageSize', path: 'tableFilters.holdingRegister.movementsOff.pageSize' },\n { name: 'tableFiltersHoldingRegisterMovementsOffSortBy', path: 'tableFilters.holdingRegister.movementsOff.sortBy' },\n { name: 'tableFiltersHoldingRegisterMovementsOffSortDirection', path: 'tableFilters.holdingRegister.movementsOff.sortDirection' },\n { name: 'tableFiltersHoldingRegisterMovementsOn', path: 'tableFilters.holdingRegister.movementsOn', defaultValue: {} },\n { name: 'tableFiltersHoldingRegisterMovementsOnPageIndex', path: 'tableFilters.holdingRegister.movementsOn.pageIndex' },\n { name: 'tableFiltersHoldingRegisterMovementsOnPageSize', path: 'tableFilters.holdingRegister.movementsOn.pageSize' },\n { name: 'tableFiltersHoldingRegisterMovementsOnSortBy', path: 'tableFilters.holdingRegister.movementsOn.sortBy' },\n { name: 'tableFiltersHoldingRegisterMovementsOnSortDirection', path: 'tableFilters.holdingRegister.movementsOn.sortDirection' },\n { name: 'tableFiltersHoldingRegisterTagApplications', path: 'tableFilters.holdingRegister.taggingApplications', defaultValue: {} },\n { name: 'tableFiltersHoldingRegisterTagApplicationsPageIndex', path: 'tableFilters.holdingRegister.taggingApplications.pageIndex' },\n { name: 'tableFiltersHoldingRegisterTagApplicationsPageSize', path: 'tableFilters.holdingRegister.taggingApplications.pageSize' },\n { name: 'tableFiltersHoldingRegisterTagApplicationsSortBy', path: 'tableFilters.holdingRegister.taggingApplications.sortBy' },\n { name: 'tableFiltersHoldingRegisterTagApplicationsSortDirection', path: 'tableFilters.holdingRegister.taggingApplications.sortDirection' },\n { name: 'tableFiltersHoldingRegisterTagReplacements', path: 'tableFilters.holdingRegister.taggingReplacements', defaultValue: {} },\n { name: 'tableFiltersHoldingRegisterTagReplacementsPageIndex', path: 'tableFilters.holdingRegister.taggingReplacements.pageIndex' },\n { name: 'tableFiltersHoldingRegisterTagReplacementsPageSize', path: 'tableFilters.holdingRegister.taggingReplacements.pageSize' },\n { name: 'tableFiltersHoldingRegisterTagReplacementsSortBy', path: 'tableFilters.holdingRegister.taggingReplacements.sortBy' },\n { name: 'tableFiltersHoldingRegisterTagReplacementsSortDirection', path: 'tableFilters.holdingRegister.taggingReplacements.sortDirection' },\n { name: 'tableFiltersMovements', path: 'tableFilters.movements', defaultValue: {} },\n { name: 'tableFiltersMovementsPageIndex', path: 'tableFilters.movements.pageIndex' },\n { name: 'tableFiltersMovementsPageSize', path: 'tableFilters.movements.pageSize' },\n { name: 'tableFiltersMovementsSortBy', path: 'tableFilters.movements.sortBy' },\n { name: 'tableFiltersMovementsSortDirection', path: 'tableFilters.movements.sortDirection' },\n { name: 'tableFiltersRequestId', path: 'tableFilters.requestId', defaultValue: {} },\n { name: 'tableFiltersRequestIdPageIndex', path: 'tableFilters.requestId.pageIndex' },\n { name: 'tableFiltersRequestIdPageSize', path: 'tableFilters.requestId.pageSize' },\n { name: 'tableFiltersRequestIdSortBy', path: 'tableFilters.requestId.sortBy' },\n { name: 'tableFiltersRequestIdSortDirection', path: 'tableFilters.requestId.sortDirection' },\n { name: 'tableFiltersUser', path: 'tableFilters.user' },\n { name: 'tableFiltersUserActivity', path: 'tableFilters.userActivity', defaultValue: {} },\n { name: 'tableFiltersUserActivityPageIndex', path: 'tableFilters.userActivity.pageIndex' },\n { name: 'tableFiltersUserActivityPageSize', path: 'tableFilters.userActivity.pageSize' },\n { name: 'tableFiltersUserActivitySortBy', path: 'tableFilters.userActivity.sortBy' },\n { name: 'tableFiltersUserActivitySortDirection', path: 'tableFilters.userActivity.sortDirection' },\n { name: 'tagApplication', path: 'tagApplication', isRemoveAll: true, sessionRemove: true },\n { name: 'tagApplicationAnimalsToChange', path: 'tagApplication.animalsToChange' },\n { name: 'tagApplicationDate', path: 'tagApplication.applicationDate' },\n { name: 'tagApplicationBatchNumber', path: 'tagApplication.batchNumber' },\n { name: 'tagApplicationBirthDamId', path: 'tagApplication.birthDamId' },\n { name: 'tagApplicationBirthDate', path: 'tagApplication.birthDate' },\n { name: 'tagApplicationBreed', path: 'tagApplication.breed' },\n { name: 'tagApplicationComment', path: 'tagApplication.referenceOrComment' },\n { name: 'tagApplicationEmbryo', path: 'tagApplication.embryo' },\n { name: 'tagApplicationGender', path: 'tagApplication.gender' },\n { name: 'tagApplicationGeneticDamAI', path: 'tagApplication.geneticDamAI' },\n { name: 'tagApplicationGeneticDamId', path: 'tagApplication.geneticDamId' },\n { name: 'tagApplicationGenotype', path: 'tagApplication.genotype' },\n { name: 'tagApplicationMonthOfBirth', path: 'tagApplication.monthOfBirth' },\n { name: 'tagApplicationSelectionMethod', path: 'tagApplication.selectionMethod' },\n { name: 'tagApplicationSireId', path: 'tagApplication.sireId' },\n { name: 'tagApplicationTagNumber', path: 'tagApplication.tagNumber' },\n { name: 'tagApplicationTagType', path: 'tagApplication.tagType' },\n { name: 'tagApplicationYearOfBirth', path: 'tagApplication.yearOfBirth' },\n { name: 'tagReplacement', path: 'tagReplacement', isRemoveAll: true, sessionRemove: true },\n { name: 'tagReplacementAnimalsToChange', path: 'tagReplacement.animalsToChange' },\n { name: 'tagReplacementComment', path: 'tagReplacement.comment' },\n { name: 'tagReplacementNewBatchNumber', path: 'tagReplacement.newBatchNumber' },\n { name: 'tagReplacementNewIndividualNumber', path: 'tagReplacement.newIndividualNumber' },\n { name: 'tagReplacementNewTagNumber', path: 'tagReplacement.newTagNumber' },\n { name: 'tagReplacementOldBatchNumber', path: 'tagReplacement.oldBatchNumber' },\n { name: 'tagReplacementOldTagNumber', path: 'tagReplacement.oldTagNumber' },\n { name: 'tagReplacementQuantity', path: 'tagReplacement.quantity' },\n { name: 'tagReplacementDate', path: 'tagReplacement.replacementDate' },\n { name: 'tagReplacementSelectionMethod', path: 'tagReplacement.selectionMethod' },\n { name: 'tagReplacementTagType', path: 'tagReplacement.tagType' },\n { name: 'tableFiltersVetAttestation', path: 'tableFilters.vetAttestation', defaultValue: {} },\n { name: 'tableFiltersVetAttestationPageIndex', path: 'tableFilters.vetAttestation.pageIndex' },\n { name: 'tableFiltersVetAttestationPageSize', path: 'tableFilters.vetAttestation.pageSize' },\n { name: 'tableFiltersVetAttestationSortBy', path: 'tableFilters.vetAttestation.sortBy' },\n { name: 'tableFiltersVetAttestationSortDirection', path: 'tableFilters.vetAttestation.sortDirection' },\n { name: 'abattoirTagDetails', path: 'abattoirTagDetails', sessionRemove: true },\n { name: 'abattoirSelectedTagDetails', path: 'abattoirSelectedTagDetails' },\n { name: 'tableFiltersAbattoirTags', path: 'tableFilters.abattoirTags', defaultValue: {} },\n { name: 'tableFiltersAbattoirTagsPageIndex', path: 'tableFilters.abattoirTags.pageIndex' },\n { name: 'tableFiltersAbattoirTagsPageSize', path: 'tableFilters.abattoirTags.pageSize' },\n { name: 'tableFiltersAbattoirTagsSortBy', path: 'tableFilters.abattoirTags.sortBy' },\n { name: 'tableFiltersAbattoirTagsSortDirection', path: 'tableFilters.abattoirTags.sortDirection' }\n ]\n};\n\nconst getDeepValue = (obj, pathArr) => {\n for (let i = 0; i < pathArr.length; i++) {\n obj = obj[pathArr[i]];\n }\n return obj;\n};\n\nconst iterate = (arr, type) => {\n if (!storeService[type].get) {\n storeService[type].get = {};\n }\n if (!storeService[type].set) {\n storeService[type].set = {};\n }\n if (!storeService[type].remove) {\n storeService[type].remove = {};\n }\n\n arr.forEach((arrItem) => {\n if (type === 'cookie') {\n storeService[type].get[arrItem.name] = () => item.get(type, arrItem.path);\n storeService[type].set[arrItem.name] = (value, options) => item.set(type, arrItem, value, options);\n storeService[type].remove[arrItem.name] = () => item.remove(type, arrItem);\n } else {\n storeService[type].get[arrItem.name] = () => item.get(type, arrItem.path, arrItem.defaultValue);\n storeService[type].set[arrItem.name] = (param, index) => item.set(type, arrItem, param, index);\n storeService[type].remove[arrItem.name] = () => item.remove(type, arrItem);\n\n if (arrItem.isRemoveAll) {\n storeService[type].removeAll[arrItem.name] = () => item.remove(type, arrItem);\n }\n }\n });\n};\n\nconst item = {\n get: (type, path, defaultValue) => {\n if (type === 'cookie') {\n return Cookie.get(path);\n }\n\n const pathArray = path.split('.');\n const topLevelKey = pathArray.shift();\n const topLevelValue = window[storageType[type]].getItem(topLevelKey);\n\n if (pathArray.length === 0) {\n try {\n return JSON.parse(topLevelValue);\n } catch (e) {\n return topLevelValue;\n }\n } else {\n try {\n return get(JSON.parse(topLevelValue), pathArray, defaultValue ? defaultValue : null);\n } catch (e) {\n return topLevelValue;\n }\n }\n },\n\n set: (type, arrItem, value, options) => {\n if (type === 'cookie') {\n Cookie.set(arrItem.path, value, options);\n return true;\n }\n\n // For local and session \"options\" is an index\n const pathArray = arrItem.path.split('.');\n const topLevelKey = pathArray.shift();\n let topLevelValue;\n\n if (pathArray.length === 0 && options === undefined) {\n if (typeof value === 'object') {\n topLevelValue = JSON.stringify(value);\n } else {\n topLevelValue = value;\n }\n } else {\n try {\n topLevelValue = JSON.parse(window[storageType[type]].getItem(topLevelKey));\n } catch (e) {\n topLevelValue = window[storageType[type]].getItem(topLevelKey);\n }\n\n if (options !== undefined) {\n pathArray.push(options);\n }\n\n topLevelValue = set({ ...topLevelValue }, pathArray, value);\n topLevelValue = JSON.stringify(topLevelValue);\n }\n\n window[storageType[type]].setItem(topLevelKey, topLevelValue);\n },\n\n remove: (type, arrItem) => {\n if (type === 'cookie') {\n return Cookie.remove(arrItem.path);\n }\n\n const pathArray = arrItem.path.split('.');\n const topLevelKey = [...pathArray].shift();\n\n let topLevelValue;\n\n if (pathArray.length === 1) {\n window[storageType[type]].removeItem(arrItem.path);\n } else {\n let tempPathArray;\n\n try {\n topLevelValue = JSON.parse(window[storageType[type]].getItem(topLevelKey));\n } catch (e) {\n topLevelValue = window[storageType[type]].getItem(topLevelKey);\n }\n\n tempPathArray = [...pathArray];\n tempPathArray.shift();\n const bottomLevelKey = tempPathArray.pop();\n const deepValue = getDeepValue(topLevelValue, tempPathArray);\n if (deepValue && deepValue[bottomLevelKey] !== null && deepValue[bottomLevelKey] !== undefined) {\n delete deepValue[bottomLevelKey];\n }\n\n tempPathArray = [...pathArray];\n tempPathArray.pop();\n const newPath = tempPathArray.join('.');\n\n item.set(type, { ...arrItem, path: newPath }, deepValue);\n }\n }\n};\n\nconst storeService = {\n cookie: {\n removeAll: {\n all: () => {\n Cookie.remove(PATHS.cookie.animalTypes);\n Cookie.remove(PATHS.cookie.bearer);\n Cookie.remove(PATHS.cookie.cph);\n Cookie.remove(PATHS.cookie.jwt);\n Cookie.remove(PATHS.cookie.species);\n Cookie.remove(PATHS.cookie.username);\n Cookie.remove(PATHS.cookie.xOnBehalfOf);\n },\n\n msal: () => {\n Cookie.remove(PATHS.cookie.msalStatus);\n }\n }\n },\n\n local: {\n removeAll: {\n all: () => {\n // remove all localStorages except recentlyUsed\n for (let i = 0; i < window[storageType.local].length; i++) {\n const savedLocalStorage = {\n path: window[storageType.local].key(i)\n };\n const keyHasDots = savedLocalStorage.path.includes('.');\n\n if (savedLocalStorage.path !== 'recentlyUsed' && !keyHasDots) {\n item.remove('local', savedLocalStorage);\n } else if (keyHasDots) {\n window[storageType.local].removeItem(savedLocalStorage);\n }\n }\n }\n }\n },\n\n session: {\n removeAll: {\n all: () => {\n PATHS.session.filter((arrItem) => arrItem.sessionRemove).forEach((arrItem) => {\n item.remove('session', arrItem);\n });\n }\n }\n }\n};\n\nObject.keys(PATHS).forEach((key) => iterate(PATHS[key], key));\n\nexport default storeService;\n","// import appInsightsService from 'services/appInsightsService';\nimport axios from 'axios';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport Hotjar from '@hotjar/browser';\n\nconst bffErrorList = [\n {\n errorCode: 500,\n errorMessages: [\n 'status code 500',\n 'Error: Network Error'\n ],\n id: 'error500',\n labelCancel: 'button.close',\n labelConfirm: null,\n modalMessage: 'uiError.500'\n },\n {\n errorCode: 404,\n errorMessages: [\n 'status code 404'\n ],\n id: 'error404',\n labelCancel: 'button.close',\n labelConfirm: null,\n modalMessage: 'uiError.404'\n },\n {\n errorCode: 403,\n errorMessages: [\n 'status code 403',\n 'Error code: 403 - Forbidden'\n ],\n id: 'error403',\n labelCancel: 'button.close',\n labelConfirm: null,\n modalMessage: 'uiError.403'\n },\n {\n errorCode: 401,\n errorMessages: [\n 'status code 401'\n ],\n id: 'error401',\n labelCancel: 'button.close',\n labelConfirm: 'button.login',\n modalMessage: 'uiError.401',\n redirect: Routing.logout\n },\n {\n errorCode: 400,\n errorMessages: [],\n id: 'error400',\n labelCancel: 'button.close'\n }\n];\n\nconst errors = {\n findServerError: (message, status) => bffErrorList.find((bffErrorItem) => bffErrorItem.errorMessages.includes(message) || bffErrorItem.errorCode === status),\n\n BFF: (error, setModal) => {\n //appInsightsService.trackException(error);\n const data = error?.response?.data;\n const errorMessage = data?.errorMessage ?? data?.message ?? error;\n const errorStatus = error?.response?.status;\n\n const cookiesEnabled = (storeService.cookie.get.cookieConsent() === '2');\n if (cookiesEnabled && Hotjar.isReady()) { // only if the user has consented\n Hotjar.event('User Was Shown Error Popup');\n }\n\n if (!axios.isCancel(error)) {\n if (setModal && typeof setModal === 'function') {\n // const ai = appInsightsService.appInsights;\n // const operationId = ai.context?.telemetryTrace?.traceID;\n const message = errorMessage.toString();\n const matchedError = errors.findServerError(message, errorStatus);\n\n // if (operationId) {\n // message = `${message}

If contacting support, please quote the unique Operation Id:
${operationId}.`;\n // }\n\n if (!matchedError) {\n setModal({\n // modalTitle: error.message ? error.message : error,\n // modalMessage: message,\n modalTitle: 'error.invalidResponse-title',\n modalMessage: [\n 'error.unexpectedError1',\n 'error.unexpectedError2'\n ]\n });\n } else {\n const modalProps = {\n id: matchedError.id,\n labelCancel: matchedError.labelCancel,\n labelConfirm: matchedError.labelConfirm,\n modalConfirm: matchedError.modalConfirm,\n modalClose: matchedError.modalClose,\n modalMessage: matchedError.modalMessage || errorMessage,\n modalTitle: 'uiError.' + matchedError.errorCode + 'title'\n };\n\n if (matchedError.redirect) {\n modalProps.modalConfirm = () => {\n window.location.href = matchedError.redirect;\n return null;\n };\n }\n\n setModal(modalProps);\n }\n } else {\n alert(errorMessage);\n }\n }\n }\n};\n\nexport default errors;\n","import axios from 'axios';\nimport errors from 'services/errors';\nimport codeHelper from 'services/codeHelper';\nimport constants from 'services/constants';\nimport { protectedResources } from 'services/b2cService';\nimport msalInstance from 'msalClient';\nimport storeService from 'services/storeService';\nconst printf = require('util').format;\n\nconst baseURL = codeHelper.BFF_URL || 3001;\nconst bff = axios.create({ baseURL: baseURL });\n\nconst isCancel = (error) => {\n return axios.isCancel(error);\n};\n\nconst consolidateErrorOrWarning = (array) => array.reduce((acc, current) => {\n return acc.find((item) => item.code === current.code && item.message === current.message) ? acc : acc.concat([current]);\n}, []);\n\nconst bffStatus = {\n isCancelled: (status) => status === constants.status.cancelled,\n\n isClaPending: (status) => status === constants.status.claPending,\n\n isCompletedError: (status) => status === constants.status.completed_error,\n\n isCompletedWarning: (status) => status === constants.status.completed_warning,\n\n isError: (status) => status === constants.status.error,\n\n isPending: (status) => status === constants.status.pending,\n\n isProcessError: (status) => status === constants.status.processErrors,\n\n isReported: (status) => status === constants.status.reported,\n\n isSuccess: (status) => status === constants.status.success,\n\n isUnconfirmed: (status) => status === constants.status.unconfirmed,\n\n getStatus: (reqStatus) => bffStatus.isPending(reqStatus) ? constants.status.claPending : reqStatus\n};\n\nconst bffResponse = {\n asyncId: (data) => data && data.asyncId ? String(data.asyncId) : null,\n\n errors: (data) => {\n if (!data) {\n return [];\n }\n if (data.poll?.errors) {\n return consolidateErrorOrWarning(data.poll.errors);\n }\n return data.errors ? consolidateErrorOrWarning(data.errors) : [];\n },\n\n movementRef: (data) => {\n if (!data) {\n return null;\n }\n if (data.movementDocumentRef) {\n return String(data.movementDocumentRef);\n } else if (data.poll?.content?.documentRef) {\n return String(data.poll.content.documentRef);\n }\n return data.poll?.content?.movementDocument?.movementDocumentRef ? String(data.poll.content.movementDocument.movementDocumentRef) : null;\n },\n\n paperId: (data) => data && data.paperId ? String(data.paperId) : null,\n\n requestId: (data) => {\n if (!data) {\n return null;\n }\n if (data.requestId) {\n return String(data.requestId);\n }\n if (bffStatus.isCompletedError(data.poll?.requestStatus)) {\n return String(data.poll.requestId);\n }\n return null;\n },\n\n status: (data) => {\n if (!data) {\n return null;\n }\n const { poll } = data;\n if (poll) {\n if (poll.requestStatus) {\n return bffStatus.getStatus(data.poll.requestStatus);\n } else if (poll.warnings !== undefined && poll.warnings?.length > 0) {\n return constants.status.completed_warning;\n } else if (poll.errors !== undefined && poll.errors?.length > 0) {\n return constants.status.completed_error;\n }\n }\n if (data.requestStatus) {\n return bffStatus.getStatus(data.requestStatus);\n }\n if (data.warnings !== undefined && data.warnings?.length > 0) {\n return constants.status.completed_warning;\n }\n if ((data.errors !== undefined && data.errors?.length > 0) || (data.errorCode === 400)) {\n return constants.status.completed_error;\n }\n if (!bffResponse.movementRef(data) && bffResponse.paperId(data)) {\n return null;\n }\n return bffResponse.paperId(data) ? constants.status.success : null;\n },\n\n warnings: (data) => {\n if (!data) {\n return [];\n }\n if (data.poll?.warnings) {\n return consolidateErrorOrWarning(data.poll.warnings);\n }\n return data.warnings ? consolidateErrorOrWarning(data.warnings) : [];\n }\n};\n\nbff.interceptors.request.use(\n async (config) => {\n // Try to get token here ----------------------------------------\n // From https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/926f1c2ba0598575e23dfd8cdd8b79fa3a3d19ff/lib/msal-react/docs/getting-started.md#acquiring-an-access-token-outside-of-a-react-component\n // Can't use normal approach i.e. useMsal() as we are outside a React component\n const activeAccount = msalInstance.getActiveAccount(); // This will only return a non-null value if you have logic somewhere else that calls the setActiveAccount API\n const accounts = msalInstance.getAllAccounts();\n\n if (activeAccount && accounts.length > 0) {\n const response = await msalInstance.acquireTokenSilent({\n scopes: protectedResources.bff.scopes,\n account: activeAccount || accounts[0]\n });\n\n storeService.cookie.set.xOnBehalfOf(response.idToken);\n config.headers['X-On-Behalf-Of'] = response.idToken;\n config.headers.Authorization = printf('Bearer %s', response.accessToken);\n }\n return config;\n },\n (error) => {\n errors.BFF(error);\n return Promise.reject(error);\n }\n);\n\nbff.interceptors.response.use(\n (response) => {\n return response;\n },\n (error) => {\n return Promise.reject(error);\n }\n);\n\nexport { isCancel, consolidateErrorOrWarning, bffStatus, bffResponse };\nexport default bff;\n","import constants from 'services/constants';\n\nconst config = {\n APPLICATION_VERSION: window.APPLICATION_VERSION ? window.APPLICATION_VERSION : '1.0',\n DEFAULT_TABLE_PAGE_SIZE: window.DEFAULT_TABLE_PAGE_SIZE ? window.DEFAULT_TABLE_PAGE_SIZE : 10,\n LENGTH_DESCRIPTION: window.LENGTH_DESCRIPTION ? window.LENGTH_DESCRIPTION : 30,\n LENGTH_EMAIL: window.LENGTH_EMAIL ? window.LENGTH_EMAIL : 320,\n LENGTH_HOLDING_CPH: window.LENGTH_HOLDING_CPH ? window.LENGTH_HOLDING_CPH : 11,\n LENGTH_HOLDING_EU: window.LENGTH_HOLDING_EU ? window.LENGTH_HOLDING_EU : 11,\n LENGTH_HOLDING_RESTRICTIONS: window.LENGTH_HOLDING_RESTRICTIONS ? window.LENGTH_HOLDING_RESTRICTIONS : 200,\n LENGTH_NON_COMPLIANCE_REASON: window.LENGTH_NON_COMPLIANCE_REASON ? window.LENGTH_NON_COMPLIANCE_REASON : 100,\n LENGTH_REFERENCE_OR_COMMENT: window.LENGTH_REFERENCE_OR_COMMENT ? window.LENGTH_REFERENCE_OR_COMMENT : 100,\n LENGTH_START_NUMBER: window.LENGTH_START_NUMBER ? window.LENGTH_START_NUMBER : 5,\n LENGTH_YEAR: window.LENGTH_YEAR ? window.LENGTH_YEAR : 4,\n MAX_BIRTH_DATE_RANGE: window.MAX_BIRTH_DATE_RANGE ? window.MAX_BIRTH_DATE_RANGE : 27,\n MAX_DAYS_TO_REPORT_DEATH: window.MAX_DAYS_TO_REPORT_DEATH ? window.MAX_DAYS_TO_REPORT_DEATH : 7,\n MAX_DAYS_TO_REPORT_MOVEMENT: window.MAX_DAYS_TO_REPORT_MOVEMENT ? window.MAX_DAYS_TO_REPORT_MOVEMENT : 3,\n MAXLENGTH_CPH_MANUAL: window.MAXLENGTH_CPH_MANUAL ? window.MAXLENGTH_CPH_MANUAL : 400,\n MAXLENGTH_COMMENT: window.MAXLENGTH_COMMENT ? window.MAXLENGTH_COMMENT : 125,\n MAXLENGTH_NON_CPH_LOCATION: window.MAXLENGTH_OWN_USE ? window.MAXLENGTH_OWN_USE : 125,\n MAXLENGTH_OWN_USE: window.MAXLENGTH_OWN_USE ? window.MAXLENGTH_OWN_USE : 125,\n MAX_TOTAL_ANIMAL_RANGE: window.MAX_TOTAL_ANIMAL_RANGE ? window.MAX_TOTAL_ANIMAL_RANGE : 1000,\n MAX_UPLOAD_RECORDS: window.MAX_UPLOAD_RECORDS ? window.MAX_UPLOAD_RECORDS : 1000,\n MAX_UPLOAD_RECORDS_EXTENDED_CSV: window.MAX_UPLOAD_RECORDS_EXTENDED_CSV ? window.MAX_UPLOAD_RECORDS_EXTENDED_CSV : 100,\n POLLS_ENABLED: window.POLLS_ENABLED ? window.POLLS_ENABLED : true,\n ROWS_COMMENT: window.ROWS_COMMENT ? window.ROWS_COMMENT : 1,\n ROWS_CPH_MANUAL: window.ROWS_CPH_MANUAL ? window.ROWS_CPH_MANUAL : 7,\n ROWS_FCI_NON_COMPLIANCE: window.ROWS_FCI_NON_COMPLIANCE ? window.ROWS_FCI_NON_COMPLIANCE : 4,\n ROWS_HOLDING_RESTRICTIONS: window.ROWS_HOLDING_RESTRICTIONS ? window.ROWS_HOLDING_RESTRICTIONS : 4,\n ROWS_TEXTAREA: window.ROWS_TEXTAREA ? window.ROWS_TEXTAREA : 3,\n ROWS_USER_NOTES: window.ROWS_USER_NOTES ? window.ROWS_USER_NOTES : 3,\n SPECIES_DEFAULT: window.SPECIES_DEFAULT ? window.SPECIES_DEFAULT : constants.species.animalTypes.SHEEP,\n TIMEOUT: window.TIMEOUT ? window.TIMEOUT : 30 * 60 * 1000,\n UNKNOWN: 'unknown',\n WIDTH_BATCH_NUMBER: window.WIDTH_BATCH_NUMBER ? window.WIDTH_BATCH_NUMBER : '10',\n WIDTH_CPH: window.WIDTH_CPH ? window.WIDTH_CPH : '25',\n WIDTH_CPH_MANUAL: window.WIDTH_CPH_MANUAL ? window.WIDTH_CPH_MANUAL : '20',\n WIDTH_DAY: window.WIDTH_DAY ? window.WIDTH_DAY : '2',\n WIDTH_DOCUMENT_ID: window.WIDTH_DOCUMENT_ID ? window.WIDTH_DOCUMENT_ID : '15',\n WIDTH_GROUP_ID: window.WIDTH_GROUP_ID ? window.WIDTH_GROUP_ID : '20',\n WIDTH_DAYS: window.WIDTH_DAYS ? window.WIDTH_DAYS : '2',\n WIDTH_HOURS: window.WIDTH_HOURS ? window.WIDTH_HOURS : '2',\n WIDTH_MINUTES: window.WIDTH_MINUTES ? window.WIDTH_MINUTES : '2',\n WIDTH_MONTH: window.WIDTH_MONTH ? window.WIDTH_MONTH : '2',\n WIDTH_MOVEMENT_ID: window.WIDTH_MOVEMENT_ID ? window.WIDTH_MOVEMENT_ID : '8',\n WIDTH_MOVEMENT_REF: window.WIDTH_MOVEMENT_REF ? window.WIDTH_MOVEMENT_REF : '15',\n WIDTH_NUM_RECEIVED: window.WIDTH_NUM_RECEIVED ? window.WIDTH_NUM_RECEIVED : '5',\n WIDTH_PHONE_NUMBER: window.WIDTH_PHONE_NUMBER ? window.WIDTH_PHONE_NUMBER : '13',\n WIDTH_REGISTRATION: window.WIDTH_REGISTRATION ? window.WIDTH_REGISTRATION : '10',\n WIDTH_START_NUMBER: window.WIDTH_START_NUMBER ? window.WIDTH_START_NUMBER : '5',\n WIDTH_TAG_REF: window.WIDTH_TAG_REF ? window.WIDTH_TAG_REF : '100',\n WIDTH_TAGS: window.WIDTH_TAGS ? window.WIDTH_TAGS : '20',\n WIDTH_TOTAL_NUMBER: window.WIDTH_TOTAL_NUMBER ? window.WIDTH_TOTAL_NUMBER : '5',\n WIDTH_TRANSPORTER_AUTH: window.WIDTH_TRANSPORTER_AUTH ? window.WIDTH_TRANSPORTER_AUTH : '10',\n WIDTH_TRANSPORTER_NAME: window.WIDTH_TRANSPORTER_NAME ? window.WIDTH_TRANSPORTER_NAME : '32',\n WIDTH_USER_NOTES: window.WIDTH_USER_NOTES ? window.WIDTH_USER_NOTES : '100',\n REGIONS: window.REGIONS ? window.REGIONS : [constants.regions.England]\n};\n\nexport default config;\n","import config from 'config';\n\nconst userRoleType = {\n ABATTOIR: 'abattoir',\n AICENTRE: 'aiCentre',\n ASSEMBLY: 'assembly',\n BACKOFFICE: 'backoffice',\n COLLECTION: 'collection',\n COMMON: 'common',\n GENERIC: 'generic',\n KEEPER: 'keeper',\n MARKET: 'market',\n OTHER: 'other',\n PORT: 'port',\n QUARANTINE: 'quarantine',\n SHOW: 'show',\n SLAUGHTERMARKET: 'slaughtermarket',\n STOREMARKET: 'storemarket',\n UNKNOWN: config.UNKNOWN,\n VET: 'vet',\n VETUSER: 'vetuser',\n RCVSVET: 'RCVSVet'\n};\n\nexport default userRoleType;\n","import constants from 'services/constants';\n\nexport const regionCodes = {\n england: 'en',\n scotland: 'sc',\n wales: 'cy',\n test: 'test'\n};\n\nconst regionalCPHs = [\n { region: regionCodes.england, cphList: Array(9).fill().map((element, index) => '0' + String(index + 1)) },\n { region: regionCodes.england, cphList: Array(42).fill().map((element, index) => String(index + 10)) },\n { region: regionCodes.scotland, cphList: Array(20).fill().map((element, index) => String(index + 52)) },\n { region: regionCodes.wales, cphList: Array(27).fill().map((element, index) => String(index + 72)) },\n { region: regionCodes.test, cphList: ['00', '99'] }\n];\n\n// find the holdings within specific region or regions\nexport const holdingHelper = {\n findHoldings: (data, regions) => {\n if (!regions) {\n return data;\n }\n\n const regionsList = [...(regions || [])];\n regionsList.push(regionCodes.test);\n\n const allMatchedRegions = [];\n\n for (let i = 0; i < regionsList.length; i++) {\n const matchedRegion = regionalCPHs.filter((regionalCPH) => regionalCPH.region === regionsList[i]);\n\n if (matchedRegion) {\n matchedRegion.forEach((region) => {\n allMatchedRegions.push(...region.cphList);\n });\n }\n }\n\n if (allMatchedRegions.length > 1) {\n return data.filter((holding) => allMatchedRegions.includes(holding.id.split('/')[0]));\n }\n\n return data;\n },\n\n findRegion: (cph) => {\n if (!cph || cph.length < 10) {\n return null;\n }\n let startCphCode;\n try {\n startCphCode = cph.split('/')[0];\n const matchedRegion = regionalCPHs.find((regionalCPH) => regionalCPH.cphList.includes(startCphCode));\n return (matchedRegion) ? matchedRegion.region : null;\n } catch (e) {\n return null;\n }\n },\n\n region: {\n isEngland: (region) => region === regionCodes.england,\n\n isWales: (region) => region === regionCodes.wales,\n\n isScotland: (region) => region === regionCodes.scotland,\n\n isTest: (region) => region === regionCodes.test\n },\n\n cph: {\n isEnglish: (cph) => cph ? holdingHelper.region.isEngland(holdingHelper.findRegion(cph)) : false,\n\n isNonCph: (cph) => cph === constants.cph.none,\n\n isNotEnglish: (cph) => cph ? cph > '51/999/9999' : false,\n\n isWelsh: (cph) => cph ? holdingHelper.region.isWales(holdingHelper.findRegion(cph)) : false,\n\n isScottish: (cph) => cph ? holdingHelper.region.isScotland(holdingHelper.findRegion(cph)) : false,\n\n isTest: (cph) => cph ? holdingHelper.region.isTest(holdingHelper.findRegion(cph)) : false,\n\n isUnknownCph: (cph) => cph === constants.cph.unknown,\n isCommonLand: (cph) => cph ? cph.substring(0, 2) === '00' : false\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/base/button/button.module.scss';\n\nconst Button = ({\n ariaLabel,\n autoFocus,\n buttonType,\n classNames,\n disabled,\n extraContent,\n icon,\n id,\n label,\n onClick,\n tabIndex,\n type\n}) => {\n const { ready, t } = useTranslation();\n\n const componentClassNames = [\n buttonType ? classes[buttonType] : classes.primary,\n ...(classNames ? classNames.map((className) => classes[className]) : [])\n ].join(' ').trim();\n\n return (\n <>\n {ready &&\n onClick(event, id) : null}\n tabIndex={tabIndex}\n type={type ? type : 'button'}\n >\n {buttonType === 'calendar' && icon &&\n {icon}\n }\n\n {buttonType === 'iconLink' && icon &&\n \n }\n\n {buttonType !== 'calendar' && buttonType !== 'iconLink' && icon &&\n <>\n {icon}\n \n }\n\n {label &&\n \n {t(label)}\n {extraContent &&\n {extraContent}\n }\n \n }\n \n }\n \n );\n};\n\nButton.propTypes = {\n ariaLabel: PropTypes.string,\n autoFocus: PropTypes.bool,\n buttonType: PropTypes.oneOf([\n 'add',\n 'addAll',\n 'calendar',\n 'clear',\n 'danger',\n 'downloadReport',\n 'iconLink',\n 'link',\n 'linkDanger',\n 'modalClose',\n 'primary',\n 'remove',\n 'removeAll',\n 'secondary',\n 'subscribe',\n 'tab',\n 'tertiary',\n 'upload'\n ]),\n classNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n disabled: PropTypes.bool,\n extraContent: PropTypes.string,\n icon: PropTypes.any,\n id: PropTypes.string,\n label: PropTypes.string,\n onClick: PropTypes.func,\n tabIndex: PropTypes.string,\n type: PropTypes.string\n};\n\nexport default Button;\n","import React from 'react';\nimport bff, { isCancel } from 'services/bff';\nimport config from 'config';\nimport constants, { fieldWidthType } from 'services/constants';\nimport errors from 'services/errors';\nimport moment from 'moment';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport userRoleType from 'services/userRoleType';\nimport { holdingHelper } from 'services/holdingHelper';\nimport Button from 'components/base/button/button';\nimport { cloneDeep, isArray, isEqual, mergeWith } from 'lodash';\nconst sprintf = require('util').format;\nconst XLSX = require('xlsx');\n\nconst digitsRegex = /^[0-9]*$/;\n\nconst consolidateSeparator = '|';\nconst consolidateMessages = [\n {\n code: '3006',\n from: RegExp('Tag (.*) does not exist\\\\.*'),\n to1: 'Tag number %s was not recognised by the service and has been added.',\n to: 'Tag number %s were not recognised by the service and have been added.'\n },\n {\n code: '8031',\n from: RegExp('The tag number (.*) has been previously applied\\\\.*'),\n to1: 'Tag number %s has been previously applied.',\n to: 'Tag number %s have been previously applied.'\n }\n];\n\nconst consolidateMessagesWith3Fields = [\n {\n code: '31395',\n from: RegExp('Tag number (.*) has been applied to the species (.*) which does not match the request species of (.*).\\\\.*'),\n to1: 'Tag number %s has been applied to the species %s which does not match the request species of %s.',\n to: 'Tag number %s have been applied to the species %s which do not match the request species of %s.'\n }\n];\n\nconst messageMapping = [\n {\n from: RegExp('Tag(.*)does not exist\\\\.*'),\n to: 'Tag number$1was not recognised by the service and has been added'\n },\n {\n from: RegExp('The batch number(.*)has been added to the system by Request =\\\\s\\\\w+'),\n to: 'Batch number$1was not recognised by the service and has been added'\n },\n {\n from: RegExp('The animal(.*) has already been reported as killed. It cannot be used for OnFarmKill reporting\\\\.*'),\n to: 'Animal$1 has been reported as dead'\n },\n {\n code: 25,\n from: RegExp('The TrackingID(.*) has previously been used for the specified software key, user and request type.\\\\s+It is duplicate with Request_ID(.*).'),\n to: 'This submission has failed as it is a duplicate of a previously submitted request, request id$2.'\n }\n];\n\nconst sortByProperty = (property, direction) => (a, b) => {\n const propA = !a[property] ? '' : a[property];\n const propB = !b[property] ? '' : b[property];\n\n if (direction === constants.sorting.ascending) {\n if (propA < propB) {\n return -1;\n }\n\n if (propA > propB) {\n return 1;\n }\n }\n\n if (direction === constants.sorting.descending) {\n if (propA > propB) {\n return -1;\n }\n\n if (propA < propB) {\n return 1;\n }\n }\n\n return 0;\n};\n\nconst boRoles = ['backofficeagent'];\nconst rcvsRoles = ['rcvsvet'];\n\nconst helpers = {\n //pastOneYearFromToday -> Allows to select only past one year date from today, other dates are disable\n pastOneYearFromToday: {\n datePastOneYear: () => {\n const today = new Date();\n today.setFullYear(today.getFullYear() - 1);\n today.setDate(today.getDate() + 1);\n return helpers.date.formatYYYYMMDD(today);\n }\n },\n vetmaxDate: {\n todayDate: () => {\n const today = new Date();\n return helpers.date.formatYYYYMMDD(today);\n }\n },\n vetAttestationNumber: {\n generateVan: (rcvsNo, cph, attestationDate) => {\n const expireDate = new Date(attestationDate);\n expireDate.setFullYear(expireDate.getFullYear() + 1);\n expireDate.setDate(expireDate.getDate() - 1);\n const formattedDate = moment(expireDate).format('MMYY');\n return `${rcvsNo} ${cph} ${formattedDate}`;\n }\n },\n getProcessingCheckStatus: (flagData, flagId1, flagId2 = 0, flagId3 = 0, flagId4 = 0, flagId5 = 0, flagId6 = 0) => {\n const filterFlagData = flagData.filter((item) => ((item.id === flagId1) || (item.id === flagId2) || (item.id === flagId3) || (item.id === flagId4) || (item.id === flagId5) || (item.id === flagId6)) && item.value === true);\n return filterFlagData.length > 0;\n },\n restrictBackFromVetDeclaration: () => {\n if (storeService.session.get.restrictBackFlow()) {\n storeService.cookie.removeAll.all();\n storeService.local.removeAll.all();\n storeService.session.removeAll.all();\n }\n },\n restrictBackFromVetSummary: () => {\n if (storeService.session.get.restrictSummaryBack()) {\n storeService.cookie.removeAll.all();\n storeService.local.removeAll.all();\n storeService.session.removeAll.all();\n }\n },\n address: {\n isInline: (format) => format === constants.address.format.inline,\n\n isKeeper: (format) => format === constants.address.format.keeper,\n\n isLine: (format) => format === constants.address.format.line,\n\n isNoNameFound: (name) => name === constants.address.status.NO_NAME,\n\n isNone: (format) => format === constants.address.format.none,\n\n isOnlyAddress: (format) => format === constants.address.format.onlyAddress,\n\n isShort: (format) => format === constants.address.format.short,\n\n isStatusError: (status) => status && status === constants.address.status.ERROR,\n\n isStatusError1: (status) => status && status === constants.address.status.BFF_ERROR1,\n\n isStatusError2: (status) => status && status === constants.address.status.BFF_ERROR2,\n\n isStatusFetch: (status) => status && status === constants.address.status.FETCH,\n\n isStatusNoAddress: (status) => status && status === constants.address.status.NO_ADDRESS,\n\n isStatusNotFound: (status) => status && status === constants.address.status.NOT_FOUND,\n\n isCphNotLinked: (status) => status && status === constants.address.status.CPH_NOT_LINKED,\n\n isStatusFoundWithoutAddress: (status) => status && status === constants.address.status.FOUND_WITHOUT_ADDRESS,\n\n isUnknown: (address) => !address || address.toLowerCase() === config.UNKNOWN,\n\n nameStatus: (value) => (!value || helpers.address.isStatusError1(value.lastName) || helpers.address.isStatusError2(value.statusText))\n ? constants.address.status.FOUND_WITHOUT_ADDRESS\n : constants.address.status.NOT_FOUND,\n\n withAddress: (value) => !helpers.address.isStatusNoAddress(value) &&\n !helpers.address.isStatusNotFound(value) &&\n !helpers.address.isStatusFoundWithoutAddress(value) && !helpers.address.isCphNotLinked(value),\n\n withErrorAddress: (value) => helpers.address.isStatusNoAddress(value) ||\n helpers.address.isStatusNotFound(value) ||\n helpers.address.isStatusFoundWithoutAddress(value) || helpers.address.isCphNotLinked(value),\n\n format: {\n nameFull: (address) => {\n if (!address) {\n return address;\n }\n let result = [address.title, address.firstName, address.lastName].filter(Boolean).join(' ');\n if (result?.length === 0) {\n result = address.keeper ? [address.keeper.firstName, address.keeper.lastName].filter(Boolean).join(' ') : [];\n if (result?.length === 0) {\n result = constants.address.status.NO_NAME;\n }\n }\n return helpers.address.isStatusError1(result) || helpers.address.isStatusError2(result) ? '' : result;\n },\n\n typeFull: (address) => {\n if (!address || typeof address !== 'object') {\n return constants.address.status.NO_TYPE;\n }\n let result = '';\n if (!helpers.address.isStatusError1(address.lastName) && helpers.address.isStatusError2(address.statusText)) {\n result = address.holdingType && address.holdingType.fullName\n ? address.holdingType.fullName\n : constants.address.status.NO_TYPE;\n }\n return result;\n },\n\n addressFull: (address) => {\n if (!address || typeof address !== 'object') {\n return [constants.address.status.NOT_FOUND];\n }\n const result = [address.propertyName, address.address1, address.address2, address.town, address.county, address.postCode].filter(Boolean);\n if (result?.length === 0) {\n result.push(helpers.address.nameStatus(address) ? constants.address.status.NO_ADDRESS : constants.address.status.NOT_FOUND);\n }\n return result;\n },\n\n addressShort: (address) => {\n if (!address || typeof address !== 'object') {\n return [constants.address.status.NOT_FOUND];\n }\n const result = [address.propertyName, address.address1, address.town, address.postCode].filter(Boolean);\n if (result?.length === 0) {\n result.push(helpers.address.nameStatus(address) ? constants.address.status.NO_ADDRESS : constants.address.status.NOT_FOUND);\n }\n return result;\n },\n\n addressLine: (address) => {\n if (!address || typeof address !== 'object') {\n return [constants.address.status.NOT_FOUND];\n }\n const result = [];\n const formatLine = helpers.address.formatLine(address);\n if (formatLine?.length === 0) {\n result.push(helpers.address.nameStatus(address) ? constants.address.status.NO_ADDRESS : constants.address.status.NOT_FOUND);\n } else {\n result.push(formatLine);\n }\n return result;\n },\n\n addressKeeper: (address) => {\n const result = helpers.address.formatAddress(address);\n if (result?.length === 0) {\n result.push(helpers.address.nameStatus(address));\n }\n return result;\n },\n\n addressWithoutHoldingName: (address) => {\n const result = [];\n const formatLine = helpers.address.formatOnlyAddressInline(address);\n if (formatLine?.length > 0) {\n result.push(formatLine);\n } else {\n result.push('-');\n }\n return result;\n },\n\n addressOnly: (value) => helpers.address.isStatusError(value) ||\n helpers.address.isStatusNoAddress(value) ||\n helpers.address.isStatusFetch(value)\n },\n\n formatAddress: (address) => address\n ? [\n address.propertyName,\n address.address1,\n address.address2,\n address.town,\n address.county,\n address.postCode\n ].filter(Boolean)\n : [],\n\n formatAddressWithoutHoldingName: (address) => address\n ? [\n address.address1,\n address.address2,\n address.town,\n address.county,\n address.postCode\n ].filter(Boolean)\n : [],\n\n formatLine: (address) => helpers.address.formatAddress(address).join(', '),\n\n formatOnlyAddressInline: (address) => helpers.address.formatAddressWithoutHoldingName(address).join(', ')\n },\n\n animal: {\n ageToDisplay: (startDate, endDate) => {\n if (startDate && endDate) {\n return helpers.date.withSameCalendarDay(startDate, endDate) ? helpers.get.age(startDate) : helpers.date.ageInYears(startDate);\n }\n\n return '-';\n },\n\n addDobAndAgeForDisplay: (inputData) => {\n if (!inputData) {\n return [];\n }\n\n return inputData.map((animal) => {\n if (animal.dob && animal.age) {\n const animalWithSameDay = helpers.date.withSameCalendarDay(animal.dob, animal.age);\n const tempNewAge = helpers.date.ageInYears(animal.dob);\n\n animal.dobToDisplay = animalWithSameDay ? helpers.date.format(animal.dob) : moment(animal.dob).year();\n animal.ageToDisplay = animalWithSameDay ? helpers.get.age(animal.dob) : tempNewAge;\n } else if (animal.beginBirthPeriod && animal.endBirthPeriod) {\n const animalWithSameDay = helpers.date.withSameCalendarDay(animal.beginBirthPeriod, animal.endBirthPeriod);\n const tempNewAge = helpers.date.ageInYears(animal.beginBirthPeriod);\n\n animal.dobToDisplay = animalWithSameDay ? helpers.date.format(animal.beginBirthPeriod) : moment(animal.beginBirthPeriod).year();\n animal.ageToDisplay = animalWithSameDay ? helpers.get.age(animal.beginBirthPeriod) : tempNewAge;\n } else {\n animal.dobToDisplay = '-';\n animal.ageToDisplay = '-';\n }\n\n return animal;\n });\n },\n\n dobToDisplay: (startDate, endDate) => {\n if (startDate && endDate) {\n return helpers.date.withSameCalendarDay(startDate, endDate) ? helpers.date.format(startDate) : moment(startDate).year();\n }\n\n return '-';\n },\n\n getYearDob: (animal) => {\n if (!animal?.beginBirthPeriod) {\n return '';\n }\n\n if (animal?.beginBirthPeriod && animal.endBirthPeriod && helpers.date.withSameCalendarDay(animal.beginBirthPeriod, animal.endBirthPeriod)) {\n return helpers.date.format(animal.beginBirthPeriod);\n }\n\n return moment(animal.beginBirthPeriod).year();\n },\n\n removeAllInvalid: (animalsToChange) => animalsToChange.filter((item) => helpers.tag.isValid(item)),\n\n removeAllInvalidExtended: (animalsToChange) => {\n animalsToChange\n .filter((item) => !helpers.tag.isValidExtended(item))\n .forEach((row) => {\n if (row.duplicates?.length > 0) {\n row.duplicates.forEach((duplicateIndex) => {\n const duplicateItem = animalsToChange.find((item) => item.index === duplicateIndex);\n const indexToRemove = duplicateItem.duplicates.indexOf(row.index);\n\n duplicateItem.duplicates.splice(indexToRemove, 1);\n });\n }\n });\n\n return animalsToChange.filter((item) => helpers.tag.isValidExtended(item));\n }\n },\n\n batch: {\n getFormatExamples: (speciesId) => {\n if (helpers.species.isSheepId(speciesId) || helpers.species.isGoatId(speciesId)) {\n return {\n title: 'formatExamples.batch.title-generic',\n description: 'formatExamples.batch.description-generic'\n };\n }\n\n if (helpers.species.isDeerId(speciesId)) {\n return {\n title: 'formatExamples.batch.title-generic',\n description: 'formatExamples.batch.description-deer'\n };\n }\n\n return {\n title: 'formatExamples.batch.title-generic',\n description: ''\n };\n },\n\n isInvalid: (batch) => batch && batch.valid === 'Invalid',\n\n isSevenDigitsFormat: (batch) => {\n if (batch && typeof batch === 'string') {\n\n const batchPrefix = batch.substr(0, 3).toUpperCase();\n const batchNumber = batch.substr(3, 6);\n\n return batch.length === 9 && (batchPrefix === 'UK0' || batchPrefix === 'UK1') && digitsRegex.test(batchNumber);\n }\n\n return false;\n },\n\n isValidBatch: (batch) => {\n if (batch && typeof batch === 'string') {\n\n const batchPrefix = batch.substring(0, 2).toUpperCase();\n const batchNumber = batch.substring(2, batch.length - 2);\n\n return batch.length >= 8 && batchPrefix === 'UK' && digitsRegex.test(batchNumber);\n }\n return false;\n },\n isValid: (batch) => batch && batch.valid !== 'Invalid',\n\n remove: (batchList, batch) => {\n const blankBatchNumber = batch.batchNumber === 'Not supplied';\n\n return batchList.filter((item) => !(\n (item.batchNumber === batch.batchNumber || (item.batchNumber === '' && blankBatchNumber)) &&\n item.animalTotal === batch.animalTotal\n ));\n }\n },\n\n config: {\n isOffMoveMaxDays: (fieldName) => fieldName === constants.claConfig.movement_Date_MaxDaysInFuture_OffMove,\n\n isOnMoveMaxDays: (fieldName) => fieldName === constants.claConfig.movement_Date_MaxDaysInFuture_OnMove,\n\n isMoveBetweenMaxDays: (fieldName) => fieldName === constants.claConfig.movement_Dates_MaxDaysBetween\n },\n\n confirmation: {\n getConfirmIdLabel: (submitType, movementRef, paperId) => {\n switch (submitType) {\n case constants.postType.UNDO:\n return 'label.paperIdWithLink';\n case constants.postType.UPDATE:\n return 'label.movementAmendmentSubmittedWithLink';\n case constants.postType.CREATE:\n default:\n return movementRef ? 'label.movementRefWithLink' : (paperId ? 'label.paperIdWithLink' : null);\n }\n },\n\n getContent: (withErrors, withWarnings, movementRef, validationError) => {\n if (validationError) {\n return null;\n }\n if (withErrors && withWarnings) {\n return 'label.submissionErrorAndWarningContent';\n }\n if (withErrors && !movementRef) {\n return 'label.submissionErrorSuspenseContent';\n }\n if (withErrors) {\n return 'label.submissionErrorContent';\n }\n if (!withErrors && !movementRef) {\n return 'label.submissionPendingCheckLater';\n }\n return withWarnings ? 'label.submissionWarningContent' : null;\n },\n\n getTitle: (withErrors, withWarnings, movement_Ref, validationError) => {\n if (validationError) {\n return 'label.submissionFailed';\n }\n if (withErrors && withWarnings) {\n return 'label.submissionErrorAndWarning';\n }\n if (withErrors) {\n return 'label.submissionError';\n }\n if (!withErrors && !withWarnings && !movement_Ref) {\n return 'label.submissionPending';\n }\n return withWarnings ? 'label.submissionWarning' : 'label.submissionPaperSuccess';\n }\n },\n\n cph: {\n width: {\n isHalf: (value) => value === fieldWidthType.HALF,\n\n isQuarter: (value) => value === fieldWidthType.QUARTER\n },\n\n isNonCph: (cph) => cph === constants.cph.none,\n\n knownCPH: {\n isCph: (cph) => cph === constants.option.knowCPHNumber.cph,\n\n isFsa: (cph) => cph === constants.option.knowCPHNumber.fsa,\n\n isNo: (cph) => cph === constants.option.knowCPHNumber.no,\n\n isYes: (cph) => cph === constants.option.knowCPHNumber.yes\n }\n },\n\n date: {\n addPeriod: (date, value, period) => {\n const dateField = moment.isMoment(date) ? date.clone() : moment(new Date(date));\n return dateField.add(value, period.toLowerCase());\n },\n\n appendTime: (date, hours, minutes, seconds) => {\n const dateToCheck = moment.isMoment(date) ? date.format('YYYY-MM-DD') : moment(date).format('YYYY-MM-DD');\n\n const dateHours = hours ? helpers.text.zerosPadLeft(hours, 2) : moment().format('HH');\n const dateMinutes = minutes ? helpers.text.zerosPadLeft(minutes, 2) : moment().format('mm');\n const dateSeconds = seconds ? helpers.text.zerosPadLeft(seconds, 2) : moment().format('ss');\n\n return moment(dateToCheck + ' ' + dateHours + ':' + dateMinutes + ':' + dateSeconds).format();\n },\n\n ageInYears: (dob) => {\n const startDate = moment(dob);\n const endDate = moment();\n return moment.duration(endDate.diff(startDate)).years();\n },\n\n dateFormat: (date) => helpers.date.formatYYYYMMDD(date ? new Date(date) : new Date()),\n\n subDateFormat: (object) => helpers.date.formatYYYYMMDD(object?.date ? new Date(object.date) : new Date()),\n\n arrivalMax: (date, dateAdvanced = 1) => helpers.date.formatYYYYMMDD(\n helpers.date.momentToJSDate(\n helpers.date.momentMinDate(\n helpers.date.addPeriod(date ? new Date(date) : new Date(), dateAdvanced, constants.period.days),\n helpers.date.todayEndOfDay()\n )\n )\n ),\n\n dateAhead: (departureDaysAhead) => {\n const daysAHead = new Date();\n daysAHead.setDate(daysAHead.getDate() + departureDaysAhead);\n\n return helpers.date.formatYYYYMMDD(daysAHead);\n },\n\n departureMax: (movementType, departureDaysAhead, arriveData = null) => {\n if (helpers.option.movement.isOff(movementType)) {\n return helpers.date.dateAhead(departureDaysAhead);\n }\n return helpers.date.subDateFormat(arriveData);\n },\n\n differenceInDays: (startDate, endDate) => {\n if (moment.isMoment(startDate) && moment.isMoment(endDate)) {\n return startDate.diff(endDate, constants.period.days);\n }\n\n return Math.floor((startDate.getTime() - endDate.getTime()) / (1000 * 60 * 60 * 24));\n },\n\n format: (value) => value ? moment(value).format('DD/MM/YYYY') : '-',\n\n formatForSubmission: (inValue, fullDateTime) => {\n if (inValue) {\n const date = moment.isMoment(inValue) ? inValue : moment(inValue);\n return fullDateTime ? date.format() : date.format('YYYY-MM-DD');\n }\n\n return '';\n },\n\n formatJSDate: (date, format) => moment(date).format(format),\n\n formatJSDatePreformatted: (date, format) => {\n return moment(date, format).format(format);\n },\n\n formatTime: (value) => value ? moment(value).format('DD/MM/YYYY HH:mm') : '-',\n\n formatDDMMYYYYtoYYYMMDD: (value) => moment(value, 'DD/MM/YYYY').format('YYYY-MM-DD'),\n\n formatYYYYMMDD: (value) => value ? moment(value).format('YYYY-MM-DD') : '-',\n\n formatDDMMYYYY: (value) => value ? moment(value).format('DD-MM-YYYY') : '-',\n\n formatYYYYMMDDPreformatted: (value, format) => value ? moment(value, format).format('YYYY-MM-DD') : '-',\n\n is: {\n afterDate: (date1, date2) => {\n const dateToCheck1 = moment.isMoment(date1) ? date1 : moment(date1).hours(0).minutes(0).seconds(0).milliseconds(0);\n const dateToCheck2 = moment.isMoment(date2) ? date2 : moment(date2).hours(23).minutes(59).seconds(59).milliseconds(999);\n\n return dateToCheck1.isAfter(dateToCheck2);\n },\n\n beforeDate: (date1, date2) => {\n const dateToCheck1 = moment.isMoment(date1) ? date1 : moment(date1); //.hours(23).minutes(59).seconds(59).milliseconds(999);\n const dateToCheck2 = moment.isMoment(date2) ? date2 : moment(date2); // .hours(0).minutes(0).seconds(0).milliseconds(0);\n\n return dateToCheck1.isBefore(dateToCheck2, 'ms');\n },\n\n betweenMoments: (from, to, test) => {\n if (typeof from !== 'object' || !from || typeof to !== 'object' || !to || typeof test !== 'object' || !test) {\n return false;\n }\n\n return (test.isBefore(to) && test.isAfter(from)) || test.isSame(from) || test.isSame(to);\n },\n\n inRange: (inValue, filterValue) => {\n const test = moment(inValue);\n let from;\n let to;\n\n switch (filterValue) {\n case 'a':\n to = moment();\n from = moment().subtract(12, constants.period.months).add(1, constants.period.days);\n return helpers.date.is.betweenMoments(from, to, test);\n case 'b':\n to = moment().subtract(12, constants.period.months);\n from = moment().subtract(30, constants.period.months).add(1, constants.period.days);\n return helpers.date.is.betweenMoments(from, to, test);\n case 'c':\n to = moment().subtract(30, constants.period.months);\n from = moment().subtract(60, constants.period.months).add(1, constants.period.days);\n return helpers.date.is.betweenMoments(from, to, test);\n case 'd':\n to = moment().subtract(5, constants.period.years);\n from = moment().subtract(6, constants.period.years).add(1, constants.period.days);\n return helpers.date.is.betweenMoments(from, to, test);\n case 'e':\n to = moment().subtract(6, constants.period.years);\n from = moment().subtract(8, constants.period.years).add(1, constants.period.days);\n return helpers.date.is.betweenMoments(from, to, test);\n case 'f':\n to = moment().subtract(8, constants.period.years);\n from = moment().subtract(10, constants.period.years).add(1, constants.period.days);\n return helpers.date.is.betweenMoments(from, to, test);\n case 'g':\n to = moment().subtract(1, constants.period.years);\n from = moment().subtract(2, constants.period.years).add(1, constants.period.days);\n return helpers.date.is.betweenMoments(from, to, test);\n case 'h':\n to = moment().subtract(2, constants.period.years);\n from = moment().subtract(5, constants.period.years).add(1, constants.period.days);\n return helpers.date.is.betweenMoments(from, to, test);\n case 'i':\n to = moment().subtract(5, constants.period.years);\n from = moment().subtract(10, constants.period.years).add(1, constants.period.days);\n return helpers.date.is.betweenMoments(from, to, test);\n case 'j':\n return test.isBefore(moment().subtract(10, constants.period.years));\n case 'x':\n return !inValue || inValue === '-';\n default:\n return true;\n }\n },\n\n inTheFuture: (date, errorContext) => {\n const dateToCheck = moment.isMoment(date) ? date : moment(date);\n\n if (dateToCheck.isAfter(moment())) {\n if (errorContext && constants.dateRangeErrors[errorContext]) {\n return constants.dateRangeErrors[errorContext];\n }\n\n return constants.dateRangeErrors.default;\n }\n\n return null;\n },\n\n overSevenDaysAgo: (date, errorLabel) => helpers.date.is.xDaysInThePast(date, config.MAX_DAYS_TO_REPORT_DEATH) ? (errorLabel ? errorLabel : 'error.dateGT7day') : null,\n\n overThreeDaysAgo: (date) => helpers.date.is.xDaysInThePast(date, config.MAX_DAYS_TO_REPORT_MOVEMENT) ? 'error.dateGT3day' : null,\n\n overAYearAgo: (date) => {\n const dateToCheck = moment.isMoment(date) ? date : moment(date);\n return dateToCheck.isBefore(moment().subtract(1, constants.period.years)) ? 'error.dateGT1year' : '';\n },\n\n same: (date1, date2) => helpers.date.format(date1) === helpers.date.format(date2),\n\n sameDayOrNextDay: (date1, date2) => {\n const sameDay = helpers.date.is.same(date1, date2);\n const nextDay = helpers.date.is.same(moment(date2).add(1, 'days'), date1);\n return sameDay || nextDay;\n },\n\n today: (date) => moment().diff(date, constants.period.days) === 0,\n\n tomorrow: (date) => moment(moment().format('YYYY-MM-DD') + ' 00:00:00.0000').diff(date, constants.period.days) === -1,\n\n invalid: (date, format) => {\n if (date !== '') {\n const yearDigitsNumber = format === 'DD/MM/YYYY' ? '4' : '2';\n\n if (format) {\n const dateFormatPattern = new RegExp(`^(0?[1-9]|[1-2][0-9]|3[01])[/](0?[1-9]|1[0-2])[/](\\\\d{${yearDigitsNumber}})$`);\n if (!date.match(dateFormatPattern)) {\n return 'error.dateInvalid';\n }\n }\n\n const dateToCheck = moment.isMoment(date) ? date : moment(date, format);\n return dateToCheck.format() === 'Invalid Date' || !dateToCheck.isValid() ? 'error.dateInvalid' : '';\n }\n\n return '';\n },\n\n validCsvDate: (date) => {\n if (date !== '') {\n let isValid = false;\n\n if (\n (\n !isNaN(date) &&\n (\n (date.length === 4 && parseInt(date) >= 2000) ||\n (date.length === 2 && parseInt(date) >= 20)\n )\n ) ||\n moment(date, 'DD/MM/YYYY').isValid() ||\n moment(date, 'DD/MM/YY').isValid() ||\n moment(date, 'YYYY-MM-DD').isValid() ||\n moment(date, 'YY-MM-DD').isValid()\n ) {\n isValid = true;\n }\n\n return isValid;\n }\n\n return false;\n },\n\n xPeriodAfterDate: (date1, date2, value, period) => {\n const dateToCheck1 = moment.isMoment(date1) ? date1 : moment(date1);\n const dateToCheck2 = moment.isMoment(date2) ? date2 : moment(date2);\n\n const limit = dateToCheck2.add(value, period.toLowerCase());\n return dateToCheck1.isAfter(limit);\n },\n\n xPeriodBeforeDate: (date1, date2, value, period) => {\n const dateToCheck1 = moment.isMoment(date1) ? date1 : moment(date1);\n const dateToCheck2 = moment.isMoment(date2) ? date2 : moment(date2);\n\n const limit = dateToCheck2.subtract(value, period.toLowerCase());\n return dateToCheck1.isBefore(limit);\n },\n\n xDaysInTheFuture: (date, days) => {\n const dateToCheck = moment.isMoment(date) ? date : moment(date);\n\n const futureLimit = moment().add(days, constants.period.days);\n return dateToCheck.isAfter(moment()) && dateToCheck.isBefore(futureLimit) ? 'error.dateInsideRange' : null;\n },\n\n xDaysInTheFutureOverLimit: (date, days) => {\n const dateToCheck = moment.isMoment(date) ? date : moment(date);\n\n const futureLimit = moment().add(days, constants.period.days);\n return dateToCheck.isSame(futureLimit) || dateToCheck.isAfter(futureLimit) ? 'error.dateOutsideRange' : null;\n },\n\n xDaysInThePast: (date, days) => {\n const dateToCheck = moment.isMoment(date) ? date : moment(date);\n\n return moment().diff(dateToCheck, constants.period.days) > days;\n }\n },\n\n isoToMomentDate: (isoDate) => moment(moment(isoDate).format('YYYY-MM-DD') + ' 00:00:00.0000'),\n\n momentMinDate: (date1, date2) => moment.min(date1, date2),\n\n momentToJSDate: (date) => date ? date.toDate() : null,\n\n momentToISODate: (date) => {\n if (date) {\n if (moment.isMoment(date)) {\n return date.toISOString(true);\n }\n\n return moment(date).toISOString(true);\n }\n return null;\n },\n\n now: () => moment().toISOString(true),\n\n splitStringDate: (stringDate) => (stringDate ? {\n day: moment(stringDate, 'YYYY-MM-DD').date(),\n month: moment(stringDate, 'YYYY-MM-DD').month() + 1,\n year: moment(stringDate, 'YYYY-MM-DD').year()\n } : ''),\n\n concatToStringDate: (year, month, day) => (year && month && day ? year + '-' + (month?.toString().length === 1 ? '0' + month : month) + '-' + (day?.toString().length === 1 ? '0' + day : day) : ''),\n\n stringDateToMoment: (date) => date ? moment(date).hours(0).minutes(0).seconds(1) : null,\n\n subtractPeriod: (date, value, period) => {\n if (moment.isMoment(date)) {\n return date.clone().subtract(value, period);\n }\n\n return moment(new Date(date)).subtract(value, period.toLowerCase());\n },\n\n timestamp: () => (new Date()).toISOString().replace('T', '-').replace(/[Z|.]/g, ''),\n\n toDate: (year, month, day) => moment([year?.length === 2 ? '20' + year : year, month - 1, day]),\n\n toDateTime: (year, month, day, hours, minutes) => {\n if (hours && minutes) {\n return moment([year?.length === 2 ? '20' + year : year, month - 1, day, hours, minutes, 0, 0]);\n }\n\n return moment([year?.length === 2 ? '20' + year : year, month - 1, day, moment().hours(), moment().minutes(), 0, 0]);\n },\n\n todayStartOfDay: () => moment().startOf('day'),\n\n todayEndOfDay: () => moment().endOf('day'),\n\n startOfDay: (date) => {\n let dateToReturn;\n\n if (date === 'today') {\n dateToReturn = moment();\n } else if (moment.isMoment(date)) {\n dateToReturn = date;\n } else {\n dateToReturn = moment(new Date(date));\n }\n\n return dateToReturn.startOf('day').toISOString(true);\n },\n\n endOfDay: (date) => {\n let dateToReturn;\n\n if (date === 'today') {\n dateToReturn = moment();\n } else if (moment.isMoment(date)) {\n dateToReturn = date;\n } else {\n dateToReturn = moment(new Date(date));\n }\n\n return dateToReturn.endOf('day').toISOString(true);\n },\n\n bff: (year, mth, day) => {\n const temp = moment().year(year?.length === 2 ? '20' + year : year).month(mth);\n if (day === 'x') {\n temp.date(1).add(1, constants.period.months).subtract(1, constants.period.days);\n } else {\n temp.date(day);\n }\n return temp.format('YYYY-MM-DD');\n },\n\n withSameCalendarDay: (date1, date2) => {\n return moment(date1).date() === moment(date2).date() && moment(date1).month() === moment(date2).month();\n }\n },\n\n dateType: {\n isBirth: (dateType) => dateType === constants.dateTypes.birth,\n\n isDeath: (dateType) => dateType === constants.dateTypes.death,\n\n isFound: (dateType) => dateType === constants.dateTypes.found,\n\n isMovement: (dateType) => dateType === constants.dateTypes.movement,\n\n isTagApplication: (dateType) => dateType === constants.dateTypes.tagApplication\n },\n\n flags: {\n isDeparture: (flag) => flag === constants.flags.departure,\n\n isDestination: (flag) => flag === constants.flags.destination,\n\n isFrom: (flag) => flag === constants.flags.from,\n\n isSingle: (flag) => flag === constants.flags.single,\n\n isTo: (flag) => flag === constants.flags.to\n },\n\n error: {\n addToAnimalObjects: (animalList, errorIndexes, error, objectChildName) => {\n return animalList.map((item, i) => {\n if (objectChildName === 'status') {\n if (parseInt(errorIndexes[1]) === i) {\n item.status = error.value;\n }\n }\n if (objectChildName === 'description') {\n if (parseInt(errorIndexes[1]) === i) {\n item.description = error.value;\n }\n }\n return item;\n });\n },\n\n amendResponseError: (errors) => {\n const isMatchedCheck = (error) => error?.code === '4076';\n if (errors?.length >= 2 && errors.find((error) => isMatchedCheck(error))) {\n const otherCode = errors.find((error) => !isMatchedCheck(error));\n if (otherCode) {\n return otherCode.code;\n }\n }\n return '';\n },\n\n isUndoMovementErrorCode: (errors) => {\n const isUndoMoveCheck = (error) => error?.code === '4076';\n if (errors?.length >= 2 && errors.find((error) => isUndoMoveCheck(error))) {\n const errorCodeUndoMove = errors.find((error) => isUndoMoveCheck(error));\n if (errorCodeUndoMove) {\n return errorCodeUndoMove.code;\n }\n }\n return '';\n },\n\n cfgDepartureDateError: (error, departureDaysAhead) => error !== 'error.dateOutsideRange' ? error : 'error.dateOutsideCfgRange' + departureDaysAhead.toString(),\n\n consolidate: (messages) => {\n if (!messages || !Array.isArray(messages) || messages?.length === 0) {\n return messages;\n }\n\n let startMessage = messages;\n // Check the messages with only tag/batch number\n consolidateMessages.forEach((consolidateMessage) => {\n const isMatchedCheck = (item) => item?.code === consolidateMessage.code;\n const matchedList = startMessage.filter((item) => isMatchedCheck(item));\n const noMatchedList = startMessage.filter((item) => !isMatchedCheck(item));\n\n if (matchedList && matchedList.length > 0) {\n const tagList = matchedList.map((item) => {\n const matched = (consolidateMessage.from).exec(item?.message);\n return matched ? matched[1] : null;\n });\n const tagRange = helpers.holdingRegister.consolidateTagAndBatchNumbers(tagList);\n noMatchedList.push({\n ...matchedList[0],\n message: sprintf(matchedList.length > 1 ? consolidateMessage.to : consolidateMessage.to1, tagRange)\n });\n }\n startMessage = noMatchedList;\n });\n\n // Check the messages with tag/batch number and 2 other fields\n consolidateMessagesWith3Fields.forEach((consolidateMessage) => {\n const isMatchedCheck = (item) => item?.code === consolidateMessage.code;\n const matchedList = startMessage.filter((item) => isMatchedCheck(item));\n const noMatchedList = startMessage.filter((item) => !isMatchedCheck(item));\n\n if (matchedList && matchedList.length > 0) {\n const threeFieldsList = [];\n const tagList = matchedList.map((item) => {\n const matched = (consolidateMessage.from).exec(item?.message);\n const species = sprintf('%s%s%s', matched[2], consolidateSeparator, matched[3].replace('.', ''));\n threeFieldsList.push(species);\n return matched ? matched[1] : null;\n });\n const uniqueSpecies = [...new Set(threeFieldsList)];\n uniqueSpecies.forEach((species) => {\n const speciesTagList = [];\n for (let i = 0; i < tagList.length; i++) {\n if (species === threeFieldsList[i]) {\n speciesTagList.push(tagList[i]);\n }\n }\n const tagRange = helpers.holdingRegister.consolidateTagAndBatchNumbers(speciesTagList);\n const speciesArray = species.split(consolidateSeparator);\n\n noMatchedList.push({\n ...matchedList[0],\n message: sprintf(speciesTagList.length > 1 ? consolidateMessage.to : consolidateMessage.to1, tagRange, speciesArray[0], speciesArray[1])\n });\n });\n }\n startMessage = noMatchedList;\n });\n return startMessage;\n },\n\n mapping: (message) => {\n if (!message) {\n return message;\n }\n const matched = messageMapping.filter((check) => message.match(check.from)?.length > 0);\n return (matched?.length === 0) ? message : message.replace(matched[0].from, matched[0].to);\n },\n\n mapCode: (message) => {\n if (!message) {\n return message;\n }\n const matched = messageMapping.filter((check) => message.match(check.from)?.length > 0);\n return (matched?.length === 0) ? 0 : matched[0].code;\n }\n },\n\n extract: {\n animalsSatisfy: (fciDetail) => (fciDetail.isAllAnimalsFciCompliant || fciDetail.isAllAnimalsFCICompliant)\n ? constants.option.animalsSatisfy.doSatisfy\n : constants.option.animalsSatisfy.doNotSatisfy,\n\n batches: (data) => {\n if (data?.reviewBatches?.length > 0) {\n return data.reviewBatches;\n }\n if (data?.batches?.length > 0) {\n return data.batches;\n }\n if (data?.movementGroups?.length > 0) {\n const newMovementArray = [];\n data.movementGroups.forEach((item) => {\n item.batches.forEach((batchNumber) => {\n newMovementArray.push(batchNumber);\n });\n });\n if (newMovementArray.length > 0) {\n return newMovementArray;\n }\n }\n return [];\n },\n\n devices: (data) => {\n if (data?.reviewDevices?.length > 0) {\n return data.reviewDevices.map((item) => ({ tagNumber: item.tagNumber }));\n }\n if (data?.devices?.length > 0) {\n return data.devices.map((item) => ({ tagNumber: item.tagNumber }));\n }\n if (data?.movementGroups?.length > 0) {\n const newMovementArray = [];\n data.movementGroups.forEach((item) => {\n item.devices.forEach((deviceTag) => {\n newMovementArray.push(deviceTag);\n });\n });\n if (newMovementArray.length > 0) {\n return newMovementArray.map((itemMap) => ({ tagNumber: itemMap.tagNumber }));\n }\n }\n return [];\n },\n\n withdrawalPeriod: (fciDetail, withdrawalPeriods) => {\n if (!fciDetail) {\n return null;\n }\n if (fciDetail.metFCIWithdrawalPeriodCode) {\n return withdrawalPeriods && withdrawalPeriods.find((item) => fciDetail.metFCIWithdrawalPeriodCode === item.code);\n } else if (fciDetail.withdrawalPeriodMetId) {\n return withdrawalPeriods && withdrawalPeriods.find((item) => fciDetail.withdrawalPeriodMetId === item.id);\n }\n return fciDetail.withdrawalPeriodObservedText\n ? withdrawalPeriods && withdrawalPeriods.find((item) => fciDetail.withdrawalPeriodObservedText === item.name)\n : null;\n },\n\n metFCIWithdrawalPeriod: (fciPeriods, id) => {\n const found = fciPeriods?.length > 0 && id\n ? fciPeriods.find((item) => item.id === id)\n : false;\n return found ? found : id;\n },\n\n processingFlags: (data) => {\n if (data?.processingFlags?.length > 0) {\n return data.processingFlags;\n }\n if (data?.movementDetailsProcessingFlags?.length > 0) {\n return data.movementDetailsProcessingFlags;\n }\n if (data?.approvedMovementProcessingFlags?.length > 0) {\n return data.approvedMovementProcessingFlags;\n }\n return [];\n },\n\n processingLabel: (processingItems, id) => {\n const found = processingItems?.length > 0 && id\n ? processingItems.find((item) => item.id === id)\n : false;\n return found ? found.label : id;\n },\n\n processingName: (processingItems, id) => {\n const found = processingItems?.length > 0 && id\n ? processingItems.find((item) => item.id === id)\n : false;\n return found ? found.name : id;\n },\n\n processingStatus: (processingItems, id) => {\n const found = processingItems?.length > 0 && id\n ? processingItems.find((item) => (item.processingFlagId === id) || (item.approvedMovementId === id))\n : false;\n return Boolean(found);\n },\n\n requestBatches: (locationData, data) => {\n if (locationData?.batches?.length > 0) {\n return locationData.batches;\n }\n if (locationData?.reviewBatches?.length > 0) {\n return locationData.reviewBatches;\n }\n return helpers.extract.batches(data);\n },\n\n requestDevices: (locationData, data) => {\n if (locationData?.devices?.length > 0) {\n return locationData.devices;\n }\n if (locationData?.reviewDevices?.length > 0) {\n return locationData.reviewDevices;\n }\n return helpers.extract.devices(data);\n }\n },\n\n gender: {\n idToName: (genderId) => genderId ? constants.gender[genderId] : constants.unknown.toLowerCase()\n },\n\n get: {\n age: (dob, dod) => {\n if (!dob) {\n return '-';\n }\n\n const dateStart = moment(dob);\n const dateEnd = dod ? moment(dod) : moment();\n\n const dateOut = [];\n const datesInSameYear = moment.duration(dateEnd.diff(dateStart)).years();\n const intervals = datesInSameYear === 0\n ? [\n constants.period.months,\n constants.period.weeks,\n constants.period.days\n ]\n : [\n constants.period.years,\n constants.period.months,\n constants.period.weeks\n ];\n\n intervals.forEach((interval) => {\n const dateUnitDifference = dateEnd.diff(dateStart, interval);\n dateEnd.subtract(dateUnitDifference, interval);\n dateOut.push(dateUnitDifference + interval[0]);\n });\n\n return dateOut.join(' ');\n },\n\n animalsOnHolding: (cancelToken, params, setModal, setLoadPending, setData, setDataLoaded, animalsToFilterOut, isModal, setTotal) => {\n setLoadPending(true);\n\n bff\n .get('/animalsOnHolding', {\n cancelToken,\n params: params\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setLoadPending)) {\n let data;\n\n if (animalsToFilterOut?.length > 0) {\n data = res.data.data.filter((item) => !animalsToFilterOut.find((tag) => item.tagNumber === tag.tagNumber));\n } else {\n data = res.data.data;\n }\n\n if (isModal) {\n data = data.map((animal) => ({\n ...animal,\n added: false\n }));\n }\n\n if (typeof setTotal === 'function') {\n setTotal(res.data?.data?.length);\n }\n\n const finalData = helpers.animal.addDobAndAgeForDisplay(data);\n storeService.session.set.searchResultsAnimalsOnHolding(finalData);\n setData(finalData);\n\n if (typeof setDataLoaded === 'function') {\n setDataLoaded(true);\n }\n\n setLoadPending(false);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setLoadPending(false);\n errors.BFF(error, setModal);\n }\n });\n },\n\n approvedMovement: (cancelToken, inData) => {\n return bff\n .get('/approvedMovement', {\n cancelToken,\n params: {\n id: inData.id,\n requestId: inData.requestId,\n onMovement: helpers.option.recordBy.isByDestination(inData.recordedBy)\n }\n });\n },\n\n cancelledMovementsListFiltered: (cancelToken, departureHolding, destinationHolding, startTransferDate, endTransferDate, speciesId, filter) => {\n return bff\n .get('/cancelledMovementsList', {\n cancelToken,\n params: {\n departureHolding,\n destinationHolding,\n startTransferDate,\n endTransferDate,\n speciesId,\n filter\n }\n });\n },\n\n comments: (cph, requestId) => {\n return bff\n .get('/holdingRegisterMovementDetails', {\n params: {\n cph,\n requestId\n }\n });\n },\n\n holdingDetails: ({ cancelToken, cph, queryKeeper }) => helpers.get.searchHoldingDetails(cancelToken, { cph, queryKeeper }),\n\n holdingAddress: (currentCPH) => {\n return helpers.get.searchHoldingDetails(null, {\n cph: currentCPH,\n queryKeeper: true\n })\n .then(({ data }) => {\n if (data) {\n return data.data[0];\n }\n\n return {\n address: {\n address1: constants.address.empty\n }\n };\n });\n },\n\n holdingTypes: (setModal, source, setLoadPending, setHoldingTypes) => {\n setLoadPending(true);\n\n bff\n .get('/holdingTypes', {\n cancelToken: source.token,\n params: { nameOnly: true }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setLoadPending)) {\n if (typeof setHoldingTypes === 'function') {\n const typeList = [{ name: 'Select Holding Type', value: '' }].concat(res.data);\n setHoldingTypes(typeList);\n }\n\n setLoadPending(false);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setLoadPending(false);\n errors.BFF(error, setModal);\n }\n });\n },\n\n holdingRegistersMovementDetails: (cancelToken, cph, requestId) => {\n return bff\n .get('/holdingRegisterMovementDetails', {\n cancelToken,\n params: {\n cph,\n requestId\n }\n });\n },\n\n holdingsInBusiness: (cancelToken, cph) => {\n return bff\n .get('/holdingsInBusiness', {\n cancelToken,\n params: {\n cph\n }\n });\n },\n\n searchHoldingKeeper: (cancelToken, params) => bff.get('/searchHoldingKeeper', { cancelToken, params }),\n\n metFciWithdrawalPeriods: (cancelToken) => {\n return bff\n .get('/metFCIWithdrawalPeriods', {\n cancelToken\n });\n },\n\n reviewStatus: (cancelToken, documentRef) => {\n return bff\n .get('/reviewStatus', {\n cancelToken,\n params: {\n documentRef\n }\n });\n },\n\n paperMovements: (id) => {\n return bff\n .get('/paperMovements', {\n params: {\n id\n }\n });\n },\n\n processingFlags: (cancelToken, requestTypeId, speciesId) => {\n return bff\n .get('/processingFlags', {\n cancelToken,\n params: {\n requestTypeId,\n speciesId\n }\n });\n },\n\n request: (cph, requestId, requestType) => {\n return bff\n .get('/request', {\n params: {\n cph,\n requestId,\n requestType\n }\n });\n },\n\n requestByIdAndType: (cancelToken, requestId, requestType) => {\n return bff\n .get('/request', {\n cancelToken,\n params: {\n requestId,\n requestType\n }\n });\n },\n\n requests: (cancelToken, requestId) => {\n return bff\n .get('/requests', {\n cancelToken,\n params: {\n requestId\n }\n });\n },\n\n reviewHoldingMovements: (cancelToken, requestId) => {\n return bff\n .get('/reviewHoldingMovements', {\n cancelToken,\n params: {\n id: requestId\n }\n });\n },\n\n searchHoldingDetails: (cancelToken, params) => bff.get('/holdingDetails', { cancelToken, params }),\n\n searchHolding: (cancelToken, params) => bff.get('/searchHolding', { cancelToken, params }),\n\n undoRequest: (cancelToken, requestId) => {\n return bff\n .get('/undoRequest', {\n cancelToken,\n params: {\n id: requestId\n }\n });\n }\n },\n\n holdingRegister: {\n consolidateTagAndBatchNumbers: (tagList) => {\n if (!tagList || !isArray(tagList) || tagList?.length === 0) {\n return '';\n }\n const orderedArray = tagList;\n const getContent = (fields) => fields[1] === fields[2] ? sprintf('%s %s', fields[0], fields[2]) : sprintf('%s %s - %s', fields[0], fields[2], fields[1]);\n const copyBuffer = (fields) => [fields[0], fields[1], fields[1]]; // [batchNumber, currentTagNumber, firstTagNumber]\n const updateEndNumber = (buffer, endNumber) => [buffer[0], endNumber, buffer[2]];\n const emptyBuffer = [null, null, null]; // [batchNumber, currentTagNumber, firstTagNumber]\n const tagRangesArray = [];\n let oldBuffer = emptyBuffer;\n const oldBatch = {};\n\n orderedArray.forEach((element) => {\n const fields = element.split(' ');\n\n if (fields.length === 2) { // tag number\n if (oldBuffer[0] === null) { // without previous flock number\n oldBuffer = copyBuffer(fields); // assign the old buffer is the current tag number\n } else if (oldBuffer[0] === fields[0] && (parseInt(oldBuffer[1]) + 1) === parseInt(fields[1])) { // check same flock & number as subsequence as previous\n oldBuffer = updateEndNumber(oldBuffer, fields[1]); // update the end number\n } else {\n tagRangesArray.push(getContent(oldBuffer)); // save the old buffer to array\n oldBuffer = copyBuffer(fields); // assign the old buffer is the current tag number\n }\n } else if (fields.length === 1) {\n if (!oldBatch[element]) {\n oldBatch[element] = 1;\n } else {\n oldBatch[element]++;\n }\n } else {\n if (oldBuffer[0] !== null) { // check any last field in the buffer to be saved\n tagRangesArray.push(getContent(oldBuffer)); // save the old buffer to array\n }\n tagRangesArray.push(element); // save the non-tag number field\n oldBuffer = emptyBuffer; // clear the old buffer\n }\n });\n\n if (oldBuffer[0] !== null) { // check any last field in the buffer to be saved\n tagRangesArray.push(getContent(oldBuffer)); // save the old buffer to array\n }\n const batchKeys = Object.keys(oldBatch);\n if (batchKeys.length > 0) {\n batchKeys.forEach((key) => {\n tagRangesArray.push(sprintf('%s x %d', key, oldBatch[key]));\n });\n }\n\n return tagRangesArray.join(', ');\n },\n\n getReference: () => {\n const sessionHolding = storeService.session.get.holding();\n const sessionSpecies = storeService.session.get.species();\n const sessionHoldingRegister = storeService.session.get.holdingRegister();\n\n const [fromDate, toDate] = sessionHoldingRegister\n ? [sessionHoldingRegister.fromDate, sessionHoldingRegister.toDate]\n : [helpers.holdingRegister.initFromDate(), helpers.holdingRegister.initToDate()];\n\n return {\n cph: sessionHolding ? sessionHolding.value : null,\n speciesId: sessionSpecies ? sessionSpecies.id : null,\n fromDate,\n toDate\n };\n },\n\n downloadPdfLink: (params) => Boolean(\n (\n !helpers.species.isCattleId(params.speciesId) &&\n params.movementId &&\n params.requestId &&\n params.requestTypeId &&\n !helpers.cph.isNonCph(params.destinationHolding)\n ) ||\n (\n params.isOffMove &&\n helpers.cph.isNonCph(params.destinationHolding) &&\n helpers.option.requestType.isMovement(params.requestTypeId)\n )\n ),\n\n download: (setModal, params) => {\n if (params.setPending) {\n params.setPending(true);\n }\n\n bff\n .get('/holdingRegisterDownload', {\n params: {\n eventTypes: params.eventTypes.map((type) => type.toLowerCase()),\n cph: params.cph,\n speciesId: params.speciesId,\n fromDate: params.fromDate ? moment(params.fromDate).format('YYYY-MM-DD') : moment().subtract(1, constants.period.days).format(),\n toDate: params.toDate ? moment(params.toDate).add(1, constants.period.days).format('YYYY-MM-DD') : moment().add(1, constants.period.days).format()\n }\n })\n .then((res) => {\n let filename = 'holdingRegister';\n\n if (params.areas?.length === 1) {\n filename += '-' + params.areas[0];\n }\n\n helpers.openFileFromResponse(res.data, filename, 'ods');\n\n if (params.setPending) {\n params.setPending(false);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n if (params.setPending) {\n params.setPending(false);\n }\n errors.BFF(error, setModal);\n }\n });\n },\n\n initFromDate: () => helpers.date.formatForSubmission(helpers.date.todayStartOfDay().subtract(6, constants.period.months)),\n\n initToDate: () => helpers.date.formatForSubmission(helpers.date.todayEndOfDay()),\n\n saveDates: (fromDate, toDate) => storeService.session.set.holdingRegister({\n fromDate: fromDate ? fromDate : null,\n toDate: toDate ? toDate : null\n }),\n\n types: {\n isAdjacentMovement: (movement) => movement === constants.holdingRegister.type.adjacentMovements,\n\n isAnnualInventory: (movement) => movement === constants.holdingRegister.type.annualInventory,\n\n isBirths: (movement) => movement === constants.holdingRegister.type.births,\n\n isDeaths: (movement) => movement === constants.holdingRegister.type.deaths,\n\n isDownload: (movement) => movement === constants.holdingRegister.type.download,\n\n isMovementOff: (movement) => movement === constants.holdingRegister.type.movementsOff,\n\n isMovementOn: (movement) => movement === constants.holdingRegister.type.movementsOn,\n\n isTaggingApplications: (movement) => movement === constants.holdingRegister.type.tagApplications,\n\n isTaggingReplacements: (movement) => movement === constants.holdingRegister.type.tagReplacements\n }\n },\n\n labelPosition: {\n isAbove: (position) => position === constants.labelPosition.above,\n\n isInline: (position) => position === constants.labelPosition.inline\n },\n\n lookup: {\n transportedBy: (transporterTypeId) => {\n switch (transporterTypeId) {\n case constants.option.transporterTypeId.departureKeeperType:\n return constants.option.transporter.departureKeeper;\n case constants.option.transporterTypeId.destinationKeeperType:\n return constants.option.transporter.destinationKeeper;\n case constants.option.transporterTypeId.haulierType:\n return constants.option.transporter.haulier;\n default:\n return null;\n }\n },\n\n transporterType: (transporterType) => {\n switch (transporterType) {\n case constants.transporter.DEP:\n case constants.transporter.departureKeeper:\n return constants.option.transporter.departureKeeper;\n case constants.transporter.DEST:\n case constants.transporter.destinationKeeper:\n return constants.option.transporter.destinationKeeper;\n case constants.transporter.HAULIER:\n case constants.transporter.haulier:\n return constants.option.transporter.haulier;\n default:\n return null;\n }\n }\n },\n\n messageStatus: {\n isDefault: (value) => value === constants.option.messageStatus.default,\n\n isUnconfirmed: (value) => value === constants.option.messageStatus.unconfirmed,\n\n isUnknown: (value) => value === constants.option.messageStatus.unknown\n },\n\n option: {\n animals: {\n doSatisfy: (option) => option === constants.option.animalsSatisfy.doSatisfy,\n\n doNotSatisfy: (option) => option === constants.option.animalsSatisfy.doNotSatisfy\n },\n\n embryo: {\n isTransfer: (embryo) => embryo === constants.option.embryo.yes\n },\n\n fci: {\n doRecord: (record) => record === constants.option.recordFCI.yes,\n\n doNotRecord: (record) => record === constants.option.recordFCI.no\n },\n\n identificationType: {\n isBreedingTags: (type) => type === constants.option.identification.breedingTags,\n\n isSlaughterTags: (type) => type === constants.option.identification.slaughterTags\n },\n\n movement: {\n isCancelled: (movementType) => movementType === constants.movementTypeSearch.cancelled,\n\n isCrossBorder: (movementType) => movementType === constants.movementTypeSearch.xb,\n\n isCrossBorderUnsupportedRequestType: (value) => typeof value === 'number' ? constants.movement.crossBorderUnsupportedRequestType.includes(value) : false,\n\n isExempt: (inValue) => typeof inValue !== 'string' ? false : inValue === constants.option.exemption.yes,\n\n isMoveToCommonGround: (movementType, otherHolding) => helpers.option.movement.isOff(movementType) && typeof otherHolding === 'string' && otherHolding?.substring(0, 2) === '00',\n\n isNew: (inValue) => typeof inValue !== 'string' ? false : inValue === constants.option.movement.newMovement,\n\n isOff: (inValue) => typeof inValue !== 'string' ? false : inValue === constants.option.movement.off,\n\n isOn: (inValue) => typeof inValue !== 'string' ? false : inValue === constants.option.movement.on,\n\n isPermitMove: (inValue) => typeof inValue !== 'string' ? false : inValue === constants.option.movement.permit,\n\n isReview: (inValue) => typeof inValue !== 'string' ? false : inValue === constants.option.movement.reviewMovement,\n\n isStandard: (movementType) => movementType === constants.movementTypeSearch.standard\n },\n\n movementReviewStatus: {\n hasBeenConfirmed: (reviewStatus) => reviewStatus === 'ReviewedAndAccepted',\n\n hasBeenPartiallyConfirmed: (reviewStatus) => reviewStatus === 'ReviewedAndPartiallyAccepted',\n\n hasBeenRejected: (reviewStatus) => reviewStatus === 'ReviewedAndRejected',\n\n hasNotBeenReviewed: (reviewStatus) => reviewStatus === 'NotReviewed',\n\n isCancelled: (reviewStatus) => reviewStatus === 'Cancelled',\n\n inNotRequired: (reviewStatus) => reviewStatus === 'NotRequired',\n\n isPending: (reviewStatus) => reviewStatus === 'Pending'\n },\n\n recordBy: {\n isByDeparture: (recorder) => recorder === constants.recordedBy.departure,\n\n isByDestination: (recorder) => recorder === constants.recordedBy.destination\n },\n\n reportType: {\n isMissing: (reportType) => reportType === constants.option.missingOrFound.missing,\n\n isFound: (reportType) => reportType === constants.option.missingOrFound.found\n },\n\n requestType: {\n isAdjacentMovement: (requestType) => requestType === constants.option.requestType.adjacentMovement,\n\n isAnimalsAdded: (requestType) => requestType === constants.option.requestType.animalsAdded,\n\n isAnnualInventoryCreate: (requestType) => requestType === constants.option.requestType.annualInventoryCreate,\n\n isAnnualInventoryDelete: (requestType) => requestType === constants.option.requestType.annualInventoryDelete,\n\n isBirth: (requestType) => requestType === constants.option.requestType.birth,\n\n isCorrectedMovement: (requestType) => requestType === constants.option.requestType.correctTransfer,\n\n isDeath: (requestType) => requestType === constants.option.requestType.death,\n\n isHoldingProductionTypeCreate: (requestType) => requestType === constants.option.requestType.holdingProductionTypeCreate,\n\n isHoldingProductionTypeDelete: (requestType) => requestType === constants.option.requestType.holdingProductionTypeDelete,\n\n isMovement: (requestType) => requestType === constants.option.requestType.movement,\n\n isMovementHandshake: (requestType) => requestType === constants.option.requestType.movementHandshake,\n\n isTagApplication: (requestType) => requestType === constants.option.requestType.tagApplication,\n\n isTagReplacement: (requestType) => requestType === constants.option.requestType.tagReplacement,\n\n isPaperMovementAdd: (requestType) => requestType === constants.option.requestType.paperMovementAdd,\n\n isPaperMovementEdit: (requestType) => requestType === constants.option.requestType.paperMovementEdit,\n\n isUndo: (requestType) => requestType === constants.option.requestType.undo\n },\n\n selectionMethod: {\n isBatch: (type) => type === constants.option.selectionMethod.batch,\n\n isHolding: (type) => type === constants.option.selectionMethod.holding,\n\n isIndividual: (type) => type === constants.option.selectionMethod.individual,\n\n isManualTagNumbers: (type) => type === constants.option.selectionMethod.manualTagNumbers,\n\n isTagNumberRange: (type) => type === constants.option.selectionMethod.tagNumberRange,\n\n isUploadFile: (type) => type === constants.option.selectionMethod.uploadFile\n },\n\n state: {\n isInvalid: (state) => state === constants.states.invalid,\n\n isReformatted: (state) => state === constants.states.reformatted,\n\n isValid: (state) => state === constants.states.valid\n },\n\n tagMethod: {\n isOnHolding: (tagMethod) => tagMethod === constants.option.tagMethod.onHolding,\n\n isSelectFromLists: (tagMethod) => tagMethod === constants.option.tagMethod.selectFromLists,\n\n isTagsManually: (tagMethod) => tagMethod === constants.option.tagMethod.tagsManually\n },\n\n tagType: {\n isBreeding: (tagType) => tagType === constants.option.tag.breedingTags,\n\n isIndividual: (tagType) => tagType === constants.option.tag.individualTag,\n\n isSlaughter: (tagType) => tagType === constants.option.tag.slaughterTags,\n\n isUpgrade: (tagType) => tagType === constants.option.tag.upgradeTags\n },\n\n transporter: {\n isDepartureKeeper: (transporter) => transporter === constants.option.transporter.departureKeeper || constants.transporterTypes.departureKeeper.includes(transporter),\n\n isDestinationKeeper: (transporter) => transporter === constants.option.transporter.destinationKeeper || constants.transporterTypes.destinationKeeper.includes(transporter),\n\n isHaulier: (transporter) => transporter === constants.option.transporter.haulier || constants.transporterTypes.haulier.includes(transporter)\n }\n },\n\n postType: {\n isConfirm: (pType) => pType === constants.postType.CONFIRM,\n\n isCreate: (pType) => pType === constants.postType.CREATE,\n\n isDelete: (pType) => pType === constants.postType.DELETE,\n\n isReject: (pType) => pType === constants.postType.REJECT,\n\n isUndo: (pType) => pType === constants.postType.UNDO,\n\n isUpdate: (pType) => pType === constants.postType.UPDATE\n },\n\n redirect: {\n searchByMovementReference: (history, documentRef) => {\n storeService.session.removeAll.searchResults();\n storeService.session.set.activeTabId(constants.tabs.movementRef);\n storeService.session.set.tableFiltersMovements({ movementRef: documentRef });\n\n history.push(Routing.boSearchMovements);\n },\n\n searchByPaperId: (history, paperId) => {\n storeService.session.removeAll.searchResults();\n storeService.session.set.activeTabId(constants.tabs.paperId);\n storeService.session.set.tableFiltersMovements({ paperId });\n\n history.push(Routing.boSearchMovements);\n },\n\n paperMovement: (history, paperId, state) => {\n history.push(\n Routing.boMovements + paperId,\n state\n );\n }\n },\n\n response: {\n isError: (value) => value === constants.errorAndWarning.error,\n\n isValid: (resData, setModal, setPending) => {\n if (!resData || (typeof resData === 'object' && !Array.isArray(resData) && Object.keys(resData).length === 0)) {\n setModal({\n modalTitle: 'error.invalidResponse-title',\n modalMessage: [\n 'error.unexpectedError1',\n 'error.unexpectedError2'\n ]\n });\n\n if (setPending && typeof setPending === 'function') {\n setPending(false);\n }\n\n return false;\n }\n\n try {\n if (typeof resData === 'object') {\n JSON.stringify(resData);\n } else if (typeof resData === 'string' || typeof resData === 'number') {\n JSON.parse(resData);\n }\n } catch (e) {\n setModal({\n modalTitle: 'error.invalidResponse-title',\n modalMessage: 'error.invalidResponse-message'\n });\n\n if (setPending && typeof setPending === 'function') {\n setPending(false);\n }\n\n return false;\n }\n\n return true;\n },\n\n isWarning: (value) => value === constants.errorAndWarning.warning\n },\n\n species: {\n formatName: (speciesName) => speciesName && typeof speciesName === 'string' ? Object.values(constants.species.internalLabel).find((item) => item.toLowerCase() === speciesName.toLowerCase()) : null,\n\n nameToId: (speciesName) => {\n if (typeof speciesName !== 'string' || !speciesName) {\n return constants.species.id.UNKNOWN;\n }\n const matchSpecies = constants.species.internalList.filter((species) => species.name.toLowerCase() === speciesName.toLowerCase());\n return matchSpecies?.length > 0 ? matchSpecies[0].id : constants.species.id.UNKNOWN;\n },\n\n idToName: (speciesId) => {\n if (typeof speciesId !== 'number' || !speciesId) {\n return constants.species.internalLabel.UNKNOWN;\n }\n const matchSpecies = constants.species.internalList.filter((species) => (species.id === speciesId));\n return matchSpecies?.length > 0 ? matchSpecies[0].name : constants.species.internalLabel.UNKNOWN;\n },\n\n isCattleId: (checkSpeciesId) => typeof checkSpeciesId !== 'number' ? false : checkSpeciesId === constants.species.id.CATTLE,\n\n isSheepId: (checkSpeciesId) => typeof checkSpeciesId !== 'number' ? false : checkSpeciesId === constants.species.id.SHEEP,\n\n isGoatId: (checkSpeciesId) => typeof checkSpeciesId !== 'number' ? false : checkSpeciesId === constants.species.id.GOATS,\n\n isPigId: (checkSpeciesId) => typeof checkSpeciesId !== 'number' ? false : checkSpeciesId === constants.species.id.PIGS,\n\n isDeerId: (checkSpeciesId) => typeof checkSpeciesId !== 'number' ? false : checkSpeciesId === constants.species.id.DEER\n },\n\n status: {\n isWelshOrScottish: (holding) => holding && holding !== 'UNKNOWN' && (holdingHelper.cph.isWelsh(holding) || holdingHelper.cph.isScottish(holding)),\n\n isNonEnglishCPHs: (t, data) => {\n if (data &&\n (\n helpers.status.isWelshOrScottish(data.sourceHolding) ||\n helpers.status.isWelshOrScottish(data.destinationHolding) ||\n helpers.status.isWelshOrScottish(data.fromHolding) ||\n helpers.status.isWelshOrScottish(data.toHolding)\n )\n ) {\n return t('label.xb');\n }\n return null;\n },\n\n isUnknownMove: (t, data) => {\n if (data && (\n (holdingHelper.cph.isUnknownCph(data.sourceHolding)) ||\n (holdingHelper.cph.isUnknownCph(data.destinationHolding)) ||\n (holdingHelper.cph.isUnknownCph(data.fromHolding)) ||\n (holdingHelper.cph.isUnknownCph(data.toHolding)))\n ) {\n return t('label.un');\n }\n\n return null;\n },\n\n isPermitMove: (t, data) => {\n if (data && (\n (holdingHelper.cph.isNonCph(data.sourceHolding)) ||\n (holdingHelper.cph.isNonCph(data.destinationHolding)) ||\n (holdingHelper.cph.isNonCph(data.fromHolding)) ||\n (holdingHelper.cph.isNonCph(data.toHolding)))\n ) {\n return t('label.pm');\n }\n\n return null;\n },\n\n isCancelledMove: (t, data) => {\n if (data?.cancelledMove) {\n switch (data?.requestTypeUndone) {\n case constants.undoRequestTypes.correction:\n return t('label.ca');\n case constants.undoRequestTypes.review:\n return t('label.cr');\n case constants.undoRequestTypes.transfer:\n return data?.movementReferenceCorrected ? t('label.cma') : t('label.cm');\n default:\n return null;\n }\n }\n return null;\n },\n\n getType: (t, data) =>\n helpers.status.isCancelledMove(t, data) ??\n helpers.status.isNonEnglishCPHs(t, data) ??\n helpers.status.isPermitMove(t, data) ??\n helpers.status.isUnknownMove(t, data) ??\n (data ? t(data.confirmed ? 'label.yes' : 'label.no') : null)\n },\n\n tab: {\n isMovementRange: (tab) => tab === constants.tabs.movementRange,\n\n isMovementRef: (tab) => tab === constants.tabs.movementRef,\n\n isPaperId: (tab) => tab === constants.tabs.paperId\n },\n\n tag: {\n canLink: (inValue) => inValue !== null && inValue !== '-',\n\n convertToRfid: (tag) => tag.replace(/ /g, '').replace('UK', '0826').trim(),\n\n formatNumber: (inValue, theLength) => {\n if (typeof inValue !== 'number' || !inValue || !theLength || theLength <= 0) {\n return null;\n }\n let outValue = inValue.toString();\n while (outValue?.length < theLength) {\n outValue = '0' + outValue;\n }\n return outValue;\n },\n\n getColour: (requestStatus) => {\n switch (requestStatus) {\n case constants.status.success:\n return 'green';\n case constants.status.completed_warning:\n case constants.status.warnings:\n return 'yellow';\n case constants.status.cancelled:\n case constants.status.completed_error:\n case constants.status.processErrors:\n case constants.status.errors:\n return 'red';\n case constants.status.claPending:\n case constants.status.pending:\n case constants.status.processing:\n return 'black';\n default:\n return '';\n }\n },\n\n getFormatExamples: (speciesId) => {\n return {\n title: 'formatExamples.tag.title-' + speciesId,\n description: 'formatExamples.tag.description-' + speciesId\n };\n },\n\n getInvalidField: (row) => {\n if (row.invalid?.length > 1) {\n return '-entry';\n }\n if (row.invalid?.includes('tagNumber')) {\n return '-tagNumber';\n }\n if (row.invalid?.includes('breedName')) {\n return '-breed';\n }\n if (row.invalid?.includes('genderName')) {\n return '-gender';\n }\n if (row.invalid?.includes('dob')) {\n return '-dob';\n }\n return '';\n },\n\n hasNonEidTagsSheep: (speciesId, data) => {\n const tagsToCheck = [];\n const extractBatchNumber = (tag) => tag ? tag.trim().substring(0, tag.indexOf(' ')) : null;\n\n if (helpers.species.isSheepId(speciesId)) {\n data.forEach((tag) => {\n if (helpers.tag.isValid(tag)) {\n if (tag.tagNumber) {\n tagsToCheck.push(extractBatchNumber(tag.tagNumber));\n } else {\n if (tag.newTag !== null && !tag.newBatch) {\n tagsToCheck.push(extractBatchNumber(tag.newTag?.tag));\n }\n if (tag.oldTag !== null && !tag.oldBatch) {\n tagsToCheck.push(extractBatchNumber(tag.oldTag?.tag));\n }\n }\n }\n });\n }\n\n return tagsToCheck.some((tag) => tag?.substr(0, 2).toUpperCase() === 'UK' && tag?.length === 8);\n },\n\n isInvalid: (tag) => tag?.valid === constants.tag.invalid,\n\n isInvalidExtended: (tag) => tag?.invalid?.length > 0,\n\n isNonEid: (tag) => {\n if (tag?.tagNumber) {\n const tagToCheck = tag.tagNumber.trim().substring(0, tag.tagNumber.indexOf(' '));\n\n return tagToCheck.substr(0, 2).toUpperCase() === 'UK' && tagToCheck.substr(2)?.length === 6;\n }\n\n return false;\n },\n\n isValid: (tag) => tag?.valid !== constants.tag.invalid,\n\n isValidExtended: (tag) => tag?.invalid?.length ? tag.invalid.length === 0 : true,\n\n isValidTagNumber: (tag) => {\n if (tag && typeof tag === 'string') {\n if (tag.length < 3) {\n return false;\n }\n\n if (tag.substr(0, 3).toUpperCase() === 'UK0') {\n return tag.length > 14;\n }\n return tag.length > 13;\n }\n\n return false;\n },\n\n remove: (tagList, tag) => tagList.filter((item) => !(item.tagNumber === tag.tagNumber)),\n\n trim: (tag) => tag.replace(/\\s\\s+/g, ' ').trim(),\n\n zerosPadLeft: (speciesId, batch, tag, strLength) => {\n if (\n tag &&\n (\n !helpers.species.isGoatId(speciesId) ||\n (\n helpers.species.isGoatId(speciesId) &&\n batch !== '' &&\n helpers.batch.isSevenDigitsFormat(batch)\n )\n )\n ) {\n return helpers.text.zerosPadLeft(tag, strLength ? strLength : parseInt(config.WIDTH_START_NUMBER));\n }\n\n return tag;\n }\n },\n\n text: {\n zerosPadLeft: (string, length) => {\n if (String(string)?.length > length) {\n return string;\n }\n\n const newString = '0'.repeat(length) + string;\n\n return newString.substr(newString?.length - length, length);\n },\n\n pluralCheck: (inValue, text) => (inValue === 1) ? text : text + '-plural',\n\n sprintf: (theString, argumentsArray) => {\n if (theString !== null && theString !== '' && argumentsArray?.length > 0) {\n const regex = /%s/;\n const replacement = (p, c) => p.replace(regex, c);\n return argumentsArray.reduce(replacement, theString);\n }\n return theString;\n },\n\n sentenceCase: (text) => {\n if (typeof text !== 'string' || text === '') {\n return '';\n }\n const result = text.replace(/\\s/g, '').match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\\d+/g).join(' ');\n return result.charAt(0).toUpperCase() + result.slice(1).toLowerCase();\n },\n\n camelCase: (text) => {\n if (typeof text !== 'string' || text === '') {\n return '';\n }\n const result = text.replace(/\\s/g, '').match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\\d+/g).join(' ');\n return result.charAt(0).toLowerCase() + result.slice(1);\n },\n\n pascalCase: (text) => {\n if (typeof text !== 'string' || text === '') {\n return '';\n }\n const result = text.replace(/\\s/g, '').match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\\d+/g).join(' ');\n return result.charAt(0).toUpperCase() + result.slice(1);\n },\n\n getContentsLink: (t, text, onClick, href) => {\n const contentsMatch = t(text).match(new RegExp('(.*)'));\n\n if (contentsMatch) {\n const stringParts = t(text).split(contentsMatch[0]);\n const returnArray = [\n ,\n '',\n \n ];\n\n if (onClick) {\n returnArray[1] = (\n \n );\n } else if (href) {\n returnArray[1] = (\n \n {contentsMatch[1]}\n \n );\n }\n\n return returnArray;\n }\n\n return [\n \n ];\n }\n },\n\n type: {\n isBoolean: (value) => typeof value === 'boolean'\n },\n\n undoRequest: {\n isCorrection: (request) => request === constants.undoRequestTypes.correction,\n\n isReview: (request) => request === constants.undoRequestTypes.review,\n\n isTransfer: (request) => request === constants.undoRequestTypes.transfer\n },\n\n userRole: {\n isAbattoir: (role) => role === userRoleType.ABATTOIR,\n\n isAICentre: (role) => role === userRoleType.AICENTRE,\n\n isAssembly: (role) => role === userRoleType.ASSEMBLY,\n\n isBackOffice: (role) => role === userRoleType.BACKOFFICE,\n\n isCollection: (role) => role === userRoleType.COLLECTION,\n\n isCommon: (role) => role === userRoleType.COMMON,\n\n isGeneric: (role) => role === userRoleType.GENERIC,\n\n isKeeper: (role) => role === userRoleType.KEEPER,\n\n isMarket: (role) => role === userRoleType.MARKET,\n\n isOther: (role) => role === userRoleType.OTHER,\n\n isPort: (role) => role === userRoleType.PORT,\n\n isQuarantine: (role) => role === userRoleType.QUARANTINE,\n\n isShow: (role) => role === userRoleType.SHOW,\n\n isSlaughterMarket: (role) => role === userRoleType.SLAUGHTERMARKET,\n\n isStoreMarket: (role) => role === userRoleType.STOREMARKET,\n\n isUnknown: (role) => role === userRoleType.UNKNOWN\n },\n\n validate: {\n cphNumber: (cph) => (/^\\d{2}\\/\\d{3}\\/\\d{4}$/).test(cph),\n\n fsaNumber: (fsa) => (/^\\d{4}$/).test(fsa),\n\n tagNumbers: (species, batchNumbers, tagNumbers) => {\n return bff\n .post('/validate', {\n species,\n batchNumbers,\n tagNumbers\n });\n }\n },\n\n checkObjectEquality: (object1, object2) => {\n const object1Copy = cloneDeep(object1);\n const object2Copy = cloneDeep(object2);\n\n mergeWith(object1Copy, object2Copy, (objectValue, sourceValue, key) => {\n if (!(isEqual(objectValue, sourceValue)) && (Object(objectValue) !== objectValue)) {\n // eslint-disable-next-line no-console\n console.log('-----------------------------------------------');\n // eslint-disable-next-line no-console\n console.log(key);\n // eslint-disable-next-line no-console\n console.log(' Expected:', sourceValue);\n // eslint-disable-next-line no-console\n console.log(' Actual:', objectValue);\n }\n });\n },\n\n movementReferenceByRequest: (setModal, requestId, requestType, setData, generatePDF) => {\n bff\n .get('/request', { params: { requestId, requestType } })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal) && res.data.movementDocument) {\n setData(res.data.movementDocument.movementDocumentRef);\n generatePDF(res.data.movementDocument.movementDocumentRef);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n },\n\n dropdownSearch: (options) => {\n let optionsList;\n\n if (options[1] && options[1].type === 'group' && options[1].items?.length > 0) {\n optionsList = options[1].items;\n } else if (options[0] && options[0].type === 'group' && options[0].items?.length > 0) {\n optionsList = options[0].items;\n } else {\n optionsList = options;\n }\n\n return (value) => {\n if (!value?.length) {\n return options;\n }\n\n return optionsList.filter((item) => item.name.toLowerCase().includes(value.toLowerCase()));\n };\n },\n\n generateUUID: () => {\n let result, i, j;\n result = '';\n for (j = 0; j < 32; j++) {\n if (j === 8 || j === 12 || j === 16 || j === 20) {\n result += '-';\n }\n i = Math.floor(Math.random() * 16).toString(16).toUpperCase();\n result += i;\n }\n return result;\n },\n\n openFileFromResponse: (data, reportType, fileType) => {\n const datestamp = helpers.date.timestamp();\n const link = document.createElement('a');\n const matchedMimeType = constants.mimeList.find((mimeItem) => mimeItem.extension === fileType);\n const mimeType = matchedMimeType ? matchedMimeType.mimeType : 'text/plain';\n\n link.href = sprintf('data:%s;base64,', mimeType) + data;\n link.download = sprintf('%s_%s.%s', reportType, datestamp, fileType);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n },\n\n writeWorkbookToFile: (workbook, fileName, fileType) => XLSX.writeFile(workbook, `${fileName}.${fileType}`, { compression: true }),\n\n generateWorkbook: (data) => {\n const workbook = XLSX.utils.book_new();\n Object.keys(data).forEach((key) => {\n const keyData = data[key] ? data[key] : [''];\n const worksheet = XLSX.utils.json_to_sheet(keyData);\n const arrayWidths = [];\n Object.keys(keyData[0]).forEach((header) => {\n const arrayOfWordLengths = [header?.length, ...keyData.map((keyDataItem) => keyDataItem[header]?.length)].filter(Number);\n arrayWidths.push({ wch: Math.max(...arrayOfWordLengths) + 10 });\n });\n worksheet['!cols'] = arrayWidths;\n XLSX.utils.book_append_sheet(workbook, worksheet, key.split('_').join(' '));\n });\n return workbook;\n },\n\n generateAnimalWorkbook: (holding, speciesName, timeStamp, data) => {\n const workbook = XLSX.utils.book_new();\n const workSheetData = [];\n const address = helpers.address.format.addressFull(holding.address).filter(Boolean).join(',');\n const formattedAddress = address === 'label.cphNotFound' ? 'No address available' : address;\n workSheetData.push(['Date and time of download', timeStamp]);\n workSheetData.push(['Holding', holding.value]);\n workSheetData.push(['Address', formattedAddress]);\n workSheetData.push(['Species', speciesName]);\n workSheetData.push(['']);\n workSheetData.push(['Tag number', 'Breed', 'Gender', 'Year / DOB', 'Age']);\n const capitalizeFirstCharacter = (str) => str.length > 0 ? str[0].toUpperCase() + str.slice(1) : str;\n\n data.forEach((item) => {\n let age = '-',\n dob = 'Unknown';\n if (item.beginBirthPeriod) {\n const sameDay = helpers.date.withSameCalendarDay(item.beginBirthPeriod, item.endBirthPeriod);\n dob = sameDay ? helpers.date.format(item.beginBirthPeriod) : moment(item.beginBirthPeriod).year();\n if (sameDay) {\n age = helpers.get.age(item.beginBirthPeriod);\n } else {\n const tempAge = helpers.date.ageInYears(item.beginBirthPeriod);\n age = tempAge === 0 ? 'Under 1y' : tempAge + 'y';\n }\n }\n workSheetData.push([\n item.tagNumber,\n item.breedName ?? 'Unknown',\n capitalizeFirstCharacter(helpers.gender.idToName(item.genderId)),\n dob,\n age\n ]);\n });\n\n workSheetData.push(['Total animals: ' + data.length]);\n const ws = XLSX.utils.aoa_to_sheet(workSheetData);\n XLSX.utils.book_append_sheet(workbook, ws, timeStamp);\n return workbook;\n },\n\n replaceNull: (inValue) => {\n return inValue ? inValue : '';\n },\n\n scrollToTop: (element) => {\n if (element) {\n element.scrollTop = 0;\n } else {\n document.body.scrollTop = 0;\n document.documentElement.scrollTop = 0;\n }\n },\n\n setCaretPosition: (ctrl, pos) => {\n if (ctrl.setSelectionRange) { // Modern browsers\n setTimeout(() => {\n ctrl.focus();\n ctrl.setSelectionRange(pos, pos);\n }, 10);\n } else if (ctrl.createTextRange) { // IE8 and below\n const range = ctrl.createTextRange();\n range.collapse(true);\n range.moveEnd('character', pos);\n range.moveStart('character', pos);\n range.select();\n }\n },\n\n sortArrayOfObjects: (arr, property, direction) => arr.sort(sortByProperty(property, direction)),\n\n sortTags: (tags) => {\n const list = tags.map((item) => {\n const rec = item.split(' ');\n if (rec.length < 2) {\n rec[1] = '0';\n rec[2] = 0;\n } else {\n rec[2] = parseInt(rec[1]);\n }\n rec[3] = item;\n return rec;\n });\n\n list.sort((a, b) => {\n const o1 = a[0];\n const o2 = b[0];\n\n const p1 = a[2];\n const p2 = b[2];\n\n if (o1 < o2) {\n return -1;\n }\n if (o1 > o2) {\n return 1;\n }\n if (p1 < p2) {\n return -1;\n }\n if (p1 > p2) {\n return 1;\n }\n return 0;\n });\n\n const arr = list.map((row) => {\n return row[3];\n });\n\n return arr;\n },\n\n resetDropdownFocusState: () => {\n const interval = setInterval(() => {\n const highlightedOptions = document.getElementsByClassName('is-highlighted');\n\n if (highlightedOptions) {\n clearInterval(interval);\n for (const el of highlightedOptions) {\n el.classList.remove('is-highlighted');\n }\n }\n }, 10);\n },\n\n getUserRole: (roles) => {\n if (roles.some((r) => boRoles.includes(r.toLowerCase()))) {\n return userRoleType.BACKOFFICE;\n }\n return roles.some((r) => rcvsRoles.includes(r.toLowerCase())) ? userRoleType.RCVSVET : userRoleType.GENERIC;\n },\n // checkTags -> checking the tags are valid or not by passing trimmedEle\n // Here [\\d] -> [0-9]\n checkTags: (trimmedElement) => {\n return (\n trimmedElement.match(/^[a-z]{2}\\d+/) ||\n trimmedElement.match(/^[a-z]{3}\\d+/) ||\n trimmedElement.match(/^[a-z]{4}\\d+/) ||\n trimmedElement.match(/^\\d{15,16}/) ||\n trimmedElement.match(/^[0-9a-f]{8}/)\n );\n }\n\n};\n\nexport default helpers;\n","/**\n *\n * Implementing a service allowing the currently configured feature list to be accessed.\n * The feature toggles will be pulled from the BFF and can then be checked on the string name.\n *\n **/\n\nimport appInsightsService from 'services/appInsightsService';\nimport bff, { isCancel } from 'services/bff';\nimport helpers from 'services/helpers';\nimport storeService from 'services/storeService';\n\nconst featureToggles = {\n init: (setModal) => {\n bff\n .get('/featureList')\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n storeService.session.set.features(res.data);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n appInsightsService.trackException(error);\n storeService.session.set.features({});\n }\n });\n },\n\n isEnabled: (featureName) => {\n const allFeatures = storeService.session.get.features();\n\n if (allFeatures) {\n return allFeatures[featureName];\n }\n\n return false;\n },\n\n toggles: {\n accessibilityTooltipsKeyboardFocus: 'accessibility tooltips keyboard focus',\n version_1_0: 'version 1.0',\n version_1_1: 'version 1.1'\n }\n};\n\nexport default featureToggles;\n","import bff, { isCancel } from 'services/bff';\nimport errors from 'services/errors';\nimport storeService from 'services/storeService';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\n\nconst breedsHelper = {\n fetchBreeds: (setModal, setLoading) => {\n bff\n .get('/breeds')\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n const allBreeds = {};\n\n res.data.data.forEach((item) => {\n if (!allBreeds[item.speciesId]) {\n allBreeds[item.speciesId] = [];\n }\n\n allBreeds[item.speciesId].push({\n id: item.id,\n name: item.name.replace('&', '&')\n });\n });\n\n Object.keys(allBreeds).forEach((speciesId) => helpers.sortArrayOfObjects(allBreeds[speciesId], 'name', constants.sorting.ascending));\n\n storeService.session.set.breedsAll(allBreeds);\n }\n\n setLoading((prevState) => ({\n ...prevState,\n breeds: false\n }));\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n },\n\n fetchBreedsOnHolding: (cancelToken, setModal, cph, speciesId, onHoldingDate, returnRequest) => {\n const request = bff\n .get('/breedsOnHolding', {\n cancelToken,\n params: {\n cph,\n speciesId,\n onHoldingDate: onHoldingDate ? onHoldingDate : helpers.date.now()\n }\n });\n\n if (returnRequest) {\n return request;\n }\n\n request\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n breedsHelper.prepareBreedsOnHolding(res, speciesId);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n },\n\n getBreedId: (breedName) => {\n const allBreeds = storeService.session.get.breedsAll();\n if (!allBreeds) {\n return null;\n }\n const currentSpecies = storeService.session.get.species();\n if (!currentSpecies) {\n return null;\n }\n const matchedBreeds = allBreeds[currentSpecies.id];\n if (!matchedBreeds) {\n return null;\n }\n const breedObject = matchedBreeds.find((item) => item.name === breedName);\n return breedObject ? breedObject.id : null;\n },\n\n getBreedName: (breedId) => {\n const allBreeds = storeService.session.get.breedsAll();\n if (!allBreeds) {\n return constants.unknown;\n }\n const currentSpecies = storeService.session.get.species();\n if (!currentSpecies) {\n return constants.unknown;\n }\n const matchedBreeds = allBreeds[currentSpecies.id];\n if (!matchedBreeds) {\n return constants.unknown;\n }\n const breedObject = matchedBreeds.find((item) => String(item.id) === breedId || item.id === breedId);\n return breedObject?.name ?? constants.unknown;\n },\n\n getBreeds: (addUnknown, setPending) => {\n const currentSpecies = storeService.session.get.species();\n const breedsAll = storeService.session.get.breedsAll();\n\n if (breedsAll && currentSpecies && breedsAll[currentSpecies.id]) {\n if (addUnknown) {\n breedsAll[currentSpecies.id].unshift({\n value: String(null),\n name: breedsHelper.getBreedName(null),\n label: breedsHelper.getBreedName(null)\n });\n }\n\n if (setPending) {\n setPending(false);\n }\n\n return breedsAll[currentSpecies.id].map((item) => ({\n ...item,\n label: item.name,\n value: String(item.id)\n }));\n }\n\n if (setPending) {\n setPending(false);\n }\n\n return [];\n },\n\n getBreedsOnHolding: (data) => {\n const breeds = [];\n const unknownBreedsPresent = data.filter((animal) => !animal.breedId);\n\n data.forEach((animal) => {\n if (animal.breedId && !breeds.find((item) => item.value === String(animal.breedId))) {\n const breedName = breedsHelper.getBreedName(animal.breedId);\n\n breeds.push({\n value: String(animal.breedId),\n name: breedName,\n label: breedName\n });\n }\n });\n\n helpers.sortArrayOfObjects(breeds, 'name', constants.sorting.ascending);\n\n if (unknownBreedsPresent) {\n breeds.unshift({\n value: String(null),\n name: breedsHelper.getBreedName(null),\n label: breedsHelper.getBreedName(null)\n });\n }\n\n return breeds;\n },\n\n prepareBreedsOnHolding: (res, speciesId) => {\n let breedsOnHolding = res?.data?.data?.map((breed) => ({\n id: breedsHelper.getBreedId(breed.breedName),\n name: breed.breedName\n }));\n\n if (breedsOnHolding) {\n const unknownBreedOnHolding = breedsOnHolding.find((breed) => breed.name === constants.unknown);\n\n if (unknownBreedOnHolding) {\n breedsOnHolding = breedsOnHolding.filter((breed) => breed.name !== constants.unknown);\n breedsOnHolding.unshift(unknownBreedOnHolding);\n } else {\n const allBreeds = storeService.session.get.breedsAll();\n\n if (Object.keys(allBreeds).length > 0 && allBreeds[speciesId]) {\n const unknownBreed = allBreeds[speciesId].find((breed) => breed.name === constants.unknown);\n breedsOnHolding.unshift(unknownBreed);\n }\n }\n }\n\n storeService.session.set.breedsOnHolding(breedsOnHolding);\n },\n\n update: (species) => {\n const sessionSpecies = storeService.session.get.species();\n\n if (!sessionSpecies || (sessionSpecies && species.id !== sessionSpecies.id)) {\n if (species.name !== constants.species.id.UNKNOWN) {\n storeService.session.set.species(species);\n }\n }\n }\n};\n\nexport default breedsHelper;\n","import storeService from 'services/storeService';\nimport bff, { isCancel } from 'services/bff';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\n\nlet claConfig = null;\n\nconst configHelper = {\n fetchConfig: (setModal, setLoading) => {\n bff\n .get('/config')\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n const config = {};\n\n res.data.data.forEach((item) => {\n if (!config[item.speciesId]) {\n config[item.speciesId] = [];\n }\n\n config[item.speciesId].push(item);\n });\n\n Object.keys(config).forEach((speciesId) => helpers.sortArrayOfObjects(config[speciesId], 'requestTypeId', constants.sorting.ascending));\n claConfig = config;\n\n storeService.session.set.config(config);\n }\n\n setLoading((prevState) => ({\n ...prevState,\n config: false\n }));\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n },\n\n findValue: (speciesId, ruleKeyFunc, requestTypeIdFunc) => {\n const config = configHelper.get.config();\n\n if (speciesId && typeof speciesId === 'number' &&\n ruleKeyFunc && typeof ruleKeyFunc === 'function' &&\n requestTypeIdFunc && typeof requestTypeIdFunc === 'function' &&\n config && config[speciesId]) {\n const matched = config[speciesId].filter((item) =>\n ruleKeyFunc(item.ruleKey) && requestTypeIdFunc(item.requestTypeId)\n );\n if (matched?.length > 0) {\n return parseInt(matched[0].ruleValue);\n }\n }\n return 0;\n },\n\n get: {\n config: () => {\n if (!claConfig) {\n claConfig = storeService.session.get.config();\n }\n return claConfig;\n },\n\n offMoveMaxDays: (speciesId) => configHelper.findValue(\n speciesId,\n helpers.config.isOffMoveMaxDays,\n helpers.option.requestType.isMovement\n ),\n\n onMoveMaxDays: (speciesId) => configHelper.findValue(\n speciesId,\n helpers.config.isOnMoveMaxDays,\n helpers.option.requestType.isMovement\n )\n }\n};\n\nexport default configHelper;\n","import storeService from 'services/storeService';\nimport userRoleType from 'services/userRoleType';\n\nconst gatheringRoles = [\n userRoleType.ABATTOIR,\n userRoleType.AICENTRE,\n userRoleType.ASSEMBLY,\n userRoleType.COLLECTION,\n userRoleType.COMMON,\n userRoleType.GENERIC,\n userRoleType.MARKET,\n userRoleType.OTHER,\n userRoleType.PORT,\n userRoleType.QUARANTINE,\n userRoleType.SHOW,\n userRoleType.SLAUGHTERMARKET,\n userRoleType.STOREMARKET,\n userRoleType.VET\n];\n\nconst validateRoles = [\n userRoleType.ABATTOIR,\n userRoleType.AICENTRE,\n userRoleType.ASSEMBLY,\n userRoleType.BACKOFFICE,\n userRoleType.COLLECTION,\n userRoleType.COMMON,\n userRoleType.GENERIC,\n userRoleType.KEEPER,\n userRoleType.MARKET,\n userRoleType.OTHER,\n userRoleType.PORT,\n userRoleType.QUARANTINE,\n userRoleType.SHOW,\n userRoleType.SLAUGHTERMARKET,\n userRoleType.STOREMARKET,\n userRoleType.VET,\n userRoleType.RCVSVET\n];\n\nconst nonBORoles = [\n userRoleType.ABATTOIR,\n userRoleType.AICENTRE,\n userRoleType.ASSEMBLY,\n userRoleType.COLLECTION,\n userRoleType.COMMON,\n userRoleType.GENERIC,\n userRoleType.KEEPER,\n userRoleType.MARKET,\n userRoleType.OTHER,\n userRoleType.PORT,\n userRoleType.QUARANTINE,\n userRoleType.SHOW,\n userRoleType.SLAUGHTERMARKET,\n userRoleType.STOREMARKET,\n userRoleType.VET,\n userRoleType.RCVSVET\n];\n\nconst permissionsHelper = {\n gatheringRoles,\n isAbattoir: () => storeService.session.get.permissions() === userRoleType.ABATTOIR,\n isAICentre: () => storeService.session.get.permissions() === userRoleType.AICENTRE,\n isAssembly: () => storeService.session.get.permissions() === userRoleType.ASSEMBLY,\n isBackOffice: () => storeService.session.get.permissions() === userRoleType.BACKOFFICE,\n isCollection: () => storeService.session.get.permissions() === userRoleType.COLLECTION,\n isCommon: () => storeService.session.get.permissions() === userRoleType.COMMON,\n isGathering: () => gatheringRoles.includes(storeService.session.get.permissions()),\n isGeneric: () => storeService.session.get.permissions() === userRoleType.GENERIC,\n isKeeper: () => storeService.session.get.permissions() === userRoleType.KEEPER,\n isLoggedIn: () => validateRoles.includes(storeService.session.get.permissions()),\n isMarket: () => storeService.session.get.permissions() === userRoleType.MARKET,\n isOther: () => storeService.session.get.permissions() === userRoleType.OTHER,\n isPort: () => storeService.session.get.permissions() === userRoleType.PORT,\n isQuarantine: () => storeService.session.get.permissions() === userRoleType.QUARANTINE,\n isNonBO: () => nonBORoles.includes(storeService.session.get.permissions()),\n isShow: () => storeService.session.get.permissions() === userRoleType.SHOW,\n isSlaughterMarket: () => storeService.session.get.permissions() === userRoleType.SLAUGHTERMARKET,\n isStoreMarket: () => storeService.session.get.permissions() === userRoleType.STOREMARKET,\n isUserAllowed: (users) => users.includes(storeService.session.get.permissions()),\n isVet: () => storeService.session.get.permissions() === userRoleType.VET,\n isRCVSVet: () => storeService.session.get.permissions() === userRoleType.RCVSVET,\n nonBORoles,\n validateRoles\n};\n\nexport default permissionsHelper;\n","import { holdingHelper } from 'services/holdingHelper';\nimport bff, { isCancel } from 'services/bff';\nimport breedsHelper from 'services/breedsHelper';\nimport configHelper from 'services/configHelper';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport permissions from 'services/permissions';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport userRoleType from 'services/userRoleType';\n\nconst getRequestTypes = (setModal, setLoading) => {\n bff\n .get('/requestTypes')\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n storeService.session.set.requestTypes(res.data.data);\n }\n\n setLoading((prevState) => ({\n ...prevState,\n requestTypes: false\n }));\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n};\n\nconst getHoldingInfo = (setModal, setLoading, history) => {\n const processHoldings = (history, data) => {\n const holdings = {};\n\n data.forEach((holding) => {\n holdings[holding.value] = {\n ...holding,\n region: holdingHelper.findRegion(holding.value)\n };\n });\n\n storeService.session.set.holdings(holdings);\n if (permissions.isBackOffice()) {\n history.push(Routing.boMovements);\n } else {\n history.push(Routing.home);\n }\n };\n\n bff\n .get('/holdings')\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n processHoldings(history, res.data);\n }\n\n setLoading((prevState) => ({\n ...prevState,\n holdings: false\n }));\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n};\n\nconst initialise = (setModal, setLoading, history, role) => {\n if (role === userRoleType.RCVSVET) {\n history.push(Routing.vetPath);\n } else {\n setLoading({\n breeds: true,\n config: true,\n holdings: true,\n requestTypes: true\n });\n configHelper.fetchConfig(setModal, setLoading);\n breedsHelper.fetchBreeds(setModal, setLoading);\n if (role === userRoleType.GENERIC) {\n getHoldingInfo(setModal, setLoading, history);\n }\n getRequestTypes(setModal, setLoading);\n }\n};\n\nexport default initialise;\n","import Routing from 'routing';\nimport useRoleType from 'services/userRoleType';\nimport storeService from 'services/storeService';\n\nconst navMapping = {\n handshakeDetails: {\n [useRoleType.KEEPER]: Routing.keeperHandshakeDetails\n },\n holdings: {\n [useRoleType.ABATTOIR]: Routing.holdings,\n [useRoleType.AICENTRE]: Routing.holdings,\n [useRoleType.ASSEMBLY]: Routing.holdings,\n [useRoleType.COLLECTION]: Routing.holdings,\n [useRoleType.COMMON]: Routing.holdings,\n [useRoleType.GENERIC]: Routing.holdings,\n [useRoleType.KEEPER]: Routing.holdings,\n [useRoleType.MARKET]: Routing.holdings,\n [useRoleType.OTHER]: Routing.holdings,\n [useRoleType.PORT]: Routing.holdings,\n [useRoleType.QUARANTINE]: Routing.holdings,\n [useRoleType.SHOW]: Routing.holdings,\n [useRoleType.SLAUGHTERMARKET]: Routing.holdings,\n [useRoleType.STOREMARKET]: Routing.holdings,\n [useRoleType.VET]: Routing.holdings\n },\n home: {\n [useRoleType.ABATTOIR]: Routing.home,\n [useRoleType.AICENTRE]: Routing.home,\n [useRoleType.ASSEMBLY]: Routing.home,\n [useRoleType.BACKOFFICE]: Routing.boVerifyCustomer,\n [useRoleType.COLLECTION]: Routing.home,\n [useRoleType.COMMON]: Routing.home,\n [useRoleType.GENERIC]: Routing.home,\n [useRoleType.KEEPER]: Routing.home,\n [useRoleType.MARKET]: Routing.home,\n [useRoleType.OTHER]: Routing.home,\n [useRoleType.PORT]: Routing.home,\n [useRoleType.QUARANTINE]: Routing.home,\n [useRoleType.SHOW]: Routing.home,\n [useRoleType.SLAUGHTERMARKET]: Routing.home,\n [useRoleType.STOREMARKET]: Routing.home,\n [useRoleType.VET]: Routing.home\n },\n movements: {\n [useRoleType.ABATTOIR]: Routing.abattoirMovements,\n [useRoleType.AICENTRE]: Routing.aiCentreMovements,\n [useRoleType.ASSEMBLY]: Routing.assemblyMovements,\n [useRoleType.BACKOFFICE]: Routing.boMovements,\n [useRoleType.COLLECTION]: Routing.collectionMovements,\n [useRoleType.COMMON]: Routing.commonMovements,\n [useRoleType.KEEPER]: Routing.movements,\n [useRoleType.MARKET]: Routing.marketMovements,\n [useRoleType.OTHER]: Routing.otherMovements,\n [useRoleType.PORT]: Routing.portMovements,\n [useRoleType.QUARANTINE]: Routing.quarantineMovements,\n [useRoleType.SHOW]: Routing.showMovements,\n [useRoleType.SLAUGHTERMARKET]: Routing.slaughterMarketMovements,\n [useRoleType.STOREMARKET]: Routing.storeMarketMovements,\n [useRoleType.VET]: Routing.vetMovements\n },\n abattoirAttestation: {\n [useRoleType.ABATTOIR]: Routing.abattoirAttestation\n },\n movementConfirm: {\n [useRoleType.ABATTOIR]: Routing.abattoirMovementConfirm,\n [useRoleType.AICENTRE]: Routing.aiCentreMovementConfirm,\n [useRoleType.ASSEMBLY]: Routing.assemblyMovementConfirm,\n [useRoleType.BACKOFFICE]: Routing.boMovementsConfirm,\n [useRoleType.COLLECTION]: Routing.collectionMovementConfirm,\n [useRoleType.COMMON]: Routing.commonMovementConfirm,\n [useRoleType.MARKET]: Routing.marketMovementConfirm,\n [useRoleType.OTHER]: Routing.otherMovementConfirm,\n [useRoleType.PORT]: Routing.portMovementConfirm,\n [useRoleType.QUARANTINE]: Routing.quarantineMovementConfirm,\n [useRoleType.SHOW]: Routing.showMovementConfirm,\n [useRoleType.SLAUGHTERMARKET]: Routing.slaughterMarketMovementConfirm,\n [useRoleType.STOREMARKET]: Routing.storeMarketMovementConfirm,\n [useRoleType.VET]: Routing.vetMovementConfirm\n },\n movementDetails: {\n [useRoleType.ABATTOIR]: Routing.abattoirMovementDetails,\n [useRoleType.AICENTRE]: Routing.aiCentreMovementDetails,\n [useRoleType.ASSEMBLY]: Routing.assemblyMovementDetails,\n [useRoleType.BACKOFFICE]: Routing.boMovementDetails,\n [useRoleType.COLLECTION]: Routing.collectionMovementDetails,\n [useRoleType.COMMON]: Routing.commonMovementDetails,\n [useRoleType.MARKET]: Routing.marketMovementDetails,\n [useRoleType.OTHER]: Routing.otherMovementDetails,\n [useRoleType.PORT]: Routing.portMovementDetails,\n [useRoleType.QUARANTINE]: Routing.quarantineMovementDetails,\n [useRoleType.SHOW]: Routing.showMovementDetails,\n [useRoleType.SLAUGHTERMARKET]: Routing.slaughterMarketMovementDetails,\n [useRoleType.STOREMARKET]: Routing.storeMarketMovementDetails,\n [useRoleType.VET]: Routing.vetMovementDetails\n },\n paperDetails: {\n [useRoleType.BACKOFFICE]: Routing.boMovements\n },\n search: {\n [useRoleType.ABATTOIR]: Routing.abattoirSearch,\n [useRoleType.AICENTRE]: Routing.aiCentreSearch,\n [useRoleType.ASSEMBLY]: Routing.assemblySearch,\n [useRoleType.BACKOFFICE]: Routing.boSearchMovements,\n [useRoleType.COLLECTION]: Routing.collectionSearch,\n [useRoleType.COMMON]: Routing.commonSearch,\n [useRoleType.MARKET]: Routing.marketSearch,\n [useRoleType.OTHER]: Routing.otherSearch,\n [useRoleType.PORT]: Routing.portSearch,\n [useRoleType.QUARANTINE]: Routing.quarantineSearch,\n [useRoleType.SHOW]: Routing.showSearch,\n [useRoleType.SLAUGHTERMARKET]: Routing.slaughterMarketSearch,\n [useRoleType.STOREMARKET]: Routing.storeMarketSearch,\n [useRoleType.VET]: Routing.vetSearch\n },\n userActivity: {\n [useRoleType.ABATTOIR]: Routing.userActivity,\n [useRoleType.AICENTRE]: Routing.userActivity,\n [useRoleType.ASSEMBLY]: Routing.userActivity,\n [useRoleType.COLLECTION]: Routing.userActivity,\n [useRoleType.COMMON]: Routing.userActivity,\n [useRoleType.GENERIC]: Routing.userActivity,\n [useRoleType.KEEPER]: Routing.userActivity,\n [useRoleType.MARKET]: Routing.userActivity,\n [useRoleType.OTHER]: Routing.userActivity,\n [useRoleType.PORT]: Routing.userActivity,\n [useRoleType.QUARANTINE]: Routing.userActivity,\n [useRoleType.SHOW]: Routing.userActivity,\n [useRoleType.SLAUGHTERMARKET]: Routing.userActivity,\n [useRoleType.STOREMARKET]: Routing.userActivity,\n [useRoleType.VET]: Routing.userActivity\n }\n};\n\nconst searchMapping = {\n [useRoleType.ABATTOIR]: Routing.abattoirSearch,\n [useRoleType.AICENTRE]: Routing.aiCentreSearch,\n [useRoleType.ASSEMBLY]: Routing.assemblySearch,\n [useRoleType.COLLECTION]: Routing.collectionSearch,\n [useRoleType.COMMON]: Routing.commonSearch,\n [useRoleType.MARKET]: Routing.marketSearch,\n [useRoleType.OTHER]: Routing.otherSearch,\n [useRoleType.PORT]: Routing.portSearch,\n [useRoleType.QUARANTINE]: Routing.quarantineSearch,\n [useRoleType.SHOW]: Routing.showSearch,\n [useRoleType.SLAUGHTERMARKET]: Routing.slaughterMarketSearch,\n [useRoleType.STOREMARKET]: Routing.storeMarketSearch,\n [useRoleType.VET]: Routing.vetSearch\n};\n\nconst lookupHome = (menuType) => {\n const storedPermissions = storeService.session.get.permissions();\n\n const matchedType = navMapping[menuType];\n return matchedType ? matchedType[storedPermissions] : null;\n};\n\nconst lookupMenu = (menuType, id) => {\n const holding = storeService.session.get.holding();\n const holdingRole = holding ? holding.role : null;\n const storedPermissions = holdingRole ? holdingRole : storeService.session.get.permissions();\n\n const matchedType = navMapping[menuType];\n const routing = matchedType ? matchedType[storedPermissions] : null;\n const extraParam = id ? id : '';\n return routing ? routing + extraParam : '';\n};\n\nconst navigation = {\n handshakeDetails: () => lookupMenu('handshakeDetails'),\n\n holdings: () => lookupMenu('holdings'),\n\n home: () => lookupHome('home'),\n\n movements: () => lookupMenu('movements'),\n\n abattoirAttestation: () => lookupMenu('abattoirAttestation'),\n\n movementConfirm: () => lookupMenu('movementConfirm'),\n\n movementDetails: (id) => lookupMenu('movementDetails', id),\n\n paperDetails: (id) => lookupMenu('paperDetails', id),\n\n search: () => lookupMenu('search'),\n\n userActivity: () => lookupMenu('userActivity'),\n\n getSearchURL: (roleToCheck) => {\n const search = navigation.search();\n if (search === undefined || !search) {\n return searchMapping[roleToCheck] ?? Routing.home;\n }\n return search;\n }\n};\n\nexport default navigation;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport axios from 'axios';\nimport bff, { isCancel } from 'services/bff';\nimport classes from 'components/address/address.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport he from 'he';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\n\nconst Address = ({\n addPadding,\n cph,\n displayCPH,\n format,\n isManual,\n queryKeeper,\n setAddressPending,\n setModal,\n setSearchedHolding,\n storeIn,\n updateAddressInStore\n}) => {\n const { ready, t } = useTranslation();\n\n const [address, setAddress] = React.useState(null);\n const [name, setName] = React.useState(null);\n const [type, setType] = React.useState(null);\n const [pending, setPending] = React.useState(false);\n\n const setData = React.useCallback((inValue) => {\n const display = {\n address: (inData) => {\n if (typeof inData === 'object') {\n delete inData.holdingType;\n delete inData.holdingTypeId;\n delete inData.id;\n\n if (helpers.address.isShort(format?.address)) {\n setAddress(helpers.address.format.addressShort(inData));\n } else if (helpers.address.isLine(format?.address) || helpers.address.isInline(format?.address)) {\n setAddress(helpers.address.format.addressLine(inData));\n } else if (helpers.address.isOnlyAddress(format?.address)) {\n setAddress(helpers.address.format.addressWithoutHoldingName(inData));\n } else if (helpers.address.isKeeper(format?.address)) {\n setAddress(helpers.address.format.addressKeeper(inData.keeper));\n } else if (inValue === constants.address.status.FOUND_WITHOUT_ADDRESS) {\n setAddress('');\n } else {\n setAddress(helpers.address.format.addressFull(inData));\n }\n } else if (inValue === constants.address.status.FOUND_WITHOUT_ADDRESS) {\n setAddress([t(constants.address.status.FOUND_WITHOUT_ADDRESS)]);\n } else if (inValue === constants.address.status.NOT_FOUND) {\n setAddress([t(constants.address.status.NOT_FOUND)]);\n } else {\n setAddress([inData]);\n }\n },\n name: (inData) => setName(typeof inData === 'object' ? helpers.address.format.nameFull(inData) : inData),\n type: (inData) => setType(typeof inData === 'object' ? helpers.address.format.typeFull(inData) : inData)\n };\n\n const otherData = helpers.address.format.addressOnly(inValue) ? '' : inValue;\n\n display.name(format?.name && !helpers.address.isNone(format.name) ? otherData : '');\n display.type(format?.type && !helpers.address.isNone(format.type) ? otherData : '');\n display.address(format?.address && !helpers.address.isNone(format.address) ? inValue : '');\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [format]);\n\n useEffect(() => {\n let isOwnHolding = false;\n\n const saveHoldingAddress = (responseData, isOwnHolding, currentCPH) => {\n const sessionHoldings = storeService.session.get.holdings();\n if (isOwnHolding) {\n const holding = {\n ...sessionHoldings[currentCPH],\n address: responseData\n };\n storeService.session.set.holdings(holding, currentCPH);\n }\n };\n\n const fetchHoldingDetails = (currentCPH, source) => {\n bff\n .get('/holdingDetails', {\n cancelToken: source.token,\n params: {\n cph: currentCPH,\n queryKeeper\n }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setPending)) {\n const resData = res.data.data[0];\n\n if (res.data.error !== constants.error.addressMessage) {\n const hasAddress = resData.address1 || resData.address2 || resData.county || resData.postCode || resData.propertyName || resData.town;\n\n if (hasAddress) {\n setData(resData);\n saveHoldingAddress(resData, isOwnHolding, currentCPH);\n } else {\n setData(resData);\n }\n } else {\n setData(constants.address.status.NOT_FOUND);\n }\n\n if (updateAddressInStore && resData) {\n updateAddressInStore(currentCPH, resData);\n }\n\n if (setAddressPending) {\n setAddressPending(false);\n }\n\n if (setSearchedHolding) {\n setSearchedHolding({\n value: currentCPH,\n address: resData\n });\n }\n\n if (storeIn) {\n storeService.session.set[storeIn](resData);\n }\n }\n\n setPending(false);\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setPending(false);\n setData(constants.address.status.ERROR);\n errors.BFF(error, setModal);\n }\n });\n };\n\n const checkAddressInSessionStorage = (currentCPH, source) => {\n if (currentCPH?.length > 0) {\n setPending(true);\n }\n const holdings = storeService.session.get.holdings();\n const holdingOther = storeService.session.get.movementOtherHolding() || storeService.session.get.deathOtherHolding();\n let holding = {};\n\n if (holdings && holdings[currentCPH]) {\n holding = holdings[currentCPH];\n isOwnHolding = true;\n } else if (holdingOther && holdingOther.value === currentCPH) {\n holding = holdingOther;\n }\n\n if (holding.address) {\n setData(holding.address);\n if (setAddressPending) {\n setAddressPending(false);\n }\n if (setSearchedHolding) {\n setSearchedHolding({\n value: currentCPH,\n address: holding.address\n });\n }\n setPending(false);\n } else {\n fetchHoldingDetails(currentCPH, source);\n }\n };\n\n const source = axios.CancelToken.source();\n\n if (!cph || cph.length === 0) {\n setPending(false);\n setAddress(null);\n setName(null);\n setType(null);\n }\n\n if (!isManual && cph && cph.length >= config.LENGTH_HOLDING_CPH) {\n checkAddressInSessionStorage(cph, source);\n } else {\n setAddress([constants.address.status.NOT_FOUND]);\n setName(null);\n setType(null);\n setData('');\n }\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cph]);\n\n return (\n <>\n {ready &&\n <>\n {displayCPH &&\n <>\n {cph}\n {!isManual ? ' - ' : ''}\n \n }\n\n {pending && !isManual &&\n <>\n {helpers.address.isInline(format?.address) &&\n {t(constants.address.status.FETCH)}\n }\n {!helpers.address.isInline(format?.address) &&\n

{t(constants.address.status.FETCH)}

\n }\n \n }\n\n {!pending && !isManual &&\n <>\n {type?.length > 0 &&\n

{t(type)}

\n }\n {name?.length > 0 && name !== 'null' && !helpers.address.isStatusError1(name) &&\n

{t(name)}

\n }\n\n {address?.length > 0 && address[0] !== '' &&\n <>\n {helpers.address.withErrorAddress(address[0]) &&\n <>\n {helpers.address.isInline(format?.address) &&\n
{t(address[0])}
\n }\n {!helpers.address.isInline(format?.address) &&\n {t(address[0])}\n }\n \n }\n\n {helpers.address.withAddress(address[0]) &&\n <>\n {helpers.address.isInline(format?.address) &&\n
{address[0] ? he.decode(address[0].trim()) : ''}
\n }\n {!helpers.address.isInline(format?.address) &&\n <>\n {address.map((line, index) => (\n
{line ? he.decode(line) : ''}
\n ))}\n \n }\n \n }\n \n }\n \n }\n \n }\n \n );\n};\n\nAddress.propTypes = {\n addPadding: PropTypes.bool,\n cph: PropTypes.string,\n displayCPH: PropTypes.bool,\n format: PropTypes.exact({\n address: PropTypes.oneOf([\n constants.address.format.full,\n constants.address.format.short,\n constants.address.format.line,\n constants.address.format.inline,\n constants.address.format.none,\n constants.address.format.keeper,\n constants.address.format.onlyAddress\n ]),\n name: PropTypes.oneOf([\n constants.address.format.full,\n constants.address.format.inline,\n constants.address.format.none\n ]),\n type: PropTypes.oneOf([\n constants.address.format.full,\n constants.address.format.none\n ])\n }),\n isManual: PropTypes.bool,\n queryKeeper: PropTypes.bool,\n setAddressPending: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n setSearchedHolding: PropTypes.func,\n storeIn: PropTypes.string,\n updateAddressInStore: PropTypes.func\n};\n\nexport default Address;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/base/errorLabel/errorLabel.module.scss';\nimport helpers from 'services/helpers';\n\nconst ErrorLabel = ({\n classNames,\n extraContent,\n isSuccess,\n isWarning,\n label,\n modalMessage,\n modalTitle,\n setModal\n}) => {\n const { ready, t } = useTranslation();\n\n // Dirty fix as a colon in the string causes everything before the colon to be lost\n const checkColon = label && typeof label === 'string' ? label.split(':') : [];\n const outputLabel = checkColon.length > 1 ? label : t(label);\n\n const componentClassNames = [\n classes.error,\n classes.message,\n isWarning ? classes.warning : '',\n isSuccess ? classes.success : '',\n ...(classNames ? classNames.map((className) => classes[className]) : [])\n ].join(' ').trim();\n\n return (\n <>\n {ready && outputLabel &&\n <>\n {!setModal &&\n
\n \n
\n }\n\n {setModal &&\n \n

\n {helpers.text.getContentsLink(\n t,\n outputLabel,\n () => setModal({\n classNames: ['wide'],\n modalTitle: modalTitle,\n modalMessage: modalMessage\n })\n )}\n

\n
\n }\n \n }\n \n );\n};\n\nErrorLabel.propTypes = {\n classNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n extraContent: PropTypes.string,\n isSuccess: PropTypes.bool,\n isWarning: PropTypes.bool,\n label: PropTypes.string,\n modalMessage: PropTypes.string,\n modalTitle: PropTypes.string,\n setModal: PropTypes.func\n};\n\nexport default ErrorLabel;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/summary/addressSummary/addressSummary.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Address from 'components/address/address';\nimport Button from 'components/base/button/button';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\n\nconst AddressSummary = ({\n address1,\n address2,\n blockLayout,\n info1,\n info2,\n info3,\n isGathering,\n isManual,\n isPermitMove,\n label,\n label1,\n label2,\n label3,\n onClick,\n queryKeeper,\n setAddress1,\n setAddress2,\n setModal,\n storeIn1,\n storeIn2\n}) => {\n const { ready, t } = useTranslation();\n\n return (\n <>\n {ready &&\n
\n {label && blockLayout &&\n
{t(label)}
\n }\n
\n {label && !blockLayout &&\n
{t(label)}
\n }\n
\n {label1 &&\n {t(label1)}\n }\n {helpers.address.isUnknown(info1) &&\n {t('label.notSpecified')}\n }\n {!helpers.address.isUnknown(info1) &&\n <>\n {isGathering &&\n <>\n {address1?.address?.message &&\n \n }\n {!address1?.address?.message &&\n <>\n {info1}\n {!isManual &&\n \n }\n \n }\n \n }\n {!isGathering &&\n <>\n {info1}\n {!isManual &&\n \n }\n \n }\n \n }\n
\n\n {label2 && info2 &&\n
\n {t(label2)}\n {helpers.address.isUnknown(info2) &&\n {t('label.notSpecified')}\n }\n {!helpers.address.isUnknown(info2) &&\n <>\n {isGathering &&\n <>\n {address2?.address?.message &&\n \n }\n {!address2?.address?.message &&\n <>\n {info2}\n \n \n }\n \n }\n {!isGathering &&\n <>\n {info2}\n {!isPermitMove &&\n \n }\n \n }\n \n }\n
\n }\n\n {label3 && info3 &&\n
\n {t(label3)}\n {t(info3)}\n
\n }\n\n {onClick &&\n
\n {blockLayout &&\n \n }\n {!blockLayout &&\n \n }\n
\n }\n
\n
\n }\n \n );\n};\n\nAddressSummary.propTypes = {\n address1: PropTypes.object,\n address2: PropTypes.object,\n blockLayout: PropTypes.bool,\n info1: PropTypes.string,\n info2: PropTypes.string,\n isGathering: PropTypes.bool,\n isManual: PropTypes.bool,\n isPermitMove: PropTypes.bool,\n label: PropTypes.string,\n label1: PropTypes.string,\n label2: PropTypes.string,\n onClick: PropTypes.func,\n queryKeeper: PropTypes.bool,\n setAddress1: PropTypes.func,\n setAddress2: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n storeIn1: PropTypes.string,\n storeIn2: PropTypes.string\n};\n\nexport default AddressSummary;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/base/tooltip/tooltip.module.scss';\nimport iconTooltip from 'images/svg/icon-help.svg';\nimport featureToggles from 'services/featureToggles';\n\nconst Tooltip = ({\n tooltip,\n tooltipPosition\n}) => {\n const { ready, t } = useTranslation();\n\n const [showTooltip, setTooltip] = React.useState(false);\n\n useEffect(() => {\n document.addEventListener('mousedown', () => {\n setTooltip(false);\n });\n });\n\n const toggleTooltip = () => {\n setTooltip(!showTooltip);\n };\n\n const componentClassNames = [\n classes.tooltip,\n tooltipPosition ? classes[tooltipPosition] : ''\n ].join(' ').trim();\n\n return (\n <>\n {ready && tooltip &&\n <>\n {featureToggles.isEnabled(featureToggles.toggles.accessibilityTooltipsKeyboardFocus) &&\n
\n \n
\n
\n }\n {!featureToggles.isEnabled(featureToggles.toggles.accessibilityTooltipsKeyboardFocus) &&\n
\n {t('label.help')}\n
\n
\n }\n \n }\n \n );\n};\n\nTooltip.propTypes = {\n tooltip: PropTypes.string.isRequired,\n tooltipPosition: PropTypes.string\n};\n\nexport default Tooltip;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/base/legend/legend.module.scss';\nimport PropTypes from 'prop-types';\nimport Tooltip from 'components/base/tooltip/tooltip';\n\nconst Legend = ({\n classNames,\n disabled,\n legend,\n optional,\n tooltip,\n tooltipPosition\n}) => {\n const { ready, t } = useTranslation();\n\n const outputLegend = t(legend);\n\n const componentClassNames = [\n classes.legend,\n disabled ? classes.disabled : '',\n ...(classNames ? classNames.map((className) => classes[className]) : [])\n ].join(' ').trim();\n\n return (\n <>\n {ready && outputLegend &&\n \n {outputLegend}\n {optional &&\n <>\n {' '}{t('label.optional')}\n \n }\n {tooltip &&\n \n }\n \n }\n \n );\n};\n\nLegend.propTypes = {\n classNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n disabled: PropTypes.bool,\n legend: PropTypes.string,\n optional: PropTypes.bool,\n tooltip: PropTypes.string,\n tooltipPosition: PropTypes.string\n};\n\nexport default Legend;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/base/checkbox/checkbox.module.scss';\nimport Legend from 'components/base/legend/legend';\nimport Tooltip from 'components/base/tooltip/tooltip';\n\nconst Checkbox = ({\n checkboxClassNames,\n disabled,\n id,\n inline,\n isChecked,\n label,\n legend,\n name,\n onChange,\n tooltip,\n value\n}) => {\n const { ready, t } = useTranslation();\n\n const componentClassNames = [\n classes.checkbox,\n disabled ? classes.disabled : '',\n inline ? classes.inline : ''\n ].join(' ').trim();\n\n const checkboxClasses = [\n classes.checkmark,\n ...(checkboxClassNames ? checkboxClassNames.map((className) => classes[className]) : [])\n ].join(' ').trim();\n\n return (\n <>\n {ready &&\n <>\n {legend &&\n \n }\n\n
\n \n\n {tooltip &&\n \n }\n
\n \n }\n \n );\n};\n\nCheckbox.propTypes = {\n checkboxClassNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n disabled: PropTypes.bool,\n id: PropTypes.string.isRequired,\n inline: PropTypes.bool,\n isChecked: PropTypes.bool,\n label: PropTypes.string.isRequired,\n legend: PropTypes.string,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n tooltip: PropTypes.string,\n value: PropTypes.bool\n};\n\nexport default Checkbox;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/base/linker/linker.module.scss';\n\nconst Linker = ({\n ariaLabel,\n disabled,\n label,\n linkType,\n onClick,\n state,\n to\n}) => {\n const { ready, t } = useTranslation();\n\n const componentClassNames = [\n linkType && linkType === 'back' ? classes.backLink : '',\n linkType && linkType !== 'back' ? classes[linkType] : '',\n !linkType || (linkType && linkType !== 'back') ? classes.link : ''\n ].join(' ').trim();\n\n return (\n <>\n {ready &&\n \n {linkType === 'back' &&\n \n }\n {t(label)}\n \n }\n \n );\n};\n\nLinker.propTypes = {\n ariaLabel: PropTypes.string,\n disabled: PropTypes.bool,\n label: PropTypes.string,\n linkType: PropTypes.string,\n onClick: PropTypes.func,\n state: PropTypes.exact({\n data: PropTypes.any\n }),\n to: PropTypes.string\n};\n\nexport default Linker;\n","import bff from 'services/bff';\nimport axios from 'axios';\n\nconst vetModuleHelper = {\n fetchVetDetails: (cphNo, isOnlyValidattestation) => {\n const source = axios.CancelToken.source();\n const api = '/getVetAttestationsDetails';\n return bff\n .get(api, {\n cancelToken: source.token,\n params: {\n cphNo,\n showOnlyValidAttestation: isOnlyValidattestation\n }\n });\n },\n fetchAbattoirVetAttestationList: (species, deviceIdentifiers) => {\n const source = axios.CancelToken.source();\n const api = '/speciesIdAndDeviceIdentifiers';\n return bff\n .get(api, {\n cancelToken: source.token,\n params: {\n species,\n deviceIdentifiers\n }\n });\n },\n fetchVetDetailsForDigitalForm: (dfCphNo, dfMoveDate) => {\n const dfSource = axios.CancelToken.source();\n const dfApi = '/getVetAttestationsDetails';\n return bff\n .get(dfApi, {\n cancelToken: dfSource.token,\n params: {\n cphNo: dfCphNo,\n moveDate: dfMoveDate\n }\n });\n }\n};\n\nexport default vetModuleHelper;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Page, Text, View, Document, StyleSheet, Image } from '@react-pdf/renderer';\nimport BackgroundPage1 from 'templates/page1.png';\nimport BackgroundPage2 from 'templates/page2.png';\nimport SuplimentaryForm from 'templates/suplimentary_form.png';\nimport SuplimentaryFormLast from 'templates/suplimentary_form_last.png';\nimport FciAnimalForm from 'templates/fci_animals_form.png';\nimport FciAnimalFormLast from 'templates/fci_animals_form_last.png';\n\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nconst sprintf = require('util').format;\nconst MAX_FIELD_WIDTH = 25;\nconst pdfProperties = {\n page: {\n flexDirection: 'column',\n fontSize: '11px'\n },\n row: {\n flexGrow: 1\n },\n line: {\n flexDirection: 'row',\n margin: 3,\n padding: 2\n },\n section: {\n flexDirection: 'row',\n margin: 6,\n padding: 3,\n flexGrow: 1,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: 'black'\n },\n section2: {\n margin: 6,\n padding: 3,\n flexGrow: 1,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: 'black'\n },\n image: {\n margin: 0,\n padding: 0,\n top: 0,\n left: 0\n },\n exemptions: {\n border: '1px solid red',\n position: 'absolute',\n fontSize: '10px',\n fontWeight: 'bold',\n left: '555px',\n height: '14px',\n width: '14px'\n },\n exemptionsText: {\n position: 'absolute',\n fontSize: '10px',\n fontWeight: 'bold',\n left: '315px',\n width: '225px',\n wordWrap: 'normal',\n textAlign: 'right'\n },\n departDetailSection: {\n position: 'absolute',\n top: '285px',\n width: '47%',\n left: '50%',\n height: '250px'\n },\n departureLocation: {\n position: 'absolute',\n top: '70px',\n width: '100%',\n height: '435px'\n },\n processingData: {\n position: 'absolute',\n top: '122px',\n width: '46%',\n left: '51%',\n height: '163px'\n },\n vetAttestationDetails: {\n position: 'absolute',\n top: '260px',\n width: '100%',\n height: '100px'\n },\n transportDetail: {\n position: 'absolute',\n top: '536px',\n width: '100%',\n height: '110px'\n },\n receivingLocation: {\n position: 'absolute',\n top: '645px',\n width: '100%',\n height: '160px'\n },\n withdrawlPeriodSection: {\n position: 'absolute',\n top: '612px',\n width: '100%',\n height: '85px'\n },\n fciDetail: {\n position: 'absolute',\n top: '435px',\n width: '100%',\n height: '200px'\n },\n extraSheetDetails: {\n position: 'absolute',\n top: '80px',\n width: '100%',\n height: '85px'\n },\n extraSheetTable: {\n left: '10px',\n width: '95%',\n border: '1px solid darkGrey'\n },\n addressToSendTo: {\n position: 'absolute',\n top: '780px',\n left: '28px',\n width: '90%'\n },\n fciPage: {\n flexDirection: 'column',\n fontSize: '11px',\n position: 'relative',\n top: 0\n },\n pageBackground: {\n margin: 0,\n padding: 0,\n top: 0,\n left: 0,\n position: 'absolute',\n width: '100%',\n height: 'auto'\n },\n supplimentaryFormRow: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n width: '535px',\n left: '30px',\n top: '203px'\n },\n supplimentaryFormColumn: {\n justifyContent: 'center',\n padding: '3px 0px 3px 5px',\n width: '25%',\n fontSize: '9px'\n },\n supplimentaryFormColumnTitle: {\n justifyContent: 'center',\n padding: '4px 0px 4px 5px',\n margin: '0px 0px 2px 0px',\n width: '100%',\n fontSize: '9px',\n backgroundColor: 'grey',\n color: '#FFF'\n },\n fciAnimalRow: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n width: '90%',\n left: '30px',\n top: '170px'\n },\n\n fciAnimalColumn: {\n justifyContent: 'center',\n padding: '3px 0px 3px 5px',\n width: '25%',\n fontSize: '9px'\n }\n};\n\nconst MovementDocumentPDF = ({\n attestationRecord,\n data\n}) => {\n const { ready, t } = useTranslation();\n const { processingFlags = {} } = data || {};\n const { all: processingData = [] } = processingFlags || {};\n const { holding = '', vetAttestationExpiryDate = '', vetAttestationStatus = '', vetRCVS = '' } = attestationRecord || {};\n const expDate = vetAttestationExpiryDate ? moment(vetAttestationExpiryDate).format('MMYY') : vetAttestationExpiryDate;\n const { movementDocument } = data;\n const { transportDetail } = movementDocument;\n const departureDetail = movementDocument ? movementDocument.departureDetail : null;\n const transporterType = transportDetail && transportDetail.transporterType ? transportDetail.transporterType : null;\n const styles = StyleSheet.create(pdfProperties);\n const tagOutput = (batchNumber, individualNumber, from, to, addComma) => sprintf('%s %s%s%s', batchNumber, individualNumber, from !== to ? '-' + to : '', addComma ? ',' : '');\n // trimming the given word to specified length & concatenating '...' string\n const truncateField = (inputText) => (inputText && (inputText.length > MAX_FIELD_WIDTH)) ? inputText.slice(0, MAX_FIELD_WIDTH - 2) + '...' : inputText;\n const getTagList = (deviceList) => {\n let tagList = [];\n let results = [];\n let batchNumber = '';\n let individualNumber = '';\n let activeNo1 = 0;\n let activeNo2 = 0;\n\n for (const device of deviceList) {\n tagList.push(device.tagNumber);\n }\n tagList = helpers.sortTags(tagList);\n for (const tagItem of tagList) {\n const rec = tagItem.split(' ');\n\n if (rec.length > 1) {\n const tempIndividualNumber = Number(rec[1]);\n if (batchNumber !== rec[0] || (activeNo2 + 1) !== tempIndividualNumber) {\n if (batchNumber.length > 0) {\n results.push(tagOutput(batchNumber, individualNumber, activeNo1, activeNo2, false));\n }\n batchNumber = rec[0];\n individualNumber = rec[1];\n activeNo1 = tempIndividualNumber;\n }\n activeNo2 = tempIndividualNumber;\n } else {\n results.push(tagItem);\n }\n }\n results.push(tagOutput(batchNumber, individualNumber, activeNo1, activeNo2, false));\n // Filtering the result for empty value\n results = results.filter((item) => item !== ' ');\n\n // Concatenating ',' value at the end and ignoring last value.\n results = results.map((item, index) => {\n if (index !== results.length - 1) {\n return item + ', ';\n }\n return item;\n });\n\n return results;\n };\n\n const render = {\n pdfFooter: () => (\n <>\n \n {t('label.movementRef') + ' : ' + data.documentRef + ' (' + data.species + ')'}\n \n \n {/* Page {page} of {totalPages} */}\n (`Page ${pageNumber} of ${totalPages}`)} />\n \n \n )\n };\n\n //--- PAGE 1 DATA & FIELDS ---//\n const getFciCheckbox = (fciData) => {\n if (!fciData || fciData.isAllAnimalsFciCompliant === null) {\n return null;\n }\n const style = fciData.isAllAnimalsFciCompliant\n ? { position: 'absolute', top: '446px', left: '270px', fontSize: '9px' }\n : { position: 'absolute', top: '501px', left: '270px', fontSize: '9px' };\n return (\n \n X\n \n );\n };\n\n const getTransportTypeCheckout = () => {\n let transportTypeStyle;\n switch (transporterType) {\n case constants.transporter.departureKeeper:\n transportTypeStyle = { position: 'absolute', top: '23px', left: '384px', fontSize: '9px' };\n break;\n\n case constants.transporter.destinationKeeper:\n transportTypeStyle = { position: 'absolute', top: '23px', left: '492px', fontSize: '9px' };\n break;\n\n case constants.transporter.haulier:\n transportTypeStyle = { position: 'absolute', top: '23px', left: '563px', fontSize: '9px' };\n break;\n\n default:\n return null;\n }\n return (\n \n X\n \n );\n };\n\n const getWithdrawlPeriod = (withdrawlType) => {\n switch (withdrawlType) {\n case 'Withdrawal periods have been met':\n return \n {'X'}\n ;\n\n case 'Withdrawal periods are not relevant to this movement':\n return \n {'X'}\n ;\n\n case 'Withdrawal periods have not been met':\n return \n {withdrawlType}\n ;\n\n default:\n return null;\n }\n };\n\n const strikeFromOrTo = (flagData, flagId1, flagId2, flagId3, flagId4, flagId5, flagId6) => {\n const bothValues = flagData.filter((item) => ((item.id === flagId1)) && item.value === true);\n const toValues = flagData.filter((item) => ((item.id === flagId2) || (item.id === flagId3)) && item.value === true);\n const fromValues = flagData.filter((item) => ((item.id === flagId4) || (item.id === flagId5) || (item.id === flagId6)) && item.value === true);\n if (bothValues.length > 0) {\n return '';\n } else if (toValues.length > 0 && fromValues.length === 0) {\n return \n {''}\n ;\n } else if (toValues.length === 0 && fromValues.length > 0) {\n return \n {''}\n ;\n }\n return '';\n\n };\n\n const haulageCompanyIgnoreList = ['Departure keeper', 'Receiving keeper'];\n const getHaulierCompanyName = (haulierName) => {\n if (!haulierName) {\n return haulierName;\n }\n const matchedName = haulageCompanyIgnoreList.filter((name) => name === haulierName.substr(0, name.length));\n return matchedName.length > 0 ? '' : haulierName;\n };\n\n const setDepartTime = (inValue) => {\n if (!inValue) {\n return '';\n }\n const arr = inValue.split('+')[0].split('T')[1].split(':');\n if (arr[0] === '00' && arr[1] === '00') {\n return '';\n }\n return arr[0] + arr[1] ?? ' ';\n };\n\n const displayDataInCells = (value) => value.map((item, index) => {\n return {item};\n });\n\n const displayDataInCellsWithVariation = (value) => value.map((item, index) => {\n return {item};\n });\n\n let haulierCompanyName = '';\n let loadingTime = '';\n let timeOfDepature = '';\n let expectedDuration = '';\n let timeFirstAnimlLoaded = '';\n if (transportDetail && transportDetail.recordTransportInformation !== constants.option.recordTransportInformation.no) {\n haulierCompanyName = getHaulierCompanyName(transportDetail.transportHaulierName);\n haulierCompanyName = truncateField(haulierCompanyName);\n if (departureDetail) {\n loadingTime = departureDetail.loadingDateTime ? moment(departureDetail.loadingDateTime).format('DD/MM/YY').split('/').join('') : '';\n timeFirstAnimlLoaded = departureDetail.loadingDateTime ? moment(departureDetail.loadingDateTime).format('HH:mm').split(':').join('') : '';\n timeOfDepature = setDepartTime(departureDetail.departureDateTime);\n const durationOfJourney = departureDetail.expectedDurationOfJourney;\n if (durationOfJourney) {\n const totalHours = (durationOfJourney.days * 24) + durationOfJourney.hours;\n const hours = sprintf('%s%s', totalHours < 10 ? '0' : '', totalHours);\n const minutes = sprintf('%s%s', durationOfJourney.minutes < 10 ? '0' : '', durationOfJourney.minutes);\n const findHours = hours + ':' + minutes;\n expectedDuration = findHours.split(':').join('');\n }\n }\n }\n\n let keeperTitle;\n let keeperFirstName;\n let keeperLastName;\n if (data.departAddress && data.departAddress.keeper) {\n keeperTitle = data.departAddress.keeper.title ? data.departAddress.keeper.title + ' ' : '';\n keeperFirstName = data.departAddress.keeper.firstName ? data.departAddress.keeper.firstName + ' ' : '';\n keeperLastName = data.departAddress.keeper.lastName ? data.departAddress.keeper.lastName : '';\n }\n const toHolding = data.toHolding ? data.toHolding.split('/').join('') : ' ';\n const keeperName = keeperTitle + keeperFirstName + keeperLastName;\n const transporterAuthNumber = transportDetail && transportDetail.transporterAuthNumber ? transportDetail.transporterAuthNumber.substr(0, 9) : ' ';\n\n const driverFirstName = transportDetail && transportDetail.transporter && transportDetail.transporter.firstName ? transportDetail.transporter.firstName.slice(0, 1) + '. ' : ' ';\n const driverLastName = transportDetail && transportDetail.transporter && transportDetail.transporter.lastName ? transportDetail.transporter.lastName : ' ';\n const driverName = driverFirstName + driverLastName;\n const driverTelephone = transportDetail && transportDetail.transporter && transportDetail.transporter.telephoneNumber ? transportDetail.transporter.telephoneNumber : ' ';\n\n const ownerFirstName = departureDetail && departureDetail.departureOwner && departureDetail.departureOwner.firstName ? departureDetail.departureOwner.firstName.slice(0, 1) + '. ' : ' ';\n const ownerLastName = departureDetail && departureDetail.departureOwner && departureDetail.departureOwner.lastName ? departureDetail.departureOwner.lastName : ' ';\n const nameOfOwner = ownerFirstName + ownerLastName;\n const printName = data.departAddress && data.departAddress.firstName && data.departAddress.lastName ? data.departAddress.firstName + ' ' + data.departAddress.lastName : ' ';\n\n //--- PAGE 2 DATA & FIELDS ---//\n const nonCompliantReason = data.movementDocument.fciDetail.nonCompliantReason ? data.movementDocument.fciDetail.nonCompliantReason : ' ';\n const withdrawalPeriodObservedText = data.movementDocument.fciDetail.withdrawalPeriodObservedText ? data.movementDocument.fciDetail.withdrawalPeriodObservedText : ' ';\n const holdingRestrictions = data.movementDocument.fciDetail.holdingRestrictions ? data.movementDocument.fciDetail.holdingRestrictions : ' ';\n const departureTime = movementDocument?.departureDetail?.departureDateTime;\n const depatureDate = moment(departureTime ? departureTime : data.movementDate).format('DD/MM/YY').split('/').join('');\n\n //--- PAGE 3 - SUPPLIMENTARY FORM FIELDS ---//\n const arrivalTime = movementDocument?.destinationDetail?.arrivalDateTime;\n const arrivalDate = moment(arrivalTime ? arrivalTime : data.movementDate).format('DD/MM/YY').split('/').join('');\n const loadingDate = moment(data.movementDate).format('DD/MM/YY').split('/').join('');\n\n //--- PAGE 1 ---//\n const PDF_Page1 = () => (\n \n \n\n {/* Section 1 - Left side Section */}\n \n \n {data.fromHolding.split('/').join('')}\n \n {data.departAddress &&\n <>\n \n {keeperName ? keeperName : ''}\n {data.departAddress?.propertyName ?? ''}\n {data.departAddress?.address1 ?? ''}\n {data.departAddress?.address2 ?? ''}\n {data.departAddress?.town ?? ''}\n \n {data.departAddress?.county ?? ''}\n {data.departAddress?.postCode ? ' - ' + data.departAddress?.postCode : ''}\n \n \n \n }\n {data.destAddress &&\n <>\n \n {data.destAddress?.propertyName ?? ''}\n {data.destAddress?.address1 ?? ''}\n {data.destAddress?.address2 ?? ''}\n {data.destAddress?.town ?? ''}\n \n {data.destAddress?.county ?? ''}\n {data.destAddress?.postCode ? ' - ' + data.destAddress?.postCode : ''}\n \n \n \n }\n \n\n {data.species === 'Sheep' && vetAttestationStatus !== '' &&\n \n \n {vetRCVS}\n \n \n {holding.split('/').join('')}\n \n \n {expDate}\n \n \n }\n\n {getFciCheckbox(data.movementDocument?.fciDetail)}\n\n {/* Section 1 - Right side Section */}\n {processingData.length > 0 &&\n \n\n \n {data.animalTotal}\n \n \n {helpers.getProcessingCheckStatus(processingData, 21) ? 'X' : ''}\n \n \n {helpers.getProcessingCheckStatus(processingData, 20) ? 'X' : ''}\n \n \n {helpers.getProcessingCheckStatus(processingData, 8) ? 'X' : ''}\n \n \n {'X'}\n \n \n {helpers.getProcessingCheckStatus(processingData, 22) ? 'X' : ''}\n \n \n {helpers.getProcessingCheckStatus(processingData, 28, 30, 36, 37, 40, 43) ? 'X' : ''}\n \n \n {strikeFromOrTo(processingData, 30, 28, 37, 36, 40, 43)}\n \n\n \n {helpers.getProcessingCheckStatus(processingData, 6) ? 'X' : ''}\n \n \n }\n\n \n \n {depatureDate}\n \n \n {loadingTime}\n \n \n {timeFirstAnimlLoaded}\n \n \n {timeOfDepature}\n \n \n {expectedDuration}\n \n \n {printName}\n \n {/* \n {data.departAddress ? data.departAddress.telephoneNumber : ''}\n */}\n \n {/* {data.departAddress ? data.departAddress.telephoneNumber : ''} */}\n {data.departAddress && data.departAddress.telephoneNumber ? displayDataInCells((data.departAddress.telephoneNumber).split('')) : ''}\n \n \n {nameOfOwner}\n \n \n\n {/* Section 2 - Transport Details */}\n \n {getTransportTypeCheckout()}\n {data.transportVehicleRegistrationNo &&\n \n {displayDataInCells((data.transportVehicleRegistrationNo).split(''))}\n \n }\n \n {haulierCompanyName}\n \n \n {displayDataInCells((transporterAuthNumber).split(''))}\n \n \n {driverName}\n \n \n {displayDataInCells((driverTelephone).split(''))}\n \n\n \n\n {/* Section 3 - Receiving Location */}\n \n \n {displayDataInCellsWithVariation((toHolding).split(''))}\n \n \n {arrivalDate}\n \n \n {data.animalTotal}\n \n \n {render.pdfFooter()}\n \n );\n\n //--- PAGE 2 ---//\n const PDF_Page2 = () => (\n \n \n {fciDetails.nonCompliantDevices && fciDetails.nonCompliantDevices.length > 0 &&\n \n {'Please see Additional FCI Animals list'}\n \n }\n \n {nonCompliantReason}\n \n \n {getWithdrawlPeriod(withdrawalPeriodObservedText)}\n \n \n {holdingRestrictions}\n \n {render.pdfFooter()}\n \n );\n\n // -----PAGE 3 - SUPPLIMENTARY FORM ----//\n const splittedList = [];\n const allIndividualTagList = [];\n const allBatchTagList = [];\n let allTagList = [];\n\n const getAllTagAnimals = () => {\n //--- Get batch list ---//\n if (data.batches?.length > 0) {\n data.batches.forEach((item, index) => {\n const newBatch = index === (data.batches?.length - 1) ? item.batchNumber + ' X ' + item.animalTotal : item.batchNumber + ' X ' + item.animalTotal + ',';\n allBatchTagList.push(newBatch);\n });\n }\n allBatchTagList.unshift('Animals in Batches = ' + data.totalBatchAnimals);\n\n //--- Get device list ---//\n if (data.devices?.length > 0) {\n const devicelist = getTagList(data.devices);\n allIndividualTagList.push(...devicelist);\n }\n allIndividualTagList.unshift('Individual Animals = ' + data.totalIndividualAnimals);\n\n //--- Merge both Batch and Device ---//\n allTagList = [...allBatchTagList, ...allIndividualTagList];\n\n //--- Split into multiple array to generate dynamic pages ---//\n while (allTagList.length) {\n splittedList.push(allTagList.splice(0, 111));\n }\n };\n\n getAllTagAnimals();\n\n const AnimalData = ({ children }) => (\n <>\n \n {children === splittedList.length - 1 &&\n \n {data.animalTotal}\n \n }\n\n \n {splittedList[children].map((label, index) => (\n \n {label}\n \n ))}\n \n \n );\n\n const SupplementaryFormPage = splittedList.map((item, index) => {\n return \n {index}\n \n {data.species}\n \n \n {data.fromHolding.split('/').join('')}\n \n \n {displayDataInCellsWithVariation((toHolding).split(''))}\n \n \n {loadingDate}\n \n {render.pdfFooter()}\n ;\n });\n\n // ----- PAGE 4 - ADDITIONAL FCI FORM ----//\n const fciDetails = data.movementDocument ? data.movementDocument.fciDetail : null;\n const fciAnimalList = [];\n const fciSplittedList = [];\n if (fciDetails && fciDetails.nonCompliantDevices && fciDetails.nonCompliantDevices.length > 0) {\n fciDetails.nonCompliantDevices.forEach((item) => {\n fciAnimalList.push(item.tagNumber);\n });\n }\n\n while (fciAnimalList.length) {\n fciSplittedList.push(fciAnimalList.splice(0, 148));\n }\n\n const FciAnimalData = ({ children }) => (\n <>\n \n {children === fciSplittedList.length - 1 &&\n \n {fciDetails.nonCompliantDevices.length}\n \n }\n \n {fciSplittedList[children].map((label, index) => (\n \n {label}\n \n ))}\n \n \n );\n\n const AdditionalFciPage = fciSplittedList.map((item, index) => {\n return \n {index}\n {render.pdfFooter()}\n ;\n });\n\n return (\n <>\n {ready &&\n \n {PDF_Page1()}\n {PDF_Page2()}\n {SupplementaryFormPage}\n {AdditionalFciPage}\n \n }\n \n );\n};\n\nMovementDocumentPDF.propTypes = {\n data: PropTypes.object.isRequired\n};\n\nexport default MovementDocumentPDF;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Page, Text, View, Document, StyleSheet, Image } from '@react-pdf/renderer';\nimport BackgroundPage1 from 'templates/page1_deer.png';\nimport BackgroundPage2 from 'templates/page2_deer.png';\nimport BackgroundPage3Cattle from 'templates/page3-cattle.png';\nimport BackgroundPage3Deer from 'templates/page3-deer.png';\nimport BackgroundPage3Goats from 'templates/page3-goats.png';\nimport BackgroundPage3Pigs from 'templates/page3-pigs.png';\nimport BackgroundPage3Sheep from 'templates/page3-sheep.png';\nimport BottomPage3 from 'templates/signPage3.png';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nconst sprintf = require('util').format;\n\nconst pdfProperties = {\n deerPage: {\n flexDirection: 'column',\n fontSize: '11px'\n },\n deerRow: {\n flexGrow: 1\n },\n deerLine: {\n flexDirection: 'row',\n margin: 3,\n padding: 2\n },\n deerSection: {\n flexDirection: 'row',\n margin: 6,\n padding: 3,\n flexGrow: 1,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: 'black'\n },\n deerSection2: {\n margin: 6,\n padding: 3,\n flexGrow: 1,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: 'black'\n },\n deerImage: {\n margin: 0,\n padding: 0,\n top: 0,\n left: 0\n },\n deerExemptions: {\n border: '1px solid red',\n position: 'absolute',\n fontSize: '10px',\n fontWeight: 'bold',\n left: '555px',\n height: '14px',\n width: '14px'\n },\n deerExemptionsText: {\n position: 'absolute',\n fontSize: '10px',\n fontWeight: 'bold',\n left: '315px',\n width: '225px',\n wordWrap: 'normal',\n textAlign: 'right'\n },\n deerDepartureLocation: {\n position: 'absolute',\n top: '70px',\n width: '100%',\n height: '435px'\n },\n deerTransportDetail: {\n position: 'absolute',\n top: '504px',\n width: '100%',\n height: '112px'\n },\n deerReceivingLocation: {\n position: 'absolute',\n top: '616px',\n width: '100%',\n height: '200px'\n },\n deerFciDetail: {\n position: 'absolute',\n top: '435px',\n width: '100%',\n height: '200px'\n },\n deerExtraSheetDetails: {\n position: 'absolute',\n top: '80px',\n width: '100%',\n height: '85px'\n },\n deerExtraSheetTable: {\n left: '10px',\n width: '95%',\n border: '1px solid darkGrey'\n },\n deerAddressToSendTo: {\n position: 'absolute',\n top: '780px',\n left: '28px',\n width: '90%'\n }\n};\n\nconst MAX_FIELD_WIDTH = 20;\nconst zeroTimeList = ['0000', '0000Z'];\nconst haulageCompanyIgnoreList = ['Departure keeper', 'Receiving keeper'];\n\nconst MovementDocumentDeerPDF = ({\n data\n}) => {\n const { ready, t } = useTranslation();\n const { movementDocument } = data;\n const { transportDetail } = movementDocument;\n const departureDetail = movementDocument ? movementDocument.departureDetail : null;\n const transporterType = transportDetail && transportDetail.transporterType ? transportDetail.transporterType : null;\n\n const departureTime = movementDocument?.departureDetail?.departureDateTime;\n const depatureDate = moment(departureTime ? departureTime : data.movementDate).format('DD/MM/YYYY');\n // WORKAROUND CODED INTO THE FUNCTION BELOW FOR TICKET 31881\n const setDepartTime = (inValue) => {\n if (!inValue) {\n return '';\n }\n\n const arr = inValue.split('+')[0].split('T')[1].split(':');\n if (arr.length < 3) {\n return '';\n }\n\n return zeroTimeList.includes(arr[0] + arr[1]) ? '' : moment(inValue).format('h:mm A');\n };\n\n const getMetFCIWithdrawalPeriod = (updatedFciDetail) => {\n if (!data.metFCIWithdrawalPeriods) {\n return updatedFciDetail.withdrawalPeriodMetId;\n }\n const matchFCI = data.metFCIWithdrawalPeriods.filter((fciItem) => fciItem.id === updatedFciDetail.withdrawalPeriodMetId);\n return matchFCI ? matchFCI.name : updatedFciDetail.withdrawalPeriodMetId;\n };\n\n const truncateField = (field) => field && field.length > MAX_FIELD_WIDTH ? field.slice(0, MAX_FIELD_WIDTH - 2) + '...' : field;\n\n const getText = (html) => {\n const divContainer = document.createElement('div');\n divContainer.innerHTML = html;\n return divContainer.textContent || divContainer.innerText || '';\n };\n\n const trimField = (field) => field ? truncateField(getText(field)) : '';\n\n const trimName = (first, second) => truncateField((first && first.length ? first.slice(0, 1) + '. ' : '') + (second ? getText(second) : ''));\n\n const getBatchList = (updatedBatches) => {\n let sorted = [];\n for (const batch of updatedBatches) {\n sorted.push(batch.batchNumber);\n }\n sorted = sorted.sort((a, b) => (a - b));\n let lastBatchNumber = '';\n const finalNumber = sorted[sorted.length - 1];\n const output = [];\n for (const batch of sorted) {\n if (lastBatchNumber !== batch) {\n const animalTotal = updatedBatches.filter((item) => batch === item.batchNumber).reduce((total, item) => total + item.animalTotal, 0);\n const tot = (finalNumber === batch) ? animalTotal : animalTotal + ',';\n output.push({ batchNumber: batch, animalTotal: tot });\n }\n lastBatchNumber = batch;\n }\n return output;\n };\n\n const getRelevantFiller = (from, to) => {\n const filler = from !== to ? '-' + to : '';\n return filler;\n };\n const commaPlacement = (addComma) => {\n const placement = addComma ? ',' : '';\n return placement;\n };\n\n const tagOutput = (batchNumber, individualNumber, from, to, addComma) => {\n const animalTagNumber = sprintf('%s %s%s%s', batchNumber, individualNumber, getRelevantFiller(from, to), commaPlacement(addComma));\n return animalTagNumber;\n };\n const tagOutputType3 = (batchNumber, individualNumber, from, to, toactive3, addComma) => {\n const animalTagNumber = sprintf('%s %s %s%s%s', batchNumber, individualNumber, from, getRelevantFiller(to, toactive3), commaPlacement(addComma));\n return animalTagNumber;\n };\n const formatTagType2 = (tagType2) => {\n let batchNumberType2 = '';\n let individualNumberType2 = '';\n let activeNo1Type2 = 0;\n let activeNo2Type2 = 0;\n const resultsType2 = [];\n\n for (const tagItem of tagType2) {\n let tempIndividualNumber;\n const rec = tagItem.split(' ');\n\n if (rec.length > 1) {\n tempIndividualNumber = Number(rec[1]);\n\n if (batchNumberType2 !== rec[0] || (activeNo2Type2 + 1) !== tempIndividualNumber) {\n if (batchNumberType2.length > 0) {\n resultsType2.push(tagOutput(batchNumberType2, individualNumberType2, activeNo1Type2, activeNo2Type2, true));\n }\n batchNumberType2 = rec[0];\n individualNumberType2 = rec[1];\n activeNo1Type2 = tempIndividualNumber;\n }\n activeNo2Type2 = tempIndividualNumber;\n } else {\n resultsType2.push(tagItem);\n }\n }\n resultsType2.push(tagOutput(batchNumberType2, individualNumberType2, activeNo1Type2, activeNo2Type2, false));\n return resultsType2;\n };\n const checkTagType3 = (tagType3) => {\n const results = [];\n let deerBatchNumber = '';\n let deerIndividualNumber = '';\n let deerActiveNo1 = 0;\n let deerActiveNo2 = 0;\n let deerActiveNo3 = 0;\n\n for (const tagItem of tagType3) {\n let deerTempIndividualNumber;\n const rec = tagItem.split(' ');\n if (rec.length > 1) {\n deerTempIndividualNumber = Number(rec[2]);\n if (deerBatchNumber !== rec[0] || (deerActiveNo3 + 1) !== deerTempIndividualNumber) {\n if (deerBatchNumber.length > 0) {\n results.push(tagOutputType3(deerBatchNumber, deerIndividualNumber, deerActiveNo1, deerActiveNo2, deerActiveNo3, true));\n }\n deerBatchNumber = rec[0];\n deerIndividualNumber = rec[1];\n deerActiveNo1 = rec[2];\n deerActiveNo2 = deerTempIndividualNumber;\n }\n deerActiveNo3 = deerTempIndividualNumber;\n } else {\n results.push(tagItem);\n }\n }\n results.push(tagOutputType3(deerBatchNumber, deerIndividualNumber, deerActiveNo1, deerActiveNo2, deerActiveNo3, false));\n return results;\n };\n const getTagList = (deviceList) => {\n let tagList = [];\n const tagType3 = [];\n const tagType2 = [];\n for (const device of deviceList) {\n tagList.push(device.tagNumber);\n }\n tagList = helpers.sortTags(tagList);\n for (const tagItem of tagList) {\n const rec = tagItem.split(' ');\n if (rec.length === 3) {\n tagType3.push(tagItem);\n } else {\n tagType2.push(tagItem);\n }\n }\n let tags3Result = [];\n let formattedTagType2 = [];\n if (tagType3.length > 0) {\n tags3Result = checkTagType3(tagType3);\n }\n if (tagType2.length > 0) {\n formattedTagType2 = formatTagType2(tagType2);\n }\n const result = tags3Result.concat(formattedTagType2);\n return result;\n };\n\n const getTransportTypeCheckout = () => {\n let style;\n switch (transporterType) {\n case constants.transporter.departureKeeper:\n style = { position: 'absolute', top: '17px', left: '214px', fontSize: '15px', fontWeight: 'bold' };\n break;\n\n case constants.transporter.destinationKeeper:\n style = { position: 'absolute', top: '17px', left: '329px', fontSize: '15px', fontWeight: 'bold' };\n break;\n\n case constants.transporter.haulier:\n style = { position: 'absolute', top: '17px', left: '451px', fontSize: '15px', fontWeight: 'bold' };\n break;\n\n default:\n return null;\n }\n\n return (\n \n X\n \n );\n };\n\n const getAuthNumber = (transporterAuthNumber) => {\n if (!transporterAuthNumber) {\n return null;\n }\n let style = { position: 'absolute', top: '86px', left: '170px' };\n\n if (transporterAuthNumber && transporterAuthNumber.length > MAX_FIELD_WIDTH) {\n // if auth number more than 20 characters, need to use smaller front, wrap text with newline and move up position a bit to fix two lines\n // otherwise use smaller front and move down position a bit\n style = { position: 'absolute', top: '86px', left: '164px', fontSize: '8px' };\n transporterAuthNumber = sprintf('%s%s', transporterAuthNumber.substr(0, 20),\n transporterAuthNumber.length > 20 ? '\\n' + transporterAuthNumber.substr(20, transporterAuthNumber.length - 20) : '');\n }\n return (\n \n {transporterAuthNumber}\n \n );\n };\n\n const getFciCheckbox = (fciData) => {\n if (!fciData || fciData.isAllAnimalsFciCompliant === null) {\n return null;\n }\n const style = fciData.isAllAnimalsFciCompliant\n ? { position: 'absolute', top: '231px', left: '276px', fontSize: '12px' }\n : { position: 'absolute', top: '271px', left: '276px', fontSize: '12px' };\n return (\n \n X\n \n );\n };\n\n const displayAddress = (holding) => (\n <>\n {getText(holding.propertyName)}\n {getText(holding.address1)}\n {getText(holding.address2)}\n {getText(holding.town)}\n {getText(holding.county)}\n \n );\n\n const getHaulierCompanyName = (haulierName) => {\n if (!haulierName) {\n return haulierName;\n }\n const matchedName = haulageCompanyIgnoreList.filter((name) => name === haulierName.substr(0, name.length));\n return matchedName.length > 0 ? '' : haulierName;\n };\n\n const owner = (!departureDetail || !departureDetail.departureOwner) ? ''\n : trimName(departureDetail.departureOwner.firstName, departureDetail.departureOwner.lastName);\n\n let haulierCompanyName = '';\n let driverName = '';\n let driverTelephone = '';\n let loadingTime = '';\n let departTime = '';\n let duration = '';\n if (transportDetail && transportDetail.recordTransportInformation !== constants.option.recordTransportInformation.no) {\n if (transportDetail.transporter) {\n driverName = trimName(transportDetail.transporter.firstName, transportDetail.transporter.lastName);\n driverTelephone = transportDetail.transporter.telephoneNumber;\n }\n haulierCompanyName = getHaulierCompanyName(transportDetail.transportHaulierName);\n\n if (departureDetail) {\n loadingTime = departureDetail.loadingDateTime ? departureDetail.loadingDateTime : '';\n departTime = setDepartTime(departureDetail.departureDateTime);\n\n const durationOfJourney = departureDetail.expectedDurationOfJourney;\n\n if (durationOfJourney) {\n const days = sprintf('%s %s ', durationOfJourney.days, t(durationOfJourney.days > 1 ? 'label.days_lower' : 'label.day_lower').toLowerCase());\n const hours = sprintf('%s%s ', durationOfJourney.hours, t('movements.transport-information.transport-details.hours').toLowerCase().charAt(0));\n const minutes = sprintf('%s%s%s ', durationOfJourney.minutes < 10 ? '0' : '', durationOfJourney.minutes, t('movements.transport-information.transport-details.minutes').toLowerCase().charAt(0));\n\n if (durationOfJourney.days > 0) {\n duration += days;\n }\n\n if (durationOfJourney.hours > 0 || durationOfJourney.minutes > 0) {\n duration += hours + minutes;\n }\n }\n }\n }\n\n const styles = StyleSheet.create(pdfProperties);\n\n const batches = data.batches?.length > 0\n ? getBatchList(data.batches).map((batch, index) =>\n \n \n {batch.batchNumber} x {batch.animalTotal}\n \n ) : [];\n\n const devices = data.devices?.length > 0\n ? getTagList(data.devices).map((device, index) =>\n \n \n {device}\n \n ) : [];\n const devicesBreak1 = Math.ceil(devices.length / 4);\n const devicesBreak2 = devicesBreak1 * 2;\n const devicesBreak3 = devicesBreak1 * 3;\n\n const batchesBreak1 = Math.ceil(batches.length / 4);\n const batchesBreak2 = batchesBreak1 * 2;\n const batchesBreak3 = batchesBreak1 * 3;\n\n const exempt = data.processingFlags?.all?.length > 0\n ? data.processingFlags.all.map((rec) =>\n \n \n {rec.label}\n \n \n {rec.value ? 'X' : ' '}\n \n ) : <>;\n\n // FCI Detail Section\n const fciDetail = data.movementDocument ? data.movementDocument.fciDetail : null;\n let tagNumberDisplayed = '';\n if (fciDetail && fciDetail.nonCompliantDevices && fciDetail.nonCompliantDevices.length) {\n fciDetail.nonCompliantDevices.forEach((tag) => {\n tagNumberDisplayed += tag.tagNumber + ' ';\n });\n }\n\n const departureFullName = data.departAddress ? getText([data.departAddress.firstName, data.departAddress.lastName].filter(Boolean).join(' ')) : '';\n const keeperName = data.departAddress && data.departAddress.keeper ? getText([data.departAddress.keeper.title, data.departAddress.keeper.firstName, data.departAddress.keeper.lastName].filter(Boolean).join(' ')) : '';\n\n const render = {\n page3Background: () => {\n switch (data.species) {\n case constants.species.internalLabel.CATTLE:\n return BackgroundPage3Cattle;\n case constants.species.internalLabel.DEER:\n return BackgroundPage3Deer;\n case constants.species.internalLabel.GOATS:\n return BackgroundPage3Goats;\n case constants.species.internalLabel.PIGS:\n return BackgroundPage3Pigs;\n case constants.species.internalLabel.SHEEP:\n default:\n return BackgroundPage3Sheep;\n }\n },\n\n pdfFooter: (page, totalPages) => (\n <>\n \n {t('label.movementRef') + ' : ' + data.documentRef + ' - ' + data.species}\n \n \n Page {page} of {totalPages}\n \n \n )\n };\n\n const PDF_Page1 = () => (\n \n \n\n \n \n {data.fromHolding}\n \n\n {data.departAddress &&\n <>\n \n {keeperName}\n {displayAddress(data.departAddress)}\n \n \n {data.departAddress.postCode}\n \n \n }\n\n {data.destAddress &&\n <>\n \n {displayAddress(data.destAddress)}\n \n \n {data.destAddress.postCode}\n \n \n }\n\n {getFciCheckbox(movementDocument.fciDetail)}\n\n \n \n {sprintf('%s %s %s', t('pdf.totalTitle1'),\n data.animalTotal, t(data.animalTotal > 1 ? 'pdf.totalTitle3' : 'pdf.totalTitle2'))}\n \n \n \n\n \n \n {exempt}\n \n \n\n \n {departureFullName}\n \n\n \n {data.departAddress ? data.departAddress.telephoneNumber : ''}\n \n\n \n {owner}\n \n\n \n {depatureDate}\n \n\n {transportDetail &&\n <>\n \n {loadingTime}\n \n\n \n {loadingTime}\n \n\n \n {departTime}\n \n\n \n {duration}\n \n \n }\n \n\n \n {getTransportTypeCheckout()}\n\n \n {data.transportVehicleRegistrationNo}\n \n\n \n {trimField(haulierCompanyName)}\n \n\n {transportDetail && getAuthNumber(transportDetail.transporterAuthNumber)}\n\n \n {getText(driverName)}\n \n\n \n {driverTelephone}\n \n \n\n \n \n {data.toHolding}\n \n\n \n {moment(data.movementDate).format('DD/MM/YYYY')}\n \n\n \n {data.animalTotal}\n \n \n {/* Adjusted left position in addressToSendTo3 for the alignment issue */}\n \n {t('pdf.addressToSendTo1')}\n {t('pdf.addressToSendTo2')}\n {t('pdf.addressToSendTo3')}\n {t('pdf.addressToSendTo4')}\n \n\n {render.pdfFooter(1, 3)}\n \n );\n\n const PDF_Page2 = () => (\n \n \n\n {fciDetail &&\n \n \n {tagNumberDisplayed}\n \n\n \n {getText(fciDetail.nonCompliantReason)}\n \n\n \n {getMetFCIWithdrawalPeriod(fciDetail)}\n \n\n \n {getText(fciDetail.withdrawalPeriodObservedText)}\n \n\n \n {getText(fciDetail.holdingRestrictions)}\n \n \n }\n\n {render.pdfFooter(2, 3)}\n \n );\n\n const PDF_Page3 = () => (\n \n \n\n \n \n {data.fromHolding}\n \n\n \n {data.toHolding}\n \n\n \n {moment(data.movementDate).format('DD/MM/YYYY')}\n \n \n\n \n \n \n {t('pdf.animalsBatches')}{t('pdf.sep')}{data.totalBatchAnimals}\n \n \n\n {data.totalBatchAnimals > 0 &&\n \n \n {batches.slice(0, batchesBreak1)}\n \n\n \n {batches.slice(batchesBreak1, batchesBreak2)}\n \n\n \n {batches.slice(batchesBreak2, batchesBreak3)}\n \n\n \n {batches.slice(batchesBreak3, batches.length)}\n \n \n }\n\n \n \n {t('pdf.animalsIndividual')}{t('pdf.sep')}{data.totalIndividualAnimals}\n \n \n\n {data.totalIndividualAnimals > 0 &&\n \n \n {devices.slice(0, devicesBreak1)}\n \n\n \n {devices.slice(devicesBreak1, devicesBreak2)}\n \n\n \n {devices.slice(devicesBreak2, devicesBreak3)}\n \n\n \n {devices.slice(devicesBreak3, devices.length)}\n \n \n }\n \n \n {t('pdf.animalsTotal')}{t('pdf.sep')}{data.animalTotal}\n \n \n \n\n \n {render.pdfFooter(3, 3)}\n \n );\n\n return (\n <>\n {ready &&\n \n {PDF_Page1()}\n {PDF_Page2()}\n {PDF_Page3()}\n \n }\n \n );\n};\n\nMovementDocumentDeerPDF.propTypes = {\n data: PropTypes.object.isRequired\n};\n\nexport default MovementDocumentDeerPDF;\n","import React from 'react';\nimport vetModuleHelper from 'services/vetModuleHelper';\nimport { BlobProvider } from '@react-pdf/renderer';\nimport bff, { isCancel } from 'services/bff';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport Button from 'components/base/button/button';\nimport MovementDocumentPDF from 'templates/movementDocumentPDF';\nimport MovementDocumentDeerPDF from 'templates/movementDocumentDeerPDF';\n\nconst PDFButton = ({\n buttonType,\n label,\n referenceId,\n requestId,\n requestType,\n setModal\n}) => {\n const species = storeService.session.get.species();\n let firstTimePDfDownload = React.useRef(false);\n const [data, setData] = React.useState({});\n const [attestationRecord, setAttestationRecord] = React.useState({});\n const [pending, setPending] = React.useState(false);\n let pdfUrl = React.useRef('');\n const [documentReference, setDocumentReference] = React.useState(null);\n\n const downloadUrl = (url, movementReference) => {\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute(\n 'download',\n movementReference + '.pdf'\n );\n document.body.appendChild(link);\n link.click();\n link.parentNode.removeChild(link);\n };\n\n const generatePDF = (docRef) => {\n getMovementDetails(docRef);\n };\n\n const getMovementHolding = (data) => {\n return data.userHolding ? data.userHolding\n : (helpers.cph.isNonCph(data.sourceHolding)\n ? data.destinationHolding : data.sourceHolding);\n };\n\n const createPermitAddress = (nonCPHAddress) => {\n const result = { propertyName: 'NON-CPH Permit move', address1: nonCPHAddress };\n return result;\n };\n\n const getMovementDetails = (docReference) => {\n setPending(true);\n bff\n .get('/movementDetails', {\n params: {\n documentRef: docReference,\n species: species.name\n }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setPending)) {\n const result = res.data.data[0];\n\n if (result.documentRef) {\n setData(result);\n if (helpers.cph.isNonCph(result.fromHolding) || helpers.cph.isNonCph(result.toHolding)) {\n helpers.get.comments(getMovementHolding(result), requestId)\n .then((res2) => {\n if (helpers.response.isValid(res2.data, setModal)) {\n const address1 = res2?.data?.length > 0 ? res2.data[0].comment : '';\n\n setData((prevData) => ({\n ...prevData,\n destAddress: createPermitAddress(address1),\n toHolding: result.fromHolding\n }));\n }\n });\n\n helpers.get.holdingAddress(result.userHolding)\n .then((res2) => {\n if (helpers.response.isValid(res.data, setModal)) {\n setData((prevData) => ({\n ...prevData,\n fromHolding: result.userHolding,\n departAddress: res2\n }));\n }\n });\n } else {\n vetModuleHelper.fetchVetDetailsForDigitalForm(result.fromHolding, result.movementDate)\n .then((res) => {\n const vetResult = res.data.data[0];\n setAttestationRecord(vetResult);\n })\n .catch((error) => {\n if (!isCancel(error)) {\n return false;\n }\n });\n helpers.get.holdingAddress(result.fromHolding)\n .then((res2) => {\n if (helpers.response.isValid(res.data, setModal)) {\n setData((prevData) => ({\n ...prevData,\n departAddress: res2\n }));\n }\n });\n\n helpers.get.holdingAddress(result.toHolding)\n .then((res2) => {\n if (helpers.response.isValid(res.data, setModal)) {\n setData((prevData) => ({\n ...prevData,\n destAddress: res2\n }));\n }\n });\n }\n\n helpers.get.metFciWithdrawalPeriods()\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setPending)) {\n const getMetFCIWithdrawalPeriod = (id, periods) => {\n for (const metFCIWithdrawalPeriod of periods) {\n if (metFCIWithdrawalPeriod.id === id) {\n return metFCIWithdrawalPeriod;\n }\n }\n return id;\n };\n\n const fciDetail = result.movementDocument && result.movementDocument.fciDetail ? result.movementDocument.fciDetail : null;\n\n if (fciDetail) {\n setData((prevData) => ({\n ...prevData,\n metFCIWithdrawalPeriods: res.data,\n fciData: {\n animalsSatisfy: fciDetail.isAllAnimalsFCICompliant ? constants.option.animalsSatisfy.doSatisfy : constants.option.animalsSatisfy.doNotSatisfy,\n holdingRestrictions: fciDetail.holdingRestrictions,\n nonComplianceReason: fciDetail.nonCompliantReason,\n recordFCI: constants.option.recordFCI.yes,\n withdrawalPeriod: getMetFCIWithdrawalPeriod(fciDetail.withdrawalPeriodMetId, res.data),\n unfitAnimals: fciDetail.nonCompliantDevices\n }\n }));\n } else {\n setData((prevData) => ({\n ...prevData,\n metFCIWithdrawalPeriods: res.data\n }));\n }\n }\n });\n\n setAnimalTotals(result);\n setTransportInfo(result.movementDocument);\n setProcessingFlags(result);\n }\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setData({});\n setPending(false);\n firstTimePDfDownload = false;\n }\n });\n };\n\n const getMovementData = () => {\n firstTimePDfDownload = true;\n if (!referenceId) {\n helpers.movementReferenceByRequest(setModal, requestId, requestType, setDocumentReference, generatePDF);\n } else {\n setDocumentReference(referenceId);\n generatePDF(referenceId);\n }\n };\n\n const setAnimalTotals = (inData) => {\n setData((prevData) => ({\n ...prevData,\n totalIndividualAnimals: inData && inData.devices ? inData.devices?.length : 0,\n totalBatchAnimals: inData && inData.batches ? inData.batches.reduce((total, batch) => total + batch.animalTotal, 0) : 0\n }));\n };\n\n const getTransportedBy = (tData) => {\n switch (tData.transporterTypeId) {\n case 2:\n return constants.option.transporter.destinationKeeper;\n case 3:\n return constants.option.transporter.haulier;\n case 1:\n default:\n return constants.option.transporter.departureKeeper;\n }\n };\n\n const setTransportInfo = (inValue) => {\n if (inValue && inValue.transportDetail) {\n const tInfo = inValue.transportDetail;\n\n if (\n tInfo.transportAuthNumber?.length ||\n tInfo.transportVehicleRegistrationNo?.length ||\n tInfo.transporterTypeId ||\n tInfo.transporterType\n ) {\n setData((prevData) => ({\n ...prevData,\n transportInformation: {\n contactPhone: tInfo.transporter ? tInfo.transporter.telephoneNumber : '',\n departureDateTime: inValue.departureDetail ? inValue.departureDetail.departureDateTime : '',\n durationOfJourney: inValue.departureDetail ? inValue.departureDetail.expectedDurationOfJourney : '',\n recordTransportInformation: constants.option.recordTransportInformation.yes,\n transportAuthNumber: tInfo.transporterAuthNumber,\n transportedBy: getTransportedBy(tInfo),\n transporter: tInfo.transporter,\n vehicleRegistrationNumber: tInfo.transportVehicleRegistrationNo\n }\n }));\n } else {\n setData((prevData) => ({\n ...prevData,\n transportInformation: {\n recordTransportInformation: constants.option.recordTransportInformation.no\n }\n }));\n }\n } else {\n setData((prevData) => ({\n ...prevData,\n transportInformation: {\n recordTransportInformation: constants.option.recordTransportInformation.no\n }\n }));\n }\n };\n\n const getProcessingStatus = (id, processingItems) => {\n const found = processingItems ? processingItems.find((item) => item.processingFlagId === id) : false;\n return Boolean(found);\n };\n\n const setProcessingFlags = (inValue) => {\n if (inValue.movementDetailsProcessingFlags) {\n helpers.get.processingFlags(null, constants.option.requestType.movement, helpers.species.nameToId(inValue.species))\n .then((res2) => {\n if (helpers.response.isValid(res2.data, setModal)) {\n const allRecs = res2.data.map((flag) => ({\n ...flag,\n value: getProcessingStatus(flag.id, inValue.movementDetailsProcessingFlags)\n }));\n\n setData((prevData) => ({\n ...prevData,\n processingFlags: {\n exempt: 'yes',\n exemptions: [],\n all: allRecs\n }\n }));\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setProcessingFlags({ exempt: 'yes', exemptions: [] });\n }\n });\n } else {\n setData((prevData) => ({\n ...prevData,\n processingFlags: {\n exempt: 'yes',\n exemptions: []\n }\n }));\n }\n };\n\n const printReady = () => {\n return (\n data.documentRef &&\n data.departAddress &&\n data.destAddress &&\n data.metFCIWithdrawalPeriods &&\n data.totalIndividualAnimals !== null &&\n data.totalBatchAnimals !== null &&\n data.transportInformation &&\n data.fciData &&\n data.processingFlags\n );\n };\n\n return (\n <>\n {data.species !== 'Deer' && printReady() &&\n }>\n {({ blob, error, loading, url }) => {\n if (!loading && url && blob && Object.prototype.hasOwnProperty.call(pdfUrl, 'current') && firstTimePDfDownload) {\n downloadUrl(url, documentReference);\n firstTimePDfDownload = false;\n pdfUrl = url;\n }\n\n if (error) {\n return
{error}
;\n }\n\n return null;\n }}\n
\n }\n {data.species === 'Deer' && printReady() &&\n }>\n {({ blob, error, loading, url }) => {\n if (!loading && url && blob && Object.prototype.hasOwnProperty.call(pdfUrl, 'current') && firstTimePDfDownload) {\n downloadUrl(url, documentReference);\n firstTimePDfDownload = false;\n pdfUrl = url;\n }\n\n if (error) {\n return
{error}
;\n }\n\n return null;\n }}\n
\n }\n \n \n );\n};\n\nPDFButton.propTypes = {\n buttonType: PropTypes.string,\n label: PropTypes.string,\n referenceId: PropTypes.string,\n requestId: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n requestType: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n setModal: PropTypes.func.isRequired\n};\n\nexport default PDFButton;\n","import React from 'react';\nimport breedsHelper from 'services/breedsHelper';\nimport config from 'config';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport he from 'he';\nimport moment from 'moment';\nimport navigation from 'services/navigation';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport Button from 'components/base/button/button';\nimport CheckBox from 'components/base/checkbox/checkbox';\nimport Linker from 'components/base/linker/linker';\nimport PDFButton from 'components/pdfButton/pdfButton';\n\nconst columns = {\n manualTagDetails: {\n tagNumber: {\n header: 'Tag number',\n accessor: 'tagNumber',\n sortable: true\n },\n attestationCph: {\n header: 'Attestation CPH',\n accessor: 'setPic',\n sortable: false\n },\n status: {\n header: 'Status',\n accessor: 'programStatusCode',\n render: ({ value }) => {\n if (value === 'ATTESTED') {\n return ('Valid');\n }\n return ('Invalid');\n }\n },\n record: {\n header: 'Record',\n accessor: 'id',\n render: ({ row }) => {\n if (row.setPic !== '') {\n if (helpers.tag.canLink(row.id)) {\n return (\n \n );\n }\n }\n return ('');\n }\n }\n },\n\n vetAttestationData: {\n id: {\n header: 'Reference number',\n accessor: 'id'\n },\n vetAttestationStatus: {\n header: 'Veterinary attestation status',\n accessor: 'vetAttestationStatus'\n },\n viewLink: {\n header: 'Record',\n accessor: 'id',\n render: ({ value }) => {\n if (helpers.tag.canLink(value)) {\n return (\n \n );\n }\n }\n }\n },\n animalDetails: {\n breed: {\n accessor: 'breedName',\n header: 'label.breed'\n },\n\n dob: {\n accessor: 'dob',\n classNames: ['date'],\n header: 'label.dateBirth',\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n dateOfMovement: {\n accessor: 'dom',\n classNames: ['date'],\n header: 'label.dateMovement',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n dateOfTagging: (params) => ({\n accessor: 'replacementDate',\n classNames: ['date'],\n header: ,\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n }),\n\n departure: {\n accessor: 'from',\n header: 'label.departureHoldingFrom',\n sortable: true\n },\n\n destination: {\n accessor: 'to',\n header: 'label.destinationHoldingTo',\n sortable: true\n },\n\n gender: {\n accessor: 'genderName',\n classNames: ['gender'],\n header: 'label.gender',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n },\n\n initialTagNumber: {\n accessor: 'replacedIdentifier',\n header: 'label.initialTagNumber',\n sortable: true\n },\n\n // location: {\n // accessor: 'location',\n // header: 'label.location',\n // render: ({ t, value }) => {\n // return (\n // <>{value === 'Unknown' ? t('label.unknown') : value}\n // );\n // }\n // },\n\n movementReference: {\n accessor: 'movementDocumentRef',\n header: 'label.movementRef',\n sortable: true\n },\n\n replacementTagNumber: {\n accessor: 'replacingIdentifier',\n header: 'label.replacementTagNumber',\n sortable: true\n },\n\n requestId: {\n accessor: 'requestId',\n classNames: ['hide-m', 'align-right', 'request-id'],\n header: 'label.requestId'\n },\n\n taggingReference: {\n accessor: 'requestId',\n classNames: ['hide-m', 'align-right', 'request-id'],\n header: 'label.reference',\n sortable: true,\n render: ({ t, value }) => {\n return (\n <>{value ? value : t('label.na')}\n );\n }\n },\n\n tagNumber: (params) => ({\n accessor: 'tagNumber',\n header: 'label.tagNumber',\n render: ({ value }) => {\n if (helpers.tag.canLink(value)) {\n return (\n params.setShowProgeny(false)}\n to={Routing.animals + value}\n />\n );\n }\n\n return (\n <>{value}\n );\n }\n })\n },\n\n animalsOnHolding: {\n action: (params) => ({\n classNames: ['action', 'align-right'],\n render: ({ row }) => {\n return (\n params.removeAnimal(row)}\n />\n );\n }\n }),\n\n age: (params) => ({\n accessor: 'ageToDisplay',\n header: 'label.age',\n sortable: true,\n sortColumn: params.ageSortColumn ? params.ageSortColumn : 'endBirthPeriod',\n sortReverse: true,\n render: ({ t, value }) => {\n return (\n <>{value === 0 ? t('label.ageOneYear.under') : value === '-' ? value : value >= 1 ? value + t('label.ageOneYear.above') : value}\n );\n }\n }),\n\n breed: (params) => ({\n accessor: 'breedName',\n header: 'label.breed',\n sortable: params.sortable,\n render: ({ t, value }) => {\n return (\n <>{value ? he.decode(value) : t('label.unknown')}\n );\n }\n }),\n\n dob: (params) => ({\n accessor: 'dobToDisplay',\n header: 'label.yearDob',\n sortable: true,\n sortColumn: params.dobSortColumn ? params.dobSortColumn : 'beginBirthPeriod',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n }),\n\n gender: (params) => ({\n accessor: 'genderName',\n classNames: ['gender'],\n header: 'label.gender',\n sortable: params.sortable,\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n }),\n\n status: {\n classNames: ['status', 'status-wide'],\n header: 'label.status',\n render: ({ row, t }) => {\n if (row.duplicates.length > 0) {\n return (\n <>{t('label.duplicate')}\n );\n }\n\n if (helpers.tag.isInvalidExtended(row)) {\n return (\n <>{t('label.invalid' + helpers.tag.getInvalidField(row))}\n );\n }\n\n if (helpers.tag.isNonEid(row)) {\n return (\n <>{t('label.nonEid')}\n );\n }\n\n return '';\n }\n },\n\n tagNumber: {\n accessor: 'tagNumber',\n header: 'label.tagNumber',\n sortable: true\n }\n },\n\n animalSummary: {\n age: {\n accessor: 'ageToDisplay',\n classNames: ['hide-l', 'age'],\n header: 'label.age',\n sortable: true,\n render: ({ t, value }) => {\n return (\n <>{value === 0 ? t('label.ageOneYear.under') : value === '-' ? value : value >= 1 ? value + t('label.ageOneYear.above') : value}\n );\n }\n },\n\n batchNumber: (params) => ({\n accessor: 'batchNumber',\n header: 'label.batchNumber' + params.speciesId,\n sortable: true,\n render: ({ t, value }) => {\n return (\n <>{value ? value : t('label.notSupplied')}\n );\n }\n }),\n\n batchNumberNew: (params) => ({\n accessor: 'newBatchNumber',\n header: 'label.newBatchNumber' + params.speciesId,\n sortable: true\n }),\n\n batchNumberOld: (params) => ({\n accessor: 'oldBatchNumber',\n header: 'label.oldBatchNumber' + params.speciesId,\n sortable: true\n }),\n\n breed: {\n accessor: 'breedName',\n classNames: ['hide-m'],\n header: 'label.breed',\n sortable: true,\n render: ({ row, t, value }) => {\n return (\n <>{value\n ? he.decode(value)\n : (row.breed\n ? he.decode(row.breed)\n : t('label.unknown')\n )\n }\n );\n }\n },\n\n damId: {\n accessor: 'damId',\n header: 'label.damId',\n sortable: true\n },\n\n dob: {\n accessor: 'dobToDisplay',\n classNames: ['hide-s', 'align-right', 'year-dob'],\n header: 'label.yearDob',\n sortable: true,\n render: ({ row, t, value }) => {\n return (\n <>{value && value !== '-'\n ? value\n : (row.dob\n ? row.dob\n : t('label.unknown'))\n }\n );\n }\n },\n\n dobOnly: {\n accessor: 'dobToDisplay',\n classNames: ['hide-s', 'align-right', 'year-dob'],\n header: 'label.dob',\n sortable: true,\n render: ({ row, t, value }) => {\n return (\n <>{value && value !== '-'\n ? value\n : (row.dob\n ? row.dob\n : t('label.unknown'))\n }\n );\n }\n },\n\n gender: {\n accessor: 'genderName',\n classNames: ['hide-m', 'gender'],\n header: 'label.gender',\n sortable: true,\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n },\n\n geneticDamId: {\n accessor: 'geneticDamId',\n header: 'label.geneticDamId',\n sortable: true\n },\n\n genotype: {\n accessor: 'genotype',\n classNames: ['genotype'],\n header: 'label.genotype',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? he.decode(value) : ''}\n );\n }\n },\n\n quantity: {\n accessor: 'animalTotal',\n classNames: ['align-right', 'qty'],\n header: 'label.totalAnimals',\n sortable: true\n },\n\n replacedBy: {\n render: ({ t }) => {\n return (\n <>{t('tagging.replacement.replacedBy')}\n );\n }\n },\n\n sireId: {\n accessor: 'sireId',\n header: 'label.sireId',\n sortable: true\n },\n\n tagNumber: {\n accessor: 'tagNumber',\n classNames: ['tag-number'],\n header: 'label.tagNumber',\n sortable: true\n },\n\n tagNumberNew: {\n accessor: 'newTagNumber',\n header: 'label.newTagNumber',\n sortable: true\n },\n\n tagNumberOld: {\n accessor: 'oldTagNumber',\n header: 'label.oldTagNumber',\n sortable: true\n }\n },\n\n bo: {\n animalActivity: {\n appliedBy: {\n accessor: 'replacementHolding',\n header: 'label.appliedBy',\n render: ({ value }) => {\n return (\n <>{value ? value : '-'}\n );\n }\n },\n\n arrivalDate: {\n accessor: 'arrivalDateTime',\n classNames: ['hide-m', 'date'],\n header: 'label.arrivalDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n breed: {\n accessor: 'breed.name',\n header: 'label.breed',\n sortable: true,\n render: ({ t, value }) => {\n return (\n <>{value ? he.decode(value) : t('label.unknown')}\n );\n }\n },\n\n dob: {\n accessor: 'beginBirthPeriod',\n classNames: ['date'],\n header: 'label.dateBirth',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n departureCph: {\n accessor: 'sourceHolding',\n header: 'label.departureCPH',\n sortable: true,\n render: ({ row, value }) => {\n return (\n <>{value === constants.cph.none ? row.destinationHolding : value}\n );\n }\n },\n\n departureDate: {\n accessor: 'departureDateTime',\n classNames: ['date'],\n header: 'label.departureDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n destinationCph: {\n accessor: 'destinationHolding',\n header: 'label.destinationCPH',\n sortable: true,\n render: ({ row, value }) => {\n return (\n <>{row.sourceHolding === constants.cph.none ? constants.cph.none : value}\n );\n }\n },\n\n gender: {\n accessor: 'genderSpecies.name',\n classNames: ['gender'],\n header: 'label.gender',\n sortable: true,\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n },\n\n movementRef: {\n accessor: 'movementDocumentRef',\n header: 'label.movementRef',\n sortable: true\n },\n\n replacementDate: {\n accessor: 'replacementDate',\n classNames: ['date'],\n header: 'label.applicationDate',\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n replacedIdentifier: {\n accessor: 'replacedIdentifier',\n header: 'label.tagNumber'\n },\n\n replacingIdentifier: {\n accessor: 'replacingIdentifier',\n header: 'label.replacementTagNumber'\n },\n\n requestId: (params) => ({\n accessor: 'requestId',\n classNames: ['align-right', 'request-id'],\n header: 'label.requestId',\n sortable: params.sortable\n }),\n\n systemMove: {\n accessor: 'isSystemMove',\n header: 'label.systemMove',\n sortable: true,\n render: ({ t, value }) => (\n <>{t(value ? 'label.yes' : 'label.no')}\n )\n },\n\n tagNumber: {\n accessor: 'tagNumber',\n header: 'label.tagNumber',\n sortable: true\n }\n },\n\n holdingActivity: {\n adjacentCph: {\n accessor: 'adjacentHolding',\n header: 'label.adjacentMoveCph'\n },\n\n age: {\n accessor: 'ageToDisplay',\n header: 'label.age',\n sortable: true,\n sortColumn: 'endBirthPeriod',\n sortReverse: true,\n render: ({ t, value }) => {\n return (\n <>{value === 0 ? t('label.ageOneYear.under') : value === '-' ? value : value >= 1 ? value + t('label.ageOneYear.above') : value}\n );\n }\n },\n\n animalsAddedDate: {\n accessor: 'content.dateAnimalsWereLocated',\n classNames: ['date'],\n header: 'label.eventDate',\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n birthYear: {\n accessor: 'dobToDisplay',\n classNames: ['align-right', 'year-dob'],\n header: 'label.yearDob',\n sortable: true,\n sortColumn: 'beginBirthPeriod',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n },\n\n breedName: {\n accessor: 'breedName',\n header: 'label.breed',\n sortable: true,\n render: ({ t, value }) => {\n return (\n <>{value ? he.decode(value) : t('label.unknown')}\n );\n }\n },\n\n breedName2: {\n accessor: 'breed.name',\n header: 'label.breed',\n render: ({ t, value }) => {\n return (\n <>{value ? he.decode(value) : t('label.unknown')}\n );\n }\n },\n\n cph: {\n accessor: 'cph',\n header: 'label.cph'\n },\n\n createRequestId: {\n accessor: 'createRequestId',\n classNames: ['hide-m', 'align-right', 'request-id'],\n header: 'label.requestId',\n sortable: true\n },\n\n dateArrival: {\n accessor: 'arrivalDateTime',\n classNames: ['date'],\n header: 'label.dateArrival',\n sortable: true,\n render: ({ value }) => helpers.date.format(value)\n },\n\n dateDeparture: {\n accessor: 'departureDateTime',\n classNames: ['date'],\n header: 'label.dateDeparture',\n sortable: true,\n render: ({ value }) => helpers.date.format(value)\n },\n\n departureHolding: {\n accessor: 'sourceHolding',\n header: 'label.departureCPH',\n sortable: true,\n render: ({ row }) => row.sourceHolding + (helpers.option.recordBy.isByDeparture(row.recordedBy) ? '*' : '')\n },\n\n destinationHolding: {\n accessor: 'destinationHolding',\n header: 'label.destinationCPH',\n sortable: true,\n render: ({ row }) => row.destinationHolding + (helpers.option.recordBy.isByDestination(row.recordedBy) ? '*' : '')\n },\n\n disposalLocation: {\n accessor: 'disposalLocation',\n header: 'label.locationOfCarcass',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? he.decode(value) : ''}\n );\n }\n },\n\n dob: {\n accessor: 'dobToDisplay',\n header: 'label.yearDob',\n sortable: true,\n sortColumn: 'beginBirthPeriod',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n },\n\n endDate: {\n accessor: 'endDate',\n classNames: ['date'],\n header: 'label.endDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n formatAppliedDate: {\n accessor: 'dateApplied',\n classNames: ['date'],\n header: 'label.dateOfId',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n formatDeathDate: {\n accessor: 'deathDate',\n classNames: ['date'],\n header: 'holdingRegister.header.formatDeathDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n formatEnteredDate: {\n accessor: 'enteredDate',\n classNames: ['date'],\n header: 'holdingRegister.header.formatEnteredDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n formatInventoryDate: {\n accessor: 'inventoryDate',\n classNames: ['date'],\n header: 'holdingRegister.header.formatInventoryDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n formatMovementDate: {\n accessor: 'movementDate',\n classNames: ['date'],\n header: 'label.movementDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n formatReplacementDate: {\n accessor: 'replacementDate',\n classNames: ['date'],\n header: 'holdingRegister.header.formatReplacementDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n frequency: {\n accessor: 'holdingLinkTypeOption.name',\n header: 'label.frequencyOfMovement',\n render: ({ t, value }) => {\n return (\n <>{t('label.animalsMoved')} {value.toLowerCase()}\n );\n }\n },\n\n genderId: {\n accessor: 'genderId',\n classNames: ['gender'],\n header: 'label.gender',\n render: ({ t, value }) => {\n return (\n <>{t('label.' + helpers.gender.idToName(value))}\n );\n }\n },\n\n genderName: {\n accessor: 'genderName',\n classNames: ['gender'],\n header: 'label.gender',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n },\n\n genotype: {\n accessor: 'genotype',\n classNames: ['genotype'],\n header: 'label.genotype',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? he.decode(value) : ''}\n );\n }\n },\n\n holdingName: {\n accessor: 'name',\n header: 'label.holdingName'\n },\n\n holdingType: {\n header: 'label.holdingType',\n render: ({ row }) => {\n return (\n <>{row.holdingType.fullName} [{row.holdingType.name}]\n );\n }\n },\n\n id: {\n accessor: 'id',\n classNames: ['hide-m', 'align-right', 'request-id'],\n header: 'label.requestId',\n sortable: true\n },\n\n movementDirection: {\n header: 'label.direction',\n render: ({ row }) => {\n return (\n <>{(row.userHolding === row.sourceHolding ? constants.option.movement.off : constants.option.movement.on).toUpperCase()}\n );\n }\n },\n\n movementRef: {\n accessor: 'documentRef',\n classNames: ['align-right'],\n header: 'label.movementRef',\n sortable: true\n },\n\n noOfAnimalsIdentified: {\n accessor: 'animalTotal',\n classNames: ['align-right', 'qty'],\n header: 'label.qty',\n sortable: true\n },\n\n noOfAnimalsInInventory: (params) => ({\n accessor: 'quantity',\n classNames: ['align-right', 'qty-wide'],\n header: 'holdingRegister.header.noOfAnimalsInInventory.' + (params.speciesId ? params.speciesId : '0'),\n sortable: true\n }),\n\n noOfAnimalsMoved: {\n accessor: 'animalTotal',\n classNames: ['align-right'],\n header: 'label.numberMoved',\n sortable: true\n },\n\n noOfAnimalsDied: {\n accessor: 'animalTotal',\n classNames: ['align-right', 'qty-wide'],\n header: 'label.qty',\n sortable: true\n },\n\n noOfAnimalsReplaced: {\n accessor: 'quantity',\n classNames: ['align-right', 'qty'],\n header: 'label.qty'\n },\n\n otherCph: {\n header: 'label.otherCph',\n render: ({ row }) => {\n return (\n <>{row.userHolding === row.sourceHolding ? row.sourceHolding : row.destinationHolding}\n );\n }\n },\n\n quantity: {\n accessor: 'animalTotal',\n classNames: ['align-right', 'qty'],\n header: 'label.qty',\n sortable: true\n },\n\n quantityDevicesWithDetail: {\n accessor: 'content.devicesWithDetail',\n classNames: ['align-right', 'qty-wide'],\n header: 'label.quantity',\n render: ({ value }) => {\n return (\n <>{value.length}\n );\n }\n },\n\n replacedAnimalIdentifier: {\n accessor: 'replacedAnimalIdentifier',\n header: 'label.previousTagNumber',\n sortable: true,\n render: ({ row }) => {\n return (\n \n );\n }\n },\n\n replacingAnimalIdentifier: {\n accessor: 'replacingAnimalIdentifier',\n header: 'label.replacementTagNumber',\n sortable: true,\n render: ({ row }) => {\n return (\n \n );\n }\n },\n\n requestId: {\n accessor: 'requestId',\n classNames: ['hide-m', 'align-right', 'request-id'],\n header: 'label.requestId',\n sortable: true\n },\n\n speciesId: {\n accessor: 'speciesId',\n classNames: ['species'],\n header: 'label.species',\n render: ({ value }) => {\n return (\n <>{value ? helpers.species.idToName(value) : ''}\n );\n }\n },\n\n speciesName: {\n accessor: 'species',\n classNames: ['species'],\n header: 'label.species'\n },\n\n speciesNameContent: {\n accessor: 'content.species',\n classNames: ['species'],\n header: 'label.species',\n sortable: true,\n sortReverse: true\n },\n\n status: {\n accessor: 'requestStatus',\n classNames: ['status'],\n header: 'label.requestStatus',\n render: ({ t, value }) => {\n switch (value) {\n case constants.status.success:\n return ;\n case constants.status.completed_warning:\n return ;\n case constants.status.completed_error:\n return ;\n case constants.status.error:\n return ;\n case constants.status.cancelled:\n return ;\n case constants.status.claPending:\n return ;\n case constants.status.pending:\n return ;\n case constants.status.processing:\n return ;\n default:\n return null;\n }\n }\n },\n\n startDate: {\n accessor: 'startDate',\n classNames: ['date'],\n header: 'label.startDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n tagNumber: {\n accessor: 'tagNumber',\n header: 'label.tagNumber',\n sortable: true\n },\n\n tagOrBatchNumber: {\n accessor: 'animalIdentifiers',\n header: 'label.tagNumberOrBatch',\n sortable: true,\n sortColumn: 'delimitedAnimalIdentifier',\n render: ({ value }) => {\n return (\n <>{value.join(', ')}\n );\n }\n },\n\n vaRCVS: {\n accessor: 'vetRCVS',\n header: 'RCVS number'\n },\n\n vaStartDate: {\n accessor: 'startDate',\n header: 'Visit date',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n vaExpiryDate: {\n accessor: 'vetAttestationExpiryDate',\n header: 'Expiry date',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n vaStatus: {\n accessor: 'vetAttestationStatus',\n header: 'Vet attestation status',\n sortable: true\n },\n\n vaViewLink: {\n header: 'Record',\n accessor: 'id',\n render: ({ value }) => {\n if (helpers.tag.canLink(value)) {\n return (\n \n );\n }\n }\n }\n },\n\n movementSearch: {\n actionPaper: (params) => ({\n accessor: 'tagNumber',\n header: 'label.view',\n render: ({ row }) => {\n const id = row.values.id ? row.values.id : row.documentRef;\n return (\n \n );\n }\n }),\n\n approved: {\n accessor: 'confirmed',\n classNames: ['confirmed'],\n header: 'label.confirmedShort',\n render: ({ row, t }) => helpers.messageStatus.isUnknown(row.movementStatus) ? t('label.no') : row.movementStatus\n },\n\n arrival: {\n accessor: 'movementDocument',\n classNames: ['date'],\n header: 'backOfficeLanding.arrivalDate',\n render: ({ row }) => {\n const { arrivalDate } = row.movementDocument.destinationDetail;\n\n if (arrivalDate) {\n return helpers.date.format(helpers.date.toDate(\n arrivalDate.year,\n arrivalDate.month,\n arrivalDate.day\n ));\n }\n\n return null;\n }\n },\n\n confirmed: {\n classNames: ['align-center', 'confirmed'],\n header: 'label.confirmedShort',\n render: ({ row, t }) => (\n <>\n {helpers.messageStatus.isUnknown(row.movementStatus) ? t('label.no') : row.movementStatus}\n \n )\n },\n\n dateArrival: {\n accessor: 'arrivalDateTime',\n classNames: ['date'],\n header: 'label.dateArrival',\n sortable: true,\n render: ({ value }) => helpers.date.format(value)\n },\n\n dateDeparture: {\n accessor: 'departureDateTime',\n classNames: ['date'],\n header: 'label.dateDeparture',\n sortable: true,\n render: ({ value }) => helpers.date.format(value)\n },\n\n depart: {\n accessor: 'movementDocument2',\n classNames: ['date'],\n header: 'backOfficeLanding.departureDate',\n sortable: true,\n render: ({ row, t }) => row.movementDocument?.departureDetail?.departureDate\n ? helpers.date.format(helpers.date.toDate(\n row.movementDocument.departureDetail.departureDate.year,\n row.movementDocument.departureDetail.departureDate.month,\n row.movementDocument.departureDetail.departureDate.day\n ))\n : t('label.noData')\n },\n\n departureHolding: {\n accessor: 'sourceHolding',\n classNames: ['departure-cph'],\n header: 'label.departureCPH',\n sortable: true,\n render: ({ row }) => row.sourceHolding + (helpers.option.recordBy.isByDeparture(row.recordedBy) ? '*' : '')\n },\n\n destinationHolding: {\n accessor: 'destinationHolding',\n classNames: ['destination-cph'],\n header: 'label.destinationCPH',\n sortable: true,\n render: ({ row }) => row.destinationHolding + (helpers.option.recordBy.isByDestination(row.recordedBy) ? '*' : '')\n },\n\n fromHolding: {\n accessor: 'fromHolding',\n classNames: ['departure-cph'],\n header: 'label.departureCPH',\n sortable: true,\n render: ({ row }) => row.fromHolding + (helpers.option.recordBy.isByDeparture(row.recordedBy) ? '*' : '')\n },\n\n movementDate: {\n accessor: 'movementDate',\n classNames: ['date'],\n header: 'label.transferDate',\n sortable: true,\n render: ({ value }) => helpers.date.format(value)\n },\n\n movementRef: {\n accessor: 'movementRef',\n classNames: ['ref', 'hide-m', 'align-right'],\n header: 'label.referenceShort',\n sortable: true\n },\n\n paperArrivalCPH: {\n accessor: 'movementDocument.destinationDetail.holding',\n header: 'label.receivingCPH',\n sortable: true\n },\n\n paperCount: {\n accessor: 'movementDocument.destinationDetail.totalAnimalsReceived',\n header: 'label.qty',\n sortable: true\n },\n\n paperDepartCPH: {\n accessor: 'movementDocument.departureDetail.holding',\n header: 'label.departureCPH',\n sortable: true\n },\n\n paperId: {\n accessor: 'id',\n header: 'label.paperId',\n sortable: true\n },\n\n quantity: {\n accessor: 'animalTotal',\n classNames: ['align-right', 'qty'],\n header: 'label.qty',\n sortable: true\n },\n\n species: {\n accessor: 'species',\n classNames: ['species'],\n header: 'label.species',\n sortable: true\n },\n\n toHolding: {\n accessor: 'toHolding',\n classNames: ['destination-cph'],\n header: 'label.destinationCPH',\n sortable: true,\n render: ({ row }) => row.toHolding + (helpers.option.recordBy.isByDestination(row.recordedBy) ? '*' : '')\n }\n },\n\n userActivity: {\n quantity: {\n accessor: 'content.animalCount',\n classNames: ['hide-s', 'align-right', 'qty'],\n header: 'label.qty'\n },\n\n requestId: {\n accessor: 'requestId',\n classNames: ['hide-m', 'align-right', 'request-id'],\n header: 'label.requestId'\n },\n\n species: {\n accessor: 'content.species',\n classNames: ['hide-s', 'species'],\n header: 'label.species',\n render: ({ t, value }) => {\n return (\n <>{t('label.species-' + value.toLowerCase())}\n );\n }\n },\n\n status: {\n accessor: 'status',\n classNames: ['status'],\n header: 'label.requestStatus',\n render: ({ t, value }) => {\n switch (value) {\n case constants.status.success:\n return ;\n case constants.status.completed_warning:\n return ;\n case constants.status.completed_error:\n return ;\n case constants.status.error:\n return ;\n case constants.status.cancelled:\n return ;\n case constants.status.claPending:\n return ;\n case constants.status.pending:\n return ;\n case constants.status.processErrors:\n return ;\n case constants.status.processing:\n return ;\n default:\n return null;\n }\n }\n },\n\n userCph: {\n accessor: 'content.holding',\n classNames: ['user-cph'],\n header: 'label.userCPH',\n render: ({ value }) => {\n return (\n <>{value ? value : '-'}\n );\n }\n },\n\n all: {\n dateReported: {\n accessor: 'requestDate',\n classNames: ['date'],\n header: 'label.reportedDate',\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n eventType: {\n accessor: 'requestTypeId',\n header: 'label.eventType',\n render: ({ value }) => {\n const eventType = storeService.session.get.requestTypes().find((type) => type.id === value).name;\n\n return (\n <>{eventType ? eventType : '-'}\n );\n }\n }\n },\n\n animalsAdded: {\n eventDate: {\n accessor: 'content.dateAnimalsWereLocated',\n classNames: ['date'],\n header: 'label.eventDate',\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n quantity: {\n accessor: 'animalsAddedQuantity',\n classNames: ['hide-s', 'align-right', 'qty'],\n header: 'label.qty'\n }\n },\n\n annualInventory: {\n dateEntered: {\n accessor: 'annualInventory.enteredDate',\n classNames: ['date'],\n header: 'holdingRegister.header.formatEnteredDate',\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n inventoryDate: {\n accessor: 'annualInventory.inventoryDate',\n classNames: ['date'],\n header: 'holdingRegister.header.formatInventoryDate',\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n quantity: {\n accessor: 'annualInventory.total',\n classNames: ['hide-s', 'align-right', 'qty'],\n header: 'label.qty'\n },\n\n species: {\n accessor: 'annualInventory.species',\n classNames: ['species'],\n header: 'label.species'\n },\n\n userCph: {\n accessor: 'annualInventory.holding',\n classNames: ['user-cph'],\n header: 'label.userCPH'\n }\n },\n\n deaths: {\n carcassLocation: {\n accessor: 'content.approvedDisposalRoute',\n classNames: ['hide-m', 'carcass-location'],\n header: 'label.carcassLocation',\n render: ({ value }) => {\n return (\n <>{value ? he.decode(value) : '-'}\n );\n }\n },\n\n eventDate: {\n accessor: 'content.killDate',\n classNames: ['date'],\n header: 'label.eventDate',\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n quantity: {\n accessor: 'deathQuantity',\n classNames: ['hide-s', 'align-right', 'qty'],\n header: 'label.qty'\n }\n },\n\n movements: {\n arrivalDate: {\n accessor: 'content.movementDocument.destinationDetail.arrivalDateTime',\n classNames: ['hide-m', 'date'],\n header: 'label.arrivalDate',\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n departureCph: {\n accessor: 'content.sourceHolding',\n classNames: ['departure-cph'],\n header: 'label.departureCPH'\n },\n\n departureDate: {\n accessor: 'content.movementDocument.departureDetail.departureDateTime',\n classNames: ['date'],\n header: 'label.departureDate',\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n destinationCph: {\n accessor: 'content.destinationHolding',\n classNames: ['destination-cph'],\n header: 'label.destinationCPH'\n },\n\n movementReference: {\n accessor: 'content.movementDocument.movementDocumentRef',\n classNames: ['movement-reference', 'hide-m', 'align-right'],\n header: 'label.movementRef',\n render: ({ value }) => {\n return (\n <>{value ? value : '-'}\n );\n }\n }\n },\n\n movementReviews: {\n arrivalDate: {\n accessor: 'content.reviewMovement.arrivalDate',\n classNames: ['hide-m', 'date'],\n header: 'label.arrivalDate',\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n dateReported: {\n accessor: 'requestDate',\n classNames: ['date'],\n header: 'label.reportedDate',\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n movementReference: {\n accessor: 'content.documentRef',\n classNames: ['movement-reference', 'hide-m', 'align-right'],\n header: 'label.movementRef'\n },\n\n quantity: {\n accessor: 'notificationQuantity',\n classNames: ['align-right', 'qty-wide'],\n header: 'label.qtyAccepted'\n }\n },\n\n tagging: {\n eventDate: {\n accessor: 'taggingDate',\n classNames: ['date'],\n header: 'label.eventDate',\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n quantity: {\n accessor: 'taggingQuantity',\n classNames: ['align-right', 'qty'],\n header: 'label.qty'\n }\n }\n },\n\n verifyCustomer: {\n cphNumber: {\n accessor: 'cph',\n header: 'boApp.label.cphNumber',\n sortable: true\n },\n\n holdingAddress: {\n accessor: 'holdingAddress',\n header: 'boApp.label.holdingAddress',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? he.decode(value) : ''}\n );\n }\n },\n\n holdingName: {\n accessor: 'holdingName',\n header: 'boApp.label.holdingName',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? he.decode(value) : ''}\n );\n }\n },\n\n holdingPostcode: {\n accessor: 'holdingPostcode',\n header: 'boApp.label.holdingPostcode',\n sortable: true\n },\n\n holdingType: {\n accessor: 'holdingTypeFullName',\n header: 'boApp.label.holdingType',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? he.decode(value) : ''}\n );\n }\n },\n\n keeperName: {\n accessor: 'keeperName',\n header: 'boApp.label.keeperName',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? he.decode(value) : ''}\n );\n }\n }\n }\n },\n\n deathsMissingAndFound: {\n action: (params) => ({\n accessor: 'tagNumber',\n classNames: ['action', 'align-right'],\n render: ({ row }) => {\n if (params.actionType === 'toggle') {\n return (\n params.actionFunction(row, id)}\n />\n );\n }\n return (\n params.actionFunction(row)}\n />\n );\n }\n }),\n\n actionBatch: (params) => ({\n classNames: ['action', 'align-right'],\n render: ({ row }) => {\n return (\n params.removeBatch(row)}\n />\n );\n }\n }),\n\n age: (params) => ({\n accessor: 'ageToDisplay',\n classNames: ['hide-l', 'age'],\n header: 'label.age',\n sortable: params.sortable !== undefined ? params.sortable : true,\n sortColumn: 'endBirthPeriod',\n render: ({ t, value }) => {\n return (\n <>{value === 0 ? t('label.ageOneYear.under') : value === '-' ? value : value >= 1 ? value + t('label.ageOneYear.above') : value}\n );\n }\n }),\n\n batchNumber: (params) => ({\n accessor: 'batchNumber',\n header: 'label.batchNumber' + params.speciesId,\n render: ({ t, value }) => {\n return (\n <>{value ? value : t('label.notSupplied')}\n );\n }\n }),\n\n breed: (params) => ({\n accessor: 'breedName',\n classNames: ['hide-m'],\n header: 'label.breed',\n sortable: params.sortable !== undefined ? params.sortable : true,\n render: ({ t, value }) => {\n return (\n <>{value ? he.decode(value) : t('label.unknown')}\n );\n }\n }),\n\n dob: (params) => ({\n accessor: 'dobToDisplay',\n classNames: ['hide-s', 'align-right', 'year-dob'],\n header: 'label.yearDob',\n sortable: params.sortable !== undefined ? params.sortable : true,\n sortColumn: 'beginBirthPeriod',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n }),\n\n gender: (params) => ({\n accessor: 'genderName',\n classNames: ['hide-m', 'gender'],\n header: 'label.gender',\n sortable: params.sortable !== undefined ? params.sortable : true,\n sortColumn: 'genderId',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n }),\n\n quantity: {\n accessor: 'animalTotal',\n classNames: ['align-right', 'qty'],\n header: 'label.totalAnimals'\n },\n\n status: {\n classNames: ['status', 'status-wide'],\n header: 'label.status',\n render: ({ row, t }) => {\n return (\n <>{helpers.batch.isInvalid(row) ? t('label.invalid') : ''}\n );\n }\n },\n\n tagNumber: (params) => ({\n accessor: 'tagNumber',\n header: 'label.tagNumber',\n sortable: params.sortable !== undefined ? params.sortable : true\n })\n },\n\n editCustomer: {\n address: {\n accessor: 'address',\n header: 'boApp.label.address',\n sortable: true\n },\n\n dateOfDeath: {\n accessor: 'dateOfDeath',\n classNames: ['date'],\n header: 'boApp.label.dateOfDeath',\n sortable: true\n },\n\n deathReference: {\n accessor: 'id',\n header: 'boApp.label.deathReference',\n sortable: true\n },\n\n departureDate: {\n accessor: 'departureDate',\n classNames: ['date'],\n header: 'boApp.label.departureDate',\n sortable: true\n },\n\n disposalRoute: {\n accessor: 'disposalRoute',\n header: 'boApp.label.disposalRoute',\n sortable: true\n },\n\n id: {\n accessor: 'id',\n header: 'boApp.label.id',\n sortable: true\n },\n\n movementReference: {\n accessor: 'movementRef',\n header: 'boApp.label.movementReference',\n sortable: true\n },\n\n numberOfAnimals: {\n accessor: 'numberOfAnimals',\n header: 'boApp.label.numberOfAnimals',\n sortable: true\n },\n\n species: {\n accessor: 'species',\n classNames: ['species'],\n header: 'label.species',\n sortable: true\n }\n },\n\n fci: {\n tagNumber: (params) => ({\n accessor: 'tagNumber',\n header: 'label.tagNumber',\n sortable: true,\n render: ({ row }) => {\n return (\n params.animalSelected(row.tagNumber)}\n type=\"checkbox\"\n value={Boolean(row.tagNumber)}\n />\n );\n }\n }),\n\n breed: {\n accessor: 'breedId',\n classNames: ['hide-m'],\n header: 'label.breed',\n sortable: true,\n render: ({ row }) => {\n return (\n <>{breedsHelper.getBreedName(row.breedId)}\n );\n }\n },\n\n gender: {\n accessor: 'gender',\n classNames: ['hide-m', 'gender'],\n header: 'label.gender',\n sortable: true,\n render: ({ row }) => {\n return (\n <>{row.genderName}\n );\n }\n },\n\n dob: {\n accessor: 'dob',\n classNames: ['hide-s', 'align-right', 'year-dob'],\n header: 'label.yearDob',\n sortable: true,\n render: ({ row }) => {\n return (\n <>{helpers.date.format(row.dob)}\n );\n }\n }\n },\n\n gatheringSearch: {\n arrivalDate: (params) => ({\n accessor: params.movementStatus === 'unconfirmed' ? 'arrivalDateTime' : 'movementDocument.destinationDetail.arrivalDateTime',\n classNames: ['date'],\n header: 'label.arrivalDate',\n sortable: helpers.tab.isMovementRange(params.activeTabId) && params.movementStatus === 'unconfirmed' && params.movementType === 'off',\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n }),\n\n cph: (params) => ({\n accessor: helpers.option.movement.isOn(params.movementType)\n ? (params.movementRef ? 'fromHolding' : 'sourceHolding')\n : (params.movementRef ? 'toHolding' : 'destinationHolding'),\n header: helpers.option.movement.isOn(params.movementType) ? 'label.departureCPH' : 'label.destinationCPH',\n sortable: helpers.tab.isMovementRange(params.activeTabId)\n }),\n\n departureDate: (params) => ({\n accessor: params.movementStatus === 'unconfirmed' ? 'departureDateTime' : 'movementDocument.departureDetail.departureDateTime',\n classNames: ['date'],\n header: 'label.departureDate',\n sortable: helpers.tab.isMovementRange(params.activeTabId) && params.movementStatus === 'unconfirmed',\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n }),\n\n movementReference: (params) => ({\n accessor: helpers.tab.isMovementRange(params.activeTabId) && params.movementStatus === 'unconfirmed' ? 'documentRef' : 'movementDocument.movementDocumentRef',\n header: 'label.movementRef',\n sortable: helpers.tab.isMovementRange(params.activeTabId) && params.movementStatus === 'unconfirmed',\n render: ({ row }) => {\n return (\n <>{row?.movementDocument?.movementDocumentRef ? row.movementDocument.movementDocumentRef : row.documentRef}\n );\n }\n }),\n\n quantity: (params) => ({\n accessor: 'animalTotal',\n classNames: ['align-right', 'qty'],\n header: 'label.qty',\n sortable: helpers.tab.isMovementRange(params.activeTabId),\n render: ({ value }) => {\n return (\n <>{value}\n );\n }\n })\n },\n\n handshake: {\n actionRemoveIndividual: (params) => ({\n classNames: ['action', 'align-right'],\n render: ({ row }) => {\n return (\n params.removeAnimal(row)}\n />\n );\n }\n }),\n\n actionRestoreIndividual: (params) => ({\n classNames: ['action', 'align-right'],\n render: ({ row }) => {\n return (\n params.restoreAnimal(row)}\n />\n );\n }\n }),\n\n actionRemoveBatch: (params) => ({\n classNames: ['action', 'align-right'],\n render: ({ row }) => {\n return (\n params.removeBatch(row)}\n />\n );\n }\n }),\n\n actionRestoreBatch: (params) => ({\n classNames: ['action', 'align-right'],\n render: ({ row }) => {\n return (\n params.restoreBatch(row)}\n />\n );\n }\n }),\n\n age: {\n accessor: 'ageToDisplay',\n classNames: ['date'],\n header: 'label.age',\n render: ({ t, value }) => {\n return (\n <>{value === 0 ? t('label.ageOneYear.under') : value === '-' ? value : value >= 1 ? value + t('label.ageOneYear.above') : value}\n );\n }\n },\n\n batchNumber: (params) => ({\n accessor: 'batchNumber',\n header: 'label.batchNumber' + params.speciesId\n }),\n\n breed: {\n accessor: 'breed',\n header: 'label.breed'\n },\n\n dob: {\n accessor: 'dobToDisplay',\n classNames: ['date'],\n header: 'label.yearDob'\n },\n\n gender: {\n accessor: 'genderName',\n classNames: ['gender'],\n header: 'label.gender'\n },\n\n quantity: {\n accessor: 'animalTotal',\n header: 'label.qty'\n },\n\n status: {\n classNames: ['status'],\n header: 'label.status',\n render: ({ row, t }) => {\n return (\n <>{helpers.tag.isInvalid(row) ? t('label.invalid') : ''}\n );\n }\n },\n\n tagNumber: {\n accessor: 'tagNumber',\n header: 'label.tagNumber'\n }\n },\n\n holdingRegister: {\n adjacentCph: {\n accessor: 'adjacentHolding',\n header: 'label.adjacentMoveCph'\n },\n\n birthYear: {\n accessor: 'beginBirthPeriod',\n classNames: ['align-right', 'year-of-birth'],\n header: 'holdingRegister.header.birthYear',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? moment(value).format('YYYY') : ''}\n );\n }\n },\n\n breed: {\n accessor: 'breed.name',\n header: 'holdingRegister.header.breed',\n sortable: true,\n render: ({ t, value }) => {\n return (\n <>{value ? he.decode(value) : t('label.unknown')}\n );\n }\n },\n\n comments: {\n accessor: 'comment',\n classNames: ['comment'],\n header: 'holdingRegister.header.comments',\n hint: (value) => value ? value : null,\n sortable: true,\n render: ({ value }) => {\n return (\n {value}\n );\n }\n },\n\n deleteRecord: (params) => ({\n classNames: ['action', 'align-right'],\n header: 'holdingRegister.header.deleteRecord',\n render: ({ row }) => {\n return (\n params.showDeleteConfirm(row)}\n />\n );\n }\n }),\n\n disposalLocation: {\n accessor: 'disposalLocation',\n header: 'holdingRegister.header.disposalLocation',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? he.decode(value) : ''}\n );\n }\n },\n\n download: (params) => ({\n classNames: ['download', 'align-right'],\n header: 'holdingRegister.header.downloadMovementDocument',\n render: ({ row }) => {\n if (helpers.holdingRegister.downloadPdfLink(row)) {\n return (\n \n );\n }\n\n return <>;\n }\n }),\n\n endDate: {\n accessor: 'endDate',\n classNames: ['date'],\n header: 'label.endDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n formatAppliedDate: {\n accessor: 'dateApplied',\n classNames: ['date'],\n header: 'holdingRegister.header.formatAppliedDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n formatArrivalDate: {\n accessor: 'movementDate',\n classNames: ['date'],\n header: 'holdingRegister.header.formatArrivalDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n formatDeathDate: {\n accessor: 'deathDate',\n classNames: ['date'],\n header: 'holdingRegister.header.formatDeathDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n formatDepartureDate: {\n accessor: 'movementDate',\n classNames: ['date'],\n header: 'holdingRegister.header.formatDepartureDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n formatEnteredDate: {\n accessor: 'enteredDate',\n classNames: ['date'],\n header: 'holdingRegister.header.formatEnteredDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n formatInventoryDate: {\n accessor: 'inventoryDate',\n classNames: ['date'],\n header: 'holdingRegister.header.formatInventoryDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n formatMovementDate: {\n accessor: 'movementDate',\n classNames: ['date'],\n header: 'holdingRegister.header.formatMovementDate',\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n formatReplacementDate: {\n accessor: 'replacementDate',\n classNames: ['date'],\n header: 'holdingRegister.header.formatReplacementDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n frequency: {\n accessor: 'holdingLinkTypeOption.name',\n header: 'label.frequencyOfMovement',\n render: ({ t, value }) => {\n return (\n <>{t('label.animalsMoved')} {value.toLowerCase()}\n );\n }\n },\n\n genotype: {\n accessor: 'genotype',\n classNames: ['genotype'],\n header: 'holdingRegister.header.genotype',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? he.decode(value) : ''}\n );\n }\n },\n\n noOfAnimalsDied: {\n accessor: 'animalTotal',\n classNames: ['align-right', 'number-died'],\n header: 'holdingRegister.header.noOfAnimalsDied',\n sortable: true\n },\n\n noOfAnimalsIdentified: {\n accessor: 'animalTotal',\n classNames: ['align-right', 'number-identified'],\n header: 'holdingRegister.header.noOfAnimalsIdentified',\n sortable: true\n },\n\n noOfAnimalsInInventory: (params) => ({\n accessor: 'quantity',\n classNames: ['align-right', 'number-inventory'],\n header: 'holdingRegister.header.noOfAnimalsInInventory.' + params.speciesId,\n sortable: true\n }),\n\n noOfAnimalsMoved: {\n accessor: 'animalTotal',\n classNames: ['align-right', 'number-moved'],\n header: 'holdingRegister.header.noOfAnimalsMoved',\n sortable: true\n },\n\n noOfAnimalsReplaced: {\n accessor: 'quantity',\n classNames: ['align-right', 'number-replaced'],\n header: 'holdingRegister.header.noOfAnimalsReplaced'\n },\n\n ownUseOff: {\n accessor: 'comment',\n classNames: ['comment'],\n header: 'holdingRegister.header.ownUse',\n hint: (value) => value ? value : null,\n sortable: true,\n render: ({ value }) => {\n return (\n {value}\n );\n }\n },\n\n ownUseOn: {\n accessor: 'comment',\n classNames: ['comment'],\n header: 'holdingRegister.header.ownUse',\n hint: (value) => value ? value : null,\n sortable: true,\n render: ({ value }) => {\n return (\n {value}\n );\n }\n },\n\n replacedAnimalIdentifier: {\n accessor: 'replacedAnimalIdentifier',\n header: 'holdingRegister.header.replacedAnimalIdentifier',\n sortable: true,\n render: ({ row }) => {\n return (\n \n );\n }\n },\n\n replacingAnimalIdentifier: {\n accessor: 'replacingAnimalIdentifier',\n header: 'holdingRegister.header.replacingAnimalIdentifier',\n sortable: true,\n render: ({ row }) => {\n return (\n \n );\n }\n },\n\n sourceHoldingFrom: {\n accessor: 'sourceHolding',\n header: 'holdingRegister.header.sourceHoldingFrom',\n sortable: true\n },\n\n sourceHoldingTo: {\n accessor: 'destinationHolding',\n header: 'holdingRegister.header.sourceHoldingTo',\n sortable: true\n },\n\n startDate: {\n accessor: 'startDate',\n classNames: ['date'],\n header: 'label.startDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n tagOrBatchNumber: {\n accessor: 'animalIdentifiers',\n header: 'holdingRegister.header.tagOrBatchNumber',\n sortable: true,\n sortColumn: 'delimitedAnimalIdentifier',\n render: ({ value }) => {\n return (\n <>{value.join(', ')}\n );\n }\n },\n\n transportHaulierName: {\n accessor: 'transportHaulierName',\n classNames: ['haulier'],\n header: 'holdingRegister.header.transportHaulierName',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{value ? he.decode(value) : ''}\n );\n }\n },\n\n transportVehicleRegistrationNo: {\n accessor: 'transportVehicleRegistrationNo',\n classNames: ['registration-number'],\n header: 'holdingRegister.header.transportVehicleRegistrationNo',\n sortable: true\n },\n\n update: (params) => ({\n classNames: ['action', 'align-right'],\n render: ({ row }) => {\n const formattedEndDate = params.getEndDate(row.endDate);\n\n return (\n params.modalShow(formattedEndDate ? 'view' : 'edit', row)}\n />\n );\n }\n })\n },\n\n holdingSelection: {\n action: (params) => ({\n accessor: 'cph',\n classNames: ['select-holding', 'align-right'],\n render: ({ row }) => (\n params.selectHolding(row)}\n />\n )\n }),\n\n cph: {\n accessor: 'cph',\n header: 'label.cphNumber'\n },\n\n holdingAddress: {\n accessor: 'holdingAddress',\n header: 'label.holdingAddress'\n },\n\n holdingName: {\n accessor: 'holdingName',\n header: 'label.holdingName'\n }\n },\n\n holdingSummary: {\n actionRequired: {\n accessor: 'actionRequired',\n header: 'handshake.tableTitle.actionRequired'\n },\n movementDate: {\n accessor: 'movementDate',\n classNames: ['date'],\n header: 'handshake.tableTitle.movementDate',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n summary: {\n accessor: 'summary',\n header: 'handshake.tableTitle.movementSummary'\n },\n\n documentRef: {\n accessor: 'documentRef',\n classNames: ['align-right'],\n header: 'handshake.tableTitle.reference',\n sortable: true\n }\n },\n\n movements: {\n action: (params) => ({\n classNames: ['action', 'align-right'],\n render: ({ row }) => {\n return (\n params.actionFunction(row)}\n />\n );\n }\n }),\n\n age: {\n accessor: 'ageToDisplay',\n header: 'label.age',\n sortable: true,\n sortColumn: 'endBirthPeriod',\n sortReverse: true,\n render: ({ t, value }) => {\n return (\n <>{value === 0 ? t('label.ageOneYear.under') : value === '-' ? value : value >= 1 ? value + t('label.ageOneYear.above') : value}\n );\n }\n },\n\n ageToDisplay: {\n accessor: 'ageToDisplay',\n header: 'label.age',\n sortable: true,\n sortColumn: 'age',\n sortReverse: true,\n render: ({ t, value }) => {\n return (\n <>{value === 0 ? t('label.ageOneYear.under') : value === '-' ? value : value >= 1 ? value + t('label.ageOneYear.above') : value}\n );\n }\n },\n\n batchNumber: (params) => ({\n accessor: 'batchNumber',\n header: 'label.batchNumber' + params.speciesId,\n sortable: true,\n render: ({ t, value }) => {\n return (\n <>{value ? value : t('label.notSupplied')}\n );\n }\n }),\n\n breedId: {\n accessor: 'breedId',\n classNames: ['hide-m'],\n header: 'label.breed',\n sortable: true,\n render: ({ value }) => {\n return (\n <>{breedsHelper.getBreedName(value)}\n );\n }\n },\n\n breedName: {\n accessor: 'breedName',\n header: 'label.breed',\n sortable: true,\n render: ({ t, value }) => {\n return (\n <>{value ? he.decode(value) : t('label.unknown')}\n );\n }\n },\n\n dob: {\n accessor: 'dobToDisplay',\n classNames: ['hide-s', 'align-right', 'year-dob'],\n header: 'label.yearDob',\n sortable: true,\n sortColumn: 'beginBirthPeriod',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n },\n\n dobFci: {\n accessor: 'dob',\n classNames: ['hide-s', 'align-right', 'year-dob'],\n header: 'label.yearDob',\n sortable: true,\n sortColumn: 'beginBirthPeriod',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? helpers.date.format(value) : t('label.unknown')}\n );\n }\n },\n\n dobToDisplay: {\n accessor: 'dobToDisplay',\n classNames: ['hide-s', 'align-right', 'year-dob'],\n header: 'label.yearDob',\n sortable: true,\n sortColumn: 'dob',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n },\n\n genderId: {\n accessor: 'genderName',\n classNames: ['hide-m', 'gender'],\n header: 'label.gender',\n sortable: true,\n sortColumn: 'genderId',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n },\n\n genderName: {\n accessor: 'genderName',\n classNames: ['hide-m', 'gender'],\n header: 'label.gender',\n sortable: true,\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n },\n\n quantity: {\n accessor: 'animalTotal',\n classNames: ['align-right', 'qty-wide'],\n header: 'label.quantity',\n sortable: true\n },\n\n status: {\n classNames: ['status', 'status-wide'],\n header: 'label.status',\n render: ({ row, t }) => {\n if (helpers.tag.isInvalid(row)) {\n return (\n <>{t('label.invalid')}\n );\n }\n\n if (helpers.tag.isNonEid(row)) {\n return (\n <>{t('label.nonEid')}\n );\n }\n\n return '';\n }\n },\n\n tagNumber: (params) => ({\n accessor: 'tagNumber',\n header: 'label.tagNumber',\n sortable: params.sortable\n }),\n\n tagNumberCheckbox: (params) => ({\n accessor: 'tagNumber',\n header: 'label.tagNumber',\n sortable: true,\n render: ({ row, value }) => {\n return (\n params.animalSelected(row)}\n type=\"checkbox\"\n value={Boolean(value)}\n />\n );\n }\n })\n },\n\n movementsGatherings: {\n action: (params) => ({\n classNames: ['action', 'align-right'],\n render: ({ row }) => {\n return (\n params.actionFunction(row)}\n />\n );\n }\n }),\n\n batchNumber: (params) => ({\n accessor: 'batchNumber',\n header: 'label.batchNumber' + params.speciesId,\n sortable: true,\n render: ({ t, value }) => {\n return (\n <>{value ? value : t('label.notSupplied')}\n );\n }\n }),\n\n quantity: {\n accessor: 'animalTotal',\n header: 'label.totalAnimals',\n sortable: true\n },\n\n status: {\n classNames: ['status', 'status-wide'],\n header: 'label.status',\n render: ({ row, t }) => {\n return (\n <>{helpers.batch.isInvalid(row) ? t('label.invalid') : ''}\n );\n }\n },\n\n tagNumber: {\n accessor: 'tagNumber',\n header: 'label.tagNumber',\n sortable: true\n }\n },\n\n paperMovements: {\n action: (params) => ({\n classNames: ['action', 'align-right'],\n render: ({ row }) => {\n return (\n params.removeRow(row)}\n />\n );\n }\n }),\n\n dateTime: {\n accessor: 'date',\n header: 'boApp.label.dateTime',\n sortable: true,\n render: ({ row }) => {\n return (\n <>{helpers.date.formatTime(row.date)}\n );\n }\n },\n\n batchNumber: (params) => ({\n accessor: 'batchNumber',\n header: 'label.batchNumber' + params.speciesId,\n sortable: true\n }),\n\n note: {\n accessor: 'text',\n header: 'boApp.label.note',\n sortable: true\n },\n\n quantity: {\n accessor: 'animalTotal',\n header: 'label.totalAnimals',\n sortable: true\n },\n\n statusBatch: {\n classNames: ['status'],\n id: 'status',\n header: 'label.status',\n render: ({ row, t }) => {\n return (\n <>{helpers.tag.isInvalid(row) ? t('label.invalid') : ''}\n );\n }\n },\n\n statusIndividual: {\n classNames: ['status'],\n id: 'status',\n header: 'label.status',\n render: ({ row, t }) => {\n return (\n <>{helpers.tag.isInvalid(row) ? row.status.value === 'DUPLICATE' ? t('label.duplicate') : t('label.invalid') : ''}\n );\n }\n },\n\n tagNumber: {\n accessor: 'tagNumber',\n header: 'label.tagNumber',\n sortable: true\n },\n\n user: {\n accessor: 'user',\n header: 'boApp.label.byUser',\n sortable: true\n }\n },\n\n spacer: {\n x1: {\n classNames: ['spacer-col-x1']\n },\n\n x2: {\n classNames: ['spacer-col-x2']\n },\n\n x3: {\n classNames: ['spacer-col-x3']\n },\n\n x4: {\n classNames: ['spacer-col-x4']\n }\n },\n\n tagApplication: {\n action: (params) => ({\n accessor: 'tagNumber',\n classNames: ['action', 'align-right'],\n render: ({ row }) => {\n return (\n params.actionFunction(row)}\n />\n );\n }\n }),\n\n batchNumber: (params) => ({\n accessor: 'batchNumber',\n header: 'label.batchNumber' + params.speciesId,\n sortable: true,\n render: ({ t, value }) => {\n return (\n <>{value ? value : t('label.notSupplied')}\n );\n }\n }),\n\n breed: {\n accessor: 'breedId',\n header: 'label.breed',\n render: ({ value }) => {\n return (\n <>{breedsHelper.getBreedName(value)}\n );\n }\n },\n\n dob: {\n accessor: 'dob',\n classNames: ['date'],\n header: 'label.yearDob',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? moment(helpers.date.formatForSubmission(value)).year() : t('label.unknown')}\n );\n }\n },\n\n gender: {\n accessor: 'genderName',\n classNames: ['gender'],\n header: 'label.gender',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n },\n\n quantity: {\n accessor: 'animalTotal',\n classNames: ['align-right', 'qty'],\n header: 'label.totalAnimals',\n sortable: true\n },\n\n status: {\n classNames: ['status', 'status-wide'],\n header: 'label.status',\n render: ({ row, t }) => {\n return (\n <>{helpers.batch.isInvalid(row) ? t('label.invalid') : ''}\n );\n }\n },\n\n tagNumber: {\n accessor: 'tagNumber',\n header: 'label.tagNumber',\n sortable: true\n }\n },\n\n tagReplacement: {\n action: (params) => ({\n accessor: 'tagNumber',\n classNames: ['action', 'align-right'],\n render: ({ row }) => {\n if (row.added) {\n return (\n <>\n );\n }\n\n return (\n params.actionFunction(row)}\n />\n );\n }\n }),\n\n age: (params) => ({\n accessor: 'ageToDisplay',\n classNames: ['hide-l', 'age'],\n header: 'label.age',\n sortable: params.sortable !== undefined ? params.sortable : true,\n sortColumn: 'endBirthPeriod',\n render: ({ t, value }) => {\n return (\n <>{value === 0 ? t('label.ageOneYear.under') : value === '-' ? value : value >= 1 ? value + t('label.ageOneYear.above') : value}\n );\n }\n }),\n\n breed: {\n accessor: 'breedName',\n classNames: ['hide-m'],\n header: 'label.breed',\n render: ({ t, value }) => {\n return (\n <>{value ? he.decode(value) : t('label.unknown')}\n );\n }\n },\n\n dob: (params) => ({\n accessor: 'dobToDisplay',\n classNames: ['hide-s', 'align-right', 'year-dob'],\n header: 'label.yearDob',\n sortable: params.sortable !== undefined ? params.sortable : true,\n sortColumn: 'beginBirthPeriod',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n }),\n\n gender: (params) => ({\n accessor: 'genderName',\n classNames: ['hide-m', 'gender'],\n header: 'label.gender',\n sortable: params.sortable !== undefined ? params.sortable : true,\n sortColumn: 'genderId',\n render: ({ t, value }) => {\n return (\n <>{value && value !== '-' ? value : t('label.unknown')}\n );\n }\n }),\n\n newBatchNumber: {\n accessor: 'newBatch.batch'\n },\n\n newTagNumber: {\n accessor: 'newTag.tag'\n },\n\n oldBatchNumber: {\n accessor: 'oldBatch.batch',\n render: ({ row }) => {\n if (row.oldBatch.batch === config.UNKNOWN.toUpperCase()) {\n return <>{helpers.text.sentenceCase(row.oldBatch.batch)};\n }\n\n return <>{row.oldBatch.batch};\n }\n },\n\n oldTagNumber: {\n accessor: 'oldTag.tag'\n },\n\n quantity: {\n accessor: 'quantity',\n classNames: ['align-right', 'qty'],\n header: 'label.totalAnimals'\n },\n\n replacedBy: {\n render: ({ t }) => {\n return (\n <>{t('tagging.replacement.replacedBy')}\n );\n }\n },\n\n status: {\n classNames: ['status', 'status-wide'],\n header: 'label.status',\n render: ({ row, t }) => {\n if (helpers.tag.isInvalid(row.oldTag) && helpers.tag.isInvalid(row.newTag)) {\n return <>{t('label.invalidBothTags')};\n } else if (helpers.tag.isInvalid(row.oldTag)) {\n return <>{t('label.invalidOldTag')};\n } else if (helpers.tag.isInvalid(row.newTag)) {\n return <>{t('label.invalidNewTag')};\n } else if (helpers.tag.isInvalid(row.oldBatch) && helpers.tag.isInvalid(row.newBatch)) {\n return <>{t('label.invalidBothBatches')};\n } else if (helpers.tag.isInvalid(row.oldBatch)) {\n return <>{t('label.invalidOldBatch')};\n } else if (helpers.tag.isInvalid(row.newBatch)) {\n return <>{t('label.invalidNewBatch')};\n }\n\n return <>;\n }\n },\n\n tagNumber: (params) => ({\n accessor: 'tagNumber',\n header: 'label.tagNumber',\n sortable: params.sortable !== undefined ? params.sortable : true\n })\n },\n\n userActivity: {\n status: {\n accessor: 'status',\n classNames: ['status'],\n header: 'label.requestStatus',\n render: ({ t, value }) => {\n switch (value) {\n case constants.status.success:\n return ;\n case constants.status.completed_warning:\n return ;\n case constants.status.completed_error:\n return ;\n case constants.status.error:\n return ;\n case constants.status.cancelled:\n return ;\n case constants.status.claPending:\n return ;\n case constants.status.pending:\n return ;\n case constants.status.processErrors:\n return ;\n case constants.status.processing:\n return ;\n default:\n return null;\n }\n }\n },\n\n animalsAdded: {\n eventDate: {\n accessor: 'content.dateAnimalsWereLocated',\n classNames: ['date'],\n header: 'label.eventDate',\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n quantity: {\n accessor: 'content.devices',\n header: 'label.qty',\n classNames: ['hide-s', 'align-right', 'qty'],\n render: ({ value }) => {\n return (\n <>{value.length}\n );\n }\n },\n\n quantityAnimalsAdded: {\n accessor: 'content.devicesWithDetail',\n header: 'label.qty',\n classNames: ['hide-s', 'align-right', 'qty'],\n render: ({ value }) => {\n return (\n <>{value.length}\n );\n }\n },\n\n requestId: {\n accessor: 'requestId',\n classNames: ['hide-m', 'align-right', 'request-id'],\n header: 'label.reference'\n },\n\n species: {\n accessor: 'content.species',\n classNames: ['hide-s', 'species'],\n header: 'label.species',\n render: ({ t, value }) => {\n return (\n <>{t('label.species-' + value.toLowerCase())}\n );\n }\n },\n\n userCph: {\n accessor: 'content.holding',\n header: 'label.userCPH',\n render: ({ value }) => {\n return (\n <>{value ? value : '-'}\n );\n }\n }\n },\n\n deaths: {\n carcassLocation: {\n classNames: ['hide-m', 'carcass-location'],\n header: 'label.carcassLocation',\n render: ({ row }) => {\n return (\n <>{row.content.approvedDisposalRoute ? he.decode(row.content.approvedDisposalRoute) : (row.content.disposalHolding ? he.decode(row.content.disposalHolding) : '-')}\n );\n }\n },\n\n eventDate: {\n accessor: 'content.killDate',\n classNames: ['date'],\n header: 'label.eventDate',\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n quantity: {\n accessor: 'deathQuantity',\n classNames: ['hide-s', 'align-right', 'qty'],\n header: 'label.qty'\n },\n\n requestId: {\n accessor: 'requestId',\n classNames: ['hide-m', 'align-right', 'request-id'],\n header: 'label.reference'\n },\n\n species: {\n accessor: 'content.species',\n classNames: ['species'],\n header: 'label.species',\n render: ({ t, value }) => {\n return (\n <>{t('label.species-' + value.toLowerCase())}\n );\n }\n },\n\n userCph: {\n accessor: 'content.holding',\n header: 'label.userCPH',\n render: ({ value }) => {\n return (\n <>{value ? value : '-'}\n );\n }\n }\n },\n\n movements: {\n arrivalDate: {\n accessor: 'content.movementDocument.destinationDetail.arrivalDateTime',\n classNames: ['hide-m', 'date'],\n header: 'label.arrivalDate',\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n departureCph: {\n accessor: 'content.sourceHolding',\n header: 'label.departureCPH'\n },\n\n departureDate: {\n accessor: 'content.movementDocument.departureDetail.departureDateTime',\n classNames: ['date'],\n header: 'label.departureDate',\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n destinationCph: {\n accessor: 'content.destinationHolding',\n header: 'label.destinationCPH'\n },\n\n movementReference: {\n accessor: 'content.movementDocument.movementDocumentRef',\n classNames: ['hide-m', 'align-right'],\n header: 'label.movementRef',\n render: ({ value }) => {\n return (\n <>{value ? value : '-'}\n );\n }\n },\n\n quantity: {\n accessor: 'content.animalCount',\n classNames: ['hide-s', 'align-right', 'qty'],\n header: 'label.qty'\n },\n\n species: {\n accessor: 'content.species',\n classNames: ['hide-s', 'species'],\n header: 'label.species',\n render: ({ t, value }) => {\n return (\n <>{t('label.species-' + value.toLowerCase())}\n );\n }\n }\n },\n\n reviewedNotifications: {\n dateReported: {\n accessor: 'requestDate',\n classNames: ['date'],\n header: 'label.reportedDate',\n render: ({ value }) => {\n return (\n <>{value ? helpers.date.format(value) : '-'}\n );\n }\n },\n\n movementReference: {\n accessor: 'content.documentRef',\n classNames: ['hide-m', 'align-right'],\n header: 'label.movementRef'\n },\n\n quantity: {\n accessor: 'notificationQuantity',\n classNames: ['align-right', 'qty-wide'],\n header: 'label.qtyAccepted'\n },\n\n userCph: {\n accessor: 'content.holding',\n header: 'label.userCPH',\n render: ({ value }) => {\n return (\n <>{value ? value : '-'}\n );\n }\n }\n },\n\n tagging: {\n eventDate: {\n accessor: 'taggingDate',\n classNames: ['date'],\n header: 'label.eventDate',\n render: ({ value }) => {\n return (\n <>{helpers.date.format(value)}\n );\n }\n },\n\n quantity: {\n accessor: 'taggingQuantity',\n classNames: ['align-right', 'qty'],\n header: 'label.qty'\n },\n\n requestId: {\n accessor: 'requestId',\n classNames: ['hide-m', 'align-right', 'request-id'],\n header: 'label.reference'\n },\n\n species: {\n accessor: 'content.species',\n classNames: ['hide-s', 'species'],\n header: 'label.species',\n render: ({ t, value }) => {\n return (\n <>{t('label.species-' + value.toLowerCase())}\n );\n }\n },\n\n userCph: {\n accessor: 'content.holding',\n header: 'label.userCPH',\n render: ({ value }) => {\n return (\n <>{value ? value : '-'}\n );\n }\n }\n }\n }\n};\n\nconst tableColumns = {\n bo: {\n animalActivity: {\n movements: (params) => [\n columns.bo.animalActivity.movementRef,\n columns.bo.animalActivity.departureCph,\n columns.bo.animalActivity.departureDate,\n columns.bo.animalActivity.destinationCph,\n columns.bo.animalActivity.arrivalDate,\n columns.bo.animalActivity.requestId(params),\n columns.bo.animalActivity.systemMove\n ],\n\n progenies: [\n columns.bo.animalActivity.tagNumber,\n columns.bo.animalActivity.breed,\n columns.bo.animalActivity.gender,\n columns.bo.animalActivity.dob\n ],\n\n tagHistory: (params) => [\n columns.bo.animalActivity.replacementDate,\n columns.bo.animalActivity.replacedIdentifier,\n columns.bo.animalActivity.replacingIdentifier,\n columns.bo.animalActivity.appliedBy,\n columns.bo.animalActivity.requestId(params)\n ]\n },\n\n holdingActivity: {\n adjacentMovements: [\n columns.bo.holdingActivity.speciesId,\n columns.bo.holdingActivity.startDate,\n columns.bo.holdingActivity.adjacentCph,\n columns.bo.holdingActivity.endDate,\n columns.bo.holdingActivity.frequency,\n columns.bo.holdingActivity.id\n ],\n\n animalsAdded: [\n columns.bo.holdingActivity.speciesNameContent,\n columns.bo.holdingActivity.animalsAddedDate,\n columns.bo.holdingActivity.quantityDevicesWithDetail,\n columns.bo.holdingActivity.requestId,\n columns.bo.holdingActivity.status\n ],\n\n animalsOnHolding: [\n columns.bo.holdingActivity.tagNumber,\n columns.bo.holdingActivity.breedName,\n columns.bo.holdingActivity.genderName,\n columns.bo.holdingActivity.dob,\n columns.bo.holdingActivity.age\n ],\n\n annualInventory: (params) => [\n columns.bo.holdingActivity.speciesId,\n columns.bo.holdingActivity.formatInventoryDate,\n columns.bo.holdingActivity.noOfAnimalsInInventory(params),\n columns.spacer.x1,\n columns.bo.holdingActivity.formatEnteredDate,\n columns.bo.holdingActivity.createRequestId\n ],\n\n associatedHoldings: [\n columns.bo.holdingActivity.cph,\n columns.bo.holdingActivity.holdingName,\n columns.bo.holdingActivity.holdingType\n ],\n\n deaths: [\n columns.bo.holdingActivity.speciesId,\n columns.bo.holdingActivity.formatDeathDate,\n columns.bo.holdingActivity.tagOrBatchNumber,\n columns.bo.holdingActivity.noOfAnimalsDied,\n columns.spacer.x1,\n columns.bo.holdingActivity.disposalLocation,\n columns.bo.holdingActivity.requestId\n ],\n\n movements: [\n columns.bo.holdingActivity.speciesId,\n columns.bo.holdingActivity.departureHolding,\n columns.bo.holdingActivity.dateDeparture,\n columns.bo.holdingActivity.destinationHolding,\n columns.bo.holdingActivity.dateArrival,\n columns.bo.holdingActivity.noOfAnimalsMoved,\n columns.bo.holdingActivity.requestId\n ],\n\n pendingReviews: [\n columns.bo.holdingActivity.speciesName,\n columns.bo.holdingActivity.formatMovementDate,\n columns.bo.holdingActivity.quantity,\n columns.spacer.x1,\n columns.bo.holdingActivity.movementDirection,\n columns.bo.holdingActivity.otherCph,\n columns.bo.holdingActivity.movementRef,\n columns.bo.holdingActivity.requestId\n ],\n\n tagApplications: [\n columns.bo.holdingActivity.speciesId,\n columns.bo.holdingActivity.formatAppliedDate,\n columns.bo.holdingActivity.tagOrBatchNumber,\n columns.bo.holdingActivity.noOfAnimalsIdentified,\n columns.bo.holdingActivity.birthYear,\n columns.spacer.x1,\n columns.bo.holdingActivity.breedName2,\n columns.bo.holdingActivity.genderId,\n columns.bo.holdingActivity.genotype,\n columns.bo.holdingActivity.requestId\n ],\n\n tagReplacements: [\n columns.bo.holdingActivity.speciesId,\n columns.bo.holdingActivity.formatReplacementDate,\n columns.bo.holdingActivity.noOfAnimalsReplaced,\n columns.spacer.x1,\n columns.bo.holdingActivity.replacingAnimalIdentifier,\n columns.bo.holdingActivity.replacedAnimalIdentifier,\n columns.bo.holdingActivity.requestId\n ],\n\n vaRecords: [\n columns.bo.holdingActivity.vaRCVS,\n columns.bo.holdingActivity.vaStartDate,\n columns.bo.holdingActivity.vaExpiryDate,\n columns.bo.holdingActivity.vaStatus,\n columns.bo.holdingActivity.vaViewLink\n ]\n },\n\n searchMovements: {\n byDateAndCph: [\n columns.bo.movementSearch.species,\n columns.bo.movementSearch.movementRef,\n columns.spacer.x1,\n columns.bo.movementSearch.departureHolding,\n columns.bo.movementSearch.dateDeparture,\n columns.bo.movementSearch.destinationHolding,\n columns.bo.movementSearch.dateArrival,\n columns.bo.movementSearch.quantity,\n columns.bo.movementSearch.confirmed\n ],\n\n byMovementRef: [\n columns.bo.movementSearch.species,\n columns.bo.movementSearch.movementRef,\n columns.spacer.x1,\n columns.bo.movementSearch.fromHolding,\n columns.bo.movementSearch.dateDeparture,\n columns.bo.movementSearch.toHolding,\n columns.bo.movementSearch.dateArrival,\n columns.bo.movementSearch.quantity,\n columns.bo.movementSearch.approved\n ]\n },\n\n userActivity: {\n animalsAdded: [\n columns.bo.userActivity.species,\n columns.bo.userActivity.animalsAdded.eventDate,\n columns.bo.userActivity.userCph,\n columns.bo.userActivity.animalsAdded.quantity,\n columns.bo.userActivity.requestId,\n columns.bo.userActivity.status\n ],\n\n all: [\n columns.bo.userActivity.all.dateReported,\n columns.bo.userActivity.all.eventType,\n columns.bo.userActivity.requestId,\n columns.bo.userActivity.status\n ],\n\n annualInventory: [\n columns.bo.userActivity.annualInventory.species,\n columns.bo.userActivity.annualInventory.userCph,\n columns.bo.userActivity.annualInventory.inventoryDate,\n columns.bo.userActivity.annualInventory.quantity,\n columns.spacer.x1,\n columns.bo.userActivity.annualInventory.dateEntered,\n columns.bo.userActivity.requestId,\n columns.bo.userActivity.status\n ],\n\n births: [\n columns.bo.userActivity.species,\n columns.bo.userActivity.tagging.eventDate,\n columns.bo.userActivity.userCph,\n columns.bo.userActivity.tagging.quantity,\n columns.bo.userActivity.requestId,\n columns.bo.userActivity.status\n ],\n\n deaths: [\n columns.bo.userActivity.species,\n columns.bo.userActivity.deaths.eventDate,\n columns.bo.userActivity.userCph,\n columns.bo.userActivity.deaths.quantity,\n columns.bo.userActivity.deaths.carcassLocation,\n columns.bo.userActivity.requestId,\n columns.bo.userActivity.status\n ],\n\n movements: [\n columns.bo.userActivity.species,\n columns.bo.userActivity.movements.departureDate,\n columns.bo.userActivity.movements.departureCph,\n columns.bo.userActivity.movements.arrivalDate,\n columns.bo.userActivity.movements.destinationCph,\n columns.bo.userActivity.quantity,\n columns.bo.userActivity.movements.movementReference,\n columns.bo.userActivity.requestId,\n columns.bo.userActivity.status\n ],\n\n movementAmends: [\n columns.bo.userActivity.species,\n columns.bo.userActivity.movements.departureDate,\n columns.bo.userActivity.movements.departureCph,\n columns.bo.userActivity.movements.arrivalDate,\n columns.bo.userActivity.movements.destinationCph,\n columns.bo.userActivity.quantity,\n columns.bo.userActivity.movements.movementReference,\n columns.bo.userActivity.requestId,\n columns.bo.userActivity.status\n ],\n\n movementReviews: [\n columns.bo.userActivity.movementReviews.dateReported,\n columns.bo.userActivity.movementReviews.arrivalDate,\n columns.bo.userActivity.userCph,\n columns.bo.userActivity.movementReviews.quantity,\n columns.bo.userActivity.movementReviews.movementReference,\n columns.bo.userActivity.requestId,\n columns.bo.userActivity.status\n ],\n\n tagApplications: [\n columns.bo.userActivity.species,\n columns.bo.userActivity.tagging.eventDate,\n columns.bo.userActivity.userCph,\n columns.bo.userActivity.tagging.quantity,\n columns.bo.userActivity.requestId,\n columns.bo.userActivity.status\n ],\n\n tagReplacements: [\n columns.bo.userActivity.species,\n columns.bo.userActivity.tagging.eventDate,\n columns.bo.userActivity.userCph,\n columns.bo.userActivity.tagging.quantity,\n columns.bo.userActivity.requestId,\n columns.bo.userActivity.status\n ]\n },\n\n verifyCustomer: [\n columns.bo.verifyCustomer.cphNumber,\n columns.bo.verifyCustomer.keeperName,\n columns.bo.verifyCustomer.holdingName,\n columns.bo.verifyCustomer.holdingAddress,\n columns.bo.verifyCustomer.holdingPostcode,\n columns.bo.verifyCustomer.holdingType\n ]\n },\n\n animalDetails: {\n movements: [\n columns.animalDetails.dateOfMovement,\n columns.animalDetails.departure,\n columns.animalDetails.destination,\n columns.animalDetails.movementReference\n ],\n\n progenies: {\n deer: (params) => [\n columns.animalDetails.tagNumber(params)\n ],\n\n nonDeer: (params) => [\n columns.animalDetails.dob,\n columns.animalDetails.tagNumber(params),\n columns.animalDetails.gender,\n columns.animalDetails.breed\n // columns.animalDetails.location\n ]\n },\n\n tagReplacements: (params) => [\n columns.animalDetails.dateOfTagging(params),\n columns.animalDetails.initialTagNumber,\n columns.animalDetails.replacementTagNumber,\n columns.animalDetails.taggingReference\n ]\n },\n\n animalsOnHolding: {\n deer: [\n columns.animalsOnHolding.tagNumber\n ],\n\n nonDeer: (params) => [\n columns.animalsOnHolding.tagNumber,\n columns.animalsOnHolding.breed(params),\n columns.animalsOnHolding.gender(params),\n columns.animalsOnHolding.dob(params),\n columns.animalsOnHolding.age(params)\n ],\n\n modalColumns: (params) => [\n columns.animalsOnHolding.tagNumber,\n columns.animalsOnHolding.breed(params),\n columns.animalsOnHolding.gender(params),\n columns.animalsOnHolding.dob(params),\n columns.animalsOnHolding.age(params),\n columns.animalsOnHolding.status,\n columns.animalsOnHolding.action(params)\n ]\n },\n\n animalSummary: {\n batch: (params) => [\n columns.animalSummary.quantity,\n columns.animalSummary.batchNumber(params)\n ],\n\n batchTagReplacement: (params) => [\n columns.animalSummary.quantity,\n columns.animalSummary.batchNumberOld(params),\n columns.animalSummary.replacedBy,\n columns.animalSummary.batchNumberNew(params)\n ],\n\n birth: [\n columns.animalSummary.tagNumber,\n columns.animalSummary.breed,\n columns.animalSummary.gender,\n columns.animalSummary.dobOnly,\n columns.animalSummary.damId,\n columns.animalSummary.sireId,\n columns.animalSummary.geneticDamId,\n columns.animalSummary.genotype\n ],\n\n individual: {\n bo: [\n columns.animalSummary.tagNumber\n ],\n\n deer: [\n columns.animalSummary.tagNumber\n ],\n\n nonDeer: [\n columns.animalSummary.tagNumber,\n columns.animalSummary.breed,\n columns.animalSummary.gender,\n columns.animalSummary.dob,\n columns.animalSummary.age\n ]\n },\n\n individualActivityDetails: [\n columns.animalSummary.tagNumber\n ],\n\n individualActivityDetailsAnimalsAdded: [\n columns.animalSummary.tagNumber,\n columns.spacer.x2,\n columns.animalSummary.breed,\n columns.animalSummary.gender,\n columns.animalSummary.dob,\n columns.spacer.x2,\n columns.animalSummary.age\n ],\n\n individualTagReplacement: [\n columns.animalSummary.tagNumberOld,\n columns.animalSummary.replacedBy,\n columns.animalSummary.tagNumberNew\n ]\n },\n\n deathsMissingAndFound: {\n batch: (params) => [\n columns.deathsMissingAndFound.quantity,\n columns.deathsMissingAndFound.batchNumber(params),\n columns.deathsMissingAndFound.status,\n columns.deathsMissingAndFound.actionBatch(params)\n ],\n\n individual: (params) => [\n columns.deathsMissingAndFound.tagNumber(params),\n columns.deathsMissingAndFound.breed(params),\n columns.deathsMissingAndFound.gender(params),\n columns.deathsMissingAndFound.dob(params),\n columns.deathsMissingAndFound.age(params),\n columns.deathsMissingAndFound.action(params)\n ]\n },\n\n editCustomer: {\n death: [\n columns.editCustomer.deathReference,\n columns.editCustomer.dateOfDeath,\n columns.editCustomer.species,\n columns.editCustomer.numberOfAnimals,\n columns.editCustomer.disposalRoute\n ],\n\n movement: [\n columns.editCustomer.movementReference,\n columns.editCustomer.departureDate,\n columns.editCustomer.species,\n columns.editCustomer.numberOfAnimals,\n columns.editCustomer.address\n ]\n },\n\n fci: {\n deer: (params) => [\n columns.fci.tagNumber(params)\n ],\n\n nonDeer: (params) => [\n columns.fci.tagNumber(params)\n ]\n },\n\n gatheringSearch: {\n byDateAndCph: (params) => [\n columns.gatheringSearch.departureDate(params),\n columns.gatheringSearch.arrivalDate(params),\n columns.gatheringSearch.cph(params),\n columns.gatheringSearch.quantity(params),\n columns.gatheringSearch.movementReference(params)\n ],\n\n byMovementReference: (params) => [\n columns.gatheringSearch.departureDate(params),\n columns.gatheringSearch.arrivalDate(params),\n columns.gatheringSearch.cph(params),\n columns.gatheringSearch.quantity(params),\n columns.gatheringSearch.movementReference(params)\n ]\n },\n\n handshake: {\n batch: (params) => [\n columns.handshake.batchNumber(params),\n columns.handshake.quantity,\n columns.handshake.status,\n columns.handshake.actionRemoveBatch(params)\n ],\n\n batchRemoved: (params) => [\n columns.handshake.batchNumber(params),\n columns.handshake.quantity,\n columns.handshake.actionRestoreBatch(params)\n ],\n\n individual: {\n deer: (params) => [\n columns.handshake.tagNumber,\n columns.handshake.actionRemoveIndividual(params)\n ],\n\n nonDeer: (params) => [\n columns.handshake.tagNumber,\n columns.handshake.breed,\n columns.handshake.gender,\n columns.handshake.dob,\n columns.handshake.age,\n columns.handshake.status,\n columns.handshake.actionRemoveIndividual(params)\n ]\n },\n\n individualRemoved: {\n deer: (params) => [\n columns.handshake.tagNumber,\n columns.handshake.actionRestoreIndividual(params)\n ],\n\n nonDeer: (params) => [\n columns.handshake.tagNumber,\n columns.handshake.breed,\n columns.handshake.gender,\n columns.handshake.dob,\n columns.handshake.age,\n columns.handshake.actionRestoreIndividual(params)\n ]\n }\n },\n\n holdingRegister: {\n [constants.holdingRegister.type.adjacentMovements]: (params) => [\n columns.holdingRegister.startDate,\n columns.holdingRegister.frequency,\n columns.holdingRegister.adjacentCph,\n columns.holdingRegister.endDate,\n columns.holdingRegister.update(params)\n ],\n\n [constants.holdingRegister.type.annualInventory]: (params) => [\n columns.holdingRegister.formatInventoryDate,\n columns.holdingRegister.noOfAnimalsInInventory(params),\n columns.spacer.x4,\n columns.holdingRegister.formatEnteredDate,\n columns.holdingRegister.deleteRecord(params)\n ],\n\n [constants.holdingRegister.type.births]: [\n columns.holdingRegister.formatAppliedDate,\n columns.holdingRegister.tagOrBatchNumber,\n columns.holdingRegister.noOfAnimalsIdentified,\n columns.holdingRegister.birthYear,\n columns.holdingRegister.breed,\n columns.holdingRegister.genotype,\n columns.holdingRegister.ownUseOff\n ],\n\n [constants.holdingRegister.type.deaths]: [\n columns.holdingRegister.formatDeathDate,\n columns.holdingRegister.tagOrBatchNumber,\n columns.holdingRegister.noOfAnimalsDied,\n columns.spacer.x1,\n columns.holdingRegister.breed,\n columns.holdingRegister.disposalLocation\n ],\n\n [constants.holdingRegister.type.movementsOff]: (params) => [\n columns.holdingRegister.formatDepartureDate,\n columns.holdingRegister.noOfAnimalsMoved,\n columns.holdingRegister.tagOrBatchNumber,\n columns.holdingRegister.sourceHoldingTo,\n columns.holdingRegister.transportHaulierName,\n columns.holdingRegister.transportVehicleRegistrationNo,\n columns.holdingRegister.ownUseOff,\n columns.holdingRegister.download(params)\n ],\n\n [constants.holdingRegister.type.movementsOn]: [\n columns.holdingRegister.formatArrivalDate,\n columns.holdingRegister.noOfAnimalsMoved,\n columns.holdingRegister.tagOrBatchNumber,\n columns.holdingRegister.sourceHoldingFrom,\n columns.holdingRegister.ownUseOn\n ],\n\n [constants.holdingRegister.type.tagApplications]: [\n columns.holdingRegister.formatAppliedDate,\n columns.holdingRegister.tagOrBatchNumber,\n columns.holdingRegister.noOfAnimalsIdentified,\n columns.holdingRegister.birthYear,\n columns.spacer.x1,\n columns.holdingRegister.breed,\n columns.holdingRegister.genotype,\n columns.holdingRegister.ownUseOff\n ],\n\n [constants.holdingRegister.type.tagReplacements]: [\n columns.holdingRegister.formatReplacementDate,\n columns.holdingRegister.noOfAnimalsReplaced,\n columns.holdingRegister.replacingAnimalIdentifier,\n columns.holdingRegister.replacedAnimalIdentifier,\n columns.holdingRegister.comments\n ]\n },\n\n holdingSelection: (params) => [\n columns.holdingSelection.cph,\n columns.holdingSelection.holdingName,\n columns.holdingSelection.holdingAddress,\n columns.holdingSelection.action(params)\n ],\n\n holdingSummary: [\n columns.holdingSummary.actionRequired,\n columns.holdingSummary.movementDate,\n columns.holdingSummary.summary,\n columns.holdingSummary.documentRef\n ],\n vetAttestationDetails: [\n columns.vetAttestationData.id,\n columns.vetAttestationData.vetAttestationStatus\n ],\n abattoirAttestationDetails: [\n columns.vetAttestationData.id,\n columns.vetAttestationData.vetAttestationStatus,\n columns.vetAttestationData.viewLink\n ],\n manualTagDetails: [\n columns.manualTagDetails.tagNumber,\n columns.manualTagDetails.attestationCph,\n columns.manualTagDetails.status,\n columns.manualTagDetails.record\n ],\n\n movements: {\n batch: (params) => [\n columns.movements.batchNumber(params),\n columns.movements.quantity,\n columns.movements.action(params)\n ],\n\n fci: {\n deer: (params) => [\n columns.movements.tagNumberCheckbox(params)\n ],\n\n nonDeer: (params) => [\n columns.movements.tagNumberCheckbox(params),\n columns.movements.breedId,\n columns.movements.genderName,\n columns.movements.dobFci\n ]\n },\n\n individual: {\n deer: (params) => [\n columns.movements.tagNumber(params),\n columns.movements.action(params)\n ],\n\n nonDeer: (params) => [\n columns.movements.tagNumber(params),\n columns.movements.breedName,\n columns.movements.genderName,\n columns.movements.dobToDisplay,\n columns.movements.ageToDisplay,\n columns.movements.action(params)\n ]\n },\n\n modalAnimalsOnHolding: (params) => [\n columns.movements.tagNumber(params),\n columns.movements.breedName,\n columns.movements.genderId,\n columns.movements.dob,\n columns.movements.age,\n columns.movements.action(params)\n ],\n\n modalAddBatch: (params) => [\n columns.movements.quantity,\n columns.movements.batchNumber(params),\n columns.movements.status,\n columns.movements.action(params)\n ],\n\n modalFileUpload: (params) => [\n columns.movements.tagNumber(params),\n columns.movements.status,\n columns.movements.action(params)\n ],\n\n modalManualTagNumbers: (params) => [\n columns.movements.tagNumber(params),\n columns.movements.status,\n columns.movements.action(params)\n ],\n\n modalTagNumberRange: (params) => [\n columns.movements.tagNumber(params),\n columns.movements.status,\n columns.movements.action(params)\n ]\n },\n\n movementsGatherings: {\n batch: (params) => [\n columns.movementsGatherings.quantity,\n columns.movementsGatherings.batchNumber(params),\n columns.movementsGatherings.status,\n columns.movementsGatherings.action(params)\n ],\n\n individual: (params) => [\n columns.movementsGatherings.tagNumber,\n columns.movementsGatherings.status,\n columns.movementsGatherings.action(params)\n ]\n },\n\n paperMovements: {\n batch: (params) => [\n columns.paperMovements.quantity,\n columns.paperMovements.batchNumber(params),\n columns.paperMovements.statusBatch,\n columns.paperMovements.action(params)\n ],\n\n individual: (params) => [\n columns.paperMovements.tagNumber,\n columns.paperMovements.statusIndividual,\n columns.paperMovements.action(params)\n ],\n\n userNotes: (params) => [\n columns.paperMovements.dateTime,\n columns.paperMovements.note,\n columns.paperMovements.user,\n columns.paperMovements.action(params)\n ]\n },\n\n tagApplication: {\n availableTags: (params) => [\n columns.tagApplication.tagNumber,\n columns.tagApplication.status,\n columns.tagApplication.action(params)\n ],\n\n batches: (params) => [\n columns.tagApplication.quantity,\n columns.tagApplication.batchNumber(params),\n columns.tagApplication.status,\n columns.tagApplication.action(params)\n ]\n\n // individuals: (params) => [\n // columns.tagApplication.tagNumber,\n // columns.tagApplication.breed,\n // columns.tagApplication.gender,\n // columns.tagApplication.dob,\n // columns.tagApplication.status,\n // columns.tagApplication.action(params)\n // ]\n },\n\n tagReplacement: {\n onHolding: (params) => [\n columns.tagReplacement.tagNumber(params),\n columns.tagReplacement.breed,\n columns.tagReplacement.gender(params),\n columns.tagReplacement.dob(params),\n columns.tagReplacement.age(params),\n columns.tagReplacement.action(params)\n ],\n\n replacement: (params) => [\n columns.tagReplacement.oldTagNumber,\n columns.tagReplacement.replacedBy,\n columns.tagReplacement.newTagNumber,\n columns.tagReplacement.status,\n columns.tagReplacement.action(params)\n ],\n\n replacementSlaughterTags: (params) => [\n columns.tagReplacement.quantity,\n columns.tagReplacement.oldBatchNumber,\n columns.tagReplacement.replacedBy,\n columns.tagReplacement.newBatchNumber,\n columns.tagReplacement.status,\n columns.tagReplacement.action(params)\n ]\n },\n\n userActivity: {\n [constants.option.requestType.animalsAdded]: [\n columns.userActivity.animalsAdded.eventDate,\n columns.userActivity.animalsAdded.userCph,\n columns.userActivity.animalsAdded.quantityAnimalsAdded,\n columns.userActivity.animalsAdded.species,\n columns.userActivity.animalsAdded.requestId,\n columns.userActivity.status\n ],\n\n [constants.option.requestType.birth]: [\n columns.userActivity.tagging.eventDate,\n columns.userActivity.tagging.userCph,\n columns.userActivity.tagging.quantity,\n columns.userActivity.tagging.species,\n columns.userActivity.tagging.requestId,\n columns.userActivity.status\n ],\n\n [constants.option.requestType.death]: [\n columns.userActivity.deaths.eventDate,\n columns.userActivity.deaths.userCph,\n columns.userActivity.deaths.quantity,\n columns.userActivity.deaths.species,\n columns.userActivity.deaths.carcassLocation,\n columns.userActivity.deaths.requestId,\n columns.userActivity.status\n ],\n\n [constants.option.requestType.movement]: [\n columns.userActivity.movements.departureDate,\n columns.userActivity.movements.departureCph,\n columns.userActivity.movements.arrivalDate,\n columns.userActivity.movements.destinationCph,\n columns.userActivity.movements.quantity,\n columns.userActivity.movements.species,\n columns.userActivity.movements.movementReference,\n columns.userActivity.status\n ],\n\n [constants.option.requestType.correctTransfer]: [\n columns.userActivity.movements.departureDate,\n columns.userActivity.movements.departureCph,\n columns.userActivity.movements.arrivalDate,\n columns.userActivity.movements.destinationCph,\n columns.userActivity.movements.quantity,\n columns.userActivity.movements.species,\n columns.userActivity.movements.movementReference,\n columns.userActivity.status\n ],\n\n [constants.option.requestType.movementHandshake]: [\n columns.userActivity.reviewedNotifications.dateReported,\n columns.userActivity.reviewedNotifications.userCph,\n columns.userActivity.reviewedNotifications.quantity,\n columns.userActivity.reviewedNotifications.movementReference,\n columns.userActivity.status\n ],\n\n [constants.option.requestType.tagApplication]: [\n columns.userActivity.tagging.eventDate,\n columns.userActivity.tagging.userCph,\n columns.userActivity.tagging.quantity,\n columns.userActivity.tagging.species,\n columns.userActivity.tagging.requestId,\n columns.userActivity.status\n ],\n\n [constants.option.requestType.tagReplacement]: [\n columns.userActivity.tagging.eventDate,\n columns.userActivity.tagging.userCph,\n columns.userActivity.tagging.quantity,\n columns.userActivity.tagging.species,\n columns.userActivity.tagging.requestId,\n columns.userActivity.status\n ]\n },\n\n vetAbattoirManualTag: {\n individual: (params) => [\n columns.movements.tagNumber(params),\n columns.movements.status,\n columns.movements.action(params)\n ]\n }\n};\n\nconst initialSorting = {\n manualTagDetails: {\n tagNumber: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n }\n },\n animalDetails: {\n movements: {\n accessor: 'dom',\n direction: constants.sorting.ascending\n },\n\n progenies: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n },\n\n tagReplacements: {\n accessor: 'replacementDate',\n direction: constants.sorting.ascending\n },\n vaRecords: {\n accessor: 'startDate',\n direction: constants.sorting.descending\n }\n },\n\n animalsOnHolding: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n },\n\n animalSummary: {\n batch: {\n accessor: 'batchNumber',\n direction: constants.sorting.ascending\n },\n\n individual: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n },\n\n individualTagReplacement: {\n accessor: 'oldTagNumber',\n direction: constants.sorting.ascending\n }\n },\n\n bo: {\n animalActivity: {\n movements: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n },\n\n progenies: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n },\n\n tagHistory: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n }\n },\n\n holdingActivity: {\n adjacentMovements: {\n accessor: 'startDate',\n direction: constants.sorting.descending\n },\n\n animalsAdded: {\n accessor: 'requestDate',\n direction: constants.sorting.descending\n },\n\n animalsOnHolding: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n },\n\n annualInventory: {\n accessor: 'enteredDate',\n direction: constants.sorting.descending\n },\n\n associatedHoldings: {\n accessor: 'cph',\n direction: constants.sorting.ascending\n },\n\n deaths: {\n accessor: 'deathDate',\n direction: constants.sorting.descending\n },\n\n holdingDetails: {},\n\n movements: {\n accessor: 'movementDate',\n direction: constants.sorting.descending\n },\n\n pendingReviews: {\n accessor: 'movementDate',\n direction: constants.sorting.descending\n },\n\n tagApplications: {\n accessor: 'dateApplied',\n direction: constants.sorting.descending\n },\n\n tagReplacements: {\n accessor: 'replacementDate',\n direction: constants.sorting.descending\n },\n\n vaRecords: {\n accessor: 'startDate',\n direction: constants.sorting.descending\n }\n },\n\n searchMovements: {\n accessor: 'movementDocument.departureDetail.departureDateTime',\n direction: constants.sorting.descending\n },\n\n userActivity: {\n animalsAdded: {\n accessor: 'requestDate',\n direction: constants.sorting.descending\n },\n\n all: {\n accessor: 'requestDate',\n direction: constants.sorting.descending\n },\n\n annualInventory: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n },\n\n births: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n },\n\n deaths: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n },\n\n movements: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n },\n\n movementAmends: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n },\n\n movementReviews: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n },\n\n tagApplications: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n },\n\n tagReplacements: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n }\n }\n },\n\n deathsMissingAndFound: {\n batch: {\n accessor: 'batchNumber',\n direction: constants.sorting.ascending\n },\n\n individual: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n }\n },\n\n editCustomer: {\n death: {\n accessor: 'dateOfDeath',\n direction: constants.sorting.descending\n },\n\n movement: {\n accessor: 'departureDate',\n direction: constants.sorting.descending\n }\n },\n\n gatheringSearch: {\n byDateAndCph: {\n unconfirmed: {\n accessor: 'departureDateTime',\n direction: constants.sorting.descending\n },\n\n reported: {\n accessor: 'transferDate',\n direction: constants.sorting.descending\n }\n },\n\n byMovementReference: {\n\n }\n },\n\n handshake: {\n batch: {\n accessor: 'batchNumber',\n direction: constants.sorting.ascending\n },\n individual: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n }\n },\n\n holdingRegister: {\n [constants.holdingRegister.type.adjacentMovements]: {\n accessor: 'startDate',\n direction: constants.sorting.descending\n },\n\n [constants.holdingRegister.type.annualInventory]: {\n accessor: 'enteredDate',\n direction: constants.sorting.descending\n },\n\n [constants.holdingRegister.type.births]: {\n accessor: 'dateApplied',\n direction: constants.sorting.descending\n },\n\n [constants.holdingRegister.type.deaths]: {\n accessor: 'deathDate',\n direction: constants.sorting.descending\n },\n\n [constants.holdingRegister.type.movementsOff]: {\n accessor: 'movementDate',\n direction: constants.sorting.descending\n },\n\n [constants.holdingRegister.type.movementsOn]: {\n accessor: 'movementDate',\n direction: constants.sorting.descending\n },\n\n [constants.holdingRegister.type.tagApplications]: {\n accessor: 'dateApplied',\n direction: constants.sorting.descending\n },\n\n [constants.holdingRegister.type.tagReplacements]: {\n accessor: 'replacementDate',\n direction: constants.sorting.descending\n },\n\n [constants.holdingRegister.type.vaRecords]: {\n accessor: 'startDate',\n direction: constants.sorting.descending\n }\n },\n\n holdingSummary: {\n accessor: 'movementDate',\n direction: constants.sorting.descending\n },\n vetDetails: {\n accessor: 'startDate',\n direction: constants.sorting.descending\n },\n\n movements: {\n batch: {\n accessor: 'batchNumber',\n direction: constants.sorting.ascending\n },\n\n fci: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n },\n\n individual: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n },\n\n modalAnimalsOnHolding: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n }\n },\n\n movementsGatherings: {\n batch: {\n accessor: 'batchNumber',\n direction: constants.sorting.ascending\n },\n\n individual: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n }\n },\n\n tagApplication: {\n availableTags: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n },\n\n batches: {\n accessor: 'batchNumber',\n direction: constants.sorting.ascending\n },\n\n individuals: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n }\n },\n\n tagReplacement: {\n onHolding: {\n accessor: 'tagNumber',\n direction: constants.sorting.ascending\n },\n\n replacement: {\n\n },\n\n replacementSlaughterTags: {\n\n }\n },\n\n userActivity: {\n [constants.option.requestType.animalsAdded]: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n },\n\n [constants.option.requestType.birth]: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n },\n\n [constants.option.requestType.death]: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n },\n\n [constants.option.requestType.movement]: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n },\n\n [constants.option.requestType.correctTransfer]: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n },\n\n [constants.option.requestType.movementHandshake]: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n },\n\n [constants.option.requestType.tagApplication]: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n },\n\n [constants.option.requestType.tagReplacement]: {\n accessor: 'requestId',\n direction: constants.sorting.descending\n }\n }\n};\n\nexport { tableColumns, initialSorting };\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport axios from 'axios';\nimport bff, { isCancel } from 'services/bff';\nimport classes from 'backOfficeComponents/address/address.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport he from 'he';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\n\nconst Address = ({\n cph,\n errorClassNames,\n format,\n setCphType,\n setCphValid,\n setModal,\n setUserName\n}) => {\n const { ready, t } = useTranslation();\n\n const [address, setAddress] = React.useState(null);\n const [name, setName] = React.useState(null);\n const [type, setType] = React.useState(null);\n const [pending, setPending] = React.useState(false);\n\n const setData = React.useCallback((inValue) => {\n const display = {\n address: (inData) => {\n if (typeof inData === 'object') {\n // eslint-disable-next-line no-unused-vars\n const { holdingType, holdingTypeId, id, ...inValue } = inData;\n\n if (helpers.address.isShort(format?.address)) {\n setAddress(helpers.address.format.addressShort(inValue));\n } else if (helpers.address.isLine(format?.address) || helpers.address.isInline(format?.address)) {\n setAddress(helpers.address.format.addressLine(inValue));\n } else {\n setAddress(helpers.address.format.addressFull(inValue));\n }\n } else {\n setAddress([inData]);\n }\n },\n name: (inData) => setName(typeof inData === 'object' ? helpers.address.format.nameFull(inData) : inData),\n type: (inData) => setType(typeof inData === 'object' ? helpers.address.format.typeFull(inData) : inData)\n };\n\n const otherData = helpers.address.format.addressOnly(inValue) ? '' : inValue;\n\n display.name(format?.name && !helpers.address.isNone(format.name) ? otherData : '');\n display.type(format?.type && !helpers.address.isNone(format.type) ? otherData : '');\n display.address(format?.address && !helpers.address.isNone(format.address) ? inValue : '');\n }, [format]);\n\n useEffect(() => {\n const getAddressFromBff = (currentCPH, source) => {\n if (currentCPH?.length > 0) {\n setPending(true);\n }\n\n const holding = {};\n\n if (holding && holding.address) {\n setData(holding.address);\n setPending(false);\n } else {\n bff\n .get('/holdingDetails', {\n cancelToken: source.token,\n params: {\n cph: currentCPH,\n queryKeeper: true,\n queryUserByCPH: setUserName && typeof setUserName === 'function'\n }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setPending)) {\n if (res.data.error !== constants.error.addressMessage) {\n const resData = res.data.data[0];\n if (resData?.userByCph !== null) {\n const hasAddress = resData.address1 || resData.address2 || resData.county || resData.postCode || resData.propertyName || resData.town;\n\n if (hasAddress) {\n setData(resData);\n } else {\n setData(constants.address.status.FOUND_WITHOUT_ADDRESS);\n }\n if (setCphType && resData.holdingType?.fullName) {\n setCphType(resData.holdingType.fullName);\n }\n if (setCphValid) {\n setCphValid(true);\n }\n if (setUserName) {\n setUserName(resData.userByCph.id);\n }\n } else {\n setData(constants.address.status.CPH_NOT_LINKED);\n }\n } else {\n setData(constants.address.status.NOT_FOUND);\n if (setCphValid) {\n setCphValid(false);\n }\n }\n\n setPending(false);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setPending(false);\n setData(constants.address.status.ERROR);\n if (setCphValid) {\n setCphValid(false);\n }\n errors.BFF(error, setModal);\n }\n });\n }\n };\n\n const source = axios.CancelToken.source();\n\n if (!cph || cph?.length === 0) {\n setAddress(null);\n setName(null);\n setType(null);\n }\n\n if (cph?.length >= config.LENGTH_HOLDING_EU) {\n if (cph.length === config.LENGTH_HOLDING_EU || cph.length === config.LENGTH_HOLDING_CPH) {\n getAddressFromBff(cph, source);\n } else {\n setAddress([constants.address.status.NOT_FOUND]);\n setName(null);\n setType(null);\n }\n } else {\n if (setCphValid) {\n setCphValid(false);\n }\n setData('');\n }\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cph]);\n\n return (\n <>\n {ready &&\n <>\n {pending &&\n <>\n {helpers.address.isInline(format?.address) &&\n \n }\n {!helpers.address.isInline(format?.address) &&\n \n }\n \n }\n\n {!pending &&\n <>\n {type?.length > 0 && !helpers.address.withErrorAddress(type) && !helpers.address.isStatusNotFound(address[0]) &&\n

{t(type)}

\n }\n {helpers.address.isNoNameFound(name) &&\n \n }\n {name?.length > 0 && !helpers.address.isNoNameFound(name) && !helpers.address.withErrorAddress(name) && !helpers.address.isStatusError1(name) && !helpers.address.isStatusNotFound(address[0]) &&\n <>\n {helpers.address.isInline(format?.address) &&\n {t(name)}\n }\n {!helpers.address.isInline(format?.address) &&\n

{t(name)}

\n }\n \n }\n\n {address?.length > 0 && address[0] !== '' &&\n <>\n {helpers.address.withErrorAddress(address[0]) &&\n <>\n {helpers.address.isInline(format?.address) &&\n \n }\n {!helpers.address.isInline(format?.address) &&\n \n }\n \n }\n\n {helpers.address.withAddress(address[0]) &&\n <>\n {helpers.address.isInline(format?.address) &&\n
{address[0] ? t(he.decode(address[0].trim())) : ''}
\n }\n {!helpers.address.isInline(format?.address) &&\n <>\n {address.map((line, index) => (\n
{line ? he.decode(line) : ''}
\n ))}\n \n }\n \n }\n \n }\n \n }\n \n }\n \n );\n};\n\nAddress.propTypes = {\n cph: PropTypes.string,\n errorClassNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n format: PropTypes.exact({\n address: PropTypes.oneOf([\n constants.address.format.full,\n constants.address.format.short,\n constants.address.format.line,\n constants.address.format.inline,\n constants.address.format.none\n ]),\n name: PropTypes.oneOf([\n constants.address.format.full,\n constants.address.format.inline,\n constants.address.format.none\n ]),\n type: PropTypes.oneOf([\n constants.address.format.full,\n constants.address.format.none\n ])\n }),\n setCphType: PropTypes.func,\n setCphValid: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n setUserName: PropTypes.func\n};\n\nexport default Address;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport classes from 'components/base/tab/tab.module.scss';\nimport PropTypes from 'prop-types';\nimport Button from 'components/base/button/button';\n\nconst Tab = ({\n classNames,\n extraContent,\n id,\n isActive,\n label,\n onClick,\n url\n}) => {\n const { ready, t } = useTranslation();\n\n const componentClassNames = [\n classes.tab,\n isActive ? classes.tabSelected : '',\n ...(classNames ? classNames.map((className) => classes[className]) : [])\n ].join(' ').trim();\n\n if (url) {\n if (isActive) {\n return (\n
  • \n {t(label)} {extraContent}\n
  • \n );\n }\n\n return (\n
  • onClick(id) : null}>\n \n {t(label)}\n \n
  • \n );\n } else if (onClick) {\n return (\n
  • \n onClick(id)}\n />\n
  • \n );\n }\n\n return (\n <>\n {ready &&\n
  • \n {t(label)} {extraContent}\n
  • \n }\n \n );\n};\n\nTab.propTypes = {\n classNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n extraContent: PropTypes.string,\n id: PropTypes.string.isRequired,\n isActive: PropTypes.bool,\n label: PropTypes.string,\n onClick: PropTypes.func,\n url: PropTypes.string\n};\n\nexport default Tab;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classes from 'components/base/tabs/tabs.module.scss';\nimport Tab from 'components/base/tab/tab';\n\nconst TabsNavigational = ({\n children\n}) => {\n return (\n
    \n
      \n {children?.filter((child) => child).map((child) => (\n \n ))}\n
    \n
    \n {children?.filter((child) => child).map((child) => {\n return child.props.active && child.props.children;\n })}\n
    \n
    \n );\n};\n\nTabsNavigational.propTypes = {\n children: PropTypes.array\n};\n\nexport default TabsNavigational;\n","import React from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/table/customTable/customTableBoAnimalActivity/customTableBoAnimalActivity.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport { initialSorting, tableColumns } from 'services/tableColumns';\nimport Address from 'backOfficeComponents/address/address';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport Table from 'components/table/table';\nimport TabsNavigational from 'components/base/tabsNavigational/tabsNavigational';\n\nconst AnimalActivityCustomTable = ({\n data,\n pending,\n setData,\n setModal\n}) => {\n const { pathname } = useLocation();\n const { ready, t } = useTranslation();\n\n const render = {\n address: (cph) => (\n \n ),\n\n summary: () => {\n let title;\n let line1;\n let line2;\n let showAddressOnLine = 0;\n let cph;\n\n if (data[0].animalState === 'Dead') {\n title = t('label.currentLocationDead');\n line1 = [\n t('label.dateDeath'),\n helpers.date.format(data[0].death.killDate)\n ];\n line2 = [\n t('label.deathLocation'),\n data[0].death.killHolding,\n ''\n ];\n showAddressOnLine = 2;\n cph = data[0].death.killHolding;\n } else if (data[0].notApplied) {\n title = t('label.tagNotApplied');\n line1 = [\n t('label.cphAllocatedTo'),\n data[0].holding,\n ''\n ];\n line2 = [\n t('label.tagManufactureDate'),\n helpers.date.format(data[0].tagDispatchDate)\n ];\n showAddressOnLine = 1;\n cph = data[0].holding;\n } else if (data[0].replaced) {\n title = t('label.tagReplacedBy');\n line1 = [\n data[0].tagNumber\n ];\n line2 = [\n t('label.replacementDate'),\n helpers.date.format(data[0].tagReplacements[0].replacementDate)\n ];\n } else {\n title = t('label.currentLocation');\n line1 = [\n t('label.cph'),\n data[0].locationHistoryList[data[0].locationHistoryList.length - 1].holding\n ];\n line2 = [\n t('label.address'),\n ''\n ];\n showAddressOnLine = 2;\n cph = data[0].locationHistoryList[data[0].locationHistoryList.length - 1].holding;\n }\n\n return (\n
    \n
    {title}
    \n
    \n {line1.join(' - ')}\n {showAddressOnLine === 1 && render.address(cph)}\n
    \n
    \n {line2.join(' - ')}\n {showAddressOnLine === 2 && render.address(cph)}\n
    \n
    \n );\n }\n };\n\n return (\n <>\n {ready &&\n
    \n {data.length === 0 &&\n <>\n {pending &&\n \n }\n\n {!pending &&\n \n }\n \n }\n\n {data.length > 0 &&\n <>\n {render.summary()}\n\n {!data[0].notApplied &&\n \n
    \n \n
    \n\n
    \n \n
    \n\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    {t('label.tagAppliedLocation')}{data[0].dateApplied ? data[0].locationHistoryList?.[0]?.holding : t('label.systemApplied')}
    {t('label.rfidNumber')}{data[0].rfid || '-'}
    {t('label.breed')}{data[0].breed?.name || data[0].breed || '-'}
    {t('label.gender')}{data[0].genderSpecies?.name || '-'}
    {t('label.yearDob')}{helpers.animal.getYearDob(data[0]) || '-'}
    {t(data[0].animalState === 'Dead' ? 'label.ageAtDeath' : 'label.age')}{!data[0].movements.some((item) => item.isAbattoir) && helpers.date.withSameCalendarDay(data[0].beginBirthPeriod, data[0].endBirthPeriod) ? helpers.get.age(data[0].beginBirthPeriod, data[0].death?.killDate) : '-'}
    {t('label.damId')}{data[0].damTagNumber || '-'}
    {t('label.sireId')}{data[0].sireTagNumber || '-'}
    {t('label.geneticDamId')}{data[0].geneticDamTagNumber || '-'}
    \n
    \n\n {data[0].progenies.length > 0 &&\n
    \n \n
    \n }\n
    \n }\n \n }\n
    \n }\n \n );\n};\n\nAnimalActivityCustomTable.propTypes = {\n data: PropTypes.array.isRequired,\n pending: PropTypes.bool,\n setData: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired\n};\n\nexport default AnimalActivityCustomTable;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\n\nconst HoldingActivityCustomTable = ({\n data,\n pending\n}) => {\n const { ready, t } = useTranslation();\n\n return (\n <>\n {ready &&\n <>\n {Object.keys(data).length === 0 &&\n <>\n {pending &&\n \n }\n\n {!pending &&\n \n }\n \n }\n\n {Object.keys(data).length > 0 &&\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {data.holdingType?.name === 'ABATTOIR' &&\n \n \n \n \n }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    {t('label.holdingType')}{data.holdingType?.fullName} [{data.holdingType?.name}]
    {t('label.holdingAddress')}\n {[\n data.address1,\n data.address2,\n data.town,\n data.county,\n data.postCode\n ]\n .filter((item) => item)\n .join(', ')\n }\n
    {t('label.batchNumbers')}\n {data.holdingRegisters?.holdingRegisterHoldingBatchNumbers.map((item, index) => (\n

    \n {item.holdingBatchNumber.holdingBatchNumberId + ' - ' + helpers.species.idToName(item.holdingBatchNumber.speciesId)}\n

    \n ))}\n
    {t('label.mhsNumber')}{data.holdingRegisters?.holdingMHS.mhsNumber}
    {t('label.productionTypes')}\n {data.holdingRegisters?.holdingRegisterProductionTypes.map((item) => item.productionType.name).join(', ')}\n
    {t('label.singleBusinessIdentifier')}{data.holdingIntegration?.singleBusinessIdentifier}
    {t('label.partyId')}{data.holdingIntegration?.partyId}
    {t('label.partyEmail')}{data.userByCph?.samEmail}
    {t('boApp.label.keeperName')}\n {[\n data.keeper?.title,\n data.keeper?.firstName,\n data.keeper?.lastName\n ]\n .filter((item) => item)\n .join(' ')\n }\n
    {t('boApp.label.keeperAddress')}\n {[\n data.keeper?.address1,\n data.keeper?.address2,\n data.keeper?.town,\n data.keeper?.county,\n data.keeper?.postCode\n ]\n .filter((item) => item)\n .join(', ')\n }\n
    {t('boApp.label.keeperTelephoneNumber')}{data.keeper?.telephoneNumber}
    {t('boApp.label.keeperMobileNumber')}{data.keeper?.mobilePhone}
    {t('boApp.label.keeperAddressPk')}{data.holdingIntegration?.keeperAddressPK}
    \n }\n \n }\n \n );\n};\n\nHoldingActivityCustomTable.propTypes = {\n data: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.object\n ]).isRequired,\n pending: PropTypes.bool\n};\n\nexport default HoldingActivityCustomTable;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport SelectSearch from 'react-select-search/dist/cjs';\n\nconst DropdownAgeRange = ({\n all,\n onChange,\n speciesId,\n value\n}) => {\n const { ready, t } = useTranslation();\n\n const species = storeService.session.get.species();\n\n const getItemList = () => {\n let theArray = [];\n\n if (all) {\n theArray.push({ value: 'all', name: t('dropdowns.ageRange.all') });\n }\n\n theArray.push({ value: 'x', name: t('dropdowns.ageRange.unknown') });\n\n switch (speciesId ? speciesId : species.id) {\n default:\n theArray = [\n ...theArray,\n { value: 'a', name: t('dropdowns.ageRange.0-12months') },\n { value: 'g', name: t('dropdowns.ageRange.1-2years') },\n { value: 'h', name: t('dropdowns.ageRange.2-5years') },\n { value: 'i', name: t('dropdowns.ageRange.5-10years') },\n { value: 'j', name: t('dropdowns.ageRange.10+years') }\n ];\n break;\n case 3: // Cattle\n theArray = [\n ...theArray,\n { value: 'a', name: t('dropdowns.ageRange.0-12months') },\n { value: 'b', name: t('dropdowns.ageRange.12-30months') },\n { value: 'c', name: t('dropdowns.ageRange.30-60months') },\n { value: 'd', name: t('dropdowns.ageRange.5-6years') },\n { value: 'e', name: t('dropdowns.ageRange.6-8years') },\n { value: 'f', name: t('dropdowns.ageRange.8-10years') },\n { value: 'j', name: t('dropdowns.ageRange.10+years') }\n ];\n break;\n }\n\n return theArray;\n };\n\n const [selectedValues, setSelectedValues] = useState([]);\n\n useEffect(() => {\n setSelectedValues(value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n return (\n <>\n {ready &&\n helpers.resetDropdownFocusState()}\n options={getItemList()}\n placeholder={t('dropdowns.ageRange.label')}\n printOptions=\"on-focus\"\n value={selectedValues}\n />\n }\n \n );\n};\n\nDropdownAgeRange.propTypes = {\n all: PropTypes.bool,\n onChange: PropTypes.func,\n speciesId: PropTypes.number,\n value: PropTypes.array\n};\n\nexport default DropdownAgeRange;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { isCancel } from 'services/bff';\nimport axios from 'axios';\nimport breedsHelper from 'services/breedsHelper';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport SelectSearch from 'react-select-search/dist/cjs';\nimport storeService from 'services/storeService';\n\nconst DropdownBreedsMulti = ({\n cph,\n date,\n onChange,\n refreshFilters,\n setModal,\n speciesId,\n value\n}) => {\n const { ready, t } = useTranslation();\n\n const species = storeService.session.get.species();\n const holding = storeService.session.get.holding();\n\n const [options, setOptions] = useState([]);\n const [selectedValues, setSelectedValues] = useState([]);\n\n const getItemList = (date, source) => {\n breedsHelper.fetchBreedsOnHolding(source?.token, setModal, cph ? cph : holding.value, speciesId ? speciesId : species.id, date, true)\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n breedsHelper.prepareBreedsOnHolding(res, speciesId ? speciesId : species.id);\n\n const breedsOnHolding = storeService.session.get.breedsOnHolding();\n\n setOptions(breedsOnHolding\n ? breedsOnHolding.map((breed) => ({\n name: breed.name,\n label: breed.name,\n value: encodeURIComponent(breed.name)\n }))\n : []\n );\n\n if (value) {\n setSelectedValues(value);\n }\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n };\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n getItemList(date ? date : helpers.date.now(), source);\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setSelectedValues(value);\n }, [value]);\n\n useEffect(() => {\n if (refreshFilters?.refresh) {\n getItemList(refreshFilters.params.date);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [refreshFilters]);\n\n return (\n <>\n {ready &&\n helpers.resetDropdownFocusState()}\n options={options}\n placeholder={t('dropdowns.breed.label')}\n printOptions=\"on-focus\"\n search\n value={selectedValues}\n />\n }\n \n );\n};\n\nDropdownBreedsMulti.propTypes = {\n cph: PropTypes.string,\n date: PropTypes.string,\n onChange: PropTypes.func,\n refreshFilters: PropTypes.object,\n setModal: PropTypes.func.isRequired,\n speciesId: PropTypes.number,\n value: PropTypes.array\n};\n\nexport default DropdownBreedsMulti;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport SelectSearch from 'react-select-search/dist/cjs';\n\nconst DropdownGender = ({\n all,\n onChange,\n unknown,\n value\n}) => {\n const { ready, t } = useTranslation();\n\n const getItemList = () => {\n const theArray = [];\n\n if (all) {\n theArray.push({ value: 'all', name: t('dropdowns.gender.allGenders') });\n }\n if (unknown) {\n theArray.push({ value: '-', name: t('dropdowns.gender.unknown') });\n }\n theArray.push({ value: constants.option.gender.male, name: t('dropdowns.gender.male') });\n theArray.push({ value: constants.option.gender.female, name: t('dropdowns.gender.female') });\n\n return theArray;\n };\n\n const [selectedValues, setSelectedValues] = useState([]);\n\n useEffect(() => {\n setSelectedValues(value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n return (\n <>\n {ready &&\n helpers.resetDropdownFocusState()}\n options={getItemList()}\n placeholder={t('dropdowns.gender.label')}\n printOptions=\"on-focus\"\n value={selectedValues}\n />\n }\n \n );\n};\n\nDropdownGender.propTypes = {\n all: PropTypes.bool,\n onChange: PropTypes.func,\n unknown: PropTypes.bool,\n value: PropTypes.array\n};\n\nexport default DropdownGender;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/base/fieldLabel/fieldLabel.module.scss';\nimport Tooltip from 'components/base/tooltip/tooltip';\n\nconst FieldLabel = ({\n classNames,\n extraContent,\n id,\n label,\n label2,\n name,\n optional,\n tooltip,\n tooltipPosition\n}) => {\n const { ready, t } = useTranslation();\n\n const outputLabel = t(label);\n const outputLabel2 = (' ' + t(label2));\n\n const componentClassNames = [\n classes.label,\n ...(classNames ? classNames.map((className) => classes[className]) : [])\n ].join(' ').trim();\n\n return (\n <>\n {ready && (outputLabel || outputLabel2) &&\n \n }\n \n );\n};\n\nFieldLabel.propTypes = {\n classNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n extraContent: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.string,\n label2: PropTypes.string,\n name: PropTypes.string,\n optional: PropTypes.bool,\n tooltip: PropTypes.string,\n tooltipPosition: PropTypes.string\n};\n\nexport default FieldLabel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Tooltip from 'components/base/tooltip/tooltip';\nimport classes from 'components/base/hint/hint.module.scss';\n\nconst Hint = ({\n hint,\n tooltip\n}) => {\n const { ready, t } = useTranslation();\n\n const outputHint = t(hint);\n const classname = classes.hint + ((hint === outputHint) ? ' ' + classes.notFound : '');\n\n return (\n <>\n {ready && outputHint &&\n \n \n {tooltip &&\n \n }\n \n }\n \n );\n};\n\nHint.propTypes = {\n hint: PropTypes.string,\n tooltip: PropTypes.string\n};\n\nexport default Hint;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport classes from 'components/base/textEntry/textEntry.module.scss';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport FieldLabel from 'components/base/fieldLabel/fieldLabel';\nimport Hint from 'components/base/hint/hint';\nimport he from 'he';\n\nconst TextEntry = ({\n classNames,\n disabled,\n encrypted,\n errorLabel,\n fieldDescription,\n hideCharacterCount,\n hint,\n id,\n label,\n label2,\n max,\n maxLength,\n maxWidth,\n min,\n name,\n onBlur,\n onChange,\n onKeyDown,\n onKeyUp,\n onMouseLeave,\n optional,\n placeholder,\n readOnly,\n reference,\n rows,\n tooltip,\n tooltipPosition,\n type,\n value,\n warningLabel,\n width\n}) => {\n const { ready, t } = useTranslation();\n\n const inputType = encrypted ? 'password' : (type ? type : 'text');\n\n const [lastKey, setLastKey] = useState();\n\n const labelClassNames = [\n ...(classNames ? classNames : [])\n ];\n\n const inputClassNames = [\n classes.textbox,\n ...(classNames ? classNames.map((className) => classes[className]) : []),\n maxWidth ? classes.maxWidth : '',\n width ? classes[width] : ''\n ].join(' ').trim();\n\n const areaClassNames = [\n ...(classNames ? classNames.map((className) => classes[className]) : []),\n classes.textarea\n ].join(' ').trim();\n\n const countClassNames = [\n maxLength && !hideCharacterCount ? classes.count : '',\n width ? classes[width] : ''\n ].join(' ').trim();\n\n const handleChanges = {\n onKeyDownHandlerInput: (event) => {\n if (onKeyDown) {\n onKeyDown(event);\n } else if (event.key >= 0 && lastKey !== 'Tab' && event.target.value.length === event.target.maxLength) {\n event.preventDefault();\n }\n\n setLastKey(event.key);\n },\n\n onKeyDownHandlerTextarea: (event) => {\n if (event.keyCode === 13 && event.target.value.split('\\n').length >= parseInt(maxLength)) {\n event.preventDefault();\n }\n }\n };\n\n return (\n <>\n {ready &&\n <>\n \n {fieldDescription &&\n {t(fieldDescription)}\n }\n \n \n \n {readOnly &&\n \n }\n {!readOnly && (!rows || rows === 1) &&\n
    \n \n
    \n }\n {rows && rows > 1 &&\n
    \n \n
    \n }\n \n }\n \n );\n};\n\nTextEntry.propTypes = {\n classNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n disabled: PropTypes.bool,\n errorLabel: PropTypes.string,\n fieldDescription: PropTypes.string,\n hideCharacterCount: PropTypes.bool,\n hint: PropTypes.string,\n id: PropTypes.string.isRequired,\n label: PropTypes.string,\n label2: PropTypes.string,\n max: PropTypes.number,\n maxLength: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n maxWidth: PropTypes.bool,\n min: PropTypes.number,\n name: PropTypes.string.isRequired,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onKeyDown: PropTypes.func,\n onKeyUp: PropTypes.func,\n onMouseLeave: PropTypes.func,\n optional: PropTypes.bool,\n placeholder: PropTypes.string,\n readOnly: PropTypes.bool,\n reference: PropTypes.string,\n rows: PropTypes.number,\n tooltip: PropTypes.string,\n tooltipPosition: PropTypes.string,\n type: PropTypes.string,\n value: PropTypes.any,\n warningLabel: PropTypes.string,\n width: PropTypes.string\n};\n\nexport default TextEntry;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport TextEntry from 'components/base/textEntry/textEntry';\n\nconst SearchField = ({\n id,\n label,\n name,\n onChange,\n placeholder,\n reference,\n tooltip,\n tooltipPosition,\n value\n}) => {\n return (\n \n );\n};\n\nSearchField.propTypes = {\n id: PropTypes.string.isRequired,\n label: PropTypes.string,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n reference: PropTypes.string,\n tooltip: PropTypes.string,\n tooltipPosition: PropTypes.string,\n value: PropTypes.string\n};\n\nexport default SearchField;\n","import React, { useEffect } from 'react';\nimport classes from 'components/table/filters/filtersAnimalsOnHolding/filtersAnimalsOnHolding.module.scss';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport { useTranslation } from 'react-i18next';\nimport DropdownAgeRange from 'components/dropdownAgeRange/dropdownAgeRange';\nimport DropdownBreeds from 'components/dropdownBreedsMulti/dropdownBreedsMulti';\nimport DropdownGender from 'components/dropdownGender/dropdownGender';\nimport FieldLabel from 'components/base/fieldLabel/fieldLabel';\nimport SearchField from 'components/base/searchField/searchField';\n\nconst AnimalsOnHoldingFilters = ({\n cph,\n date,\n refreshFilters,\n setModal,\n setTableParams,\n speciesId,\n storeFilters,\n tableParams\n}) => {\n const { ready } = useTranslation();\n\n const species = storeService.session.get.species();\n\n const [filterAgeRange, setFilterAgeRange] = React.useState(tableParams?.filters.ageRange ? tableParams.filters.ageRange : []);\n const [filterBreed, setFilterBreed] = React.useState(tableParams?.filters.breedName ? tableParams.filters.breedName : []);\n const [filterGender, setFilterGender] = React.useState(tableParams?.filters.gender ? tableParams.filters.gender : []);\n const [filterTagNumber, setFilterTagNumber] = React.useState(tableParams?.filters.tagNumber ? tableParams.filters.tagNumber : '');\n const [filtersInitialised, setFiltersInitialised] = React.useState(false);\n\n const handleChanges = {\n ageRange: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n storeService.session.removeAll.searchResults();\n setFilterAgeRange(value);\n\n if (value.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { ageRange, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters,\n page: {\n ...prevState.page,\n index: 0\n }\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { ageRange, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n ageRange: value\n },\n page: {\n ...prevState.page,\n index: 0\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n ageRange: value\n });\n }\n },\n\n breed: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n storeService.session.removeAll.searchResults();\n setFilterBreed(value);\n\n if (value.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { breedName, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters,\n page: {\n ...prevState.page,\n index: 0\n }\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { breedName, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n breedName: value.map((item) => item.split('%20').join('_'))\n },\n page: {\n ...prevState.page,\n index: 0\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n breedName: value\n });\n }\n },\n\n gender: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n storeService.session.removeAll.searchResults();\n setFilterGender(value);\n\n if (value.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { gender, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters,\n page: {\n ...prevState.page,\n index: 0\n }\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { gender, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n gender: value\n },\n page: {\n ...prevState.page,\n index: 0\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n gender: value\n });\n }\n },\n\n tagNumber: (value) => {\n setFilterTagNumber(value);\n }\n };\n\n useEffect(() => {\n let typingTimer;\n\n if (filtersInitialised) {\n typingTimer = setTimeout(() => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n storeService.session.removeAll.searchResults();\n\n if (filterTagNumber.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { tagNumber, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters,\n page: {\n ...prevState.page,\n index: 0\n }\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { tagNumber, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n tagNumber: filterTagNumber\n },\n page: {\n ...prevState.page,\n index: 0\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n tagNumber: filterTagNumber\n });\n }\n\n // setTableParams((prevState) => ({\n // ...prevState,\n // filters: {\n // ...prevState.filters,\n // tagNumber: filterTagNumber\n // }\n // }));\n }, 1000);\n }\n\n return () => {\n clearTimeout(typingTimer);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterTagNumber]);\n\n useEffect(() => {\n setFiltersInitialised(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ready &&\n
    \n
    \n handleChanges.tagNumber(event.target.value)}\n placeholder=\"Search\"\n tooltip=\"animalsOnHolding.tooltip\"\n tooltipPosition=\"bottom\"\n value={filterTagNumber}\n />\n
    \n\n {!helpers.species.isDeerId(speciesId ? speciesId : species.id) &&\n <>\n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n \n }\n
    \n }\n \n );\n};\n\nAnimalsOnHoldingFilters.propTypes = {\n cph: PropTypes.string,\n date: PropTypes.string,\n refreshFilters: PropTypes.object,\n setModal: PropTypes.func.isRequired,\n setTableParams: PropTypes.func.isRequired,\n speciesId: PropTypes.number,\n storeFilters: PropTypes.string.isRequired,\n tableParams: PropTypes.object.isRequired\n};\n\nexport default AnimalsOnHoldingFilters;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/base/button/button.module.scss';\n\nconst Button = ({\n ariaLabel,\n autoFocus,\n buttonType,\n disabled,\n extraContent,\n icon,\n id,\n label,\n onClick,\n tabIndex,\n type\n}) => {\n const { ready, t } = useTranslation();\n\n const componentClassNames = [\n buttonType ? classes[buttonType] : classes.primary\n ].join(' ').trim();\n\n return (\n <>\n {ready &&\n \n {icon &&\n \n }\n {label &&\n \n {t(label)}\n {extraContent &&\n {extraContent}\n }\n \n }\n \n }\n \n );\n};\n\nButton.propTypes = {\n ariaLabel: PropTypes.string,\n autoFocus: PropTypes.bool,\n buttonType: PropTypes.oneOf([\n 'calendar',\n 'clear',\n 'danger',\n 'link',\n 'linkDanger',\n 'primary',\n 'remove',\n 'secondary',\n 'tertiary',\n 'upload'\n ]),\n disabled: PropTypes.bool,\n extraContent: PropTypes.string,\n icon: PropTypes.any,\n id: PropTypes.string.isRequired,\n label: PropTypes.string,\n onClick: PropTypes.func,\n tabIndex: PropTypes.string,\n type: PropTypes.string\n};\n\nexport default Button;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/base/radioButton/radioButton.module.scss';\nimport PropTypes from 'prop-types';\n\nconst RadioButton = ({\n classNames,\n defaultChecked,\n disabled,\n id,\n inline,\n label,\n name,\n onChange,\n value\n}) => {\n const { ready, t } = useTranslation();\n\n const componentClassNames = [\n classes.radioButton,\n disabled ? classes.disabled : '',\n inline ? classes.inline : '',\n defaultChecked ? classes.checked : '',\n ...(classNames ? classNames.map((className) => classes[className]) : [])\n ].join(' ').trim();\n\n return (\n <>\n {ready &&\n
    \n \n
    \n }\n \n );\n};\n\nRadioButton.propTypes = {\n classNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n defaultChecked: PropTypes.bool,\n disabled: PropTypes.bool,\n id: PropTypes.string.isRequired,\n inline: PropTypes.bool,\n label: PropTypes.string,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n value: PropTypes.any\n};\n\nexport default RadioButton;\n","import React from 'react';\nimport classes from 'components/base/radioButtons/radioButtons.module.scss';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport Hint from 'components/base/hint/hint';\nimport Legend from 'components/base/legend/legend';\nimport RadioButton from 'components/base/radioButton/radioButton';\n\nconst RadioButtons = ({\n classNames,\n disabled,\n error,\n hideLegend,\n hint,\n id,\n ids,\n inline,\n label,\n legendClassNames,\n name,\n onChange,\n optional,\n species,\n suppressHint,\n suppressLabel,\n tooltip,\n value,\n warning\n}) => {\n const currentSpecies = storeService.session.get.species() ? storeService.session.get.species().id : null;\n\n const componentClassNames = [\n classes.radioButtons,\n inline ? classes.inline : '',\n ...(classNames ? classNames.map((className) => classes[className]) : [])\n ].join(' ').trim();\n\n let allFieldsDisabled = false;\n if (disabled) {\n allFieldsDisabled = (ids.filter((item) => !disabled.includes(item))).length === 0;\n }\n\n const getFieldLegend = () => {\n if (hideLegend) {\n return '';\n }\n if (species) {\n return ['radioButtons', name, 'label' + currentSpecies].join('.');\n }\n if (label) {\n return label;\n }\n\n return ['radioButtons', name, 'label'].join('.');\n };\n\n const getRadioLabel = (id) => {\n return ['radioButtons', name, (species) ? id + currentSpecies : id].join('.');\n };\n\n const getHint = () => {\n return [\n 'radioButtons',\n name,\n hint ? hint : 'hint'\n ].join('.');\n };\n\n return (\n
    \n {!suppressLabel &&\n \n }\n {!suppressHint &&\n \n }\n \n \n
    \n {ids.filter((item) => item.showIf !== false && item.hideIf !== true).map((item) => {\n let itemId;\n let itemLabel;\n let itemValue;\n\n if (typeof item === 'object') {\n itemId = `${name}_${item.id}`;\n itemLabel = item.label ? item.label : getRadioLabel(item.id);\n itemValue = item.id;\n } else {\n itemId = `${name}_${item}`;\n itemLabel = getRadioLabel(item);\n itemValue = item;\n }\n\n return (\n \n );\n })}\n
    \n
    \n );\n};\n\nRadioButtons.propTypes = {\n classNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n disabled: PropTypes.arrayOf(\n PropTypes.string\n ),\n error: PropTypes.string,\n hideLegend: PropTypes.bool,\n hint: PropTypes.string,\n id: PropTypes.string,\n ids: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object\n ])\n ).isRequired,\n inline: PropTypes.bool,\n label: PropTypes.string,\n legendClassNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n optional: PropTypes.bool,\n species: PropTypes.bool,\n suppressHint: PropTypes.bool,\n suppressLabel: PropTypes.bool,\n tooltip: PropTypes.string,\n value: PropTypes.string,\n warning: PropTypes.string\n};\n\nexport default RadioButtons;\n","import React, { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/table/filters/filtersBoAnimalActivity/filtersBoAnimalActivity.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport Button from 'backOfficeComponents/base/button/button';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport TextEntry from 'components/base/textEntry/textEntry';\n\nconst BoAnimalActivityFilters = ({\n data,\n hasData,\n loadPending,\n setData,\n setRenderTable,\n setTableParams,\n storeFilters,\n tableParams\n}) => {\n const { ready } = useTranslation();\n const history = useHistory();\n\n const [filterSpeciesName, setFilterSpeciesName] = React.useState(tableParams?.filters?.speciesName);\n const [filterTagNumber, setFilterTagNumber] = React.useState(tableParams?.filters?.tagNumber);\n const [searchDisabled, setSearchDisabled] = React.useState(true);\n\n const handleChanges = {\n speciesName: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setFilterSpeciesName(value);\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n speciesId: helpers.species.nameToId(value),\n speciesName: helpers.species.formatName(value),\n useComponent: tableParams.filters.useComponent\n });\n\n setData([]);\n storeService.session.removeAll.searchResults();\n storeService.session.remove[`tableFilters${storeFilters}MovementHistory`]();\n storeService.session.remove[`tableFilters${storeFilters}TaggingHistory`]();\n storeService.session.remove[`tableFilters${storeFilters}Progeny`]();\n\n setRenderTable(false);\n\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n speciesName: value\n }\n }));\n\n history.push(Routing.boAnimalActivity);\n },\n\n tagNumber: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setFilterTagNumber(value);\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n tagNumber: value,\n useComponent: tableParams.filters.useComponent\n });\n\n setData([]);\n storeService.session.removeAll.searchResults();\n storeService.session.remove[`tableFilters${storeFilters}MovementHistory`]();\n storeService.session.remove[`tableFilters${storeFilters}TaggingHistory`]();\n storeService.session.remove[`tableFilters${storeFilters}Progeny`]();\n\n setRenderTable(false);\n\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n tagNumber: value\n }\n }));\n\n history.push(Routing.boAnimalActivity);\n }\n };\n\n const runRequest = () => {\n storeService.session.remove[`tableFilters${storeFilters}MovementHistory`]();\n storeService.session.remove[`tableFilters${storeFilters}TaggingHistory`]();\n storeService.session.remove[`tableFilters${storeFilters}Progeny`]();\n\n storeService.session.removeAll.searchResults();\n setData([]);\n\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n speciesId: filterSpeciesName ? helpers.species.nameToId(filterSpeciesName) : null,\n speciesName: helpers.species.formatName(filterSpeciesName),\n tagNumber: filterTagNumber\n },\n page: {\n ...prevState.page,\n index: 0\n },\n request: {\n ...prevState.request,\n url: '/animalActivity',\n params: {\n ...prevState.request.params,\n speciesId: filterSpeciesName ? helpers.species.nameToId(filterSpeciesName) : null,\n tagNumber: filterTagNumber\n }\n }\n }));\n setRenderTable(true);\n };\n\n useEffect(() => {\n const sheepAndGoatsPattern = new RegExp('^[a-z]{2}[0-9]{7,}$');\n const deerPattern = new RegExp('^[a-z]{3,4}[0-9]{5,}$');\n\n if (\n loadPending || hasData ||\n !filterSpeciesName ||\n !filterTagNumber ||\n (\n (filterSpeciesName.toLowerCase() === constants.species.animalTypes.SHEEP || filterSpeciesName.toLowerCase() === constants.species.animalTypes.GOATS) &&\n !filterTagNumber.replaceAll(' ', '').toLowerCase().match(sheepAndGoatsPattern)\n ) ||\n (\n filterSpeciesName.toLowerCase() === constants.species.animalTypes.DEER &&\n !filterTagNumber.replaceAll(' ', '').toLowerCase().match(deerPattern)\n )\n ) {\n setSearchDisabled(true);\n } else {\n setSearchDisabled(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n loadPending,\n hasData,\n filterSpeciesName,\n filterTagNumber\n ]);\n\n useEffect(() => {\n setTableParams((prevState) => ({\n ...prevState,\n request: {\n ...prevState.request,\n url: '/animalActivity',\n params: {\n ...prevState.request.params,\n speciesId: filterSpeciesName ? helpers.species.nameToId(filterSpeciesName) : null,\n tagNumber: filterTagNumber\n }\n }\n }));\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (hasData && !data[0].notApplied) {\n history.push(Routing.boAnimalActivityMovementHistory);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasData]);\n\n return (\n <>\n {ready &&\n <>\n
    \n handleChanges.speciesName(event.target.value)}\n reduceSpace={true}\n suppressLabel={false}\n value={filterSpeciesName?.toLowerCase()}\n />\n\n
    \n handleChanges.tagNumber(event.target.value)}\n placeholder=\"label.enterFullTagNumber\"\n value={filterTagNumber}\n />\n
    \n\n
    \n \n
    \n
    \n \n }\n \n );\n};\n\nBoAnimalActivityFilters.propTypes = {\n hasData: PropTypes.bool.isRequired,\n loadPending: PropTypes.bool.isRequired,\n setData: PropTypes.func.isRequired,\n setRenderTable: PropTypes.func.isRequired,\n setTableParams: PropTypes.func.isRequired,\n storeFilters: PropTypes.string.isRequired,\n tableParams: PropTypes.object.isRequired\n};\n\nexport default BoAnimalActivityFilters;\n","import React from 'react';\nimport classes from 'components/base/checkboxGroup/checkboxGroup.module.scss';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport CheckBox from 'components/base/checkbox/checkbox';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport FieldLabel from 'components/base/fieldLabel/fieldLabel';\nimport Hint from 'components/base/hint/hint';\nimport Legend from 'components/base/legend/legend';\nimport helpers from 'services/helpers';\n\nconst CheckboxGroup = ({\n disabled,\n error,\n hint,\n inline,\n label,\n legendLabel,\n name,\n objects,\n onChange,\n optional,\n pending,\n species\n}) => {\n const getLabel = (label, species) => {\n return (species) ? label + storeService.session.get.species().id : label;\n };\n\n const checkboxLabel = (label, species) => {\n const prefix = name ? name + '.' : '';\n return prefix + getLabel(label, species);\n };\n\n const className = inline ? classes.checkboxGroup + ' ' + classes.inline : classes.checkboxGroup;\n\n return (\n
    \n {legendLabel &&\n \n }\n \n \n \n {pending &&\n \n }\n {!pending &&\n
    \n {objects?.map((obj) => (\n \n ))}\n
    \n }\n
    \n );\n};\n\nCheckboxGroup.propTypes = {\n disabled: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.bool\n ]),\n error: PropTypes.string,\n hint: PropTypes.string,\n inline: PropTypes.bool,\n label: PropTypes.string,\n legendLabel: PropTypes.string,\n name: PropTypes.string,\n objects: PropTypes.arrayOf(\n PropTypes.exact({\n id: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string\n ]),\n disabled: Boolean,\n label: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.bool\n })\n ).isRequired,\n onChange: PropTypes.func,\n optional: PropTypes.bool,\n pending: PropTypes.bool,\n species: PropTypes.number\n};\n\nexport default CheckboxGroup;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport helpers from 'services/helpers';\nimport { fieldWidthType } from 'services/constants';\nimport classes from 'components/base/cphField/cphField.module.scss';\nimport TextEntry from 'components/base/textEntry/textEntry';\n\nconst CPHField = ({\n classNames,\n cph,\n disabled,\n error,\n hideTooltip,\n id,\n isFormGroup,\n label,\n onBlur,\n optional,\n readOnly,\n setCph,\n warningLabel,\n width\n}) => {\n const [key, setKey] = React.useState(undefined);\n\n const formGroupClassName = [\n isFormGroup ? classes.formGroup : ''\n ].join(' ').trim();\n\n const handleChanges = {\n onChange: (event) => {\n const element = event.target;\n let caret = element.selectionStart;\n let value = element.value.split('');\n\n // Update value and caret around separators\n if ((caret === 3 || caret === 7) && key !== 'Delete' && key !== 'Backspace') {\n caret++;\n } else if ((caret === 2 || caret === 6) && key === 'Backspace') {\n value.splice(caret - 1, 1);\n caret--;\n } else if ((caret === 2 || caret === 6) && key === 'Delete') {\n value.splice(caret, 1);\n }\n\n // Update caret for non-digits\n if (key?.length === 1 && (/[^0-9]/).test(key)) {\n caret--;\n }\n\n value = value.join('')\n // Limit input to only digits\n .replace(/[^0-9]+/g, '')\n // Limit input to 9 digits\n .replace(/(.{9}).*$/, '$1')\n // Insert \"/\" between groups of digits\n .replace(/^(.?.?)(.?.?.?)(.?.?.?.?)$/, '$1/$2/$3')\n // Remove \"/\" at the end\n .replace(/\\/*$/, '');\n\n setCph(value);\n\n // \"setTimeout\" to update caret after setValue\n window.requestAnimationFrame(() => {\n element.setSelectionRange(caret, caret);\n });\n },\n\n onKeyDown: (event) => {\n setKey(event.key);\n },\n\n onKeyUp: (event, id) => {\n const element = document.getElementById(id);\n\n if (event.keyCode < 48 || event.keyCode > 57) { // Any non-numeric key\n return;\n }\n\n const selection = window.getSelection().toString();\n if (selection !== '') {\n const selectionStart = element.selectionStart;\n const selectionEnd = element.selectionEnd;\n\n const newCphNumber = cph.substring(0, selectionStart) + event.key + cph.substr(selectionEnd);\n helpers.setCaretPosition(element, selectionStart + 1);\n setCph(newCphNumber);\n }\n }\n };\n\n return (\n
    \n \n
    \n );\n};\n\nCPHField.propTypes = {\n classNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n cph: PropTypes.string,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n hideTooltip: PropTypes.bool,\n id: PropTypes.string.isRequired,\n isFormGroup: PropTypes.bool,\n label: PropTypes.string,\n onBlur: PropTypes.func,\n optional: PropTypes.bool,\n readOnly: PropTypes.bool,\n setCph: PropTypes.func,\n warningLabel: PropTypes.string,\n width: PropTypes.oneOf([\n fieldWidthType.HALF,\n fieldWidthType.QUARTER\n ])\n};\n\nexport default CPHField;\n","import React from 'react';\nimport classes from 'backOfficeComponents/cphEntry/cphEntry.module.scss';\nimport constants, { fieldWidthType } from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Address from 'backOfficeComponents/address/address';\nimport CPHField from 'components/base/cphField/cphField';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\n\nconst CPHEntry = ({\n addressClassNames,\n cphError,\n data,\n disabled,\n errorClassNames,\n format,\n hideTooltip,\n labelText,\n name,\n optional,\n setCphType,\n setCphValid,\n setData,\n setModal,\n setUserName\n}) => {\n const handleChanges = {\n onChange: (event) => {\n setData(event.target.value.trim());\n }\n };\n\n return (\n <>\n \n\n {helpers.response.isError(cphError?.type) && cphError?.inline &&\n
    \n \n
    \n }\n\n {(!cphError?.type || !cphError?.inline) &&\n
    classes[className]) : ''}>\n \n
    \n }\n \n );\n};\n\nCPHEntry.propTypes = {\n addressClassNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n cphError: PropTypes.exact({\n type: PropTypes.oneOf([\n constants.errorAndWarning.error,\n constants.errorAndWarning.warning,\n ''\n ]),\n inline: PropTypes.bool,\n value: PropTypes.string\n }),\n data: PropTypes.string,\n disabled: PropTypes.bool,\n errorClassNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n format: PropTypes.exact({\n address: PropTypes.oneOf([\n constants.address.format.full,\n constants.address.format.short,\n constants.address.format.line,\n constants.address.format.inline,\n constants.address.format.none\n ]),\n name: PropTypes.oneOf([\n constants.address.format.full,\n constants.address.format.inline,\n constants.address.format.none\n ]),\n type: PropTypes.oneOf([\n constants.address.format.full,\n constants.address.format.none\n ])\n }),\n hideTooltip: PropTypes.bool,\n labelText: PropTypes.string,\n name: PropTypes.string.isRequired,\n optional: PropTypes.bool,\n setCphType: PropTypes.func,\n setCphValid: PropTypes.func,\n setData: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n setUserName: PropTypes.func\n};\n\nexport default CPHEntry;\n","import React from 'react';\nimport { defineCustomElements } from '@duetds/date-picker/dist/loader';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\n\ndefineCustomElements(window).catch((error) => {\n console.error(error); //eslint-disable-line\n});\n\nconst useListener = (ref, eventName, handler) => {\n React.useEffect(() => {\n if (ref.current) {\n const element = ref.current;\n element.addEventListener(eventName, handler);\n return () => element.removeEventListener(eventName, handler);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [eventName, handler, ref]);\n};\n\nconst dateFormat = (yearLength) => new RegExp(\n `^(\\\\d{1,2})\\\\D(\\\\d{1,2})\\\\D(\\\\d{${yearLength}})$`\n);\n\nconst localisation = {\n buttonLabel: 'Choose date',\n placeholder: 'DD/MM/YYYY',\n selectedDateMessage: 'Selected date is',\n prevMonthLabel: 'Previous month',\n nextMonthLabel: 'Next month',\n monthSelectLabel: 'Month',\n yearSelectLabel: 'Year',\n closeLabel: 'Close window',\n keyboardInstruction: 'You can use arrow keys to navigate dates',\n calendarHeading: 'Choose a date',\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n};\n\nconst mapDateFormat = (yearLength) => yearLength && yearLength === 4 ? 'DD/MM/YYYY' : 'DD/MM/YY';\n\nconst dateAdapter = (yearLength) => ({\n parse: (value = '', createDate) => {\n const matches = value.match(dateFormat(yearLength));\n if (matches) {\n const getYear = (yearToParse, yearLength) => {\n if (yearLength === 4) {\n return yearToParse.replace(/^0+/, (element) => {\n return '1'.repeat(element.length);\n });\n }\n return 20 + yearToParse;\n };\n return createDate(getYear(matches[3], yearLength), matches[2], matches[1]);\n }\n return null;\n },\n format: (date) => helpers.date.formatJSDate(date, mapDateFormat(yearLength))\n});\n\nconst DatePicker = ({\n id,\n onBlur,\n onChange,\n onClose,\n onFocus,\n onOpen,\n value,\n yearLength,\n ...props\n}) => {\n\n const ref = React.useRef(null);\n\n useListener(ref, 'duetChange', onChange);\n useListener(ref, 'duetFocus', onFocus);\n useListener(ref, 'duetBlur', (event) => {\n onBlur(event, id);\n });\n useListener(ref, 'duetOpen', onOpen);\n useListener(ref, 'duetClose', onClose);\n\n React.useEffect(() => {\n const fieldCheck = setInterval(() => {\n const theField = document.getElementById(id);\n if (theField) {\n theField.setAttribute('maxlength', 6 + (yearLength ? yearLength : 4));\n clearInterval(fieldCheck);\n }\n }, 500);\n }, [id, yearLength]);\n\n React.useEffect(() => {\n ref.current.localization = { ...localisation, placeholder: mapDateFormat(yearLength) };\n ref.current.dateAdapter = dateAdapter(yearLength);\n }, [yearLength]);\n\n return (\n );\n};\n\nDatePicker.propTypes = {\n id: PropTypes.string.isRequired,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onClose: PropTypes.func,\n onFocus: PropTypes.func,\n onOpen: PropTypes.func,\n value: PropTypes.string,\n yearLength: PropTypes.number\n};\n\nexport default DatePicker;\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgDownloadIcon = function SvgDownloadIcon(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"#000000\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 15v4c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2v-4M17 9l-5 5-5-5M12 12.8V2.5\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgDownloadIcon, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Download_icon.1b103bf2.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState } from 'react';\nimport classes from 'components/base/inputDate/inputDate.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport DatePicker from 'components/base/datePicker/datePicker';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport FieldLabel from 'components/base/fieldLabel/fieldLabel';\nimport Hint from 'components/base/hint/hint';\nimport Legend from 'components/base/legend/legend';\n\nconst InputDate = ({\n clear,\n disabled,\n dontValidate,\n error,\n errorPosition,\n hint,\n id,\n labelPosition,\n labelText,\n legend,\n maxDate,\n minDate,\n onChange,\n onOpen,\n optional,\n setClear,\n setError,\n setValue,\n value,\n warning,\n warningPosition,\n yearLength\n}) => {\n const handleChanges = {\n onBlur: (event, id) => {\n const dateField = document.getElementById(id);\n // Dirty hack to cater for Duet Date Picker's lacks as highlighted in:\n // https://github.com/duetds/date-picker/issues/47\n // https://github.com/duetds/date-picker/issues/57\n\n const dateFormat = yearLength === 4 ? 'DD/MM/YYYY' : 'DD/MM/YY';\n if (dateField && helpers.date.is.invalid(dateField.value, dateFormat)) {\n\n const dateFieldValue = helpers.date.formatJSDatePreformatted(dateField.value, dateFormat);\n if (dateFieldValue === 'Invalid date') {\n setError('error.dateInvalid');\n } else {\n const reformattedValueForEndpoint = helpers.date.formatYYYYMMDDPreformatted(dateFieldValue, dateFormat);\n onChange({ target: { type: 'select', name: 'date', value: reformattedValueForEndpoint } });\n dateField.value = dateFieldValue;\n }\n } else {\n onChange({ target: { type: 'select', name: 'date', value: event.target.value } });\n }\n },\n\n onChange: (event) => {\n onChange({ target: { type: 'select', name: 'date', value: event.detail.value } });\n }\n };\n\n const [hasInlineWarningOrError, setHasInlineWarningOrError] = useState(false);\n\n const componentClassNames = [\n classes.date,\n hasInlineWarningOrError ? classes.inlineWarningOrError : ''\n ].join(' ').trim();\n\n React.useEffect(() => {\n if (dontValidate) {\n if (clear) {\n setValue('');\n setClear(false);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, setError, clear, setClear]);\n\n React.useEffect(() => {\n if (\n (error && helpers.labelPosition.isInline(errorPosition)) ||\n (warning && helpers.labelPosition.isInline(warningPosition))\n ) {\n setHasInlineWarningOrError(true);\n }\n }, [error, errorPosition, warning, warningPosition]);\n\n return (\n
    \n {legend &&\n \n }\n {labelText && (!labelPosition || helpers.labelPosition.isAbove(labelPosition)) &&\n \n }\n \n {warning && (!warningPosition || helpers.labelPosition.isAbove(warningPosition)) &&\n \n }\n {error && (!errorPosition || helpers.labelPosition.isAbove(errorPosition)) &&\n \n }\n
    \n {labelText && helpers.labelPosition.isInline(labelPosition) &&\n \n }\n \n {warning && helpers.labelPosition.isInline(warningPosition) &&\n \n }\n {error && helpers.labelPosition.isInline(errorPosition) &&\n \n }\n
    \n
    \n );\n};\n\nInputDate.propTypes = {\n clear: PropTypes.bool,\n disabled: PropTypes.bool,\n dontValidate: PropTypes.bool,\n error: PropTypes.string,\n errorPosition: PropTypes.string,\n hint: PropTypes.string,\n id: PropTypes.string.isRequired,\n labelPosition: PropTypes.oneOf([\n constants.labelPosition.above,\n constants.labelPosition.inline,\n constants.labelPosition.none\n ]),\n labelText: PropTypes.string,\n legend: PropTypes.string,\n maxDate: PropTypes.string,\n minDate: PropTypes.string,\n onChange: PropTypes.func,\n onOpen: PropTypes.func,\n optional: PropTypes.bool,\n setClear: PropTypes.func,\n setError: PropTypes.func.isRequired,\n setValue: PropTypes.func,\n value: PropTypes.string,\n warning: PropTypes.string,\n warningPosition: PropTypes.string,\n yearLength: PropTypes.number\n};\n\nexport default InputDate;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/base/dateRange/dateRange.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport Button from 'components/base/button/button';\nimport InputDate from 'components/base/inputDate/inputDate';\n\nconst DateRange = ({\n allowTomorrow,\n classNames,\n disabled,\n fromDate,\n fromDateError,\n fromDateRequired,\n inline,\n loadPending,\n maxRange,\n setFromDate,\n setFromDateError,\n setToDate,\n setToDateError,\n submit,\n submitDisabled,\n submitLabel,\n toDate,\n toDateError,\n toDateRequired,\n yearLength\n}) => {\n const { ready, t } = useTranslation();\n\n const getDates = {\n fromMin: () => {\n if (maxRange && toDate) {\n return helpers.date.formatYYYYMMDD(\n helpers.date.momentToJSDate(\n helpers.date.momentMinDate(\n helpers.date.subtractPeriod(toDate, maxRange.value, maxRange.unit),\n helpers.date.todayEndOfDay()\n )\n )\n );\n }\n\n return null;\n },\n\n fromMax: () => {\n const today = new Date();\n\n if (toDate) {\n if (!allowTomorrow && helpers.date.is.inTheFuture(toDate)) {\n return helpers.date.formatYYYYMMDD(today);\n }\n\n return helpers.date.formatYYYYMMDD(toDate);\n }\n\n return helpers.date.formatYYYYMMDD(today);\n },\n\n toMin: () => {\n if (fromDate) {\n return helpers.date.formatYYYYMMDD(fromDate);\n }\n\n return null;\n },\n\n toMax: () => {\n const today = new Date();\n\n if (maxRange && fromDate) {\n return helpers.date.formatYYYYMMDD(\n helpers.date.momentToJSDate(\n helpers.date.momentMinDate(\n helpers.date.addPeriod(fromDate, maxRange.value, maxRange.unit),\n allowTomorrow\n ? helpers.date.addPeriod(today, 1, constants.period.days)\n : helpers.date.todayEndOfDay()\n )\n )\n );\n }\n\n if (allowTomorrow) {\n return helpers.date.formatYYYYMMDD(\n helpers.date.endOfDay(\n helpers.date.addPeriod(today, 1, constants.period.days)\n )\n );\n }\n\n return helpers.date.formatYYYYMMDD(today);\n }\n };\n\n const [disableSubmit, setDisableSubmit] = useState(false);\n const [fromMin, setFromMin] = useState(getDates.fromMin());\n const [fromMax, setFromMax] = useState(getDates.fromMax());\n const [toMin, setToMin] = useState(getDates.toMin());\n const [toMax, setToMax] = useState(getDates.toMax());\n\n const componentClassNames = [\n 'section',\n classes.dateRange,\n ...(classNames ? classNames.map((className) => classes[className]) : []),\n inline ? classes.inline : ''\n ].join(' ').trim();\n\n const validateDate = (date, which) => {\n let hasError = false;\n\n setDisableSubmit(true);\n\n if (helpers.flags.isFrom(which)) {\n setFromDateError('');\n\n const fromDateIsInTheFuture = helpers.date.is.inTheFuture(date);\n const fromDateIsAfterToDate = helpers.date.is.afterDate(date, toDate);\n const fromDateFromIsOneYearBeforeToDate = maxRange?.value === 1 && maxRange.unit === 'Year' && helpers.date.is.xPeriodBeforeDate(date, toDate, 1, constants.period.years);\n\n if (!hasError && date === '' && toDate !== '' && fromDateRequired) {\n setFromDateError(t('error.selectDate'));\n\n hasError = true;\n }\n\n if (!hasError && fromDateIsInTheFuture && !allowTomorrow) {\n setFromDateError(fromDateIsInTheFuture);\n\n hasError = true;\n }\n\n if (!hasError && fromDateIsAfterToDate) {\n setFromDateError('error.fromDateCannotBeAfterToDate');\n\n hasError = true;\n }\n\n if (!hasError && fromDateFromIsOneYearBeforeToDate) {\n setFromDateError('error.fromDateCannotBeOneYearBeforeToDate');\n }\n } else if (helpers.flags.isTo(which)) {\n setToDateError('');\n\n const toDateIsInTheFuture = helpers.date.is.inTheFuture(date);\n const toDateIsBeforeFromDate = helpers.date.is.beforeDate(date, fromDate);\n const fromDateFromIsOneYearAfterToDate = maxRange?.value === 1 && maxRange.unit === 'Year' && helpers.date.is.xPeriodAfterDate(date, fromDate, 1, constants.period.years);\n\n if (!hasError && date === '' && toDate !== '' && toDateRequired) {\n setToDateError(t('error.selectDate'));\n\n hasError = true;\n }\n\n if (!hasError && toDateIsInTheFuture && !allowTomorrow) {\n setToDateError(toDateIsInTheFuture);\n\n hasError = true;\n }\n\n if (!hasError && toDateIsBeforeFromDate) {\n setToDateError('error.toDateCannotBeBeforeFromDate');\n\n hasError = true;\n }\n\n if (!hasError && fromDateFromIsOneYearAfterToDate) {\n setToDateError('error.toDateCannotBeOneYearAfterFromDate');\n }\n }\n\n if (!hasError) {\n setDisableSubmit(false);\n }\n };\n\n const handleChanges = {\n fromDate: (date) => {\n setFromDate(date);\n validateDate(date, constants.flags.from);\n },\n\n toDate: (date) => {\n setToDate(date);\n validateDate(date, constants.flags.to);\n }\n };\n\n useEffect(() => {\n setFromMin(getDates.fromMin());\n setFromMax(getDates.fromMax());\n setToMin(getDates.toMin());\n setToMax(getDates.toMax());\n validateDate(fromDate, constants.flags.from);\n validateDate(toDate, constants.flags.to);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allowTomorrow]);\n\n useEffect(() => {\n setToMin(getDates.toMin());\n setToMax(getDates.toMax());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fromDate]);\n\n useEffect(() => {\n setFromMin(getDates.fromMin());\n setFromMax(getDates.fromMax());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [toDate]);\n\n return (\n <>\n {ready &&\n
    \n
    \n handleChanges.fromDate(event.target.value)}\n setError={setFromDateError}\n value={fromDate}\n yearLength={yearLength ? yearLength : 4}\n />\n
    \n
    \n handleChanges.toDate(event.target.value)}\n setError={setToDateError}\n value={toDate}\n yearLength={yearLength ? yearLength : 4}\n />\n
    \n {submit &&\n
    \n \n
    \n }\n
    \n }\n \n );\n};\n\nDateRange.propTypes = {\n allowTomorrow: PropTypes.bool,\n classNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n disabled: PropTypes.bool,\n fromDate: PropTypes.string,\n fromDateError: PropTypes.string,\n fromDateRequired: PropTypes.bool,\n inline: PropTypes.bool,\n loadPending: PropTypes.bool,\n maxRange: PropTypes.exact({\n value: PropTypes.number.isRequired,\n unit: PropTypes.oneOf([\n constants.period.days,\n constants.period.weeks,\n constants.period.months,\n constants.period.years\n ]).isRequired\n }),\n setFromDate: PropTypes.func,\n setFromDateError: PropTypes.func,\n setToDate: PropTypes.func,\n setToDateError: PropTypes.func,\n submit: PropTypes.func,\n submitDisabled: PropTypes.bool,\n submitLabel: PropTypes.string,\n toDate: PropTypes.string,\n toDateError: PropTypes.string,\n toDateRequired: PropTypes.bool,\n yearLength: PropTypes.number\n};\n\nexport default DateRange;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport helpers from 'services/helpers';\nimport classes from 'components/base/dropdownSearch/dropdownSearch.module.scss';\nimport PropTypes from 'prop-types';\nimport Select from 'react-select';\nimport SelectSearch from 'react-select-search/dist/cjs';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport FieldLabel from 'components/base/fieldLabel/fieldLabel';\nimport Hint from 'components/base/hint/hint';\n\nconst DropdownSearch = ({\n className,\n disabled,\n error,\n hint,\n id,\n isSearchable,\n isSearchEnabled,\n isSelect,\n label,\n name,\n onChange,\n optional,\n optionList,\n pending,\n pendingError,\n placeholder,\n tooltip,\n value,\n warning\n}) => {\n const { ready, t } = useTranslation();\n\n const [valueObject, setValueObject] = React.useState(null);\n\n const selectClassName = (pending || optionList.length === 0) ? 'select-search pending' : 'select-search';\n\n const onChangeHandler = (selectedValue) => {\n const newEvent = {\n target: {\n name: name,\n type: 'select',\n value: selectedValue.value\n }\n };\n onChange(newEvent);\n };\n\n const onSelectSearchChangeHandler = (selectedValue) => {\n const newEvent = {\n target: {\n name: name,\n type: 'select',\n value: selectedValue\n }\n };\n onChange(newEvent);\n };\n\n const formatGroupLabel = (data) => {\n return (\n
    \n {data.label}\n {data.options.length}\n
    \n );\n };\n\n const getPlaceholder = () => {\n if (pending) {\n return t('label.fetchingData');\n }\n\n if (optionList.length === 0) {\n return t(pendingError);\n }\n\n return t(placeholder);\n };\n\n useEffect(() => {\n if (optionList.length > 0) {\n setValueObject(value);\n\n // let matchingOption;\n //\n // if (typeof value === 'object') {\n // setValueObject(value);\n // } else if (typeof value === 'string') {\n // matchingOption = optionList.find((item) => item.value === value);\n //\n // if (!matchingOption && optionList[1] && optionList[1].items) {\n // matchingOption = optionList[1].items.find((item) => item.value === value);\n // }\n //\n // if (!matchingOption && optionList[0] && optionList[0].items) {\n // matchingOption = optionList[0].items.find((item) => item.value === value);\n // }\n //\n // if (!matchingOption && optionList[1] && optionList[1].options) {\n // matchingOption = optionList[1].options.find((item) => item.value === value);\n // }\n //\n // if (!matchingOption && optionList[0] && optionList[0].options) {\n // matchingOption = optionList[0].options.find((item) => item.value === value);\n // }\n //\n // if (matchingOption) {\n // setValueObject(matchingOption);\n // }\n // }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, optionList]);\n\n return (\n <>\n {ready &&\n <>\n \n \n \n \n\n {isSelect &&\n
    \n \n
    \n }\n {!isSelect &&\n
    \n helpers.resetDropdownFocusState()}\n options={optionList}\n placeholder={getPlaceholder()}\n search = {isSearchEnabled !== undefined && isSearchEnabled !== null ? isSearchEnabled : true}\n value={valueObject}\n />\n
    \n }\n \n }\n \n );\n};\n\nDropdownSearch.propTypes = {\n className: PropTypes.string,\n disabled: PropTypes.bool,\n error: PropTypes.string,\n hint: PropTypes.string,\n id: PropTypes.string,\n isSearchable: PropTypes.bool,\n isSelect: PropTypes.bool,\n label: PropTypes.string,\n name: PropTypes.string,\n onChange: PropTypes.func,\n optionList: PropTypes.oneOfType([\n PropTypes.arrayOf(\n PropTypes.exact({\n type: PropTypes.string,\n name: PropTypes.string,\n items: PropTypes.arrayOf(\n PropTypes.exact({\n id: PropTypes.number,\n label: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.string\n })\n )\n })\n ),\n PropTypes.arrayOf(\n PropTypes.exact({\n type: PropTypes.string,\n label: PropTypes.string,\n options: PropTypes.arrayOf(\n PropTypes.exact({\n label: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.string\n })\n )\n })\n ),\n PropTypes.arrayOf(\n PropTypes.exact({\n label: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ])\n })\n ),\n PropTypes.arrayOf(\n PropTypes.exact({\n label: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.string,\n isSystemApplied: PropTypes.bool\n })\n )\n ]),\n optional: PropTypes.bool,\n pending: PropTypes.bool,\n pendingError: PropTypes.string,\n placeholder: PropTypes.string,\n tooltip: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.exact({\n label: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ])\n })\n ]),\n warning: PropTypes.string\n};\n\nexport default DropdownSearch;\n","import React from 'react';\nimport classes from 'components/table/filters/filtersBoUserActivity/filtersBoUserActivity.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport storeService from 'services/storeService';\nimport { initialSorting } from 'services/tableColumns';\nimport DateRange from 'components/base/dateRange/dateRange';\nimport DropdownSearch from 'components/base/dropdownSearch/dropdownSearch';\nimport InputDate from 'components/base/inputDate/inputDate';\n\nconst filtersBoUserHoldingActivity = ({\n comingFromHolding = false,\n dateError,\n eventType,\n eventTypeOptions,\n filterDate,\n filterEventType,\n filterFromDate,\n filterToDate,\n fromDateError,\n getDates,\n history,\n loadPending,\n setData,\n setDateError,\n setFilterDate,\n setFilterEventType,\n setFilterFromDate,\n setFilterSpeciesName,\n setFilterToDate,\n setFromDateError,\n setRenderTable,\n setTableParams,\n setToDateError,\n storeFilters,\n toDateError\n}) => {\n const isFromTo = (which, value, storedFilters) => {\n helpers.flags.isFrom(which) ? setFilterFromDate(value) : setFilterToDate(value);\n\n if ((value !== filterFromDate) || (value !== filterToDate)) {\n setRenderTable(false);\n }\n\n if (value?.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { fromDate, toDate, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { fromDate, toDate, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n if (helpers.flags.isFrom(which)) {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n fromDate: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n fromDate: value\n });\n }\n if (helpers.flags.isTo(which)) {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n toDate: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n toDate: value\n });\n }\n }\n };\n const isSingle = (value, storedFilters) => {\n\n setFilterDate(value);\n\n if (value !== filterDate) {\n setRenderTable(false);\n }\n\n if (value?.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { date, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { date, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n date: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n date: value\n });\n }\n };\n const handleChanges = {\n date: (which, value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setData([]);\n storeService.session.removeAll.searchResults();\n\n if (helpers.flags.isFrom(which) || helpers.flags.isTo(which)) {\n isFromTo(which, value, storedFilters);\n } else if (helpers.flags.isSingle(which)) {\n isSingle(value, storedFilters);\n }\n },\n\n eventType: (value, doNotClearData) => {\n if (value && value !== filterEventType) {\n // eslint-disable-next-line no-unused-vars\n const { date, species, ...storedFilters } = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setFilterDate('');\n if (comingFromHolding) {\n setFilterSpeciesName(null);\n }\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n eventType: value,\n sortBy: comingFromHolding ? initialSorting.bo.holdingActivity[value].accessor : initialSorting.bo.userActivity[value].accessor,\n sortDirection: comingFromHolding ? initialSorting.bo.holdingActivity[value].direction : initialSorting.bo.userActivity[value].direction,\n useComponent: comingFromHolding ? constants.bo.holdingActivity.eventTypes[value].useComponent : constants.bo.userActivity.eventTypes[value].useComponent\n });\n\n if (!doNotClearData) {\n setData([]);\n storeService.session.removeAll.searchResults();\n }\n\n setFilterEventType(value);\n\n setRenderTable(false);\n\n setTableParams((prevState) => ({\n ...prevState,\n request: {\n url: comingFromHolding ? constants.bo.holdingActivity.eventTypes[value].endpoint : constants.bo.userActivity.eventTypes[value].endpoint\n },\n filters: {\n ...prevState.filters,\n eventType: value,\n useComponent: comingFromHolding ? constants.bo.holdingActivity.eventTypes[value].useComponent : constants.bo.userActivity.eventTypes[value].useComponent\n },\n sort: {\n by: comingFromHolding ? initialSorting.bo.holdingActivity[value].accessor : initialSorting.bo.userActivity[value].accessor,\n direction: comingFromHolding ? initialSorting.bo.holdingActivity[value].direction : initialSorting.bo.userActivity[value].direction\n }\n }));\n\n comingFromHolding ? history.push(constants.bo.holdingActivity.eventTypes[value].url) : history.push(constants.bo.userActivity.eventTypes[value].url);\n }\n }\n };\n\n return (\n
    \n
    \n handleChanges.eventType(event.target.value)}\n optionList={eventTypeOptions}\n placeholder=\"prompt.pleaseSelect\"\n value={filterEventType}\n />\n
    \n\n {filterEventType &&\n <>\n {eventType?.showDate &&\n
    \n handleChanges.date(constants.flags.single, event.target.value)}\n setError={setDateError}\n value={filterDate}\n />\n
    \n }\n\n {eventType?.showDateRange &&\n
    \n handleChanges.date(constants.flags.from, date)}\n setFromDateError={setFromDateError}\n setToDate={(date) => handleChanges.date(constants.flags.to, date)}\n setToDateError={setToDateError}\n toDate={filterToDate}\n toDateError={toDateError}\n />\n
    \n }\n \n }\n
    \n );\n};\n\nexport default filtersBoUserHoldingActivity;\n","import React, { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/table/filters/filtersBoHoldingActivity/filtersBoHoldingActivity.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport Button from 'backOfficeComponents/base/button/button';\nimport CheckboxGroup from 'components/base/checkboxGroup/checkboxGroup';\nimport CPHEntry from 'backOfficeComponents/cphEntry/cphEntry';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport FiltersBoUserHoldingActivity from 'components/table/filters/filtersBoUserHoldingActivity';\nconst BoHoldingActivityFilters = ({\n eventType,\n hasData,\n loadPending,\n setData,\n setModal,\n setRenderTable,\n setTableParams,\n storeFilters,\n tableParams\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const defaultEventTypeOptions = Object.entries(constants.bo.holdingActivity.eventTypes).map(([itemKey, itemValue]) => ({\n label: t(itemValue.label),\n name: t(itemValue.label),\n value: itemKey\n }));\n\n const [filterCph, setFilterCph] = React.useState(tableParams?.filters?.cph);\n const [filterEventType, setFilterEventType] = React.useState(tableParams?.filters?.eventType);\n const [filterDate, setFilterDate] = React.useState(tableParams?.filters?.date ? tableParams.filters.date : '');\n const [filterFromDate, setFilterFromDate] = React.useState(tableParams?.filters?.fromDate ? tableParams.filters.fromDate : '');\n const [filterToDate, setFilterToDate] = React.useState(tableParams?.filters?.toDate ? tableParams.filters.toDate : '');\n const [filterSpeciesName, setFilterSpeciesName] = React.useState(tableParams?.filters?.speciesName);\n const [filterMovementType, setFilterMovementType] = React.useState(tableParams?.filters?.movementType);\n const [cphValid, setCphValid] = React.useState(false);\n const [searchDisabled, setSearchDisabled] = React.useState(true);\n const [dateError, setDateError] = React.useState('');\n const [fromDateError, setFromDateError] = React.useState('');\n const [toDateError, setToDateError] = React.useState('');\n const [eventTypeOptions, setEventTypeOptions] = React.useState(defaultEventTypeOptions);\n const [cphType, setCphType] = React.useState();\n\n const getDates = {\n dateMax: () => {\n const today = new Date();\n\n return helpers.date.formatYYYYMMDD(today);\n }\n };\n\n const handleChanges = {\n cph: (value) => {\n // eslint-disable-next-line no-unused-vars\n const { date, eventType, fromDate, speciesId, speciesName, toDate, ...storedFilters } = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setFilterCph(value);\n setFilterEventType(null);\n setFilterDate('');\n setFilterFromDate('');\n setFilterToDate('');\n setFilterSpeciesName(null);\n\n setData([]);\n storeService.session.removeAll.searchResults();\n\n if (value !== filterCph) {\n setRenderTable(false);\n }\n\n if (value?.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { cph, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { cph, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n cph: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n cph: value\n });\n\n history.push(Routing.boHoldingActivity);\n }\n },\n holdingEventType: (valHolding, doNotClearDataHolding) => {\n if (valHolding && valHolding !== filterEventType) {\n // eslint-disable-next-line no-unused-vars\n const { date, species, ...storedFilters } = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setFilterDate('');\n setFilterSpeciesName(null);\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n eventType: valHolding,\n sortBy: initialSorting.bo.holdingActivity[valHolding].accessor,\n sortDirection: initialSorting.bo.holdingActivity[valHolding].direction,\n useComponent: constants.bo.holdingActivity.eventTypes[valHolding].useComponent\n });\n\n if (!doNotClearDataHolding) {\n setData([]);\n storeService.session.removeAll.searchResults();\n }\n\n setFilterEventType(valHolding);\n\n setRenderTable(false);\n\n setTableParams((prevState) => ({\n ...prevState,\n request: {\n url: constants.bo.holdingActivity.eventTypes[valHolding].endpoint\n },\n filters: {\n ...prevState.filters,\n eventType: valHolding,\n useComponent: constants.bo.holdingActivity.eventTypes[valHolding].useComponent\n },\n sort: {\n by: initialSorting.bo.holdingActivity[valHolding].accessor,\n direction: initialSorting.bo.holdingActivity[valHolding].direction\n }\n }));\n\n history.push(constants.bo.holdingActivity.eventTypes[valHolding].url);\n }\n },\n movementType: (valueMovement) => {\n const storedFiltersMovement = storeService.session.get[`tableFilters${storeFilters}`]();\n\n if (valueMovement === filterMovementType) {\n setFilterMovementType('');\n\n delete storedFiltersMovement.movementType;\n\n storeService.session.set[`tableFilters${storeFilters}`](storedFiltersMovement);\n } else {\n setFilterMovementType(valueMovement);\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFiltersMovement,\n movementType: valueMovement\n });\n }\n\n setData([]);\n storeService.session.removeAll.searchResults();\n\n setRenderTable(false);\n\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n movementType: valueMovement\n }\n }));\n },\n\n speciesName: (valueSpecies) => {\n const storedFiltersSpecies = storeService.session.get[`tableFilters${storeFilters}`]();\n\n if (valueSpecies === filterSpeciesName) {\n setFilterSpeciesName('');\n\n delete storedFiltersSpecies.speciesId;\n delete storedFiltersSpecies.speciesName;\n\n storeService.session.set[`tableFilters${storeFilters}`](storedFiltersSpecies);\n } else {\n setFilterSpeciesName(valueSpecies);\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFiltersSpecies,\n speciesId: helpers.species.nameToId(valueSpecies),\n speciesName: helpers.species.formatName(valueSpecies)\n });\n }\n\n setData([]);\n storeService.session.removeAll.searchResults();\n\n setRenderTable(false);\n\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n speciesName: valueSpecies\n }\n }));\n }\n };\n\n const getColumnsByEventType = () => {\n if (filterEventType === 'annualInventory') {\n return tableColumns.bo.holdingActivity[filterEventType]({ speciesId: filterSpeciesName ? helpers.species.nameToId(filterSpeciesName) : 0 });\n }\n\n return tableColumns.bo.holdingActivity[filterEventType];\n };\n\n const runRequest = () => {\n storeService.session.set[`tableFilters${storeFilters}PageIndex`](0);\n storeService.session.removeAll.searchResults();\n setData([]);\n\n setTableParams((prevState) => ({\n ...prevState,\n columns: getColumnsByEventType(),\n filters: {\n cph: filterCph,\n eventType: filterEventType.toLowerCase(),\n onHoldingDate: filterDate,\n fromDate: filterFromDate,\n toDate: filterToDate,\n speciesId: filterSpeciesName ? helpers.species.nameToId(filterSpeciesName) : null,\n speciesName: helpers.species.formatName(filterSpeciesName),\n movementType: filterMovementType,\n useComponent: constants.bo.holdingActivity.eventTypes[filterEventType].useComponent\n },\n page: {\n ...prevState.page,\n index: 0\n },\n request: {\n ...prevState.request,\n params: {\n ...prevState.request.params,\n cph: filterCph,\n eventType: filterEventType.toLowerCase(),\n fromDate: filterFromDate,\n toDate: filterToDate,\n speciesId: filterSpeciesName ? helpers.species.nameToId(filterSpeciesName) : null,\n movementType: filterMovementType,\n queryKeeper: eventType.endpoint === '/holdingDetails' ? true : null,\n queryHoldingRegisters: eventType.endpoint === '/holdingDetails' ? true : null,\n queryHoldingIntegration: eventType.endpoint === '/holdingDetails' ? true : null,\n queryUserByCPH: eventType.endpoint === '/holdingDetails' ? true : null\n },\n processData: (data) => {\n switch (eventType.url) {\n case Routing.boHoldingActivityAnimalsOnHolding:\n case Routing.boHoldingActivityTaggingApplications:\n return helpers.animal.addDobAndAgeForDisplay(data);\n case Routing.boHoldingActivityAssociatedHoldings:\n return data.holdings;\n case Routing.boHoldingActivityHoldingDetails:\n return { ...data[0] };\n default:\n return data;\n }\n }\n },\n sort: {\n by: initialSorting.bo.holdingActivity[filterEventType].accessor,\n direction: initialSorting.bo.holdingActivity[filterEventType].direction\n }\n }));\n setRenderTable(true);\n };\n\n useEffect(() => {\n if (\n !eventType.url || loadPending || dateError !== '' || fromDateError !== '' || toDateError !== '' || hasData ||\n (eventType?.showDate && !filterDate) ||\n (eventType?.showDateRange && (!filterFromDate || !filterToDate)) ||\n (eventType?.showSpecies?.length > 0 && eventType?.speciesRequired && !filterSpeciesName)\n ) {\n setSearchDisabled(true);\n } else {\n setSearchDisabled(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n loadPending,\n hasData,\n eventType,\n filterDate,\n filterFromDate,\n filterToDate,\n filterSpeciesName,\n fromDateError,\n toDateError\n ]);\n\n useEffect(() => {\n if ((eventType.url === Routing.boHoldingActivityAssociatedHoldings || eventType.url === Routing.boHoldingActivityHoldingDetails) && hasData) {\n runRequest();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [eventType]);\n\n useEffect(() => {\n if (cphType === constants.cph.abattoir) {\n setEventTypeOptions(defaultEventTypeOptions.filter((item) => item.value !== 'animalsOnHolding'));\n } else {\n setEventTypeOptions(defaultEventTypeOptions);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cphType]);\n\n useEffect(() => {\n if (filterEventType) {\n setTableParams((prevState) => ({\n ...prevState,\n columns: getColumnsByEventType(),\n request: {\n ...prevState.request,\n url: constants.bo.holdingActivity.eventTypes[filterEventType].endpoint,\n params: {\n ...prevState.request.params,\n cph: filterCph,\n eventType: filterEventType.toLowerCase(),\n fromDate: filterFromDate,\n toDate: filterToDate,\n speciesId: filterSpeciesName ? helpers.species.nameToId(filterSpeciesName) : null,\n movementType: filterMovementType\n },\n processData: (data) => {\n switch (eventType.url) {\n case Routing.boHoldingActivityAnimalsOnHolding:\n case Routing.boHoldingActivityTaggingApplications:\n return helpers.animal.addDobAndAgeForDisplay(data);\n case Routing.boHoldingActivityAssociatedHoldings:\n return data.holdings;\n default:\n return data;\n }\n }\n }\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ready &&\n
    \n
    \n
    \n \n
    \n\n {cphValid &&\n <>\n \n {filterEventType && eventType?.showSpecies?.length > 0 &&\n
    \n {!eventType.speciesRequired &&\n ({\n id: item,\n label: item,\n value: filterSpeciesName === item\n }))}\n onChange={(event) => handleChanges.speciesName(event.target.id)}\n optional={!eventType.speciesRequired}\n />\n }\n {eventType.speciesRequired &&\n item.toLowerCase()) : null}\n id=\"species\"\n ids={eventType.showSpecies.map((item) => item.toLowerCase())}\n inline={true}\n name=\"speciesName\"\n onChange={(event) => handleChanges.speciesName(event.target.value)}\n optional={!eventType.speciesRequired}\n reduceSpace={true}\n suppressLabel={false}\n value={filterSpeciesName?.toLowerCase()}\n />\n }\n\n {eventType.url === Routing.boHoldingActivityMovements &&\n handleChanges.movementType(event.target.id)}\n optional={true}\n />\n }\n
    \n }\n \n }\n
    \n\n {cphValid && filterEventType &&\n <>\n
    \n \n
    \n\n {(eventType.url === Routing.boHoldingActivityAssociatedHoldings || eventType.url === Routing.boHoldingActivityHoldingDetails) && hasData &&\n
    \n {\n handleChanges.holdingEventType(eventType.url === Routing.boHoldingActivityAssociatedHoldings\n ? 'holdingDetails'\n : 'associatedHoldings',\n true\n );\n }}\n />\n
    \n }\n \n }\n
    \n }\n \n );\n};\n\nBoHoldingActivityFilters.propTypes = {\n eventType: PropTypes.object.isRequired,\n hasData: PropTypes.bool.isRequired,\n loadPending: PropTypes.bool.isRequired,\n setData: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setRenderTable: PropTypes.func.isRequired,\n setTableParams: PropTypes.func.isRequired,\n storeFilters: PropTypes.string.isRequired,\n tableParams: PropTypes.object.isRequired\n};\n\nexport default BoHoldingActivityFilters;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/base/tooltip/tooltip.module.scss';\n\nconst Tooltip = ({\n id,\n tooltip\n}) => {\n const { ready, t } = useTranslation();\n\n const [showTooltip, setTooltip] = React.useState(false);\n\n React.useEffect(() => {\n document.addEventListener('mousedown', () => {\n setTooltip(false);\n });\n });\n\n const toggleTooltip = () => {\n setTooltip(!showTooltip);\n };\n\n return (\n <>\n {ready && tooltip &&\n
    \n \n
    {t(tooltip)}
    \n
    \n }\n \n );\n};\n\nTooltip.propTypes = {\n id: PropTypes.string.isRequired,\n tooltip: PropTypes.string.isRequired\n};\n\nexport default Tooltip;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport Tooltip from 'backOfficeComponents/base/tooltip/tooltip';\nimport classes from 'backOfficeComponents/base/fieldLabel/fieldLabel.module.scss';\n\nconst FieldLabel = ({\n extraContent,\n id,\n label,\n label2,\n name,\n optional,\n tooltip\n}) => {\n const { ready, t } = useTranslation();\n\n const outputLabel = t(label);\n const outputLabel2 = t(label2);\n\n const componentClassNames = [\n classes.label\n ].join(' ').trim();\n\n return (\n <>\n {ready && (outputLabel || outputLabel2) &&\n \n }\n \n );\n};\n\nFieldLabel.propTypes = {\n extraContent: PropTypes.string,\n id: PropTypes.string.isRequired,\n label: PropTypes.string,\n label2: PropTypes.string,\n name: PropTypes.string.isRequired,\n optional: PropTypes.bool,\n tooltip: PropTypes.string\n};\n\nexport default FieldLabel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/base/hint/hint.module.scss';\n\nconst Hint = ({\n hint,\n id\n}) => {\n const { ready, t } = useTranslation();\n\n const outputHint = t(hint);\n const classname = classes.hint + ((hint === outputHint) ? ' ' + classes.notFound : '');\n\n return (\n <>\n {ready && outputHint &&\n \n {outputHint}\n \n }\n \n );\n};\n\nHint.propTypes = {\n hint: PropTypes.string,\n id: PropTypes.string.isRequired\n};\n\nexport default Hint;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport constants from 'services/constants';\nimport classes from 'backOfficeComponents/base/fieldEntry/fieldEntry.module.scss';\nimport FieldLabel from 'backOfficeComponents/base/fieldLabel/fieldLabel';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport Hint from 'backOfficeComponents/base/hint/hint';\nimport helpers from 'services/helpers';\n\nconst FieldEntry = ({\n alphaNumeric,\n blockStyling,\n disabled,\n errorLabel,\n fieldDescription,\n hint,\n id,\n inputType,\n isSplCharPasteAllowed,\n labelPosition,\n labelText,\n max,\n maxLength,\n min,\n name,\n onBlur,\n onChange,\n onMouseLeave,\n optional,\n placeholder,\n reference,\n rows,\n tooltip,\n value,\n warningLabel,\n width\n}) => {\n const { ready, t } = useTranslation();\n const [lastKey, setLastKey] = useState();\n\n const lPosition = (labelText && labelText.length) ? ((labelPosition) ? labelPosition : constants.labelPosition.above) : constants.labelPosition.none;\n const inputBaseClassName = classes.textbox;\n const inputErrorClassName = classes.error;\n const inputClassName = width ? inputBaseClassName + ' ' + classes[width] + ' ' + inputErrorClassName : inputBaseClassName + ' ' + inputErrorClassName;\n\n const onChangeHandler = (event) => {\n let ignoreSpecialChar = '';\n if (isSplCharPasteAllowed) {\n const specialCharPattern = /[^\\w\\d]/gi;\n const pastedVal = event.target.value;\n ignoreSpecialChar = pastedVal.replace(specialCharPattern, '');\n }\n if (onChange) {\n const newEvent = {\n target: {\n name: name,\n type: 'select',\n value: isSplCharPasteAllowed ? ignoreSpecialChar : event.target.value\n }\n };\n onChange(newEvent);\n }\n };\n\n const onKeyDownHandlerInput = (event) => {\n if (alphaNumeric) {\n if (event.key.match(/_/) || !event.key.match(/[\\w\\d]/)) {\n event.preventDefault();\n }\n } else if (event.key >= 0 && lastKey !== 'Tab' && event.target.value.length === event.target.maxLength) {\n event.preventDefault();\n }\n\n setLastKey(event.key);\n };\n\n const onKeyDownHandlerTextarea = (event) => {\n if (event.keyCode === 13 && event.target.value.split('\\n').length >= parseInt(maxLength)) {\n event.preventDefault();\n }\n };\n\n const onBlurHandler = (event) => {\n if (onBlur) {\n const newEvent = {\n target: {\n name: name,\n type: 'select',\n value: event.target.value\n }\n };\n onBlur(newEvent);\n }\n };\n\n const onMouseLeaveHandler = (event) => {\n if (onMouseLeave) {\n const newEvent = {\n target: {\n name: name,\n type: 'select',\n value: event.target.value\n }\n };\n onMouseLeave(newEvent);\n }\n };\n\n const onPasteHandlerInput = (event) => {\n const key = event.clipboardData.getData('text');\n if (alphaNumeric && (key.match(/_/) || !key.match(/[\\w\\d]/))) {\n event.preventDefault();\n }\n };\n\n const fieldLabel = () => {\n return (\n );\n };\n\n return (\n <>\n {ready &&\n
    \n {helpers.labelPosition.isAbove(lPosition) && fieldLabel()}\n {fieldDescription &&\n {t(fieldDescription)}\n }\n \n \n \n
    \n {helpers.labelPosition.isInline(lPosition) && fieldLabel()}\n {(!rows || rows === 1) &&\n inputType === constants.inputType.number ? document.activeElement.blur() : false}\n placeholder={placeholder}\n ref={reference}\n type={inputType && inputType !== undefined ? inputType : constants.inputType.text}\n value={value && value !== undefined ? value : ''}\n />\n }\n {rows && rows > 1 &&\n \n }\n
    \n
    \n }\n \n );\n};\n\nFieldEntry.propTypes = {\n blockStyling: PropTypes.bool,\n disabled: PropTypes.bool,\n errorLabel: PropTypes.string,\n fieldDescription: PropTypes.string,\n hint: PropTypes.string,\n id: PropTypes.string.isRequired,\n inputType: PropTypes.oneOf([\n constants.inputType.encrypted,\n constants.inputType.number,\n constants.inputType.text\n ]),\n labelPosition: PropTypes.oneOf([\n constants.labelPosition.above,\n constants.labelPosition.inline,\n constants.labelPosition.none\n ]),\n labelText: PropTypes.string,\n max: PropTypes.number,\n maxLength: PropTypes.string,\n min: PropTypes.number,\n name: PropTypes.string.isRequired,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onMouseLeave: PropTypes.func,\n optional: PropTypes.bool,\n placeholder: PropTypes.string,\n reference: PropTypes.object,\n rows: PropTypes.number,\n tooltip: PropTypes.string,\n value: PropTypes.any,\n warningLabel: PropTypes.string,\n width: PropTypes.string\n};\n\nexport default FieldEntry;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/base/legend/legend.module.scss';\nimport helpers from 'services/helpers';\nimport Tooltip from 'backOfficeComponents/base/tooltip/tooltip';\n\nconst Legend = ({\n disabled,\n id,\n legend,\n legendStyle,\n optional,\n tooltip\n}) => {\n const { ready, t } = useTranslation();\n\n const getLegend = () => {\n if (helpers.address.isUnknown(legend)) {\n return legend.charAt(0).toUpperCase() + legend.slice(1);\n }\n\n return optional ? t(legend) + ' ' + t('label.optional') : t(legend);\n };\n\n const outputLegend = getLegend();\n const theTooltip = (tooltip) ? tooltip : '';\n\n const classNames = [classes.legend + ' ' + classes[legendStyle]];\n if (disabled) {\n classNames.push(classes.disabled);\n }\n\n return (\n <>\n {ready && outputLegend &&\n \n {outputLegend}\n {theTooltip && }\n \n }\n \n );\n};\n\nLegend.propTypes = {\n disabled: PropTypes.bool,\n id: PropTypes.string.isRequired,\n legend: PropTypes.string.isRequired,\n legendStyle: PropTypes.string,\n optional: PropTypes.bool,\n tooltip: PropTypes.string\n};\n\nexport default Legend;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport classes from 'components/table/filters/filtersBoSearchMovements/filtersBoSearchMovements.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport { holdingHelper } from 'services/holdingHelper';\nimport { tableColumns } from 'services/tableColumns';\nimport Button from 'backOfficeComponents/base/button/button';\nimport CPHField from 'components/base/cphField/cphField';\nimport DateRange from 'components/base/dateRange/dateRange';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport FieldEntry from 'backOfficeComponents/base/fieldEntry/fieldEntry';\nimport Legend from 'backOfficeComponents/base/legend/legend';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nconst sprintf = require('util').format;\n\nconst BoMovementSearchByDateAndCphFilters = ({\n hasData,\n loadPending,\n setData,\n setRenderTable,\n setTableParams,\n storeFilters,\n tableParams\n}) => {\n const { pathname } = useLocation();\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const now = helpers.date.now();\n const today = helpers.date.formatYYYYMMDD(now);\n\n const sessionActiveTabId = storeService.session.get.activeTabId();\n\n const [filterSpeciesName, setFilterSpeciesName] = React.useState(tableParams?.filters.speciesName ? tableParams.filters.speciesName : constants.species.animalTypes.SHEEP);\n const [filterMovementType, setFilterMovementType] = React.useState(tableParams?.filters?.movementType ? tableParams.filters.movementType : constants.movementTypeSearch.standard);\n const [filterFromDate, setFilterFromDate] = React.useState(tableParams?.filters?.fromDate ? tableParams.filters.fromDate : '');\n const [filterToDate, setFilterToDate] = React.useState(tableParams?.filters?.toDate ? tableParams.filters.toDate : today);\n const [filterFromCph, setFilterFromCph] = React.useState(tableParams?.filters?.fromCph);\n const [filterToCph, setFilterToCph] = React.useState(tableParams?.filters?.toCph);\n const [filterMovementRef, setFilterMovementRef] = React.useState(tableParams?.filters?.movementRef);\n const [filterPaperId, setFilterPaperId] = React.useState(tableParams?.filters?.paperId);\n const [searchDisabled, setSearchDisabled] = React.useState(true);\n const [fromDateError, setFromDateError] = React.useState('');\n const [toDateError, setToDateError] = React.useState('');\n const [crossBorderError, setCrossBorderError] = React.useState('');\n const [showRecordPaperMovementButton, setShowRecordPaperMovementButton] = React.useState(hasData || false);\n\n const get = {\n columnsByTab: () => {\n switch (sessionActiveTabId) {\n case constants.tabs.movementRange:\n default:\n return tableColumns.bo.searchMovements.byDateAndCph;\n\n case constants.tabs.movementRef:\n return tableColumns.bo.searchMovements.byMovementRef;\n\n case constants.tabs.paperId:\n return [];\n }\n },\n\n paramsByTab: () => {\n switch (sessionActiveTabId) {\n case constants.tabs.movementRange:\n default:\n return {\n crossBorderReview: helpers.option.movement.isCrossBorder(filterMovementType),\n departureHolding: filterFromCph,\n destinationHolding: filterToCph,\n endTransferDate: filterToDate,\n species: filterSpeciesName.charAt(0).toUpperCase() + filterSpeciesName.slice(1),\n speciesId: helpers.species.nameToId(filterSpeciesName),\n startTransferDate: filterFromDate\n };\n\n case constants.tabs.movementRef:\n return {\n bo: true,\n documentRef: filterMovementRef,\n getApproved: true\n };\n\n case constants.tabs.paperId:\n return {\n id: filterPaperId\n };\n }\n }\n };\n\n const handleChanges = {\n cph: (which, value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setData([]);\n storeService.session.removeAll.searchResults();\n\n if (helpers.flags.isFrom(which)) {\n setFilterFromCph(value);\n\n if (value !== filterFromCph) {\n setRenderTable(false);\n }\n\n if (value?.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { fromCph, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { fromCph, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n fromCph: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n fromCph: value\n });\n }\n } else if (helpers.flags.isTo(which)) {\n setFilterToCph(value);\n\n if (value !== filterToCph) {\n setRenderTable(false);\n }\n\n if (value?.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { toCph, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { toCph, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n toCph: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n toCph: value\n });\n }\n }\n },\n\n date: (which, value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setData([]);\n storeService.session.removeAll.searchResults();\n\n if (helpers.flags.isFrom(which)) {\n setFilterFromDate(value);\n\n if (value !== filterFromDate) {\n setRenderTable(false);\n }\n\n if (value?.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { fromDate, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { fromDate, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n fromDate: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n fromDate: value\n });\n }\n } else if (helpers.flags.isTo(which)) {\n setFilterToDate(value);\n\n if (value !== filterToDate) {\n setRenderTable(false);\n }\n\n if (value?.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { toDate, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { toDate, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n toDate: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n toDate: value\n });\n }\n }\n },\n\n movementRef: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setData([]);\n storeService.session.removeAll.searchResults();\n\n setFilterMovementRef(value);\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n movementRef: value\n });\n\n setRenderTable(false);\n\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n movementRef: value\n }\n }));\n },\n\n movementType: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n if (value === filterMovementType) {\n setFilterMovementType('');\n\n delete storedFilters.movementType;\n\n storeService.session.set[`tableFilters${storeFilters}`](storedFilters);\n } else {\n setFilterMovementType(value);\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n movementType: value\n });\n }\n\n setData([]);\n storeService.session.removeAll.searchResults();\n\n setRenderTable(false);\n\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n movementType: value\n }\n }));\n },\n\n paperId: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setData([]);\n storeService.session.removeAll.searchResults();\n\n setFilterPaperId(value);\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n paperId: value\n });\n\n setRenderTable(false);\n\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n paperId: value\n }\n }));\n },\n\n speciesName: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n if (value === filterSpeciesName) {\n setFilterSpeciesName('');\n\n delete storedFilters.speciesId;\n delete storedFilters.speciesName;\n\n storeService.session.set[`tableFilters${storeFilters}`](storedFilters);\n } else {\n setFilterSpeciesName(value);\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n speciesId: helpers.species.nameToId(value),\n speciesName: helpers.species.formatName(value)\n });\n }\n\n setData([]);\n storeService.session.removeAll.searchResults();\n\n setRenderTable(false);\n\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n speciesName: value\n }\n }));\n }\n };\n\n const render = {\n buttons: () => {\n return (\n
    \n
    \n \n
    \n
    \n {pathname === Routing.boSearchMovementsByDateAndCph && showRecordPaperMovementButton &&\n {\n history.push(\n Routing.boMovements,\n {\n data: {\n species: filterSpeciesName,\n departureCPH: filterFromCph,\n destinationCPH: filterToCph\n }\n }\n );\n }}\n />\n }\n \n
    \n
    \n );\n },\n\n filters: () => {\n switch (pathname) {\n case Routing.boSearchMovementsByDateAndCph:\n default:\n return (\n <>\n handleChanges.speciesName(event.target.value)}\n reduceSpace={true}\n suppressLabel={false}\n value={filterSpeciesName.toLowerCase()}\n />\n handleChanges.movementType(event.target.value)}\n reduceSpace={true}\n suppressLabel={false}\n value={filterMovementType}\n />\n\n \n handleChanges.date(constants.flags.from, date)}\n setFromDateError={setFromDateError}\n setToDate={(date) => handleChanges.date(constants.flags.to, date)}\n setToDateError={setToDateError}\n toDate={filterToDate}\n toDateError={toDateError}\n yearLength={2}\n />\n\n \n {crossBorderError &&\n \n }\n
    \n
    \n handleChanges.cph(constants.flags.from, cph)}\n width=\"quarter\"\n />\n
    \n
    \n handleChanges.cph(constants.flags.to, cph)}\n width=\"quarter\"\n />\n
    \n
    \n \n );\n\n case Routing.boSearchMovementsByMovementReference:\n return (\n
    \n handleChanges.movementRef(event.target.value)}\n value={filterMovementRef}\n width={config.WIDTH_MOVEMENT_ID}\n />\n
    \n );\n\n case Routing.boSearchMovementsByPaperId:\n return (\n
    \n handleChanges.paperId(event.target.value)}\n value={filterPaperId}\n width={config.WIDTH_MOVEMENT_ID}\n />\n
    \n );\n }\n }\n };\n\n const resetForm = () => {\n setFilterSpeciesName(config.SPECIES_DEFAULT);\n setFilterMovementType(constants.movementTypeSearch.standard);\n setFilterFromDate('');\n setFilterToDate(today);\n setFilterFromCph('');\n setFilterToCph('');\n setFilterMovementRef('');\n setFilterPaperId('');\n setFromDateError('');\n setToDateError('');\n setRenderTable(false);\n\n storeService.session.remove.searchResultsMovements();\n setData([]);\n\n setShowRecordPaperMovementButton(false);\n };\n\n const runRequest = () => {\n storeService.session.set[`tableFilters${storeFilters}PageIndex`](0);\n storeService.session.removeAll.searchResults();\n setData([]);\n\n setTableParams((prevState) => ({\n ...prevState,\n newRequest: true,\n columns: get.columnsByTab(),\n filters: {\n ...get.paramsByTab()\n },\n page: {\n ...prevState.page,\n index: 0\n },\n request: {\n ...prevState.request,\n url: constants.bo.movementSearch.tabs[sessionActiveTabId].endpoint(filterMovementType),\n params: {\n ...prevState.request.params,\n ...get.paramsByTab()\n },\n processData: (data) => data.map((row) => ({\n ...row,\n species: row.speciesId ? helpers.species.idToName(row.speciesId) : row.species,\n movementRef: row.movementReferenceUndone ? row.movementReferenceUndone : row.movementRef,\n movementStatus: helpers.status.getType(t, row)\n })),\n redirectTo: helpers.tab.isPaperId(sessionActiveTabId)\n ? (data) => {\n if ([\n constants.paperDocumentStatus.COMPLETE,\n constants.paperDocumentStatus.HAS_PROCESSING_ERRORS\n ].includes(data[0].status)) {\n return {\n warning: sprintf(t('label.paperIdIsMovementRecord'), data[0].movementDocumentRef)\n };\n }\n\n return {\n pathname: Routing.boMovements + data[0].id,\n state: {\n data: {\n data: data[0]\n }\n }\n };\n }\n : null\n }\n }));\n setRenderTable(true);\n setShowRecordPaperMovementButton(true);\n };\n\n useEffect(() => {\n if (filterFromCph?.length === config.LENGTH_HOLDING_CPH || filterToCph?.length === config.LENGTH_HOLDING_CPH) {\n let error = '';\n const fromCphIsEnglish = holdingHelper.cph.isEnglish(filterFromCph) || holdingHelper.cph.isTest(filterFromCph);\n const toCphIsEnglish = holdingHelper.cph.isEnglish(filterToCph) || holdingHelper.cph.isTest(filterToCph);\n\n if (filterFromCph?.length === config.LENGTH_HOLDING_CPH && !fromCphIsEnglish && filterToCph?.length === config.LENGTH_HOLDING_CPH && !toCphIsEnglish) {\n error = 'error.crossBorder2CPHs';\n } else if ((filterFromCph && !fromCphIsEnglish && !filterToCph) || (filterToCph && !toCphIsEnglish && !filterFromCph)) {\n error = 'error.crossBorder1CPH';\n }\n setCrossBorderError(error);\n } else {\n setCrossBorderError('');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterToCph, filterFromCph, setCrossBorderError]);\n\n useEffect(() => {\n if (loadPending ||\n (sessionActiveTabId === constants.tabs.movementRange && (!filterFromDate || !filterToDate || fromDateError || toDateError || crossBorderError || (!filterFromCph && !filterToCph) || (filterFromCph?.length > 0 && filterFromCph?.length < config.LENGTH_HOLDING_CPH) || (filterToCph?.length > 0 && filterToCph?.length < config.LENGTH_HOLDING_CPH))) ||\n (sessionActiveTabId === constants.tabs.movementRef && !filterMovementRef) ||\n (sessionActiveTabId === constants.tabs.paperId && !filterPaperId)\n ) {\n setSearchDisabled(true);\n } else {\n setSearchDisabled(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n loadPending,\n // hasData,\n filterSpeciesName,\n filterMovementType,\n filterFromDate,\n filterToDate,\n filterFromCph,\n filterToCph,\n filterMovementRef,\n filterPaperId,\n fromDateError,\n toDateError,\n crossBorderError\n ]);\n\n useEffect(() => {\n setSearchDisabled(true);\n\n setTableParams((prevState) => ({\n ...prevState,\n columns: get.columnsByTab(),\n request: {\n ...prevState.request,\n url: constants.bo.movementSearch.tabs[sessionActiveTabId]?.endpoint(filterMovementType),\n params: {\n ...prevState.request.params,\n ...get.paramsByTab()\n },\n processData: (data) => data.map((row) => ({\n ...row,\n species: row.speciesId ? helpers.species.idToName(row.speciesId) : row.species,\n movementRef: row.movementReferenceUndone ? row.movementReferenceUndone : row.movementRef,\n movementStatus: helpers.status.getType(t, row)\n })),\n redirectTo: helpers.tab.isPaperId(sessionActiveTabId)\n ? (data) => {\n if ([\n constants.paperDocumentStatus.COMPLETE,\n constants.paperDocumentStatus.HAS_PROCESSING_ERRORS\n ].includes(data[0].status)) {\n return {\n warning: sprintf(t('label.paperIdIsMovementRecord'), data[0].movementDocumentRef)\n };\n }\n\n return {\n pathname: Routing.boMovements + data[0].id,\n state: {\n data: {\n data: data[0]\n }\n }\n };\n }\n : null\n }\n }));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ready &&\n <>\n {render.filters()}\n {render.buttons()}\n \n }\n \n );\n};\n\nBoMovementSearchByDateAndCphFilters.propTypes = {\n hasData: PropTypes.bool.isRequired,\n loadPending: PropTypes.bool.isRequired,\n setData: PropTypes.func.isRequired,\n setRenderTable: PropTypes.func.isRequired,\n setTableParams: PropTypes.func.isRequired,\n storeFilters: PropTypes.string.isRequired,\n tableParams: PropTypes.object.isRequired\n};\n\nexport default BoMovementSearchByDateAndCphFilters;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/table/filters/filtersBoSearchRequestId/filtersBoSearchRequestId.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport Button from 'backOfficeComponents/base/button/button';\nimport FieldEntry from 'backOfficeComponents/base/fieldEntry/fieldEntry';\n\nconst BoMovementSearchByDateAndCphFilters = ({\n loadPending,\n setData,\n setRenderTable,\n setTableParams,\n storeFilters,\n tableParams\n}) => {\n const { ready } = useTranslation();\n\n const [filterRequestId, setFilterRequestId] = React.useState(tableParams?.filters?.requestId);\n const [searchDisabled, setSearchDisabled] = React.useState(true);\n const [resetTable, setResetTable] = React.useState(tableParams?.filters?.newRequest ?? false);\n\n const handleChanges = {\n requestId: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setData([]);\n storeService.session.removeAll.searchResults();\n\n setFilterRequestId(value);\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n requestId: value\n });\n\n setRenderTable(false);\n\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n requestId: value\n }\n }));\n }\n };\n\n const runRequest = () => {\n storeService.session.set[`tableFilters${storeFilters}PageIndex`](0);\n storeService.session.removeAll.searchResults();\n setData([]);\n\n setTableParams((prevState) => ({\n ...prevState,\n newRequest: true,\n columns: [],\n filters: {\n requestId: filterRequestId\n },\n page: {\n ...prevState.page,\n index: 0\n },\n request: {\n ...prevState.request,\n url: '/searchRequestId',\n params: {\n ...prevState.request.params,\n requestId: filterRequestId\n },\n redirectTo: (data) => ({\n pathname: Routing.boRequestIdDetails + filterRequestId,\n state: {\n data: {\n requestId: filterRequestId,\n ...data\n }\n }\n })\n }\n }));\n setRenderTable(true);\n };\n\n useEffect(() => {\n if (loadPending || !filterRequestId) {\n setSearchDisabled(true);\n } else {\n setSearchDisabled(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n loadPending,\n filterRequestId\n ]);\n\n useEffect(() => {\n setSearchDisabled(true);\n\n setTableParams((prevState) => ({\n ...prevState,\n columns: [],\n request: {\n ...prevState.request,\n url: '/searchRequestId',\n params: {\n ...prevState.request.params,\n requestId: filterRequestId\n },\n redirectTo: (data) => ({\n pathname: Routing.boRequestIdDetails + filterRequestId,\n state: {\n data: {\n requestId: filterRequestId,\n ...data\n }\n }\n })\n }\n }));\n\n if (resetTable) {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n newRequest: false\n });\n setResetTable(false);\n runRequest();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ready &&\n <>\n
    \n handleChanges.requestId(event.target.value)}\n value={filterRequestId}\n width={config.WIDTH_MOVEMENT_ID}\n />\n
    \n
    \n
    \n \n
    \n
    \n \n }\n \n );\n};\n\nBoMovementSearchByDateAndCphFilters.propTypes = {\n loadPending: PropTypes.bool.isRequired,\n setData: PropTypes.func.isRequired,\n setRenderTable: PropTypes.func.isRequired,\n setTableParams: PropTypes.func.isRequired,\n storeFilters: PropTypes.string.isRequired,\n tableParams: PropTypes.object.isRequired\n};\n\nexport default BoMovementSearchByDateAndCphFilters;\n","import React, { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport axios from 'axios';\nimport classes from 'components/table/filters/filtersBoUserActivity/filtersBoUserActivity.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport { holdingHelper } from 'services/holdingHelper';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport Button from 'backOfficeComponents/base/button/button';\nimport CPHEntry from 'backOfficeComponents/cphEntry/cphEntry';\nimport FiltersBoUserHoldingActivity from 'components/table/filters/filtersBoUserHoldingActivity';\nconst BoUserActivityFilters = ({\n eventType,\n hasData,\n loadPending,\n setData,\n setModal,\n setRenderTable,\n setTableParams,\n storeFilters,\n tableParams\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const [filterCph, setFilterCph] = React.useState(tableParams?.filters?.cph);\n const [filterEventType, setFilterEventType] = React.useState(tableParams?.filters?.eventType);\n const [filterDate, setFilterDate] = React.useState(tableParams?.filters?.date ? tableParams.filters.date : '');\n const [filterFromDate, setFilterFromDate] = React.useState(tableParams?.filters?.fromDate ? tableParams.filters.fromDate : '');\n const [filterToDate, setFilterToDate] = React.useState(tableParams?.filters?.toDate ? tableParams.filters.toDate : '');\n const [filterMovementType, setFilterMovementType] = React.useState(tableParams?.filters?.movementType);\n const [filterUserName, setFilterUserName] = React.useState(tableParams?.filters?.userName);\n const [cphValid, setCphValid] = React.useState(false);\n const [cphError, setCphError] = React.useState({});\n const [dateError, setDateError] = React.useState('');\n const [fromDateError, setFromDateError] = React.useState('');\n const [toDateError, setToDateError] = React.useState('');\n const [searchDisabled, setSearchDisabled] = React.useState(true);\n\n const eventTypeOptions = Object.entries(constants.bo.userActivity.eventTypes).map(([itemKey, itemValue]) => ({\n label: t(itemValue.label),\n name: t(itemValue.label),\n value: itemKey\n }));\n\n const taggingEventProperties = (row) => {\n switch (filterEventType) {\n case constants.bo.userActivity.eventTypes.births.name:\n return {\n dateField: row.content.dateOfApplication,\n quantity: row.content.applicationItems?.length\n };\n\n case constants.bo.userActivity.eventTypes.tagApplications.name:\n return {\n dateField: row.content.dateOfApplication,\n quantity: row.content.devices?.length + row.content.batches.reduce((total, batch) => total + batch.animalTotal, 0)\n };\n\n case constants.bo.userActivity.eventTypes.tagReplacements.name:\n return {\n dateField: row.content.replacementDate,\n quantity: row.content.replaceItems?.length\n };\n\n default:\n return {};\n }\n };\n\n const getDates = {\n dateMax: () => {\n const today = new Date();\n\n return helpers.date.formatYYYYMMDD(today);\n }\n };\n\n const handleChanges = {\n cph: (value) => {\n // eslint-disable-next-line no-unused-vars\n const { date, eventType, fromDate, toDate, ...storedFilters } = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setFilterCph(value);\n setFilterEventType(null);\n setFilterDate('');\n setFilterFromDate('');\n setFilterToDate('');\n\n setData([]);\n storeService.session.removeAll.searchResults();\n\n if (value !== filterCph) {\n setRenderTable(false);\n }\n\n if (value?.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { cph, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n setCphError({});\n\n // eslint-disable-next-line no-unused-vars\n const { cph, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n cph: value\n }\n }));\n\n if (value.length === config.LENGTH_HOLDING_CPH && !holdingHelper.cph.isEnglish(value) && !holdingHelper.cph.isTest(value)) {\n setCphError({\n type: constants.errorAndWarning.error,\n inline: true,\n value: 'error.crossBorderCPH'\n });\n } else {\n setCphError({});\n }\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n cph: value\n });\n\n history.push(Routing.boUserActivity);\n }\n },\n\n movementType: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n if (value === filterMovementType) {\n setFilterMovementType('');\n\n delete storedFilters.movementType;\n\n storeService.session.set[`tableFilters${storeFilters}`](storedFilters);\n } else {\n setFilterMovementType(value);\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n movementType: value\n });\n }\n\n setData([]);\n storeService.session.removeAll.searchResults();\n\n setRenderTable(false);\n\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n movementType: value\n }\n }));\n }\n };\n\n const getAnimalCount = (row) => {\n if (filterEventType === constants.bo.userActivity.eventTypes.movementReviews.name) {\n const numberOfAnimalsInBatches = row.content.reviewMovement.acceptedBatches?.length > 0 ? row.content.reviewMovement.acceptedBatches.reduce((total, row) => total + parseInt(row.animalTotal), 0) : 0;\n const numberOfIndividualAnimals = row.content.reviewMovement.acceptedDevices?.length;\n\n return numberOfAnimalsInBatches + numberOfIndividualAnimals;\n } else if (filterEventType === constants.bo.userActivity.eventTypes.deaths.name) {\n const numberOfBatchAnimalTotal = row.content.batchDetails.reduce((total, item) => {\n return total + item.animalTotal;\n }, 0);\n\n return numberOfBatchAnimalTotal + row.content.killedDevices?.length;\n } else if (filterEventType === constants.bo.userActivity.eventTypes.animalsAdded.name) {\n return row.content.devicesWithDetail?.length;\n }\n\n return null;\n };\n\n const runRequest = () => {\n if (!filterFromDate) {\n setFilterFromDate('');\n }\n if (!filterToDate) {\n setFilterToDate('');\n }\n\n storeService.session.set[`tableFilters${storeFilters}PageIndex`](0);\n storeService.session.removeAll.searchResults();\n setData([]);\n\n setTableParams((prevState) => ({\n ...prevState,\n columns: tableColumns.bo.userActivity[filterEventType],\n filters: {\n userName: filterUserName,\n eventType: filterEventType,\n fromDate: filterFromDate,\n toDate: filterToDate,\n movementType: filterMovementType,\n useComponent: constants.bo.userActivity.eventTypes[filterEventType].useComponent\n },\n page: {\n ...prevState.page,\n index: 0\n },\n request: {\n ...prevState.request,\n params: {\n ...prevState.request.params,\n cph: filterCph,\n eventType: filterEventType,\n fromDate: filterFromDate,\n toDate: filterToDate,\n movementType: filterMovementType\n },\n processData: (data) => data.map((row) => ({\n ...row,\n status: row.isFullUndone ? constants.status.cancelled : row.requestStatus,\n taggingDate: taggingEventProperties(row).dateField,\n taggingQuantity: taggingEventProperties(row).quantity,\n notificationQuantity: getAnimalCount(row),\n deathQuantity: getAnimalCount(row),\n animalsAddedQuantity: getAnimalCount(row),\n annualInventory: {\n ...row.content?.annualInventorySpecies?.[0],\n total: row.content?.annualInventorySpecies?.[0].annualInventoryStocks?.[0].quantity\n }\n }))\n },\n sort: {\n by: initialSorting.bo.userActivity[filterEventType].accessor,\n direction: initialSorting.bo.userActivity[filterEventType].direction\n }\n }));\n setRenderTable(true);\n };\n\n useEffect(() => {\n if (\n !eventType.url || loadPending || dateError !== '' || fromDateError !== '' || toDateError !== '' || hasData ||\n (eventType?.showDate && !filterDate) ||\n (eventType?.showDateRange && (!filterFromDate || !filterToDate))\n ) {\n setSearchDisabled(true);\n } else {\n setSearchDisabled(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n loadPending,\n hasData,\n eventType,\n filterDate,\n filterFromDate,\n filterToDate,\n fromDateError,\n toDateError\n ]);\n\n useEffect(() => {\n if ((eventType.url === Routing.boUserActivityAssociatedHoldings || eventType.url === Routing.boUserActivityHoldingDetails) && hasData) {\n runRequest();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [eventType]);\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n if (cphValid) {\n helpers.get.holdingsInBusiness(source.token, filterCph)\n .then((res) => {\n const username = res.data.data.id;\n\n storeService.session.set.tableFiltersUser(username);\n setFilterUserName(username);\n })\n .catch(() => {\n storeService.session.remove.tableFiltersUser();\n });\n }\n\n return () => {\n source.cancel();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cphValid]);\n\n useEffect(() => {\n if (filterEventType) {\n setTableParams((prevState) => ({\n ...prevState,\n columns: tableColumns.bo.userActivity[filterEventType],\n request: {\n ...prevState.request,\n url: constants.bo.userActivity.eventTypes[filterEventType].endpoint,\n params: {\n ...prevState.request.params,\n cph: filterCph,\n eventType: filterEventType,\n fromDate: filterFromDate,\n toDate: filterToDate,\n movementType: filterMovementType\n },\n processData: (data) => data.map((row) => ({\n ...row,\n status: row.isFullUndone ? constants.status.cancelled : row.requestStatus,\n taggingDate: taggingEventProperties(row).dateField,\n taggingQuantity: taggingEventProperties(row).quantity,\n notificationQuantity: getAnimalCount(row),\n deathQuantity: getAnimalCount(row),\n animalsAddedQuantity: getAnimalCount(row),\n annualInventory: {\n ...row.content?.annualInventorySpecies?.[0],\n total: row.content?.annualInventorySpecies?.[0].annualInventoryStocks?.[0].quantity\n }\n }))\n }\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ready &&\n
    \n
    \n
    \n \n
    \n\n {cphValid && !cphError?.type &&\n <>\n \n \n }\n
    \n\n {cphValid && filterEventType &&\n <>\n
    \n \n
    \n \n }\n
    \n }\n \n );\n};\n\nBoUserActivityFilters.propTypes = {\n eventType: PropTypes.object.isRequired,\n hasData: PropTypes.bool.isRequired,\n loadPending: PropTypes.bool.isRequired,\n setData: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setRenderTable: PropTypes.func.isRequired,\n setTableParams: PropTypes.func.isRequired,\n storeFilters: PropTypes.string.isRequired,\n tableParams: PropTypes.object.isRequired\n};\n\nexport default BoUserActivityFilters;\n","import React, { useEffect } from 'react';\nimport classes from 'components/base/tabs/tabs.module.scss';\nimport PropTypes from 'prop-types';\nimport Tab from 'components/base/tab/tab';\n\nconst Tabs = ({\n activeTabId,\n children,\n setActiveTabId\n}) => {\n useEffect(() => {\n if (activeTabId) {\n setActiveTabId(activeTabId, true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeTabId]);\n\n const onClickTabItem = (tabId) => {\n setActiveTabId(tabId);\n };\n\n return (\n
    \n
      \n {children?.map((child) => {\n if (child) {\n const {\n extraContent,\n id,\n label\n } = child.props;\n\n return (\n \n );\n }\n return null;\n })}\n
    \n
    \n {children?.map((child) => {\n if (child && child.props.id !== activeTabId) {\n return undefined;\n }\n return child ? child.props.children : undefined;\n })}\n
    \n
    \n );\n};\n\nTabs.propTypes = {\n activeTabId: PropTypes.string.isRequired,\n children: PropTypes.instanceOf(Array).isRequired,\n setActiveTabId: PropTypes.func.isRequired\n};\n\nexport default Tabs;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport config from 'config';\nimport classes from 'components/table/filters/filtersGatheringSearch/filtersGatheringSearch.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport permissions from 'services/permissions';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport { initialSorting, tableColumns } from 'services/tableColumns';\nimport Button from 'components/base/button/button';\nimport CPHField from 'components/base/cphField/cphField';\nimport DateRange from 'components/base/dateRange/dateRange';\nimport FieldEntry from 'backOfficeComponents/base/fieldEntry/fieldEntry';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport Tabs from 'components/base/tabs/tabs';\n\nconst maxMovementRefLength = parseInt(config.WIDTH_MOVEMENT_REF);\n\nconst GatheringSearchFilters = ({\n loadPending,\n setData,\n setRenderTable,\n setResultsLabel,\n setTableParams,\n storeFilters,\n tableParams\n}) => {\n const { ready, t } = useTranslation();\n\n const sessionCph = storeService.session.get.holding().value;\n const sessionSpecies = storeService.session.get.species();\n\n const now = helpers.date.now();\n const today = helpers.date.formatYYYYMMDD(now);\n const sevenDaysAgo = helpers.date.formatYYYYMMDD(helpers.date.subtractPeriod(now, 7, constants.period.days));\n\n const [filterActiveTabId, setFilterActiveTabId] = React.useState(tableParams?.filters?.activeTabId ? tableParams.filters.activeTabId : constants.tabs.movementRange);\n const [filterMovementType, setFilterMovementType] = React.useState(tableParams?.filters?.movementType ? tableParams.filters.movementType : (permissions.isAbattoir() ? constants.option.movement.on : ''));\n const [filterCphNumber, setFilterCphNumber] = React.useState(tableParams?.filters?.cphNumber ? tableParams.filters.cphNumber : '');\n const [filterMovementRef, setFilterMovementRef] = React.useState(tableParams?.filters?.movementRef ? tableParams.filters.movementRef : '');\n const [filterMovementStatus, setFilterMovementStatus] = React.useState(tableParams?.filters?.movementStatus ? tableParams.filters.movementStatus : null);\n const [filterFromDate, setFilterFromDate] = React.useState(tableParams?.filters?.fromDate ? tableParams.filters.fromDate : sevenDaysAgo);\n const [filterToDate, setFilterToDate] = React.useState(tableParams?.filters?.toDate ? tableParams.filters.toDate : today);\n const [fromDateError, setFromDateError] = React.useState('');\n const [toDateError, setToDateError] = React.useState('');\n const [searchDisabled, setSearchDisabled] = React.useState(true);\n const [resetTable, setResetTable] = React.useState(tableParams?.filters?.newRequest ?? false);\n\n const handleChanges = {\n cphNumber: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setFilterCphNumber(value);\n\n if (value.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { cphNumber, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { cphNumber, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n cphNumber: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n cphNumber: value\n });\n }\n },\n\n date: (which, value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n if (helpers.flags.isFrom(which)) {\n setFilterFromDate(value);\n\n if (value.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { fromDate, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { fromDate, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n fromDate: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n fromDate: value\n });\n }\n } else if (helpers.flags.isTo(which)) {\n setFilterToDate(value);\n\n if (value.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { toDate, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { toDate, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n toDate: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n toDate: value\n });\n }\n }\n },\n\n movementRef: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n let result = '';\n if (value) {\n const reference = value.replace(/[^0-9]/g, '');\n if (reference) {\n result = reference.substring(0, maxMovementRefLength);\n }\n }\n\n setFilterMovementRef(value);\n\n if (result.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { movementRef, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { movementRef, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n movementRef: result\n });\n }\n },\n\n movementStatus: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setFilterMovementStatus(value);\n\n if (value.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { movementStatus, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { movementStatus, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n movementStatus: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n movementStatus: value\n });\n }\n },\n\n movementType: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setFilterMovementType(value);\n\n if (value.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { movementType, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { movementType, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n movementType: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n movementType: value\n });\n }\n },\n\n tab: (value, firstSet) => {\n if (!firstSet) {\n resetForm();\n }\n\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setFilterActiveTabId(value);\n\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n tab: value\n },\n request: {\n ...prevState.request,\n url: helpers.tab.isMovementRange(value) ? '/gatheringMovements' : '/movementDetails'\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n activeTabId: value,\n pageIndex: 0\n });\n }\n };\n\n const tab = {\n byDateAndCph: () => {\n return (\n
    \n
    \n handleChanges.movementType(event.target.value)}\n suppressHint={true}\n suppressLabel={true}\n value={filterMovementType}\n />\n
    \n\n
    \n handleChanges.date(constants.flags.from, date)}\n setFromDateError={setFromDateError}\n setToDate={(date) => handleChanges.date(constants.flags.to, date)}\n setToDateError={setToDateError}\n toDate={filterToDate}\n toDateError={toDateError}\n />\n
    \n\n
    \n handleChanges.movementStatus(event.target.value)}\n tooltip=\"radioButtons.movementStatus.tooltip\"\n value={filterMovementStatus}\n />\n
    \n\n
    \n
    \n \n
    \n
    \n
    \n );\n },\n\n byMovementRef: () => {\n return (\n
    \n
    \n handleChanges.movementRef(event.target.value.trim())}\n value={filterMovementRef}\n width={config.WIDTH_MOVEMENT_ID}\n />\n
    \n
    \n );\n }\n };\n\n const resetForm = () => {\n const validKeys = ['pageIndex', 'pageSize'];\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n storeService.session.removeAll.searchResults();\n if (storedFilters) {\n Object.keys(storedFilters).forEach((key) => {\n if (!validKeys.includes(key)) {\n delete storedFilters[key];\n }\n });\n }\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters\n });\n\n setFilterMovementType(permissions.isAbattoir() ? constants.option.movement.on : '');\n setFilterFromDate(sevenDaysAgo);\n setFilterToDate(today);\n setFromDateError('');\n setToDateError('');\n setFilterMovementStatus(null);\n setFilterCphNumber('');\n setFilterMovementRef('');\n\n setSearchDisabled(true);\n setRenderTable(false);\n setData([]);\n };\n\n const runRequest = () => {\n if (!filterFromDate) {\n setFilterFromDate(sevenDaysAgo);\n }\n if (!filterToDate) {\n setFilterToDate(today);\n }\n\n storeService.session.set[`tableFilters${storeFilters}PageIndex`](0);\n storeService.session.remove[`tableFilters${storeFilters}SortBy`]();\n storeService.session.removeAll.searchResults();\n setData([]);\n\n if (helpers.tab.isMovementRange(filterActiveTabId)) {\n if (filterMovementStatus === 'unconfirmed') {\n setResultsLabel('label.unconfirmedMovement');\n } else if (filterMovementStatus === 'reported') {\n setResultsLabel('label.reportedMovement');\n }\n\n setTableParams((prevState) => ({\n ...prevState,\n columns: tableColumns.gatheringSearch.byDateAndCph({ activeTabId: filterActiveTabId, movementType: filterMovementType, movementStatus: filterMovementStatus }),\n filters: {\n activeTabId: filterActiveTabId,\n movementType: filterMovementType,\n cphNumber: filterCphNumber,\n movementStatus: filterMovementStatus,\n fromDate: filterFromDate,\n toDate: filterToDate\n },\n page: {\n ...prevState.page,\n index: 0\n },\n request: {\n ...prevState.request,\n params: {\n ...prevState.request.params,\n speciesName: sessionSpecies.name,\n speciesId: sessionSpecies.id,\n cph: sessionCph\n }\n },\n sort: {\n by: filterMovementStatus === 'unconfirmed' ? initialSorting.gatheringSearch.byDateAndCph.unconfirmed.accessor : initialSorting.gatheringSearch.byDateAndCph.reported.accessor,\n direction: filterMovementStatus === 'unconfirmed' ? initialSorting.gatheringSearch.byDateAndCph.unconfirmed.direction : initialSorting.gatheringSearch.byDateAndCph.reported.direction\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}SortBy`](filterMovementStatus === 'unconfirmed' ? initialSorting.gatheringSearch.byDateAndCph.unconfirmed.accessor : initialSorting.gatheringSearch.byDateAndCph.reported.accessor);\n storeService.session.set[`tableFilters${storeFilters}SortDirection`](filterMovementStatus === 'unconfirmed' ? initialSorting.gatheringSearch.byDateAndCph.unconfirmed.direction : initialSorting.gatheringSearch.byDateAndCph.reported.direction);\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n columns: tableColumns.gatheringSearch.byMovementReference({ activeTabId: filterActiveTabId, movementRef: filterMovementRef }),\n filters: {\n activeTabId: filterActiveTabId,\n documentRef: filterMovementRef\n },\n page: {\n ...prevState.page,\n index: 0\n },\n request: {\n ...prevState.request,\n params: {\n ...prevState.request.params,\n speciesId: sessionSpecies.id\n }\n },\n sort: {\n by: initialSorting.gatheringSearch.byMovementReference.accessor,\n direction: initialSorting.gatheringSearch.byMovementReference.direction\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}SortBy`](initialSorting.gatheringSearch.byMovementReference.accessor);\n storeService.session.set[`tableFilters${storeFilters}SortDirection`](initialSorting.gatheringSearch.byMovementReference.direction);\n }\n setRenderTable(true);\n };\n\n useEffect(() => {\n if (resetTable) {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n newRequest: false\n });\n\n setResetTable(false);\n runRequest();\n }\n if (helpers.tab.isMovementRange(filterActiveTabId)) {\n if (loadPending || !filterMovementType || !filterMovementStatus || !filterFromDate || !filterToDate || fromDateError !== '' || toDateError !== '' || (filterCphNumber.length > 0 && filterCphNumber.length < config.LENGTH_HOLDING_CPH)) {\n setSearchDisabled(true);\n } else {\n setSearchDisabled(false);\n }\n } else if (helpers.tab.isMovementRef(filterActiveTabId)) {\n if (loadPending || !filterMovementRef) {\n setSearchDisabled(true);\n } else {\n setSearchDisabled(false);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n loadPending,\n filterActiveTabId,\n filterMovementType,\n filterMovementRef,\n filterMovementStatus,\n filterCphNumber,\n filterFromDate,\n filterToDate,\n fromDateError,\n toDateError\n ]);\n\n useEffect(() => {\n if (helpers.tab.isMovementRange(filterActiveTabId)) {\n setTableParams((prevState) => ({\n ...prevState,\n columns: tableColumns.gatheringSearch.byDateAndCph({ activeTabId: filterActiveTabId, movementType: filterMovementType, movementStatus: filterMovementStatus }),\n request: {\n ...prevState.request,\n params: {\n ...prevState.request.params,\n speciesName: sessionSpecies.name,\n speciesId: sessionSpecies.id,\n cph: sessionCph,\n cphNumber: filterCphNumber,\n movementType: filterMovementType,\n movementStatus: filterMovementStatus,\n fromDate: filterFromDate,\n toDate: filterToDate\n }\n }\n }));\n } else if (helpers.tab.isMovementRef(filterActiveTabId)) {\n setTableParams((prevState) => ({\n ...prevState,\n columns: tableColumns.gatheringSearch.byMovementReference({ activeTabId: filterActiveTabId, movementRef: filterMovementRef }),\n request: {\n ...prevState.request,\n params: {\n ...prevState.request.params,\n speciesName: sessionSpecies.name,\n documentRef: filterMovementRef\n }\n }\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ready &&\n <>\n

    {t('label.movementSearch')}

    \n \n {tab.byDateAndCph()}\n {tab.byMovementRef()}\n \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n }\n \n );\n};\n\nGatheringSearchFilters.propTypes = {\n loadPending: PropTypes.bool.isRequired,\n setData: PropTypes.func.isRequired,\n setRenderTable: PropTypes.func.isRequired,\n setResultsLabel: PropTypes.func.isRequired,\n setTableParams: PropTypes.func.isRequired,\n storeFilters: PropTypes.string.isRequired,\n tableParams: PropTypes.object.isRequired\n};\n\nexport default GatheringSearchFilters;\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgIconCattle = function SvgIconCattle(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 50 35\",\n width: 50,\n height: 50,\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.7,21.6C4.2,22,3.8,22.5,3.4,23c-0.3,0.4-0.4,0.9-0.3,1.5c0.3,1.6,0.5,3.1,0.6,4.8 c0,0.8-0.1,3.3-0.1,3.4c0,0.3-0.1,0.4-0.1,0.7c0.1,0.1,0.3,0.4,0.4,0.4C4.1,33.7,4.4,34,4.4,34c-0.2,0.4-0.4,0.9-0.6,1.5 c0.7,0.7,1.6,1.1,2.5,1.2c0.7,0,1.1-0.2,1.1-0.8c-0.2-0.7-0.5-1.2-1-1.8c-0.4-1.2-0.6-2.6-0.6-3.9c0-1.9,0.6-3.8,1.6-5.4 c1.3,2.5,1.9,5.3,1.9,8.1c0.6,0.1,1.1,0.6,1.3,1.2c0.4,0.9,1.3,1.3,2.1,1.2c0.7,0,0.9-0.2,1-0.3c0-0.2-0.2-0.4-0.4-0.6 c-0.1-0.3-1.7-2.9-1.9-3.4c-0.3-0.7-0.4-1.5-0.5-2.2c0-0.6,0-1.9,0.6-2c0.7-0.2,0.8,0.9,1.1,0.9c0.3-0.1,0.1-0.7,0.5-0.8 c0.4-0.1,1-0.3,1.2,0.2c0.2,0.6,0.3,0.8,0.6,0.3c0.2-0.2,0.3-0.6,0.3-0.9c0.6-0.3,1.1-0.8,1.5-1.5c0.3-0.3,0.9-1.1,0.9-1.1 c1.2,0.1,2.3,0.2,2.7,0.2c0.5,0,1.7-0.1,2.2-0.1c0.6,0,1.2,0.1,1.8,0.1c0.6,0,1.2-0.1,1.8-0.3c0.2-0.1,0.4-0.1,0.6,0 c0.4,0.1,0.6,0.3,0.6,0.7c0.2,0.4,0.3,0.9,0.4,1.5v1c-0.2,0.4-0.4,0.9-0.5,1.5c0,0.3,0.4,0.6,0.6,0.9c0.4,0.7,0.6,1.5,0.6,2.4 c0,0.9-0.1,1.3-0.1,1.9c0,0.3-0.3,0.6,0.1,0.6c0.4,0.1,0.4,0.3,0.5,0.7c0.1,0.3,0.1,0.6,0.5,0.9c0.6,0.3,1.2,0.6,1.9,0.7 c0.6,0.1,0.8,0,0.8-0.3c0.1-0.3-0.1-0.7-0.4-0.9c-0.4-0.3-0.6-0.3-0.7-0.7c-0.1-0.4-0.4-1.8-0.5-2.1C30,31.5,30,30.8,30,29.9 c0-0.6,0-1.1,0.1-1.7c0.1-0.4,0.3-1,0.4-1.5c0.1,1,0.4,2,0.8,2.9c0.2,0.1,0.4,0.3,0.5,0.7c0.1,0.2,0.3,1.8,0.4,2.4 c0.1,0.4,0.1,2.2,0.3,2.4c0.2,0.1,0.5,0.1,0.7,0.3c0.3,0.2,0.5,0.8,0.8,1c0.4,0.3,0.8,0.6,1.3,0.6c0.6,0,0.9-0.1,1-0.3 s0.1-0.3,0-0.6c-0.5-0.4-0.9-0.8-1.3-1.3c-0.1-0.3-0.7-1.5-0.8-1.9s-0.8-3-0.8-3.4c0-0.4,0.1-0.8,0.3-1.2c0-0.4,0.1-1.9,0.1-2.5 c0-0.4,0-0.7,0.4-0.7c0.4,0,0.7,0,1.1-0.1c0.3-0.2,0.7-0.7,0.9-1c0.4-0.8,0.6-1.2,0.7-1.5c0.1-0.4,0.7-2.2,0.9-2.9 c0.3-0.7,1.2-2.4,1.6-2.9s1.2-1.5,1.6-1.9c0.4-0.3,0.9-0.7,1.5-0.8c0.5-0.1,1.3,0.1,1.9,0c0.6-0.1,1.2-0.2,1.8-0.4 c0.4-0.1,1.3-0.7,1.7-0.8c0.4-0.1,1.4,0.1,1.6-0.1c0.2-0.2,0.3-0.4,0.4-0.8c-0.7-0.3-0.5-0.3-0.5-0.4c0.2-0.1,0.4-0.1,0.4-0.3 c0-0.3-0.1-0.4-0.4-0.8c-0.4-0.6-1.3-1.2-1.4-1.6c-0.2-0.2-0.4-0.6-0.6-0.9c-0.2-0.3-0.9-0.7-1.3-1c-0.6-0.8-1.3-1.5-2-2.2 c-0.3-0.3-0.7-0.7-1.2-0.9c0.7,0,2.2,0.1,2.7-0.3c0.5-0.3,0.8-0.8,1-1.3c-0.6,0.1-1.2,0.2-1.8,0.3c-0.8,0-1.6-0.2-2.3-0.4 c-0.3-0.3-0.6-0.4-1-0.4c-0.3,0.1-0.5,0.1-0.8,0.3c-0.4,0.1-0.7,0.3-0.7,0.6s0.1,0.3,0.3,0.4c0.2,0.1,0.3,0.8,0.1,0.9 c-0.3,0-0.3-0.1-0.6-0.3c-0.4-0.3-0.9-0.6-1.5-0.7c-0.3,0-0.6,0.2-0.8,0.6c-0.2,0.2-0.2,0.6,0,0.9c0.3,0.3,0.5,0.3,0.7,0.4 c0.3,0.1,0.5,0.1,0.5,0.4c0,0.1-0.1,0.3-0.5,0.3c-1,0.2-2,0.2-2.9,0.3c-2-0.1-6.4,0.2-7.9,0.3c-1.5,0.1-3.4,0.4-4.9,0.7 c-1.4,0-2.2,0-3.6,0c-2,0-3.9-0.1-5.9-0.4c-1.6-0.1-3.4-0.2-4.3-0.3c-1-0.2-2-0.1-2.9,0.3c-0.9,0.4-1.6,1.1-2.2,2 C3.2,8.8,3,9.3,2.9,10c0,0.9-0.3,2.6-0.5,3.3c-0.1,0.8-0.2,1.6-0.1,2.4c0,0.9-0.1,2.5-0.1,3.4c0,0.3,0,0.8-0.4,0.9 c-0.4,0-0.6,0.2-0.7,0.6c-0.3,0.3-0.5,0.3-0.6,0.9c-0.1,0.4-0.1,0.9,0,1.3c0.2,0.4,0.3,0.9,0.4,1.5c0.1,0.7,0.3,1.8,0.4,2.4 c0.1-0.7,0.5-0.9,0.5-1.3c0.1-0.8,0.2-1.6,0.4-2.4c0.1-0.7,0.8-1,0.8-1.3c0.1-0.3,0.1-0.8,0-1.1c-0.2-0.3-0.3-0.4-0.2-0.8 c0.1-0.9,0.2-1.8,0.3-2.8c0-0.4,0.3-4.4,0.3-4.9c0-0.3,0.5-2.4,0.5-2.4c-0.1,1.7-0.2,3.9-0.2,4.6v3.4c0.1,0.7-0.1,2.1,0.3,2.8 c0.4,0.8,0.5,1,0.5,1L4.7,21.6z\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconCattle, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-cattle.8e7d4373.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/base/aboutPanel/aboutPanel.module.scss';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\n\nconst AboutPanel = ({\n children,\n descriptions,\n keepOpen,\n linkText,\n linkUrl,\n onToggle,\n open,\n styleContent,\n title\n}) => {\n const { ready, t } = useTranslation();\n\n const componentClassNames = [\n classes.content,\n styleContent === false ? classes.noSidebar : ''\n ].join(' ').trim();\n\n const getContentsLink = (text, onClick, href) => {\n return (\n
    \n {helpers.text.getContentsLink(\n t,\n text,\n onClick,\n href\n )}\n
    \n );\n };\n\n return (\n <>\n {ready &&\n
    keepOpen ? event.preventDefault() : false} onToggle={onToggle} open={open ? 'open' : null}>\n \n {t(title)}\n \n
    \n {descriptions?.filter((desc) => desc.text).map((desc) => (\n
    \n {getContentsLink(desc.text, desc.onClick, desc.href)}\n
    \n ))}\n {linkText && linkUrl &&\n

    {t(linkText)}

    \n }\n {children}\n
    \n
    \n }\n \n );\n};\n\nAboutPanel.propTypes = {\n children: PropTypes.any,\n descriptions: PropTypes.arrayOf(\n PropTypes.exact({\n text: PropTypes.string.isRequired,\n onClick: PropTypes.func,\n href: PropTypes.string\n })\n ),\n keepOpen: PropTypes.bool,\n linkText: PropTypes.string,\n linkUrl: PropTypes.string,\n onToggle: PropTypes.func,\n open: PropTypes.bool,\n styleContent: PropTypes.bool,\n title: PropTypes.string.isRequired\n};\n\nexport default AboutPanel;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ReactComponent as DownloadIcon } from 'images/svg/Download_icon.svg';\nimport bff, { isCancel } from 'services/bff';\nimport classes from 'components/table/filters/filtersHoldingRegister/filtersHoldingRegister.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport Button from 'components/base/button/button';\nimport CheckboxGroup from 'components/base/checkboxGroup/checkboxGroup';\nimport DateRange from 'components/base/dateRange/dateRange';\n\nconst HoldingRegisterFilters = ({\n columnParams,\n eventType,\n loadPending,\n setData,\n setEventType,\n setModal,\n setTableParams,\n storeFilters,\n tableParams\n}) => {\n const { ready, t } = useTranslation();\n\n const now = helpers.date.now();\n const today = helpers.date.formatYYYYMMDD(now);\n const sixMonthsAgo = helpers.date.formatYYYYMMDD(helpers.date.subtractPeriod(now, 6, constants.period.months));\n\n const sessionHolding = storeService.session.get.holding();\n const sessionSpecies = storeService.session.get.species();\n const speciesId = sessionSpecies ? sessionSpecies.id : '';\n\n const store = helpers.holdingRegister.getReference();\n\n const [filterFromDate, setFilterFromDate] = React.useState(tableParams?.filters?.fromDate ? tableParams.filters.fromDate : sixMonthsAgo);\n const [filterToDate, setFilterToDate] = React.useState(tableParams?.filters?.toDate ? tableParams.filters.toDate : today);\n const [fromDateError, setFromDateError] = React.useState('');\n const [toDateError, setToDateError] = React.useState('');\n const [downloadPending, setDownloadPending] = React.useState(false);\n const [eventTypes, setEventTypes] = React.useState([\n { id: constants.holdingRegister.identifier.all, label: t('label.allEntries'), value: false },\n helpers.species.isDeerId(store.speciesId) ? null : { id: constants.holdingRegister.type.tagReplacements, label: t('label.tagReplacements'), value: false },\n helpers.species.isDeerId(store.speciesId) ? null : { id: constants.holdingRegister.type.tagApplications, label: t('label.tagApplications'), value: false },\n { id: constants.holdingRegister.type.movementsOff, label: t('label.offMovements'), value: false },\n { id: constants.holdingRegister.type.movementsOn, label: t('label.onMovements'), value: false },\n { id: constants.holdingRegister.type.adjacentMovements, label: t('label.adjacentMovements'), value: false },\n helpers.species.isDeerId(store.speciesId) ? null : { id: constants.holdingRegister.type.deaths, label: t('label.deaths'), value: false },\n helpers.species.isDeerId(store.speciesId) ? null : { id: constants.holdingRegister.type.annualInventory, label: t('label.annualInventory'), value: false }\n ].filter((item) => item));\n\n const handleChanges = {\n date: (which, value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n if (helpers.flags.isFrom(which)) {\n setFilterFromDate(value);\n\n if (value?.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { fromDate, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { fromDate, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n fromDate: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n fromDate: value\n });\n }\n } else if (helpers.flags.isTo(which)) {\n setFilterToDate(value);\n\n if (value?.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { toDate, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { toDate, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n toDate: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n toDate: value\n });\n }\n }\n },\n\n selectedReports: (checkboxId) => {\n let selectedEventTypes;\n\n if (checkboxId === 'all') {\n selectedEventTypes = eventTypes.map((item) => ({\n ...item,\n value: (checkboxId === String(item.id)) ? !item.value : false\n }));\n } else {\n selectedEventTypes = eventTypes.map((item) => ({\n ...item,\n value: (checkboxId === String(item.id)) ? !item.value : (item.id === 'all' ? false : item.value)\n }));\n }\n\n setEventTypes(selectedEventTypes);\n }\n };\n\n const downloadReport = () => {\n setDownloadPending(true);\n\n if (helpers.holdingRegister.types.isDownload(eventType.current)) {\n let selectedEventTypes;\n\n if (eventTypes[0].value) { // \"All\" selected\n selectedEventTypes = eventTypes.filter((item) => item.id !== constants.holdingRegister.identifier.all).map((item) => item.id);\n } else {\n selectedEventTypes = eventTypes.filter((item) => item.value).map((item) => item.id);\n }\n\n helpers.holdingRegister.download(setModal, {\n cph: store.cph,\n speciesId: store.speciesId,\n fromDate: filterFromDate,\n toDate: filterToDate,\n eventTypes: selectedEventTypes,\n setPending: setDownloadPending\n });\n } else {\n bff\n .get('/holdingRegisterDownload', {\n params: {\n eventTypes: [eventType.current.toLowerCase()],\n cph: sessionHolding.value,\n speciesId,\n fromDate: moment(filterFromDate).format('YYYY-MM-DD'),\n toDate: helpers.date.addPeriod(filterToDate, 1, constants.period.days).format('YYYY-MM-DD')\n }\n })\n .then((res) => {\n const filename = `holdingRegister-${eventType.current}`;\n\n helpers.openFileFromResponse(res.data, filename, 'ods');\n\n setDownloadPending(false);\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setDownloadPending(false);\n errors.BFF(error, setModal);\n }\n });\n }\n };\n\n const runRequest = () => {\n if (!filterFromDate) {\n setFilterFromDate(sixMonthsAgo);\n }\n if (!filterToDate) {\n setFilterToDate(today);\n }\n\n storeService.session.set[`tableFilters${storeFilters}PageIndex`](0);\n storeService.session.remove[`tableFilters${storeFilters}SortBy`]();\n storeService.session.removeAll.searchResults();\n setData([]);\n\n setTableParams((prevState) => ({\n ...prevState,\n columns: typeof tableColumns.holdingRegister[eventType.current] === 'function'\n ? tableColumns.holdingRegister[eventType.current]({ ...columnParams })\n : tableColumns.holdingRegister[eventType.current],\n filters: {\n fromDate: filterFromDate,\n toDate: filterToDate\n },\n page: {\n ...prevState.page,\n index: 0\n },\n request: {\n ...prevState.request,\n params: {\n ...prevState.request.params,\n fromDate: filterFromDate,\n toDate: filterToDate\n }\n },\n sort: {\n by: initialSorting.holdingRegister[eventType.current].accessor,\n direction: initialSorting.holdingRegister[eventType.current].direction\n }\n }));\n };\n\n useEffect(() => {\n setTableParams((prevState) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n if (eventType.previous !== '' || !storedFilters) {\n storeService.session.set[`tableFilters${storeFilters}PageIndex`](0);\n storeService.session.set[`tableFilters${storeFilters}PageSize`](prevState.page.size);\n storeService.session.set[`tableFilters${storeFilters}SortBy`](initialSorting.holdingRegister[eventType.current]?.accessor);\n storeService.session.set[`tableFilters${storeFilters}SortDirection`](initialSorting.holdingRegister[eventType.current]?.direction);\n }\n\n if (eventType.refresh) {\n // eslint-disable-next-line no-unused-vars\n setEventType(({ refresh, ...prevState }) => prevState);\n } else {\n return {\n ...prevState,\n columns: typeof tableColumns.holdingRegister[eventType.current] === 'function'\n ? tableColumns.holdingRegister[eventType.current]({ ...columnParams })\n : tableColumns.holdingRegister[eventType.current],\n page: {\n index: eventType.previous !== '' ? 0 : prevState.page.index,\n size: eventType.previous !== '' ? config.DEFAULT_TABLE_PAGE_SIZE : prevState.page.size\n },\n request: {\n url: constants.holdingRegister.endpoint[eventType.current],\n params: {\n ...prevState.request.params,\n eventType: eventType.current,\n fromDate: filterFromDate,\n toDate: filterToDate\n }\n },\n sort: {\n by: eventType.previous !== '' ? initialSorting.holdingRegister[eventType.current]?.accessor : prevState.sort.by,\n direction: eventType.previous !== '' ? initialSorting.holdingRegister[eventType.current]?.direction : prevState.sort.direction\n }\n };\n }\n\n return prevState;\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [eventType]);\n\n return (\n <>\n {ready &&\n
    \n {helpers.holdingRegister.types.isDownload(eventType.current) &&\n \n }\n {!helpers.holdingRegister.types.isAnnualInventory(eventType.current) &&\n <>\n

    {t('label.narrowDown')}

    \n handleChanges.date(constants.flags.from, date)}\n setFromDateError={setFromDateError}\n setToDate={(date) => handleChanges.date(constants.flags.to, date)}\n setToDateError={setToDateError}\n submit={!helpers.holdingRegister.types.isDownload(eventType.current) ? runRequest : undefined}\n toDate={filterToDate}\n toDateError={toDateError}\n />\n \n }\n\n {helpers.holdingRegister.types.isDownload(eventType.current) &&\n <>\n

    {t('label.selectHoldingRegisterSections')}

    \n handleChanges.selectedReports(event.target.id)}\n />\n \n }\n\n {!loadPending &&\n
    \n item.value))}\n icon={}\n label=\"button.download\"\n onClick={downloadReport}\n />\n
    \n }\n
    \n }\n \n );\n};\n\nHoldingRegisterFilters.propTypes = {\n columnParams: PropTypes.object.isRequired,\n eventType: PropTypes.object.isRequired,\n loadPending: PropTypes.bool.isRequired,\n setData: PropTypes.func.isRequired,\n setEventType: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setTableParams: PropTypes.func.isRequired,\n storeFilters: PropTypes.string.isRequired,\n tableParams: PropTypes.object.isRequired\n};\n\nexport default HoldingRegisterFilters;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport axios from 'axios';\nimport bff, { isCancel } from 'services/bff';\nimport classes from 'components/table/filters/filtersUserActivity/filtersUserActivity.module.scss';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport userRoleType from 'services/userRoleType';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport DropdownSearch from 'components/base/dropdownSearch/dropdownSearch';\nimport DateRange from 'components/base/dateRange/dateRange';\n\nconst UserActivityFilters = ({\n loadPending,\n setData,\n setModal,\n setRenderTable,\n setTableParams,\n storeFilters,\n tableParams\n}) => {\n const { ready, t } = useTranslation();\n\n const sessionAnimalsAdded = storeService.session.get.animalsAdded();\n\n const now = helpers.date.now();\n const today = helpers.date.formatYYYYMMDD(now);\n const threeMonthsAgo = helpers.date.formatYYYYMMDD(helpers.date.subtractPeriod(now, 3, constants.period.months));\n\n const holdings = storeService.session.get.holdings();\n const hasKeeperHoldings = Object.values(holdings).some((holding) => holding.role === userRoleType.KEEPER);\n\n const getRequestTypeOptions = (animalsAdded) => {\n const initialRequestTypeOptions = [\n { label: t('label.movements'), name: t('label.movements'), value: constants.option.requestType.movement },\n { label: t('label.amendedMovements'), name: t('label.amendedMovements'), value: constants.option.requestType.correctTransfer },\n { label: t('label.reviewedNotifications'), name: t('label.reviewedNotifications'), value: constants.option.requestType.movementHandshake }\n ];\n\n if (hasKeeperHoldings) {\n initialRequestTypeOptions.push({ label: t('label.deaths'), name: t('label.deaths'), value: constants.option.requestType.death });\n initialRequestTypeOptions.push({ label: t('label.tagApplications'), name: t('label.tagApplications'), value: constants.option.requestType.tagApplication });\n initialRequestTypeOptions.push({ label: t('label.replacementTags'), name: t('label.replacementTags'), value: constants.option.requestType.tagReplacement });\n initialRequestTypeOptions.push({ label: t('label.birthsIndividualTagging'), name: t('label.birthsIndividualTagging'), value: constants.option.requestType.birth });\n\n if (animalsAdded) {\n initialRequestTypeOptions.push({ label: t('label.animalsAdded'), name: t('label.animalsAdded'), value: constants.option.requestType.animalsAdded });\n }\n }\n\n return initialRequestTypeOptions;\n };\n\n const [filterRequestType, setFilterRequestType] = React.useState(tableParams?.filters?.requestType);\n const [filterFromDate, setFilterFromDate] = React.useState(tableParams?.filters?.fromDate ? tableParams.filters.fromDate : threeMonthsAgo);\n const [filterToDate, setFilterToDate] = React.useState(tableParams?.filters?.toDate ? tableParams.filters.toDate : today);\n const [fromDateError, setFromDateError] = React.useState('');\n const [toDateError, setToDateError] = React.useState('');\n const [animalsAddedPending, setAnimalsAddedPending] = React.useState(true);\n const [requestTypeOptions, setRequestTypeOptions] = React.useState(getRequestTypeOptions(sessionAnimalsAdded));\n const [searchEnabled, setSearchEnabled] = React.useState(false);\n\n const handleChanges = {\n date: (which, value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n if (helpers.flags.isFrom(which)) {\n setFilterFromDate(value);\n\n if (value !== filterFromDate) {\n setRenderTable(false);\n }\n\n if (value?.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { fromDate, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { fromDate, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n fromDate: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n fromDate: value\n });\n }\n } else if (helpers.flags.isTo(which)) {\n setFilterToDate(value);\n\n if (value !== filterToDate) {\n setRenderTable(false);\n }\n\n if (value?.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { toDate, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { toDate, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n toDate: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n toDate: value\n });\n }\n }\n },\n\n requestType: (value) => {\n const storedFilters = storeService.session.get[`tableFilters${storeFilters}`]();\n\n setFilterRequestType(value);\n\n if (value !== filterRequestType) {\n setRenderTable(false);\n }\n\n if (value?.length === 0) {\n setTableParams((prevState) => {\n // eslint-disable-next-line no-unused-vars\n const { requestType, sortBy, sortDirection, ...prevStateFilters } = prevState.filters;\n\n return {\n ...prevState,\n filters: prevStateFilters\n };\n });\n\n // eslint-disable-next-line no-unused-vars\n const { requestType, sortBy, sortDirection, ...prevStoredFilters } = storedFilters;\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...prevStoredFilters\n });\n } else {\n setTableParams((prevState) => ({\n ...prevState,\n filters: {\n ...prevState.filters,\n requestType: value\n }\n }));\n\n storeService.session.set[`tableFilters${storeFilters}`]({\n ...storedFilters,\n requestType: value,\n sortBy: 'requestId',\n sortDirection: constants.sorting.descending\n });\n }\n }\n };\n\n const taggingEventProperties = (row) => {\n switch (filterRequestType) {\n case constants.option.requestType.birth:\n return {\n dateField: row.content.dateOfApplication,\n quantity: row.content.applicationItems?.length\n };\n\n case constants.option.requestType.tagApplication:\n return {\n dateField: row.content.dateOfApplication,\n quantity: row.content.devices?.length + row.content.batches.reduce((total, batch) => total + batch.animalTotal, 0)\n };\n\n case constants.option.requestType.tagReplacement:\n return {\n dateField: row.content.replacementDate,\n quantity: row.content.replaceItems?.length\n };\n\n default:\n return {};\n }\n };\n\n const getAnimalCount = (row) => {\n if (filterRequestType === constants.option.requestType.movementHandshake) {\n const numberOfAnimalsInBatches = row.content.reviewMovement.acceptedBatches?.length > 0 ? row.content.reviewMovement.acceptedBatches.reduce((total, row) => total + parseInt(row.animalTotal), 0) : 0;\n const numberOfIndividualAnimals = row.content.reviewMovement.acceptedDevices?.length;\n\n return numberOfAnimalsInBatches + numberOfIndividualAnimals;\n } else if (filterRequestType === constants.option.requestType.death) {\n const numberOfBatchAnimalTotal = row.content.batchDetails.reduce((total, item) => {\n return total + item.animalTotal;\n }, 0);\n\n return numberOfBatchAnimalTotal + row.content.killedDevices?.length;\n }\n\n return null;\n };\n\n const runRequest = () => {\n if (!filterFromDate) {\n setFilterFromDate(threeMonthsAgo);\n }\n if (!filterToDate) {\n setFilterToDate(today);\n }\n\n storeService.session.set[`tableFilters${storeFilters}PageIndex`](0);\n storeService.session.remove[`tableFilters${storeFilters}SortBy`]();\n storeService.session.removeAll.searchResults();\n setData([]);\n\n setTableParams((prevState) => ({\n ...prevState,\n columns: tableColumns.userActivity[filterRequestType],\n filters: {\n requestType: filterRequestType,\n fromDate: filterFromDate,\n toDate: filterToDate\n },\n page: {\n ...prevState.page,\n index: 0\n },\n request: {\n ...prevState.request,\n params: {\n ...prevState.request.params,\n requestType: filterRequestType,\n fromDate: filterFromDate,\n toDate: filterToDate\n },\n processData: (data) => data.map((row) => ({\n ...row,\n requestType: filterRequestType,\n movementDocumentRef: filterRequestType === constants.option.requestType.movement ? row.content.movementDocument.movementDocumentRef : row.content.documentRef,\n status: row.isFullUndone ? constants.status.cancelled : row.requestStatus,\n taggingDate: taggingEventProperties(row).dateField,\n taggingQuantity: taggingEventProperties(row).quantity,\n notificationQuantity: getAnimalCount(row),\n deathQuantity: getAnimalCount(row)\n }))\n },\n sort: {\n by: initialSorting.userActivity[filterRequestType].accessor,\n direction: initialSorting.userActivity[filterRequestType].direction\n }\n }));\n setRenderTable(true);\n };\n\n useEffect(() => {\n if (loadPending || animalsAddedPending || !filterRequestType || fromDateError !== '' || toDateError !== '') {\n setSearchEnabled(false);\n } else {\n setSearchEnabled(true);\n }\n }, [\n loadPending,\n animalsAddedPending,\n filterRequestType,\n fromDateError,\n toDateError\n ]);\n\n useEffect(() => {\n if (filterRequestType) {\n setTableParams((prevState) => ({\n ...prevState,\n columns: tableColumns.userActivity[filterRequestType],\n request: {\n ...prevState.request,\n params: {\n ...prevState.request.params,\n requestType: filterRequestType,\n fromDate: filterFromDate,\n toDate: filterToDate\n },\n processData: (data) => data.map((row) => ({\n ...row,\n requestType: filterRequestType,\n movementDocumentRef: filterRequestType === constants.option.requestType.movement ? row.content.movementDocument.movementDocumentRef : row.content.documentRef,\n status: row.isFullUndone ? constants.status.cancelled : row.requestStatus,\n taggingDate: taggingEventProperties(row).dateField,\n taggingQuantity: taggingEventProperties(row).quantity,\n notificationQuantity: getAnimalCount(row),\n deathQuantity: getAnimalCount(row)\n }))\n }\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n if (sessionAnimalsAdded) {\n setAnimalsAddedPending(false);\n } else {\n bff\n .get('/userActivity', {\n cancelToken: source.token,\n params: {\n requestType: constants.option.requestType.animalsAdded,\n includeUndo: false,\n countOnly: true\n }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setAnimalsAddedPending)) {\n setAnimalsAddedPending(false);\n setRequestTypeOptions(getRequestTypeOptions(res.data && res.data.count > 0));\n storeService.session.set.animalsAdded(res.data && res.data.count > 0);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setAnimalsAddedPending(false);\n errors.BFF(error, setModal);\n }\n });\n }\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ready &&\n
    \n
    \n handleChanges.requestType(event.target.value)}\n optionList={requestTypeOptions}\n placeholder=\"prompt.pleaseSelect\"\n value={filterRequestType}\n />\n
    \n handleChanges.date(constants.flags.from, date)}\n setFromDateError={setFromDateError}\n setToDate={(date) => handleChanges.date(constants.flags.to, date)}\n setToDateError={setToDateError}\n submit={runRequest}\n submitDisabled={!searchEnabled}\n submitLabel=\"button.search\"\n toDate={filterToDate}\n toDateError={toDateError}\n />\n
    \n }\n \n );\n};\n\nUserActivityFilters.propTypes = {\n loadPending: PropTypes.bool.isRequired,\n setData: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setRenderTable: PropTypes.func.isRequired,\n setTableParams: PropTypes.func.isRequired,\n storeFilters: PropTypes.string.isRequired,\n tableParams: PropTypes.object.isRequired\n};\n\nexport default UserActivityFilters;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/table/pagination/pagination.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nconst sprintf = require('util').format;\n\nconst Pagination = ({\n columnsNumber,\n loadPending,\n location,\n numberOfPages,\n numberOfRecords,\n page,\n paginationParams,\n resultsLabel,\n setTableParams,\n store\n}) => {\n const { ready, t } = useTranslation();\n\n const [render, setRender] = React.useState({\n showingXofY: false,\n total: false,\n pageXofY: false,\n recordsPerPage: false\n });\n\n const componentClassNames = [\n 'tablePagination',\n loadPending ? classes.loadPending : ''\n ].join(' ').trim();\n\n const pageTotals = (index, size, numRecords) => {\n if (numRecords <= size) {\n return numRecords;\n }\n const totals = ((index + 1) * size);\n return sprintf(\n '%d - %s',\n (page.index * size) + 1,\n (totals > numRecords) ? numRecords : totals\n );\n };\n\n const jumpToPage = (pageIndex) => {\n setTableParams((prevState) => {\n let targetPage;\n\n if (pageIndex === 'prev') {\n targetPage = prevState.page.index - 1;\n } else if (pageIndex === 'next') {\n targetPage = prevState.page.index + 1;\n } else {\n targetPage = parseInt(pageIndex);\n }\n\n if (store?.filters) {\n storeService.session.set[`tableFilters${store.filters}PageIndex`](targetPage);\n }\n if (store?.data) {\n storeService.session.removeAll.searchResults();\n }\n\n return {\n ...prevState,\n newRequest: false,\n page: {\n ...prevState.page,\n index: targetPage\n }\n };\n });\n };\n\n useEffect(() => {\n let showingXofY;\n let total;\n let pageXofY;\n let recordsPerPage;\n\n if (\n !paginationParams?.[location]?.hideShowingXofY ||\n (\n paginationParams?.[location]?.hideShowingXofY &&\n numberOfRecords > page.size\n )\n ) {\n showingXofY = true;\n total = false;\n } else if (\n location === constants.pagination.bottom &&\n paginationParams?.[location]?.hideShowingXofY &&\n !paginationParams?.[location]?.hideTotal &&\n numberOfRecords <= page.size\n ) {\n showingXofY = false;\n total = true;\n }\n\n if (\n numberOfPages > 1 &&\n (\n !paginationParams?.[location]?.hidePageXofY ||\n numberOfRecords > page.size\n )\n ) {\n pageXofY = true;\n } else {\n pageXofY = false;\n }\n\n if (numberOfRecords > config.DEFAULT_TABLE_PAGE_SIZE && !paginationParams?.[location]?.hideRecordsPerPage) {\n recordsPerPage = true;\n } else {\n recordsPerPage = false;\n }\n\n setRender((prevState) => ({\n ...prevState,\n showingXofY,\n total,\n pageXofY,\n recordsPerPage\n }));\n\n }, [paginationParams, location, page, numberOfPages, numberOfRecords]);\n\n return (\n <>\n {ready && (render.showingXofY || render.total || render.pageXofY || render.recordsPerPage) &&\n \n \n
    \n
    \n {render.showingXofY &&\n <>\n {t('label.showing')}{' '}\n {pageTotals(page.index, page.size, numberOfRecords)}\n {' '}{t('label.of')}{' '}\n {numberOfRecords}\n {' '}{t(helpers.text.pluralCheck(numberOfRecords, resultsLabel ? resultsLabel : 'label.record'))}\n \n }\n\n {!render.showingXofY &&\n <>\n {paginationParams?.[location]?.totalLabel ? t(paginationParams[location].totalLabel) : t('label.total')}\n {' '}{paginationParams?.[location]?.total}\n \n }\n
    \n\n
    \n {render.pageXofY &&\n <>\n {numberOfRecords > page.size &&\n jumpToPage('prev')}\n type=\"button\"\n value={t('label.previous')}\n >\n \n {t('label.previous')}\n \n }\n\n
    \n {t('label.page')}\n jumpToPage(event.target.value)}\n value={page.index}\n >\n {Array.from(Array(numberOfPages).keys()).map((page) => )}\n \n {t('label.of') + ' ' + (numberOfPages > 0 ? numberOfPages : 1)}\n
    \n\n {numberOfRecords > page.size &&\n jumpToPage('next')}\n type=\"button\"\n value={t('label.next')}\n >\n \n {t('label.next')}\n \n }\n \n }\n
    \n\n
    \n {render.recordsPerPage &&\n <>\n \n setTableParams((prevState) => {\n if (store?.filters) {\n storeService.session.removeAll.searchResults();\n storeService.session.set[`tableFilters${store.filters}PageIndex`](0);\n storeService.session.set[`tableFilters${store.filters}PageSize`](Number(event.target.value));\n }\n\n return {\n ...prevState,\n newRequest: false,\n page: {\n index: 0,\n size: Number(event.target.value)\n }\n };\n })}\n value={page.size}\n >\n {t('label.resultsPage')}\n {[10, 20, 30, 40, 50].map((numberPerPage) => (\n \n ))}\n \n \n }\n
    \n
    \n \n \n }\n \n );\n};\n\nPagination.propTypes = {\n columnsNumber: PropTypes.number.isRequired,\n loadPending: PropTypes.bool,\n location: PropTypes.string,\n numberOfPages: PropTypes.number.isRequired,\n numberOfRecords: PropTypes.number.isRequired,\n page: PropTypes.exact({\n index: PropTypes.number.isRequired,\n size: PropTypes.number.isRequired\n }).isRequired,\n paginationParams: PropTypes.object,\n resultsLabel: PropTypes.string,\n setTableParams: PropTypes.func.isRequired,\n store: PropTypes.exact({\n filters: PropTypes.string,\n data: PropTypes.string\n })\n};\n\nexport default Pagination;\n","import React from 'react';\nimport classes from 'components/base/spinner/spinner.module.scss';\n\nconst Spinner = () => {\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n );\n};\n\nexport default Spinner;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport axios from 'axios';\nimport bff, { isCancel } from 'services/bff';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport Button from 'components/base/button/button';\nimport CustomTableAnimalActivity from 'components/table/customTable/customTableBoAnimalActivity/customTableBoAnimalActivity';\nimport CustomTableHoldingActivity from 'components/table/customTable/customTableBoHoldingActivity/customTableBoHoldingActivity';\nimport FiltersAnimalsOnHolding from 'components/table/filters/filtersAnimalsOnHolding/filtersAnimalsOnHolding';\nimport FiltersBoAnimalActivity from 'components/table/filters/filtersBoAnimalActivity/filtersBoAnimalActivity';\nimport FiltersBoHoldingActivity from 'components/table/filters/filtersBoHoldingActivity/filtersBoHoldingActivity';\nimport FiltersBoSearchMovements from 'components/table/filters/filtersBoSearchMovements/filtersBoSearchMovements';\nimport FiltersBoSearchRequestId from 'components/table/filters/filtersBoSearchRequestId/filtersBoSearchRequestId';\nimport FiltersBoUserActivity from 'components/table/filters/filtersBoUserActivity/filtersBoUserActivity';\nimport FiltersGatheringSearch from 'components/table/filters/filtersGatheringSearch/filtersGatheringSearch';\nimport FiltersHoldingRegister from 'components/table/filters/filtersHoldingRegister/filtersHoldingRegister';\nimport FiltersUserActivity from 'components/table/filters/filtersUserActivity/filtersUserActivity';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport Pagination from 'components/table/pagination/pagination';\nimport Spinner from 'components/base/spinner/spinner';\nimport { get, orderBy } from 'lodash';\nconst sprintf = require('util').format;\n\nconst Table = ({\n addAll,\n addAllAbove,\n classNames,\n clearAll,\n columnParams,\n columns,\n data,\n dataProvided,\n downloadPending,\n eventType,\n fetchingDataLabel,\n filtersComponents,\n generatePostCall,\n hideColumnHeaders,\n hidePagination,\n initialPageIndex,\n initialPageSize,\n initialSortBy,\n initialSortDirection,\n noDataIsError,\n noDataLabel,\n paginationParams,\n params,\n pending,\n refreshFilters,\n removeAll,\n removeAllAdded,\n removeAllInvalid,\n renderTable,\n rowLinks,\n searchState,\n setData,\n setDataProp,\n setDataTotal,\n setEventType,\n setModal,\n setRenderTable,\n store,\n title\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n const sessionFilters = store?.filters && storeService.session.get[`tableFilters${store.filters}`] ? storeService.session.get[`tableFilters${store.filters}`]() : null;\n\n let filteredSessionFilters;\n if (sessionFilters && Object.keys(sessionFilters).length > 0) {\n // eslint-disable-next-line no-unused-vars\n const { pageIndex, pageSize, sortBy, sortDirection, ...restOfSessionFilters } = sessionFilters;\n filteredSessionFilters = restOfSessionFilters;\n } else {\n filteredSessionFilters = params?.filters;\n }\n\n const [tableParams, setTableParams] = React.useState({\n columns: columns ? columns : [],\n filters: filteredSessionFilters ? filteredSessionFilters : {},\n page: {\n index: sessionFilters?.pageIndex ? sessionFilters.pageIndex : (initialPageIndex ? initialPageIndex : 0),\n size: sessionFilters?.pageSize ? sessionFilters.pageSize : (initialPageSize ? initialPageSize : config.DEFAULT_TABLE_PAGE_SIZE)\n },\n sort: {\n by: sessionFilters?.sortBy ? sessionFilters.sortBy : initialSortBy,\n direction: sessionFilters?.sortDirection ? sessionFilters.sortDirection : initialSortDirection\n },\n request: params?.request ? params.request : null\n });\n const [loadError, setLoadError] = React.useState(false);\n const [loadPending, setLoadPending] = React.useState(pending ? pending : (renderTable ? renderTable : true));\n const [numberOfRecords, setNumberOfRecords] = React.useState(0);\n const [numberOfPages, setNumberOfPages] = React.useState(0);\n const [resultsLabel, setResultsLabel] = React.useState('');\n const [externalCancelTokenSource, setExternalCancelTokenSource] = React.useState(axios.CancelToken.source());\n const [redirectWarningOrError, setRedirectWarningOrError] = React.useState({});\n\n const componentClassNames = [\n !loadPending && rowLinks && data.length > 0 ? 'clickable-rows' : '',\n loadPending && data.length > 0 ? 'loadPending' : '',\n !tableParams?.columns?.find((column) => column.sortable) ? 'not-sortable' : '',\n ...(classNames ? classNames : [])\n ].join(' ').trim();\n\n const tableRowLinks = {\n onRowClick: (row, event) => {\n if (\n !loadPending &&\n (event.target.tagName === 'TR' || event.target.tagName === 'TD' || (event.target.tagName === 'SPAN' && event.target.className !== 'buttonLabel')) &&\n rowLinks &&\n (rowLinks.linkIf === undefined || rowLinks.linkIf(row))\n ) {\n let rowData = {\n ...row\n };\n const url = rowLinks.url(row);\n\n if (rowLinks.state) {\n const state = rowLinks.state(row);\n\n if (state.data) {\n if (Array.isArray(state.data)) {\n rowData = get(row, state.data);\n } else {\n rowData = state.data;\n }\n } else {\n Object.keys(state).forEach((key) => {\n if (Array.isArray(state[key])) {\n rowData[key] = get(row, state[key]);\n } else {\n rowData[key] = state[key];\n }\n });\n }\n }\n\n if (rowLinks.onClick) {\n rowLinks.onClick(row);\n }\n\n if (url) {\n history.push({\n pathname: rowLinks.url(row) + (rowLinks.accessor ? row[rowLinks.accessor] : ''),\n state: {\n data: rowData,\n searchState\n }\n });\n }\n }\n },\n getHint: (row, cell) => {\n if (cell.hint && typeof cell.hint === 'function') {\n return cell.hint(get(row, cell.accessor));\n }\n\n if (rowLinks?.hint && typeof rowLinks.hint === 'function') {\n return rowLinks.hint(row);\n }\n\n return null;\n },\n\n getRowClassNames: (row, cells) => {\n return [\n row.className,\n helpers.tag.isInvalid(row) || helpers.tag.isInvalidExtended(row) || row.duplicates?.length > 0 ? 'invalid' : '',\n ...(rowLinks?.linkIf && typeof rowLinks.linkIf === 'function' && !rowLinks.linkIf(row) ? ['no-click'] : []),\n ...(\n (rowLinks?.hint && typeof rowLinks.hint === 'function' && rowLinks.hint(row)) ||\n (cells.find((cell) => cell.hint && typeof cell.hint === 'function'))\n ? ['has-hint']\n : []\n )\n ].join(' ').trim();\n }\n };\n\n const render = {\n actions: () => {\n return (\n \n \n {addAll && numberOfPages > 1 &&\n addAll(tableParams, setLoadPending, externalCancelTokenSource, setExternalCancelTokenSource)}\n />\n }\n\n {addAllAbove &&\n addAllAbove(data)}\n />\n }\n\n {removeAllInvalid && data.some((row) => helpers.tag.isInvalid(row) || helpers.tag.isInvalidExtended(row)) &&\n \n }\n\n {removeAllAdded && data.filter((item) => item.added).length > 0 &&\n item.added).length)}\n onClick={removeAllAdded}\n />\n }\n\n {removeAll &&\n \n }\n\n {clearAll && data.filter((item) => item.added).length > 0 &&\n \n }\n \n \n );\n },\n\n cell: (row, cell) => {\n if (cell.render) {\n return cell.render({ tableData: data, row, value: get(row, cell.accessor), t });\n }\n\n return get(row, cell.accessor);\n },\n\n customComponent: () => {\n if ((!tableParams.filters.useComponent || (Array.isArray(data) && data.length === 0) || (Object.keys(data).length === 0)) && !loadPending && !renderTable) {\n return '';\n }\n\n switch (tableParams.filters.useComponent) {\n case 'BoAnimalActivity':\n return (\n \n );\n\n case 'BoHoldingActivity':\n return (\n \n );\n\n default:\n return '';\n }\n },\n\n filters: (location) => {\n if (!filtersComponents) {\n return '';\n }\n\n switch (filtersComponents[location]) {\n case 'AnimalsOnHolding':\n return (\n \n );\n\n case 'BoAnimalActivity':\n return (\n 0) || Object.keys(data).length > 0}\n loadPending={loadPending}\n setData={setData}\n setRenderTable={setRenderTable}\n setTableParams={setTableParams}\n storeFilters={store?.filters}\n tableParams={tableParams}\n />\n );\n\n case 'BoHoldingActivity':\n return (\n 0) || Object.keys(data).length > 0}\n loadPending={loadPending}\n setData={setData}\n setModal={setModal}\n setRenderTable={setRenderTable}\n setTableParams={setTableParams}\n storeFilters={store?.filters}\n tableParams={tableParams}\n />\n );\n\n case 'BoSearchMovements':\n return (\n 0)}\n loadPending={loadPending}\n setData={setData}\n setRenderTable={setRenderTable}\n setTableParams={setTableParams}\n storeFilters={store?.filters}\n tableParams={tableParams}\n />\n );\n\n case 'BoSearchRequestId':\n return (\n \n );\n\n case 'BoUserActivity':\n return (\n 0) || Object.keys(data).length > 0}\n loadPending={loadPending}\n setData={setData}\n setModal={setModal}\n setRenderTable={setRenderTable}\n setTableParams={setTableParams}\n storeFilters={store?.filters}\n tableParams={tableParams}\n />\n );\n\n case 'GatheringSearch':\n return (\n \n );\n\n case 'HoldingRegister':\n return (\n \n );\n\n case 'UserActivity':\n return (\n \n );\n\n default:\n return '';\n }\n },\n\n header: () => {\n return (\n \n {tableParams.columns.map((cell, cellIndex) => {\n const cellClassNames = [\n ...(cell.classNames ? cell.classNames : []),\n cell.sortable ? 'sortable' : '',\n cell.sortable && tableParams.sort.by === (cell.sortColumn ? cell.sortColumn : cell.accessor) && tableParams.sort.direction === (cell.sortReverse ? constants.sorting.descending : constants.sorting.ascending) ? 'sort-asc' : '',\n cell.sortable && tableParams.sort.by === (cell.sortColumn ? cell.sortColumn : cell.accessor) && tableParams.sort.direction === (cell.sortReverse ? constants.sorting.ascending : constants.sorting.descending) ? 'sort-desc' : '',\n cell.sortable && tableParams.sort.by !== (cell.sortColumn ? cell.sortColumn : cell.accessor) ? 'sort-both' : ''\n ].join(' ').trim();\n\n return (\n \n {!cell.sortable &&\n <>\n {typeof cell.header === 'object' ? cell.header : t(cell.header)}\n \n }\n\n {cell.sortable &&\n setTableParams((prevState) => {\n const sb = cell.sortColumn ? cell.sortColumn : cell.accessor;\n const sd = prevState.sort.direction === constants.sorting.descending || prevState.sort.by !== (cell.sortColumn ? cell.sortColumn : cell.accessor) ? constants.sorting.ascending : constants.sorting.descending;\n\n if (store?.filters) {\n storeService.session.removeAll.searchResults();\n storeService.session.set[`tableFilters${store.filters}SortBy`](sb);\n storeService.session.set[`tableFilters${store.filters}SortDirection`](sd);\n }\n\n return {\n ...prevState,\n newRequest: false,\n sort: {\n by: sb,\n direction: sd\n }\n };\n })}\n >\n {typeof cell.header === 'object' ? cell.header : t(cell.header)}\n \n }\n \n );\n })}\n \n );\n },\n\n pagination: (location) => {\n return (\n \n );\n },\n\n row: (row, rowIndex) => {\n return (\n tableRowLinks.onRowClick(row, event)}\n onKeyPress={(event) => tableRowLinks.onRowClick(row, event)}\n role=\"row\"\n tabIndex={rowLinks ? '0' : null}\n >\n {tableParams.columns.map((cell, cellIndex) => {\n const cellClassNames = [\n ...(cell.classNames ? cell.classNames : [])\n ].join(' ').trim();\n\n return (\n \n {render.cell(row, cell)}\n \n );\n })}\n \n );\n },\n\n title: () => {\n if (!title) {\n return <>;\n }\n\n return (\n \n {typeof title === 'string' &&\n \n {t(title)}\n \n }\n {typeof title === 'object' &&\n \n }\n \n );\n }\n };\n\n const fetchData = (cancelToken) => {\n setLoadPending(true);\n setLoadError(false);\n\n bff\n .get(tableParams.request.url, {\n cancelToken,\n params: {\n ...tableParams.request.params,\n ...tableParams.filters,\n pageIndex: tableParams.page.index,\n pageSize: tableParams.page.size,\n sortBy: tableParams.sort.by,\n sortDirection: tableParams.sort.direction\n }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setLoadPending)) {\n if (tableParams.request.redirectTo && typeof tableParams.request.redirectTo === 'function') {\n const redirectTo = tableParams.request.redirectTo(res.data.data);\n\n if (redirectTo?.error) {\n setLoadPending(false);\n setRedirectWarningOrError({\n isWarning: false,\n message: redirectTo.error\n });\n } else if (redirectTo?.warning) {\n setLoadPending(false);\n setRedirectWarningOrError({\n isWarning: true,\n message: redirectTo.warning\n });\n } else if (redirectTo?.pathname) {\n history.push(redirectTo);\n }\n } else {\n setLoadPending(false);\n\n let dataToStore;\n\n if (tableParams.request.processData && typeof tableParams.request.processData === 'function') {\n dataToStore = tableParams.request.processData(res.data.data);\n } else {\n dataToStore = res.data.data;\n }\n\n setData(dataToStore);\n\n if (setDataTotal && typeof setDataTotal === 'function') {\n setDataTotal(res.data.count);\n }\n\n if (store?.data && storeService.session.set['searchResults' + store.data]) {\n storeService.session.set['searchResults' + store.data]({\n count: res.data.count ? res.data.count : res.data.data?.length,\n data: dataToStore\n });\n }\n\n if (res.data.count) {\n setNumberOfRecords(res.data.count);\n } else {\n setNumberOfRecords(res.data.data?.length);\n }\n setNumberOfPages(Math.ceil(res.data.count / tableParams.page.size));\n }\n } else {\n setLoadError(true);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setLoadPending(false);\n\n if (error?.response?.status === 404) {\n setNumberOfRecords(0);\n setNumberOfPages(0);\n setData([]);\n } else {\n errors.BFF(error, setModal);\n }\n }\n });\n };\n\n /* This method help to generate POST service call and bind response in the table with existing features */\n const fetchPostData = () => {\n setLoadPending(true);\n setLoadError(false);\n const postData = tableParams.request.postData;\n bff\n .post(tableParams.request.url, {\n postData,\n pageIndex: tableParams.page.index,\n pageSize: tableParams.page.size,\n sortBy: tableParams.sort.by,\n sortDirection: tableParams.sort.direction\n })\n .then((postResponse) => {\n setLoadPending(false);\n let postDataToStore;\n if (tableParams.request.processData && typeof tableParams.request.processData === 'function') {\n postDataToStore = tableParams.request.processData(postResponse.data.data);\n } else {\n postDataToStore = postResponse.data.data;\n }\n setData(postDataToStore);\n\n if (store?.data && storeService.session.set['searchResults' + store.data]) {\n storeService.session.set['searchResults' + store.data]({\n count: postResponse.data.count ? postResponse.data.count : postResponse.data.data?.length,\n data: postDataToStore\n });\n }\n\n if (postResponse.data.count) {\n setNumberOfRecords(postResponse.data.count);\n } else {\n setNumberOfRecords(postResponse.data.data?.length);\n }\n setNumberOfPages(Math.ceil(postResponse.data.count / tableParams.page.size));\n\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setLoadPending(false);\n if (error?.response?.status === 404) {\n setNumberOfRecords(0);\n setNumberOfPages(0);\n setData([]);\n } else {\n errors.BFF(error, setModal);\n }\n }\n });\n };\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n const sessionData = store?.data && storeService.session.get[`searchResults${store.data}`] ? storeService.session.get[`searchResults${store.data}`]() : null;\n\n if (sessionData) {\n setNumberOfRecords(sessionData.count);\n setNumberOfPages(Math.ceil(sessionData.count / tableParams.page.size));\n\n if (setData && typeof setData === 'function') {\n setData(sessionData.data);\n if (setRenderTable && typeof setData === 'function') {\n setRenderTable(true);\n }\n }\n setLoadPending(false);\n } else if ((!dataProvided || tableParams.newRequest) && (renderTable || renderTable === undefined) && (!eventType?.current || (eventType?.current && tableParams.request.params.eventType))) {\n fetchData(source.token);\n } else if (generatePostCall) {\n fetchPostData();\n } else if (setData && typeof setData === 'function') {\n let sortedRecords = [];\n\n setData((prevState) => {\n if (setDataProp) {\n if (typeof setDataProp === 'string') {\n sortedRecords = helpers.sortArrayOfObjects(prevState[setDataProp], tableParams.sort.by, tableParams.sort.direction);\n\n if (store?.data && storeService.session.set[`searchResults${store.data}`]) {\n storeService.session.set[`searchResults${store.data}`]({\n count: sortedRecords?.length,\n data: sortedRecords\n });\n }\n\n return {\n ...prevState,\n [setDataProp]: sortedRecords\n };\n } else if (typeof setDataProp === 'object') {\n sortedRecords = helpers.sortArrayOfObjects(prevState[setDataProp.index][setDataProp.prop], tableParams.sort.by, tableParams.sort.direction);\n\n if (store?.data && storeService.session.set[`searchResults${store.data}`]) {\n storeService.session.set[`searchResults${store.data}`]({\n count: sortedRecords?.length,\n data: sortedRecords\n });\n }\n\n const returnArray = [];\n returnArray.splice(setDataProp.index, 0, {\n ...prevState[setDataProp.index],\n [setDataProp.prop]: sortedRecords\n });\n\n return returnArray;\n }\n }\n\n if (prevState?.length > 0) {\n sortedRecords = orderBy(prevState, tableParams.sort.by, tableParams.sort.direction);\n\n if (store?.data && storeService.session.set[`searchResults${store.data}`]) {\n storeService.session.set[`searchResults${store.data}`]({\n count: sortedRecords?.length,\n data: sortedRecords\n });\n }\n\n return sortedRecords;\n }\n\n return prevState;\n });\n\n setNumberOfRecords(sortedRecords?.length);\n setNumberOfPages(Math.ceil(sortedRecords?.length / tableParams.page.size));\n\n setLoadPending(false);\n } else {\n setNumberOfRecords(data.length);\n setNumberOfPages(Math.ceil(data.length / tableParams.page.size));\n setLoadPending(false);\n }\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tableParams]);\n\n useEffect(() => {\n if (renderTable && params?.request?.params) {\n setTableParams((prevState) => ({\n ...prevState,\n request: {\n ...prevState.request,\n params: params.request.params\n }\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [renderTable]);\n\n useEffect(() => {\n if (dataProvided) {\n const numRecords = data?.length;\n const numPages = numRecords ? Math.ceil(data?.length / tableParams.page.size) : 1;\n\n setNumberOfRecords(numRecords);\n setNumberOfPages(numPages);\n\n if (numRecords > 0 && numRecords % tableParams.page.size === 0 && tableParams.page.index === numPages) {\n setTableParams((prevState) => ({\n ...prevState,\n page: {\n ...prevState.page,\n index: prevState.page.index - 1\n }\n }));\n } else if (numRecords < tableParams.page.size && tableParams.page.index > 0) {\n setTableParams((prevState) => ({\n ...prevState,\n page: {\n ...prevState.page,\n index: 0\n }\n }));\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data]);\n\n useEffect(() => {\n return () => externalCancelTokenSource.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ready &&\n <>\n {render.filters(constants.filters.outside)}\n\n {(renderTable || renderTable === undefined || generatePostCall) && !tableParams.filters.useComponent &&\n <>\n {data?.length === 0 && !filtersComponents &&\n <>\n {loadError &&\n \n }\n {!loadError &&\n <>\n {loadPending &&\n \n }\n\n {!loadPending &&\n \n }\n \n }\n \n }\n\n {(data?.length > 0 || (data.length === 0 && filtersComponents)) &&\n
    \n {(downloadPending || loadPending) && data.length > 0 &&\n
    \n \n
    \n }\n\n \n \n {render.title()}\n {filtersComponents?.[constants.filters.inside] &&\n \n \n \n }\n {!hidePagination && data.length > 0 && render.pagination(constants.pagination.top)}\n {!hideColumnHeaders && data.length > 0 && render.header()}\n \n\n \n {data.length === 0 &&\n \n \n \n }\n\n {dataProvided &&\n <>\n {hidePagination && data.map((row, index) => {\n return render.row(row, index);\n })}\n\n {!hidePagination && data.slice(\n tableParams.page.index * tableParams.page.size,\n (tableParams.page.index * tableParams.page.size) + tableParams.page.size\n ).map((row, index) => {\n return render.row(row, index);\n })}\n \n }\n\n {!dataProvided && data.map((row, index) => {\n return render.row(row, index);\n })}\n \n\n \n {data.length > 0 &&\n (addAllAbove || clearAll || removeAll || removeAllAdded || (removeAllInvalid && data.some((item) => helpers.tag.isInvalid(item)))) &&\n render.actions()\n }\n\n {!hidePagination && data.length > 0 && render.pagination(constants.pagination.bottom)}\n \n
    \n {render.filters(constants.filters.inside)}\n
    \n {loadPending &&\n \n }\n {!loadPending &&\n <>\n {redirectWarningOrError?.message &&\n \n }\n\n {!redirectWarningOrError?.message &&\n \n }\n \n }\n
    \n
    \n }\n \n }\n\n {render.customComponent()}\n \n }\n \n );\n};\n\nTable.propTypes = {\n addAll: PropTypes.func,\n addAllAbove: PropTypes.func,\n classNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n clearAll: PropTypes.func,\n columnParams: PropTypes.object,\n columns: PropTypes.array,\n data: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.object\n ]).isRequired,\n dataProvided: PropTypes.bool,\n downloadPending: PropTypes.bool,\n eventType: PropTypes.object,\n fetchingDataLabel: PropTypes.string,\n filtersComponents: PropTypes.exact({\n [constants.filters.outside]: PropTypes.string,\n [constants.filters.inside]: PropTypes.string\n }),\n generatePostCall: PropTypes.bool,\n hideColumnHeaders: PropTypes.bool,\n hidePagination: PropTypes.bool,\n initialPageIndex: PropTypes.number,\n initialPageSize: PropTypes.number,\n initialSortBy: PropTypes.string,\n initialSortDirection: PropTypes.oneOf([\n constants.sorting.ascending,\n constants.sorting.descending\n ]),\n noDataIsError: PropTypes.bool,\n noDataLabel: PropTypes.string,\n paginationParams: PropTypes.object,\n params: PropTypes.object,\n pending: PropTypes.bool,\n refreshFilters: PropTypes.object,\n removeAll: PropTypes.func,\n removeAllAdded: PropTypes.func,\n removeAllInvalid: PropTypes.func,\n renderTable: PropTypes.bool,\n rowLinks: PropTypes.object,\n searchState: PropTypes.object,\n setData: PropTypes.func,\n setDataProp: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.exact({\n index: PropTypes.number,\n prop: PropTypes.string\n })\n ]),\n setDataTotal: PropTypes.func,\n setEventType: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n setRenderTable: PropTypes.func,\n store: PropTypes.exact({\n filters: PropTypes.string,\n data: PropTypes.string\n }),\n title: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object\n ])\n};\n\nexport default Table;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/animalSummary/animalSummary.module.scss';\nimport constants from 'services/constants';\nimport he from 'he';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport Table from 'components/table/table';\n\nconst AnimalSummary = ({\n batches,\n batchesRejected,\n extraData,\n hideAnimalDetails,\n individualAnimals,\n individualAnimalsRejected,\n isReviewedAndRejected,\n noBottomBorder,\n printing,\n requestType,\n setBatches,\n setBatchesRejected,\n setIndividualAnimals,\n setIndividualAnimalsRejected,\n setModal,\n totalAnimals\n}) => {\n const { ready, t } = useTranslation();\n\n const species = storeService.session.get.species();\n const speciesId = species ? species.id : '';\n const recentDetailsLabel = extraData ? 'recentDetails.' + extraData.gender : '';\n\n const [totalIndividualAnimals, setTotalIndividualAnimals] = React.useState(0);\n const [totalIndividualAnimalsRejected, setTotalIndividualAnimalsRejected] = React.useState(0);\n const [totalBatchAnimals, setTotalBatchAnimals] = React.useState(0);\n const [totalBatchAnimalsRejected, setTotalBatchAnimalsRejected] = React.useState(0);\n const [paginationParams, setPaginationParams] = React.useState({\n batch: {\n ...constants.pagination.defaultParams,\n [constants.pagination.bottom]: {\n ...constants.pagination.defaultParams[constants.pagination.bottom],\n totalLabel: 'label.totalBatches'\n }\n },\n batchRejected: {\n ...constants.pagination.defaultParams,\n [constants.pagination.bottom]: {\n ...constants.pagination.defaultParams[constants.pagination.bottom],\n totalLabel: 'label.totalBatches'\n }\n },\n individual: constants.pagination.defaultParams,\n individualRejected: constants.pagination.defaultParams\n });\n\n const componentClassNames = [\n classes.animalCount,\n noBottomBorder ? classes.noBottomBorder : ''\n ].join(' ').trim();\n\n const content = {\n [constants.option.requestType.animalsAdded]: {\n totalIndividualAnimals: 'recentDetails.totalAnimalsAdded'\n },\n [constants.option.requestType.birth]: {\n totalAnimals: 'recentDetails.totalAnimalsBorn',\n totalBatchAnimals: 'recentDetails.totalBatchAnimals',\n totalIndividualAnimals: 'recentDetails.totalIndividualAnimals'\n },\n [constants.option.requestType.correctTransfer]: {\n totalAnimals: 'recentDetails.totalAnimalsMoved',\n totalBatchAnimals: 'recentDetails.totalBatchAnimals',\n totalIndividualAnimals: 'recentDetails.totalIndividualAnimals'\n },\n [constants.option.requestType.death]: {\n totalAnimals: 'recentDetails.totalAnimalsDied',\n totalBatchAnimals: 'recentDetails.totalBatchAnimals',\n totalIndividualAnimals: 'recentDetails.totalIndividualAnimals'\n },\n [constants.option.requestType.movement]: {\n totalAnimals: 'recentDetails.totalAnimalsMoved',\n totalBatchAnimals: 'recentDetails.totalBatchAnimals',\n totalIndividualAnimals: 'recentDetails.totalIndividualAnimals',\n totalAnimalsRejected: 'recentDetails.totalAnimalsRejected',\n totalBatchAnimalsRejected: 'recentDetails.totalBatchAnimalsRejected',\n totalIndividualAnimalsRejected: 'recentDetails.totalIndividualAnimalsRejected'\n },\n [constants.option.requestType.movementHandshake]: {\n totalAnimals: 'recentDetails.totalAnimalsAccepted',\n totalBatchAnimals: 'recentDetails.totalBatchAnimalsAccepted',\n totalIndividualAnimals: 'recentDetails.totalIndividualAnimalsAccepted',\n totalAnimalsRejected: 'recentDetails.totalAnimalsRejected',\n totalBatchAnimalsRejected: 'recentDetails.totalBatchAnimalsRejected',\n totalIndividualAnimalsRejected: 'recentDetails.totalIndividualAnimalsRejected'\n },\n [constants.option.requestType.paperMovementAdd]: {\n totalAnimals: 'recentDetails.totalAnimalsMoved',\n totalBatchAnimals: 'recentDetails.totalBatchAnimals',\n totalIndividualAnimals: 'recentDetails.totalIndividualAnimals'\n },\n [constants.option.requestType.paperMovementEdit]: {\n totalAnimals: 'recentDetails.totalAnimalsMoved',\n totalBatchAnimals: 'recentDetails.totalBatchAnimals',\n totalIndividualAnimals: 'recentDetails.totalIndividualAnimals'\n },\n [constants.option.requestType.tagApplication]: {\n totalAnimals: 'recentDetails.totalAnimalsTaggedRegistered',\n totalBatchAnimals: 'recentDetails.totalBatchAnimals',\n totalIndividualAnimals: 'recentDetails.totalIndividualAnimals'\n },\n [constants.option.requestType.tagReplacement]: {\n totalAnimals: 'recentDetails.totalAnimalsTagged',\n totalBatchAnimals: 'recentDetails.totalBatchAnimalsReplaced',\n totalIndividualAnimals: 'recentDetails.totalIndividualAnimalsReplaced'\n }\n };\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n batch: {\n ...prevState.batch,\n [constants.pagination.bottom]: {\n ...prevState.batch[constants.pagination.bottom],\n total: batches?.length\n }\n }\n }));\n\n setTotalBatchAnimals(batches?.reduce((total, item) => total + parseInt(item.animalTotal), 0));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [batches]);\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n batchRejected: {\n ...prevState.batchRejected,\n [constants.pagination.bottom]: {\n ...prevState.batchRejected[constants.pagination.bottom],\n total: batchesRejected?.length\n }\n }\n }));\n\n setTotalBatchAnimalsRejected(batchesRejected?.reduce((total, item) => total + parseInt(item.animalTotal), 0));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [batchesRejected]);\n\n useEffect(() => {\n const total = individualAnimals?.length;\n\n setPaginationParams((prevState) => ({\n ...prevState,\n individual: {\n ...prevState.individual,\n [constants.pagination.bottom]: {\n ...prevState.individual[constants.pagination.bottom],\n total\n }\n }\n }));\n\n setTotalIndividualAnimals(total);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [individualAnimals]);\n\n useEffect(() => {\n const total = individualAnimalsRejected?.length;\n\n setPaginationParams((prevState) => ({\n ...prevState,\n individualRejected: {\n ...prevState.individualRejected,\n [constants.pagination.bottom]: {\n ...prevState.individualRejected[constants.pagination.bottom],\n total\n }\n }\n }));\n\n setTotalIndividualAnimalsRejected(total);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [individualAnimalsRejected]);\n\n return (\n <>\n {ready &&\n <>\n {((totalBatchAnimals > 0 || totalIndividualAnimals > 0) && !isReviewedAndRejected) &&\n
    \n {!helpers.option.requestType.isAnimalsAdded(requestType) &&\n <>\n
    \n
    {t(isReviewedAndRejected ? content[constants.option.requestType.movementHandshake]?.totalAnimalsRejected : content[requestType]?.totalAnimals)}
    \n
    {totalBatchAnimals + totalIndividualAnimals}
    \n
    \n\n {totalBatchAnimals > 0 && !hideAnimalDetails &&\n total + parseInt(item.animalTotal), 0), 'table.title.batches'),\n data: [\n batches?.reduce((total, item) => total + parseInt(item.animalTotal), 0)\n ]\n }}\n />\n }\n \n }\n\n {!hideAnimalDetails &&\n <>\n {totalIndividualAnimals > 0 &&\n \n }\n \n }\n
    \n }\n\n {(helpers.option.requestType.isMovementHandshake(requestType) || isReviewedAndRejected) &&\n (totalBatchAnimalsRejected > 0 || (totalIndividualAnimalsRejected + totalBatchAnimalsRejected) > 0) &&\n
    \n
    \n
    {t(content[requestType].totalAnimalsRejected)}
    \n
    {totalIndividualAnimalsRejected + totalBatchAnimalsRejected}
    \n
    \n\n {totalBatchAnimalsRejected > 0 &&\n total + parseInt(item.animalTotal), 0), 'table.title.batchesRejected'),\n data: [\n batchesRejected?.reduce((total, item) => total + parseInt(item.animalTotal), 0)\n ]\n }}\n />\n }\n\n {totalIndividualAnimalsRejected > 0 &&\n \n }\n
    \n }\n\n {helpers.option.requestType.isTagApplication(requestType) && extraData &&\n (extraData.dob || extraData.breed || extraData.gender || extraData.genotype) &&\n
    \n {extraData.dob &&\n
    \n
    {extraData.dob.toString().length === 4 ? t('label.yearOfBirth') : t('recentDetails.dateOfBirth')}
    \n
    {extraData.dob}
    \n
    \n }\n {extraData.breed &&\n
    \n
    {t('recentDetails.breed')}
    \n
    {extraData.breed}
    \n
    \n }\n {extraData.gender &&\n
    \n
    {t('recentDetails.gender')}
    \n
    {t(recentDetailsLabel)}
    \n
    \n }\n {extraData.genotype &&\n
    \n
    {t('recentDetails.genotype')}
    \n
    {extraData?.genotype ? he.decode(extraData.genotype) : ''}
    \n
    \n }\n
    \n }\n\n {totalBatchAnimals === 0 && totalIndividualAnimals === 0 && totalAnimals > 0 &&\n
    \n
    \n
    {t(content[requestType]?.totalAnimals)}
    \n
    {totalAnimals}
    \n
    \n
    \n }\n \n }\n \n );\n};\n\nAnimalSummary.propTypes = {\n batches: PropTypes.array,\n batchesRejected: PropTypes.array,\n extraData: PropTypes.object,\n hideAnimalDetails: PropTypes.bool,\n individualAnimals: PropTypes.array,\n individualAnimalsRejected: PropTypes.array,\n noBottomBorder: PropTypes.bool,\n printing: PropTypes.bool,\n requestType: PropTypes.number,\n setBatches: PropTypes.func,\n setBatchesRejected: PropTypes.func,\n setIndividualAnimals: PropTypes.func,\n setIndividualAnimalsRejected: PropTypes.func,\n setModal: PropTypes.func.isRequired\n};\n\nexport default AnimalSummary;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport { bffStatus } from 'services/bff';\nimport classes from 'components/base/confirmation/confirmation.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport permissionsHelper from 'services/permissions';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport navigation from 'services/navigation';\nimport Button from 'components/base/button/button';\nimport Linker from 'components/base/linker/linker';\nimport PDFButton from 'components/pdfButton/pdfButton';\nconst sprintf = require('util').format;\n\nconst checkIcon = 'bi bi-check-circle ' + classes.icon;\nconst crossIcon = 'bi bi-x-circle ' + classes.icon;\nconst hourGlassIcon = 'bi bi-hourglass ' + classes.icon;\n\nconst displayHtml = (className, content) =>

    ;\n\nconst clearSession = () => {\n storeService.session.removeAll.birth();\n storeService.session.removeAll.death();\n storeService.session.removeAll.missingAndFound();\n storeService.session.removeAll.movement();\n storeService.session.removeAll.tagApplication();\n storeService.session.removeAll.tagReplacement();\n};\n\nconst hasReference = (confirm) => confirm && confirm.id && confirm.label;\n\nconst displayLinkContents = (label, onClick) => {\n const contentsMatch = label.match(new RegExp('(.*)'));\n\n if (contentsMatch) {\n const stringParts = label.split(contentsMatch[0]);\n\n return [\n stringParts[0],\n ,\n stringParts[1]\n ];\n }\n\n return [\n label\n ];\n};\n\nconst Confirmation = ({\n buttons,\n confirm,\n content,\n errors,\n isUnamendable,\n label,\n links,\n setModal,\n specificErrorLabel,\n status,\n warnings\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const [isBackButtonClicked, setBackButtonPress] = React.useState(false);\n\n const onBackButtonEvent = (event) => {\n event.preventDefault();\n if (!isBackButtonClicked) {\n setBackButtonPress(true);\n window.location.href = navigation.home();\n } else {\n window.history.pushState(null, null, window.location.pathname);\n setBackButtonPress(false);\n }\n };\n\n const specificErrorCode = helpers.error.amendResponseError(errors);\n const isUndoMovementErrorCode = helpers.error.isUndoMovementErrorCode(errors);\n const isKeeper = permissionsHelper.isKeeper();\n\n const isCancellationPending =\n label.toLowerCase().includes('cancellation') &&\n (constants.status.pending === status ||\n constants.status.claPending === status);\n\n const isCancellationError =\n label.toLowerCase().includes('cancellation') &&\n constants.status.completed_error === status;\n\n const referenceNumber =\n label.toLowerCase().includes('movement') && confirm?.movementReference\n ? confirm?.movementReference\n : confirm?.id;\n\n if (!status ||\n bffStatus.isSuccess(status) ||\n (isKeeper && bffStatus.isCompletedError(status)) ||\n (isKeeper && bffStatus.isCompletedWarning(status)) ||\n bffStatus.isClaPending(status)\n ) {\n clearSession();\n }\n\n const display = {\n content: (label, onClick) => (\n

    \n {onClick &&\n

    \n {displayLinkContents(t(label), onClick).map((item) => item)}\n

    \n }\n {!onClick && displayHtml(classes.parsedHtml, t(label))}\n
    \n ),\n\n messages: (messages, className) => {\n if (specificErrorCode) {\n return displayHtml(classes.messages + ' ' + className,\n sprintf(t(specificErrorLabel ? specificErrorLabel : 'error.amendMovementError'), specificErrorCode));\n }\n\n const newMessages = helpers.error.consolidate(messages);\n\n return (\n <>\n {newMessages &&\n
      \n {newMessages.map((error) => (\n
    • {error.code}{': '}{helpers.error.mapping(error.message)}
    • \n ))}\n
    \n }\n \n );\n },\n\n getReference: () => {\n if (confirm?.id && (confirm.id !== 'undefined' || confirm.movementReference !== 'undefined') && !(isCancellationError || isCancellationPending)) {\n let reference = null;\n if (confirm.label) {\n const content = confirm.label.includes('label.') ? t(confirm.label) : confirm.label;\n\n if (content.includes('%s') || content.includes('%d')) {\n reference = sprintf(content, referenceNumber);\n } else {\n reference = sprintf('%s %d', content, referenceNumber);\n }\n } else {\n reference = sprintf('%s %d', t('label.movementRef'), referenceNumber);\n }\n reference = ' - ' + reference;\n\n return confirm.onClick ? displayLinkContents(reference, confirm.onClick) : reference;\n }\n return null;\n },\n\n statusAndMovementRef: (withCheckIcon, labelWithReference, labelWithoutReference, statusClass, statusLabel) => {\n const reference = display.getReference();\n\n return (\n
    \n {withCheckIcon === true && ()}\n {withCheckIcon === false && ()}\n {t(label)}{reference}\n {confirm?.contents?.length > 0 &&\n confirm.contents.map((content, index) =>

    {t(content)}

    )\n }\n {((confirm?.id && confirm?.label) || status) && (!specificErrorCode) &&\n
    \n {statusLabel && statusClass && !(isCancellationError || isCancellationPending) &&\n {t(statusLabel)}\n }\n {!statusLabel && status && withCheckIcon !== false &&\n {t('label.status-' + status)}\n }\n
    \n }\n {labelWithoutReference !== null &&\n displayHtml(classes.normal, t(reference ? labelWithReference : labelWithoutReference))\n }\n
    \n );\n },\n\n status: {\n completedError: () => (\n
    \n {display.statusAndMovementRef(false,\n confirm?.content ? confirm.content : 'label.movementPartialErrorContent',\n confirm?.content ? confirm.content : isCancellationError || isCancellationPending ? '' : null,\n classes.errorWarning,\n 'label.confirm-Errors'\n )\n }\n {display.messages(errors, classes.error)}\n {confirm?.footer?.label\n ? display.content(confirm.footer.label, confirm.footer.onClick)\n : displayHtml(\n classes.normal,\n t(hasReference(confirm)\n ? isUnamendable\n ? 'label.notAmendablePartialErrorFooter'\n : isCancellationError || isCancellationPending\n ? `${t(confirm.label)} ${referenceNumber} ${t('label.cancellationErrorFooter')}`\n : (specificErrorCode !== '14104' && isUndoMovementErrorCode === '4076') ? 'label.movementPartialErrorCustomerSupport' : 'label.movementPartialErrorFooter'\n : 'label.movementErrorFooter'\n )\n )\n }\n
    \n ),\n\n completedErrorAndWarning: () => (\n
    \n {display.statusAndMovementRef(false,\n confirm?.content ? confirm.content : 'label.movementPartialErrorContent',\n confirm?.content ? confirm.content : isCancellationError || isCancellationPending ? '' : 'label.movementErrorContent',\n classes.errorWarning,\n 'label.confirm-Errors'\n )\n }\n {display.messages(errors, classes.error)}\n\n
    \n {t('label.confirm-Warnings')}\n
    \n {displayHtml(classes.errorWarning, t('label.movementWarningContent'))}\n {display.messages(warnings, classes.errorWarning)}\n {confirm?.footer?.label\n ? display.content(confirm.footer.label, confirm.footer.onClick)\n : displayHtml(\n classes.normal,\n t(hasReference(confirm)\n ? isUnamendable\n ? 'label.notAmendablePartialErrorFooter'\n : isCancellationError || isCancellationPending\n ? `${t(confirm.label)} ${referenceNumber} ${t('label.cancellationErrorFooter')}`\n : 'label.movementPartialErrorFooter'\n : 'label.movementErrorFooter'\n )\n )\n }\n
    \n ),\n\n completedWarning: () => (\n
    \n {display.statusAndMovementRef(true,\n confirm?.content ? confirm.content : 'label.movementWarningContent',\n confirm?.content ? confirm.content : 'label.movementWarningContent',\n classes.warning,\n 'label.confirm-Warnings')\n }\n {display.messages(warnings, classes.warning)}\n {confirm?.footer?.label\n ? display.content(confirm.footer.label, confirm.footer.onClick)\n : displayHtml(\n classes.normal,\n t(\n isUnamendable\n ? 'label.notAmendableWarningFooter'\n : 'label.movementWarningFooter'\n )\n )\n }\n
    \n ),\n\n error: () => (\n
    \n

    \n \n {t(label)}\n

    \n\n {confirm && confirm.id &&\n
    \n {t('label.id')} {display.getReference()}\n
    \n }\n\n {display.messages(errors, classes.error)}\n
    \n ),\n\n pending: () => (\n
    \n

    \n \n {isCancellationError || isCancellationPending ? displayLinkContents(t(label), content.onClick) : t(label)}\n

    \n {!(isCancellationError || isCancellationPending) &&
    \n {t('label.pleaseWait')}\n
    }\n
    \n ),\n\n polling: () => (\n
    \n

    \n \n {isCancellationError || isCancellationPending || content?.onClick ? displayLinkContents(t(label), content.onClick) : t(label)}\n

    \n {!(isCancellationError || isCancellationPending) &&\n
    \n {displayLinkContents(t('label.submissionPendingCheckViaUserActivity'), confirm.onClick)}\n
    \n }\n
    \n ),\n\n success: () => (\n
    \n

    \n \n {t(label)}\n {confirm && confirm.id && confirm.label &&\n {display.getReference()}\n }\n

    \n\n {((confirm && confirm.id && confirm.label) || status) &&\n
    \n {confirm?.content &&\n

    {t(confirm.content)}

    \n }\n\n {status && confirm?.content !== 'label.submissionPendingCheckLater' && !confirm?.isUndo &&\n {t('label.statusSuccess')}\n }\n {confirm?.footer?.label && display.content(confirm.footer.label, confirm.footer.onClick)}\n
    \n }\n
    \n )\n },\n\n link: {\n list: (linkers) => {\n return linkers.map((link, index) => {\n if (link.type === constants.linkTypes.pdfButton) {\n return display.link.toViewPDF(link, index);\n } else if (link.type === constants.linkTypes.url) {\n return display.link.toUrl(link, index);\n }\n\n return null;\n });\n },\n\n toViewPDF: (link, index) => (\n link?.param?.movementRef\n ?
    \n \n
    \n : null\n ),\n\n toUrl: (link, index) => (\n
    \n \n
    \n )\n },\n\n buttons: (buttons) => {\n const result = buttons.map((button, index) => (\n
    \n \n
    \n ));\n\n return <>{result};\n }\n };\n\n React.useEffect(() => {\n helpers.scrollToTop();\n window.history.pushState(null, null, window.location.pathname);\n window.addEventListener('popstate', onBackButtonEvent);\n\n return () => {\n window.removeEventListener('popstate', onBackButtonEvent);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n const unListen = history.listen((path) => {\n if (\n (path.pathname.substring(0, Routing.movementsConfirm.length) !== Routing.movementsConfirm)\n ) {\n clearSession();\n unListen();\n }\n });\n }, [history]);\n\n return (\n <>\n {ready &&\n <>\n {status &&\n <>\n {bffStatus.isPending(status) && display.status.pending()}\n {bffStatus.isClaPending(status) && display.status.polling()}\n {(bffStatus.isCompletedError(status)) && warnings?.length > 0 && display.status.completedErrorAndWarning()}\n {(bffStatus.isCompletedError(status)) && (warnings?.length === 0 || !warnings) && display.status.completedError()}\n {(bffStatus.isCompletedWarning(status)) && display.status.completedWarning()}\n {bffStatus.isError(status) && display.status.error()}\n \n }\n\n {(!status || bffStatus.isSuccess(status)) && display.status.success()}\n\n {content && content.label && !isCancellationPending && display.content(content.label, content.onClick)}\n\n
    \n {buttons && display.buttons(buttons)}\n {links && display.link.list(links)}\n
    \n \n }\n \n );\n};\n\nConfirmation.propTypes = {\n buttons: PropTypes.arrayOf(\n PropTypes.exact({\n id: PropTypes.string,\n label: PropTypes.string,\n onClick: PropTypes.func\n })\n ),\n confirm: PropTypes.exact({\n id: PropTypes.string,\n isUndo: PropTypes.bool,\n label: PropTypes.string,\n movementReference: PropTypes.string,\n content: PropTypes.string,\n footer: PropTypes.exact({\n label: PropTypes.string,\n onClick: PropTypes.func\n }),\n onClick: PropTypes.func\n }),\n content: PropTypes.exact({\n label: PropTypes.string,\n onClick: PropTypes.func\n }),\n errors: PropTypes.arrayOf(\n PropTypes.exact({\n code: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n message: PropTypes.string,\n target: PropTypes.string\n })\n ),\n isUnamendable: PropTypes.bool,\n label: PropTypes.string.isRequired,\n links: PropTypes.oneOfType([\n PropTypes.arrayOf(\n PropTypes.exact({\n label: PropTypes.string,\n param: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.object\n ]),\n type: PropTypes.oneOf([\n constants.linkTypes.pdfButton,\n constants.linkTypes.url\n ]),\n movementDocumentRef: PropTypes.string,\n requestType: PropTypes.number\n })\n ),\n PropTypes.arrayOf(\n PropTypes.exact({\n label: PropTypes.string,\n param: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n type: PropTypes.oneOf([\n constants.linkTypes.pdfButton,\n constants.linkTypes.url\n ])\n })\n )\n ]),\n setModal: PropTypes.func.isRequired,\n specificErrorLabel: PropTypes.string,\n status: PropTypes.oneOf([\n constants.status.claPending,\n constants.status.completed_error,\n constants.status.completed_warning,\n constants.status.error,\n constants.status.pending,\n constants.status.processErrors,\n constants.status.success\n ]).isRequired,\n warnings: PropTypes.arrayOf(\n PropTypes.exact({\n code: PropTypes.string,\n message: PropTypes.string,\n target: PropTypes.string\n })\n )\n};\n\nexport default Confirmation;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/summary/dateSummary/dateSummary.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport Button from 'components/base/button/button';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport InputDate from 'components/base/inputDate/inputDate';\n\nconst DateSummary = ({\n confirmMode,\n date1,\n date2,\n date2Error,\n label,\n maxDate,\n onClick,\n restrictArrivalDate,\n setDate2,\n setDate2Error,\n showBothDates\n}) => {\n const { ready, t } = useTranslation();\n\n let dateString;\n if (date1 && date1.entryDay && date1.entryMonth && date1.entryYear) {\n dateString = moment().year(date1.entryYear).month(date1.entryMonth - 1).date(date1.entryDay);\n } else if (date1) {\n dateString = date1;\n }\n\n const validate = {\n arrivalDate: (date) => {\n if (date) {\n setDate2Error('');\n const error = helpers.date.is.sameDayOrNextDay(date, date1)\n ? ''\n : 'error.arrivalDateInTheFuture';\n setDate2Error(error ? error : '');\n }\n }\n };\n\n const getDates = {\n arrivalDateMin: () => {\n return helpers.date.formatYYYYMMDD(date1);\n },\n\n arrivalDateMax: () => {\n if (restrictArrivalDate) {\n return helpers.date.formatYYYYMMDD(\n helpers.date.momentToJSDate(\n helpers.date.momentMinDate(\n helpers.date.addPeriod(date1, 1, constants.period.days),\n helpers.date.todayEndOfDay()\n )\n )\n );\n }\n\n return helpers.date.formatYYYYMMDD(new Date());\n }\n };\n\n const handleChanges = {\n arrivalDate: (date) => {\n setDate2(date);\n validate.arrivalDate(date);\n }\n };\n\n return (\n <>\n {ready &&\n
    \n
    {t(label)}
    \n
    \n
    \n {(showBothDates || date2 || confirmMode) &&\n {t('label.departureDate')}\n }\n {helpers.date.format(dateString)}\n
    \n {(showBothDates || date2 || confirmMode) &&\n
    \n {t('label.arrivalDate')}\n {confirmMode &&\n <>\n handleChanges.arrivalDate(event.target.value)}\n setError={setDate2Error}\n value={date2}\n yearLength={2}\n />\n\n {!date2 &&\n \n }\n \n }\n {!confirmMode && date2 && helpers.date.format(date2)}\n {!confirmMode && !date2 && <>-}\n
    \n }\n
    \n {onClick &&\n
    \n \n
    \n }\n
    \n }\n \n );\n};\n\nDateSummary.propTypes = {\n confirmMode: PropTypes.bool,\n date1: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string\n ]),\n date2: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string\n ]),\n date2Error: PropTypes.string,\n label: PropTypes.string,\n maxDate: PropTypes.string,\n onClick: PropTypes.func,\n restrictArrivalDate: PropTypes.bool,\n setDate2: PropTypes.func,\n setDate2Error: PropTypes.func,\n showBothDates: PropTypes.bool\n};\n\nexport default DateSummary;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Button from 'components/base/button/button';\nimport helpers from 'services/helpers';\nimport classes from 'components/summary/exemptionSummary/exemptionSummary.module.scss';\nimport PropTypes from 'prop-types';\n\nconst ExemptionSummary = ({\n data,\n label,\n onClick\n}) => {\n const { ready, t } = useTranslation();\n\n const displayExemption = () => {\n if (data.exemptions?.length > 0) {\n return (\n <>\n {(helpers.option.movement.isExempt(data.exempt) &&\n <>\n {data.exemptions.filter((o) => o.value)\n .map((o) => (\n
    {o.label}
    \n ))}\n )\n }\n {(!helpers.option.movement.isExempt(data.exempt) && t('radioButtons.movementExemption.response'))}\n \n );\n }\n return (\n t('movements.noExemptions')\n );\n };\n\n return (\n <>\n {ready &&\n
    \n
    {t(label)}
    \n
    \n {displayExemption()}\n
    \n {onClick &&\n
    \n \n
    \n }\n
    \n }\n \n );\n};\n\nExemptionSummary.propTypes = {\n data: PropTypes.object,\n label: PropTypes.string,\n onClick: PropTypes.func\n};\n\nexport default ExemptionSummary;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/summary/fciSummary/fciSummary.module.scss';\nimport he from 'he';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Button from 'components/base/button/button';\n\nconst FciSummary = ({\n animalsData,\n collapsible,\n fciData,\n isActivityDetails,\n numberBeingMoved,\n onClick,\n open\n}) => {\n const { ready, t } = useTranslation();\n\n const numberOfUnfitAnimals = animalsData?.animalsBeingMoved?.filter((item) => item.unfit).length || 0;\n\n const FCINotSatisfied = () => {\n return (\n <>\n {numberOfUnfitAnimals > 0 &&\n

    \n {numberOfUnfitAnimals} {t('label.of')} {numberBeingMoved} {t('label.animals')}\n

    \n }\n {fciData.withdrawalPeriod &&\n

    \n {' '}\n {t('label.withdrawalPeriod')}:{' '}\n {fciData.withdrawalPeriod.name}\n

    \n }\n {fciData.nonComplianceReason &&\n

    \n {' '}\n {t('label.reason')}: {fciData?.nonComplianceReason ? he.decode(fciData.nonComplianceReason) : ''}\n

    \n }\n {fciData.holdingRestrictions &&\n

    \n {' '}\n {t('label.holdingRestrictions')}: {fciData?.holdingRestrictions ? he.decode(fciData.holdingRestrictions) : ''}\n

    \n }\n \n );\n };\n\n const FCISatisfied = () => {\n return

    {t('label.allAnimalsSatisfyFciStatements')}

    ;\n };\n\n const FCINotSupplied = () => {\n return

    {t('label.noFciInformationRecorded')}

    ;\n };\n\n return (\n <>\n {ready &&\n <>\n {isActivityDetails &&\n <>\n
    \n
    {t('label.fciDetails')}
    \n
    \n {(!fciData || !helpers.option.fci.doRecord(fciData.recordFCI)) &&\n \n }\n {fciData && helpers.option.fci.doRecord(fciData.recordFCI) && (helpers.option.animals.doSatisfy(fciData.animalsSatisfy) || (animalsData && !animalsData.animalsBeingMoved)) &&\n \n }\n {fciData && helpers.option.fci.doRecord(fciData.recordFCI) && !helpers.option.animals.doSatisfy(fciData.animalsSatisfy) && animalsData && animalsData.animalsBeingMoved &&\n <>\n {(collapsible || collapsible === undefined) &&\n
    \n \n {t('label.fciStatementsNotSatisfiedForAllAnimals')}\n \n
    \n \n
    \n
    \n }\n {!collapsible &&\n \n }\n \n }\n
    \n
    \n \n }\n\n {!isActivityDetails &&\n <>\n
    \n
    \n

    {t('label.fciDetails')}

    \n
    \n {onClick &&\n
    \n \n
    \n }\n
    \n
    \n {(!fciData || !helpers.option.fci.doRecord(fciData.recordFCI)) &&\n \n }\n {fciData && helpers.option.fci.doRecord(fciData.recordFCI) && (helpers.option.animals.doSatisfy(fciData.animalsSatisfy) || (animalsData && !animalsData.animalsBeingMoved)) &&\n \n }\n {fciData && helpers.option.fci.doRecord(fciData.recordFCI) && !helpers.option.animals.doSatisfy(fciData.animalsSatisfy) && animalsData && animalsData.animalsBeingMoved &&\n <>\n
    \n \n {t('label.fciStatementsNotSatisfiedForAllAnimals')}\n \n
    \n \n
    \n
    \n \n }\n
    \n \n }\n \n }\n \n );\n};\n\nFciSummary.propTypes = {\n animalsData: PropTypes.object.isRequired,\n collapsible: PropTypes.bool,\n fciData: PropTypes.object,\n isActivityDetails: PropTypes.bool,\n numberBeingMoved: PropTypes.number.isRequired,\n onClick: PropTypes.func\n};\n\nexport default FciSummary;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classes from 'components/base/backdrop/backdrop.module.scss';\n\nconst Backdrop = ({\n isConfirm,\n onClick\n}) => {\n const componentClassNames = [\n classes.backdrop,\n isConfirm ? classes.isConfirm : null\n ].join(' ').trim();\n\n useEffect(() => {\n document.body.classList.add('modal-open');\n\n return () => {\n if (!document.querySelector('.modalInstance')) {\n document.body.classList.remove('modal-open');\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n
    \n );\n};\n\nBackdrop.propTypes = {\n isConfirm: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nexport default Backdrop;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classes from 'components/base/modalConfirm/modalConfirm.module.scss';\nimport { useTranslation } from 'react-i18next';\nimport Backdrop from 'components/base/backdrop/backdrop';\nimport Button from 'components/base/button/button';\n\nconst ModalConfirm = ({\n classNames,\n cleanUp,\n currentOpenModalId,\n id,\n labelCancel,\n labelConfirm,\n modalClose,\n modalConfirm,\n modalMessage,\n modalTitle\n}) => {\n const { ready, t } = useTranslation();\n\n const [confirmDisabled, setConfirmDisabled] = React.useState(false);\n\n React.useEffect(() => {\n document.onkeydown = (e) => {\n if (e.key === 'Escape' && modalClose) {\n modalClose();\n }\n };\n\n const modal = document.getElementById(id);\n\n if (modal) {\n const focusable = modal.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])');\n const firstFocusable = focusable[0];\n\n modal.addEventListener('transitionend', () => {\n firstFocusable.focus();\n });\n\n setTimeout(() => {\n modal.classList.add(classes.open);\n }, 1);\n\n const currentOpenModal = document.getElementById(currentOpenModalId);\n if (currentOpenModalId && currentOpenModal) {\n const observer = new MutationObserver((mutations_list) => {\n mutations_list.forEach((mutation) => {\n mutation.removedNodes.forEach((removed_node) => {\n if (removed_node.id === id) {\n const currentOpenModalFocusable = currentOpenModal.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])');\n const currentOpenModalFirstFocusable = currentOpenModalFocusable[0];\n\n currentOpenModalFirstFocusable.focus();\n observer.disconnect();\n }\n });\n });\n });\n\n observer.observe(document.querySelector('main'), { subtree: false, childList: true });\n }\n }\n });\n\n const componentClassNames = [\n classes.modal,\n ...(classNames ? classNames.map((className) => classes[className]) : [])\n ].join(' ').trim();\n\n return (\n <>\n {ready &&\n <>\n cleanUp(false)}\n />\n
    \n \n {modalTitle &&\n
    \n {t(modalTitle)}\n cleanUp && cleanUp(false)}\n />\n
    \n }\n {modalMessage &&\n
    \n {typeof modalMessage === 'string' &&\n
    \n }\n {Array.isArray(modalMessage) &&\n
    t(line)).join('

    ') }} id=\"modalContent\" />\n }\n
    \n }\n\n
    \n
    \n {(modalConfirm || cleanUp) &&\n {\n setConfirmDisabled(true);\n if (modalConfirm) {\n modalConfirm();\n } else if (cleanUp) {\n cleanUp(true);\n }\n }}\n />\n }\n
    \n\n
    \n cleanUp && cleanUp(false)}\n />\n
    \n
    \n
    \n \n }\n \n );\n};\n\nModalConfirm.propTypes = {\n classNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n cleanUp: PropTypes.func,\n currentOpenModalId: PropTypes.string,\n id: PropTypes.string.isRequired,\n labelCancel: PropTypes.string,\n labelConfirm: PropTypes.string,\n modalClose: PropTypes.func,\n modalConfirm: PropTypes.func,\n modalMessage: PropTypes.oneOfType([\n PropTypes.arrayOf(\n PropTypes.string\n ),\n PropTypes.string\n ]),\n modalTitle: PropTypes.string\n};\n\nexport default ModalConfirm;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Button from 'components/base/button/button';\nimport constants from 'services/constants';\nimport classes from 'components/summary/transportSummary/transportSummary.module.scss';\nimport PropTypes from 'prop-types';\n\nconst TransportSummary = ({\n label,\n onClick,\n transportInformation\n}) => {\n const { ready, t } = useTranslation();\n\n const transportedByLabel = transportInformation ? ('radioButtons.transportedBy.' + transportInformation.transportedBy) : '';\n\n return (\n <>\n {ready &&\n
    \n
    {t(label)}
    \n
    \n {(!transportInformation || !transportInformation.recordTransportInformation || transportInformation.recordTransportInformation === constants.option.recordTransportInformation.no) &&\n t('movements.transport-information.noInformationRecorded')\n }\n {transportInformation?.recordTransportInformation && transportInformation.recordTransportInformation !== constants.option.recordTransportInformation.no &&\n <>\n

    \n {t('movements.transport-information.transport-details.radios-title')}:{' '}\n {t(transportedByLabel)}\n {transportInformation.vehicleRegistrationNumber &&\n <>\n {' '}- {transportInformation.vehicleRegistrationNumber}\n \n }\n

    \n {transportInformation.contactPhone &&\n

    \n {t('movements.transport-information.transport-details.contactTelephoneNumber')}:{' '}\n {transportInformation.contactPhone}\n

    \n }\n {transportInformation.durationOfJourney && (transportInformation.durationOfJourney.days > 0 || transportInformation.durationOfJourney.hours > 0 || transportInformation.durationOfJourney.minutes > 0) &&\n

    \n {t('movements.transport-information.transport-details.durationOfJourney')}:{' '}\n {transportInformation.durationOfJourney.days === 1 &&\n <>\n {transportInformation.durationOfJourney.days}{' '}\n {t('label.day_lower')}{' '}\n \n }\n {transportInformation.durationOfJourney.days > 1 &&\n <>\n {transportInformation.durationOfJourney.days}{' '}\n {t('label.days_lower')}{' '}\n \n }\n {transportInformation.durationOfJourney.hours ? transportInformation.durationOfJourney.hours : 0}{' '}\n {t('movements.transport-information.transport-details.hours').toLowerCase()}{' '}\n\n {transportInformation.durationOfJourney.minutes ? transportInformation.durationOfJourney.minutes : 0}{' '}\n {t('movements.transport-information.transport-details.minutes').toLowerCase()}\n

    \n }\n \n }\n
    \n {onClick &&\n
    \n \n
    \n }\n
    \n }\n \n );\n};\n\nTransportSummary.propTypes = {\n label: PropTypes.string,\n onClick: PropTypes.func,\n transportInformation: PropTypes.object\n};\n\nexport default TransportSummary;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Button from 'components/base/button/button';\nimport classes from 'components/summary/userComment/userComment.module.scss';\nimport PropTypes from 'prop-types';\n\nconst UserComment = ({\n comment,\n label,\n onClick\n}) => {\n const { ready, t } = useTranslation();\n\n return (\n <>\n {ready &&\n
    \n
    {t(label)}
    \n
    \n {comment ? comment : t('label.userCommentNotEntered')}\n
    \n {onClick &&\n
    \n \n
    \n }\n
    \n }\n \n );\n};\n\nUserComment.propTypes = {\n comment: PropTypes.string,\n label: PropTypes.string,\n onClick: PropTypes.func\n};\n\nexport default UserComment;\n","import React, { useEffect } from 'react';\nimport { Redirect, useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport axios from 'axios';\nimport bff, { bffResponse, bffStatus, isCancel } from 'services/bff';\nimport breedsHelper from 'services/breedsHelper';\nimport classes from 'frontEnd/activityDetails/activityDetails.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport he from 'he';\nimport helpers from 'services/helpers';\nimport moment from 'moment';\nimport navigation from 'services/navigation';\nimport permissions from 'services/permissions';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport userRoleType from 'services/userRoleType';\nimport AddressSummary from 'components/summary/addressSummary/addressSummary';\nimport AnimalSummary from 'components/animalSummary/animalSummary';\nimport Button from 'components/base/button/button';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport DateSummary from 'components/summary/dateSummary/dateSummary';\nimport ExemptionSummary from 'components/summary/exemptionSummary/exemptionSummary';\nimport FciSummary from 'components/summary/fciSummary/fciSummary';\nimport Linker from 'components/base/linker/linker';\nimport ModalConfirm from 'components/base/modalConfirm/modalConfirm';\nimport PDFButton from 'components/pdfButton/pdfButton';\nimport TransportSummary from 'components/summary/transportSummary/transportSummary';\nimport UserComment from 'components/summary/userComment/userComment';\n\nconst ActivityDetails = ({\n location,\n setModal,\n setPermission\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const allHoldings = storeService.session.get.holdings();\n\n const [speciesId, setSpeciesId] = React.useState();\n const [data, setData] = React.useState(null);\n const [loadPending, setLoadPending] = React.useState(true);\n const [requestType, setRequestType] = React.useState(null);\n const [requestId, setRequestId] = React.useState(null);\n const [movementDocumentRef, setMovementDocumentRef] = React.useState(null);\n const [reviewStatus, setReviewStatus] = React.useState(null);\n const [movementDocumentRefCorrected, setMovementDocumentRefCorrected] = React.useState(null);\n const [departureDate, setDepartureDate] = React.useState(null);\n const [arrivalDate, setArrivalDate] = React.useState(null);\n\n const [eventDate, setEventDate] = React.useState(null);\n const [cancelPending, setCancelPending] = React.useState(false);\n const [extraData, setExtraData] = React.useState({});\n const [batches, setBatches] = React.useState([]);\n const [batchesRejected, setBatchesRejected] = React.useState([]);\n const [individualAnimals, setIndividualAnimals] = React.useState([]);\n const [individualAnimalsRejected, setIndividualAnimalsRejected] = React.useState([]);\n const [transportInformation, setTransportInformation] = React.useState({});\n const [fciDetails, setFciDetails] = React.useState({});\n const [processingFlags, setProcessingFlags] = React.useState({ exempt: false, exemptions: [] });\n const [metFCIWithdrawalPeriods, setMetFCIWithdrawalPeriods] = React.useState();\n const [hideAnimalDetails, setHideAnimalDetails] = React.useState(false);\n const [confirmUndo, setConfirmUndo] = React.useState(false);\n const [confirmAmend, setConfirmAmend] = React.useState(false);\n\n const [isMissingOrFound, setIsMissingOrFound] = React.useState(false);\n const [isMissing, setIsMissing] = React.useState(false);\n const [printing, setPrinting] = React.useState(false);\n\n let returnUrl = navigation.userActivity();\n let prevPermissions;\n let prevHolding;\n if (location?.state?.data?.current) {\n if (location.state.data.current.returnUrl) {\n returnUrl = location.state.data.current.returnUrl;\n }\n if (location.state.data.current.permissions) {\n prevPermissions = location.state.data.current.permissions;\n }\n if (location.state.data.current.holding) {\n prevHolding = location.state.data.current.holding;\n }\n }\n\n const redirectToMovementSummary = () => {\n const data = location.state.data;\n const activityUrl = location.pathname;\n\n const movementDetails = {\n data: { ...data },\n returnUrl: activityUrl\n };\n\n history.push(Routing.movementsSummary, movementDetails);\n };\n\n window.onafterprint = () => {\n setPrinting(false);\n document.body.classList.remove('modal-open');\n };\n\n const content = {\n [constants.option.requestType.animalsAdded]: {\n cancelButton: 'button.cancelAnimalsAdded',\n cancelPrompt: 'recentDetails.cancelAnimalsAdded',\n cancelTitle: 'title.cancelAnimalsAdded',\n confirmLabel: 'recentDetails.submittedAnimalsAdded',\n contentSubmission: 'recentDetails.contentSubmission',\n dateHeader: 'recentDetails.dateAnimalsAdded',\n failedCancellationLabel: 'recentDetails.failedAnimalsAddedCancellation',\n reference: 'label.reference',\n subTitle: 'recentDetails.activityDetails',\n title: 'recentDetails.titleAnimalsAddedToHoldingRef'\n },\n\n [constants.option.requestType.birth]: {\n cancelButton: 'button.cancelTagApplication',\n cancelPrompt: 'recentDetails.cancelTagApplication',\n cancelTitle: 'title.cancelTagApplication',\n confirmLabel: 'recentDetails.submittedTagApplication',\n contentSubmission: 'recentDetails.contentSubmission',\n dateHeader: 'recentDetails.applicationDate',\n failedCancellationLabel: 'recentDetails.failedBirthCancellation',\n reference: 'label.reference',\n subTitle: 'recentDetails.activityDetails',\n title: 'recentDetails.titleBirthRef'\n },\n\n [constants.option.requestType.correctTransfer]: {\n addressHeader: 'recentDetails.movementDirection',\n amendButton: 'button.amendMovement',\n cancelButton: 'button.cancelMovement',\n cancelPrompt: 'recentDetails.cancelCorrectMovement',\n cancelTitle: 'title.cancelCorrectMovement',\n confirmLabel: 'recentDetails.submittedMovement',\n contentSubmission: 'recentDetails.contentSubmission',\n dateHeader: 'recentDetails.movementDate',\n failedCancellationLabel: 'recentDetails.failedMovementCancellation',\n fciHeader: 'recentDetails.fciDetails',\n locationFrom: 'recentDetails.departureHolding',\n locationTo: 'recentDetails.destinationHolding',\n movementRefCorrected: 'label.movementRefCorrected',\n reference: 'label.movementRef',\n subTitle: 'recentDetails.activityDetails',\n title: 'recentDetails.titleCorrectedMovementRef',\n transportHeader: 'recentDetails.transportInformation'\n },\n\n [constants.option.requestType.death]: {\n addressHeader: 'deaths.locationOfCarcass',\n cancelButton: 'button.cancelDeath',\n cancelPrompt: 'recentDetails.cancelDeathReport',\n cancelTitle: 'title.cancelDeath',\n confirmLabel: 'recentDetails.submittedDeath',\n contentSubmission: 'recentDetails.contentSubmission',\n dateHeader: 'recentDetails.diedDate',\n failedCancellationLabel: 'recentDetails.failedDeathCancellation',\n locationFrom: 'recentDetails.departureHolding',\n locationTo: 'recentDetails.carcassSentTo',\n reference: 'label.reference',\n subTitle: 'recentDetails.activityDetails',\n title: 'recentDetails.titleOnFarmKillRef'\n },\n\n [constants.option.requestType.movement]: {\n addressHeader: 'recentDetails.movementDirection',\n amendButton: 'button.amendMovement',\n cancelButton: isMissingOrFound ? 'button.cancelRecord' : 'button.cancelMovement',\n cancelPrompt: isMissingOrFound ? 'recentDetails.cancelRecord' : 'recentDetails.cancelMovement',\n cancelTitle: isMissingOrFound ? 'title.cancelRecord' : 'title.cancelMovement',\n cancellationPending: 'recentDetails.cancellationPendingWithUserActivity',\n confirmContent: 'recentDetails.confirmContent',\n confirmLabel: 'recentDetails.submittedMovement',\n contentSubmission: 'recentDetails.contentSubmission',\n dateHeader: 'recentDetails.movementDate',\n failedCancellationLabel: 'recentDetails.failedMovementCancellation',\n fciHeader: 'recentDetails.fciDetails',\n locationFrom: 'recentDetails.departureHolding',\n locationTo: 'recentDetails.destinationHolding',\n reference: 'label.movementRef',\n subTitle: 'recentDetails.activityDetails',\n title: isMissingOrFound ? (isMissing ? 'recentDetails.titleMissingRef' : 'recentDetails.titleFoundRef') : 'recentDetails.titleMovementRef',\n transportHeader: 'recentDetails.transportInformation'\n },\n\n [constants.option.requestType.movementHandshake]: {\n addressHeader: 'recentDetails.movementDirection',\n cancelButton: 'button.cancelMovementReview',\n cancelPrompt: 'recentDetails.cancelMovementHandshake',\n cancelTitle: 'title.cancelMovementReview',\n confirmLabel: 'recentDetails.cancelMovementSuccess',\n contentSubmission: 'recentDetails.contentSubmission',\n dateHeader: 'recentDetails.reviewDate',\n failedCancellationLabel: 'recentDetails.failedMovementCancellation',\n locationFrom: 'recentDetails.departureHolding',\n locationTo: 'recentDetails.destinationHolding',\n reference: 'label.movementRef',\n subTitle: 'recentDetails.activityDetails',\n title: 'recentDetails.titleReviewHoldingMovementRef'\n },\n\n [constants.option.requestType.tagApplication]: {\n cancelButton: 'button.cancelTagApplication',\n cancelPrompt: 'recentDetails.cancelTagApplication',\n cancelTitle: 'title.cancelTagApplication',\n confirmLabel: 'recentDetails.submittedTagApplication',\n contentSubmission: 'recentDetails.contentSubmission',\n dateHeader: 'recentDetails.applicationDate',\n failedCancellationLabel: 'recentDetails.failedTagApplicationCancellation',\n reference: 'label.reference',\n subTitle: 'recentDetails.activityDetails',\n title: 'recentDetails.titleApplyTagsBirthRef'\n },\n\n [constants.option.requestType.tagReplacement]: {\n cancelButton: 'button.cancelTagReplacement',\n cancelPrompt: 'recentDetails.cancelTagReplacement',\n cancelTitle: 'title.cancelTagReplacement',\n confirmLabel: 'recentDetails.submittedTagReplacement',\n contentSubmission: 'recentDetails.contentSubmission',\n failedCancellationLabel: 'recentDetails.failedTagReplacementCancellation',\n reference: 'label.reference',\n dateHeader: 'recentDetails.applicationDate',\n title: 'recentDetails.titleReplaceTagsRef',\n subTitle: 'recentDetails.activityDetails'\n }\n };\n\n const handleChanges = {\n amendMovement: () => {\n let sessionDepartureDate;\n let sessionArrivalDate;\n if (helpers.species.isCattleId(speciesId)) {\n sessionDepartureDate = helpers.date.formatYYYYMMDD(data.transferDate);\n sessionArrivalDate = helpers.date.formatYYYYMMDD(data.transferDate);\n } else {\n sessionDepartureDate = helpers.date.formatYYYYMMDD(data.movementDocument.departureDetail.departureDateTime);\n\n if (data.movementDocument.destinationDetail.arrivalDateTime) {\n sessionArrivalDate = helpers.date.formatYYYYMMDD(data.movementDocument.destinationDetail.arrivalDateTime);\n }\n }\n\n let animalsBeingMoved = [];\n if (data.movementGroups[0].devices?.length > 0) {\n animalsBeingMoved = data.movementGroups[0].devices.map((device) => ({\n rfid: device.rfid,\n tagNumber: device.tagNumber\n }));\n } else if (data.movementGroups[0].devicesWithDetail?.length > 0) {\n animalsBeingMoved = data.movementGroups[0].devicesWithDetail.map((device) => ({\n rfid: device.device.rfid,\n tagNumber: device.device.tagNumber\n }));\n }\n\n storeService.session.set.movement({\n amend: true,\n movementId: requestId,\n reviewStatus: reviewStatus,\n movementType: data.movementType,\n inBusinessMovement: data.inBusinessMovement,\n requestType,\n departureDate: sessionDepartureDate,\n otherHolding: get.otherHolding(),\n comment: data.comment,\n exempt: data.processingFlags?.length > 0 ? constants.option.exemption.yes : constants.option.exemption.no,\n exemptions: processingFlags.exemptions ? processingFlags.exemptions.map((flag) => {\n const isPermitMoveExemption = Object.values(constants.permitMovesMandatory).some((mandatoryExemption) => mandatoryExemption.id === flag.id);\n\n return {\n ...flag,\n value: data.processingFlags.some((dataFlag) => flag.id === dataFlag.processingFlagId),\n disabled: helpers.option.movement.isPermitMove(data.movementType) ? isPermitMoveExemption : false\n };\n }) : [],\n selectedAnimalDetails: {\n batchList: data.movementGroups[0].batches.map((batch) => ({\n animalTotal: batch.animalTotal,\n batchNumber: batch.batchNumber,\n description: '',\n tagNumber: batch.batchNumber\n })),\n animalsBeingMoved: animalsBeingMoved?.map((animal) => ({\n ...animal,\n unfit: fciDetails?.unfitAnimals?.find((unfitAnimal) => animal.tagNumber === unfitAnimal.tagNumber)\n }))\n }\n });\n\n storeService.session.set.movementOtherHolding(get.otherHolding());\n\n if (sessionArrivalDate) {\n storeService.session.set.movementArrivalDate(sessionArrivalDate);\n }\n\n if (data.deviceApplication) {\n storeService.session.set.movementRecordTagAllocationDetails(true);\n storeService.session.set.movementTagApplicationDate(helpers.date.formatYYYYMMDD(data.deviceApplication.dateOfApplication));\n storeService.session.set.movementYearOfBirth(String(moment(data.deviceApplication.beginBirthPeriod).year()));\n storeService.session.set.movementBreed({\n id: String(breedsHelper.getBreedId(data.deviceApplication.breed)),\n name: data.deviceApplication.breed\n });\n }\n\n if (data.movementGroups[0].devicesWithDetail?.length > 0) {\n const device = data.movementGroups[0].devicesWithDetail[0];\n storeService.session.set.movementRecordAnimalDetails(true);\n storeService.session.set.movementYearOfBirth(String(moment(device.beginBirthPeriod).year()));\n storeService.session.set.movementBreed({\n id: String(breedsHelper.getBreedId(device.breed)),\n name: device.breed\n });\n storeService.session.set.movementGender(device.gender);\n }\n\n if (helpers.species.isCattleId(speciesId)) {\n storeService.session.set.movementRecordTransportInformation(constants.option.recordTransportInformation.no);\n storeService.session.set.movementFciRecordFci(constants.option.recordFCI.no);\n } else {\n const transportDetail = data.movementDocument.transportDetail;\n const departureDetail = data.movementDocument.departureDetail;\n\n storeService.session.set.movementTransportInformation({\n recordTransportInformation: transportDetail && transportDetail.transporterType ? constants.option.recordTransportInformation.yes : constants.option.recordTransportInformation.no,\n transportedBy: transportDetail && transportDetail.transporterType && constants.option.transporterReverse[transportDetail.transporterType] ? constants.option.transporterReverse[transportDetail.transporterType] : '',\n driverFirstName: transportDetail && transportDetail.transporter && transportDetail.transporter.firstName ? transportDetail.transporter.firstName : '',\n driverLastName: transportDetail && transportDetail.transporter && transportDetail.transporter.lastName ? transportDetail.transporter.lastName : '',\n contactPhone: transportDetail && transportDetail.transporter && transportDetail.transporter.telephoneNumber ? transportDetail.transporter.telephoneNumber : '',\n authorisationNumber: transportDetail && transportDetail.transporterAuthNumber ? transportDetail.transporterAuthNumber : '',\n ownerFirstName: departureDetail && departureDetail.departureOwner && departureDetail.departureOwner.firstName ? departureDetail.departureOwner.firstName : '',\n ownerLastName: departureDetail && departureDetail.departureOwner && departureDetail.departureOwner.lastName ? departureDetail.departureOwner.lastName : '',\n vehicleRegistrationNumber: transportDetail && transportDetail.transportVehicleRegistrationNo ? transportDetail.transportVehicleRegistrationNo : '',\n transporter: transportDetail && transportDetail.transportHaulierName ? transportDetail.transportHaulierName : '',\n departureTime: {\n hours: departureDetail && departureDetail.departureDateTime ? moment(departureDetail.departureDateTime).hours() : null,\n minutes: departureDetail && departureDetail.departureDateTime ? moment(departureDetail.departureDateTime).minutes() : null\n },\n durationOfJourney: {\n days: departureDetail && departureDetail.expectedDurationOfJourney ? departureDetail.expectedDurationOfJourney.days : '',\n hours: departureDetail && departureDetail.expectedDurationOfJourney ? departureDetail.expectedDurationOfJourney.hours : '',\n minutes: departureDetail && departureDetail.expectedDurationOfJourney ? departureDetail.expectedDurationOfJourney.minutes : ''\n }\n });\n\n const recordFCI = data.movementDocument.fciDetail && typeof data.movementDocument.fciDetail.isAllAnimalsFciCompliant === 'boolean' ? constants.option.recordFCI.yes : constants.option.recordFCI.no;\n storeService.session.set.movementFciRecordFci(recordFCI);\n\n if (helpers.option.fci.doRecord(recordFCI)) {\n const period = metFCIWithdrawalPeriods.find((item) => data.movementDocument.fciDetail.metFCIWithdrawalPeriodCode === item.code);\n\n storeService.session.set.movementFciAnimalsSatisfy(data.movementDocument.fciDetail.isAllAnimalsFciCompliant ? constants.option.animalsSatisfy.doSatisfy : constants.option.animalsSatisfy.doNotSatisfy);\n\n if (data.movementDocument.fciDetail.nonCompliantDevices?.length > 0) {\n storeService.session.set.movementFciUnfitAnimals(data.movementDocument.fciDetail.nonCompliantDevices.map((animal) => animal.tagNumber));\n }\n if (period) {\n storeService.session.set.movementFciWithdrawalPeriod(period);\n }\n if (data.movementDocument.fciDetail.holdingRestrictions) {\n storeService.session.set.movementFciHoldingRestrictions(data.movementDocument.fciDetail.holdingRestrictions);\n }\n if (data.movementDocument.fciDetail.nonCompliantReason) {\n storeService.session.set.movementFciNonComplianceReason(data.movementDocument.fciDetail.nonCompliantReason);\n }\n }\n }\n\n storeService.session.set.originalMovement(storeService.session.get.movement());\n\n const returnState = {\n data: location.state.data,\n returnUrl: location.pathname,\n searchState: location.state.searchState\n };\n\n if (permissions.isGathering()) {\n history.push(navigation.movements(), returnState);\n } else {\n redirectToMovementSummary();\n }\n },\n\n cancel: () => {\n if (\n helpers.option.requestType.isAnimalsAdded(requestType) ||\n helpers.option.requestType.isCorrectedMovement(requestType) ||\n helpers.option.requestType.isMovement(requestType) ||\n helpers.option.requestType.isMovementHandshake(requestType) ||\n helpers.option.requestType.isDeath(requestType) ||\n helpers.option.requestType.isTagApplication(requestType) ||\n helpers.option.requestType.isTagReplacement(requestType) ||\n helpers.option.requestType.isBirth(requestType)\n ) {\n setConfirmUndo(false);\n setCancelPending(true);\n\n bff\n .post('/undoRequest', {\n poll: config.POLLS_ENABLED,\n requestId\n })\n .then((res) => {\n const { data } = res;\n storeService.session.set.confirmRequestType(requestType);\n storeService.session.set.confirmRequestId(bffResponse.requestId(data));\n storeService.session.set.confirmPollingStatus(bffResponse.status(data));\n\n storeService.session.set.confirmPollingErrors(bffResponse.errors(data));\n storeService.session.set.confirmPollingWarnings(bffResponse.warnings(data));\n\n history.push(Routing.activityUndo + requestId);\n helpers.scrollToTop();\n })\n .catch((error) => {\n setCancelPending(false);\n errors.BFF(error, setModal);\n });\n }\n }\n };\n\n const get = {\n tagClassname: (status) => {\n return 'tag ' + helpers.tag.getColour(status);\n },\n\n flag: (flagId, flags) => {\n return flags.find((flag) => flag.id === flagId);\n },\n\n tagNumber: (string) => {\n return string && string.tagNumber ? string.tagNumber : t('label.notSpecified');\n },\n\n otherHolding: () => {\n if (data.inBusinessMovement) {\n return {\n value: data.sourceHolding\n };\n }\n\n switch (data.movementType) {\n case constants.option.movement.off:\n return {\n value: data.destinationHolding\n };\n case constants.option.movement.on:\n return {\n value: data.sourceHolding\n };\n default:\n return null;\n }\n }\n };\n\n const fetch = {\n activityData: (stateData, source1, source2, source3) => {\n bff\n .get('/request', {\n cancelToken: source1.token,\n params: {\n requestId: stateData.requestId,\n documentRef: stateData.movementDocumentRef,\n requestType: stateData.requestType\n }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setLoadPending)) {\n const resData = res.data;\n const holdingToSelect = resData.userHolding ? resData.userHolding : resData.holding;\n\n const isPermitMoveDates = (data) => (\n data.movementDocument?.departureDetail?.departureDateTime &&\n data.movementDocument?.destinationDetail?.arrivalDateTime &&\n (helpers.date.format(data.movementDocument?.departureDetail?.departureDateTime) === helpers.date.format(data.movementDocument?.destinationDetail?.arrivalDateTime))\n );\n\n const isPermitMoveCheck = (data) => {\n if (data?.movementDocument) {\n if (isPermitMoveDates(data)) {\n if (data?.sourceHolding) {\n return data.sourceHolding === data.destinationHolding;\n }\n return data.fromHolding === data.toHolding;\n }\n }\n return false;\n };\n\n const getMovementType = () => {\n let movementType;\n\n if (isPermitMoveCheck(resData)) {\n movementType = constants.option.movement.permit;\n } else if (resData.userHolding === resData.sourceHolding) {\n movementType = constants.option.movement.off;\n } else {\n movementType = constants.option.movement.on;\n }\n\n return movementType;\n };\n const defaultHolding = prevHolding ? prevHolding.value : Object.keys(allHoldings).length > 0 && Object.keys(allHoldings)[0];\n const holding = holdingToSelect && allHoldings[holdingToSelect] ? allHoldings[holdingToSelect] : allHoldings[defaultHolding];\n storeService.session.set.holding(holding);\n storeService.session.set.permissions(holding.role);\n setPermission(holding.role);\n\n breedsHelper.update({\n id: helpers.species.nameToId(resData.species),\n name: resData.species\n });\n setSpeciesId(helpers.species.nameToId(resData.species));\n\n if (resData.documentRef) {\n setMovementDocumentRef(resData.documentRef);\n } else if (resData.movementDocument) {\n setMovementDocumentRef(resData.movementDocument.movementDocumentRef);\n }\n\n if (resData.movementRefCorrected) {\n setMovementDocumentRefCorrected(resData.movementRefCorrected);\n }\n\n setData({\n ...resData,\n inBusinessMovement: helpers.option.movement.isPermitMove(getMovementType()) ? false : Boolean(allHoldings[resData.sourceHolding] && allHoldings[resData.destinationHolding]),\n movementType: helpers.option.requestType.isAnimalsAdded(stateData.requestType) ? null : getMovementType(),\n sourceHolding: resData.fromHolding ? resData.fromHolding : resData.sourceHolding,\n destinationHolding: resData.toHolding ? resData.toHolding : resData.destinationHolding,\n status: resData.isFullUndone ? constants.status.cancelled : resData.requestStatus\n });\n\n let tempBatches = [];\n let tempBatchesRejected = [];\n let tempIndividualAnimals = [];\n let tempIndividualAnimalsRejected = [];\n let dob;\n let isSheepOrGoats;\n\n switch (stateData.requestType) {\n case constants.option.requestType.animalsAdded:\n setEventDate(resData.dateAnimalsWereLocated);\n tempIndividualAnimals = helpers.animal.addDobAndAgeForDisplay(\n resData.devicesWithDetail\n .map((animal) => ({\n ...animal,\n tagNumber: animal.device.tagNumber,\n breedName: animal.breed,\n genderName: animal.gender\n }))\n );\n break;\n\n case constants.option.requestType.birth:\n setEventDate(resData.dateOfApplication);\n tempBatches = [];\n tempIndividualAnimals = createBirthList(resData.applicationItems).map((item) => ({\n ...item,\n genotype: resData.genotype\n }));\n break;\n\n case constants.option.requestType.death:\n setEventDate(resData.killDate);\n if (resData.deathofUntaggedAnimals && resData.deathofUntaggedAnimals.animalTotal > 0) {\n setHideAnimalDetails(true);\n } else {\n tempBatches = resData.batchDetails;\n }\n tempIndividualAnimals = resData.killedDevices;\n break;\n\n case constants.option.requestType.correctTransfer:\n case constants.option.requestType.movement: {\n fetch.exemptions(res, source2);\n setEventDate(resData.transferDate);\n\n if (resData.movementDocument.departureDetail) {\n setDepartureDate(resData.movementDocument.departureDetail.departureDateTime);\n }\n if (resData.movementDocument.destinationDetail) {\n setArrivalDate(resData.movementDocument.destinationDetail.arrivalDateTime);\n }\n\n setIsMissingOrFound(helpers.address.isUnknown(resData.destinationHolding) || helpers.address.isUnknown(resData.sourceHolding));\n setIsMissing(helpers.address.isUnknown(resData.destinationHolding));\n\n resData.movementGroups.forEach((group) => {\n if (group.batches?.length > 0) {\n tempBatches = [...tempBatches, ...group.batches];\n }\n if (group.devices?.length > 0) {\n tempIndividualAnimals = [...tempIndividualAnimals, ...group.devices];\n }\n if (group.devicesWithDetail?.length > 0) {\n tempIndividualAnimals = [...tempIndividualAnimals, ...group.devicesWithDetail.map((device) => ({\n beginBirthPeriod: device.beginBirthPeriod,\n breed: device.breed,\n endBirthPeriod: device.endBirthPeriod,\n gender: device.gender,\n rfid: device.rfid,\n tagNumber: device.device.tagNumber\n }))];\n }\n });\n\n const movementDocument = resData.movementDocument;\n if (movementDocument) {\n const fciDetail = movementDocument.fciDetail;\n if (fciDetail) {\n tempIndividualAnimals = tempIndividualAnimals.map((animal) => ({\n ...animal,\n unfit: fciDetail.nonCompliantDevices.find((unfitAnimal) => animal.tagNumber === unfitAnimal.tagNumber)\n }));\n\n helpers.get.metFciWithdrawalPeriods(source3.token)\n .then((res2) => {\n if (helpers.response.isValid(res2.data, setModal)) {\n const period = res2.data.find((item) => fciDetail.metFCIWithdrawalPeriodCode === item.code);\n\n setMetFCIWithdrawalPeriods(res2.data);\n setFciDetails({\n recordFCI: typeof fciDetail.isAllAnimalsFciCompliant === 'boolean' ? constants.option.recordFCI.yes : constants.option.recordFCI.no,\n animalsSatisfy: fciDetail.isAllAnimalsFciCompliant ? constants.option.animalsSatisfy.doSatisfy : constants.option.animalsSatisfy.doNotSatisfy,\n unfitAnimals: fciDetail.nonCompliantDevices,\n nonComplianceReason: fciDetail.nonCompliantReason,\n withdrawalPeriod: period ? period : null,\n holdingRestrictions: fciDetail.holdingRestrictions\n });\n }\n });\n }\n\n const transportDetail = movementDocument.transportDetail;\n if (transportDetail) {\n setTransportInformation({\n recordTransportInformation: Boolean(transportDetail.transporterType) && (helpers.option.transporter.isDepartureKeeper(transportDetail.transporterType) || helpers.option.transporter.isDestinationKeeper(transportDetail.transporterType) || helpers.option.transporter.isHaulier(transportDetail.transporterType)),\n transportedBy: transportDetail.transporterType ? constants.option.transporterReverse[transportDetail.transporterType] : null,\n vehicleRegistrationNumber: transportDetail.transportVehicleRegistrationNo,\n contactPhone: transportDetail.transporter ? transportDetail.transporter.telephoneNumber : null,\n durationOfJourney: resData.movementDocument.departureDetail.expectedDurationOfJourney\n });\n } else {\n setTransportInformation({\n recordTransportInformation: constants.option.recordTransportInformation.no\n });\n }\n }\n break;\n }\n\n case constants.option.requestType.movementHandshake:\n fetch.exemptions(res, source2);\n setEventDate(resData.requestDate);\n tempBatches = resData.reviewMovement.acceptedBatches;\n tempBatchesRejected = resData.reviewMovement.rejectedBatches;\n tempIndividualAnimals = resData.reviewMovement.acceptedDevices;\n tempIndividualAnimalsRejected = resData.reviewMovement.rejectedDevices;\n break;\n\n case constants.option.requestType.tagApplication:\n isSheepOrGoats = helpers.species.isSheepId(storeService.session.get.species().id) || helpers.species.isGoatId(storeService.session.get.species().id);\n tempBatches = resData.batches;\n tempIndividualAnimals = resData.devices;\n dob = isSheepOrGoats ? moment(resData.dateOfBirthRangeStart).year() : helpers.date.format(resData.dateOfBirthRangeStart);\n\n setEventDate(resData.dateOfApplication);\n setExtraData({\n dob,\n breed: resData.breed,\n gender: resData.gender,\n genotype: resData.genotype\n });\n break;\n\n case constants.option.requestType.tagReplacement:\n setEventDate(resData.replacementDate);\n resData.replaceItems.forEach((item) => {\n if (item.batchReplacing) {\n tempBatches.push({\n animalTotal: item.batchReplacing.animalTotal,\n oldBatchNumber: item.batchReplaced ? item.batchReplaced.batchNumber : t('label.unknown'),\n newBatchNumber: item.batchReplacing.batchNumber\n });\n } else if (item.deviceReplacing) {\n if (item.batchReplaced) {\n tempIndividualAnimals.push({\n oldTagNumber: item.batchReplaced.batchNumber,\n newTagNumber: item.deviceReplacing.tagNumber\n });\n } else if (item.deviceReplaced) {\n tempIndividualAnimals.push({\n oldTagNumber: item.deviceReplaced.tagNumber,\n newTagNumber: item.deviceReplacing.tagNumber\n });\n } else {\n tempIndividualAnimals.push({\n oldTagNumber: constants.unknown,\n newTagNumber: item.deviceReplacing.tagNumber\n });\n }\n }\n });\n break;\n default:\n break;\n }\n\n setBatches(tempBatches);\n setBatchesRejected(tempBatchesRejected);\n setIndividualAnimals(tempIndividualAnimals);\n setIndividualAnimalsRejected(tempIndividualAnimalsRejected);\n\n setLoadPending(false);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n },\n\n exemptions: (res, source) => {\n let flags = [];\n\n if (res.data.processingFlags?.length > 0) {\n flags = res.data.processingFlags;\n } else if (res.data.movementDetailsProcessingFlags?.length > 0) {\n flags = res.data.movementDetailsProcessingFlags;\n }\n\n if (flags?.length === 0) {\n return;\n }\n\n helpers.get.processingFlags(source.token, constants.option.requestType.movement, helpers.species.nameToId(res.data.species))\n .then((res2) => {\n if (helpers.response.isValid(res2.data, setModal)) {\n setProcessingFlags({\n exempt: constants.option.exemption.yes,\n exemptions: res2.data.map((item1) => ({\n ...item1,\n value: flags.find((item2) => item2.processingFlagId === item1.id)\n }))\n });\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n }\n };\n\n const setPreviousPermissionsAndHolding = () => {\n if (prevPermissions) {\n storeService.session.set.permissions(prevPermissions);\n setPermission(prevPermissions);\n } else {\n storeService.session.set.permissions(userRoleType.GENERIC);\n setPermission(userRoleType.GENERIC);\n }\n\n if (prevHolding) {\n storeService.session.set.holding(prevHolding);\n } else {\n storeService.session.remove.holding();\n }\n };\n\n const createBirthList = (applicationItems) => {\n if (applicationItems) {\n return applicationItems.filter((item) => item).map((item) => ({\n tagNumber: get.tagNumber(item.device),\n dob: helpers.date.formatJSDate(item.dateOfBirthRange_Start, helpers.date.is.same(item.dateOfBirthRange_Start, item.dateOfBirthRange_End) ? 'DD/MM/YYYY' : 'YY'),\n breed: item.breed ? item.breed : t('label.notSpecified'),\n genderName: item.gender ? t('recentDetails.' + item.gender) : t('label.notSpecified'),\n geneticDamId: get.tagNumber(item.geneticDam),\n damId: get.tagNumber(item.birthDam),\n sireId: get.tagNumber(item.sire)\n }));\n }\n\n return [];\n };\n\n const downloadAnimalList = () => {\n const movementDate = data?.transferDate ? data.transferDate : data?.movementDate;\n const filename = `${data.movementDocument?.movementDocumentRef}-${helpers.date.formatDDMMYYYY(movementDate)}`;\n const devices = data?.movementGroups?.[0]?.devices ? data.movementGroups[0].devices : data?.devices;\n const individualTagsToMap = devices.filter((device) => !Object.values(data?.errors).some((error) => error?.message.includes(device.tagNumber)));\n const individualTagNumbers = individualTagsToMap.map((individualTag) => ({ 'Tag number': individualTag.tagNumber })).sort();\n individualTagNumbers.push({ [t('label.tagNumber')]: `${t('label.totalAnimals')}: ${individualTagNumbers.length}` });\n const batchesToMap = data?.movementGroups?.[0].batches ? data?.movementGroups?.[0].batches : data?.batches;\n const batches = batchesToMap.map((batch) => (\n {\n [t('label.batchNumber')]: batch.batchNumber,\n Quantity: batch.animalTotal\n })\n );\n\n const totalBatchAnimals = batches.reduce((acc, batch) => acc + batch.Quantity, 0);\n\n batches.push({ [t('label.batchNumber')]: `${t('label.totalBatches')}: ${batches.length}` });\n batches.push({ [t('label.batchNumber')]: `${t('label.totalAnimals')}: ${totalBatchAnimals}` });\n\n const tagsNotMoved = [];\n const individualErrorTags = devices.filter((device) => Object.values(data?.errors)\n .some((error) => error.message.includes(device.tagNumber)));\n const tagsNotMovedLabel = helpers.option.requestType.isMovementHandshake(requestType) ? t('label.rejectedIndividualTags') : t('label.tagsNotMoved');\n\n if (individualErrorTags) {\n tagsNotMoved.push(...individualErrorTags.map((individualErrorTag) => (\n {\n [tagsNotMovedLabel]: individualErrorTag.tagNumber,\n Reason: data?.errors.find((error) => error.message.includes(individualErrorTag.tagNumber)).message\n }\n )\n ));\n }\n\n const batchesNotMoved = [];\n\n if (helpers.option.requestType.isMovementHandshake(requestType)) {\n if (data?.reviewMovement?.rejectedDevices) {\n tagsNotMoved.push(...data?.reviewMovement?.rejectedDevices.map((rejectedDevice) => (\n {\n [tagsNotMovedLabel]: rejectedDevice.tagNumber\n }\n )) || []);\n }\n\n if (data?.reviewMovement?.rejectedBatches) {\n batchesNotMoved.push(...data?.reviewMovement?.rejectedBatches.map((rejectedBatch) => (\n\n {\n [t('label.rejectedBatchNumbers')]: rejectedBatch.batchNumber,\n Quantity: rejectedBatch.animalTotal\n }\n )) || []);\n }\n } else if (data?.reviewMovement?.rejectedDevices) {\n tagsNotMoved.push(...data?.reviewMovement?.rejectedDevices.map((rejectedDevice) => (\n {\n [tagsNotMovedLabel]: rejectedDevice.tagNumber,\n Reason: t('label.animalRejected')\n }\n )) || []);\n }\n\n tagsNotMoved.push({ [tagsNotMovedLabel]: `${t('label.totalAnimals')}: ${tagsNotMoved.length}` });\n\n const animalList = {\n [t('label.individualTagNumbers')]: individualTagNumbers,\n Batches: batches,\n [tagsNotMovedLabel]: tagsNotMoved\n };\n\n if (helpers.option.requestType.isMovementHandshake(requestType)) {\n batchesNotMoved.push({ [t('label.rejectedBatchNumbers')]: `${t('label.totalBatches')}: ${batchesNotMoved.length}` });\n const totalRejectedBatchAnimals = data?.reviewMovement?.rejectedBatches.reduce((acc, batch) => acc + batch.animalTotal, 0);\n batchesNotMoved.push({ [t('label.rejectedBatchNumbers')]: `${t('label.totalAnimals')}: ${totalRejectedBatchAnimals}` });\n animalList[t('label.rejectedBatchNumbers')] = batchesNotMoved;\n }\n\n const workbook = helpers.generateWorkbook(animalList);\n helpers.writeWorkbookToFile(workbook, filename, 'ods');\n };\n\n useEffect(() => {\n const source1 = axios.CancelToken.source();\n const source2 = axios.CancelToken.source();\n const source3 = axios.CancelToken.source();\n const source4 = axios.CancelToken.source();\n\n if (location.pathname.substring(0, Routing.activityDetails.length) === Routing.activityDetails) {\n setRequestId(location.state.data.requestId);\n setMovementDocumentRef(location.state.data.movementDocumentRef);\n setRequestType(location.state.data.requestType);\n setData(location.state.data);\n setReviewStatus(location.state.data.reviewStatus);\n\n helpers.get.reviewStatus(source4.token, location.state.data.movementDocumentRef)\n .then((statues) => {\n if (helpers.response.isValid(statues?.data, setModal, setLoadPending)) {\n if (statues?.data?.arrivalReviewStatus?.reviewRequestId) {\n setReviewStatus(statues.data.arrivalReviewStatus.reviewStatusStatus);\n } else {\n setReviewStatus(statues?.data?.departureReviewStatus?.reviewStatusStatus);\n }\n }\n })\n .catch((error) => {\n if (error?.response?.status !== 404) {\n errors.BFF(error, setModal);\n }\n });\n\n fetch.activityData(location.state.data, source1, source2, source3);\n }\n\n return () => {\n source1.cancel();\n source2.cancel();\n source3.cancel();\n source4.cancel();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.activityUndo.length) !== Routing.activityUndo) {\n storeService.session.removeAll.confirm();\n unListen();\n }\n\n if (path.pathname.substring(0, Routing.holdingRegister.length) !== Routing.holdingRegister &&\n path.pathname.substring(0, Routing.userActivity.length) !== Routing.userActivity &&\n path.pathname.substring(0, Routing.activityDetails.length) !== Routing.activityDetails &&\n path.pathname.substring(0, Routing.movementsSummary.length) !== Routing.movementsSummary &&\n path.pathname.substring(0, Routing.abattoirMovements.length) !== Routing.abattoirMovements &&\n path.pathname.substring(0, Routing.assemblyMovements.length) !== Routing.assemblyMovements &&\n path.pathname.substring(0, Routing.collectionMovements.length) !== Routing.collectionMovements &&\n path.pathname.substring(0, Routing.marketMovements.length) !== Routing.marketMovements &&\n path.pathname.substring(0, Routing.showMovements.length) !== Routing.showMovements\n ) {\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n storeService.session.removeAll.confirm();\n unListen();\n }\n });\n\n window.onpopstate = () => {\n if (storeService.session.get.confirm()) {\n history.push(navigation.userActivity());\n }\n };\n }, [history]);\n\n const stepPicker = (pathname) => {\n const undoRequestId = storeService.session.get.confirmRequestId();\n const undoRequestType = storeService.session.get.confirmRequestType();\n const pollingStatus = storeService.session.get.confirmPollingStatus();\n const pollingErrors = storeService.session.get.confirmPollingErrors();\n const pollingWarnings = storeService.session.get.confirmPollingWarnings();\n\n let path;\n if (pathname.substring(0, Routing.activityDetails.length) === Routing.activityDetails) {\n path = 'details';\n } else if (pathname.substring(0, Routing.activityUndo.length) === Routing.activityUndo) {\n path = 'confirm';\n\n if (!undoRequestId) {\n return ;\n }\n }\n\n const statusLabel = (pollingStatus) => {\n switch (pollingStatus) {\n case constants.status.completed_error:\n return content[undoRequestType].failedCancellationLabel;\n case constants.status.pending:\n case constants.status.claPending:\n return `${content[constants.option.requestType.movement].cancellationPending}`;\n default:\n return content[undoRequestType].confirmLabel;\n }\n };\n\n switch (path) {\n case 'confirm':\n return (\n {\n setPermission(userRoleType.GENERIC);\n storeService.session.set.permissions(userRoleType.GENERIC);\n storeService.session.remove.holding();\n history.push(navigation.userActivity());\n }\n }}\n errors={pollingErrors}\n label={statusLabel(pollingStatus)}\n setModal={setModal}\n status={pollingStatus}\n warnings={pollingWarnings}\n />\n );\n\n case 'details':\n default: {\n const newWarnings = data?.warnings ? helpers.error.consolidate(data.warnings) : null;\n const newErrors = data?.errors ? helpers.error.consolidate(data.errors) : null;\n return (\n <>\n {requestId && requestType &&\n <>\n \n\n

    {t(content[requestType].title)}: {movementDocumentRef ? movementDocumentRef : requestId}

    \n

    {t(content[requestType].subTitle)}

    \n\n {helpers.option.requestType.isCorrectedMovement(requestType) &&\n
    \n
    {t(content[requestType].movementRefCorrected)}
    \n
    \n {movementDocumentRefCorrected}\n
    \n
    \n }\n\n {helpers.option.requestType.isAnimalsAdded(requestType) &&\n \n }\n\n {!helpers.option.requestType.isAnimalsAdded(requestType) &&\n \n }\n\n {helpers.option.requestType.isMovementHandshake(requestType) && data?.movementDocument &&\n \n }\n\n
    \n
    {t('recentDetails.submissionStatus')}
    \n\n {!loadPending &&\n
    \n \n {t('recentDetails.status-' + data.status)}\n \n\n {(newWarnings?.length > 0 || newErrors?.length > 0) &&\n \n {t('recentDetails.seeBelow')}\n \n }\n
    \n }\n
    \n\n {!helpers.option.requestType.isTagApplication(requestType) &&\n !helpers.option.requestType.isTagReplacement(requestType) &&\n !helpers.option.requestType.isAnimalsAdded(requestType) &&\n !helpers.option.requestType.isBirth(requestType) &&\n !helpers.option.movement.isPermitMove(data.movementType) &&\n \n }\n\n {helpers.option.movement.isPermitMove(data.movementType) &&\n \n }\n\n {(\n helpers.option.requestType.isCorrectedMovement(requestType) ||\n helpers.option.requestType.isMovement(requestType) ||\n helpers.option.requestType.isMovementHandshake(requestType) ||\n (\n (\n helpers.option.requestType.isBirth(requestType) ||\n helpers.option.requestType.isTagApplication(requestType) ||\n helpers.option.requestType.isTagReplacement(requestType)\n ) &&\n data.comment\n )\n ) && (\n !helpers.option.movement.isPermitMove(data.movementType)\n ) &&\n \n }\n\n {(\n helpers.option.requestType.isMovement(requestType) ||\n helpers.option.requestType.isCorrectedMovement(requestType) ||\n helpers.option.requestType.isMovementHandshake(requestType)\n ) &&\n \n }\n\n

    {t('label.animalDetails')}

    \n \n\n {(\n helpers.option.requestType.isMovement(requestType) ||\n helpers.option.requestType.isCorrectedMovement(requestType)\n ) &&\n !loadPending &&\n !helpers.species.isCattleId(speciesId) &&\n !isMissingOrFound &&\n <>\n \n {typeof fciDetails.recordFCI === 'string' &&\n total + batch.animalTotal, 0)}\n />\n }\n \n }\n\n {newWarnings?.length > 0 &&\n
    \n

    {t('recentDetails.warnings')}

    \n
      \n {newWarnings.map((warning, index) => (\n
    • {helpers.error.mapping(warning.message, t)}
    • \n ))}\n
    \n
    \n }\n\n {newErrors?.length > 0 &&\n
    \n

    {t('recentDetails.errors')}

    \n
      \n {newErrors.map((error, index) => (\n
    • {helpers.error.mapping(error.message, t)}
    • \n ))}\n
    \n
    \n }\n\n {!loadPending &&\n (\n helpers.option.requestType.isAnimalsAdded(requestType) ||\n helpers.option.requestType.isCorrectedMovement(requestType) ||\n helpers.option.requestType.isMovement(requestType) ||\n helpers.option.requestType.isMovementHandshake(requestType) ||\n helpers.option.requestType.isDeath(requestType) ||\n helpers.option.requestType.isTagApplication(requestType) ||\n helpers.option.requestType.isTagReplacement(requestType) ||\n helpers.option.requestType.isBirth(requestType)\n ) &&\n
    \n {!data.isFullUndone &&\n (\n helpers.option.requestType.isCorrectedMovement(requestType) ||\n helpers.option.requestType.isMovement(requestType)\n ) &&\n (\n helpers.species.isCattleId(speciesId) ||\n (\n !helpers.species.isCattleId(speciesId) &&\n data.sourceHolding !== config.UNKNOWN &&\n data.destinationHolding !== config.UNKNOWN\n )\n ) &&\n
    \n setConfirmAmend(true) : handleChanges.amendMovement }\n />\n
    \n }\n\n
    \n {\n document.body.classList.add('modal-open');\n setPrinting(true);\n setTimeout(() => {\n window.print();\n }, 100);\n }}\n />\n {\n (\n !helpers.option.requestType.isDeath(requestType) &&\n (\n helpers.option.requestType.isMovement(requestType) ||\n helpers.option.requestType.isMovementHandshake(requestType) ||\n helpers.option.requestType.isCorrectedMovement(requestType)\n ) &&\n (\n helpers.species.isSheepId(speciesId) ||\n helpers.species.isGoatId(speciesId)\n ) &&\n !isMissingOrFound\n ) &&\n !bffStatus.isCancelled(data.status) &&\n \n }\n
    \n {!helpers.option.requestType.isDeath(requestType) &&\n (\n helpers.option.requestType.isMovement(requestType) ||\n helpers.option.requestType.isMovementHandshake(requestType) ||\n helpers.option.requestType.isCorrectedMovement(requestType)\n ) &&\n
    \n \n
    \n }\n\n {!data.isFullUndone &&\n (\n helpers.option.requestType.isAnimalsAdded(requestType) ||\n helpers.option.requestType.isTagApplication(requestType) ||\n helpers.option.requestType.isTagReplacement(requestType) ||\n helpers.option.requestType.isBirth(requestType) ||\n helpers.option.requestType.isMovementHandshake(requestType) ||\n (\n (\n helpers.option.requestType.isMovement(requestType) &&\n helpers.species.isCattleId(speciesId)\n ) ||\n (\n helpers.option.requestType.isCorrectedMovement(requestType) ||\n helpers.option.requestType.isMovement(requestType) ||\n helpers.option.requestType.isDeath(requestType)\n )\n )\n ) &&\n
    \n setConfirmAmend(true) : () => setConfirmUndo(true) }\n />\n
    \n }\n
    \n {\n setPreviousPermissionsAndHolding();\n history.push(returnUrl);\n }}\n />\n
    \n
    \n }\n\n {confirmUndo &&\n setConfirmUndo(false)}\n modalConfirm={handleChanges.cancel}\n modalMessage={content[requestType].cancelPrompt}\n modalTitle={content[requestType].cancelTitle ? content[requestType].cancelTitle : 'label.cancelMovement'}\n />\n }\n {confirmAmend &&\n setConfirmAmend(false)}\n modalMessage= {'recentDetails.movementReviewed'}\n modalTitle= {'recentDetails.titleAmendOrCancel'}\n />\n }\n \n }\n \n );\n }\n }\n };\n\n return (\n <>\n {ready && stepPicker(location.pathname)}\n \n );\n};\n\nActivityDetails.propTypes = {\n location: PropTypes.object.isRequired,\n setModal: PropTypes.func.isRequired,\n setPermission: PropTypes.func.isRequired\n};\n\nexport default ActivityDetails;\n","import React, { useEffect } from 'react';\nimport classes from 'components/base/modal/modal.module.scss';\nimport PropTypes from 'prop-types';\nimport Backdrop from 'components/base/backdrop/backdrop';\nimport Button from 'components/base/button/button';\n\nconst Modal = ({\n children,\n classNames,\n footerContent,\n headerContent,\n id,\n modalClose,\n showConfirmation,\n submitChanges,\n submitDisabled,\n submitLabel,\n submitPending\n}) => {\n const componentClassNames = [\n 'modalInstance',\n classes.modal,\n ...(classNames ? classNames.map((className) => classes[className]) : [])\n ].join(' ').trim();\n\n useEffect(() => {\n document.onkeydown = (e) => {\n e = e || window.event;\n if (e.key === 'Escape') {\n modalClose();\n }\n };\n\n const modal = document.getElementById(id);\n\n if (modal) {\n const focusable = modal.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])');\n const firstFocusable = focusable[0];\n\n modal.addEventListener('transitionend', () => {\n if (!document.getElementById('confirmCloseModal')) {\n firstFocusable.focus();\n }\n });\n\n setTimeout(() => {\n modal.classList.add(classes.open);\n }, 1);\n }\n });\n\n return (\n <>\n \n
    \n \n {headerContent &&\n

    \n {modalClose &&\n \n }\n {headerContent}\n

    \n }\n {submitChanges &&\n <>\n
    \n {children}\n
    \n
    \n
    \n {!submitPending && !showConfirmation && footerContent}\n
    \n
    \n {showConfirmation &&\n \n }\n {!showConfirmation &&\n <>\n \n \n \n }\n
    \n
    \n \n }\n {!submitChanges &&\n <>\n {children}\n \n }\n
    \n \n );\n};\n\nModal.propTypes = {\n children: PropTypes.object,\n classNames: PropTypes.arrayOf(\n PropTypes.string\n ),\n footerContent: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object\n ]),\n headerContent: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object\n ]),\n id: PropTypes.string.isRequired,\n modalClose: PropTypes.func,\n showConfirmation: PropTypes.bool,\n submitChanges: PropTypes.func,\n submitDisabled: PropTypes.bool,\n submitLabel: PropTypes.string,\n submitPending: PropTypes.bool\n};\n\nexport default Modal;\n","import React, { useState, createRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { isCancel } from 'services/bff';\nimport { CSVReader } from 'react-papaparse';\nimport classes from 'components/base/fileUpload/fileUpload.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport Button from 'components/base/button/button';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport FieldLabel from 'components/base/fieldLabel/fieldLabel';\nimport Hint from 'components/base/hint/hint';\nimport Legend from 'components/base/legend/legend';\n\nconst FileUpload = ({\n acceptExtendedCsv,\n addDate,\n description,\n hideHint,\n hideLabel,\n hideTooltip,\n hint,\n label,\n maxTagsAllowed,\n modalMessage,\n modalTitle,\n notes,\n onUpload,\n pending,\n setAnimalsToChange,\n setModal,\n setPending,\n species\n}) => {\n const { ready, t } = useTranslation();\n\n const sessionBreeds = storeService.session.get.breedsAll()[species.id];\n\n const [selectedFile, setSelectedFile] = useState([]);\n const [invalidFileError, setInvalidFileError] = useState(false);\n const [fileError, setFileError] = useState(false);\n const [fileTypeError, setFileTypeError] = useState(false);\n const [maxRecordsError, setMaxRecordsError] = useState('');\n const buttonRef = createRef();\n\n const get = {\n dobAndAgeToDisplay: (dob, dateToCheck) => {\n if (dob) {\n if (!isNaN(dob)) {\n const currentYear = dateToCheck ? moment(dateToCheck).year() : moment().year();\n\n return [\n dob,\n parseInt(dob) <= currentYear ? helpers.date.ageInYears(dob) : '',\n parseInt(dob) <= currentYear\n ];\n }\n\n if (dob.includes('-')) {\n const dobToDisplay = helpers.date.format(dob);\n const ageToDisplay = helpers.get.age(helpers.date.momentToISODate(moment(dob)));\n\n if (dobToDisplay !== 'Invalid date') {\n const validDate = !helpers.date.is.inTheFuture(dob) && (!dateToCheck || !helpers.date.is.afterDate(dob, dateToCheck));\n\n return [\n dobToDisplay,\n validDate ? ageToDisplay : '',\n validDate\n ];\n }\n\n return [\n dob,\n '',\n false\n ];\n }\n\n if (isNaN(dob)) {\n return [\n dob,\n '',\n false\n ];\n }\n\n return [\n dob,\n '',\n true\n ];\n }\n\n return [\n '',\n '',\n true\n ];\n },\n\n genderName: (gender) => {\n if (!gender) {\n return '';\n }\n\n const lcGender = gender.toLowerCase();\n\n if (lcGender === 'm' || lcGender === constants.option.gender.male) {\n return 'Male';\n }\n if (lcGender === 'f' || lcGender === constants.option.gender.female) {\n return 'Female';\n }\n\n return null;\n }\n };\n\n const handleOpenDialog = (e) => {\n if (buttonRef.current) {\n buttonRef.current.open(e);\n }\n };\n\n const handleOnFileLoad = (data) => {\n const regex = /^.*\\.(csv)$/;\n\n if (regex.test(buttonRef.current.state.file.name)) {\n let parsedData = [];\n\n setSelectedFile([]);\n\n if (acceptExtendedCsv) {\n // if (!Object.keys(data[0].data).filter((item) => ['tagnumber', 'breed', 'gender', 'dob'].includes(item.toLowerCase())).length > 0) {\n // const columnHeaders = [];\n // const tempData = [\n // Object.keys(data[0].data).filter((field) => field !== '__parsed_extra'),\n // ...data.map((row) => ([\n // ...Object.values(row.data).filter((field) => typeof field === 'string'),\n // ...(row.data?.__parsed_extra ? row.data.__parsed_extra : [])\n // ]))\n // ];\n //\n // for (const row of tempData) {\n // row.forEach((field, index) => {\n // const trimmedField = field.trim();\n //\n // if (trimmedField) {\n // if (trimmedField.substring(0, 2).toLowerCase() === 'uk' && !columnHeaders.includes('tagNumber')) {\n // columnHeaders[index] = 'tagNumber';\n // } else if ([constants.option.gender.male, constants.option.gender.female, 'm', 'f'].includes(trimmedField.toLowerCase()) && !columnHeaders.includes('genderName')) {\n // columnHeaders[index] = 'genderName';\n // } else if (helpers.date.is.validCsvDate(trimmedField) && !columnHeaders.includes('dobToDisplay')) {\n // columnHeaders[index] = 'dobToDisplay';\n // } else if (!columnHeaders.includes('breedName')) {\n // columnHeaders[index] = 'breedName';\n // }\n // }\n // });\n //\n // if (columnHeaders.length === 4) {\n // break;\n // }\n // }\n //\n // parsedData = tempData\n // .map((row) => {\n // const tempItemData = {};\n //\n // columnHeaders.forEach((column, index) => {\n // tempItemData[column] = row[index]?.trim();\n // });\n //\n // return tempItemData;\n // })\n // .filter((row) => row.tagNumber);\n // } else {\n // parsedData = data\n // .filter((row) => row.data.tagNumber)\n // .map((row) => ({\n // tagNumber: row.data.tagNumber?.trim(),\n // breedName: row.data.breed?.trim(),\n // genderName: row.data.gender?.trim(),\n // dobToDisplay: row.data.dob?.trim()\n // }));\n // }\n\n parsedData = data\n .map((row) => {\n for (const [key, value] of Object.entries(row.data).filter((field) => field[0] !== '__parsed_extra')) {\n let parsedKey = key.trim().toLowerCase();\n\n if (parsedKey === 'tagnumber') {\n parsedKey = 'tagNumber';\n }\n\n delete row.data[key];\n\n row.data[parsedKey] = value?.trim().replace(/[\\r]/gm, '');\n }\n\n let dob = row.data.dob;\n\n if (!isNaN(dob) && dob.length === 2) {\n dob = '20' + dob;\n } else if (row.data.dob?.includes('/')) {\n const dateParts = row.data.dob?.split('/');\n\n if (dateParts[2].length === 2) {\n dateParts[2] = '20' + dateParts[2];\n }\n\n dob = dateParts[2] + '-' + dateParts[1] + '-' + dateParts[0];\n }\n\n const matchedBreed = row.data.breed ? sessionBreeds.find((breed) => breed.name.toLowerCase() === row.data.breed.toLowerCase()) : null;\n const [dobToDisplay, ageToDisplay, validDate] = get.dobAndAgeToDisplay(dob, addDate);\n\n return {\n tagNumber: row.data.tagNumber,\n breedName: matchedBreed?.name || row.data.breed,\n genderName: get.genderName(row.data.gender) || row.data.gender,\n dob,\n dobToDisplay,\n ageToDisplay,\n validDate\n };\n })\n .filter((row) => row.tagNumber)\n .filter((row) => Object.values(row).some((field) => field));\n } else {\n data.forEach((element) => {\n element.data.forEach((el) => {\n const trimmedElement = el.replaceAll(' ', '').toLowerCase();\n\n if (trimmedElement.length > 0 &&\n (\n helpers.checkTags(trimmedElement)\n )\n ) {\n parsedData.push(el);\n }\n });\n });\n }\n\n setSelectedFile(parsedData);\n setFileTypeError(false);\n\n if (parsedData.length === 0) {\n setInvalidFileError(true);\n } else {\n setInvalidFileError(false);\n }\n } else {\n setFileTypeError(true);\n setFileError(false);\n setInvalidFileError(false);\n }\n };\n\n const uploadTags = () => {\n if (acceptExtendedCsv) {\n if (selectedFile.length > config.MAX_UPLOAD_RECORDS_EXTENDED_CSV) {\n setMaxRecordsError('error.maxRecordsNumber2');\n } else {\n setPending(true);\n setMaxRecordsError('');\n\n helpers.validate.tagNumbers(species.name, [], selectedFile.map((item) => item.tagNumber))\n .then((res) => {\n setPending(false);\n setFileError(false);\n setSelectedFile([]);\n\n const newTags = res.data.tagNumbers.map((tag, index) => ({\n ...selectedFile[index],\n tagNumber: tag.formattedDevice.tagNumber ? tag.formattedDevice.tagNumber : tag.originalIdentifier,\n invalid: [\n tag.state === 'Invalid' ? 'tagNumber' : '',\n selectedFile[index].breedName && !sessionBreeds.map((breed) => breed.name.toLowerCase()).includes(selectedFile[index].breedName.toLowerCase()) ? 'breedName' : '',\n selectedFile[index].genderName && ![constants.option.gender.male, constants.option.gender.female, 'm', 'f'].includes(selectedFile[index].genderName.toLowerCase()) ? 'genderName' : '',\n !selectedFile[index].validDate ? 'dob' : ''\n ].filter((item) => item),\n duplicates: tag.duplicateWithIndexes,\n index\n }));\n\n if (onUpload && typeof onUpload === 'function') {\n onUpload();\n }\n\n setAnimalsToChange(newTags);\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setPending(false);\n errors.BFF(error, setModal);\n }\n });\n }\n } else {\n const uniqueTags = [...new Set(selectedFile)].map((tag) => tag.trim().replace(/\\s\\s+/g, ' '));\n\n if (maxTagsAllowed && uniqueTags.length > maxTagsAllowed) {\n setMaxRecordsError('Unable to upload more than ' + maxTagsAllowed + ' tag numbers at a time. Please reduce the number of tags.');\n } else if (uniqueTags.length > config.MAX_UPLOAD_RECORDS) {\n setMaxRecordsError('error.maxRecordsNumber');\n } else {\n setPending(true);\n setMaxRecordsError('');\n\n helpers.validate.tagNumbers(species.name, [], uniqueTags)\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setPending)) {\n setPending(false);\n setFileError(false);\n setSelectedFile([]);\n\n const newTags = res.data.tagNumbers.map((tag) => ({\n tagNumber: tag.formattedDevice.tagNumber ? tag.formattedDevice.tagNumber : tag.originalIdentifier,\n valid: tag.state\n }));\n\n setAnimalsToChange(newTags);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setPending(false);\n errors.BFF(error, setModal);\n }\n });\n }\n }\n };\n\n return (\n <>\n {ready &&\n
    \n \n\n {description &&\n
    \n {description.map((desc) => (\n

    \n {helpers.text.getContentsLink(\n t,\n desc,\n () => setModal({\n classNames: ['wide'],\n modalTitle: modalTitle,\n modalMessage: modalMessage\n })\n )}\n

    \n ))}\n
    \n }\n\n {!hideHint &&\n \n }\n
    \n {!hideLabel &&\n \n }\n
    \n \n {({ file }) => (\n
    \n {' '}\n {selectedFile.length > 0 && file?.name}\n
    \n )}\n \n \n
    \n\n
    \n {notes &&
    {notes}
    }\n
    \n\n {invalidFileError &&\n \n }\n {fileError &&\n \n }\n {fileTypeError &&\n \n }\n {maxRecordsError &&\n \n }\n
    \n
    \n }\n \n );\n};\n\nFileUpload.propTypes = {\n acceptExtendedCsv: PropTypes.bool,\n addDate: PropTypes.string,\n description: PropTypes.array,\n hideHint: PropTypes.bool,\n hideTooltip: PropTypes.bool,\n label: PropTypes.string,\n maxTagsAllowed: PropTypes.number,\n modalMessage: PropTypes.string,\n modalTitle: PropTypes.string,\n notes: PropTypes.string,\n onUpload: PropTypes.func,\n pending: PropTypes.bool.isRequired,\n setAnimalsToChange: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n setPending: PropTypes.func.isRequired,\n species: PropTypes.object\n};\n\nexport default FileUpload;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport { bffStatus } from 'services/bff';\nimport classes from 'components/modalAddAnimalsToHolding/modalAddAnimalsToHolding.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport navigation from 'services/navigation';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport userRoleType from 'services/userRoleType';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport FileUpload from 'components/base/fileUpload/fileUpload';\nimport InputDate from 'components/base/inputDate/inputDate';\nimport Table from 'components/table/table';\n\nconst ModalAddAnimalsToHolding = ({\n addDate,\n addDateError,\n clearAll,\n columns,\n confirmReUpload,\n data,\n polling,\n removeAllInvalid,\n requestId,\n setAddDate,\n setAddDateError,\n setData,\n setModal,\n setPermission,\n setUploadPending,\n showConfirmation,\n species,\n submitPending,\n upload,\n uploadPending\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const dataHasInvalidTags = data.some((tag) => helpers.tag.isInvalidExtended(tag));\n const dataHasNonEidTags = data.some((tag) => helpers.tag.isNonEid(tag) && tag.added);\n\n const [infoOpen, setInfoOpen] = useState(true);\n\n const getDates = {\n reportMax: () => {\n const today = new Date();\n\n return helpers.date.formatYYYYMMDD(today);\n },\n\n reportMin: () => {\n const today = new Date();\n\n return helpers.date.formatYYYYMMDD(\n helpers.date.momentToJSDate(\n helpers.date.momentMinDate(\n helpers.date.subtractPeriod(helpers.date.formatYYYYMMDD(today), 7, constants.period.days),\n helpers.date.todayEndOfDay()\n )\n )\n );\n }\n };\n\n const getHelpAndGuidance = () => {\n const translations = [];\n\n for (let i = 1; i <= 39; i++) {\n translations.push('label.addAnimalsToHoldingHelpAndGuidance-content.content-' + i);\n }\n\n return [\n ...translations.map((line) => t(line)),\n ...[\n t('label.addAnimalsToHoldingHelpAndGuidance-content.content-40'),\n t(helpers.tag.getFormatExamples(species.id).description)\n ],\n ...[\n t('label.addAnimalsToHoldingHelpAndGuidance-content.content-41'),\n '
      ',\n ...storeService.session.get.breedsAll()[species.id].map((breed) => '
    • ' + breed.name + '
    • '),\n '
    '\n ].join('')\n ].join('');\n };\n\n const handleChanges = {\n reportDate: (date) => {\n setAddDate(date);\n }\n };\n\n const confirmation = {\n button: {\n viewSummary: (requestId, requestType) => ({\n id: 'viewSummary',\n label: 'button.viewSummary',\n onClick: () => {\n setPermission(userRoleType.GENERIC);\n storeService.session.set.permissions(userRoleType.GENERIC);\n storeService.session.remove.holding();\n\n setTimeout(() => {\n history.push({\n pathname: Routing.activityDetails + requestId,\n state: {\n data: {\n requestId,\n requestType\n }\n }\n });\n }, [100]);\n }\n })\n }\n };\n\n const getConfirmation = {\n content: () => {\n switch (polling?.status) {\n case constants.status.completed_error:\n return 'label.addAnimalsPartialErrorContent';\n\n case constants.status.completed_warning:\n return 'label.uploadAnimalsPartialErrorContent';\n\n default:\n case constants.status.success:\n return null;\n }\n },\n\n label: () => {\n switch (polling?.status) {\n case constants?.status.completed_error:\n return 'label.addAnimalsToHoldingStatus-CompletedError';\n\n case constants.status.completed_warning:\n return 'label.addAnimalsToHoldingStatus-CompletedWarning';\n\n default:\n case constants.status.success:\n return 'label.addAnimalsToHoldingStatus-Success';\n }\n }\n };\n\n const paginationParams = constants.pagination.defaultParams;\n paginationParams[constants.pagination.bottom].total = data?.length;\n\n return (\n <>\n {ready &&\n <>\n
    \n {showConfirmation &&\n item)}\n confirm={{\n id: polling?.requestId,\n label: 'label.reference',\n content: getConfirmation.content(),\n onClick: () => {\n setPermission(userRoleType.GENERIC);\n storeService.session.set.permissions(userRoleType.GENERIC);\n storeService.session.remove.holding();\n history.push(navigation.userActivity());\n }\n }}\n errors={polling?.errors}\n isUnamendable={true}\n label={getConfirmation.label()}\n setModal={setModal}\n status={polling?.status}\n warnings={polling?.warnings}\n />\n }\n {!showConfirmation &&\n <>\n {submitPending &&\n \n }\n {!submitPending &&\n <>\n \n \n \n\n
    \n 0}\n dontValidate={true}\n error={addDateError}\n id=\"onHoldingDate\"\n labelText=\"label.dateAnimalsSeenOnHolding\"\n maxDate={getDates.reportMax()}\n minDate={getDates.reportMin()}\n onChange={(event) => handleChanges.reportDate(event.target.value)}\n setError={setAddDateError}\n value={addDate}\n yearLength={4}\n />\n
    \n\n {addDate &&\n
    \n setInfoOpen(false)}\n pending={uploadPending}\n setAnimalsToChange={upload}\n setModal={setModal}\n setPending={setUploadPending}\n species={species}\n />\n
    \n }\n {data && dataHasInvalidTags &&\n \n }\n {data && !dataHasInvalidTags && dataHasNonEidTags &&\n \n }\n\n {!uploadPending && data.length > 0 &&\n
    \n
    \n \n
    \n
    \n }\n \n }\n \n }\n
    \n \n }\n \n );\n};\n\nModalAddAnimalsToHolding.propTypes = {\n addDate: PropTypes.string,\n addDateError: PropTypes.string.isRequired,\n clearAll: PropTypes.func.isRequired,\n columns: PropTypes.array.isRequired,\n confirmReUpload: PropTypes.bool.isRequired,\n data: PropTypes.array.isRequired,\n polling: PropTypes.exact({\n requestId: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n status: PropTypes.string,\n errors: PropTypes.array,\n warnings: PropTypes.array\n }),\n removeAllInvalid: PropTypes.func.isRequired,\n requestId: PropTypes.string,\n setAddDate: PropTypes.func.isRequired,\n setAddDateError: PropTypes.func.isRequired,\n setData: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setUploadPending: PropTypes.func.isRequired,\n showConfirmation: PropTypes.bool.isRequired,\n species: PropTypes.exact({\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n notifications: PropTypes.number,\n errorFound: PropTypes.number\n }),\n submitPending: PropTypes.bool.isRequired,\n upload: PropTypes.func.isRequired,\n uploadPending: PropTypes.bool.isRequired\n};\n\nexport default ModalAddAnimalsToHolding;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport bff from 'services/bff';\nimport Button from 'components/base/button/button';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport Modal from 'components/base/modal/modal';\nimport ModalConfirm from 'components/base/modalConfirm/modalConfirm';\nimport ModalAddAnimalsToHolding from 'components/modalAddAnimalsToHolding/modalAddAnimalsToHolding';\nimport Table from 'components/table/table';\nimport moment from 'moment';\nconst sprintf = require('util').format;\n\nconst Animals = ({\n setModal,\n setPermission\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const species = storeService.session.get.species();\n const speciesId = storeService.session.get.species().id;\n const cph = storeService.session.get.holding().value;\n\n const holding = storeService.session.get.holding();\n\n const desc1 = 'about.viewAnimals.desc1-' + speciesId;\n const desc2 = helpers.species.isSheepId(speciesId) || helpers.species.isGoatId(speciesId) || helpers.species.isDeerId(speciesId) ? 'about.viewAnimals.desc2' : null;\n const desc3 = helpers.species.isSheepId(speciesId) || helpers.species.isGoatId(speciesId) || helpers.species.isDeerId(speciesId) ? 'about.viewAnimals.desc3' : null;\n const desc4 = helpers.species.isSheepId(speciesId) || helpers.species.isGoatId(speciesId) || helpers.species.isDeerId(speciesId) ? 'about.viewAnimals.desc4' : null;\n const desc5 = helpers.species.isSheepId(speciesId) || helpers.species.isGoatId(speciesId) || helpers.species.isDeerId(speciesId) ? 'about.viewAnimals.desc5' : null;\n\n const [loading, setLoading] = React.useState(false);\n const [modalVisible, setModalVisible] = React.useState(false);\n const [confirmCloseModal, setConfirmCloseModal] = React.useState(false);\n const [confirmSubmitModal, setConfirmSubmitModal] = React.useState(false);\n const [confirmUploadNewFile, setConfirmUploadNewFile] = React.useState(false);\n\n const [uploadPending, setUploadPending] = React.useState(false);\n const [submitPending, setSubmitPending] = React.useState(false);\n const [data, setData] = React.useState([]);\n\n const [modalHasChanges, setModalHasChanges] = React.useState(false);\n const [modalAnimals, setModalAnimals] = React.useState([]);\n const [modalAddDate, setModalAddDate] = React.useState(null);\n const [modalAddDateError, setModalAddDateError] = React.useState('');\n const [showConfirmation, setShowConfirmation] = useState(false);\n const [polling, setPolling] = useState({\n requestId: '',\n status: '',\n errors: [],\n warnings: []\n });\n const [tempUploadedTags, setTempUploadedTags] = useState([]);\n const [renderTable, setRenderTable] = useState(null);\n\n const modal = {\n clearAll: () => {\n setModalAnimals([]);\n setModalHasChanges(false);\n },\n\n closeAndReset: () => {\n setModalAnimals([]);\n setModalAddDate(null);\n setModalAddDateError('');\n setShowConfirmation(false);\n\n setModalVisible(false);\n setModalHasChanges(false);\n },\n\n getContent: () => {\n return (\n \n );\n },\n\n getFooterContent: () => {\n const invalidAnimals = modalAnimals.filter((item) => helpers.tag.isInvalidExtended(item));\n const duplicateAnimals = modalAnimals.filter((item) => item.duplicates.length > 0);\n\n const summaryText = [\n sprintf(\n modalAnimals.length === 1 ? t('label.animalUploaded') : t('label.animalsUploaded'),\n modalAnimals.length\n ),\n invalidAnimals.length > 0 || duplicateAnimals.length > 0 ? '
    ' : '',\n [\n duplicateAnimals.length > 0\n ? sprintf(\n t('label.duplicateAnimals'),\n duplicateAnimals.length\n )\n : '',\n invalidAnimals.length > 0\n ? sprintf(\n invalidAnimals.length === 1 ? t('label.invalidAnimal') : t('label.invalidAnimals'),\n invalidAnimals.length\n )\n : ''\n ].filter((item) => item).join(' - ')\n ].filter((item) => item).join(' ');\n\n return (\n
    \n );\n },\n\n getHeaderContent: () => {\n return (\n <>\n \n {t('label.addAnimalsToHolding')}\n \n );\n },\n\n getModalId: () => {\n return 'modalAddAnimalsUploadFile';\n },\n\n hide: (confirmClose) => {\n if (!submitPending) {\n if (modalHasChanges && !confirmClose) {\n setConfirmCloseModal(true);\n } else if (confirmClose) {\n setConfirmCloseModal(false);\n modal.closeAndReset();\n } else {\n modal.closeAndReset();\n }\n }\n },\n\n removeAnimal: (row) => {\n setModalAnimals((prevState) => {\n if (row.duplicates?.length > 0) {\n row.duplicates.forEach((duplicateIndex) => {\n const duplicateItem = prevState.find((item) => item.index === duplicateIndex);\n const indexToRemove = duplicateItem.duplicates.indexOf(row.index);\n\n duplicateItem.duplicates.splice(indexToRemove, 1);\n });\n }\n\n const newModalAnimals = prevState.filter((animal) => animal.index !== row.index);\n\n if (newModalAnimals.length === 0) {\n setModalHasChanges(false);\n }\n\n return newModalAnimals;\n });\n },\n\n removeAllInvalid: () => {\n setModalAnimals(helpers.animal.removeAllInvalidExtended(modalAnimals));\n },\n\n saveDisabled: () => {\n return (\n submitPending ||\n !modalAnimals.some((item) => item.added) ||\n modalAnimals.some((item) => helpers.tag.isInvalidExtended(item) && item.added) ||\n modalAnimals.some((item) => item.duplicates.length > 0) ||\n !modalAddDate ||\n modalAddDateError !== ''\n );\n }\n };\n\n const handleChanges = {\n addDate: (date) => {\n let hasError = false;\n\n setModalHasChanges(true);\n setModalAddDate(date);\n setModalAddDateError('');\n\n const addDateIsInTheFuture = helpers.date.is.inTheFuture(date, 'default');\n const addDateIsOverSevenDaysAgo = helpers.date.is.overSevenDaysAgo(date, 'error.dateGT7day2');\n\n if (addDateIsInTheFuture) {\n setModalAddDateError(addDateIsInTheFuture);\n\n hasError = true;\n }\n\n if (!hasError && addDateIsOverSevenDaysAgo) {\n setModalAddDateError(addDateIsOverSevenDaysAgo);\n }\n },\n\n confirmUpload: (uploadedTags) => {\n if (modalAnimals.length > 0) {\n setTempUploadedTags(uploadedTags);\n setConfirmUploadNewFile(true);\n } else {\n setConfirmUploadNewFile(false);\n handleChanges.upload(uploadedTags);\n }\n },\n\n saveChanges: () => {\n setConfirmSubmitModal(false);\n setSubmitPending(true);\n\n const params = {\n poll: config.POLLS_ENABLED,\n holding: holding.value,\n species: species.name,\n addDate: modalAddDate,\n devices: modalAnimals.map((device) => ({\n dob: device.dobToDisplay\n ? (\n !isNaN(device.dobToDisplay)\n ? device.dobToDisplay\n : helpers.date.formatDDMMYYYYtoYYYMMDD(device.dobToDisplay)\n )\n : null,\n gender: device.genderName,\n breed: device.breedName,\n tagNumber: device.tagNumber\n }))\n };\n\n bff\n .post('/addAnimalsToHolding', params)\n .then((response) => {\n storeService.session.removeAll.searchResults();\n setRenderTable(false);\n\n setPolling({\n requestId: String(response.data.requestId),\n status: response.data.poll ? response.data.poll.requestStatus : constants.status.claPending,\n errors: response.data.poll ? response.data.poll.errors : [],\n warnings: response.data.poll ? response.data.poll.warnings : []\n });\n setShowConfirmation(true);\n setSubmitPending(false);\n setModalHasChanges(false);\n })\n .catch((error) => {\n setSubmitPending(false);\n errors.BFF(error, setModal);\n });\n },\n\n upload: (uploadedTags) => {\n setModalHasChanges(true);\n setConfirmUploadNewFile(false);\n\n setModalAnimals(uploadedTags.map((animal) => ({\n ...animal,\n added: true\n })));\n }\n };\n\n const tableParams = {\n request: {\n url: '/animals',\n params: {\n speciesId: species.id,\n cph\n },\n processData: (data) => helpers.animal.addDobAndAgeForDisplay(data)\n }\n };\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.animals.length) !== Routing.animals) {\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n unListen();\n }\n });\n }, [history]);\n\n useEffect(() => {\n if (!renderTable) {\n setRenderTable(true);\n }\n }, [renderTable]);\n\n const handleDownloadAnimals = () => {\n const tableFilter = storeService.session.get.tableFilters();\n const params = {\n cph,\n speciesId,\n onHoldingDate: helpers.date.now(),\n ageRange: tableFilter?.animalsOnHolding?.ageRange,\n breedName: tableFilter?.animalsOnHolding?.breedName,\n gender: tableFilter?.animalsOnHolding?.gender,\n tagNumber: tableFilter?.animalsOnHolding?.tagNumber,\n pageSize: 'all'\n };\n setLoading(true);\n bff\n .get('/animals', {\n params: params\n })\n .then((res) => {\n const timeStamp = moment().format('DD-MM-YYYY HH mm');\n const filename = `Animals on Holding ${timeStamp}`;\n const holdings = storeService.session.get.holdings();\n const workbook = helpers.generateAnimalWorkbook(holdings[cph], species.name, timeStamp, res.data.data);\n helpers.writeWorkbookToFile(workbook, filename, 'ods');\n })\n .catch((error) => {\n const errorMessage = error.response?.status === 400\n ? {\n response: {\n status: error.response.status,\n data: {\n errorMessage: 'Download failed.

    There are too many animals to download in one go. Please reduce the number of animals to download and try again.'\n }\n }\n }\n : error;\n errors.BFF(errorMessage, setModal);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n return (\n <>\n {ready &&\n <>\n {modalVisible &&\n <>\n modal.hide(false)}\n showConfirmation={showConfirmation}\n submitChanges={() => setConfirmSubmitModal(true)}\n submitDisabled={modal.saveDisabled()}\n submitLabel=\"button.submit\"\n submitPending={submitPending}\n >\n {modal.getContent()}\n \n\n {confirmSubmitModal &&\n setConfirmSubmitModal(false)}\n modalConfirm={handleChanges.saveChanges}\n modalMessage=\"warning.addAnimalsToHolding\"\n modalTitle=\"warning.submitNewAnimals\"\n />\n }\n\n {confirmCloseModal &&\n setConfirmCloseModal(false)}\n modalConfirm={() => modal.hide(true)}\n modalMessage=\"warning.unsavedChanges2\"\n modalTitle=\"warning.youHaveUnsavedChanges\"\n />\n }\n\n {confirmUploadNewFile &&\n setConfirmUploadNewFile(false)}\n modalConfirm={() => handleChanges.upload(tempUploadedTags)}\n modalMessage=\"warning.unsavedChanges3\"\n modalTitle=\"warning.youHaveUnsavedChanges\"\n />\n }\n \n }\n\n

    {t('menu.animalsOnHolding')}

    \n

    {t('animalsOnHolding.subtitle')}

    \n setModalVisible(true) }\n ]}\n title=\"about.viewAnimals.title\"\n />\n\n Routing.animals,\n accessor: 'tagNumber',\n state: (row) => ({\n data: row\n })\n }}\n setData={setData}\n setModal={setModal}\n store={{\n filters: 'AnimalsOnHolding',\n data: 'AnimalsOnHolding'\n }}\n />\n
    \n \n
    \n \n }\n \n );\n};\n\nAnimals.propTypes = {\n setModal: PropTypes.func.isRequired,\n setPermission: PropTypes.func.isRequired\n};\n\nexport default Animals;\n","import React, { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport axios from 'axios';\nimport bff, { isCancel } from 'services/bff';\nimport classes from 'frontEnd/animals/animalDetails/animalDetails.module.scss';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport Button from 'components/base/button/button';\nimport FieldLabel from 'components/base/fieldLabel/fieldLabel';\nimport Linker from 'components/base/linker/linker';\nimport Table from 'components/table/table';\n\nconst AnimalDetails = ({\n location,\n match,\n setModal\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const animalsList = location?.state?.data?.animalsList;\n\n const isTagInMyHolding = (tag) => {\n const matchTag = animalsList?.find((animalItem) => animalItem.tagNumber === tag || animalItem.rfid === tag);\n return matchTag !== undefined;\n };\n\n const currentCPH = storeService.session.get.holding().value;\n const species = storeService.session.get.species();\n\n const [data, setData] = React.useState({});\n const [showProgeny, setShowProgeny] = React.useState(false);\n const [currentId, setCurrentId] = React.useState(null);\n\n const paginationParams = {\n individual: {\n ...constants.pagination.defaultParams,\n [constants.pagination.bottom]: {\n ...constants.pagination.defaultParams[constants.pagination.bottom],\n hideTotal: true\n }\n },\n progeny: {\n ...constants.pagination.defaultParams,\n [constants.pagination.bottom]: {\n ...constants.pagination.defaultParams[constants.pagination.bottom],\n hideTotal: true\n }\n },\n tagReplacement: {\n ...constants.pagination.defaultParams,\n [constants.pagination.bottom]: {\n ...constants.pagination.defaultParams[constants.pagination.bottom],\n hideTotal: true\n }\n }\n };\n\n paginationParams.individual[constants.pagination.bottom].total = data.movements?.length;\n paginationParams.progeny[constants.pagination.bottom].total = data.progenies?.length;\n paginationParams.tagReplacement[constants.pagination.bottom].total = data.tagReplacements?.length;\n\n const createDataWithExtraInfo = (data) => {\n if (data.dob && data.age) {\n const animalWithSameDay = helpers.date.withSameCalendarDay(data.dob, data.age);\n const tempAge = helpers.date.ageInYears(data.dob);\n\n data.formattedDob = animalWithSameDay ? helpers.date.format(data.dob) : moment(data.dob).year();\n data.formattedAge = animalWithSameDay ? helpers.get.age(data.dob) : tempAge === 0 ? t('label.ageOneYear.under') : tempAge + t('label.ageOneYear.above');\n } else {\n data.formattedDob = '-';\n data.formattedAge = '-';\n }\n\n const initialTagging = {\n replacementDate: data.dateApplied ? data.dateApplied : null,\n requestId: data.initialTaggingRequestId\n };\n\n if (data.tagReplacements?.length > 0) {\n initialTagging.replacedIdentifier = data.tagReplacements[0].replacedIdentifier;\n } else {\n initialTagging.replacedIdentifier = data.tagNumber;\n }\n\n if (data.tagReplacements) {\n data.tagReplacements.unshift(initialTagging);\n }\n\n if (data.movements?.length > 0) {\n helpers.sortArrayOfObjects(data.movements, 'dom', constants.sorting.descending);\n }\n\n setData(data);\n };\n\n const displayTagNumber = (label, value) => {\n if (helpers.tag.canLink(value)) {\n return (\n
    \n \n {t(label)}\n \n {isTagInMyHolding(value)\n ? \n : {value}\n }\n
    \n );\n }\n };\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n setCurrentId(match.params.tagNumber);\n\n bff\n .get('/animalDetails', {\n cancelToken: source.token,\n params: {\n speciesId: species.id,\n tagNumber: match.params.tagNumber,\n cph: currentCPH\n }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n createDataWithExtraInfo(res.data.data[0]);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [match.params.tagNumber]);\n\n return (\n <>\n {ready &&\n <>\n \n\n
    \n
    \n

    {currentId}

    \n
    \n
    \n\n
    \n
    \n
    \n
    \n {t('label.breed')}\n {data.breedName}\n
    \n
    \n {t('label.gender')}\n {data.genderName === '-' ? t('label.unknown') : data.genderName}\n
    \n
    \n {t('label.yearDob')}\n {data.formattedDob}\n
    \n
    \n {t('label.age')}\n {data.formattedAge}\n
    \n
    \n
    \n
    \n {helpers.species.isCattleId(species.id) &&\n
    \n {displayTagNumber('label.damId', data.damTagNumber)}\n {displayTagNumber('label.geneticDamId', data.geneticDamTagNumber)}\n {displayTagNumber('label.sireId', data.sireTagNumber)}\n
    \n }\n\n {!helpers.species.isCattleId(species.id) &&\n
    \n {displayTagNumber('label.damId', data.damTagNumber)}\n {displayTagNumber('label.geneticDamId', data.geneticDamTagNumber)}\n {displayTagNumber('label.sireId', data.sireTagNumber)}\n
    \n }\n
    \n
    \n\n {(\n data.movements?.length > 0 ||\n data.death ||\n data.progenies?.length > 0 ||\n data.tagReplacements?.length > 0\n ) &&\n
    \n {data.movements?.length > 0 &&\n
    \n \n

    {t('label.movement')}

    \n
    \n
    \n \n
    \n
    \n }\n\n {data.death &&\n <>\n
    \n
    \n

    {t('label.death')}

    \n
    \n
    \n
    \n
    \n \n {data.death.killDate}\n
    \n
    \n \n {data.death.killHolding}\n
    \n
    \n \n {data.death.requestId}\n
    \n
    \n
    \n
    \n
    \n \n }\n\n {data.progenies?.length > 0 &&\n
    \n \n

    {t('label.progeny')}

    \n
    \n
    \n \n
    \n
    \n }\n\n {data.tagReplacements?.length > 0 &&\n
    \n \n

    {t('label.taggingHistory')}

    \n
    \n
    \n \n
    \n
    \n }\n
    \n }\n\n
    \n
    \n
    \n history.push(Routing.animals)}\n />\n
    \n
    \n \n }\n \n );\n};\n\nAnimalDetails.propTypes = {\n location: PropTypes.object,\n setModal: PropTypes.func.isRequired\n};\n\nexport default AnimalDetails;\n","import storeService from 'services/storeService';\n\nconst recentlyUsedHelper = {\n setRecentlyUsedList: (dropdownType, selectedOption) => {\n const storedDropdownName = 'dropdown' + dropdownType;\n const recentlyUsedList = storeService.local.get[storedDropdownName]();\n\n if (!recentlyUsedList) {\n storeService.local.set[storedDropdownName]([{\n label: selectedOption,\n name: selectedOption,\n value: selectedOption\n }]);\n\n return;\n }\n\n if (!recentlyUsedList.find((item) => item.value === selectedOption)) {\n recentlyUsedList.unshift({\n label: selectedOption,\n name: selectedOption,\n value: selectedOption\n });\n\n if (recentlyUsedList.length > 5) {\n recentlyUsedList.pop();\n }\n\n storeService.local.set[storedDropdownName](recentlyUsedList);\n }\n },\n\n setRecentlyUsedBreedList: (selectedOption, speciesId) => {\n const storedBreedDropdownName = 'dropdownBreed' + speciesId;\n const recentlyUsedList = storeService.local.get[storedBreedDropdownName]();\n\n if (!recentlyUsedList) {\n storeService.local.set[storedBreedDropdownName]([selectedOption]);\n return;\n }\n\n recentlyUsedList.forEach((el) => {\n if (JSON.stringify(el) === JSON.stringify(selectedOption)) {\n const index = recentlyUsedList.indexOf(el);\n recentlyUsedList.splice(index, 1);\n }\n });\n recentlyUsedList.unshift(selectedOption);\n if (recentlyUsedList.length > 5) {\n recentlyUsedList.pop();\n }\n storeService.local.set[storedBreedDropdownName](recentlyUsedList);\n },\n\n getRecentlyUsedList: (dropdownType) => {\n return storeService.local.get['dropdown' + dropdownType]();\n }\n};\n\nexport default recentlyUsedHelper;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport DropdownSearch from 'components/base/dropdownSearch/dropdownSearch';\nimport breedsHelper from 'services/breedsHelper';\nimport recentlyUsedHelper from 'services/recentlyUsedHelper';\n\nconst DropdownBreeds = ({\n className,\n error,\n label,\n name,\n onChange,\n optional,\n value\n}) => {\n let itemList = [];\n const speciesId = storeService.session.get.species() ? storeService.session.get.species().id : 1;\n\n const [recentlyUsed, setRecentlyUsed] = useState(recentlyUsedHelper.getRecentlyUsedList('Breed' + speciesId));\n const [optionsToSend, setOptionsToSend] = useState([]);\n const [pending, setPending] = useState(true);\n\n useEffect(() => {\n if (itemList.length === 0) {\n getData();\n } else {\n updateRecentList();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const getData = () => {\n itemList = breedsHelper.getBreeds();\n\n if (itemList.length === 0) {\n const breedsCheck = setInterval(() => {\n itemList = breedsHelper.getBreeds();\n\n if (itemList.length > 0) {\n setItemList();\n clearInterval(breedsCheck);\n }\n }, 500);\n } else {\n setItemList();\n }\n };\n\n const setItemList = () => {\n let listLabel = '';\n if (recentlyUsed) {\n setOptionsToSend((arr) => [...arr, { name: '', type: 'group', items: recentlyUsed }]);\n if (recentlyUsed.length) {\n listLabel = '---';\n }\n }\n setOptionsToSend((arr) => [...arr, { name: listLabel, type: 'group', items: itemList }]);\n\n setPending(false);\n };\n\n const updateRecentList = () => {\n if (JSON.stringify(recentlyUsed) !== JSON.stringify(recentlyUsedHelper.getRecentlyUsedList('Breed' + speciesId))) {\n setRecentlyUsed(recentlyUsedHelper.getRecentlyUsedList('Breed' + speciesId));\n setOptionsToSend([]);\n setOptionsToSend((arr) => [...arr, { name: 'Recently Used', type: 'group', items: recentlyUsed }]);\n setOptionsToSend((arr) => [...arr, { name: 'All Breeds', type: 'group', items: itemList }]);\n }\n };\n\n const dropdownLabel = () => {\n return label?.length > 0 ? label : 'label.breed';\n };\n\n return (\n \n );\n};\n\nDropdownBreeds.propTypes = {\n className: PropTypes.object,\n error: PropTypes.string,\n label: PropTypes.string,\n name: PropTypes.string,\n onChange: PropTypes.func,\n optional: PropTypes.bool,\n value: PropTypes.string\n};\n\nexport default DropdownBreeds;\n","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport recentlyUsedHelper from 'services/recentlyUsedHelper';\nimport storeService from 'services/storeService';\nimport DropdownSearch from 'components/base/dropdownSearch/dropdownSearch';\n\nconst DropdownDamIds = ({\n error,\n label,\n name,\n onChange,\n optional,\n setModal,\n value\n}) => {\n const [optionsToSend, setOptionsToSend] = useState([]);\n const [pending, setPending] = useState(true);\n\n const handleChange = (event) => {\n const selectedValue = event.target.value;\n const recentlyUsed = recentlyUsedHelper.getRecentlyUsedList('BirthDamId');\n if (!recentlyUsed || !recentlyUsed.some((item) => item.value === selectedValue)) {\n recentlyUsedHelper.setRecentlyUsedList('BirthDamId', selectedValue);\n }\n onChange(event);\n };\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n const params = {\n cph: storeService.session.get.holding().value,\n speciesId: storeService.session.get.species().id,\n onHoldingDate: helpers.date.now(),\n gender: 'F',\n dropdown: true\n };\n\n const setData = (data) => {\n if (data.length > 0) {\n setOptionsToSend(data);\n }\n };\n\n helpers.get.animalsOnHolding(\n source.token,\n params,\n setModal,\n setPending,\n setData\n );\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n );\n};\n\nDropdownDamIds.propTypes = {\n error: PropTypes.string,\n label: PropTypes.string,\n name: PropTypes.string,\n onChange: PropTypes.func,\n optional: PropTypes.bool,\n setModal: PropTypes.func.isRequired,\n value: PropTypes.string\n};\n\nexport default DropdownDamIds;\n","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport recentlyUsedHelper from 'services/recentlyUsedHelper';\nimport storeService from 'services/storeService';\nimport DropdownSearch from 'components/base/dropdownSearch/dropdownSearch';\n\nconst DropdownSireIds = ({\n error,\n label,\n name,\n onChange,\n optional,\n setModal,\n value\n}) => {\n const [pending, setPending] = useState(true);\n const [optionsToSend, setOptionsToSend] = useState([]);\n\n const handleChange = (event) => {\n const selectedValue = event.target.value;\n const recentlyUsed = recentlyUsedHelper.getRecentlyUsedList('SireId');\n if (!recentlyUsed || !recentlyUsed.some((item) => item.value === selectedValue)) {\n recentlyUsedHelper.setRecentlyUsedList('SireId', selectedValue);\n }\n onChange(event);\n };\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n const params = {\n cph: storeService.session.get.holding().value,\n speciesId: storeService.session.get.species().id,\n onHoldingDate: helpers.date.now(),\n gender: 'M',\n dropdown: true\n };\n\n const setData = (data) => {\n if (data.length > 0) {\n const recentlyUsed = recentlyUsedHelper.getRecentlyUsedList('SireId');\n if (recentlyUsed) {\n setOptionsToSend([\n { label: 'Recently Used', type: 'group', options: recentlyUsed },\n { label: 'All Sires', type: 'group', options: data }\n ]);\n } else {\n setOptionsToSend([\n { label: 'All Sires', type: 'group', options: data }\n ]);\n }\n }\n };\n\n helpers.get.animalsOnHolding(\n source.token,\n params,\n setModal,\n setPending,\n setData\n );\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n );\n};\n\nDropdownSireIds.propTypes = {\n error: PropTypes.string,\n label: PropTypes.string,\n name: PropTypes.string,\n onChange: PropTypes.func,\n optional: PropTypes.bool,\n setModal: PropTypes.func.isRequired,\n value: PropTypes.string\n};\n\nexport default DropdownSireIds;\n","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport bff, { isCancel } from 'services/bff';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport DropdownSearch from 'components/base/dropdownSearch/dropdownSearch';\n\nconst DropdownTagNumbersAvailable = ({\n applicationDate,\n className,\n disabled,\n includeSystemAppliedTags,\n label,\n name,\n onChange,\n setModal,\n tooltip,\n value\n}) => {\n const [itemList, setItemList] = useState([]);\n const [systemAppliedTagsPresent, setSystemAppliedTagsPresent] = useState(false);\n const [notAppliedTagsPending, setNotAppliedTagsPending] = useState(false);\n const [systemAppliedTagsPending, setSystemAppliedTagsPending] = useState(false);\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n if (!notAppliedTagsPending) {\n setNotAppliedTagsPending(true);\n\n bff\n .get('/tagsNotApplied', {\n cancelToken: source.token,\n params: {\n speciesId: storeService.session.get.species().id,\n cph: storeService.session.get.holding().value\n }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setNotAppliedTagsPending)) {\n setItemList((items) => helpers.sortArrayOfObjects([\n ...items,\n ...res.data\n ], 'name', constants.sorting.ascending));\n\n setNotAppliedTagsPending(false);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setNotAppliedTagsPending(false);\n errors.BFF(error, setModal);\n }\n });\n }\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n if (includeSystemAppliedTags && !systemAppliedTagsPending && applicationDate) {\n setSystemAppliedTagsPending(true);\n\n bff\n .get('/systemAppliedTags', {\n cancelToken: source.token,\n params: {\n applicationDate: helpers.date.formatForSubmission(applicationDate)\n }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setSystemAppliedTagsPending)) {\n setItemList((items) => helpers.sortArrayOfObjects([\n ...items.filter((tag) => !tag.isSystemApplied),\n ...res.data.map((tag) => ({\n label: tag.systemAppliedTagNumber,\n name: tag.systemAppliedTagNumber + ' *',\n value: tag.systemAppliedTagNumber,\n isSystemApplied: true\n }))\n ], 'name', constants.sorting.ascending));\n setSystemAppliedTagsPresent(Boolean(res.data?.length));\n setSystemAppliedTagsPending(false);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setSystemAppliedTagsPending(false);\n errors.BFF(error, setModal);\n }\n });\n }\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [includeSystemAppliedTags, applicationDate]);\n\n return (\n \n );\n};\n\nDropdownTagNumbersAvailable.propTypes = {\n applicationDate: PropTypes.string,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n includeSystemAppliedTags: PropTypes.bool,\n label: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n tooltip: PropTypes.string,\n value: PropTypes.string\n};\n\nexport default DropdownTagNumbersAvailable;\n","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport DropdownSearch from 'components/base/dropdownSearch/dropdownSearch';\n\nconst DropdownGeneticDamIds = ({\n error,\n label,\n name,\n onChange,\n setModal,\n value\n}) => {\n const [itemList, setItemList] = useState([]);\n const [pending, setPending] = useState(true);\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n const params = {\n cph: storeService.session.get.holding().value,\n speciesId: storeService.session.get.species().id,\n onHoldingDate: helpers.date.now(),\n gender: 'F',\n dropdown: true\n };\n helpers.get.animalsOnHolding(\n source.token,\n params,\n setModal,\n setPending,\n setItemList\n );\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n );\n};\n\nDropdownGeneticDamIds.propTypes = {\n error: PropTypes.string,\n label: PropTypes.string,\n name: PropTypes.string,\n onChange: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n value: PropTypes.string\n};\n\nexport default DropdownGeneticDamIds;\n","import React from 'react';\nimport config from 'config';\nimport PropTypes from 'prop-types';\nimport DropdownGeneticDamIds from 'components/dropdownGeneticDamIds/dropdownGeneticDamIds';\nimport FieldLabel from 'components/base/fieldLabel/fieldLabel';\nimport Tabs from 'components/base/tabs/tabs';\nimport TextEntry from 'components/base/textEntry/textEntry';\nimport constants from 'services/constants';\n\nconst GeneticDamTab = ({\n activeTabId,\n geneticDamAI,\n geneticDamId,\n geneticDamIdError,\n geneticDamTabs,\n setActiveTabId,\n setGeneticDamAI,\n setGeneticDamId,\n setModal\n}) => {\n return (\n <>\n \n \n
    \n
    \n setGeneticDamId(event.target.value)}\n setModal={setModal}\n value={geneticDamId}\n />\n
    \n
    \n
    \n
    \n setGeneticDamAI(event.target.value)}\n value={geneticDamAI}\n width={config.WIDTH_TAGS}\n />\n
    \n
    \n
    \n \n );\n};\n\nGeneticDamTab.propTypes = {\n activeTabId: PropTypes.string.isRequired,\n geneticDamAI: PropTypes.string,\n geneticDamId: PropTypes.string,\n geneticDamIdError: PropTypes.string,\n geneticDamTabs: PropTypes.object,\n setActiveTabId: PropTypes.func.isRequired,\n setGeneticDamAI: PropTypes.func,\n setGeneticDamId: PropTypes.func,\n setModal: PropTypes.func.isRequired\n};\n\nexport default GeneticDamTab;\n","import React, { createRef, useEffect, useState } from 'react';\nimport { Redirect, useHistory } from 'react-router-dom';\nimport { Prompt } from 'react-router';\nimport { useTranslation } from 'react-i18next';\nimport bff from 'services/bff';\nimport breedsHelper from 'services/breedsHelper';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport navigation from 'services/navigation';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport userRoleType from 'services/userRoleType';\nimport Routing from 'routing';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport Button from 'components/base/button/button';\nimport CheckBox from 'components/base/checkbox/checkbox';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport InputDate from 'components/base/inputDate/inputDate';\nimport DropdownBreeds from 'components/dropdownBreeds/dropdownBreeds';\nimport DropdownDamIds from 'components/dropdownDamIds/dropdownDamIds';\nimport DropdownSireIds from 'components/dropdownSireIds/dropdownSireIds';\nimport DropdownTagNumbersAvailable from 'components/dropdownTagNumbersAvailable/dropdownTagNumbersAvailable';\nimport GeneticDamTab from 'components/geneticDamTab/geneticDamTab';\nimport Legend from 'components/base/legend/legend';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport Tabs from 'components/base/tabs/tabs';\nimport TextEntry from 'components/base/textEntry/textEntry';\n\nconst Births = ({\n location,\n setModal,\n setPermission\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const geneticDamTabs = createRef();\n const sireTabs = createRef();\n\n const sessionDataChanged = storeService.session.get.dataChanged();\n\n const [dataChanged, setDataChanged] = React.useState(sessionDataChanged ? sessionDataChanged : false);\n\n const [tagNumber, setTagNumber] = useState(null);\n const [breedId, setBreedId] = useState(null);\n const [birthDamId, setBirthDamId] = useState(null);\n const [geneticDamId, setGeneticDamId] = useState(null);\n const [geneticDamAI, setGeneticDamAI] = useState(null);\n const [sireId, setSireId] = useState(null);\n const [sireAI, setSireAI] = useState(null);\n const [gender, setGender] = useState(null);\n const [embryo, setEmbryo] = useState(constants.option.embryo.no);\n const [entryDate, setEntryDate] = useState(null);\n const [entryDateError, setEntryDateError] = useState('');\n const [entryDateWarning, setEntryDateWarning] = useState('');\n const [registerAnother, setRegisterAnother] = useState(false);\n const [disableSubmit, setDisableSubmit] = useState(false);\n const [geneticDamIdError, setGeneticDamIdError] = useState(null);\n const [genderError, setGenderError] = useState(null);\n\n const [activeTabGeneticDam, setActiveTabGeneticDam] = useState(constants.tabs.onHolding);\n const [activeTabSire, setActiveTabSire] = useState(constants.tabs.onHolding);\n\n const sessionSpecies = storeService.session.get.species();\n const speciesId = sessionSpecies ? sessionSpecies.id : '';\n const tagNumberLabel = 'label.tagNumber' + speciesId;\n\n const defaults = () => {\n setTagNumber(null);\n setBreedId(null);\n setGeneticDamId(null);\n setGeneticDamAI(null);\n setGender(null);\n setEmbryo(constants.option.embryo.no);\n\n if (geneticDamTabs.current) {\n geneticDamTabs.current.reset();\n }\n if (sireTabs.current) {\n sireTabs.current.reset();\n }\n\n if (!registerAnother) {\n setBirthDamId(null);\n setSireId(null);\n setSireAI(null);\n setEntryDate(null);\n setEntryDateError('');\n setEntryDateWarning('');\n }\n };\n\n const validateForm = () => {\n let errorCount = 0;\n\n if (helpers.option.embryo.isTransfer(embryo)) {\n if (!geneticDamId && !geneticDamAI) {\n errorCount++;\n setGeneticDamIdError('error.selection');\n geneticDamTabs.current.onClickTabItem(constants.tabs.onHolding);\n }\n } else {\n setGeneticDamIdError(null);\n }\n\n if (!gender) {\n errorCount++;\n setGenderError('error.gender');\n }\n\n return errorCount === 0;\n };\n\n const handleSubmit = () => {\n if (validateForm()) {\n setDisableSubmit(true);\n\n bff\n .post('/birth', {\n species: storeService.session.get.species().name,\n cph: storeService.session.get.holding().value,\n tagNumber,\n breed: breedId,\n breedName: breedsHelper.getBreedName(breedId),\n birthDamId: birthDamId,\n geneticDamId: geneticDamAI\n ? geneticDamAI\n : geneticDamId ? geneticDamId : '',\n geneticDamAI,\n sireId: sireAI\n ? sireAI\n : sireId ? sireId : '',\n gender,\n embryo,\n dob: entryDate\n })\n .then((res) => {\n setDataChanged(false);\n storeService.session.remove.dataChanged();\n storeService.session.set.confirmRequestId(String(res.data.requestId));\n\n history.push(Routing.birthsConfirm);\n helpers.scrollToTop();\n defaults();\n })\n .catch((error) => {\n errors.BFF(error, setModal);\n setDisableSubmit(false);\n });\n }\n };\n\n const validateDate = (date) => {\n let hasError = false;\n\n setEntryDateError('');\n setEntryDateWarning('');\n\n const dateIsOver27DaysAgo = helpers.date.is.xDaysInThePast(date, config.MAX_BIRTH_DATE_RANGE);\n const dateIsInTheFuture = helpers.date.is.inTheFuture(date, constants.dateTypes.birth);\n\n if (!hasError && dateIsInTheFuture) {\n setEntryDateError(dateIsInTheFuture);\n\n hasError = true;\n }\n\n if (!hasError && dateIsOver27DaysAgo) {\n setEntryDateWarning('warning.birthDateBelowRange');\n }\n };\n\n const handleChanges = {\n activeTabGeneticDam: (tab) => {\n setActiveTabGeneticDam(tab);\n storeService.session.set.birthActiveTabGeneticDam(tab);\n },\n\n activeTabSire: (tab) => {\n setActiveTabSire(tab);\n storeService.session.set.birthActiveTabSire(tab);\n },\n\n birthDamId: (event) => {\n setBirthDamId(event.target.value);\n storeService.session.set.birthDamId(event.target.value);\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n breed: (event) => {\n setBreedId(event.target.value);\n storeService.session.set.birthBreed({\n id: event.target.value,\n name: breedsHelper.getBreedName(event.target.value)\n });\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n date: (date) => {\n setEntryDate(date);\n storeService.session.set.birthBirthDate(date);\n validateDate(date);\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n embryo: (event) => {\n setEmbryo(event.target.value);\n setGeneticDamAI(null);\n setGeneticDamId(null);\n storeService.session.set.birthEmbryo(event.target.value);\n storeService.session.remove.birthGeneticDamId();\n storeService.session.remove.birthGeneticDamAI();\n setGeneticDamIdError(null);\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n gender: (event) => {\n setGender(event.target.value);\n storeService.session.set.birthGender(event.target.value);\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n geneticDamAI: (event) => {\n setGeneticDamAI(event);\n setGeneticDamId(null);\n storeService.session.set.birthGeneticDamAI(event);\n storeService.session.remove.birthGeneticDamId();\n },\n\n geneticDamId: (event) => {\n setGeneticDamId(event);\n setGeneticDamAI(null);\n storeService.session.set.birthGeneticDamId(event);\n storeService.session.remove.birthGeneticDamAI();\n },\n\n registerAnother: () => {\n const another = !registerAnother;\n setRegisterAnother(another);\n if (another) {\n storeService.session.set.birthRegisterAnother(another);\n } else {\n storeService.session.remove.birthRegisterAnother();\n }\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n sireAI: (event) => {\n setSireAI(event.target.value);\n setSireId(null);\n storeService.session.set.birthSireAI(event.target.value);\n storeService.session.remove.birthSireId();\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n sireId: (event) => {\n setSireId(event.target.value);\n setSireAI(null);\n storeService.session.set.birthSireId(event.target.value);\n storeService.session.remove.birthSireAI();\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n tagNumber: (event) => {\n setTagNumber(event.target.value);\n storeService.session.set.birthTagNumber(event.target.value);\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n }\n };\n\n const getDates = {\n dateMax: () => {\n const today = new Date();\n\n return helpers.date.formatYYYYMMDD(today);\n }\n };\n\n useEffect(() => {\n const status =\n !tagNumber ||\n !breedId ||\n !birthDamId ||\n !gender ||\n (helpers.option.embryo.isTransfer(embryo) && !geneticDamAI && !geneticDamId) ||\n !entryDate ||\n entryDateError;\n\n setDisableSubmit(status);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tagNumber, breedId, birthDamId, gender, embryo, geneticDamAI, geneticDamId, entryDate, entryDateError, setDisableSubmit]);\n\n useEffect(() => {\n const sessionTagNumber = storeService.session.get.birthTagNumber();\n const sessionBirthDate = storeService.session.get.birthBirthDate();\n const sessionBreed = storeService.session.get.birthBreed();\n const sessionGender = storeService.session.get.birthGender();\n const sessionEmbryo = storeService.session.get.birthEmbryo();\n const sessionBirthDamId = storeService.session.get.birthDamId();\n const sessionSireId = storeService.session.get.birthSireId();\n const sessionSireAI = storeService.session.get.birthSireAI();\n const sessionActiveTabGeneticDam = storeService.session.get.birthActiveTabGeneticDam();\n const sessionActiveTabSire = storeService.session.get.birthActiveTabSire();\n\n if (sessionTagNumber) {\n setTagNumber(sessionTagNumber);\n }\n\n if (sessionBirthDate) {\n setEntryDate(sessionBirthDate);\n validateDate(sessionBirthDate);\n }\n\n if (sessionBreed) {\n setBreedId(sessionBreed.id ? sessionBreed.id : null);\n }\n\n if (sessionGender) {\n setGender(sessionGender);\n }\n\n if (sessionEmbryo) {\n setEmbryo(sessionEmbryo);\n\n if (helpers.option.embryo.isTransfer(sessionEmbryo)) {\n const sessionGeneticDamId = storeService.session.get.birthGeneticDamId();\n const sessionGeneticDamAI = storeService.session.get.birthGeneticDamAI();\n\n if (sessionGeneticDamId) {\n setGeneticDamId(sessionGeneticDamId);\n }\n\n if (sessionGeneticDamAI) {\n setGeneticDamAI(sessionGeneticDamAI);\n }\n }\n }\n\n if (sessionBirthDamId) {\n setBirthDamId(sessionBirthDamId);\n }\n\n if (sessionSireId) {\n setSireId(sessionSireId);\n }\n\n if (sessionSireAI) {\n setSireAI(sessionSireAI);\n }\n\n if (sessionActiveTabGeneticDam) {\n setActiveTabGeneticDam(sessionActiveTabGeneticDam);\n }\n\n if (sessionActiveTabSire) {\n setActiveTabSire(sessionActiveTabSire);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [setTagNumber]);\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.births.length) !== Routing.births) {\n storeService.session.remove.dataChanged();\n storeService.session.removeAll.birth();\n storeService.session.removeAll.confirm();\n unListen();\n }\n });\n\n window.onpopstate = () => {\n if (storeService.session.get.confirm()) {\n history.push(Routing.births);\n }\n };\n }, [history]);\n\n const stepPicker = (pathname) => {\n switch (pathname) {\n case Routing.births:\n default: {\n storeService.session.removeAll.confirm();\n\n return (\n <>\n
    \n \n
    \n
    \n handleChanges.date(event.target.value)}\n setError={setEntryDateError}\n value={entryDate}\n warning={entryDateWarning}\n yearLength={4}\n />\n
    \n
    \n \n
    \n \n \n {helpers.option.embryo.isTransfer(embryo) &&\n
    \n \n
    \n }\n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n \n
    \n \n );\n }\n\n case Routing.birthsConfirm: {\n const requestId = storeService.session.get.confirmRequestId();\n\n if (!requestId) {\n return ;\n }\n\n return (\n {\n setPermission(userRoleType.GENERIC);\n storeService.session.set.permissions(userRoleType.GENERIC);\n storeService.session.remove.holding();\n history.push(navigation.userActivity());\n }\n }}\n label=\"birth.submitted\"\n setModal={setModal}\n status={constants.status.success} // Hardcoding this until we have polling for this section\n />\n );\n }\n }\n };\n\n return (\n <>\n {ready &&\n <>\n {\n return (!storeService.session.get.idle() && dataChanged && (params.pathname.substring(0, Routing.births.length) !== Routing.births || params.pathname === Routing.births)) ? t('warning.unsavedChanges2') : true;\n }}\n />\n

    {t('menu.births')}

    \n\n \n\n
    \n
    \n {stepPicker(location.pathname)}\n
    \n
    \n \n }\n \n );\n};\n\nBirths.propTypes = {\n location: PropTypes.object.isRequired,\n setModal: PropTypes.func.isRequired\n};\n\nexport default Births;\n","var _g;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgIconSheep = function SvgIconSheep(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 50 35\",\n width: 50,\n height: 50,\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0.015 -12.337)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2,33.3v3.3c0,0.4,0.1,0.8,0.2,1.2c0.3,0.6,0.6,1.1,0.9,1.6c0.5,0.6,0.1,1,0.1,1.4 C3,41.4,3,41.9,3,42.4V47c0,0.2,0.2,0.3,0.5,0.3l-0.1,1.2c0.4,0,0.8-0.1,1.2-0.1c0.3-0.1,0.7-0.3,1-0.4c-0.1-0.3-0.4-0.6-0.7-0.8 c-0.2-0.1-0.1-0.3-0.1-0.3c0-1.4,0.2-2.8,0.4-4.2c0-0.4,0.2-0.7,0.4-0.9c0.4-0.3,1.2-0.8,1.2-0.8s0.2-0.2,0.4-0.1 c0.1,0.1,0.1,0.2,0.1,0.4c0.1,0.1,0.6,3.2,0.6,3.2s0.5,2.2,0.6,2.4S8.6,47,8.8,47c0.2,0.1,0.4,0,0.5,0.2c0.1,0.2,0.1,0.4,0.1,0.7 l0.1,0.6c0.2-0.2,0.7,0,0.9-0.1c0.2-0.1,0.4-0.2,0.6-0.2c0-0.2-0.1-0.5-0.1-0.7c-0.1-0.2-0.3-0.2-0.4-0.3v-0.2 c-0.1-0.9-0.3-1.9-0.6-2.9c0-1,0-2-0.1-3.1c0.1,0-0.1-1.8,1.2-2.5c1.1-0.5,1.5,0,2.3,0.1c2.4,0.5,4.8,0.8,7.3,0.8 c3.9,0,4.3-0.5,5-0.3c0.5,0.1,0.9,0.8,1.4,1.3c0.3,0.4,0.5,0.8,0.5,1.3c-0.1,0.8-0.2,1.5-0.4,2.3c-0.2,0.9-0.3,1.9-0.2,2.9 c0.2,0.1,0.4,0.2,0.6,0.2c0,0.4,0,0.8,0.1,1.2c0.4,0.1,0.8,0.2,1.2,0.2c0.3,0,0.7-0.4,1-0.6c-0.1-0.5-0.4-1-0.7-1.5 c-0.1-0.1-0.1-0.3-0.1-0.5c0-0.4,0-0.9,0.1-1.3c0.1-0.7,0.3-1.4,0.4-2.1c0.2-0.6,0.4-1.1,0.7-1.7c0.2-0.2,0.5-0.4,0.8-0.5 C31,42,31,46,31,46.5c0,0.3,0.3,0.5,0.5,0.6c0.3,0.2,0.5,0.6,0.6,1h2.1c-0.1-0.6-0.3-1.5-0.3-1.5c-0.3-0.3-0.5-0.7-0.7-1 C33,45.4,33,45.3,33,45.1c0.1,0,0.3-3.7,0.3-3.9c0-0.6,0.2-1.2,0.5-1.7c0.4-0.4,0.8-0.7,1.3-0.8c0.7-0.4,1.3-0.9,1.9-1.5 c0.7-0.8,1.2-1.7,1.6-2.6c0.6-1.3,1.1-2.6,1.5-4c0.3-1.1,0.6-2.3,0.8-3.4c0.1-0.6,0.2-2.3,0.2-2.6c0-0.4,0.1-0.8,0.4-1 c0.3-0.1,0.5-0.2,0.8-0.2c0.3,0.1,0.5,0.1,0.8,0.2c0.4,0.1,2.4,0.7,2.6,0.8h0.5c0.1,0,0.2-0.1,0.3-0.1c0.2-0.2,0.4-0.4,0.7-0.6 c0.2-0.1,0.8-0.1,0.9-0.4c0.1-0.1,0.2-0.2,0.2-0.5c0-0.5-0.2-0.9-0.3-1.3c-0.5-0.8-1.1-1.6-1.7-2.3c-0.7-0.9-1.4-1.7-2.2-2.4 c-0.6-0.5-1.2-1-1.9-1.4c-0.5-0.2-1-0.4-1.6-0.6c-0.3-0.1-0.6-0.1-0.9,0c-0.1-0.4-0.2-0.7-0.4-1c-0.3-0.4-0.6-0.7-1-1 c-0.3-0.2-0.8-0.4-1-0.2c-0.2,0.2-0.2,0.6-0.1,1c0.2,0.3,0.3,0.6,0.3,0.9c0,0-2.4,1.4-3,1.8c-1.9,1.2-3.2,3.1-4.3,3.3 c-0.8,0.1-1.6,0.1-2.4,0.1C23,19.5,12.6,19,11.2,19c-1.2-0.1-2.5,0-3.7,0.2c-0.8,0.3-3.5,1.2-4.9,3.1c-1.1,1.9-2,3.9-1.9,5.4 c0.1,0.8,0.3,1.7,0.7,2.4c0.3,0.6,0.5,1.2,0.5,1.8L2,33.3z\"\n }))));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconSheep, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-sheep.eb0391db.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgIconGoat = function SvgIconGoat(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 50 45\",\n width: 50,\n height: 50,\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27,27c0,0.1,0,0.1,0.1,0.4c0,0.1,0.1,0.3,0.1,0.4c0,0.1,0,0.2,0,0.3C27,28.7,27,30.2,27,31.7c0,1.6,0,3.2-0.2,4.7 c0,0.3-0.1,0.5-0.2,0.8l-0.2,0.6c-0.1,0.2-0.1,0.4-0.1,0.6c0,0.1,0,0.2,0.1,0.3c0,0,0.1,0,0.2,0c0.1-0.1,0.2-0.2,0.3-0.1 c0,0.1,0,0.3,0,0.4c0,0.2,0.1,0.3,0.2,0.5c0.1,0.2,0.3,0.3,0.4,0.4c0.4,0.2,0.8,0.3,1.2,0.3c0.4,0.1,0.7,0,1-0.2 c0.1-0.1,0.2-0.3,0.2-0.4c0-0.1,0-0.3-0.1-0.4c-0.1-0.1-0.1-0.2-0.2-0.2c-0.6-0.5-1.2-1.1-1.1-1.8c0.1-1.2,0.2-2.5,0.6-3.6 c0.3-1.1,0.5-2.2,0.6-2.9c0.1-0.8,0.3-1.4,0.5-1.4c0,0.7,0.1,1.2,0.1,1.5c0.1,2.3,0.1,2.7,0.2,4c0,0.5,0.1,0.9,0.1,1.4 c0.1,0.6,0.1,1.2,0,1.8c0,0.2-0.1,0.4-0.1,0.6c-0.1,0.2-0.1,0.5-0.1,0.8c0,0.2,0.1,0.4,0.3,0.5c0.2-0.1,0.3-0.1,0.4,0 c0,0.5,0.4,1,0.8,1.3c0.3,0.2,0.6,0.3,0.9,0.3c0.2,0,0.4,0,0.7,0c0.3,0,0.6-0.2,0.7-0.4c0.1-0.2,0.1-0.3,0.1-0.5 c0-0.1-0.1-0.3-0.2-0.4c-0.1-0.1-0.2-0.2-0.3-0.3c-0.9-0.8-1.5-1.5-1.4-1.7c0-0.9,0-1.8,0.1-2.7c0.3-3.1,0.6-6.1,0.8-7.7 c0.2-1.2,0.4-2.2,0.5-2.7c0-0.1,0.1-0.2,0.1-0.3c0,0,0.1-0.1,0.1-0.1c0.4-0.3,0.8-0.6,1.1-1.1c0.1-0.2,0.3-0.4,0.4-0.6 c0.2-0.4,0.4-0.9,0.5-1.3c0.1-0.4,0.3-0.8,0.3-1.2c0.1-0.3,0.1-0.5,0.1-0.6c0-0.4,0.1-0.7,0.2-1.1c0.1-0.3,0.3-0.5,0.4-0.7 c0.1-0.1,0.3-0.4,0.6-0.8c0.5-0.6,0.6-0.6,0.8-1c0.2-0.2,0.2-0.3,0.4-0.7c0,0,0.2-0.4,0.4-0.6c0.4-0.6,1-1.1,1.6-1.5 c0.3-0.2,0.5-0.3,0.8-0.3c0.3-0.1,0.7-0.1,1,0c0.2,0,0.4,0.1,0.7,0.1c0.2,0,0.4,0.1,0.6,0.2c0.1,0,0.2,0.1,0.3,0.1 c0.7,0.4,1.5,0.6,2.3,0.7c0.5,0,0.8-0.2,0.8-0.6c0.5,0.1,0.9,0,1-0.2c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.1,0-0.2 c0.1-0.1,0.3,0,0.5-0.1c0.2-0.2,0.1-0.5,0.1-0.6c0-0.1-0.1-0.2-0.1-0.3c-0.2-0.4-0.3-0.5-0.3-0.5c-0.5-0.7-1.2-1.8-1.2-1.8 c-0.2-0.2-0.3-0.5-0.4-0.7c-0.1-0.1-0.1-0.3-0.2-0.5c-0.3-0.7-0.3-0.7-0.5-1c-0.1-0.2-0.2-0.4-0.3-0.6c-0.2-0.2-0.3-0.3-0.4-0.6 c-0.1-0.1-0.2-0.3-0.2-0.5c-0.2-0.3-0.4-0.7-0.7-1c-1.1-1.4-0.9-1.3-1.2-1.6c-0.4-0.4-0.8-0.8-1.3-1.1c-0.5-0.3-1-0.5-1.5-0.7 c-0.4-0.1-0.8-0.2-1.3-0.2c-0.6-0.1-1.2,0-1.8,0.3c-0.3,0.2-0.6,0.4-0.6,0.6c0.1,0.2,0.8-0.3,1.8-0.1c0.3,0.1,0.6,0.1,0.9,0.2 c0.2,0,0.3,0.1,0.5,0.2c0.2,0.1,0.4,0.2,0.6,0.4c0.2,0.1,0.4,0.3,0.6,0.5c0.1,0.1,0.3,0.3,0.4,0.4c0.2,0.2,0.4,0.4,0.5,0.7 c0.1,0.2,0.2,0.4,0,0.6s-0.7-0.1-1.2,0.1c-0.2,0-0.3,0.1-0.4,0.2c-0.1,0.1-0.1,0.2-0.2,0.2c-0.1,0-0.1,0-0.2,0 c-0.4-0.6-0.9-1.1-1.5-1.5C39,3.9,38.7,3.9,38.5,4c-0.2,0.1-0.3,0.2-0.3,0.4c0,0.1-0.1,0.2-0.1,0.3c-0.1,0.9,0.3,1.8,1.1,2.3 c-0.3,0.3-0.6,0.6-0.8,0.9c-0.9,1.2-1.8,2.4-2.9,3.4c-0.3,0.3-0.6,0.5-1,0.6C34.3,11.9,34,12,33.8,12c-0.3,0-0.6,0.1-0.9,0.1 C31.4,12.2,31,12,30,12.2l-0.7,0.1c-0.2,0-0.9,0.2-1.5,0.3c-0.8,0.2-0.8,0.2-1.8,0.5s-1.7,0.4-2,0.4c-0.7,0.1-1.3,0.2-2,0.3 c-0.9,0.1-1.4,0.2-1.9,0.2c-0.9,0-1.9,0-2.8-0.2c-0.7-0.1-1.3-0.2-1.5-0.2c-0.6-0.1-0.7-0.1-1.1-0.2c-0.7-0.1-1.4-0.2-2.2-0.2 c-0.7,0-1.5,0-2.2,0.1c-0.6,0-1.2,0.1-1.8,0.2c-0.3,0.1-0.6,0.2-0.9,0.3C7.5,13.9,7.2,14,7,14.2c-0.3,0.2-0.6,0.5-0.9,0.8 c-0.1,0.1-0.2,0.3-0.3,0.5c-0.1,0.2-0.2,0.5-0.3,0.8c-0.4,1.2-0.9,2.3-1.5,3.4c-0.4,0.8-1.5,1.7-3.3,3c-0.1,0-0.2,0.1-0.2,0.2 c0,0.1,0,0.2,0.1,0.2c0.1,0.1,0.3,0.1,0.4,0.1c0.5,0,0.7-0.1,0.8,0L2,23.4c0.1,0.1,0.1,0.2,0.1,0.2s0.1,0,0.3,0 c0.2,0,0.3-0.1,0.5-0.1c0.1-0.1,0.2-0.1,0.3-0.2c0.1,0,0.1-0.1,0.2,0c0.1,0,0.1,0.1,0.1,0.1c0.1,0,0.2,0.1,0.3,0.1 c0.1,0,0.3-0.1,0.4-0.1c0.1-0.1,0.1-0.1,0.2-0.1s0.1,0,0.3,0.1c0.1,0,0.3,0,0.4,0c0.1-0.1,0.2-0.1,0.3-0.2c0.1-0.1,0.2-0.2,0.2-0.2 c0,0.9,0.2,1.8,0.6,2.7c0.1,0.4,0.3,0.7,0.4,1c0.1,0.2,0.1,0.3,0.3,0.7c0.1,0.2,0.2,0.5,0.3,0.7c0.1,0.3,0.2,0.6,0.2,0.9 c0,0.3,0,0.5-0.1,0.8c-0.1,0.4-0.2,0.7-0.4,1.1c-0.2,0.4-0.3,0.5-0.6,1.1c-0.2,0.3-0.3,0.5-0.4,0.8c-0.1,0.3-0.1,0.6,0,1 c0,0.5,0,1,0.1,1.5c0,0.4,0.1,0.7,0.2,0.9c0.1,0.5,0.1,0.5,0.2,0.8c0.1,0.4,0.1,0.8,0.1,1.1c0,0.4,0,0.6,0,1.2c0,0.2,0,0.4,0.1,0.5 c0.1,0.1,0.3,0.3,0.4,0.3c0.2,0,0.3,0,0.4,0.1c0.1,0,0.1,0.1,0.2,0.2C7.8,40.6,7.8,41,8,41.3c0.2,0.3,0.5,0.5,0.8,0.5 c0.5,0.2,1,0.2,1.5,0c0.2,0,0.4-0.2,0.6-0.4c0.1-0.2,0.1-0.4,0-0.6c0-0.1-0.1-0.2-0.1-0.4c-0.1-0.2-0.3-0.4-0.5-0.6 c-0.4-0.3-0.7-0.7-1-1.2c-0.2-0.3-0.4-0.7-0.6-1.1c-0.1-0.3-0.3-0.6-0.4-0.9c-0.1-0.3-0.1-0.7-0.2-1c0-0.4,0-0.8,0-1.2 c0-0.5,0.1-0.9,0.3-1.3c0.1-0.4,0.4-0.8,0.5-0.8c0.1,0,0,0.3,0,0.9c0,0.3,0,0.3,0.1,0.8c0.1,0.5,0.1,0.8,0.1,0.9 c0.1,0.6,0,0.6,0.1,0.9s0.1,0.7,0.2,0.9s0.1,0.4,0.1,0.6c0.1,0.4,0.2,0.8,0.5,1.1c0.1,0.2,0.3,0.3,0.5,0.4c0.1,0,0.2,0.1,0.2,0.1 c0.1,0,0.1,0,0.2,0s0,0.2,0,0.3c0,0.3,0.1,0.6,0.3,0.9c0.2,0.2,0.4,0.4,0.7,0.5c0.6,0.2,1.2,0.2,1.8-0.1c0.2-0.1,0.4-0.2,0.4-0.5 c0-0.2,0-0.4-0.1-0.5c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1-0.1-0.2-0.2-0.3-0.3c-0.9-0.9-1.7-1.9-2-3c-0.4-1.4-0.5-2.8-0.3-4.3 c0.3,0,0.5,0,0.7-0.2c0.1-0.1,0.1-0.1,0.2-0.2c0-0.1,0-0.2,0.1-0.2c0.1,0,0.1,0,0.2,0c0.1,0,0,0.1,0.1,0.1c0.1,0.1,0.1,0.1,0.2,0.1 c0.1,0,0.1,0,0.2,0c0.1,0,0.1-0.1,0.1-0.1c0.1-0.1,0.1-0.2,0.2-0.3c0.1-0.1,0.1-0.3,0.1-0.4c0.1-0.3,0.1-0.3,0.1-0.6 c0-0.1,0.1-0.2,0.1-0.3c0.1-0.1,0.2-0.2,0.5-0.3c0.2-0.1,0.3-0.2,0.5-0.3c0.2-0.1,0.4-0.3,0.6-0.5c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.1,0-0.2,0-0.3c0-0.1,0.1-0.1,0.1-0.1c0.2-0.1,0.6,0,0.9,0.1c0.4,0.1,0.7,0.2,1.1,0.3c0.4,0.1,0.8,0.2,1.2,0.2 c0.4,0,0.9,0,1.3,0c0.3,0,0.6-0.1,0.9-0.2c0.2,0,0.6-0.1,1.2-0.3c0.7-0.2,1.3-0.5,1.8-0.6c0.3-0.1,0.6-0.2,1.1-0.4 c0.2-0.1,0.5-0.1,0.8-0.2c0.5-0.1,1-0.2,1.1,0C27,26.7,27,26.7,27,27z\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconGoat, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-goat.9866f1ca.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgIconPig = function SvgIconPig(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 50 30\",\n width: 50,\n height: 50,\n preserveAspectRatio: \"xMidYMid meet\",\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.4,22.5c-0.2-0.3-0.2-0.4-0.8-1.7c-1.3-2.8-1.9-3.1-2.5-4.6c-0.6-1.5-0.8-3.2-0.5-4.8C2.9,9.5,3.8,7.9,5,6.6 c3.5-3.7,10.3-5,19.1-4.9c4.6,0.1,9.1,1.1,13.4,3l3.7,2.4c0,0,0.5,0.7,0.8,1.2c0.6,1.1,0.5,1.4,1,2.2c0.3,0.4,0.6,0.7,1,1 c1.6,0.9,3.1,1.3,4.6,1c0.2-0.4,0.8-0.6,1.3-0.4c0.2,0.2,0.2,0.4,0.2,0.7c-0.1,0.2-0.2,0.5-0.3,0.7c-0.3,0.4-0.5,0.4-0.7,0.7 c-0.1,0.3-0.2,0.6-0.2,0.9c-0.1,0.5-0.1,0.7-0.2,1.1c-0.1,0.3-0.1,0.6-0.2,0.7c-0.1,0.1-0.2,0.4-0.4,0.4h0c-0.1,0-0.2-0.1-0.4-0.3 c-0.3,0.2-0.7,0.2-1.1,0.1l-0.9-0.2c0.2,0.4,0.6,0.6,1,0.6l0.4-0.1c0,0.4-0.2,0.8-0.5,1.1c-0.7,0.6-1.5,0-2.7,0.5 c-0.1,0.1-0.4,0.2-0.4,0.2c-0.4,0.2-0.8,0.5-1.1,0.7c-0.3,0.3-0.6,0.6-0.9,0.9c-0.4,0.4-0.8,0.7-1.3,1c-0.7,0.4-1.5,0.5-2.3,0.5 c-1,0-2-0.1-2.9-0.4l-9.2,0.3c-3,0.4-6,0.1-8.8-1C9.8,24,7.3,23.5,6.4,22.5z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.1,4.8l-0.2,0.5l4.4,2.1L41.2,7c0.3-0.5,0.7-0.8,1.1-1.1l0.5-0.5c0.6-0.9,1-1.8,0.5-2.7c0,0-0.4-0.7-0.5-0.4 s-0.1,1.3-0.4,0.9s-1.8,1-1.8,1c0.4-0.9,0.4-1.8,0-2.7c-0.1-0.1-0.1-0.3-0.2-0.4c0.1-0.3-0.4-0.9-0.5-0.4c0,0.3-0.4,1.5-0.8,1.7 c-2,1.2-1.7,2.4-1.7,2.4H37.1z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.8,20L5.9,19l-0.1,2.1l0.5,1.1l0.2,0.5c-0.2,0.7-0.1,1.4,0.3,1.9C7,24.8,7.1,25,7.3,25.1 c0.3,0.3,0.8,0.8,1.2,1.3c0.3,0.3,0.5,0.7,0.8,1.1c0.3,0.6,0.5,1.1,0.7,1.7c0.3,0.7,0.4,1,0.5,1s0.2-0.2,0.2-0.4 c0.1,0.1,1.2,1.1,1.9,0.7c0,0,0.4-0.2,0.4-0.5c0-0.2-0.1-0.3-0.3-0.4c-0.3-0.3-0.5-0.6-0.8-0.9c-0.9-0.8-0.9-2.4-0.9-2.8 c0-0.7,0-1.5,0.3-1.6c0.6-0.2,2.2,1.9,3.1,3.9c0.3,0.7,0.6,1.7,0.8,1.6c0.1,0,0.1-0.2,0.1-0.4c0.3,0.4,0.8,0.7,1.3,0.8 c0.1,0,0.9,0.1,1.1-0.2c0.1-0.1,0.1-0.3,0-0.4c-0.1-0.2-0.2-0.3-0.4-0.4c-0.3-0.2-0.5-0.5-0.8-0.8c-0.3-0.3-0.7-0.9-0.9-2.5 c-0.3-0.7-0.2-1.6,0.3-2.2c0.7-0.6,1-1.4,1-2.3c4,0.9,8.3,2,8.8,0.6c0,0.6,0.1,1.1,0.5,1.6c1.2,1.5,2,2.8,2.1,3.9 c0.1,1.4,0.4,2.3,0.9,2.6l0.1-0.3l0.1,0.2c1.2,0.7,1.8,0.4,1.9,0.2c0.2-0.3-0.3-0.7-0.8-2c-0.3-0.7-0.4-1.5-0.5-2.2 c0-0.7,0.1-1.3,0.4-1.9c1.2,0.9,2,2.1,2.4,3.5c0.3,1.4,0.7,2.3,1.3,2.4l0.2-0.3c1.3,0.5,2,0.6,2.1,0.4c0.1-0.1,0-0.2,0-0.4 c-1.1-1.4-1.7-2.7-1.7-3.9c-0.2-1.4,0-2.8,0.5-4.2L35.8,20z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.7,5.9C1.7,5.9,1.8,6,1.8,6C1.3,6.3,0.9,6.9,1,7.5c0.1,0.5,0.5,1,1,1c0.5,0,0.9-0.3,1-0.8c0.1-0.4,0-0.8-0.2-1.1 c0.6,0.1,1.2,0.4,1.7,0.8L5,6.6C4.2,6,3.2,5.7,2.3,5.8C1.6,5.2,0.7,5.2,0,5.7C0.6,5.6,1.1,5.6,1.7,5.9z M2.3,6.5h0.1 c0,0.1,0.1,0.1,0.1,0.2C2.6,6.8,2.6,7,2.6,7.1c0,0.2,0,0.5-0.2,0.7C2.3,7.9,2.1,8,1.8,7.9C1.6,7.8,1.5,7.6,1.5,7.4 c0-0.2,0.1-0.4,0.2-0.6C1.9,6.6,2.1,6.6,2.3,6.5z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.3,17.1c0.1-0.3,0-0.7-0.3-0.9c-0.7-0.6-1.6-0.9-2.6-0.6c-1.1,0.3-2.2,1.3-2,2c0.2,0.9,2.2,0.9,2.4,0.9 c0.8,0.1,1.5-0.2,2.1-0.8C47.1,17.5,47.2,17.3,47.3,17.1L47.3,17.1z\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconPig, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-pig.76d485bf.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgIconDeer = function SvgIconDeer(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 50 50\",\n width: 50,\n height: 50,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M-18.6 53h87.9l-44-70.9L-18.6 53z\",\n clipRule: \"evenodd\",\n fill: \"none\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.1.6c-.4 0-.7 0-.2 1.7 0 1.9.4 3.2.4 3.2-.2.1-2.3.6-3.5.4-.1-.2-.4-1.8-.4-2s.2-1.7-.4-1.7c-.5 0-.5 1.1-.5 1.8v1.6C20.4 4.9 20.1 4 19.7 4c-.4 0-.5.2-.5.4s1.3 1.9 2.3 2.4v1c-2.6 0-3.8-3-4.4-3-.2 0-.6.1-.6.5 0 .7 1.9 2.8 2.6 3.2.5.2.4.2.8.2.5.1.7.2 1 .4 4.1 4.3 6.2 6.6 10.8 6.6.5 0 1.1-.1 1.3-.1-.1.2-2.5 4.4-3 5-.4 0-1.1-.1-1.4-.1-1.9 0-2 .6-4 .5-2.4 0-7.2-1.6-12-1.6-3.2 0-6.6 2-7.7 3.4-.2.4-.8 1-.8 2.4 0 .5-.1 2.8 1.9 2.5.4 1.2 1.7 3.6 3.2 4.4.4.2.8 1.2.8 1.9 0 1.8-1.3 1.7-1.3 2.9 0 1.1 1 1.4 1.4 1.4.6 0 1.6.7 1.8 1.2.2.6 1.3 2 2 2.5.6.6 1.7 2.5 1.8 2.8 0 .2-.1.1.1.1l.4.2.4.4c.1.1.1.2.1.2 0 .1-.1 1 0 1.2.1.1 1.9 1.1 2 1.1 0-.1.4-.4.4-.4l.6.4s.2-.8-.5-1.7c-.1-.1-.2-.2-.2-.4-.1-.4-1.6-2.5-2-2.9-.5-.5-1.3-1.4-1.4-2.3.2.1 3.4 1.9 3.5 1.9.1.1.4.2.4.4.1.4.1.8.7.7.4-.1.8.1 1.3.6.1.1.1.2.1.4 0 .1-.7 1.4-.8 1.6 0 .1-.1.2 0 .2.2.4.7.6 1 1.2.2.2.5.6.5 1.3-.1.2 0 .8.5.8s.5-.2.6-.2c.1 0 .1.1.4.1.1.1.5-.1.5-.5s-.2-.6-.2-.7c-.1-.2-.4-1.1-.2-2 0-1 .2-4.6 2.5-7.4.8 0 3.5-.2 4.8-1.4.8-.7 4.3-2.4 5.3-2.8.5-.1 1.4-.6 1.4-1.4-.1-.7-.5-1.1-.7-1.2-.4-.2-3.1-1.4-4.1-1.6-.1-.7.6-1.4 1.4-1.8.2-.1.7-.2.8-.8.2-.6.2-1.6 2-3.6.8-1 1.3-2.5 1.3-3.2.5.1 1.3 0 1.9-.4.5-.2.8-.4 1.2-.4.1 0 1.1.1 1.4.1.2 0 .6 0 1-.2s.8-1.2 1-1.3c0-.1 0-.2.1-.2.1-.1.1-.2.1-.4s-.1-.4-.5-.6c-1.6-.5-1.9-.6-3.1-1.7-.4-.2-1.1-.7-1.9-1-.7-.1-1.1-.2-1.7-.6-.2-.1-.4-.2-.4-.5 0-.2.1-.2.5-.4 1.4-.4 2-1.2 2.8-2.3.1-.2.1-.7-.2-.7s-.4.2-.5.4c-.1.1-.5.6-.7.7-.4-.6-.4-1.2-.4-1.6 0-.2-.1-.5-.4-.5s-.4.1-.4.4 0 1.4-.7 1.6c.1-.1.1-.6.1-1 0-.2-.2-1.7-.7-1.7s-.5.2-.5.4.2.7.2 1.1c0 1.2-1.3 1.9-1.9 1.9-.5.1-1.7-.2-1.6-.6-.1-.6 1.3-1 1.3-2.5 0-2.5-1.9-4-2.2-4-.5 0-.5.2-.5.4 0 .6 1.3 1.1 1.4 3.2 0 .5-.5 1.6-1.4 1.6-2 0-5.6-4.1-5.6-9.4.2-.5-.1-.5-.2-.5z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.7 7.4c0 .1 1.2 4.4 3.1 4.4.5 0 .6-.4.6-.7 0-.6-1.3-1.6-1.3-2.9.1-.2.2-.2.4-.2s1.9 1.9 2 3.1c.4 1.7.4 2.8 3 2.8.5 0 1.7-.1 1.7-.4s-.1-.2-.1-.4c-2.8-1.8-4.7-4-5.5-5.4-.2-.2-.8-.7-1.7-.6-.4.2-1.7.4-2.2.3zm.1 31.9c-.1 0-1.1.1-1.1-.4 0-.4.2-.2.2-.5.1-.2-.1-.2-.1-.6s.5-.6.8-.7c.2-.2.6-.2.8-.2 0-.1.5-2.8.6-2.9.1-.1.2-1-.6-1-3.2-.1-6-1-6.5-1.2-.2-.1-1.1-.4-1.2.4-.1 2.2-1.2 3.4-2.9 4.1-.4.1-.7.4-.4.8.8.8 2.5 2 4.7 2.9 1 .4 4.3 2.3 4.4 2.5.4-.4 1.1-3 1.3-3.2zm3.1-2.4s.6.1.7.1c.1-.1.5-.5.5-.6.1.1.7.1 1.3 0 1.3-.5 3.7-1.6 4.9-2 .2-.1.2-.1.2-.4.1-.1-.1-.2-.5-.2-.8 0-1.9-.2-3-.7-.8-.4-1.9.1-2.3.4-.7 1.1-1.6 2.4-1.8 3.4z\",\n fill: \"#fff\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconDeer, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-deer.923df952.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactComponent as CattleIcon } from 'images/svg/icon-cattle.svg';\nimport { ReactComponent as SheepIcon } from 'images/svg/icon-sheep.svg';\nimport { ReactComponent as GoatIcon } from 'images/svg/icon-goat.svg';\nimport { ReactComponent as PigIcon } from 'images/svg/icon-pig.svg';\nimport { ReactComponent as DeerIcon } from 'images/svg/icon-deer.svg';\nimport helpers from 'services/helpers';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/base/pageTitle/pageTitle.module.scss';\n\nconst PageTitle = ({\n id,\n pageTitleOne,\n pageTitleTwo,\n speciesId\n}) => {\n const { ready, t } = useTranslation();\n return (\n <>\n {ready &&\n
    \n

    \n \n {helpers.species.isCattleId(speciesId) &&\n \n }\n {helpers.species.isSheepId(speciesId) &&\n \n }\n {helpers.species.isGoatId(speciesId) &&\n \n }\n {helpers.species.isPigId(speciesId) &&\n \n }\n {helpers.species.isDeerId(speciesId) &&\n \n }\n \n {t(pageTitleOne)}\n {pageTitleTwo &&\n <>\n \n {t(pageTitleTwo)}\n \n }\n

    \n
    \n }\n \n );\n};\n\nPageTitle.propTypes = {\n id: PropTypes.string.isRequired,\n pageTitleOne: PropTypes.string.isRequired,\n pageTitleTwo: PropTypes.string\n};\n\nexport default PageTitle;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/base/sectionTitleBar/sectionTitleBar.module.scss';\nimport { bffStatus } from 'services/bff';\n\nconst SectionTitleBar = ({\n icon,\n id,\n status,\n title\n}) => {\n const { ready, t } = useTranslation();\n\n return (\n <>\n {ready &&\n
    \n {icon &&\n
    \n \n
    \n }\n

    {t(title)}

    \n {status &&\n <>\n
    {t(status.label)}
    \n
    {t(status.hint)}
    \n \n }\n
    \n }\n \n );\n};\n\nSectionTitleBar.propTypes = {\n icon: PropTypes.string,\n id: PropTypes.string.isRequired,\n status: PropTypes.exact({\n className: PropTypes.string,\n label: PropTypes.string,\n hint: PropTypes.string\n }),\n title: PropTypes.string\n};\n\nexport default SectionTitleBar;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport constants from 'services/constants';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport PageTitle from 'backOfficeComponents/base/pageTitle/pageTitle';\nimport SectionTitleBar from 'backOfficeComponents/base/sectionTitleBar/sectionTitleBar';\nimport Table from 'components/table/table';\n\nconst BoAnimalActivity = ({\n location,\n setModal\n}) => {\n const { ready } = useTranslation();\n const history = useHistory();\n\n const sessionAnimalActivity = storeService.session.get.searchResultsAnimalActivity();\n\n const [data, setData] = React.useState(sessionAnimalActivity ? sessionAnimalActivity.data : []);\n const [renderTable, setRenderTable] = React.useState(false);\n\n const tableParams = {\n filters: {\n useComponent: 'BoAnimalActivity'\n },\n request: {}\n };\n\n const getPageSubTitle = () => {\n switch (location.pathname) {\n case Routing.boAnimalActivityMovementHistory:\n return 'label.movementHistory';\n case Routing.boAnimalActivityTaggingHistory:\n return 'label.taggingHistory';\n case Routing.boAnimalActivityAnimalDetails:\n return 'label.animalDetails';\n case Routing.boAnimalActivityProgeny:\n return 'label.progeny';\n default:\n return '';\n }\n };\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.boAnimalActivity.length) !== Routing.boAnimalActivity &&\n path.pathname.substring(0, Routing.boAnimalActivity.length) !== Routing.boAnimalActivityMovementHistory &&\n path.pathname.substring(0, Routing.boAnimalActivity.length) !== Routing.boAnimalActivityTaggingHistory &&\n path.pathname.substring(0, Routing.boAnimalActivity.length) !== Routing.boAnimalActivityAnimalDetails &&\n path.pathname.substring(0, Routing.boAnimalActivity.length) !== Routing.boAnimalActivityProgeny\n ) {\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n unListen();\n }\n });\n }, [history]);\n\n return (\n <>\n {ready &&\n <>\n \n\n
    \n \n\n 0}\n setData={setData}\n setModal={setModal}\n setRenderTable={setRenderTable}\n store={{\n filters: 'AnimalActivity',\n data: 'AnimalActivity'\n }}\n />\n
    \n \n }\n \n );\n};\n\nBoAnimalActivity.propTypes = {\n location: PropTypes.object,\n setModal: PropTypes.func.isRequired\n};\n\nexport default BoAnimalActivity;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport constants from 'services/constants';\nimport classes from 'backOfficeComponents/base/displayValue/displayValue.module.scss';\nimport helpers from 'services/helpers';\n\nconst DisplayValue = ({\n id,\n labelPosition,\n labelText,\n multiItem,\n value\n}) => {\n const { ready, t } = useTranslation();\n\n const valueChecked = helpers.replaceNull(value);\n const isArray = Array.isArray(valueChecked);\n\n const lPosition = (labelText && labelText.length) ? ((labelPosition) ? labelPosition : constants.labelPosition.above) : constants.labelPosition.none;\n\n return (\n <>\n {ready &&\n
    \n
    {t(labelText)}
    \n {isArray &&\n
    \n {valueChecked.map((item, index) =>\n {item}\n )}\n
    \n }\n {!isArray &&\n
    {t(value)}
    \n }\n
    \n }\n \n );\n};\n\nDisplayValue.propTypes = {\n id: PropTypes.string.isRequired,\n labelPosition: PropTypes.oneOf([\n constants.labelPosition.above,\n constants.labelPosition.inline,\n constants.labelPosition.none\n ]),\n labelText: PropTypes.string,\n multiItem: PropTypes.oneOf([\n constants.multiItem.row,\n constants.multiItem.column\n ]),\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.array\n ])\n};\n\nexport default DisplayValue;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport { Prompt } from 'react-router';\nimport axios from 'axios';\nimport bff, { bffStatus, isCancel } from 'services/bff';\nimport classes from 'backOfficeComponents/sections/verifyCustomerInformation/verifyCustomerInformation.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport he from 'he';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport Button from 'components/base/button/button';\nimport DisplayValue from 'backOfficeComponents/base/displayValue/displayValue';\nimport SectionTitleBar from 'backOfficeComponents/base/sectionTitleBar/sectionTitleBar';\nimport TextEntry from 'components/base/textEntry/textEntry';\n\nconst sprintf = require('util').format;\n\nconst VerifyCustomerInformation = ({\n data,\n setModal\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const [keeperEmailOld, setKeeperEmailOld] = useState(data.keeperEmail);\n const [keeperEmailNew, setKeeperEmailNew] = useState(data.keeperEmail);\n const [keeperEmailValid, setKeeperEmailValid] = useState(true);\n const [holdingId, setHoldingId] = useState(null);\n const [keeperAddressPK, setKeeperAddressPK] = useState(null);\n const [partyId, setPartyId] = useState(null);\n const [pending, setPending] = useState(false);\n const [singleBusinessIdentifier, setSingleBusinessIdentifier] = useState(data.singleBusinessIdentifier);\n const [partyIdError, setPartyIdError] = useState(false);\n\n const validateEmail = (email) => {\n const validEmailFormat = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n return email.match(validEmailFormat);\n };\n\n const saveEmail = () => {\n if (partyId && partyId !== null) {\n setPending(true);\n bff\n .post('/userEmail', {\n poll: config.POLLS_ENABLED,\n holdingId,\n keeperAddressPK,\n partyId,\n email: keeperEmailNew,\n singleBusinessIdentifier\n })\n .then((res) => {\n setKeeperEmailOld(keeperEmailNew);\n setPending(false);\n\n const pollingStatus = res.data?.poll?.requestStatus;\n const modalMessages = {\n [constants.status.error]: 'label.customerEmailUpdateError',\n [constants.status.pending]: 'label.customerEmailUpdatePending',\n [constants.status.success]: 'label.customerEmailUpdateSuccess'\n };\n\n if (!bffStatus.isSuccess(pollingStatus)) {\n setKeeperEmailNew(keeperEmailOld);\n }\n setModal({\n labelCancel: 'button.ok',\n modalMessage: modalMessages[pollingStatus],\n modalTitle: 'label.customerEmailUpdate'\n });\n })\n .catch((error) => {\n setPending(false);\n errors.BFF(error, setModal);\n });\n } else {\n setPartyIdError(true);\n setModal({\n labelCancel: 'button.ok',\n modalMessage: 'label.partyIdError.message',\n modalTitle: 'label.partyIdError.title'\n });\n }\n };\n\n const handleChanges = {\n email: (email) => {\n setKeeperEmailNew(email);\n\n if (!validateEmail(email)) {\n setKeeperEmailValid(false);\n } else {\n setKeeperEmailValid(true);\n }\n }\n };\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n if (pending) {\n bff\n .get('/holdingsIntegration', {\n cancelToken: source.token,\n params: {\n cph: data.cph\n }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setPending)) {\n setPending(false);\n setHoldingId(res.data.holdingId);\n setKeeperAddressPK(res.data.keeperAddressPK);\n setPartyId(res.data.partyId);\n setSingleBusinessIdentifier(res.data.singleBusinessIdentifier);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setPending(false);\n errors.BFF(error, setModal);\n }\n });\n }\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pending]);\n\n useEffect(() => {\n setPending(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const contactNumber = [data.telephoneNumber, data.mobilePhone].filter(Boolean);\n return (\n <>\n {ready &&\n <>\n {\n return (!storeService.session.get.idle() && keeperEmailNew !== keeperEmailOld && !partyIdError && params.pathname.substring(0, Routing.boVerifyCustomer.length) !== Routing.boEditCustomer) ? t('warning.unsavedChanges2') : true;\n }}\n />\n
    \n \n
    \n
    \n \n \n \n \n batch.number) : t('label.na')}\n />\n
    \n
    \n \n 1\n ? sprintf('%s (%s)', contactNumber[0], contactNumber[1])\n : (contactNumber?.length > 0 ? contactNumber[0] : null)\n }\n />\n handleChanges.email(event.target.value)}\n type=\"email\"\n value={keeperEmailNew}\n />\n \n
    \n
    \n
    \n
    \n
    \n history.push(Routing.boVerifyCustomer)}\n />\n
    \n
    \n
    \n \n }\n \n );\n};\n\nVerifyCustomerInformation.propTypes = {\n data: PropTypes.object,\n setModal: PropTypes.func.isRequired\n};\n\nexport default VerifyCustomerInformation;\n","import React, { useEffect } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport PageTitle from 'backOfficeComponents/base/pageTitle/pageTitle';\nimport VerifyCustomerInformation from 'backOfficeComponents/sections/verifyCustomerInformation/verifyCustomerInformation';\n// import VerifyCustomerRecentRecords from 'backOfficeComponents/sections/verifyCustomerRecentRecords/verifyCustomerRecentRecords';\n\nconst BoEditCustomer = ({\n location,\n setModal\n}) => {\n useEffect(() => {\n helpers.scrollToTop(document.getElementById('appContent'));\n }, []);\n\n return (\n <>\n {!location.state &&\n \n }\n\n {location.state?.data &&\n <>\n \n\n \n\n {/**/}\n \n }\n \n );\n};\n\nBoEditCustomer.propTypes = {\n location: PropTypes.object,\n setModal: PropTypes.func.isRequired\n};\n\nexport default BoEditCustomer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/base/checkbox/checkbox.module.scss';\n\nconst Checkbox = ({\n disabled,\n id,\n inline,\n isChecked,\n label,\n name,\n onChange,\n value\n}) => {\n const { ready, t } = useTranslation();\n\n const componentClassNames = [\n classes.checkbox,\n inline ? classes.inline : '',\n disabled ? classes.disabled : ''\n ].join(' ').trim();\n\n return (\n <>\n {ready &&\n \n }\n \n );\n};\n\nCheckbox.propTypes = {\n disabled: PropTypes.bool,\n id: PropTypes.string.isRequired,\n inline: PropTypes.bool,\n isChecked: PropTypes.bool,\n label: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n value: PropTypes.bool\n};\n\nexport default Checkbox;\n","import React from 'react';\nimport classes from 'backOfficeComponents/base/checkboxGroup/checkboxGroup.module.scss';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport CheckBox from 'backOfficeComponents/base/checkbox/checkbox';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport FieldLabel from 'backOfficeComponents/base/fieldLabel/fieldLabel';\nimport Hint from 'backOfficeComponents/base/hint/hint';\nimport Legend from 'backOfficeComponents/base/legend/legend';\n\nconst CheckboxGroup = ({\n disabledOptions,\n error,\n hint,\n id,\n inline,\n label,\n legendLabel,\n name,\n objects,\n onChange,\n optional,\n species\n}) => {\n const getLabel = (label, species) => {\n return (species) ? label + storeService.session.get.species().id : label;\n };\n\n const checkboxLabel = (label, species) => {\n const prefix = name ? name + '.' : '';\n return prefix + getLabel(label, species);\n };\n\n const className = inline ? classes.checkboxGroup + ' ' + classes.inline : classes.checkboxGroup;\n\n return (\n
    \n {legendLabel &&\n \n }\n \n \n \n
    \n {objects && objects.map((obj) => (\n item.id === obj.id) || obj.disabled}\n id={obj.id ? String(obj.id) : obj.label}\n inline={inline}\n isChecked={obj.value}\n key={obj.label}\n label={checkboxLabel(obj.label, species)}\n name={obj.label}\n onChange={onChange}\n value={obj.value}\n />\n ))}\n
    \n
    \n );\n};\n\nCheckboxGroup.propTypes = {\n disabledOptions: PropTypes.array,\n error: PropTypes.string,\n hint: PropTypes.string,\n id: PropTypes.string.isRequired,\n inline: PropTypes.bool,\n label: PropTypes.string,\n legendLabel: PropTypes.string,\n name: PropTypes.string,\n objects: PropTypes.oneOfType([\n PropTypes.arrayOf(\n PropTypes.exact({\n id: PropTypes.number,\n label: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.bool\n })\n ),\n PropTypes.arrayOf(\n PropTypes.exact({\n id: PropTypes.number,\n label: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.bool,\n disabled: PropTypes.bool\n })\n )\n ]).isRequired,\n onChange: PropTypes.func,\n optional: PropTypes.bool,\n species: PropTypes.number\n};\n\nexport default CheckboxGroup;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { isCancel } from 'services/bff';\nimport axios from 'axios';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport CheckboxGroup from 'backOfficeComponents/base/checkboxGroup/checkboxGroup';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\n\nconst Exemptions = ({\n groupLabel,\n hasErrors,\n needUpdate,\n options,\n panelTitle,\n permitMove,\n setDataChanged,\n setModal,\n setOptions,\n speciesId\n}) => {\n const { ready, t } = useTranslation();\n\n const storeExemptions = (exemptions) => {\n setOptions(exemptions);\n setDataChanged();\n // only save the selected checkbox to session store\n storeService.session.set.movementExemptions(exemptions.filter((exemption) => exemption.value));\n };\n\n const exemptionChange = ({ target }) => {\n const { id } = target;\n const selectedExemptions = options.map((o) => ({\n ...o,\n value: id === String(o.id) ? !o.value : o.value\n }));\n\n storeExemptions(selectedExemptions);\n };\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n const sessionMovementExemptions = storeService.session.get.movementExemptions();\n\n helpers.get.processingFlags(source.token, constants.option.requestType.paperMovementAdd, speciesId)\n .then(({ data }) => {\n if (helpers.response.isValid(data, setModal)) {\n setOptions(data.map((item) => {\n const isPermitMoveExemption = permitMove && Object.values(constants.permitMovesMandatory).some((mandatoryExemption) => mandatoryExemption.id === item.id);\n\n return {\n ...item,\n value: sessionMovementExemptions?.some((ex) => ex.id === item.id) || isPermitMoveExemption,\n disabled: isPermitMoveExemption\n };\n }));\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [speciesId, needUpdate]);\n\n return (\n <>\n {ready &&\n
    \n \n

    {t(panelTitle)}

    \n
    \n
    \n {options?.length === 0 &&\n \n }\n {options?.length > 0 &&\n \n }\n
    \n
    \n }\n \n );\n};\n\nExemptions.propTypes = {\n groupLabel: PropTypes.string,\n hasErrors: PropTypes.string,\n needUpdate: PropTypes.bool,\n options: PropTypes.array,\n panelTitle: PropTypes.string,\n permitMove: PropTypes.bool,\n setDataChanged: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setOptions: PropTypes.func,\n speciesId: PropTypes.number\n};\n\nexport default Exemptions;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport constants from 'services/constants';\nimport { tableColumns } from 'services/tableColumns';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport Table from 'components/table/table';\nimport storeService from 'services/storeService';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\n\nconst FoodChainInformationHelper = ({\n animals,\n batchList,\n choiceDisabled,\n disabledIcon,\n doAnimalsSatisfy,\n fciData,\n metFCIWithdrawalPeriods,\n paginationParams,\n panelTitle,\n recordFCI,\n setAnimals,\n setDataChanged,\n setDoAnimalsSatisfy,\n setFciData,\n setHoldingRestrictions,\n setModal,\n setNonComplianceReason,\n setRecordFCI,\n setUnfitAnimalTagNumbers,\n setWithdrawalPeriod,\n speciesId,\n unfitAnimalTagNumbers,\n withdrawalPeriod\n}) => {\n const { ready, t } = useTranslation();\n const permission = storeService.session.get.permissions();\n const dataHasChanged = () => {\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n };\n const handleChanges = {\n animalSelected: (tagNumber) => {\n setAnimals((prevState) => prevState.map((animal) => ({\n ...animal,\n unfit: animal.tagNumber === tagNumber ? !animal.unfit : animal.unfit\n })));\n\n setUnfitAnimalTagNumbers((prevState) => {\n if (prevState.includes(tagNumber)) {\n return prevState.filter((animalTagNumber) => animalTagNumber !== tagNumber);\n }\n\n return [...prevState, tagNumber];\n });\n\n setFciData((prevState) => {\n let unfitAnimals;\n if (prevState.unfitAnimals) {\n if (prevState.unfitAnimals.includes(tagNumber)) {\n unfitAnimals = prevState.unfitAnimals.filter((animalTagNumber) => animalTagNumber !== tagNumber);\n } else {\n unfitAnimals = [...prevState.unfitAnimals, tagNumber];\n }\n } else {\n unfitAnimals = [tagNumber];\n }\n if (permission !== 'backoffice') {\n storeService.session.set.movementFciUnfitAnimals(unfitAnimals);\n }\n return { ...prevState, unfitAnimals };\n });\n },\n\n recordFCI: (record) => {\n setRecordFCI(record);\n if (permission !== 'backoffice') {\n storeService.session.set.movementFciRecordFci(record);\n }\n if (helpers.option.fci.doNotRecord(record)) {\n setDoAnimalsSatisfy(null);\n setWithdrawalPeriod(null);\n setUnfitAnimalTagNumbers([]);\n } else if (batchList?.length > 0 && (!animals || animals?.length === 0)) {\n setDoAnimalsSatisfy(constants.option.animalsSatisfy.doSatisfy);\n }\n\n setFciData((prevState) => ({\n ...prevState,\n recordFCI: record,\n animalsSatisfy: record === constants.option.recordFCI.yes ? constants.option.animalsSatisfy.doSatisfy : null\n }));\n\n dataHasChanged();\n },\n setDoAnimalsSatisfy: (satisfy) => {\n storeService.session.set.movementFciAnimalsSatisfy(satisfy);\n\n setDoAnimalsSatisfy(satisfy);\n\n if (helpers.option.animals.doSatisfy(satisfy)) {\n setNonComplianceReason(null);\n setHoldingRestrictions(null);\n setWithdrawalPeriod(null);\n setUnfitAnimalTagNumbers([]);\n }\n\n setFciData((prevState) => ({\n ...prevState,\n animalsSatisfy: satisfy\n }));\n\n dataHasChanged();\n },\n\n withdrawalPeriod: (eventTarget) => {\n metFCIWithdrawalPeriods.forEach((record) => {\n if (record.code === eventTarget.value) {\n if (permission !== 'backoffice') {\n storeService.session.set.movementFciWithdrawalPeriod(record);\n }\n setWithdrawalPeriod(record);\n\n setFciData((prevState) => ({\n ...prevState,\n withdrawalPeriod: record\n }));\n }\n });\n dataHasChanged();\n },\n\n setRadioChoice: () => {\n const choice = batchList?.length > 0 &&\n (\n !animals ||\n animals?.length === 0\n )\n ? [constants.option.animalsSatisfy.doNotSatisfy]\n : [];\n return choice;\n }\n };\n\n return (\n <>\n {ready &&\n <>\n \n

    {t(panelTitle)}

    \n
    \n\n
    \n
    \n handleChanges.recordFCI(event.target.value)}\n value={recordFCI}\n />\n
    \n {recordFCI === constants.option.recordFCI.yes &&\n <>\n
    \n handleChanges.setDoAnimalsSatisfy(event.target.value)}\n value={doAnimalsSatisfy}\n />\n
    \n {doAnimalsSatisfy === constants.option.animalsSatisfy.doNotSatisfy &&\n <>\n {fciData &&\n \n }\n {metFCIWithdrawalPeriods &&\n ({\n id: item.code,\n label: item.name\n }))}\n name=\"medicineWithdrawal\"\n onChange={(event) => handleChanges.withdrawalPeriod(event.target)}\n value={withdrawalPeriod ? withdrawalPeriod.code : null}\n />\n }\n {!metFCIWithdrawalPeriods &&\n \n }\n \n }\n\n \n }\n
    \n\n \n }\n \n\n );\n};\nFoodChainInformationHelper.propTypes = {\n animals: PropTypes.array,\n batchList: PropTypes.array,\n choiceDisabled: PropTypes.bool,\n disabledIcon: PropTypes.bool,\n doAnimalsSatisfy: PropTypes.string,\n fciData: PropTypes.object,\n paginationParams: PropTypes.object,\n panelTitle: PropTypes.string,\n recordFCI: PropTypes.string,\n setAnimals: PropTypes.func,\n setDataChanged: PropTypes.func,\n setDoAnimalsSatisfy: PropTypes.func,\n setFciData: PropTypes.func,\n setHoldingRestrictions: PropTypes.func,\n setModal: PropTypes.func,\n setNonComplianceReason: PropTypes.func,\n setRecordFCI: PropTypes.func,\n setUnfitAnimalTagNumbers: PropTypes.func,\n setWithdrawalPeriod: PropTypes.func,\n speciesId: PropTypes.number,\n unfitAnimalTagNumbers: PropTypes.array,\n withdrawalPeriod: PropTypes.object\n};\n\nexport default FoodChainInformationHelper;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/sections/foodChainInformation/foodChainInformation.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport he from 'he';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport FieldEntry from 'backOfficeComponents/base/fieldEntry/fieldEntry';\nimport FoodChainInformationHelper from 'components/foodChainInformationHelper/foodChainInformationHelper';\n\nconst FoodChainInformation = ({\n animals,\n batchList,\n choiceDisabled,\n disabledIcon = false,\n fciData,\n holdingRestrictions,\n metFCIWithdrawalPeriods,\n nonComplianceReason,\n panelTitle,\n setAnimalDetails,\n setDataChanged,\n setFciData,\n setHoldingRestrictions,\n setModal,\n setNonComplianceReason,\n speciesId\n}) => {\n const { ready } = useTranslation();\n\n const [recordFCIBO, setRecordFCIBO] = React.useState(choiceDisabled ? null : constants.option.recordFCI.no);\n const [withdrawalPeriod, setWithdrawalPeriod] = React.useState(null);\n const [doAnimalsSatisfyBO, setDoAnimalsSatisfyBO] = React.useState(constants.option.animalsSatisfy.doSatisfy);\n const [unfitAnimalTagNumbers, setUnfitAnimalTagNumbers] = React.useState([]);\n const paginationParamsBO = constants.pagination.defaultParams;\n\n paginationParamsBO[constants.pagination.bottom].total = animals?.length;\n\n const validateTextFields = (input, characterLimit) => {\n return input.length <= characterLimit;\n };\n\n const dataHasChanged = () => {\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n };\n\n const handleChanges = {\n\n changeHoldingRestrictions: (event) => {\n if (validateTextFields(event.target.value, config.LENGTH_HOLDING_RESTRICTIONS)) {\n setHoldingRestrictions(event.target.value);\n setFciData((prevState) => ({\n ...prevState,\n holdingRestrictions: event.target.value\n }));\n }\n\n dataHasChanged();\n },\n\n nonComplianceReason: (event) => {\n if (validateTextFields(event.target.value, config.LENGTH_NON_COMPLIANCE_REASON)) {\n setNonComplianceReason(event.target.value);\n setFciData((prevState) => ({\n ...prevState,\n nonComplianceReason: event.target.value\n }));\n }\n\n dataHasChanged();\n }\n };\n\n useEffect(() => {\n const sessionRecordFCIBO = storeService.session.get.movementFciRecordFci();\n if (sessionRecordFCIBO) {\n setRecordFCIBO(sessionRecordFCIBO);\n\n if (helpers.option.fci.doRecord(sessionRecordFCIBO)) {\n const sessionAnimalsSatisfyBO = storeService.session.get.movementFciAnimalsSatisfy();\n\n if (sessionAnimalsSatisfyBO) {\n setDoAnimalsSatisfyBO(sessionAnimalsSatisfyBO);\n\n if (helpers.option.animals.doNotSatisfy(sessionAnimalsSatisfyBO)) {\n const sessionUnfitAnimalsBO = storeService.session.get.movementFciUnfitAnimals();\n const sessionNonComplianceReasonBO = storeService.session.get.movementFciNonComplianceReason();\n const sessionWithdrawalPeriodBO = storeService.session.get.movementFciWithdrawalPeriod();\n const sessionHoldingRestrictionsBO = storeService.session.get.movementFciHoldingRestrictions();\n\n if (sessionUnfitAnimalsBO) {\n setUnfitAnimalTagNumbers(sessionUnfitAnimalsBO);\n }\n if (sessionNonComplianceReasonBO) {\n setNonComplianceReason(sessionNonComplianceReasonBO);\n }\n if (sessionWithdrawalPeriodBO) {\n setWithdrawalPeriod(sessionWithdrawalPeriodBO);\n }\n if (sessionHoldingRestrictionsBO) {\n setHoldingRestrictions(sessionHoldingRestrictionsBO);\n }\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setWithdrawalPeriod(fciData.withdrawalPeriod);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fciData.withdrawalPeriod]);\n\n return (\n <>\n {ready &&\n
    \n \n
    \n {recordFCIBO === constants.option.recordFCI.yes &&\n <>\n\n {doAnimalsSatisfyBO === constants.option.animalsSatisfy.doNotSatisfy &&\n <>\n
    \n
    \n setNonComplianceReason(event.target.value)}\n rows={config.ROWS_FCI_NON_COMPLIANCE}\n tooltip=\"movements.fci-information.input-field-one-hint\"\n value={nonComplianceReason ? he.decode(nonComplianceReason) : ''}\n />\n
    \n\n
    \n setHoldingRestrictions(event.target.value)}\n rows={config.ROWS_HOLDING_RESTRICTIONS}\n value={holdingRestrictions ? he.decode(holdingRestrictions) : ''}\n />\n
    \n
    \n \n }\n \n }\n
    \n
    \n }\n \n );\n};\n\nFoodChainInformation.propTypes = {\n animals: PropTypes.array,\n batchList: PropTypes.array,\n choiceDisabled: PropTypes.bool,\n disabledIcon: PropTypes.bool,\n fciData: PropTypes.object,\n holdingRestrictions: PropTypes.string,\n nonComplianceReason: PropTypes.string,\n panelTitle: PropTypes.string,\n setAnimalDetails: PropTypes.func,\n setDataChanged: PropTypes.func,\n setFciData: PropTypes.func.isRequired,\n setHoldingRestrictions: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n setNonComplianceReason: PropTypes.func,\n speciesId: PropTypes.number\n};\n\nexport default FoodChainInformation;\n","import React from 'react';\nimport classes from 'components/base/numberEntry/numberEntry.module.scss';\nimport PropTypes from 'prop-types';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport FieldLabel from 'components/base/fieldLabel/fieldLabel';\nimport Hint from 'components/base/hint/hint';\n\nconst NumberEntry = ({\n disabled,\n error,\n hint,\n id,\n label,\n max,\n min,\n name,\n onBlur,\n onChange,\n reference,\n value,\n warning\n}) => {\n const onKeyDownHandler = (event) => {\n const eventObject = window.event ? window.event : event;\n\n const isDigit = (\n eventObject.key === '0' || eventObject.key === '1' || eventObject.key === '2' ||\n eventObject.key === '3' || eventObject.key === '4' || eventObject.key === '5' ||\n eventObject.key === '6' || eventObject.key === '7' || eventObject.key === '8' ||\n eventObject.key === '9');\n\n if (!isDigit &&\n eventObject.keyCode !== 'v' && !eventObject.ctrlKey &&\n eventObject.key !== 'Tab' && eventObject.key !== 'Backspace' && eventObject.key !== 'Delete' &&\n eventObject.key !== 'ArrowLeft' && eventObject.key !== 'ArrowRight' && eventObject.key !== 'ArrowUp' && eventObject.key !== 'ArrowDown') {\n eventObject.preventDefault();\n }\n };\n\n const onChangeHandler = (event) => {\n const newEvent = {\n target: {\n name: name,\n type: 'select',\n value: event.target.value\n }\n };\n onChange(newEvent);\n };\n\n return (\n <>\n \n \n \n \n document.activeElement.blur()}\n ref={reference}\n type=\"number\"\n value={value ?? ''}\n />\n \n );\n};\n\nNumberEntry.propTypes = {\n disabled: PropTypes.bool,\n error: PropTypes.string,\n hint: PropTypes.string,\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n max: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n min: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n name: PropTypes.string.isRequired,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n reference: PropTypes.object,\n value: PropTypes.any,\n warning: PropTypes.string\n};\n\nexport default NumberEntry;\n","import React, { useEffect } from 'react';\nimport classes from 'backOfficeComponents/sections/locationAddressDate/locationAddressDate.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport CPHEntry from 'backOfficeComponents/cphEntry/cphEntry';\nimport FieldEntry from 'backOfficeComponents/base/fieldEntry/fieldEntry';\nimport InputDate from 'components/base/inputDate/inputDate';\nimport SectionTitleBar from 'backOfficeComponents/base/sectionTitleBar/sectionTitleBar';\nimport NumberEntry from 'components/base/numberEntry/numberEntry';\n\nconst LocationAddressDate = ({\n cphError,\n data,\n dateError,\n dateLabel,\n departureDaysAhead,\n id,\n isPaper,\n labelPosition,\n labelText,\n maxDate,\n movementType,\n numberReceivedError,\n numberReceivedLabel,\n panelTitle,\n pmMove,\n setCphValid,\n setData,\n setDataChanged,\n setDateError,\n setModal,\n speciesId\n}) => {\n const numberOfHoldings = 0;\n\n const isOptional = () => {\n if (!numberReceivedLabel && helpers.species.isCattleId(speciesId)) {\n return true;\n }\n return false;\n };\n\n const dataHasChanged = () => {\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n };\n\n const changeFunction = (event) => {\n const newValue = event.target.value;\n switch (event.target.name) {\n case 'manualCPH':\n validatePermitMoveComment(newValue);\n if (pmMove && !validatePermitMoveComment(newValue)) {\n break;\n }\n setData((prevState) => ({ ...prevState, manualCPH: newValue }));\n dataHasChanged();\n break;\n case 'comment':\n validatePermitMoveComment(newValue);\n if (pmMove && !validatePermitMoveComment(newValue)) {\n break;\n }\n setData((prevState) => ({ ...prevState, comment: newValue }));\n dataHasChanged();\n break;\n case 'date':\n if (id === 'departureLocation' && !isPaper) {\n if (helpers.option.movement.isOff(movementType)) {\n const dateIsXDayAheadOverLimit = helpers.date.is.xDaysInTheFutureOverLimit(newValue, departureDaysAhead);\n if (dateIsXDayAheadOverLimit) {\n setDateError({\n type: constants.errorAndWarning.error,\n value: helpers.error.cfgDepartureDateError(dateIsXDayAheadOverLimit, departureDaysAhead)\n });\n } else {\n const dateIsXDayAhead = helpers.date.is.xDaysInTheFuture(newValue, departureDaysAhead);\n if (dateIsXDayAhead) {\n setDateError({ type: constants.errorAndWarning.error, value: dateIsXDayAhead });\n }\n }\n }\n storeService.session.set.movementDepartureDate(newValue);\n } else if (id === 'receivingLocation' && !isPaper) {\n storeService.session.set.movementArrivalDate(newValue);\n }\n if (event.target.value !== data.date) {\n setData((prevState) => ({ ...prevState, date: newValue }));\n dataHasChanged();\n }\n break;\n case 'numberReceived': {\n storeService.session.set.movementAnimalTotal(newValue);\n setData((prevState) => ({ ...prevState, numberReceived: newValue }));\n dataHasChanged();\n break;\n }\n default:\n break;\n }\n };\n\n const setCPHField = (inValue) => {\n if (id === 'departureLocation') {\n storeService.session.set.movementFromHolding(inValue);\n } else if (id === 'receivingLocation') {\n storeService.session.set.movementToHolding(inValue);\n }\n setData((prevState) => ({ ...prevState, CPH: inValue }));\n dataHasChanged();\n };\n\n const validatePermitMoveComment = (input) => {\n // eslint-disable-next-line no-useless-escape\n const regex = /^[a-zA-Z0-9\\s\\,\\.]*$/;\n return regex.test(input);\n };\n\n useEffect(() => {\n if (!validatePermitMoveComment(data.manualCPH)) {\n setData((prevState) => ({ ...prevState, manualCPH: '' }));\n dataHasChanged();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pmMove]);\n\n return (\n <>\n \n
    \n {numberOfHoldings <= 2 &&\n
    \n \n
    \n }\n\n {isPaper &&\n
    \n \n
    \n }\n\n
    \n \n
    \n\n {pmMove && !isPaper &&\n
    \n \n
    \n }\n
    \n\n {numberReceivedLabel?.length > 0 &&\n
    \n \n
    \n }\n \n );\n};\n\nLocationAddressDate.propTypes = {\n cphError: PropTypes.exact({\n type: PropTypes.oneOf([\n constants.errorAndWarning.error,\n constants.errorAndWarning.warning,\n ''\n ]),\n value: PropTypes.string\n }),\n data: PropTypes.object,\n dateError: PropTypes.object,\n dateLabel: PropTypes.string,\n departureDaysAhead: PropTypes.number,\n id: PropTypes.string.isRequired,\n isPaper: PropTypes.bool,\n labelPosition: PropTypes.string,\n labelText: PropTypes.string,\n maxDate: PropTypes.string,\n movementType: PropTypes.string,\n numberReceivedError: PropTypes.object,\n numberReceivedLabel: PropTypes.string,\n panelTitle: PropTypes.string,\n pmMove: PropTypes.bool,\n setCphValid: PropTypes.func,\n setData: PropTypes.func,\n setDataChanged: PropTypes.func,\n setDateError: PropTypes.func,\n setModal: PropTypes.func.isRequired\n};\n\nexport default LocationAddressDate;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/addBatch/addBatch.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport PropTypes from 'prop-types';\nimport Button from 'backOfficeComponents/base/button/button';\nimport FieldEntry from 'backOfficeComponents/base/fieldEntry/fieldEntry';\nimport Legend from 'backOfficeComponents/base/legend/legend';\nimport NumberEntry from 'components/base/numberEntry/numberEntry';\n\nconst AddBatch = ({\n batchHeader,\n batchList,\n buttonLabel,\n id,\n setBatchList,\n setBatchTotal,\n setDataChanged,\n speciesId\n}) => {\n const { ready, t } = useTranslation();\n\n const speciesLabel = t('label.batchNumber' + speciesId);\n const [totalAnimalsError, setTotalAnimalsError] = React.useState(false);\n const [batch, setBatch] = React.useState({\n batchNumber: '',\n animalTotal: '',\n description: ''\n });\n\n const batchNumberChange = (input) => {\n setBatch({ ...batch, batchNumber: input });\n };\n\n const totalAnimalsChange = (input) => {\n setTotalAnimalsError(false);\n setBatch({ ...batch, animalTotal: input });\n };\n\n const submitBatch = () => {\n setBatchList([\n ...batchList,\n batch\n ]);\n if (setBatchTotal && typeof setBatchTotal === 'function') {\n setBatchTotal((prevState) => prevState + parseInt(batch.animalTotal));\n }\n setBatch({ batchNumber: '', description: '', animalTotal: '' });\n setDataChanged();\n };\n\n const disableAddBatch = () => {\n return (\n (!batch.animalTotal && !batch.batchNumber) ||\n totalAnimalsError\n );\n };\n\n const groupAnimalClassname = (totalAnimalsError ? ' formGroupError' : '');\n const warningClassname = (batch.batchNumber.length > 0 && batch.animalTotal && batch.animalTotal.length > 0 ? '' : 'hidden');\n\n return (\n <>\n {ready &&\n <>\n
    \n \n
    \n
    \n
    \n totalAnimalsChange(event.target.value)}\n value={batch.animalTotal}\n />\n
    \n
    \n
    \n
    \n batchNumberChange(event.target.value)}\n value={batch.batchNumber}\n width={config.WIDTH_BATCH_NUMBER}\n />\n
    \n
    \n
    \n submitBatch()}\n />\n
    \n
    \n
    \n
    \n\n \n

    \n {t('movements.animal-selection.batch.input-field-error-label')}\n

    \n
    \n \n }\n \n );\n};\n\nAddBatch.propTypes = {\n batchHeader: PropTypes.string,\n batchList: PropTypes.array,\n buttonLabel: PropTypes.string,\n id: PropTypes.string.isRequired,\n setBatchList: PropTypes.func.isRequired,\n setBatchTotal: PropTypes.func,\n setDataChanged: PropTypes.func.isRequired,\n speciesId: PropTypes.number\n};\n\nexport default AddBatch;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/sections/paperAnimalBatch/paperAnimalBatch.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport { tableColumns } from 'services/tableColumns';\nimport AddBatch from 'backOfficeComponents/addBatch/addBatch';\nimport Table from 'components/table/table';\n\nconst PaperAnimalBatch = ({\n batchList,\n setBatchList,\n setBatchTotal,\n setData,\n setDataChanged,\n setModal,\n speciesId\n}) => {\n const { ready, t } = useTranslation();\n\n const [paginationParams, setPaginationParams] = useState(constants.pagination.defaultParams);\n\n const handleChanges = {\n removeAllBatches: () => {\n setBatchList([]);\n if (setBatchTotal && typeof setBatchTotal === 'function') {\n setBatchTotal(0);\n }\n storeService.session.remove.movementBatchList();\n setDataChanged();\n },\n\n removeAllInvalid: () => {\n setBatchList((prevState) => {\n const newBatchList = helpers.animal.removeAllInvalid(prevState);\n\n if (setBatchTotal && typeof setBatchTotal === 'function') {\n setBatchTotal(newBatchList.reduce((total, item) => total + parseInt(item.animalTotal), 0));\n }\n storeService.session.set.movementBatchList(newBatchList);\n\n return newBatchList;\n });\n setDataChanged();\n },\n\n removeBatch: (batch) => {\n setBatchList((prevState) => {\n const newBatchList = helpers.batch.remove(prevState, batch);\n\n if (setBatchTotal && typeof setBatchTotal === 'function') {\n setBatchTotal(newBatchList.reduce((total, item) => total + parseInt(item.animalTotal), 0));\n }\n storeService.session.set.movementBatchList(newBatchList);\n\n return newBatchList;\n });\n setDataChanged();\n }\n };\n\n const extraContent = batchList?.length > 0 ? '(' + batchList.reduce((total, item) => total + parseInt(item.animalTotal), 0) + ')' : '';\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n [constants.pagination.bottom]: {\n ...prevState[constants.pagination.bottom],\n total: batchList?.reduce((total, item) => total + parseInt(item.animalTotal), 0)\n }\n }));\n }, [batchList]);\n\n return (\n <>\n {ready &&\n
    \n \n

    {t('movementDetails.animalsMoved.heading')} {extraContent}

    \n
    \n
    \n \n\n {batchList?.length > 0 &&\n <>\n \n\n
    \n {t('boApp.label.totalAnimals')} {String(batchList.reduce((total, item) => total + parseInt(item.animalTotal), 0))} \n
    \n \n }\n
    \n
    \n }\n \n );\n};\n\nPaperAnimalBatch.propTypes = {\n batchList: PropTypes.array,\n setBatchList: PropTypes.func.isRequired,\n setBatchTotal: PropTypes.func,\n setData: PropTypes.func.isRequired,\n setDataChanged: PropTypes.func.isRequired,\n setModal: PropTypes.func,\n speciesId: PropTypes.number\n};\n\nexport default PaperAnimalBatch;\n","import React, { useState } from 'react';\nimport config from 'config';\nimport constants from 'services/constants';\nimport classes from 'backOfficeComponents/addTagRange/addTagRange.module.scss';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Button from 'backOfficeComponents/base/button/button';\nimport FieldEntry from 'backOfficeComponents/base/fieldEntry/fieldEntry';\nimport FieldLabel from 'backOfficeComponents/base/fieldLabel/fieldLabel';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport Legend from 'backOfficeComponents/base/legend/legend';\n\nconst AddTagRange = ({\n animalDetails,\n setAnimalDetails,\n setDataChanged,\n speciesId\n}) => {\n const [batchNumberError, setBatchNumberError] = React.useState(false);\n const [totalAnimalsError, setTotalAnimalsError] = React.useState(false);\n const [totalAnimalsLimitError, setTotalAnimalsLimitError] = React.useState(false);\n const [batchNumber, setBatchNumber] = useState('');\n const [startNumber, setStartNumber] = useState('');\n const [totalAnimals, setTotalAnimals] = useState('');\n\n const tagRangeSubTitle = 'tagging.application.tagRangeSubTitle' + (speciesId ? speciesId : '');\n const batchNumberLabel = 'label.batchNumber' + (speciesId ? speciesId : '');\n\n const validate = {\n totalAnimals: (input) => {\n const regex = /^[0-9]*$/;\n const validResult = regex.test(input);\n setTotalAnimalsError(!validResult);\n return validResult;\n },\n\n totalAnimalsLimit: (input) => {\n const validResult = parseInt(input) > 0 && parseInt(input) <= config.MAX_TOTAL_ANIMAL_RANGE;\n setTotalAnimalsLimitError(!validResult);\n return validResult;\n }\n };\n\n const clearFields = () => {\n setBatchNumber('');\n setStartNumber('');\n setTotalAnimals('');\n };\n\n const submitRange = () => {\n if (!validate.totalAnimalsLimit(totalAnimals)) {\n setTotalAnimalsLimitError(true);\n } else if (!validate.totalAnimals(totalAnimals)) {\n setTotalAnimalsError(true);\n } else {\n setTotalAnimalsLimitError(false);\n setTotalAnimalsError(false);\n setBatchNumberError(false);\n clearFields();\n\n const batchNum = helpers.tag.trim(batchNumber);\n const startNum = helpers.tag.trim(startNumber);\n\n if (typeof setAnimalDetails === 'function') {\n const tags = [];\n for (let i = 0; i < totalAnimals; i++) {\n const numberOfLeadingZeros = (startNum.match(/^0+/) || [''])[0].length;\n\n let tagNum = parseInt(startNum) + i;\n\n if (numberOfLeadingZeros > 0 && String(tagNum).length < startNum.length) {\n tagNum = helpers.text.zerosPadLeft(tagNum, startNum.length);\n }\n\n tags.push(batchNum + ' ' + tagNum);\n }\n\n setAnimalDetails([\n ...animalDetails,\n ...tags\n .filter((tag) => !animalDetails.some((item) => item.tagNumber === tag))\n .map((tag) => ({\n tagNumber: tag,\n uuid: helpers.generateUUID()\n }))\n ]);\n setDataChanged();\n }\n }\n };\n\n const batchNumberChange = (event) => {\n setBatchNumber(event.target.value);\n };\n\n const startNumberChange = (event) => {\n setStartNumber(event.target.value);\n };\n\n const totalAnimalsChange = (event) => {\n setTotalAnimals(event.target.value);\n };\n\n const isDisabled = () => (!batchNumber || !totalAnimals);\n\n return (\n <>\n
    \n \n \n\n {batchNumberError &&\n \n }\n {totalAnimalsError &&\n \n }\n {totalAnimalsLimitError &&\n \n }\n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n );\n};\n\nAddTagRange.propTypes = {\n animalDetails: PropTypes.array,\n setAnimalDetails: PropTypes.func.isRequired,\n setDataChanged: PropTypes.func.isRequired,\n speciesId: PropTypes.number\n};\n\nexport default AddTagRange;\n","import React, { createRef } from 'react';\nimport { CSVReader } from 'react-papaparse';\nimport classes from 'backOfficeComponents/base/fileUpload/fileUpload.module.scss';\nimport config from 'config';\nimport PropTypes from 'prop-types';\nimport Button from 'backOfficeComponents/base/button/button';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport FieldLabel from 'backOfficeComponents/base/fieldLabel/fieldLabel';\nimport Hint from 'backOfficeComponents/base/hint/hint';\nimport Legend from 'backOfficeComponents/base/legend/legend';\nimport helpers from 'services/helpers';\n\nconst FileUpload = ({\n animalDetails,\n hideHint,\n id,\n pending,\n setAnimalDetails,\n setDataChanged,\n setPending\n}) => {\n const [selectedFile, setSelectedFile] = React.useState([]);\n const [fileError, setFileError] = React.useState(false);\n const [fileTypeError, setFileTypeError] = React.useState(false);\n const [maxRecordsError, setMaxRecordsError] = React.useState('');\n const buttonRef = createRef();\n\n const handleOpenDialog = (e) => {\n if (buttonRef.current) {\n buttonRef.current.open(e);\n }\n };\n\n const handleOnFileLoad = (data) => {\n const regex = /^.*\\.(csv)$/;\n if (regex.test(buttonRef.current.state.file.name)) {\n setSelectedFile([]);\n data.forEach((element) => {\n element.data.forEach((el) => {\n const trimmedElement = el.replaceAll(' ', '').toLowerCase();\n\n if (trimmedElement.length > 0 &&\n (\n helpers.checkTags(trimmedElement)\n )\n ) {\n setSelectedFile((prevArray) => [...prevArray, el]);\n }\n });\n });\n setFileTypeError(false);\n } else {\n setFileTypeError(true);\n setFileError(false);\n }\n };\n\n const validateTags = (tags) => {\n const uniqueTags = [...new Set(tags)].map((tag) => tag.trim());\n\n if (uniqueTags.length > config.MAX_UPLOAD_RECORDS) {\n setMaxRecordsError('error.maxRecordsNumber');\n } else {\n setMaxRecordsError('');\n setAnimalDetails([\n ...animalDetails,\n ...uniqueTags.map((item) => ({\n tagNumber: item,\n uuid: helpers.generateUUID()\n }))\n ]);\n setDataChanged();\n setPending(false);\n setFileError(false);\n setSelectedFile([]);\n }\n };\n\n return (\n
    \n \n {!hideHint &&\n \n }\n
    \n {fileError &&\n \n }\n {fileTypeError &&\n \n }\n\n \n
    \n \n {({ file }) => (\n
    \n {' '}\n {selectedFile.length > 0 && file && file.name}\n
    \n )}\n \n
    \n validateTags(selectedFile)}\n />\n
    \n
    \n {maxRecordsError &&\n \n }\n
    \n
    \n );\n};\n\nFileUpload.propTypes = {\n animalDetails: PropTypes.array,\n hideHint: PropTypes.bool,\n id: PropTypes.string.isRequired,\n pending: PropTypes.bool.isRequired,\n setAnimalDetails: PropTypes.func.isRequired,\n setDataChanged: PropTypes.func.isRequired,\n setPending: PropTypes.func.isRequired\n};\n\nexport default FileUpload;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport config from 'config';\nimport constants from 'services/constants';\nimport classes from 'backOfficeComponents/manualTagEntry/manualTagEntry.module.scss';\nimport Button from 'backOfficeComponents/base/button/button';\nimport Legend from 'backOfficeComponents/base/legend/legend';\nimport FieldEntry from 'backOfficeComponents/base/fieldEntry/fieldEntry';\nimport helpers from 'services/helpers';\n\nconst ManualTagEntry = ({\n animalDetails,\n description,\n id,\n setAnimalDetails,\n setDataChanged,\n title\n}) => {\n const { ready, t } = useTranslation();\n\n const [textFieldTags, setTextFieldTags] = React.useState([]);\n\n const validateAnimalsViaTextEntry = () => {\n backOfficeTagEntry();\n setTextFieldTags([]);\n };\n\n const backOfficeTagEntry = () => {\n const tags = textFieldTags.length > 0\n ? textFieldTags[0].match(/\\b[\\w']+(?:[^\\w\\n]+[\\w']+){0,1}\\b/g)\n : null;\n const validTags = [];\n if (tags !== null && tags.length > 0) {\n tags.forEach((element) => {\n validTags.push(element);\n });\n }\n if (validTags && validTags.length !== 0) {\n const newTags = validTags.map((tag) => {\n return {\n tagNumber: tag,\n uuid: helpers.generateUUID()\n };\n });\n setAnimalDetails([\n ...animalDetails,\n ...newTags\n ]);\n setDataChanged();\n }\n };\n\n const addAnimalsViaTextEntry = (event) => {\n if (event.target.value.length === 0) {\n setTextFieldTags([]);\n return;\n }\n\n const tagArray = event.target.value.split();\n setTextFieldTags(tagArray);\n };\n\n return (\n <>\n {ready &&\n
    \n \n {description &&\n

    {t(description)}

    \n }\n\n
    \n \n \n
    \n
    \n }\n \n );\n};\n\nManualTagEntry.propTypes = {\n animalDetails: PropTypes.array,\n description: PropTypes.string,\n id: PropTypes.string.isRequired,\n setAnimalDetails: PropTypes.func.isRequired,\n setDataChanged: PropTypes.func.isRequired,\n title: PropTypes.string\n};\n\nexport default ManualTagEntry;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/sections/paperAnimalIndividual/paperAnimalIndividual.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport { tableColumns } from 'services/tableColumns';\nimport AddTagRange from 'backOfficeComponents/addTagRange/addTagRange';\nimport FileUpload from 'backOfficeComponents/base/fileUpload/fileUpload';\nimport ManualTagEntry from 'backOfficeComponents/manualTagEntry/manualTagEntry';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport Table from 'components/table/table';\n\nconst PaperAnimalIndividual = ({\n animalDetails,\n pending,\n setAnimalDetails,\n setData,\n setDataChanged,\n setModal,\n setPending,\n setValidationState,\n speciesId\n}) => {\n const { ready, t } = useTranslation();\n\n const [selectionMethod, setSelectionMethod] = useState(constants.option.selectionMethod.manualTagNumbers);\n const [paginationParams, setPaginationParams] = useState(constants.pagination.defaultParams);\n\n const handleChanges = {\n removeAllAnimals: () => {\n setAnimalDetails([]);\n setDataChanged();\n if (setValidationState && typeof setValidationState === 'function') {\n setValidationState((prevState) => prevState === 2 ? 0 : prevState);\n }\n },\n\n removeAllInvalid: () => {\n setAnimalDetails((prevState) => {\n const newAnimalDetails = helpers.animal.removeAllInvalid(prevState).map((animal) => ({\n tagNumber: animal.tagNumber,\n status: animal.status ? animal.status : '',\n uuid: animal.uuid ? animal.uuid : ''\n }));\n\n storeService.session.set.movementAnimalsBeingMoved(newAnimalDetails);\n\n return newAnimalDetails;\n });\n setDataChanged();\n if (setValidationState && typeof setValidationState === 'function') {\n setValidationState((prevState) => prevState === 2 ? 0 : prevState);\n }\n },\n\n removeAnimal: (animalToRemove) => {\n setAnimalDetails((prevState) => {\n const newAnimalDetails = prevState.filter((item) => item.uuid !== animalToRemove.uuid).map((animal) => ({\n tagNumber: animal.tagNumber,\n status: animal.status ? animal.status : '',\n uuid: animal.uuid ? animal.uuid : '',\n valid: animalToRemove.valid === 'Invalid' ? animal.valid : ''\n }));\n storeService.session.set.movementAnimalsBeingMoved(newAnimalDetails);\n return newAnimalDetails;\n });\n setDataChanged();\n if (setValidationState && typeof setValidationState === 'function') {\n setValidationState((prevState) => prevState === 2 ? 0 : prevState);\n }\n },\n\n selectionMethod: (method) => {\n setSelectionMethod(method);\n setDataChanged();\n }\n };\n\n const extraContent = animalDetails && animalDetails.length ? '(' + animalDetails.length + ')' : '';\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n [constants.pagination.bottom]: {\n ...prevState[constants.pagination.bottom],\n total: animalDetails?.length\n }\n }));\n }, [animalDetails]);\n\n return (\n <>\n {ready &&\n
    \n \n

    {t('movementDetails.animalsMovedTags.header')} {extraContent}

    \n
    \n
    \n handleChanges.selectionMethod(event.target.value)}\n reduceSpace={true}\n value={selectionMethod}\n />\n {helpers.option.selectionMethod.isUploadFile(selectionMethod) &&\n \n }\n {helpers.option.selectionMethod.isTagNumberRange(selectionMethod) &&\n \n }\n {helpers.option.selectionMethod.isManualTagNumbers(selectionMethod) &&\n \n }\n {animalDetails?.length > 0 &&\n <>\n \n\n
    \n {t('movementDetails.animalsMoved.tagTotal')} {String(animalDetails.length)}\n
    \n \n }\n
    \n
    \n }\n \n );\n};\n\nPaperAnimalIndividual.propTypes = {\n animalDetails: PropTypes.array,\n pending: PropTypes.bool.isRequired,\n setAnimalDetails: PropTypes.func,\n setData: PropTypes.func.isRequired,\n setDataChanged: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setPending: PropTypes.func.isRequired,\n speciesId: PropTypes.number\n};\n\nexport default PaperAnimalIndividual;\n","import React from 'react';\nimport classes from 'backOfficeComponents/sections/paperTransport/paperTransport.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport he from 'he';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport helpers from 'services/helpers';\nimport FieldEntry from 'backOfficeComponents/base/fieldEntry/fieldEntry';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport SectionTitleBar from 'backOfficeComponents/base/sectionTitleBar/sectionTitleBar';\n\nconst PaperTransport = ({\n haulierNameError,\n panelTitle,\n setDataChanged,\n setTransportDetails,\n transportAuthNumberError,\n transportDetails,\n transportDetailsError\n}) => {\n const optional = false;\n\n const handleChanges = {\n authorisationNumber: (authNum) => {\n storeService.session.set.movementAuthorisationNumber(authNum);\n setTransportDetails((prevState) => ({\n ...prevState,\n transportAuthorisationNumber: authNum\n }));\n setDataChanged();\n },\n\n transportedBy: (transportedBy) => {\n storeService.session.set.movementTransportedBy(transportedBy);\n setTransportDetails((prevState) => ({\n ...prevState,\n transportedBy\n }));\n setDataChanged();\n },\n\n transportName: (transporterName) => {\n storeService.session.set.movementTransporter(transporterName);\n setTransportDetails(((prevState) => ({\n ...prevState,\n transporterName\n })));\n setDataChanged();\n },\n\n vehicleRegistrationNumber: (regNum) => {\n storeService.session.set.movementVehicleRegistrationNumber(regNum);\n setTransportDetails((prevState) => ({\n ...prevState,\n transportVehicleRegistrationNo: regNum\n }));\n setDataChanged();\n }\n };\n\n return (\n
    \n \n\n handleChanges.transportedBy(event.target.value)}\n value={transportDetails ? transportDetails.transportedBy : ''}\n warning={helpers.response.isWarning(transportDetailsError.type) ? transportDetailsError.value : ''}\n />\n\n
    \n
    \n handleChanges.vehicleRegistrationNumber(event.target.value)}\n optional={optional}\n value={transportDetails ? transportDetails.transportVehicleRegistrationNo : ''}\n width={config.WIDTH_REGISTRATION}\n />\n
    \n
    \n handleChanges.transportName(event.target.value)}\n optional={optional}\n value={transportDetails?.transporterName ? he.decode(transportDetails.transporterName) : ''}\n warningLabel={helpers.response.isWarning(haulierNameError.type) ? haulierNameError.value : ''}\n width={config.WIDTH_TRANSPORTER_NAME}\n />\n
    \n
    \n handleChanges.authorisationNumber(event.target.value)}\n optional={optional}\n value={transportDetails?.transportAuthorisationNumber ? he.decode(transportDetails.transportAuthorisationNumber) : ''}\n warningLabel={helpers.response.isWarning(transportAuthNumberError.type) ? transportAuthNumberError.value : ''}\n width={config.WIDTH_TRANSPORTER_AUTH}\n />\n
    \n
    \n
    \n );\n};\n\nPaperTransport.propTypes = {\n haulierNameError: PropTypes.object,\n panelTitle: PropTypes.string,\n setDataChanged: PropTypes.func,\n setTransportDetails: PropTypes.func,\n transportAuthNumberError: PropTypes.object,\n transportDetails: PropTypes.object,\n transportDetailsError: PropTypes.object\n};\n\nexport default PaperTransport;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport { Prompt } from 'react-router';\nimport bff, { bffResponse } from 'services/bff';\nimport classes from 'backOffice/editMovement/editMovement.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport { holdingHelper } from 'services/holdingHelper';\nimport navigation from 'services/navigation';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport Button from 'backOfficeComponents/base/button/button';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport DisplayValue from 'backOfficeComponents/base/displayValue/displayValue';\nimport Exemptions from 'backOfficeComponents/sections/exemptions/exemptions';\nimport FoodChainInformation from 'backOfficeComponents/sections/foodChainInformation/foodChainInformation';\nimport Legend from 'components/base/legend/legend';\nimport LocationAddressDate from 'backOfficeComponents/sections/locationAddressDate/locationAddressDate';\nimport ModalConfirm from 'components/base/modalConfirm/modalConfirm';\nimport PaperAnimalBatch from 'backOfficeComponents/sections/paperAnimalBatch/paperAnimalBatch';\nimport PaperAnimalIndividual from 'backOfficeComponents/sections/paperAnimalIndividual/paperAnimalIndividual';\nimport PaperTransport from 'backOfficeComponents/sections/paperTransport/paperTransport';\nimport PageTitle from 'backOfficeComponents/base/pageTitle/pageTitle';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport configHelper from 'services/configHelper';\nimport axios from 'axios';\nimport { cloneDeep } from 'lodash';\n\nlet departureDaysAhead = 1;\n\nconst mapHaulierName = (haulierName) => {\n if (haulierName && haulierName.includes(constants.option.haulierMapping.receivingKeeper)) {\n return constants.option.transporter.destinationKeeper;\n }\n if (haulierName && haulierName.includes(constants.option.haulierMapping.departureKeeper)) {\n return constants.option.transporter.departureKeeper;\n }\n if (haulierName && haulierName.includes(constants.option.haulierMapping.haulier)) {\n return constants.option.transporter.haulier;\n }\n return null;\n};\n\nconst mapRecordedBy = (recordedBy) => {\n switch (recordedBy) {\n case constants.recordedBy.destination:\n return constants.option.transporter.destinationKeeper;\n\n case constants.recordedBy.departure:\n return constants.option.transporter.departureKeeper;\n\n default:\n return null;\n }\n};\n\nconst setMargin = () => {\n const fixedActionsHeight = document.getElementById('fixedActions');\n document.getElementById('appContent').style.marginBottom = (fixedActionsHeight ? (fixedActionsHeight.offsetHeight) : 0) + 'px';\n // return fixedActionsHeight ? (fixedActionsHeight.offsetHeight) : 0;\n};\n\nconst isNonCPH = (holding) => holding && !holdingHelper.cph.isNonCph(holding);\n\nconst get = {\n movementHolding: (movementData) => {\n if (isNonCPH(movementData.sourceHolding)) {\n return movementData.sourceHolding;\n }\n if (isNonCPH(movementData.fromHolding)) {\n return movementData.fromHolding;\n }\n if (isNonCPH(movementData.sourceHolding)) {\n return movementData.sourceHolding;\n }\n return isNonCPH(movementData.toHolding)\n ? movementData.toHolding\n : movementData.destinationHolding;\n },\n\n newDevices: (movementGroups, animalDetails) => {\n const newAnimalDetails = [];\n if (animalDetails) {\n animalDetails.forEach((animalDetail) => {\n if (movementGroups?.length > 0) {\n let found = false;\n for (let i = 0; (i < movementGroups.length) && !found; i++) {\n const nonMatchDevices = movementGroups[i].devices?.filter((device) => device.tagNumber === animalDetail.tagNumber);\n const nonMatchDevicesWithDetails = movementGroups[i].devicesWithDetail?.filter((item) => item.device.tagNumber === animalDetail.tagNumber);\n found = nonMatchDevices.length > 0 || nonMatchDevicesWithDetails.length > 0;\n }\n if (!found) {\n newAnimalDetails.push(animalDetail);\n }\n } else {\n newAnimalDetails.push(animalDetail);\n }\n });\n }\n return newAnimalDetails;\n },\n\n newBatches: (movementGroups, batchList) => {\n const newBatchList = [];\n if (batchList) {\n batchList.forEach((batchItem) => {\n if (movementGroups?.length > 0) {\n let found = false;\n for (let i = 0; (i < movementGroups.length) && !found; i++) {\n const matchedBatch = movementGroups[i].batches?.find((batch) => batch.batchNumber === batchItem.batchNumber && batch.animalTotal === batchItem.animalTotal);\n if (matchedBatch) {\n found = true;\n }\n }\n if (!found) {\n newBatchList.push(batchItem);\n }\n } else {\n newBatchList.push(batchItem);\n }\n });\n }\n return newBatchList;\n },\n\n newMovementGroups: (movementGroups, animalDetails, batchList) => {\n const newMovementGroups = cloneDeep(movementGroups);\n const result = cloneDeep(movementGroups);\n for (let group = 0; group < newMovementGroups?.length; group++) {\n const movementGroup = newMovementGroups[group];\n const devices = [];\n const batches = [];\n const devicesWithDetail = [];\n if (animalDetails) {\n animalDetails.forEach((animalDetail) => {\n const { tagNumber } = animalDetail;\n if (movementGroup?.devices?.length > 0) {\n const matchedTagNumber = movementGroup.devices.find((device) => device.tagNumber === tagNumber);\n if (matchedTagNumber) {\n devices.push(matchedTagNumber);\n movementGroup.devices = movementGroup.devices.filter((device) => device.tagNumber !== tagNumber);\n }\n }\n if (movementGroup?.devicesWithDetail?.length > 0) {\n const matchedTagNumber = movementGroup.devicesWithDetail.find((device) => device.device.tagNumber === tagNumber);\n if (matchedTagNumber) {\n devicesWithDetail.push(matchedTagNumber);\n movementGroup.devicesWithDetail = movementGroup.devicesWithDetail.filter((device) => device.device.tagNumber !== tagNumber);\n }\n }\n });\n }\n if (batchList) {\n batchList.forEach((batchItem) => {\n const { animalTotal, batchNumber } = batchItem;\n if (movementGroup?.batches?.length > 0) {\n const matchedBatchNumber = movementGroup.batches.find((batch) => batch.batchNumber === batchNumber && batch.animalTotal === animalTotal);\n if (matchedBatchNumber) {\n batches.push(matchedBatchNumber);\n movementGroup.batches = movementGroup.batches.filter((batch) => batch.batchNumber !== batchNumber && batch.animalTotal !== animalTotal);\n }\n }\n });\n }\n result[group].devices = devices;\n result[group].devicesWithDetail = devicesWithDetail;\n result[group].batches = batches;\n }\n return result;\n }\n};\n\nconst BoEditMovement = ({\n setModal\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const sessionDataChanged = storeService.session.get.dataChanged();\n const fromHolding = storeService.session.get.movementFromHolding();\n const toHolding = storeService.session.get.movementToHolding();\n const isMarket = false;\n\n const ERR_TEMPLATE = { type: '', value: '' };\n\n const [movementReference, setMovementReference] = React.useState('');\n const [movementData, setMovementData] = React.useState(null);\n const [species, setSpecies] = React.useState({});\n\n const [departDataInit, setDepartDataInit] = React.useState({\n CPH: '',\n date: '',\n manualCPH: ''\n });\n const [departData, setDepartData] = React.useState(departDataInit);\n const [arriveDataInit, setArriveDataInit] = React.useState({\n CPH: '',\n date: '',\n manualCPH: '',\n numberReceived: ''\n });\n const [arriveData, setArriveData] = React.useState(arriveDataInit);\n\n const [transportData, setTransportData] = React.useState({});\n const [exemptionOptions, setExemptionOptions] = React.useState([]);\n const [batchListInit, setBatchListInit] = React.useState([]);\n const [batchList, setBatchList] = React.useState(batchListInit);\n const [batchTotal, setBatchTotal] = React.useState(0);\n const [animalDetailsInit, setAnimalDetailsInit] = React.useState([]);\n const [animalDetails, setAnimalDetails] = React.useState(animalDetailsInit);\n const [fciData, setFciData] = React.useState({});\n\n const [pageErrors, setPageErrors] = React.useState([]);\n const [pageWarnings, setPageWarnings] = React.useState([]);\n\n const [marketType, setMarketType] = React.useState('');\n const [movementType, setMovementType] = React.useState();\n const [departureDateError, setDepartureDateError] = React.useState(ERR_TEMPLATE);\n const [arrivalDateError, setArrivalDateError] = React.useState(ERR_TEMPLATE);\n const [departureHoldingError, setDepartureHoldingError] = React.useState(ERR_TEMPLATE);\n const [destinationHoldingError, setDestinationHoldingError] = React.useState(ERR_TEMPLATE);\n const [destinationDetailTotalAnimalsReceivedError, setDestinationDetailTotalAnimalsReceivedError] = React.useState(ERR_TEMPLATE);\n const [transportDataError, setTransportDataError] = React.useState(ERR_TEMPLATE);\n const [haulierNameError, setHaulierNameError] = React.useState(ERR_TEMPLATE);\n const [transportAuthNumberError, setTransportAuthNumberError] = React.useState(ERR_TEMPLATE);\n const [exitClicked, setExitClicked] = React.useState(false);\n\n const [nonComplianceReason, setNonComplianceReason] = React.useState();\n const [holdingRestrictions, setHoldingRestrictions] = React.useState();\n\n const [dataChanged, setDataChanged] = React.useState(sessionDataChanged ? sessionDataChanged : false);\n const [pending, setPending] = React.useState(false);\n const [submitted, setSubmitted] = React.useState(false);\n const [movementRef, setMovementRef] = React.useState(null);\n const [paperId, setPaperId] = React.useState(null);\n const [pollingStatus, setPollingStatus] = React.useState(null);\n const [metFCIWithdrawalPeriods, setMetFCIWithdrawalPeriods] = React.useState([]);\n const [choiceDisabled, setChoiceDisabled] = React.useState(true);\n const [validationError, setValidationError] = React.useState(false);\n const [pmMove, setPmMove] = React.useState(false);\n const [isInBusinessMovement, setIsInBusinessMovement] = React.useState(false);\n const [cphValid, setCphValid] = React.useState(false);\n\n const clearErrors = () => {\n setPageErrors([]);\n\n setDepartureHoldingError(ERR_TEMPLATE);\n setDepartureDateError(ERR_TEMPLATE);\n\n setDestinationHoldingError(ERR_TEMPLATE);\n setArrivalDateError(ERR_TEMPLATE);\n\n setTransportDataError(ERR_TEMPLATE);\n setHaulierNameError(ERR_TEMPLATE);\n setTransportAuthNumberError(ERR_TEMPLATE);\n\n setDestinationDetailTotalAnimalsReceivedError(ERR_TEMPLATE);\n };\n\n const handleSubmissionResponse = (data) => {\n setPaperId(bffResponse.paperId(data));\n setMovementRef(bffResponse.movementRef(data));\n\n setValidationError(data.errorCode && data.errorCode === 400);\n setPageErrors(bffResponse.errors(data));\n setPageWarnings(bffResponse.warnings(data));\n setPollingStatus(bffResponse.status(data));\n if (data.poll) {\n setDataChanged(false);\n storeService.session.remove.dataChanged();\n }\n };\n\n const submit = () => {\n clearErrors();\n setSubmitted(true);\n setPending(true);\n\n const transportInformation = transportData && Object.keys(transportData)?.length > 0\n ? {\n recordTransportInformation: 'yes',\n transportedBy: mapHaulierName(transportData.transportedBy) ?? transportData.transportedBy,\n transporter: transportData.transporterName,\n vehicleRegistrationNumber: transportData.transportVehicleRegistrationNo,\n authorisationNumber: transportData.transportAuthorisationNumber\n }\n : {\n recordTransportInformation: 'no'\n };\n\n const mapSourceHolding = (inValue) => inValue.CPH ? inValue.CPH : (helpers.species.isCattleId(species.id) ? config.UNKNOWN : '');\n\n let userHolding;\n if (isInBusinessMovement) {\n userHolding = toHolding;\n } else if (movementData?.userHolding) {\n userHolding = movementData.userHolding;\n } else {\n userHolding = helpers.option.recordBy.isByDeparture(movementData.recordedBy) ? mapSourceHolding(departData) : arriveData.CPH;\n }\n const isByDestination = helpers.option.recordBy.isByDestination(movementData.recordedBy) ? constants.option.movement.on : constants.option.movement.off;\n const params = {\n poll: config.POLLS_ENABLED,\n amend: true,\n altErrors: true,\n movementType: (isInBusinessMovement ? constants.option.movement.on : isByDestination),\n trackingId: '',\n userHolding,\n animalCount: parseInt(arriveData.numberReceived),\n species: species.name,\n departureDate: helpers.date.formatForSubmission(departData.date),\n arrivalDate: helpers.date.formatForSubmission(arriveData.date),\n transportInformation: transportInformation,\n finalAnimalDetails: {\n animalsBeingMoved: animalDetails,\n batchList: batchList,\n numberOfAnimalsSelected: arriveData.numberReceived\n },\n exemptions: exemptionOptions ? exemptionOptions.filter((o) => o.value) : [],\n sourceHolding: mapSourceHolding(departData),\n destinationHolding: arriveData.CPH,\n fciData,\n originalMovementId: movementData.requestId\n };\n\n if (pmMove) {\n params.userHolding = departData.CPH;\n params.animalCount = parseInt(departData.numberReceived);\n params.comment = departData.comment;\n params.arrivalDate = helpers.date.formatForSubmission(departData.date);\n params.sourceHolding = departData.CPH;\n params.destinationHolding = departData.CPH;\n }\n\n const sessionRequest = storeService.session.get.request();\n if (sessionRequest) {\n params.finalAnimalDetails.animalsBeingMoved = get.newDevices(sessionRequest.movementGroups, animalDetails);\n params.finalAnimalDetails.batchList = get.newBatches(sessionRequest.movementGroups, batchList);\n sessionRequest.movementGroups = get.newMovementGroups(sessionRequest.movementGroups, animalDetails, batchList);\n params.previousRequest = sessionRequest;\n }\n\n bff\n .post('/movement', params)\n .then(({ data }) => {\n handleSubmissionResponse(data);\n setPending(false);\n })\n .catch((error) => {\n setSubmitted(false);\n setPending(false);\n errors.BFF(error, setModal);\n });\n };\n\n const dataHasChanged = () => {\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n };\n\n const pageContent = {\n animalBatch: () => (\n \n ),\n\n individualAnimals: () => (\n \n ),\n\n arrivalLocation: () => (\n \n ),\n\n departureLocation: () => (\n \n ),\n\n exemptions: () => (\n <>\n {species.id &&\n \n }\n \n ),\n\n fciDetails: () => (\n \n ),\n\n marketType: () => (\n
    \n
    \n \n
    \n
    \n setMarketType(target.value)}\n reduceSpace={true}\n suppressLabel={true}\n value={marketType}\n />\n
    \n
    \n
    \n
    \n ),\n showIsByDestination: () => (\n helpers.option.recordBy.isByDestination(movementData?.recordedBy) ? 'radioButtons.movementType.on' : 'radioButtons.movementType.off'\n ),\n movementType: () => (\n \n ),\n\n transportDetails: () => (\n \n )\n };\n\n const handleChanges = {\n holdingRestriction: (restrictions) => {\n storeService.session.set.movementFciHoldingRestrictions(restrictions);\n setHoldingRestrictions(restrictions);\n\n dataHasChanged();\n },\n\n nonComplianceReason: (reason) => {\n storeService.session.set.movementFciNonComplianceReason(reason);\n setNonComplianceReason(reason);\n\n dataHasChanged();\n },\n\n withdrawalPeriod: (period) => {\n storeService.session.set.movementFciWithdrawalPeriod(period);\n\n dataHasChanged();\n }\n };\n\n useEffect(() => {\n setMargin();\n });\n\n useEffect(() => {\n if (dataHasChanged && cphValid && !pmMove) {\n const sources = [];\n const spawnToken = () => {\n sources.push(axios.CancelToken.source());\n return sources[sources.length - 1];\n };\n\n helpers.get.holdingsInBusiness(spawnToken.token, fromHolding)\n .then((holdingRes) => {\n if (helpers.response.isValid(holdingRes?.data?.data, setModal)) {\n const holdings = holdingRes.data?.data?.holdings || [];\n // in-business move is when both CPHs is in the same user holdings\n const isInBusiness = holdings.some((holding) => holding.cph === toHolding) &&\n holdings.some((holding) => holding.cph === fromHolding);\n setIsInBusinessMovement(isInBusiness);\n }\n })\n .catch((error) => {\n if (error?.response?.status !== 404) {\n errors.BFF(error, setModal);\n }\n });\n\n }\n }, [cphValid]);\n\n useEffect(() => {\n setMovementData(storeService.session.get.movement());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.boEditMovements.length) !== Routing.boEditMovements) {\n storeService.session.remove.dataChanged();\n storeService.session.removeAll.confirm();\n storeService.session.removeAll.movement();\n unListen();\n }\n });\n\n window.onpopstate = () => {\n if (storeService.session.get.confirm()) {\n history.push(Routing.boSearchMovements);\n }\n };\n }, [history]);\n\n useEffect(() => {\n if (animalDetails?.length > 0 || batchList?.length > 0) {\n setChoiceDisabled(false);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animalDetails, batchList]);\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n helpers.get.metFciWithdrawalPeriods(source.token)\n .then(({ data }) => {\n if (helpers.response.isValid(data, setModal)) {\n setMetFCIWithdrawalPeriods(data);\n }\n });\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const getRecordedByFromData = (data) => {\n if (data.transportHaulierName === constants.option.haulierMapping.haulier) {\n return constants.option.transporter.haulier;\n }\n if (data.movementDocument?.transportDetail) {\n const { transportDetail } = movementData.movementDocument;\n return transportDetail.transporterType\n ? (transportDetail.transporterType.name\n ? constants.option.transporterReverse[transportDetail.transporterType.name]\n : constants.option.transporterReverse[transportDetail.transporterType]\n )\n : (transportDetail.transportHaulierName\n ? mapHaulierName(transportDetail.transportHaulierName)\n : null\n );\n }\n if (data.recordedBy) {\n return mapRecordedBy(data.recordedBy);\n }\n if (data.transportInformation?.transportedBy) {\n return mapHaulierName(data.transportInformation.transportedBy);\n }\n return data.transportHaulierName ? mapHaulierName(data.transportHaulierName) : null;\n };\n\n if (movementData) {\n const fromHolding = movementData.sourceHolding ? movementData.sourceHolding : movementData.fromHolding;\n const toHolding = movementData.destinationHolding ? movementData.destinationHolding : movementData.toHolding;\n const movementRefNo = movementData.documentRef ? movementData.documentRef : (movementData.movementDocument ? movementData.movementDocument.movementDocumentRef : 'n/a');\n\n setMovementReference(movementRefNo);\n setMarketType();\n const recordByDestination = (helpers.option.recordBy.isByDestination(movementData.recordedBy) ? constants.option.movement.on : constants.option.movement.off);\n setMovementType(isInBusinessMovement ? constants.option.movement.on : recordByDestination);\n let speciesId;\n if (movementData.speciesId) {\n speciesId = movementData.speciesId;\n setSpecies({ id: speciesId, name: helpers.species.idToName(speciesId) });\n } else {\n speciesId = helpers.species.nameToId(movementData.species);\n setSpecies({ id: speciesId, name: movementData.species });\n }\n\n departureDaysAhead = configHelper.get.offMoveMaxDays(speciesId);\n\n const departureDetails = {\n CPH: movementData.sourceHolding ? movementData.sourceHolding : movementData.fromHolding,\n date: helpers.date.formatForSubmission(movementData.departureDate ? movementData.departureDate : movementData.movementDocument.departureDetail?.departureDateTime)\n };\n\n if (holdingHelper.cph.isNonCph(fromHolding) || holdingHelper.cph.isNonCph(toHolding)) {\n setPmMove(true);\n departureDetails.CPH = get.movementHolding(movementData);\n departureDetails.comment = movementData.comment;\n departureDetails.numberReceived = helpers.replaceNull(movementData.animalTotal);\n }\n setDepartData(departureDetails);\n setDepartDataInit(departureDetails);\n\n const arrivalDetails = {\n CPH: movementData.destinationHolding ?? movementData.toHolding,\n date: helpers.date.formatForSubmission(movementData.arrivalDate ? movementData.arrivalDate : movementData.movementDocument.destinationDetail?.arrivalDateTime),\n numberReceived: helpers.replaceNull(movementData.animalCount ?? movementData.animalTotal)\n };\n setArriveData(arrivalDetails);\n setArriveDataInit(arrivalDetails);\n\n const transportedBy = getRecordedByFromData(movementData);\n if (movementData.transportInformation) {\n setTransportData({\n transportedBy,\n transportVehicleRegistrationNo: movementData.transportInformation.vehicleRegistrationNumber,\n transporterName: movementData.transportInformation.transporter,\n transportAuthorisationNumber: movementData.transportInformation.authorisationNumber\n });\n } else if (movementData.movementDocument?.transportDetail) {\n const { transportDetail } = movementData.movementDocument;\n if (transportDetail) {\n const transportVehicleRegistrationNo = transportDetail.transportVehicleRegistrationNo\n ? transportDetail.transportVehicleRegistrationNo\n : null;\n\n const transportAuthorisationNumber = transportDetail.transporterAuthNumber\n ? transportDetail.transporterAuthNumber\n : null;\n\n const transporterName = transportDetail.transportHaulierName\n ? transportDetail.transportHaulierName\n : null;\n\n const transportedBy = helpers.lookup.transportedBy(transportDetail.transporterTypeId);\n\n if (transportedBy || transportVehicleRegistrationNo || transporterName || transportAuthorisationNumber) {\n setTransportData({ transportedBy, transportVehicleRegistrationNo, transporterName, transportAuthorisationNumber });\n }\n }\n } else {\n setTransportData({\n transportedBy,\n transportVehicleRegistrationNo: movementData.transportVehicleRegistrationNo,\n transporterName: movementData.transportHaulierName,\n transportAuthorisationNumber: null\n });\n }\n\n if (movementData.movementDocument?.fciDetail) {\n const isAllAnimalsFciCompliant = typeof movementData.movementDocument.fciDetail.isAllAnimalsFciCompliant === 'boolean' || typeof movementData.movementDocument.fciDetail.isAllAnimalsFCICompliant === 'boolean';\n const recordFCI = movementData.movementDocument.fciDetail && isAllAnimalsFciCompliant ? constants.option.recordFCI.yes : constants.option.recordFCI.no;\n\n setFciData({\n recordFCI,\n animalsSatisfy: recordFCI === constants.option.recordFCI.yes ? helpers.extract.animalsSatisfy(movementData.movementDocument.fciDetail) : null,\n holdingRestrictions: movementData.movementDocument.fciDetail.holdingRestrictions,\n nonComplianceReason: movementData.movementDocument.fciDetail.nonCompliantReason,\n withdrawalPeriod: helpers.extract.withdrawalPeriod(movementData.movementDocument.fciDetail, metFCIWithdrawalPeriods),\n unfitAnimals: movementData.movementDocument.fciDetail.nonCompliantDevices.map((item) => item.tagNumber)\n });\n }\n\n const animalDetailsToRestore = movementData.selectedAnimalDetails?.animalsBeingMoved ?? movementData.devices ?? [];\n const batchListToRestore = movementData.selectedAnimalDetails?.batchList ?? movementData.batches ?? [];\n\n setAnimalDetails(animalDetailsToRestore.map((animal) => ({\n ...animal,\n uuid: helpers.generateUUID(),\n unfit: movementData.movementDocument?.fciDetail?.nonCompliantDevices?.some((unfitAnimal) => unfitAnimal.tagNumber === animal.tagNumber)\n })));\n setAnimalDetailsInit(animalDetailsToRestore.map((animal) => ({\n ...animal,\n unfit: movementData.movementDocument?.fciDetail?.nonCompliantDevices?.some((unfitAnimal) => unfitAnimal.tagNumber === animal.tagNumber)\n })));\n setBatchList(batchListToRestore);\n setBatchListInit(batchListToRestore);\n\n setBatchTotal(batchListToRestore ? batchListToRestore.reduce((total, item) => total + parseInt(item.animalTotal), 0) : 0);\n\n const sessionMovementExemptions = storeService.session.get.movementExemptions();\n\n if (!sessionMovementExemptions) {\n let exemptions = [];\n if (movementData.processingFlags) {\n exemptions = movementData.processingFlags;\n } else if (movementData.approvedMovementProcessingFlags) {\n exemptions = movementData.approvedMovementProcessingFlags;\n }\n if (exemptions?.length > 0) {\n storeService.session.set.dataChanged(true);\n const movementExemptions = exemptions.map((exemption) => ({ id: exemption.processingFlagId, value: true }));\n storeService.session.set.movementExemptions(movementExemptions);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [movementData, metFCIWithdrawalPeriods]);\n\n useEffect(() => {\n helpers.scrollToTop(document.getElementById('appContent'));\n }, []);\n\n const displayConfirmation = () => {\n const confirmationClick = () => {\n storeService.session.removeAll.movement();\n storeService.session.removeAll.confirm();\n history.push(navigation.movements());\n };\n const searchByMovementReference = () => helpers.redirect.searchByMovementReference(history, movementRef);\n const searchByPaperId = () => helpers.redirect.searchByPaperId(history, paperId);\n\n const withErrors = pageErrors?.length > 0;\n const withWarnings = pageWarnings?.length > 0;\n const isUndoMovementErrorCode = pageErrors?.some((item) => item.code === '4076');\n if (pageErrors?.some((item) => item.code === '4077')) {\n pageErrors.map((item) => {\n if (item.code === '4077') {\n item.message = t('label.unableAmmendMovementBO');\n }\n return item.message;\n });\n }\n const id = movementRef ? movementRef : (paperId ? paperId : null);\n const onClickEvent = movementRef ? searchByMovementReference : (paperId ? searchByPaperId : null);\n const buttons = (pageErrors?.length === 0 && pageWarnings?.length === 0) && (!validationError) ? [\n {\n id: 'recordAnother',\n label: 'button.recordAnotherMovement',\n onClick: confirmationClick\n }\n ] : null;\n\n return (\n \n );\n };\n\n return (\n <>\n {ready &&\n <>\n {(!submitted ||\n (\n submitted &&\n !pending &&\n validationError\n )\n ) &&\n <>\n {\n return (!storeService.session.get.idle() && dataChanged && (params.pathname.substring(0, Routing.boEditMovements.length) !== Routing.boEditMovements || params.pathname === Routing.boEditMovements)) ? t('boApp.label.confirmNavigateAwayAmendChanges') : true;\n }}\n />\n\n {exitClicked &&\n setExitClicked(false)}\n modalConfirm={() => {\n setDataChanged(false);\n history.goBack();\n }}\n modalMessage=\"boApp.label.confirmExitAmend\"\n modalTitle=\"button.exit\"\n />\n }\n\n {submitted && !pending && validationError && displayConfirmation()}\n\n \n
    \n {isMarket && pageContent.marketType()}\n {pageContent.movementType()}\n {pageContent.departureLocation()}\n {pmMove ? null : pageContent.arrivalLocation()}\n {pageContent.transportDetails()}\n {pageContent.exemptions()}\n {pageContent.fciDetails()}\n {pageContent.animalBatch()}\n {pageContent.individualAnimals()}\n\n
    \n \n {t('label.animalTotal')} {String(batchTotal + (animalDetails ? animalDetails.length : 0))}\n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n setExitClicked(true)}\n />\n
    \n
    \n
    \n \n }\n\n {submitted && pending &&\n \n }\n\n {submitted && !pending && !validationError && pageErrors?.length >= 0 && pageWarnings?.length >= 0 && displayConfirmation()}\n \n }\n \n );\n};\n\nBoEditMovement.propTypes = {\n setModal: PropTypes.func.isRequired\n};\n\nexport default BoEditMovement;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport classes from 'backOffice/holdingActivity/holdingActivity.module.scss';\nimport constants from 'services/constants';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport PageTitle from 'backOfficeComponents/base/pageTitle/pageTitle';\nimport SectionTitleBar from 'backOfficeComponents/base/sectionTitleBar/sectionTitleBar';\nimport Table from 'components/table/table';\n\nconst BoHoldingActivity = ({\n location,\n setModal\n}) => {\n const { ready } = useTranslation();\n const history = useHistory();\n\n const sessionHoldingActivity = storeService.session.get.searchResultsHoldingActivity();\n\n const [eventType, setEventType] = React.useState({ current: { label: '', url: '' }, previous: {} });\n // const [returnUrl, setReturnUrl] = React.useState('');\n const [data, setData] = React.useState(sessionHoldingActivity ? sessionHoldingActivity.data : []);\n const [renderTable, setRenderTable] = React.useState(false);\n\n const tableParams = {\n request: {}\n };\n\n useEffect(() => {\n if (location.pathname !== Routing.boHoldingActivity) {\n setEventType((prevState) => ({\n current: Object.values(constants.bo.holdingActivity.eventTypes).find((item) => item.url === location.pathname),\n previous: prevState.current\n }));\n }\n }, [location]);\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.boHoldingActivity.length) !== Routing.boHoldingActivity &&\n path.pathname.substring(0, Routing.boHoldingActivityAnimalsAdded.length) !== Routing.boHoldingActivityAnimalsAdded &&\n path.pathname.substring(0, Routing.boHoldingActivityAnimalsOnHolding.length) !== Routing.boHoldingActivityAnimalsOnHolding &&\n path.pathname.substring(0, Routing.boHoldingActivityAnnualInventory.length) !== Routing.boHoldingActivityAnnualInventory &&\n path.pathname.substring(0, Routing.boHoldingActivityAdjacentMovements.length) !== Routing.boHoldingActivityAdjacentMovements &&\n path.pathname.substring(0, Routing.boHoldingActivityAssociatedHoldings.length) !== Routing.boHoldingActivityAssociatedHoldings &&\n path.pathname.substring(0, Routing.boHoldingActivityDeaths.length) !== Routing.boHoldingActivityDeaths &&\n path.pathname.substring(0, Routing.boHoldingActivityHoldingDetails.length) !== Routing.boHoldingActivityHoldingDetails &&\n path.pathname.substring(0, Routing.boHoldingActivityMovements.length) !== Routing.boHoldingActivityMovements &&\n path.pathname.substring(0, Routing.boHoldingActivityPendingReviews.length) !== Routing.boHoldingActivityPendingReviews &&\n path.pathname.substring(0, Routing.boHoldingActivityTaggingApplications.length) !== Routing.boHoldingActivityTaggingApplications &&\n path.pathname.substring(0, Routing.boHoldingActivityTaggingReplacement.length) !== Routing.boHoldingActivityTaggingReplacement &&\n path.pathname.substring(0, Routing.boVaRecords.length) !== Routing.boVaRecords\n ) {\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n unListen();\n }\n });\n }, [history]);\n\n useEffect(() => {\n window.onpopstate = () => {\n if (storeService.session.get.confirm()) {\n history.push(Routing.boVaRecords);\n }\n };\n }, [history]);\n\n return (\n <>\n {ready &&\n <>\n area.url === location.pathname).label : ''}\n />\n\n
    \n \n\n
    \n 0}\n setData={setData}\n setEventType={setEventType}\n setModal={setModal}\n setRenderTable={setRenderTable}\n store={{\n filters: 'HoldingActivity',\n data: 'HoldingActivity'\n }}\n />\n
    \n
    \n \n }\n \n );\n};\n\nBoHoldingActivity.propTypes = {\n location: PropTypes.object,\n setModal: PropTypes.func.isRequired\n};\n\nexport default BoHoldingActivity;\n","import React, { useEffect, useRef } from 'react';\nimport classes from 'backOfficeComponents/sections/sourceDocument/sourceDocument.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport { useTranslation } from 'react-i18next';\nimport Legend from 'components/base/legend/legend';\nimport PropTypes from 'prop-types';\nimport userRoleType from 'services/userRoleType';\nimport CheckBox from 'backOfficeComponents/base/checkbox/checkbox';\nimport FieldEntry from 'backOfficeComponents/base/fieldEntry/fieldEntry';\nimport InputDate from 'components/base/inputDate/inputDate';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport SectionTitleBar from 'backOfficeComponents/base/sectionTitleBar/sectionTitleBar';\n\nconst SourceDocument = ({\n data,\n props,\n setData,\n setDataChanged,\n setProps\n}) => {\n const { t } = useTranslation();\n const documentIdRef = useRef(null);\n\n useEffect(() => {\n if (props.paperId === '') {\n documentIdRef.current.focus();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (props.validation > 0) {\n validateElements();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.validation]);\n\n useEffect(() => {\n if (data.documentType !== 'keeper' || !data.speciesId) {\n setData((prevState) => ({ ...prevState, permitMove: false }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data.documentType]);\n\n const getError = (label) => {\n return { type: constants.errorAndWarning.error, value: label };\n };\n\n const dateError = () => {\n return props.receivedDateError && helpers.response.isError(props.receivedDateError.type) ? props.receivedDateError.value : null;\n };\n\n const dateWarning = () => {\n return props.receivedDateError && helpers.response.isWarning(props.receivedDateError.type) ? props.receivedDateError.value : null;\n };\n\n const validateDocumentId = () => {\n let value = '';\n if (data.documentId) {\n if (data.documentId.length > config.WIDTH_DOCUMENT_ID) {\n value = getError('movementDetails.sourceDocument.documentIdLengthError');\n }\n } else if (data.documentId?.length === 0) {\n value = getError('movementDetails.sourceDocument.documentIdError');\n }\n setProps((prevState) => ({\n ...prevState,\n documentIdError: value\n }));\n return !value;\n };\n\n const validateDate = (date) => {\n let results = true;\n let value = '';\n const dateToValidate = date ? date : data.receivedDate;\n\n if (!dateToValidate) {\n value = getError('movementDetails.sourceDocument.dateReceivedError');\n results = false;\n } else if (helpers.date.is.invalid(dateToValidate)) {\n value = getError('movementDetails.sourceDocument.dateReceivedError');\n results = false;\n } else if (helpers.date.is.inTheFuture(dateToValidate)) {\n value = getError('movementDetails.sourceDocument.dateReceivedFutureError');\n results = false;\n }\n\n setProps((prevState) => ({\n ...prevState,\n receivedDateError: value\n }));\n return results;\n };\n\n const validateSpecies = () => {\n const results = (!data.speciesId || data.speciesId.length === 0);\n const value = results ? getError('movementDetails.sourceDocument.speciesError') : '';\n setProps((prevState) => ({\n ...prevState,\n speciesError: value\n }));\n return !results;\n };\n\n const validateDocumentType = () => {\n const results = (!data.documentType);\n const value = results ? getError('movementDetails.sourceDocument.documentTypeError') : '';\n setProps((prevState) => ({\n ...prevState,\n documentTypeError: value\n }));\n return !results;\n };\n\n const validateDocumentSource = () => {\n const results = (!data.documentSource);\n const value = results ? getError('movementDetails.sourceDocument.documentSourceError') : '';\n setProps((prevState) => ({\n ...prevState,\n documentSourceError: value\n }));\n return !results;\n };\n\n const validateElements = () => {\n const idValid = validateDocumentId();\n const dateValid = validateDate();\n const speciesValid = validateSpecies();\n const typeValid = validateDocumentType();\n const sourceValid = validateDocumentSource();\n\n setProps((prevState) => ({\n ...prevState,\n isValid: idValid && dateValid && speciesValid && typeValid && sourceValid\n }));\n };\n\n const handleChanges = {\n document: (event) => {\n const name = event.target.name;\n const value = event.target.value;\n setData((prevState) => ({ ...prevState, [name]: value }));\n setDataChanged();\n },\n\n receivedDate: (date) => {\n if (date !== data.receivedDate) {\n validateDate(date);\n setData((prev) => ({ ...prev, receivedDate: date }));\n setDataChanged();\n }\n },\n\n species: (event) => {\n const speciesId = helpers.species.nameToId(event.target.value);\n setData((prevState) => ({ ...prevState, speciesId }));\n setDataChanged();\n },\n\n permitMove: (event) => {\n const permitMove = event.target.checked;\n setData((prevState) => {\n return {\n ...prevState,\n permitMove\n };\n });\n setDataChanged();\n }\n };\n\n const getDates = {\n receivedDate: () => {\n const today = new Date();\n\n return helpers.date.formatYYYYMMDD(today);\n }\n };\n\n return (\n <>\n \n\n
    \n
    \n handleChanges.document(event)}\n reference={documentIdRef}\n value={data.documentId}\n warningLabel={helpers.response.isWarning(props.documentIdError.type) ? props.documentIdError.value : ''}\n />\n\n handleChanges.receivedDate(event.target.value)}\n setError={(error) => setProps((prevState) => ({\n ...prevState,\n receivedDateError: { type: constants.errorAndWarning.error, value: error }\n }))}\n value={data.receivedDate}\n warning={dateWarning()}\n yearLength={2}\n />\n
    \n
    \n handleChanges.species(event)}\n value={helpers.species.idToName(data.speciesId).toLowerCase()}\n warningLabel={helpers.response.isWarning(props.speciesError.type) ? props.speciesError.value : ''}\n />\n
    \n
    \n handleChanges.document(event)}\n value={data.documentType}\n warningLabel={helpers.response.isWarning(props.documentTypeError.type) ? props.documentTypeError.value : ''}\n />\n
    \n {helpers.userRole.isKeeper(data.documentType) && data.speciesId !== null &&\n
    \n \n handleChanges.permitMove(event)}\n value={data.permitMove}\n />\n
    \n }\n
    \n \n );\n};\n\nSourceDocument.propTypes = {\n setData: PropTypes.func.isRequired,\n setDataChanged: PropTypes.func.isRequired\n};\n\nexport default SourceDocument;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/sections/notes/userNotes.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport storeService from 'services/storeService';\nimport PropTypes from 'prop-types';\nimport { tableColumns } from 'services/tableColumns';\nimport Button from 'backOfficeComponents/base/button/button';\nimport FieldEntry from 'backOfficeComponents/base/fieldEntry/fieldEntry';\nimport Table from 'components/table/table';\n\nconst UserNotes = ({\n notes,\n setDataChanged,\n setModal,\n setNotes\n}) => {\n const { ready, t } = useTranslation();\n\n const paginationParams = constants.pagination.defaultParams;\n paginationParams[constants.pagination.bottom].total = notes?.length;\n\n const username = storeService.cookie.get.username();\n\n const [noteText, setNoteText] = useState('');\n\n const handleChanges = {\n addNote: () => {\n setNotes((prevState) => [\n ...prevState,\n {\n text: noteText,\n date: helpers.date.now(),\n user: username,\n canRemove: true\n }\n ]);\n setNoteText('');\n setDataChanged();\n },\n\n noteText: (note) => {\n setNoteText(note);\n },\n\n removeNote: (note) => {\n setNotes((prevState) => prevState.filter((item) => !(item.user === note.user && item.text === note.text && item.date === note.date)));\n setDataChanged();\n }\n };\n\n return (\n <>\n {ready &&\n
    \n \n

    {t('movementDetails.userNotes')}

    \n
    \n
    \n
    \n handleChanges.noteText(event.target.value)}\n rows={config.ROWS_USER_NOTES}\n value={noteText}\n width={config.WIDTH_USER_NOTES}\n />\n\n \n
    \n\n {notes?.length > 0 &&\n \n }\n
    \n
    \n }\n \n );\n};\n\nUserNotes.propTypes = {\n notes: PropTypes.array,\n setDataChanged: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setNotes: PropTypes.func.isRequired\n};\n\nexport default UserNotes;\n","import React, { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Prompt } from 'react-router';\nimport bff, { bffResponse, bffStatus } from 'services/bff';\nimport classes from 'backOffice/paperDetails/paperDetails.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport navigation from 'services/navigation';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport Button from 'backOfficeComponents/base/button/button';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport Exemptions from 'backOfficeComponents/sections/exemptions/exemptions';\nimport LocationAddressDate from 'backOfficeComponents/sections/locationAddressDate/locationAddressDate';\nimport ModalConfirm from 'components/base/modalConfirm/modalConfirm';\nimport PageTitle from 'backOfficeComponents/base/pageTitle/pageTitle';\nimport PaperAnimalBatch from 'backOfficeComponents/sections/paperAnimalBatch/paperAnimalBatch';\nimport PaperAnimalIndividual from 'backOfficeComponents/sections/paperAnimalIndividual/paperAnimalIndividual';\nimport PaperTransport from 'backOfficeComponents/sections/paperTransport/paperTransport';\nimport SourceDocument from 'backOfficeComponents/sections/sourceDocument/sourceDocument';\nimport UserNotes from 'backOfficeComponents/sections/notes/userNotes';\n\nconst defaultPaperSource = 'paper';\n\nconst createDocumentSection = (resData) => ({\n documentId: resData.scannedDocumentId,\n documentType: resData.documentSourceFormat,\n documentSource: defaultPaperSource,\n paperId: resData.id,\n receivedDate: resData.receivedDate.substring(0, 10),\n species: resData.species.toLowerCase(),\n speciesId: helpers.species.nameToId(resData.species),\n permitMove: false\n});\n\nconst createDepartureSection = (departureDetail) => ({\n CPH: helpers.replaceNull(departureDetail.holding),\n date: helpers.date.concatToStringDate(departureDetail.departureDate.year, departureDetail.departureDate.month, departureDetail.departureDate.day),\n manualCPH: helpers.replaceNull(departureDetail.manualEntryHoldingAddress)\n});\n\nconst createTransportSection = (transportDetail) => ({\n transportedBy: transportType(helpers.replaceNull(transportDetail.transporterType)),\n transportVehicleRegistrationNo: helpers.replaceNull(transportDetail.transportVehicleRegistrationNo),\n transporterName: helpers.replaceNull(transportDetail.transportHaulierName),\n transportAuthorisationNumber: helpers.replaceNull(transportDetail.transporterAuthNumber)\n});\n\nconst createDestinationSection = (destinationDetail) => ({\n CPH: helpers.replaceNull(destinationDetail.holding),\n date: helpers.date.concatToStringDate(destinationDetail.arrivalDate.year, destinationDetail.arrivalDate.month, destinationDetail.arrivalDate.day),\n manualCPH: helpers.replaceNull(destinationDetail.manualEntryHoldingAddress),\n numberReceived: helpers.replaceNull(destinationDetail.totalAnimalsReceived)\n});\n\nconst createBatchesSection = (batches) => {\n return batches.map((batch) => ({\n animalTotal: batch.animalTotal,\n batchNumber: batch.batchNumber,\n description: ''\n }));\n};\n\nconst createDevicesSection = (devices) => {\n return devices.map((device) => ({\n tagNumber: device.tagNumber || device.rfid,\n uuid: helpers.generateUUID(),\n status: ''\n }));\n};\n\nconst transportType = (inValue) => {\n switch (inValue) {\n case constants.option.transporterType.departureKeeperType:\n return constants.option.transporter.departureKeeper;\n case constants.option.transporterType.destinationKeeperType:\n return constants.option.transporter.destinationKeeper;\n case constants.option.transporterType.haulierType:\n return constants.option.transporter.haulier;\n default:\n return '';\n }\n};\n\nconst getErrorIndexes = (incomingError) => {\n const integerRegex = /\\d+/g;\n return String(incomingError).match(integerRegex);\n};\n\nconst BoPaperDetails = ({\n location,\n setModal\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const departureCPH = location?.state?.data?.departureCPH ? location.state.data.departureCPH : '';\n const destinationCPH = location?.state?.data?.destinationCPH ? location.state.data.destinationCPH : '';\n const species = location?.state?.data?.species ? location.state.data.species : '';\n const speciesId = helpers.species.nameToId(species);\n\n const sessionDataChanged = storeService.session.get.dataChanged();\n\n const ERR_TEMPLATE = { type: '', value: '' };\n\n const [movementType, setMovementType] = React.useState(constants.option.movement.on);\n const [pageErrors, setPageErrors] = React.useState([]);\n const [undoStatus, setUndoStatus] = React.useState(false);\n const [postType, setPostType] = React.useState(constants.postType.CREATE);\n const [needUpdate, setNeedUpdate] = React.useState(false);\n\n const emptyStates = {\n arriveData: {\n CPH: destinationCPH,\n date: '',\n manualCPH: '',\n numberReceived: ''\n },\n\n animalDetails: [],\n\n batchList: [],\n\n departData: {\n CPH: departureCPH,\n date: '',\n manualCPH: ''\n },\n\n sourceDocument: {\n documentId: '',\n documentType: '',\n receivedDate: '',\n documentSource: defaultPaperSource,\n paperId: '',\n speciesId,\n permitMove: false\n },\n\n sourceDocumentProps: {\n documentIdError: ERR_TEMPLATE,\n documentSourceError: ERR_TEMPLATE,\n documentTypeError: ERR_TEMPLATE,\n isValid: false,\n receivedDateError: ERR_TEMPLATE,\n validation: 0,\n speciesError: ERR_TEMPLATE\n },\n\n transportData: {\n transportedBy: '',\n transportVehicleRegistrationNo: '',\n transporterName: '',\n transportAuthorisationNumber: ''\n }\n };\n\n const [sourceDocumentInit, setSourceDocumentInit] = React.useState(emptyStates.sourceDocument);\n const [sourceDocument, setSourceDocument] = React.useState({ ...sourceDocumentInit, speciesId });\n const [sourceDocumentProps, setSourceDocumentProps] = React.useState(emptyStates.sourceDocumentProps);\n\n const [departDataInit, setDepartDataInit] = React.useState({\n ...emptyStates.departData,\n CPH: departureCPH\n });\n const [departData, setDepartData] = React.useState(departDataInit);\n\n const [transportDataInit, setTransportDataInit] = React.useState(emptyStates.transportData);\n const [transportData, setTransportData] = React.useState(transportDataInit);\n\n const [arriveDataInit, setArriveDataInit] = React.useState({\n ...emptyStates.arriveData,\n CPH: destinationCPH\n });\n const [arriveData, setArriveData] = React.useState(arriveDataInit);\n\n const [optionsInit, setOptionsInit] = React.useState([]);\n const [options, setOptions] = React.useState([]);\n\n const [batchListInit, setBatchListInit] = React.useState(emptyStates.batchList);\n const [batchList, setBatchList] = React.useState(batchListInit);\n\n const [animalDetailsInit, setAnimalDetailsInit] = React.useState(emptyStates.animalDetails);\n const [animalDetails, setAnimalDetails] = React.useState(animalDetailsInit);\n\n const [isExemptionsValid, setIsExemptionsValid] = React.useState(true);\n\n const [exemptionsValidation, setExemptionsValidation] = React.useState(0);\n\n const [userNotes, setUserNotes] = React.useState([]);\n const [departureDateError, setDepartureDateError] = React.useState(ERR_TEMPLATE);\n const [arrivalDateError, setArrivalDateError] = React.useState(ERR_TEMPLATE);\n const [departureHoldingError, setDepartureHoldingError] = React.useState(ERR_TEMPLATE);\n const [destinationHoldingError, setDestinationHoldingError] = React.useState(ERR_TEMPLATE);\n const [destinationDetailTotalAnimalsReceivedError, setDestinationDetailTotalAnimalsReceivedError] = React.useState(ERR_TEMPLATE);\n const [transportDataError, setTransportDataError] = React.useState(ERR_TEMPLATE);\n const [haulierNameError, setHaulierNameError] = React.useState(ERR_TEMPLATE);\n const [transportAuthNumberError, setTransportAuthNumberError] = React.useState(ERR_TEMPLATE);\n const [validationState, setValidationState] = React.useState(0);\n const [pageWarnings, setPageWarnings] = React.useState([]);\n const [validateCount, setValidateCount] = React.useState(0);\n\n const [pending, setPending] = React.useState(false);\n const [submitted, setSubmitted] = React.useState(false);\n\n const [dataChanged, setDataChanged] = React.useState(sessionDataChanged ? sessionDataChanged : false);\n\n const [requestId, setRequestId] = React.useState(null);\n const [asyncId, setAsyncId] = React.useState(null);\n\n const setValidation = (func, event) => {\n setValidationState((prevState) => prevState === 2 ? 0 : prevState);\n func(event);\n };\n\n const resetExemptions = React.useCallback(() => {\n const exemptions = options;\n exemptions.forEach((exemption) => {\n exemption.value = false;\n optionsInit.forEach((option) => {\n if (exemption.id === option.processingFlagId) {\n exemption.value = true;\n }\n });\n });\n\n setOptions(exemptions);\n }, [options, optionsInit]);\n\n const getCount = () => {\n const sdp = sourceDocumentProps;\n let count = sdp.documentIdError?.value?.length ? 1 : 0;\n count += sdp.receivedDateError?.value?.length ? 1 : 0;\n count += sdp.speciesError?.value?.length ? 1 : 0;\n count += sdp.documentTypeError?.value?.length ? 1 : 0;\n count += sdp.documentSourceError?.value?.length ? 1 : 0;\n return count;\n };\n\n const resetPage = React.useCallback((emptySession) => {\n if (emptySession) {\n setPostType(constants.postType.CREATE);\n storeService.session.set.confirmSubmitType(constants.postType.CREATE);\n }\n setAsyncId(null);\n storeService.session.set.confirmAsyncId(null);\n setSourceDocument(emptySession ? emptyStates.sourceDocument : { ...sourceDocumentInit, speciesId: null });\n setDepartData(emptySession ? emptyStates.departData : { ...departDataInit, CPH: '' });\n setTransportData(emptySession ? emptyStates.transportData : transportDataInit);\n if (movementType === constants.option.movement.on) {\n setArriveData(emptySession ? emptyStates.arriveData : { ...arriveDataInit, CPH: '' });\n } else {\n setMovementType(constants.option.movement.on);\n }\n resetExemptions();\n setBatchList(emptySession ? emptyStates.batchList : batchListInit);\n setAnimalDetails(emptySession ? emptyStates.animalDetails : animalDetailsInit);\n clear.errors();\n setValidationState(0);\n setUserNotes([]);\n if (!emptySession && sourceDocument.paperId !== '') {\n validatePaperMovement();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options]);\n\n const createErrors = (errorList) => {\n if (errorList?.length === 0) {\n setPageErrors(errorList);\n return;\n }\n\n const uniqueErrors = [...new Set(errorList.map((errorItem) => errorItem.target))];\n\n uniqueErrors.forEach((errorItem) => {\n const matchTargets = errorList.filter((error) => error.target === errorItem);\n const lastError = matchTargets[matchTargets?.length - 1];\n\n lookupErrorWarningField(\n lastError,\n {\n type: constants.errorAndWarning.error,\n value: lastError.message\n }\n );\n\n const errArray = pageErrors;\n errArray.push(lastError);\n setPageErrors(errArray);\n });\n };\n\n const createWarnings = (warnings) => {\n if (warnings?.length === 0) {\n setPageWarnings(warnings);\n return;\n }\n const uniqueWarnings = [...new Set(warnings.map((warning) => warning.target))];\n\n uniqueWarnings.forEach((warningItem) => {\n const matchTargets = warnings.filter((warning) => warning.target === warningItem);\n const lastWarning = matchTargets[matchTargets?.length - 1];\n lookupErrorWarningField(\n lastWarning,\n {\n type: constants.errorAndWarning.warning,\n value: lastWarning.message\n }\n );\n const warningArray = pageWarnings;\n warningArray.push(lastWarning);\n setPageWarnings(warningArray);\n });\n };\n\n const validateBO = () => {\n bff\n .post('/validateBO', getSubmissionParams.create())\n .then((res) => {\n createErrors(res.data.errors);\n createWarnings(res.data.warnings);\n setSourceDocumentProps((prevState) => ({\n ...prevState,\n validation: 0\n }));\n\n const invalidBatches = res.data.errors.filter((error) => error.code === '30010').map((error) => {\n const batchItem = error.target.split('.')[1];\n return parseInt(batchItem.substring(\n batchItem.indexOf('[') + 1,\n batchItem.lastIndexOf(']')\n ));\n });\n\n const checkCodes = ['30019', '3027', '30022'];\n\n const invalidIndividualAnimals = res.data.errors.filter((error) => checkCodes.includes(error.code)).map((error) => {\n const animalItem = error.target.split('.')[1];\n return parseInt(animalItem.substring(\n animalItem.indexOf('[') + 1,\n animalItem.lastIndexOf(']')\n ));\n });\n\n setBatchList((prevState) => ([\n ...prevState.map((batch, index) => ({\n ...batch,\n valid: invalidBatches.includes(index) ? 'Invalid' : 'Valid'\n }))\n ]));\n\n setAnimalDetails((prevState) => ([\n ...prevState.map((animal, index) => ({\n ...animal,\n valid: invalidIndividualAnimals.includes(index) ? 'Invalid' : 'Valid'\n }))\n ]));\n\n setValidationState(2);\n })\n .catch((error) => {\n errors.BFF(error, setModal);\n });\n };\n\n const lookupErrorWarningField = (error, errorObject, errorIndexes) => {\n const invalidateSourceDocumentProps = (name, newValue) => {\n setSourceDocumentProps((prevState) => ({\n ...prevState,\n [name]: newValue,\n isValid: false\n }));\n };\n\n if (!error.target) {\n return true;\n }\n switch (error.target) {\n case 'movementDocument.departureDetail.departureDate':\n setDepartureDateError(errorObject);\n break;\n case 'movementDocument.destinationDetail.arrivalDate':\n setArrivalDateError(errorObject);\n break;\n case 'receivedDate':\n invalidateSourceDocumentProps('receivedDateError', errorObject);\n break;\n case 'movementDocument.departureDetail.holding':\n setDepartureHoldingError(errorObject);\n break;\n case 'movementDocument.destinationDetail.holding':\n setDestinationHoldingError(errorObject);\n break;\n case 'movementDocument.destinationDetail.totalAnimalsReceived':\n setDestinationDetailTotalAnimalsReceivedError(errorObject);\n break;\n case 'species':\n invalidateSourceDocumentProps('speciesError', errorObject);\n break;\n case 'documentSourceFormat':\n invalidateSourceDocumentProps('documentTypeError', errorObject);\n break;\n case 'documentSource':\n invalidateSourceDocumentProps('documentSourceError', errorObject);\n break;\n case 'documentId':\n invalidateSourceDocumentProps('documentIdError', errorObject);\n break;\n case 'movementDocument.transportDetail.transporterType':\n setTransportDataError(errorObject);\n break;\n case 'movementDocument.transportDetail.transportHaulierName':\n setHaulierNameError(errorObject);\n break;\n case 'movementDocument.transportDetail.transporterAuthNumber':\n setTransportAuthNumberError(errorObject);\n break;\n case String(error.target.match(/^movementGroups\\[\\d+]\\.batches\\[\\d+].animalTotal$/)):\n errorIndexes = getErrorIndexes(error.target);\n setValidation(setBatchList, helpers.error.addToAnimalObjects(batchList, errorIndexes, { type: error.typeIdentifier, value: error.message }, 'description'));\n break;\n case String(error.target.match(/^movementGroups\\[\\d+]\\.batches\\[\\d+]$/)):\n errorIndexes = getErrorIndexes(error.target);\n setValidation(setBatchList, helpers.error.addToAnimalObjects(batchList, errorIndexes, { type: error.typeIdentifier, value: error.message }, 'description'));\n break;\n case String(error.target?.match(/^movementGroups\\[\\d+]\\.devices\\[\\d+]*$/)):\n case String(error.target?.match(/^movementGroups\\[\\d+]\\.devices\\[\\d+].tagNumber*$/)):\n case String(error.target?.match(/^movementGroups\\[\\d+]\\.devices\\[\\d+].rfid*$/)):\n errorIndexes = getErrorIndexes(error.target);\n setAnimalDetails(\n (prevState) => helpers.error.addToAnimalObjects(\n prevState,\n errorIndexes,\n { type: error.typeIdentifier, value: { type: 'Error', value: error.message } },\n 'status'\n )\n );\n break;\n default:\n return false;\n }\n return true;\n };\n\n const validatePaperMovement = () => {\n setValidationState(1);\n clear.animalStatus();\n clear.errors();\n setSourceDocumentProps((prevState) => ({\n ...prevState,\n validation: sourceDocumentProps.validation + 1\n }));\n };\n\n const processPermitMoveErrors = (res) => {\n storeService.session.set.confirmPmMove(sourceDocument.permitMove);\n if (sourceDocument.permitMove) {\n return res.data.errors?.filter((error) => !error.target?.includes('movementDocument.destinationDetail.'));\n }\n\n return res.data.errors;\n };\n\n const handleSubmissionResponse = (res) => {\n const data = res.data;\n const aId = bffResponse.asyncId(data);\n setAsyncId(aId);\n storeService.session.set.confirmAsyncId(aId);\n storeService.session.set.confirmPaperId(bffResponse.paperId(data));\n storeService.session.set.confirmMovementReference(bffResponse.movementRef(data));\n const rId = bffResponse.requestId(data);\n storeService.session.set.confirmRequestId(rId);\n setRequestId(rId);\n storeService.session.set.confirmPollingStatus(bffResponse.status(data));\n storeService.session.set.confirmSubmitType(postType);\n const paper_Id = storeService.session.get.confirmPaperId();\n const movement_Ref = storeService.session.get.confirmMovementReference();\n const status = storeService.session.get.confirmPollingStatus();\n\n if ((status === null || status === constants.status.completed_error) && paper_Id && !movement_Ref) {\n helpers.get.paperMovements(paper_Id)\n .then((res2) => {\n if (helpers.response.isValid(res2.data, setModal)) {\n res2.data.errors = processPermitMoveErrors(res2);\n storeService.session.set.confirmPollingErrors(bffResponse.errors(res2.data));\n storeService.session.set.confirmPollingWarnings(bffResponse.warnings(res2.data));\n storeService.session.set.confirmPollingStatus(bffResponse.status(res2.data));\n history.push(Routing.boMovementsConfirm);\n }\n });\n } else {\n storeService.session.set.confirmPollingErrors(bffResponse.errors(data));\n storeService.session.set.confirmPollingWarnings(bffResponse.warnings(data));\n history.push(Routing.boMovementsConfirm);\n }\n };\n\n const submit = (submitType) => {\n switch (submitType) {\n case constants.postType.CREATE:\n setSubmitted(true);\n setPending(true);\n storeService.session.removeAll.confirm();\n\n bff\n .post('/paperDocumentCreate', getSubmissionParams.create())\n .then((res) => {\n setPending(false);\n setDataChanged(false);\n storeService.session.remove.dataChanged();\n handleSubmissionResponse(res);\n })\n .catch((error) => {\n setPending(false);\n errors.BFF(error, setModal);\n });\n break;\n\n case constants.postType.UPDATE:\n setSubmitted(true);\n setPending(true);\n storeService.session.removeAll.confirm();\n\n bff\n .post('/paperDocumentUpdate', getSubmissionParams.create())\n .then((res) => {\n setPending(false);\n setDataChanged(false);\n storeService.session.remove.dataChanged();\n handleSubmissionResponse(res);\n })\n .catch((error) => {\n setPending(false);\n errors.BFF(error, setModal);\n });\n\n break;\n\n case constants.postType.UNDO:\n setSubmitted(true);\n setPending(true);\n\n setUndoStatus(false);\n setPostType(constants.postType.UNDO);\n storeService.session.removeAll.confirm();\n\n bff\n .post('/paperDocumentUndo', getSubmissionParams.undo())\n .then((res) => {\n const { data } = res;\n setPending(false);\n setDataChanged(false);\n storeService.session.remove.dataChanged();\n const rId = bffResponse.requestId(data);\n storeService.session.set.confirmRequestId(rId);\n setRequestId(rId);\n const status = bffResponse.status(data);\n storeService.session.set.confirmPollingStatus(status);\n storeService.session.set.confirmStatus(status);\n storeService.session.set.confirmPollingErrors(bffResponse.errors(data));\n storeService.session.set.confirmSubmitType(constants.postType.UNDO);\n history.push(Routing.boMovementsConfirm);\n })\n .catch((error) => {\n setPending(false);\n errors.BFF(error, setModal);\n });\n break;\n\n default:\n break;\n }\n };\n\n const dataHasChanged = () => {\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n };\n\n const recordAnother = () => {\n setSubmitted(false);\n setValidationState(0);\n resetPage(true);\n history.push(navigation.movements());\n };\n\n const getSubmissionParams = {\n create: () => {\n const createDepartureDetail = (departure) => ({\n holding: departure.CPH,\n movementType: '',\n manualEntryHoldingAddress: departure.manualCPH,\n departureDate: {\n day: helpers.date.splitStringDate(departure.date).day,\n month: helpers.date.splitStringDate(departure.date).month,\n year: helpers.date.splitStringDate(departure.date).year\n }\n });\n\n const createArrivalDetail = (arrival) => ({\n totalAnimalsReceived: arrival.numberReceived,\n holding: arrival.CPH,\n manualEntryHoldingAddress: arrival.manualCPH,\n arrivalDate: {\n day: helpers.date.splitStringDate(arrival.date).day,\n month: helpers.date.splitStringDate(arrival.date).month,\n year: helpers.date.splitStringDate(arrival.date).year\n }\n });\n\n const createTransportDetail = (transport) => ({\n transportType: transport.transportedBy,\n transporterAuthNumber: transport.transportAuthorisationNumber,\n transportHaulierName: transport.transporterName,\n transportVehicleRegistrationNo: transport.transportVehicleRegistrationNo\n });\n\n const removeManualCPH = (data) => ({\n ...data,\n manualCPH: ''\n });\n\n return {\n validated: (pageErrors?.length === 0) && (pageWarnings?.length === 0),\n id: sourceDocument.paperId,\n movementId: sourceDocument.paperId,\n documentId: sourceDocument.documentId,\n documentSource: sourceDocument.documentSource,\n documentSourceFormat: sourceDocument.documentType,\n receivedDate: sourceDocument.receivedDate,\n species: helpers.species.idToName(sourceDocument.speciesId).toLowerCase(),\n comment: sourceDocument.permitMove ? departData.manualCPH : '',\n movementDocument: {\n departureDetail: sourceDocument.permitMove ? createDepartureDetail(removeManualCPH(departData)) : createDepartureDetail(departData),\n destinationDetail: sourceDocument.permitMove ? createArrivalDetail(removeManualCPH(departData)) : createArrivalDetail(arriveData),\n transportDetail: createTransportDetail(transportData)\n },\n exemptions: (options?.length) ? options.filter((o) => o.value) : [],\n movementGroups: {\n batchList: batchList,\n animalDetails: animalDetails\n },\n notes: userNotes.filter((note) => note.canRemove).map((note) => ({\n noteDate: note.date,\n notes: note.text\n }))\n };\n },\n\n undo: () => {\n return {\n poll: config.POLLS_ENABLED,\n paperId: sourceDocument.paperId\n };\n }\n };\n\n const pageContent = {\n sourceDocumentSection: () => {\n return (\n setValidation(setSourceDocument, event)}\n setDataChanged={dataHasChanged}\n setProps={setSourceDocumentProps}\n />\n );\n },\n\n departureLocationSection: () => {\n return (\n setValidation(setDepartData, event)}\n setDataChanged={dataHasChanged}\n setDateError={setDepartureDateError}\n setModal={setModal}\n speciesId={sourceDocument.speciesId}\n />\n );\n },\n\n transportSection: () => {\n return (\n setValidation(setTransportData, event)}\n setTransportDetailsError={setTransportDataError}\n transportAuthNumberError={transportAuthNumberError}\n transportDetails={transportData}\n transportDetailsError={transportDataError}\n />\n );\n },\n\n arrivalLocationSection: () => {\n return (\n setValidation(setArriveData, event)}\n setDataChanged={dataHasChanged}\n setDateError={setArrivalDateError}\n setModal={setModal}\n speciesId={sourceDocument.speciesId}\n />\n );\n },\n\n exemptionsSection: () => {\n return (\n <>\n {sourceDocument.speciesId !== 0 &&\n setValidation(setOptions, event)}\n speciesId={sourceDocument.speciesId}\n />\n }\n \n );\n },\n\n animalBatchSection: () => {\n return (\n \n );\n },\n\n individualAnimalsSection: () => {\n return (\n \n );\n },\n\n userNotesSection: () => {\n return (\n \n );\n },\n\n pendingDisplay: () => {\n return (\n \n );\n },\n\n resultsDisplay: () => {\n if (validateCount > 0) {\n return (\n
    \n

    \n {t('error.validateSourceDocumentSectionError')}\n

    \n
    \n );\n }\n\n if ((pageErrors?.length + pageWarnings?.length) > 0) {\n return (\n
    \n

    \n {t('error.validateOtherSectionError')}\n

    \n
    \n );\n }\n return (\n
    \n

    \n {t('label.validationSuccessful')}\n

    \n

    {t('label.submitMovement')}

    \n
    \n );\n }\n };\n\n const clear = {\n animalStatus: () => {\n setAnimalDetails((prevState) => prevState.map((animal) => ({\n ...animal,\n status: ''\n })));\n },\n\n errors: () => {\n setPageErrors([]);\n setSourceDocumentProps(emptyStates.sourceDocumentProps);\n\n setDepartureHoldingError(ERR_TEMPLATE);\n setDepartureDateError(ERR_TEMPLATE);\n\n setDestinationHoldingError(ERR_TEMPLATE);\n setArrivalDateError(ERR_TEMPLATE);\n\n setTransportDataError(ERR_TEMPLATE);\n setHaulierNameError(ERR_TEMPLATE);\n setTransportAuthNumberError(ERR_TEMPLATE);\n\n setDestinationDetailTotalAnimalsReceivedError(ERR_TEMPLATE);\n }\n };\n\n useEffect(() => {\n if (location.pathname.substring(0, Routing.boMovements.length) === Routing.boMovements) {\n storeService.session.removeAll.movement();\n setSubmitted(false);\n setValidationState(0);\n setRequestId(null);\n const needReset = (location.pathname.substring(0, Routing.boMovementsConfirm.length) !== Routing.boMovementsConfirm);\n resetPage(needReset);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [location]);\n\n useEffect(() => {\n setDepartData({ ...departData, CPH: departureCPH });\n setArriveData({ ...arriveData, CPH: destinationCPH });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [movementType]);\n\n useEffect(() => {\n if (sourceDocumentProps.isValid) {\n setValidateCount(0);\n validateBO();\n } else {\n const count = getCount();\n setValidateCount(count);\n if (count) {\n setValidationState(2);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sourceDocumentProps.isValid]);\n\n useEffect(() => {\n const count = getCount();\n setValidateCount(count);\n if (count) {\n setValidationState(2);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sourceDocumentProps]);\n\n useEffect(() => {\n const appContent = document.getElementById('appContent');\n\n setTimeout(() => {\n const fixedActionsHeight = document.getElementById('fixedActions');\n appContent.style.marginBottom = (fixedActionsHeight ? (fixedActionsHeight.offsetHeight) : 0) + 'px';\n }, 500);\n\n return () => {\n appContent.removeAttribute('style');\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [validationState]);\n\n useEffect(() => {\n setOptions([]);\n }, [sourceDocument.speciesId]);\n\n useEffect(() => {\n setOptions((prevState) => prevState.map((item) => {\n const isPermitMoveExemption = sourceDocument.permitMove && Object.values(constants.permitMovesMandatory).some((mandatoryExemption) => mandatoryExemption.id === item.id);\n\n return {\n ...item,\n value: isPermitMoveExemption,\n disabled: isPermitMoveExemption\n };\n }));\n\n if (sourceDocument.permitMove) {\n setDepartData({\n ...departData,\n numberReceived: departData.numberReceived ? departData.numberReceived : arriveData.numberReceived\n });\n } else {\n setArriveData({\n ...emptyStates.arriveData,\n numberReceived: arriveData.numberReceived ? arriveData.numberReceived : departData.numberReceived\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sourceDocument.permitMove]);\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.boMovements.length) !== Routing.boMovements || location.pathname.substring(0, Routing.boMovements.length) !== Routing.boMovements) {\n storeService.session.remove.dataChanged();\n storeService.session.removeAll.movement();\n resetPage(true);\n unListen();\n }\n });\n\n window.onpopstate = () => {\n if (storeService.session.get.confirm()) {\n history.push(Routing.boMovements);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [history]);\n\n useEffect(() => {\n if (location?.state?.data?.data?.id) {\n const data = location.state.data.data;\n if (data.notes) {\n setUserNotes(data.notes.map((note) => ({\n date: note.noteDate,\n text: note.notes,\n user: note.user\n })));\n }\n\n const isPmMove = storeService.session.get.confirmPmMove();\n const sourceDocumentSection = createDocumentSection(data);\n const doc = data.movementDocument;\n const departureSection = createDepartureSection(doc.departureDetail);\n const transportSection = createTransportSection(doc.transportDetail);\n const destinationSection = createDestinationSection(doc.destinationDetail);\n const batches = createBatchesSection(data.movementGroups[0].batches);\n const devices = createDevicesSection(data.movementGroups[0].devices);\n\n if (isPmMove) {\n sourceDocumentSection.permitMove = true;\n departureSection.manualCPH = data.comment;\n departureSection.numberReceived = destinationSection.numberReceived;\n }\n\n setSourceDocumentInit(sourceDocumentSection);\n setSourceDocument(sourceDocumentSection);\n setTransportData(transportSection);\n setTransportDataInit(transportSection);\n setArriveData(isPmMove ? emptyStates.arriveData : destinationSection);\n setArriveDataInit(isPmMove ? emptyStates.arriveData : destinationSection);\n setOptionsInit(data.processingFlags);\n const movementExemptions = data.processingFlags.map((exemption) => ({\n id: exemption.processingFlagId,\n value: true\n }));\n storeService.session.set.movementExemptions(movementExemptions);\n setNeedUpdate(true);\n setBatchList(batches);\n setBatchListInit(batches);\n setAnimalDetails(devices);\n setAnimalDetailsInit(devices);\n //Don't move up as the departureDetail will not update\n setDepartData(departureSection);\n setDepartDataInit(departureSection);\n validatePaperMovement();\n setPostType(constants.postType.UPDATE);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [location]);\n\n useEffect(() => {\n helpers.scrollToTop(document.getElementById('appContent'));\n }, []);\n\n const displayConfirmation = () => {\n const paper_Id = storeService.session.get.confirmPaperId();\n const movement_Ref = storeService.session.get.confirmMovementReference();\n const errors = storeService.session.get.confirmPollingErrors();\n const warnings = storeService.session.get.confirmPollingWarnings();\n const status = storeService.session.get.confirmPollingStatus();\n const submitType = storeService.session.get.confirmSubmitType();\n\n const isUndo = helpers.postType.isUndo(submitType);\n const withErrors = errors?.length > 0;\n const withWarnings = warnings?.length > 0;\n\n const onClick = {\n searchByMovementReference: () => helpers.redirect.searchByMovementReference(history, movement_Ref),\n\n searchByPaperId: () => helpers.redirect.searchByPaperId(history, paper_Id),\n\n paperMovement: () => {\n bff\n .get('/paperDocument', {\n params: {\n id: paper_Id\n }\n })\n .then((res) => {\n helpers.redirect.paperMovement(history, paper_Id, {\n data: {\n data: res.data.data[0]\n }\n });\n })\n .catch((error) => {\n errors.BFF(error, setModal);\n });\n },\n\n clickEvent: () => {\n if (isUndo) {\n return null;\n }\n\n switch (submitType) {\n case constants.postType.UNDO:\n return onClick.searchByPaperId();\n case constants.postType.CREATE:\n case constants.postType.UPDATE:\n default:\n return movement_Ref ? onClick.searchByMovementReference() : (paper_Id ? onClick.paperMovement() : null);\n }\n }\n };\n\n const getConfirmId = () => {\n switch (submitType) {\n case constants.postType.UNDO:\n return paper_Id;\n case constants.postType.CREATE:\n case constants.postType.UPDATE:\n default:\n return movement_Ref ?? paper_Id ?? null;\n }\n };\n const confirmStatus = status ?? constants.status.success;\n const label = bffStatus.isSuccess(confirmStatus) ? !isUndo ? 'label.submissionPaperSuccess' : 'label.submissionUndoPaperSuccess' : helpers.confirmation.getTitle(withErrors, withWarnings, movement_Ref);\n\n return (\n \n );\n };\n\n const stepPicker = (pathname) => {\n if (pathname === Routing.boMovementsConfirm) {\n return (\n <>\n {!pending && displayConfirmation()}\n \n );\n } else if (pathname.substring(0, Routing.boMovements.length) === Routing.boMovements) {\n return (\n <>\n {(!submitted ||\n (\n submitted &&\n !pending &&\n (\n (helpers.postType.isCreate(postType) && !asyncId) ||\n (helpers.postType.isUpdate(postType) && !asyncId) ||\n (helpers.postType.isUndo(postType) && !requestId)\n )\n )\n ) &&\n <>\n {\n return (!storeService.session.get.idle() && dataChanged && (params.pathname.substring(0, Routing.boMovements.length) !== Routing.boMovements || params.pathname === Routing.boMovements)) ? t('boApp.label.confirmNavigateAwayAmendChanges') : true;\n }}\n />\n\n {submitted && !pending && // Submission error\n \n }\n\n {undoStatus &&\n setUndoStatus(false)}\n modalConfirm={() => {\n submit(constants.postType.UNDO);\n }}\n modalMessage=\"boApp.label.confirmUndoPaperMovement\"\n modalTitle=\"button.undo\"\n />\n }\n\n \n
    \n {pageContent.sourceDocumentSection()}\n {pageContent.departureLocationSection()}\n {pageContent.transportSection()}\n {sourceDocument.permitMove ? null : pageContent.arrivalLocationSection()}\n {pageContent.exemptionsSection()}\n {pageContent.animalBatchSection()}\n {pageContent.individualAnimalsSection()}\n {pageContent.userNotesSection()}\n\n
    \n \n {t('label.animalTotal')} {String(batchList.reduce((total, item) => total + parseInt(item.animalTotal), 0) + animalDetails?.length)} \n
    \n
    \n\n
    \n {validationState === 1 && pageContent.pendingDisplay()}\n {validationState === 2 && pageContent.resultsDisplay()}\n
    \n
    \n \n
    \n
    \n submit(postType)}\n />\n
    \n
    \n {sourceDocument.paperId &&\n setUndoStatus(true)}\n />\n }\n\n {\n e.preventDefault();\n resetPage(true);\n }}\n />\n
    \n
    \n
    \n \n }\n\n {submitted && pending &&\n \n }\n \n );\n }\n };\n\n return (\n <>\n {ready && stepPicker(location.pathname)}\n \n );\n};\n\nBoPaperDetails.propTypes = {\n location: PropTypes.object.isRequired,\n setModal: PropTypes.func.isRequired\n};\n\nexport default BoPaperDetails;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport storeService from 'services/storeService';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport { initialSorting } from 'services/tableColumns';\nimport PageTitle from 'backOfficeComponents/base/pageTitle/pageTitle';\nimport SectionTitleBar from 'backOfficeComponents/base/sectionTitleBar/sectionTitleBar';\nimport Table from 'components/table/table';\nimport TabsNavigational from 'components/base/tabsNavigational/tabsNavigational';\n\nconst BoSearchMovements = ({\n setModal\n}) => {\n const { pathname } = useLocation();\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const sessionMovementSearch = storeService.session.get.searchResultsMovements()?.data;\n\n const [data, setData] = React.useState(sessionMovementSearch ? sessionMovementSearch : []);\n const [renderTable, setRenderTable] = React.useState(false);\n\n const paginationParams = constants.pagination.defaultParams;\n paginationParams[constants.pagination.bottom].total = data?.length;\n\n const tableParams = {\n request: {}\n };\n\n const handleChanges = {\n tab: (id) => {\n setData([]);\n setRenderTable(false);\n\n storeService.session.set.activeTabId(id);\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n }\n };\n\n const render = {\n table: () => {\n return (\n Routing.boMovementDetails,\n accessor: 'id',\n hint: (row) => t(`movementDetails.searchTable.confirmationStatus.${helpers.status.getType(t, row)}`),\n state: (row) => ({\n data: row\n })\n }}\n setData={setData}\n setModal={setModal}\n setRenderTable={setRenderTable}\n store={{\n filters: 'Movements',\n data: 'Movements'\n }}\n />\n );\n }\n };\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.boSearchMovements.length) !== Routing.boSearchMovements &&\n path.pathname.substring(0, Routing.boMovements.length) !== Routing.boMovements &&\n path.pathname.substring(0, Routing.boMovementDetails.length) !== Routing.boMovementDetails &&\n path.pathname.substring(0, Routing.boEditMovements.length) !== Routing.boEditMovements\n ) {\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n storeService.session.remove.activeTabId();\n unListen();\n }\n });\n }, [history]);\n\n useEffect(() => {\n const sessionActiveTabId = storeService.session.get.activeTabId();\n\n if (!sessionActiveTabId) {\n storeService.session.set.activeTabId(constants.tabs.movementRange);\n } else if (helpers.tab.isMovementRange(sessionActiveTabId)) {\n history.push(Routing.boSearchMovementsByDateAndCph);\n } else if (helpers.tab.isMovementRef(sessionActiveTabId)) {\n history.push(Routing.boSearchMovementsByMovementReference);\n } else if (helpers.tab.isPaperId(sessionActiveTabId)) {\n history.push(Routing.boSearchMovementsByPaperId);\n }\n }, [history]);\n\n return (\n <>\n {ready &&\n <>\n \n
    \n \n\n \n
    \n {pathname === Routing.boSearchMovementsByDateAndCph ? render.table() : ''}\n
    \n
    \n {pathname === Routing.boSearchMovementsByMovementReference ? render.table() : ''}\n
    \n
    \n {pathname === Routing.boSearchMovementsByPaperId ? render.table() : ''}\n
    \n
    \n
    \n \n }\n \n );\n};\n\nBoSearchMovements.propTypes = {\n setModal: PropTypes.func.isRequired\n};\n\nexport default BoSearchMovements;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport constants from 'services/constants';\nimport storeService from 'services/storeService';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport PageTitle from 'backOfficeComponents/base/pageTitle/pageTitle';\nimport SectionTitleBar from 'backOfficeComponents/base/sectionTitleBar/sectionTitleBar';\nimport Table from 'components/table/table';\n\nconst BoSearchRequestId = ({\n setModal\n}) => {\n const { ready } = useTranslation();\n const history = useHistory();\n\n const sessionMovementSearch = storeService.session.get.searchResultsMovements()?.data;\n\n const [data, setData] = React.useState(sessionMovementSearch ? sessionMovementSearch : []);\n const [renderTable, setRenderTable] = React.useState(false);\n\n const paginationParams = constants.pagination.defaultParams;\n paginationParams[constants.pagination.bottom].total = data?.length;\n\n const tableParams = {\n request: {}\n };\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.boSearchRequestId.length) !== Routing.boSearchRequestId) {\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n unListen();\n }\n });\n }, [history]);\n\n return (\n <>\n {ready &&\n <>\n \n
    \n \n\n \n
    \n \n }\n \n );\n};\n\nBoSearchRequestId.propTypes = {\n setModal: PropTypes.func.isRequired\n};\n\nexport default BoSearchRequestId;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport constants from 'services/constants';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport PageTitle from 'backOfficeComponents/base/pageTitle/pageTitle';\nimport SectionTitleBar from 'backOfficeComponents/base/sectionTitleBar/sectionTitleBar';\nimport Table from 'components/table/table';\n\nconst BoUserActivity = ({\n location,\n setModal\n}) => {\n const { ready } = useTranslation();\n const history = useHistory();\n\n const sessionUserActivity = storeService.session.get.searchResultsUserActivity();\n\n const [eventType, setEventType] = React.useState({ current: { label: '', url: '' }, previous: {} });\n // const [returnUrl, setReturnUrl] = React.useState('');\n const [data, setData] = React.useState(sessionUserActivity ? sessionUserActivity.data : []);\n const [renderTable, setRenderTable] = React.useState(false);\n\n const tableParams = {\n request: {}\n };\n\n useEffect(() => {\n if (location.pathname !== Routing.boUserActivity) {\n setEventType((prevState) => ({\n current: Object.values(constants.bo.userActivity.eventTypes).find((item) => item.url === location.pathname),\n previous: prevState.current\n }));\n }\n }, [location]);\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.boUserActivity.length) !== Routing.boUserActivity &&\n path.pathname.substring(0, Routing.boUserActivityAnimalsAdded.length) !== Routing.boUserActivityAnimalsAdded &&\n path.pathname.substring(0, Routing.boUserActivityAll.length) !== Routing.boUserActivityAll &&\n path.pathname.substring(0, Routing.boUserActivityAnnualInventory.length) !== Routing.boUserActivityAnnualInventory &&\n path.pathname.substring(0, Routing.boUserActivityDeaths.length) !== Routing.boUserActivityDeaths &&\n path.pathname.substring(0, Routing.boUserActivityMovements.length) !== Routing.boUserActivityMovements &&\n path.pathname.substring(0, Routing.boUserActivityMovementReviews.length) !== Routing.boUserActivityMovementReviews &&\n path.pathname.substring(0, Routing.boUserActivityTaggingApplications.length) !== Routing.boUserActivityTaggingApplications &&\n path.pathname.substring(0, Routing.boUserActivityTaggingReplacement.length) !== Routing.boUserActivityTaggingReplacement\n ) {\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n unListen();\n }\n });\n }, [history]);\n\n return (\n <>\n {ready &&\n <>\n area.url === location.pathname).subtitle : ''}\n />\n\n
    \n \n\n 0}\n setData={setData}\n setEventType={setEventType}\n setModal={setModal}\n setRenderTable={setRenderTable}\n store={{\n filters: 'UserActivity',\n data: 'UserActivity'\n }}\n />\n
    \n \n }\n \n );\n};\n\nBoUserActivity.propTypes = {\n location: PropTypes.object,\n setModal: PropTypes.func.isRequired\n};\n\nexport default BoUserActivity;\n","import axios from 'axios';\nimport bff from 'services/bff';\n\nconst queryList = [\n 'cph',\n 'fsa',\n 'keeperName',\n 'keeperTelephone',\n 'keeperEmail',\n 'holdingName',\n 'holdingType',\n 'holdingAddress',\n 'holdingPostcode',\n 'holdingFlock'\n];\n\nconst searchHelper = {\n searchCPH: (searchQuery, setSearched, setSearchNoResults) => {\n const source = axios.CancelToken.source();\n setSearched(true);\n setSearchNoResults(false);\n\n // Passing all params through to BFF search\n const params = {};\n queryList.forEach((queryItem) => {\n if (searchQuery[queryItem]) {\n params[queryItem] = searchQuery[queryItem];\n }\n });\n\n const searchByCPH = searchQuery.cph || searchQuery.fsa;\n const api = searchByCPH ? '/holdingDetails' : '/searchHolding';\n\n return bff\n .get(api, {\n cancelToken: source.token,\n params\n });\n }\n};\nexport default searchHelper;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport classes from 'frontEnd/vetModule/vetModule.module.scss';\nimport Address from 'components/address/address';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PageTitle from 'backOfficeComponents/base/pageTitle/pageTitle';\nimport searchHelper from 'services/searchHelper';\nimport { isCancel } from 'services/bff';\nimport Button from 'backOfficeComponents/base/button/button';\nimport printClasses from 'backOffice/vaModule/vaRecordDeclaration.module.scss';\nimport CompanyPrintLogo from 'images/svg/logo-livestock-blue.svg';\n\nconst VARecordDeclaration = ({ match, setModal }) => {\n const { ready, t } = useTranslation(),\n history = useHistory(),\n [, setSearchNoResults] = React.useState(false),\n [holdingBOResult, setHoldingBOResult] = React.useState(false),\n searchedData = storeService.session.get.searchResults() ? storeService.session.get.searchResults().holdingActivity.data : [],\n filterData = searchedData.filter((item) => item.id === parseInt(match.params.declarationId)),\n boCphNo = filterData[0]?.holding,\n vetAttestationNumber = helpers.vetAttestationNumber.generateVan(filterData[0]?.vetRCVS, filterData[0]?.holding, filterData[0]?.startDate),\n printAndDownload = () => {\n window.print();\n },\n handleReturnRouting = () => {\n history.push(Routing.boVaRecords);\n };\n\n useEffect(() => {\n const query = {};\n if (boCphNo && helpers.validate.cphNumber(boCphNo)) {\n query.cph = boCphNo;\n searchHelper.searchCPH(query, setHoldingBOResult, setSearchNoResults)\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n const resData = res.data.data?.[0];\n if (resData) {\n setHoldingBOResult(resData);\n }\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setSearchNoResults(true);\n }\n });\n }\n\n }, [boCphNo]);\n\n useEffect(() => {\n const searchResult = storeService.session.get.searchResults()?.holdingActivity?.data;\n if (!searchResult) {\n history.push(Routing.boHoldingActivity);\n }\n }, []);\n\n return (\n <>\n {ready && holdingBOResult &&\n <>\n
    \n
    \n \n
    \n\n
    \n
    \n \n
    \n
    \n
    \n

    {t('vetContent.attestationDecRecord')}

    \n
    \n
    \n
    \n
    \n
    {t('vetContent.visitDate')}
    \n
    {helpers.date.format(filterData[0]?.startDate)}
    \n
    \n {vetAttestationNumber &&\n
    \n
    {t('vetContent.vetAttestationNumber')}
    \n
    {vetAttestationNumber ? vetAttestationNumber : '-'}
    \n
    \n }\n
    \n
    {t('label.holdingName')}
    \n
    {holdingBOResult.propertyName ? holdingBOResult.propertyName : '-'}
    \n
    \n
    \n
    {t('label.holdingAddress')}
    \n
    \n \n
    \n
    \n
    \n
    {t('label.cphNumber')}
    \n
    {filterData[0]?.holding}
    \n
    \n
    \n
    {t('vetContent.vetClaims.veterinarianName')}
    \n
    {filterData[0]?.vetName}
    \n
    \n
    \n
    {t('vetContent.vetClaims.practiceName')}
    \n
    {filterData[0]?.vetEmployer}
    \n
    \n
    \n
    {t('vetContent.vetClaims.practiceAddress')}
    \n
    {filterData[0]?.vetEmploymentAddress}
    \n
    \n
    \n
    {t('vetContent.vetClaims.rcvsNumber')}
    \n
    {filterData[0]?.vetRCVS}
    \n
    \n
    \n
    \n
    {t('vetContent.vetDeclaration.title')}
    \n

    {t('vetContent.vetDeclaration.content1')}

    \n
    {helpers.date.format(filterData[0]?.startDate)}
    \n

    \n {t('vetContent.vetDeclaration.content2-part-1')}\n  \n {t('vetContent.vetDeclaration.content2-part-2')}\n

    \n
    {filterData[0]?.vetName}
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n }\n \n );\n};\n\nexport default VARecordDeclaration;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/base/messageBanner/messageBanner.module.scss';\nimport PropTypes from 'prop-types';\nimport Legend from 'backOfficeComponents/base/legend/legend';\n\nconst MessageBanner = ({\n id,\n isWarning,\n messages\n}) => {\n const { ready, t } = useTranslation();\n\n const componentClassNames = [\n classes.error,\n classes.message,\n isWarning ? classes.warning : ''\n ].join(' ').trim();\n\n return (\n <>\n {ready && messages && messages.length > 0 &&\n \n \n
      \n {messages.map((message, index) => (\n
    • {t(message)}
    • \n ))}\n
    \n
    \n }\n \n );\n};\n\nMessageBanner.propTypes = {\n id: PropTypes.string.isRequired,\n isWarning: PropTypes.bool,\n messages: PropTypes.array\n};\n\nexport default MessageBanner;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport constants from 'services/constants';\nimport classes from 'backOfficeComponents/sections/verifyCustomerSearch/verifyCustomerSearch.module.scss';\nimport Button from 'backOfficeComponents/base/button/button';\nimport CPHField from 'components/base/cphField/cphField';\nimport FieldEntry from 'backOfficeComponents/base/fieldEntry/fieldEntry';\nimport MessageBanner from 'backOfficeComponents/base/messageBanner/messageBanner';\nimport SectionTitleBar from 'backOfficeComponents/base/sectionTitleBar/sectionTitleBar';\n\nconst VerifyCustomerSearch = ({\n data,\n enabledSearch,\n error,\n onClear,\n onSearch,\n pending,\n setData\n}) => {\n return (\n
    \n \n {error &&\n \n }\n
    \n
    \n setData({\n target: {\n name: 'holdingCPH',\n type: 'string',\n value\n }\n })}\n />\n\n \n\n \n\n \n\n \n
    \n
    \n \n\n \n\n \n
    \n
    \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n );\n};\n\nVerifyCustomerSearch.propTypes = {\n data: PropTypes.object,\n error: PropTypes.array,\n onClear: PropTypes.func,\n onSearch: PropTypes.func,\n setData: PropTypes.func\n};\n\nexport default VerifyCustomerSearch;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport constants from 'services/constants';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport { tableColumns } from 'services/tableColumns';\nimport SectionTitleBar from 'backOfficeComponents/base/sectionTitleBar/sectionTitleBar';\nimport Table from 'components/table/table';\n\nconst VerifyCustomerResults = ({\n data,\n searched,\n searchPending,\n setData,\n setModal\n}) => {\n const { ready, t } = useTranslation();\n\n const paginationParams = constants.pagination.defaultParams;\n paginationParams[constants.pagination.bottom].total = data?.length;\n\n return (\n <>\n {ready && searched &&\n
    \n \n {searchPending &&\n {t('boApp.label.searching')}\n }\n {!searchPending && data?.length === 0 &&\n {t('boApp.label.noResults')}\n }\n\n {data?.length > 0 &&\n Routing.boEditCustomer,\n state: (row) => ({\n data: row\n })\n }}\n setData={setData}\n setModal={setModal}\n />\n }\n
    \n }\n \n );\n};\n\nVerifyCustomerResults.propTypes = {\n data: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.array\n ]),\n searchPending: PropTypes.bool,\n searched: PropTypes.bool,\n setData: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired\n};\n\nexport default VerifyCustomerResults;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport axios from 'axios';\nimport { isCancel } from 'services/bff';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport PageTitle from 'backOfficeComponents/base/pageTitle/pageTitle';\nimport VerifyCustomerSearch from 'backOfficeComponents/sections/verifyCustomerSearch/verifyCustomerSearch';\nimport VerifyCustomerResults from 'backOfficeComponents/sections/verifyCustomerResults/verifyCustomerResults';\n\nconst initialSearchInputs = {\n keeperName: '',\n keeperTelephone: '',\n keeperEmail: '',\n holdingCPH: '',\n holdingName: '',\n holdingAddress: '',\n holdingPostcode: '',\n holdingFlock: ''\n};\n\nconst matchIgnoredError = (error) => {\n const matchedError = [\n 'Error: Request failed with status code 400',\n 'Error code: 404 - Not Found'\n ].map((errorMessage) => error.includes(errorMessage));\n\n return matchedError?.length > 0;\n};\n\nconst hasOnlyCPHData = (data) => data?.holdingCPH\n ? Object.entries(data).filter((item) => item[0] !== 'holdingCPH' && item[1] !== '').length === 0\n : false;\n\nconst canSearchKeeperDetail = (data) => data?.id && (data?.propertyName || data?.postCode);\n\nconst validate = {\n keeperNameExists: (input) => input.keeperName !== '',\n\n holdingCPHExists: (input) => input.holdingCPH !== '',\n\n postCodeIsValid: (input) => input.holdingPostcode?.length >= 3,\n\n otherHoldingDetailsExists: (input) => (input.holdingName + input.holdingAddress + input.holdingFlock) !== ''\n};\n\nconst mapping = {\n holdingInfo: (holding, holdingTypeName) => ({\n cph: helpers.replaceNull(holding.id),\n holdingName: helpers.replaceNull(holding.propertyName),\n holdingAddress: [holding.address1, holding.address2, holding.town, holding.county].filter(Boolean).join(', '),\n holdingPostcode: helpers.replaceNull(holding.postCode),\n holdingTypeFullName: holding.holdingType ? helpers.replaceNull(holding.holdingType?.fullName) : holdingTypeName\n }),\n\n keeperDetail: (keeper) => ({\n keeperName: [keeper.title, keeper.firstName, keeper.lastName].filter(Boolean).join(' '),\n keeperEmail: helpers.replaceNull(keeper.email)\n }),\n\n keepersDetail: (holdings, holdingTypeName) => holdings?.map((holding) => ({\n ...holding,\n ...mapping.holdingInfo(holding, holdingTypeName),\n ...mapping.keeperDetail(holding)\n }))\n};\n\nconst BoVerifyCustomer = ({\n setModal\n}) => {\n const { ready } = useTranslation();\n\n const [search, setSearch] = React.useState(false);\n const [searchInputs, setSearchInputs] = React.useState(initialSearchInputs);\n const [enabledSearch, setEnabledSearch] = React.useState(false);\n const [data, setData] = React.useState([]);\n const [searchPending, setSearchPending] = React.useState(false);\n const [searched, setSearched] = React.useState(false);\n const [error, setError] = React.useState([]);\n\n const handleChanges = {\n onChange: (e) => {\n const updatedInputs = {\n ...searchInputs,\n [e.target.name]: e.target.value\n };\n setSearchInputs(updatedInputs);\n\n let isValidCHP = true;\n if (validate.holdingCPHExists(updatedInputs)) {\n isValidCHP = helpers.validate.cphNumber(updatedInputs.holdingCPH);\n }\n setError([]);\n setEnabledSearch(isValidCHP &&\n (\n validate.keeperNameExists(updatedInputs) ||\n validate.postCodeIsValid(updatedInputs) ||\n validate.otherHoldingDetailsExists(updatedInputs) ||\n (\n validate.holdingCPHExists(updatedInputs) &&\n isValidCHP\n )\n )\n );\n },\n\n onSearch: () => {\n const errorArray = [];\n\n if (!validate.keeperNameExists(searchInputs) &&\n !validate.postCodeIsValid(searchInputs) &&\n !validate.otherHoldingDetailsExists(searchInputs) &&\n !hasOnlyCPHData(searchInputs)\n ) {\n errorArray.push('boApp.error.searchCriteriaRequired');\n }\n setError(errorArray);\n setSearch(errorArray.length === 0);\n },\n\n onClear: () => {\n setSearchInputs(initialSearchInputs);\n setData([]);\n setError([]);\n }\n };\n\n const completedSearchResponse = () => {\n setSearchPending(false);\n setSearched(true);\n setSearch(false);\n };\n\n React.useEffect(() => {\n const source1 = axios.CancelToken.source();\n const source2 = axios.CancelToken.source();\n\n const fetchKeeperDetail = (input, hasOnlyCPHData) => {\n const holding = {};\n for (const property in input) {\n holding[property] = input[property]?.trim();\n }\n helpers.get.searchHoldingKeeper(source2.token,\n {\n cph: holding.cph || holding.holdingCPH,\n keeperLastName: holding.keeperName,\n keeperTelephone: holding.keeperTelephone,\n keeperEmail: holding.keeperEmail,\n holdingName: holding.holdingName,\n holdingAddress: holding.holdingAddress,\n holdingPostcode: holding.holdingPostcode,\n holdingFlock: holding.holdingFlock,\n normal: true\n }\n )\n .then(({ data }) => {\n if (helpers.response.isValid(data, setModal, setSearchPending)) {\n if (data?.data?.length > 0) {\n setData(mapping.keepersDetail(data.data, null));\n } else if (hasOnlyCPHData) {\n setData([input]);\n }\n completedSearchResponse();\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n if (!matchIgnoredError(error.toString())) {\n errors.BFF(error, setModal);\n }\n completedSearchResponse();\n }\n });\n };\n\n const handleResponseWithHolding = (holding) => {\n if (holding && helpers.response.isValid(holding, setModal, setSearchPending)) {\n if (canSearchKeeperDetail(holding)) {\n fetchKeeperDetail({\n cph: holding.id,\n holdingName: holding.propertyName,\n holdingPostcode: holding.postCode\n }, true);\n } else {\n setData([mapping.holdingInfo(holding, '')]);\n completedSearchResponse();\n }\n } else {\n setData([]);\n completedSearchResponse();\n }\n };\n\n if (search) {\n setData([]);\n setSearchPending(true);\n\n if (hasOnlyCPHData(searchInputs)) {\n helpers.get.holdingDetails({ cancelToken: source1.token, cph: searchInputs.holdingCPH, queryKeeper: true })\n .then(({ data }) => {\n handleResponseWithHolding(data.data[0]);\n })\n .catch((error) => {\n if (!isCancel(error)) {\n if (!matchIgnoredError(error.toString())) {\n errors.BFF(error, setModal);\n }\n completedSearchResponse();\n }\n });\n } else {\n fetchKeeperDetail(searchInputs, false);\n }\n }\n\n return () => {\n source1.cancel();\n source2.cancel();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [search]);\n\n React.useEffect(() => {\n helpers.scrollToTop(document.getElementById('appContent'));\n }, []);\n\n return (\n <>\n {ready &&\n <>\n \n\n \n\n \n \n }\n \n );\n};\n\nBoVerifyCustomer.propTypes = {\n setModal: PropTypes.func.isRequired\n};\n\nexport default BoVerifyCustomer;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/summary/addressSummary/addressSummary.module.scss';\nimport constants from 'services/constants';\nimport PropTypes from 'prop-types';\nimport Address from 'backOfficeComponents/address/address';\nimport Button from 'backOfficeComponents/base/button/button';\nimport Legend from 'backOfficeComponents/base/legend/legend';\n\nconst AddressSummary = ({\n destinationHolding,\n info1,\n info2,\n info3,\n info3isComment,\n isManual,\n isPermitMove,\n label,\n label1,\n label2,\n label3,\n onClick,\n setModal,\n showBorder\n}) => {\n const { ready, t } = useTranslation();\n\n return (\n <>\n {ready &&\n
    \n
    {t(label)}
    \n
    \n
    \n {label1 && }\n {info1 && }\n {!isManual &&\n \n }\n
    \n\n {label2 && info2 &&\n
    \n {label2 && }\n {info2 && }\n {!isPermitMove &&\n \n }\n
    \n }\n\n {label3 && info3 &&\n
    \n {label3 && }\n {info3 && }\n {!isPermitMove && !destinationHolding && !info3isComment &&\n \n }\n
    \n }\n
    \n\n {onClick &&\n
    \n \n
    \n }\n
    \n }\n \n );\n};\n\nAddressSummary.propTypes = {\n info1: PropTypes.string,\n info2: PropTypes.string,\n info3: PropTypes.string,\n info3isComment: PropTypes.bool,\n isManual: PropTypes.bool,\n isPermitMove: PropTypes.bool,\n label: PropTypes.string,\n label1: PropTypes.string,\n label2: PropTypes.string,\n label3: PropTypes.string,\n onClick: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n showBorder: PropTypes.bool\n};\n\nexport default AddressSummary;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/summary/dateSummary/dateSummary.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Button from 'backOfficeComponents/base/button/button';\nimport InputDate from 'components/base/inputDate/inputDate';\nimport Legend from 'backOfficeComponents/base/legend/legend';\n\nconst DateSummary = ({\n arrivalDate,\n arrivalDateError,\n confirmMode,\n departureDate,\n label,\n onClick,\n setArrivalDate,\n setArrivalDateError\n}) => {\n const { ready, t } = useTranslation();\n\n const validate = {\n arrivalDate: (date) => {\n if (date) {\n const error = helpers.date.is.sameDayOrNextDay(date, departureDate)\n ? ''\n : 'error.arrivalDateInTheFuture';\n setArrivalDateError(error ? error : '');\n }\n }\n };\n\n const getDates = {\n arrivalDateMin: () => {\n return helpers.date.formatYYYYMMDD(departureDate);\n },\n\n arrivalDateMax: () => {\n return helpers.date.formatYYYYMMDD(\n helpers.date.momentToJSDate(\n helpers.date.momentMinDate(\n helpers.date.addPeriod(departureDate, 1, constants.period.days),\n helpers.date.todayEndOfDay()\n )\n )\n );\n }\n };\n\n const handleChanges = {\n arrivalDate: (date) => {\n setArrivalDate(date);\n validate.arrivalDate(date);\n }\n };\n\n React.useEffect(() => {\n if (confirmMode) {\n handleChanges.arrivalDate(arrivalDate ? arrivalDate : '');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [confirmMode]);\n\n return (\n <>\n {ready &&\n
    \n
    {t(label)}
    \n
    \n
    \n \n {helpers.date.format(departureDate)}\n
    \n\n {(arrivalDate || confirmMode) &&\n
    \n \n {confirmMode &&\n handleChanges.arrivalDate(event.target.value)}\n setError={setArrivalDateError}\n value={arrivalDate ? helpers.date.formatYYYYMMDD(arrivalDate) : ''}\n yearLength={2}\n />\n }\n {!confirmMode && arrivalDate && helpers.date.format(arrivalDate)}\n
    \n }\n
    \n {onClick &&\n
    \n \n
    \n }\n
    \n }\n \n );\n};\n\nDateSummary.propTypes = {\n arrivalDate: PropTypes.string,\n arrivalDateError: PropTypes.string,\n confirmMode: PropTypes.bool,\n departureDate: PropTypes.string,\n label: PropTypes.string,\n onClick: PropTypes.func,\n setArrivalDate: PropTypes.func,\n setArrivalDateError: PropTypes.func\n};\n\nexport default DateSummary;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport Button from 'backOfficeComponents/base/button/button';\nimport classes from 'backOfficeComponents/summary/exemptionSummary/exemptionSummary.module.scss';\nimport helpers from 'services/helpers';\n\nconst ExemptionSummary = ({\n data,\n label,\n onClick\n}) => {\n const { ready, t } = useTranslation();\n\n const displayExemption = () => {\n if (data.exemptions?.length > 0) {\n return (\n <>\n {(helpers.option.movement.isExempt(data.exempt) &&\n <>\n {data.exemptions.filter((o) => o.value)\n .map((o) => (\n
    {o.label}
    \n ))}\n )\n }\n {(!helpers.option.movement.isExempt(data.exempt) && t('radioButtons.movementExemption.response'))}\n \n );\n }\n return (\n t('movements.noExemptions')\n );\n };\n\n return (\n <>\n {ready &&\n
    \n
    {t(label)}
    \n
    {displayExemption()}
    \n\n {onClick &&\n
    \n \n
    \n }\n
    \n }\n \n );\n};\n\nExemptionSummary.propTypes = {\n data: PropTypes.object,\n label: PropTypes.string,\n onClick: PropTypes.func\n};\n\nexport default ExemptionSummary;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/summary/fciSummary/fciSummary.module.scss';\nimport he from 'he';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Button from 'backOfficeComponents/base/button/button';\n\nconst FciSummary = ({\n animalsData,\n fciData,\n numberBeingMoved,\n onClick\n}) => {\n const { ready, t } = useTranslation();\n\n const [showFCI, setShowFCI] = React.useState(false);\n\n const toggleFCI = () => {\n setShowFCI(!showFCI);\n };\n\n const FCINotSatisfied = () => {\n return (\n <>\n \n {showFCI &&\n \n }\n {!showFCI &&\n \n }\n {t('label.fciStatementsNotSatisfiedForAllAnimals')}\n \n\n {showFCI &&\n
    \n {fciData.unfitAnimals &&\n

    \n {fciData.unfitAnimals.length} {t('label.of')}{' '}\n {numberBeingMoved} {t('label.animals')}\n

    \n }\n {fciData.withdrawalPeriod &&\n <>\n {t('label.withdrawalPeriod')}\n

    {fciData.withdrawalPeriod.name}

    \n \n }\n {fciData.nonComplianceReason &&\n <>\n {t('label.reason')}\n

    {fciData?.nonComplianceReason ? he.decode(fciData.nonComplianceReason) : ''}

    \n \n }\n {fciData.holdingRestrictions &&\n <>\n {t('label.holdingRestrictions')}\n

    {fciData?.holdingRestrictions ? he.decode(fciData.holdingRestrictions) : ''}

    \n \n }\n
    \n }\n \n );\n };\n\n const FCISatisfied = () => {\n return {t('label.allAnimalsSatisfyFciStatements')};\n };\n\n const FCINotSupplied = () => {\n return {t('label.noFciInformationRecorded')};\n };\n\n return (\n <>\n {ready &&\n
    \n
    \n {(!fciData || !helpers.option.fci.doRecord(fciData.recordFCI)) &&\n \n }\n {fciData && helpers.option.fci.doRecord(fciData.recordFCI) && (helpers.option.animals.doSatisfy(fciData.animalsSatisfy) || !animalsData?.animalsBeingMoved) &&\n \n }\n {fciData && helpers.option.fci.doRecord(fciData.recordFCI) && !helpers.option.animals.doSatisfy(fciData.animalsSatisfy) && animalsData?.animalsBeingMoved &&\n \n }\n
    \n {onClick &&\n
    \n \n
    \n }\n
    \n }\n \n );\n};\n\nFciSummary.propTypes = {\n animalsData: PropTypes.object,\n fciData: PropTypes.object,\n numberBeingMoved: PropTypes.number,\n onClick: PropTypes.func\n};\n\nexport default FciSummary;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport constants from 'services/constants';\nimport classes from 'backOfficeComponents/summary/transportSummary/transportSummary.module.scss';\nimport PropTypes from 'prop-types';\n\nconst TransportSummary = ({\n transportInformation\n}) => {\n const { ready, t } = useTranslation();\n const transportedByLabel = transportInformation?.transportedBy\n ? ('radioButtons.transportedBy.' + transportInformation.transportedBy)\n : (transportInformation?.transporterType ? transportInformation?.transporterType : '');\n\n return (\n <>\n {ready &&\n <>\n {(!transportInformation || !transportInformation.recordTransportInformation || transportInformation.recordTransportInformation === constants.option.recordTransportInformation.no) &&\n
    \n {t('movements.transport-information.noInformationRecorded')}\n
    \n }\n\n {transportInformation && transportInformation.recordTransportInformation && (transportInformation.recordTransportInformation !== constants.option.recordTransportInformation.no) &&\n <>\n
    \n
    \n {t('movements.transport-information.transport-details.radios-title')}\n
    \n
    \n {t(transportedByLabel)}\n {transportInformation.vehicleRegistrationNumber &&\n <>\n {transportedByLabel ? ' - ' : null}{transportInformation.vehicleRegistrationNumber}\n \n }\n
    \n
    \n\n {transportInformation.contactPhone &&\n
    \n
    {t('movements.transport-information.transport-details.contactTelephoneNumber')}
    \n
    {transportInformation.contactPhone}
    \n
    \n }\n\n {transportInformation.durationOfJourney && (transportInformation.durationOfJourney.days > 0 || transportInformation.durationOfJourney.hours > 0 || transportInformation.durationOfJourney.minutes > 0) &&\n
    \n
    {t('movements.transport-information.transport-details.durationOfJourney')}
    \n
    \n {transportInformation.durationOfJourney.days === 1 &&\n <>\n {transportInformation.durationOfJourney.days}{' '}\n {t('label.day_lower')}{' '}\n \n }\n {transportInformation.durationOfJourney.days > 1 &&\n <>\n {transportInformation.durationOfJourney.days}{' '}\n {t('label.days_lower')}{' '}\n \n }\n {transportInformation.durationOfJourney.hours ? transportInformation.durationOfJourney.hours : 0}{' '}\n {t('movements.transport-information.transport-details.hours').toLowerCase()}{' '}\n\n {transportInformation.durationOfJourney.minutes ? transportInformation.durationOfJourney.minutes : 0}{' '}\n {t('movements.transport-information.transport-details.minutes').toLowerCase()}\n
    \n
    \n }\n \n }\n \n }\n \n );\n};\n\nTransportSummary.propTypes = {\n transportInformation: PropTypes.object\n};\n\nexport default TransportSummary;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport axios from 'axios';\nimport bff, { bffStatus, bffResponse, isCancel } from 'services/bff';\nimport classes from 'backOffice/viewMovement/viewMovement.module.scss';\nimport constants from 'services/constants';\nimport config from 'config';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport Routing from 'routing';\nimport AddressSummary from 'backOfficeComponents/summary/addressSummary/addressSummary';\nimport AnimalSummary from 'components/animalSummary/animalSummary';\nimport Button from 'backOfficeComponents/base/button/button';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport DateSummary from 'backOfficeComponents/summary/dateSummary/dateSummary';\nimport ExemptionSummary from 'backOfficeComponents/summary/exemptionSummary/exemptionSummary';\nimport FciSummary from 'backOfficeComponents/summary/fciSummary/fciSummary';\nimport ModalConfirm from 'components/base/modalConfirm/modalConfirm';\nimport PageTitle from 'backOfficeComponents/base/pageTitle/pageTitle';\nimport SectionTitleBar from 'backOfficeComponents/base/sectionTitleBar/sectionTitleBar';\nimport TransportSummary from 'backOfficeComponents/summary/transportSummary/transportSummary';\nimport { holdingHelper } from 'services/holdingHelper';\nimport { cloneDeep, isEmpty } from 'lodash';\n\nconst isNonCPH = (holding) => holding && !holdingHelper.cph.isNonCph(holding);\n\nconst determineIfMovementInBusiness = async (setLoadPending, inData, setModal, source, setIsInBusinessMove) => {\n const fromHolding = get.fromHolding(inData);\n const toHolding = get.toHolding(inData);\n\n if (!holdingHelper.cph.isNonCph(fromHolding) &&\n !holdingHelper.cph.isNonCph(toHolding) &&\n !holdingHelper.cph.isUnknownCph(fromHolding) &&\n !holdingHelper.cph.isUnknownCph(toHolding)\n ) {\n setLoadPending((prevState) => ({\n ...prevState,\n holdingsInBusiness: {\n ...prevState.holdingsInBusiness,\n requestSent: true\n }\n }));\n\n helpers.get.holdingsInBusiness(source.token, fromHolding)\n .then((holdingRes) => {\n if (helpers.response.isValid(holdingRes?.data?.data, setModal)) {\n setLoadPending((prevState) => ({\n ...prevState,\n holdingsInBusiness: {\n ...prevState.holdingsInBusiness,\n pending: false\n }\n }));\n\n const holdings = holdingRes.data?.data?.holdings || [];\n // in-business move is when both CPHs is in the same user holdings\n inData.isInBusinessMovement = holdings.some((holding) => holding.cph === toHolding) &&\n holdings.some((holding) => holding.cph === fromHolding);\n setIsInBusinessMove(inData.isInBusinessMovement);\n }\n })\n .catch((error) => {\n if (error?.response?.status !== 404) {\n errors.BFF(error, setModal);\n } else {\n setLoadPending((prevState) => ({\n ...prevState,\n holdingsInBusiness: {\n ...prevState.holdingsInBusiness,\n pending: false\n }\n }));\n }\n });\n }\n};\n\nconst get = {\n acceptedAndRejectedAnimals: async (setLoadPending, inData, setModal, source) => {\n setLoadPending((prevState) => ({\n ...prevState,\n reviewHoldingMovements: {\n ...prevState.reviewHoldingMovements,\n requestSent: true\n }\n }));\n\n const { data } = await helpers.get.reviewHoldingMovements(source.token, inData.requestIdUndone);\n\n if (helpers.response.isValid(data, setModal)) {\n setLoadPending((prevState) => ({\n ...prevState,\n reviewHoldingMovements: {\n ...prevState.reviewHoldingMovements,\n pending: false\n }\n }));\n\n if (data?.content?.reviewMovement) {\n const acceptedAndRejectedAnimals = data.content.reviewMovement;\n inData.batches = acceptedAndRejectedAnimals?.acceptedBatches;\n inData.batchesRejected = acceptedAndRejectedAnimals?.rejectedBatches;\n inData.devices = acceptedAndRejectedAnimals?.acceptedDevices;\n inData.devicesRejected = acceptedAndRejectedAnimals?.rejectedDevices;\n }\n }\n },\n\n animalDetails: async (setLoadPending, inData, setModal, setFciData, metFCIWithdrawalPeriods) => {\n const responseData = async (setLoadPending, inData, data, setModal, setFciData, metFCIWithdrawalPeriods) => {\n if (helpers.response.isValid(data, setModal)) {\n setLoadPending((prevState) => ({\n ...prevState,\n request: {\n ...prevState.request,\n pending: false\n },\n requests: {\n ...prevState.request,\n pending: false\n }\n }));\n\n if (data?.comment) {\n inData.comment = data.comment;\n }\n const batches = helpers.extract.requestBatches(inData, data);\n if (batches.length > 0) {\n inData.batches = batches;\n }\n const devices = helpers.extract.requestDevices(inData, data);\n if (devices.length > 0) {\n inData.devices = devices;\n }\n if (!inData.movementDocument?.fciDetail && data.movementDocument?.fciDetail) {\n inData.movementDocument.fciDetail = data.movementDocument.fciDetail;\n }\n if (!inData.movementDocument?.transportDetail && data.movementDocument?.transportDetail) {\n inData.movementDocument.transportDetail = data.movementDocument.transportDetail;\n }\n if (data.movementDocument?.departureDetail?.expectedDurationOfJourney) {\n inData.movementDocument.departureDetail.expectedDurationOfJourney = data.movementDocument.departureDetail.expectedDurationOfJourney;\n }\n const fciDetail = data?.movementDocument?.fciDetail;\n const recordFCI = fciDetail && typeof fciDetail?.isAllAnimalsFciCompliant === 'boolean' ? constants.option.recordFCI.yes : constants.option.recordFCI.no;\n storeService.session.set.movementFciRecordFci(recordFCI);\n\n if (helpers.option.fci.doRecord(recordFCI)) {\n // fetch the fciWithdrawalPeriods if it doesn't existed\n const fciWithdrawalPeriods = metFCIWithdrawalPeriods.length > 0\n ? metFCIWithdrawalPeriods\n : await get.fciWithdrawalPeriods(setLoadPending, setModal, axios.CancelToken.source());\n setFciData({\n ...fciDetail,\n recordFCI,\n withdrawalPeriod: helpers.extract.withdrawalPeriod(fciDetail, fciWithdrawalPeriods),\n nonComplianceReason: data.movementDocument?.fciDetail?.nonCompliantReason,\n unfitAnimals: data.movementDocument?.fciDetail?.nonCompliantDevices\n });\n } else {\n setFciData({ ...fciDetail, recordFCI });\n }\n }\n };\n\n if (!helpers.option.movement.isCrossBorderUnsupportedRequestType(inData.responseRequestType)) {\n setLoadPending((prevState) => ({\n ...prevState,\n request: {\n ...prevState.request,\n requestSent: true\n },\n requests: {\n ...prevState.request,\n requestSent: true\n }\n }));\n\n const { data } = await helpers.get.request(inData.sourceHolding, inData.requestId, inData.responseRequestType);\n await responseData(setLoadPending, inData, data, setModal, setFciData, metFCIWithdrawalPeriods);\n }\n },\n\n animalDetailsRejected: async (setLoadPending, reviewRequestId, setModal, source) => {\n setLoadPending((prevState) => ({\n ...prevState,\n reviewHoldingMovements: {\n ...prevState.reviewHoldingMovements,\n requestSent: true\n }\n }));\n\n const { data } = await helpers.get.reviewHoldingMovements(source.token, reviewRequestId);\n\n if (helpers.response.isValid(data, setModal)) {\n setLoadPending((prevState) => ({\n ...prevState,\n reviewHoldingMovements: {\n ...prevState.reviewHoldingMovements,\n pending: false\n }\n }));\n\n const { reviewMovement } = data?.content || {};\n\n return {\n batchesRejected: reviewMovement.rejectedBatches,\n devicesRejected: reviewMovement.rejectedDevices\n };\n }\n return {\n batchesRejected: null,\n devicesRejected: null\n };\n },\n\n animalTotal: (inData, totalBatchesAndDevices) => {\n if (inData.totalAnimals) {\n return inData.totalAnimals;\n }\n if (inData.animalCount) {\n return inData.animalCount;\n }\n if (inData.animalTotal) {\n return inData.animalTotal;\n }\n return totalBatchesAndDevices;\n },\n\n approvedMovement: async (setLoadPending, inData, setModal, source) => {\n setLoadPending((prevState) => ({\n ...prevState,\n approvedMovement: {\n ...prevState.approvedMovement,\n requestSent: true\n }\n }));\n\n const { data } = await helpers.get.approvedMovement(source.token, inData);\n\n if (helpers.response.isValid(data, setModal)) {\n setLoadPending((prevState) => ({\n ...prevState,\n approvedMovement: {\n ...prevState.approvedMovement,\n pending: false\n }\n }));\n\n inData.devices = data.devices;\n inData.batches = data.batches.map((batch) => ({\n animalTotal: batch.animalTotal,\n batchMovementId: batch.batchMovementId,\n batchNumber: batch.batchNumber,\n idMark: batch.idMark,\n stockType: batch.stockType\n }));\n inData.movementDocument = data.movementDocument;\n inData.approvedMovementProcessingFlags = data.approvedMovementProcessingFlags;\n }\n },\n\n cancelledMovementReference: async (setLoadPending, inData, setModal, source) => {\n setLoadPending((prevState) => ({\n ...prevState,\n cancelledMovementsList: {\n ...prevState.cancelledMovementsList,\n requestSent: true\n }\n }));\n\n const toDate = helpers.date.formatYYYYMMDD(new Date());\n const fromDate = helpers.date.formatYYYYMMDD(helpers.date.subtractPeriod(new Date(), 3, constants.period.months));\n const movementRef = inData.movementRef ? inData.movementRef : inData.movementDocument.movementDocumentRef ? inData.movementDocument.movementDocumentRef : inData.movementReferenceUndone;\n const { data } = await helpers.get.cancelledMovementsListFiltered(source.token, inData.fromHolding, inData.toHolding, fromDate, toDate, inData.speciesId, movementRef);\n\n if (helpers.response.isValid(data, setModal)) {\n setLoadPending((prevState) => ({\n ...prevState,\n cancelledMovementsList: {\n ...prevState.cancelledMovementsList,\n pending: false\n }\n }));\n\n inData.originalMovementRef = data.data[0]?.movementReferenceUndone;\n }\n },\n\n comment: async (setLoadPending, inData, setModal, source) => {\n setLoadPending((prevState) => ({\n ...prevState,\n holdingRegistersMovementDetails: {\n ...prevState.holdingRegistersMovementDetails,\n requestSent: true\n }\n }));\n\n const { data } = await helpers.get.holdingRegistersMovementDetails(source.token, get.movementHolding(inData), inData.requestId);\n\n if (helpers.response.isValid(data, setModal)) {\n setLoadPending((prevState) => ({\n ...prevState,\n holdingRegistersMovementDetails: {\n ...prevState.holdingRegistersMovementDetails,\n pending: false\n }\n }));\n\n return data?.length > 0 ? data[0].comment : '';\n }\n },\n\n fciWithdrawalPeriods: async (setLoadPending, setModal, source) => {\n setLoadPending((prevState) => ({\n ...prevState,\n metFciWithdrawalPeriods: {\n ...prevState.metFciWithdrawalPeriods,\n requestSent: true\n }\n }));\n\n const { data } = await helpers.get.metFciWithdrawalPeriods(source.token);\n\n if (helpers.response.isValid(data, setModal)) {\n setLoadPending((prevState) => ({\n ...prevState,\n metFciWithdrawalPeriods: {\n ...prevState.metFciWithdrawalPeriods,\n pending: false\n }\n }));\n\n return data;\n }\n return null;\n },\n\n fromHolding: (data) => {\n if (holdingHelper.cph.isNonCph(data.userHolding) || holdingHelper.cph.isNonCph(data.fromHolding) || holdingHelper.cph.isNonCph(data.sourceHolding)) {\n return constants.cph.none;\n }\n if (data.fromHolding) {\n return data.fromHolding.trim();\n }\n if (data.sourceHolding) {\n return data.sourceHolding.trim();\n }\n if (data.userHolding) {\n return data.userHolding.trim();\n }\n },\n\n movementHolding: (movementData) => {\n if (!movementData) {\n return null;\n }\n if (isNonCPH(movementData.sourceHolding)) {\n return movementData.sourceHolding;\n }\n if (isNonCPH(movementData.fromHolding)) {\n return movementData.fromHolding;\n }\n if (isNonCPH(movementData.sourceHolding)) {\n return movementData.sourceHolding;\n }\n return isNonCPH(movementData.toHolding)\n ? movementData.toHolding\n : movementData.destinationHolding;\n },\n\n movementRef: (location) => {\n if (location?.state?.data) {\n const { data } = location.state;\n if (data.movementRef) {\n return data.movementRef;\n }\n if (data.movementReferenceUndone) {\n return data.movementReferenceUndone;\n }\n return data.movementDocument?.movementDocumentRef ? data.movementDocument.movementDocumentRef : null;\n }\n return null;\n },\n\n movementSubTitle: (message, movementDocumentRef) => `${movementDocumentRef} ${message ? ' - ' + message : ''}`,\n\n originalMovementRef: async (setLoadPending, data, setModal, spawnToken) => {\n await get.cancelledMovementReference(setLoadPending, data, setModal, spawnToken());\n\n if (!data.originalMovementRef) {\n const requestToBeUndoneId = await get.requestToBeUndoneId(setLoadPending, data, setModal, spawnToken());\n const response = await helpers.get.requests(null, requestToBeUndoneId);\n data.originalMovementRef = await get.originalMovementReference(setLoadPending, requestToBeUndoneId, response?.data?.requestTypeId, setModal, spawnToken());\n }\n },\n\n originalMovementReference: async (setLoadPending, requestToBeUndoneId, responseRequestType, setModal, source) => {\n setLoadPending((prevState) => ({\n ...prevState,\n requestByIdAndType: {\n ...prevState.requestByIdAndType,\n requestSent: true\n }\n }));\n\n const { data } = await helpers.get.requestByIdAndType(source.token, requestToBeUndoneId, responseRequestType);\n\n setLoadPending((prevState) => ({\n ...prevState,\n requestByIdAndType: {\n ...prevState.requestByIdAndType,\n pending: false\n }\n }));\n\n if (helpers.response.isValid(data, setModal)) {\n return data?.movementDocument?.movementDocumentRef;\n }\n return null;\n },\n\n rejectedAnimals: async (setLoadPending, data, setModal, spawnToken) => {\n const reviewStatus = await get.reviewStatus(setLoadPending, data.movementRef, setModal, spawnToken());\n\n let rejectedAnimals;\n\n if (reviewStatus.departureReviewStatus?.reviewStatusStatus === 'ReviewedAndRejected') {\n rejectedAnimals = await get.animalDetailsRejected(setLoadPending, reviewStatus.departureReviewStatus.reviewRequestId, setModal, spawnToken());\n data.reviewStatus = reviewStatus.departureReviewStatus?.reviewStatusStatus;\n data.reviewRequestId = reviewStatus.departureReviewStatus?.reviewRequestId;\n } else if (reviewStatus.arrivalReviewStatus?.reviewStatusStatus === 'ReviewedAndRejected') {\n rejectedAnimals = await get.animalDetailsRejected(setLoadPending, reviewStatus.arrivalReviewStatus.reviewRequestId, setModal, spawnToken());\n data.reviewStatus = reviewStatus.arrivalReviewStatus?.reviewStatusStatus;\n data.reviewRequestId = reviewStatus.arrivalReviewStatus?.reviewRequestId;\n }\n\n if (rejectedAnimals) {\n data.batchesRejected = rejectedAnimals.batchesRejected;\n data.devicesRejected = rejectedAnimals.devicesRejected;\n data.animalTotal = 0;\n }\n },\n\n requestByIdAndType: async (setLoadPending, inData, source) => {\n setLoadPending((prevState) => ({\n ...prevState,\n requestByIdAndType: {\n ...prevState.requestByIdAndType,\n requestSent: true\n }\n }));\n\n const { data } = await helpers.get.requestByIdAndType(source.token, inData.requestId, inData.responseRequestType);\n\n setLoadPending((prevState) => ({\n ...prevState,\n requestByIdAndType: {\n ...prevState.requestByIdAndType,\n pending: false\n }\n }));\n\n if (data) {\n storeService.session.set.request(data);\n }\n },\n\n requestToBeUndoneId: async (setLoadPending, inData, setModal, source) => {\n setLoadPending((prevState) => ({\n ...prevState,\n requestByIdAndType: {\n ...prevState.requestByIdAndType,\n requestSent: true\n }\n }));\n\n const { data } = await helpers.get.requestByIdAndType(source.token, inData.requestId, inData.responseRequestType);\n\n if (helpers.response.isValid(data, setModal)) {\n setLoadPending((prevState) => ({\n ...prevState,\n requestByIdAndType: {\n ...prevState.requestByIdAndType,\n pending: false\n }\n }));\n\n return data?.requestToBeUndoneId;\n }\n },\n\n reviewStatus: async (setLoadPending, movementRef, setModal, source) => {\n setLoadPending((prevState) => ({\n ...prevState,\n reviewStatus: {\n ...prevState.reviewStatus,\n requestSent: true\n }\n }));\n\n const statuses = await helpers.get.reviewStatus(source.token, movementRef);\n\n if (helpers.response.isValid(statuses.data, setModal)) {\n setLoadPending((prevState) => ({\n ...prevState,\n reviewStatus: {\n ...prevState.reviewStatus,\n pending: false\n }\n }));\n\n return statuses.data;\n }\n },\n\n totalBatchAnimals: (inData) => {\n if (inData?.batches?.length > 0) {\n return inData.batches.reduce((total, batch) => total + batch.animalTotal, 0);\n }\n if (inData?.movementGroups?.[0]?.batches?.length > 0) {\n return inData.movementGroups[0].batches.reduce((total, batch) => total + batch.animalTotal, 0);\n }\n return 0;\n },\n\n totalBatchAnimalsRejected: (inData) => {\n if (inData?.batchesRejected?.length > 0) {\n return inData.batchesRejected.reduce((total, batch) => total + batch.animalTotal, 0);\n }\n if (inData?.movementGroups?.[0]?.batchesRejected?.length > 0) {\n return inData.movementGroups[0].batchesRejected.reduce((total, batch) => total + batch.animalTotal, 0);\n }\n return 0;\n },\n\n totalIndividualAnimals: (inData) => {\n if (inData?.devices?.length > 0) {\n return inData.devices.length;\n }\n if (inData?.movementGroups?.[0]?.devices?.length > 0) {\n return inData.movementGroups[0].devices.length;\n }\n return 0;\n },\n\n totalIndividualAnimalsRejected: (inData) => {\n if (inData?.devicesRejected?.length > 0) {\n return inData.devicesRejected.length;\n }\n if (inData?.movementGroups?.[0]?.devicesRejected?.length > 0) {\n return inData.movementGroups[0].devicesRejected.length;\n }\n return 0;\n },\n\n toHolding: (data) => {\n if (holdingHelper.cph.isNonCph(data.toHolding) || holdingHelper.cph.isNonCph(data.destinationHolding)) {\n return constants.cph.none;\n }\n if (data.destinationHolding) {\n return data.destinationHolding.trim();\n }\n if (data.toHolding) {\n return data.toHolding.trim();\n }\n }\n};\n\nconst initialProcessData = (data) => {\n // For Common land CPHs, replace id with movementId #66965\n if (data.movementId) {\n data.id = data.movementId;\n }\n data.fromHolding = get.fromHolding(data);\n data.toHolding = get.toHolding(data);\n data.bothEnglishHoldings =\n (\n holdingHelper.cph.isEnglish(data.fromHolding) ||\n holdingHelper.cph.isNonCph(data.fromHolding)\n ) &&\n (\n holdingHelper.cph.isEnglish(data.toHolding) ||\n holdingHelper.cph.isNonCph(data.toHolding)\n );\n data.speciesId = data.species ? helpers.species.nameToId(data?.species) : data?.speciesId;\n};\n\nconst initRequest = async (setLoadPending, data, setModal, source) => {\n setLoadPending((prevState) => ({\n ...prevState,\n requests: {\n ...prevState.requests,\n pending: false\n }\n }));\n\n const res = await helpers.get.requests(source.token, data.requestId);\n\n if (helpers.response.isValid(res.data, setModal)) {\n setLoadPending((prevState) => ({\n ...prevState,\n requests: {\n ...prevState.requests,\n pending: false\n }\n }));\n\n return res.data;\n }\n return null;\n};\n\nconst BoViewMovement = ({\n location,\n setModal\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n const [data, setData] = React.useState(location?.state?.data ? location?.state?.data : {});\n const [doc, setDoc] = React.useState(data?.movementDocument ?? null);\n\n const [batches, setBatches] = React.useState([]);\n const [batchesRejected, setBatchesRejected] = React.useState([]);\n const [individualAnimals, setIndividualAnimals] = React.useState([]);\n const [individualAnimalsRejected, setIndividualAnimalsRejected] = React.useState([]);\n const [totalBatchAnimals, setTotalBatchAnimals] = React.useState(0);\n const [totalIndividualAnimals, setTotalIndividualAnimals] = React.useState(0);\n const [totalAnimals, setTotalAnimals] = React.useState(0);\n const [totalBatchAnimalsRejected, setTotalBatchAnimalsRejected] = React.useState(0);\n const [totalIndividualAnimalsRejected, setTotalIndividualAnimalsRejected] = React.useState(0);\n const [totalAnimalsRejected, setTotalAnimalsRejected] = React.useState(0);\n\n const [transportInformation, setTransportInformation] = React.useState({ recordTransportInformation: constants.option.recordTransportInformation.no });\n const [fciData, setFciData] = React.useState({});\n\n const [processingFlags, setProcessingFlags] = React.useState({ exempt: '', exemptions: [] });\n const [metFCIWithdrawalPeriods, setMetFCIWithdrawalPeriods] = React.useState([]);\n const [showAmendButton, setShowAmendButton] = React.useState(false);\n const [showConfirmModal, setShowConfirmModal] = React.useState(null);\n\n const [confirmMode, setConfirmMode] = React.useState(false);\n const [arrivalDate, setArrivalDate] = React.useState(null);\n const [arrivalDateError, setArrivalDateError] = React.useState(null);\n\n const [action, setAction] = React.useState(null);\n const [movementRef, setMovementRef] = React.useState(get.movementRef(location));\n const [movementReferences, setMovementReferences] = React.useState([]);\n\n const [pageErrors, setPageErrors] = React.useState([]);\n const [loadPending, setLoadPending] = React.useState({\n approvedMovement: {\n requestSent: false,\n pending: true\n },\n cancelledMovementsList: {\n requestSent: false,\n pending: true\n },\n holdingsInBusiness: {\n requestSent: false,\n pending: true\n },\n holdingRegistersMovementDetails: {\n requestSent: false,\n pending: true\n },\n movementAnimals: {\n requestSent: false,\n pending: true\n },\n request: {\n requestSent: false,\n pending: true\n },\n requests: {\n requestSent: false,\n pending: true\n },\n requestByIdAndType: {\n requestSent: false,\n pending: true\n },\n reviewHoldingMovements: {\n requestSent: false,\n pending: true\n },\n reviewStatus: {\n requestSent: false,\n pending: true\n }\n });\n const [submitPending, setSubmitPending] = React.useState(false);\n const [submitted, setSubmitted] = React.useState(false);\n const [pollingStatus, setPollingStatus] = React.useState(null);\n const [viewErrors, setViewErrors] = React.useState([]);\n const [viewWarnings, setViewWarnings] = React.useState([]);\n const [viewStatus, setViewStatus] = React.useState('');\n const [speciesId, setSpeciesId] = React.useState(null);\n const [requestId, setRequestId] = React.useState(null);\n const [requestType, setRequestType] = useState(null);\n const [isPermitMovement, setIsPermitMovement] = useState(false);\n const [isInBusinessMovement, setIsInBusinessMovement] = useState(false);\n\n const processCommonData = (inValue) => {\n storeService.session.set.movement(inValue);\n\n const { fciDetail } = inValue.movementDocument;\n const isAllAnimalsFciCompliant = typeof inValue.movementDocument.fciDetail?.isAllAnimalsFCICompliant === 'boolean';\n const recordFCI = fciDetail && isAllAnimalsFciCompliant ? constants.option.recordFCI.yes : constants.option.recordFCI.no;\n storeService.session.set.movementFciRecordFci(recordFCI);\n\n if (helpers.option.fci.doRecord(recordFCI)) {\n storeService.session.set.movementFciWithdrawalPeriod(helpers.extract.withdrawalPeriod(fciDetail, metFCIWithdrawalPeriods));\n storeService.session.set.movementFciAnimalsSatisfy(helpers.extract.animalsSatisfy(fciDetail));\n\n if (fciDetail.nonCompliantDevices?.length > 0) {\n storeService.session.set.movementFciUnfitAnimals(fciDetail.nonCompliantDevices.map((animal) => animal.tagNumber));\n }\n if (fciDetail.holdingRestrictions) {\n storeService.session.set.movementFciHoldingRestrictions(fciDetail.holdingRestrictions);\n }\n if (fciDetail.nonCompliantReason) {\n storeService.session.set.movementFciNonComplianceReason(fciDetail.nonCompliantReason);\n }\n }\n };\n\n const processExemptions = (processingFlags, responseData) => {\n const exemptions = processingFlags.map((o) => ({\n id: o.processingFlagId,\n label: helpers.extract.processingLabel(responseData, o.processingFlagId),\n name: helpers.extract.processingName(responseData, o.processingFlagId),\n value: true\n }));\n const all = responseData.map((o) => ({\n id: o.id,\n label: o.label,\n value: helpers.extract.processingStatus(processingFlags, o.id)\n }));\n const savedProcessingFlags = {\n exempt: 'yes',\n exemptions,\n all\n };\n setProcessingFlags(savedProcessingFlags);\n storeService.session.set.movementExemptions(exemptions);\n };\n\n const retrieveMovementReferences = (inData) => {\n return [\n {\n value: inData?.movementDocument?.movementDocumentRef,\n label: 'label.movementRef'\n },\n {\n value: !inData?.movementDocument?.movementDocumentRef ? inData?.movementReferenceUndone : undefined,\n label: 'label.movementRef'\n },\n {\n value: inData?.movementReferenceCorrected,\n label: 'label.movementRefNew'\n },\n {\n value: !inData?.movementReferenceCorrected ? inData?.originalMovementRef : undefined,\n label: 'label.originalMovementReference'\n },\n {\n value: !(inData?.movementReferenceCorrected || inData?.originalMovementRef) ? inData?.movementRefCorrected : undefined,\n label: 'label.originalMovementReference'\n }\n ];\n };\n\n const processData = (inData) => {\n setMovementReferences(retrieveMovementReferences(inData));\n processCommonData(inData);\n\n // eslint-disable-next-line no-unused-vars\n const { batches, devices, ...restInData } = inData;\n setData((prevState) => ({\n ...prevState,\n ...restInData\n }));\n\n setDoc(inData.movementDocument);\n\n if (inData.movementDocument?.destinationDetail?.arrivalDateTime) {\n // uncommented below will pass the arrival date string to be edited\n setArrivalDate(inData.movementDocument.destinationDetail.arrivalDateTime);\n }\n setBatches(inData.batches ?? []);\n setBatchesRejected(inData.batchesRejected ?? []);\n setIndividualAnimals(inData.devices ?? []);\n setIndividualAnimalsRejected(inData.devicesRejected ?? []);\n\n const devicesTotal = get.totalIndividualAnimals(inData);\n setTotalIndividualAnimals(devicesTotal);\n\n const rejectedDevicesTotal = get.totalIndividualAnimalsRejected(inData);\n setTotalIndividualAnimalsRejected(rejectedDevicesTotal);\n\n const batchesTotal = get.totalBatchAnimals(inData);\n setTotalBatchAnimals(batchesTotal);\n\n const rejectedBatchesTotal = get.totalBatchAnimalsRejected(inData);\n setTotalBatchAnimalsRejected(rejectedBatchesTotal);\n\n const animalTotal = get.animalTotal(inData, batchesTotal + devicesTotal);\n setTotalAnimals(animalTotal);\n setTotalAnimalsRejected(rejectedBatchesTotal + rejectedDevicesTotal);\n\n setTInfo(inData.movementDocument);\n\n const processingFlags = helpers.extract.processingFlags(inData);\n if (processingFlags?.length > 0) {\n const source = axios.CancelToken.source();\n helpers.get.processingFlags(source.token, constants.option.requestType.movement, inData.speciesId)\n .then(({ data }) => {\n if (helpers.response.isValid(data, setModal)) {\n processExemptions(processingFlags, data);\n }\n });\n } else {\n storeService.session.set.movementExemptions([]);\n setProcessingFlags({ exempt: 'yes', exemptions: [] });\n }\n\n setSubmitPending(false);\n };\n\n const onClick = {\n amendMovement: () => {\n history.push(Routing.boEditMovements);\n },\n\n confirmMovement: () => {\n helpers.scrollToTop(document.getElementById('appContent'));\n setConfirmMode(true);\n },\n\n confirmMovementCancel: () => {\n setConfirmMode(false);\n setArrivalDate(null);\n },\n\n goBackSearchPage: () => {\n history.push(Routing.boSearchMovements);\n },\n\n searchByMovementReference: () => {\n helpers.redirect.searchByMovementReference(history, movementRef);\n },\n\n undoConfirmation: () => {\n setShowAmendButton(true);\n history.push(Routing.boSearchMovements);\n }\n };\n\n const getCph = (recordedByDestination, data) => {\n let cph = recordedByDestination ? (data.sourceHolding || data.fromHolding) : (data.destinationHolding || data.toHolding);\n if (holdingHelper.cph.isWelsh(cph) || holdingHelper.cph.isScottish(cph)) {\n cph = recordedByDestination ? (data.destinationHolding || data.toHolding) : (data.sourceHolding || data.fromHolding);\n }\n return cph;\n };\n\n const handleSubmission = {\n createConfirmQuery: () => {\n const recordedByDestination = helpers.option.recordBy.isByDestination(data.recordedBy);\n const isMoveToCommonLand = holdingHelper.cph.isCommonLand(data.toHolding);\n const tempData = cloneDeep(data);\n\n tempData.departureDateTime = tempData.movementDocument.departureDetail.departureDateTime;\n\n tempData.reviewBatches = helpers.extract.batches(tempData);\n tempData.reviewDevices = helpers.extract.devices(tempData);\n const totalAnimals = tempData.reviewBatches.reduce((total, batch) => total + batch.animalTotal, 0) + tempData.reviewDevices.length;\n\n tempData.removedBatches = [];\n tempData.removedDevices = [];\n tempData.transferDate = tempData.transferDate ? tempData.transferDate : tempData.movementDate;\n tempData.destinationHolding = tempData.toHolding;\n\n delete tempData.movementDate;\n\n const outData = {\n poll: config.POLLS_ENABLED,\n requestId: data.requestId,\n isAccepted: true,\n data: {\n ...tempData,\n arrivalDate,\n cph: getCph(recordedByDestination, data)\n }\n };\n\n delete outData.data.arrivalDateTime;\n\n if (recordedByDestination) {\n outData.data.totalAnimals = totalAnimals;\n delete outData.data.arrivalDate;\n } else if (isMoveToCommonLand) {\n outData.data.totalAnimals = totalAnimals;\n }\n\n delete outData.data.batches;\n delete outData.data.devices;\n return outData;\n },\n\n createRejectQuery: () => {\n const recordedByDestination = helpers.option.recordBy.isByDestination(data.recordedBy);\n const tempData = cloneDeep(data);\n\n const batches = helpers.extract.batches(tempData);\n tempData.removedBatches = batches?.length > 0 ? batches.map((batch) => ({\n animalTotal: batch.animalTotal,\n batchNumber: batch.batchNumber,\n batchMovementId: batch.batchMovementId\n })) : [];\n const devices = helpers.extract.devices(tempData);\n tempData.removedDevices = devices?.length > 0 ? devices.map((device) => ({\n tagNumber: device.tagNumber\n })) : [];\n tempData.reviewBatches = [];\n tempData.reviewDevices = [];\n\n let arrivalDateTime = helpers.date.appendTime(arrivalDate, moment(data.transferDate).hours(), moment(data.transferDate).minutes(), moment(data.transferDate).seconds());\n if (helpers.date.is.inTheFuture(arrivalDateTime)) {\n arrivalDateTime = helpers.date.appendTime(arrivalDate, moment().hours(), moment().minutes(), moment().seconds());\n }\n\n const outData = {\n poll: config.POLLS_ENABLED,\n requestId: data.requestId,\n isAccepted: false,\n data: {\n ...tempData,\n arrivalDate: arrivalDateTime,\n cph: getCph(recordedByDestination, data)\n }\n };\n\n delete outData.data.arrivalDateTime;\n\n if (recordedByDestination) {\n delete outData.data.arrivalDate;\n }\n\n delete outData.data.batches;\n delete outData.data.devices;\n return outData;\n },\n\n postQuery: (params, postType, apiCall) => {\n setAction(postType);\n setSubmitted(true);\n setSubmitPending(true);\n setPageErrors([]);\n\n bff\n .post(apiCall, params)\n .then(({ data }) => {\n if (data.errorCode && data.errorCode === 400) {\n setPollingStatus(constants.status.error);\n } else {\n handleSubmission.response(data);\n }\n storeService.session.removeAll.searchResults();\n })\n .catch((error) => {\n setPageErrors([{\n code: error?.response?.status,\n message: error?.response?.data?.errorMessage\n }]);\n })\n .finally(() => {\n setSubmitPending(false);\n });\n },\n\n response: (data) => {\n setPageErrors(bffResponse.errors(data));\n setPollingStatus(bffResponse.status(data));\n setMovementRef(bffResponse.movementRef(data));\n setRequestId(bffResponse.requestId(data));\n },\n\n submitConfirm: () => {\n handleSubmission.postQuery(\n handleSubmission.createConfirmQuery(),\n constants.postType.CONFIRM,\n '/handshake'\n );\n },\n\n submitReject: () => {\n handleSubmission.postQuery(\n handleSubmission.createRejectQuery(),\n constants.postType.REJECT,\n '/handshake'\n );\n },\n\n submitUndoDelete: () => {\n setAction(constants.postType.DELETE);\n setSubmitted(true);\n setSubmitPending(true);\n setShowConfirmModal(null);\n\n bff\n .post('/undoRequest', {\n poll: config.POLLS_ENABLED,\n requestId: data.requestId\n })\n .then(({ data }) => {\n handleSubmission.response(data);\n storeService.session.removeAll.searchResults();\n })\n .catch((error) => {\n errors.BFF(error, setModal);\n })\n .finally(() => {\n setSubmitPending(false);\n });\n },\n\n submitUndo: () => {\n setAction(constants.postType.UNDO);\n setSubmitted(true);\n setSubmitPending(true);\n setShowConfirmModal(null);\n\n bff\n .post('/undoRequest', {\n poll: config.POLLS_ENABLED,\n requestId: data.requestId\n })\n .then(({ data }) => {\n handleSubmission.response(data);\n storeService.session.removeAll.searchResults();\n })\n .catch((error) => {\n errors.BFF(error, setModal);\n })\n .finally(() => {\n setSubmitPending(false);\n });\n },\n\n submitUndoReview: () => {\n setAction(constants.postType.UNDO);\n setSubmitted(true);\n setSubmitPending(true);\n setShowConfirmModal(null);\n\n bff\n .post('/undoRequest', {\n poll: config.POLLS_ENABLED,\n requestId: data.reviewRequestId\n })\n .then(({ data }) => {\n handleSubmission.response(data);\n storeService.session.removeAll.searchResults();\n })\n .catch((error) => {\n errors.BFF(error, setModal);\n })\n .finally(() => {\n setSubmitPending(false);\n });\n }\n };\n\n const setTInfo = (inValue) => {\n if (inValue && inValue.transportDetail) {\n const tInfo = inValue.transportDetail;\n if (\n (tInfo.transportAuthNumber?.length) ||\n (tInfo.transportVehicleRegistrationNo?.length) ||\n tInfo.transporterType) {\n\n const transportedBy = helpers.lookup.transportedBy(tInfo.transporterTypeId);\n setTransportInformation({\n arrivalDateTime: (inValue.destinationDetail) ? inValue.destinationDetail.arrivalDateTime : '',\n contactPhone: (tInfo.transporter) ? tInfo.transporter.telephoneNumber : '',\n departureDateTime: (inValue.departureDetail) ? inValue.departureDetail.departureDateTime : '',\n durationOfJourney: (inValue.departureDetail) ? inValue.departureDetail.expectedDurationOfJourney : '',\n recordTransportInformation: constants.option.recordTransportInformation.yes,\n transportAuthNumber: tInfo.transporterAuthNumber,\n transportedBy,\n transporterTypeId: tInfo.transporterTypeId,\n transporterType: tInfo.transporterType,\n transporter: tInfo.transporter,\n vehicleRegistrationNumber: tInfo.transportVehicleRegistrationNo\n });\n }\n }\n };\n\n const determineButtonsToShow = () => {\n if (location?.state?.data) {\n const approved = location.state.data.approved ? location.state.data.approved : false;\n setShowAmendButton(!approved);\n }\n };\n\n const undoConfirmation = () => {\n return (\n 0 ? 'label.submissionErrorContent' : null,\n id: data.movementRef,\n label: 'label.movementRef'\n }}\n errors={pageErrors}\n label=\"boApp.label.movementReviewUndone\"\n setModal={setModal}\n status={pollingStatus}\n />\n );\n };\n\n const deleteConfirmation = () => {\n let label = null;\n if (bffStatus.isPending(pollingStatus) || bffStatus.isClaPending(pollingStatus)) {\n label = 'boApp.label.movementDeletionPending';\n } else if (bffStatus.isCompletedError(pollingStatus)) {\n label = 'boApp.label.movementDeletionWithError';\n } else {\n label = 'boApp.label.movementDeleted';\n }\n\n return (\n 0 ? 'label.submissionErrorContent' : null,\n id: String(requestId),\n label: 'label.requestId'\n }}\n errors={pageErrors}\n label={label}\n setModal={setModal}\n status={pollingStatus}\n />\n );\n };\n\n const confirmedConfirmation = () => {\n return (\n \n );\n };\n\n const rejectedConfirmation = () => {\n let label = null;\n if (bffStatus.isPending(pollingStatus) || bffStatus.isClaPending(pollingStatus)) {\n label = 'boApp.label.movementRejectPending';\n } else if (bffStatus.isCompletedError(pollingStatus)) {\n label = 'boApp.label.movementRejectWithError';\n } else {\n label = 'boApp.label.movementRejected';\n }\n\n return (\n 0 ? 'label.submissionErrorContent' : null,\n id: String(requestId),\n label: 'label.requestId'\n }}\n errors={pageErrors}\n label={label}\n setModal={setModal}\n status={pollingStatus}\n />\n );\n };\n\n React.useEffect(() => {\n const sources = [];\n const spawnToken = () => {\n sources.push(axios.CancelToken.source());\n return sources[sources.length - 1];\n };\n const saveMovementRequestToSession = async (data) => {\n if (helpers.option.requestType.isMovement(data.responseRequestType) || helpers.option.requestType.isCorrectedMovement(data.responseRequestType)) {\n await get.requestByIdAndType(setLoadPending, data, spawnToken());\n }\n };\n\n const initData = location.state?.data;\n const dataProcessingAsync = async () => {\n if (initData) {\n try {\n const initPromises = [];\n initPromises.push(get.fciWithdrawalPeriods(setLoadPending, setModal, spawnToken()));\n initPromises.push(initRequest(setLoadPending, data, setModal, spawnToken()));\n initPromises.push(determineIfMovementInBusiness(setLoadPending, data, setModal, spawnToken(), setIsInBusinessMovement));\n\n const [fciWithdrawalPeriods, initRequestData] = await Promise.all([...initPromises]);\n data.responseRequestType = initRequestData.requestTypeId;\n\n initialProcessData(data);\n if (fciWithdrawalPeriods) {\n setMetFCIWithdrawalPeriods(fciWithdrawalPeriods);\n }\n setRequestType(data.responseRequestType);\n storeService.session.remove.request();\n saveMovementRequestToSession(data).catch((error) => {\n console.error('Error during saveMovementRequestToSession:', error);\n });\n setSpeciesId(data.speciesId);\n\n await get.animalDetails(setLoadPending, data, setModal, setFciData, metFCIWithdrawalPeriods);\n if (!data.confirmed) {\n await get.rejectedAnimals(setLoadPending, data, setModal, spawnToken);\n }\n\n // use approved move API if both CPHs are English holding or request TYpe is 229\n if ((data.bothEnglishHoldings || helpers.option.movement.isCrossBorderUnsupportedRequestType(data.responseRequestType)) && (!data.cancelledMove)) {\n await get.approvedMovement(setLoadPending, data, setModal, spawnToken());\n\n if (holdingHelper.cph.isNonCph(data.fromHolding) || holdingHelper.cph.isNonCph(data.toHolding)) {\n setIsPermitMovement(true);\n if (!data.comment) {\n data.comment = await get.comment(setLoadPending, data, setModal, spawnToken());\n }\n } else if (helpers.option.requestType.isCorrectedMovement(data.responseRequestType) && helpers.messageStatus.isUnconfirmed(movementStatus)) {\n await get.originalMovementRef(setLoadPending, data, setModal, spawnToken);\n }\n } else if (data.cancelledMove && (helpers.undoRequest.isReview(data.requestTypeUndone))) {\n const cancelledReviewPromises = [];\n cancelledReviewPromises.push(get.cancelledMovementReference(setLoadPending, data, setModal, spawnToken()));\n cancelledReviewPromises.push(get.acceptedAndRejectedAnimals(setLoadPending, data, setModal, spawnToken()));\n await Promise.all([...cancelledReviewPromises]);\n }\n // 229 for paper movement with cross border movement should use approvement\n processData(data);\n setViewErrors(bffResponse.errors(initRequestData));\n setViewWarnings(bffResponse.warnings(initRequestData));\n setViewStatus(initRequestData.requestStatus && !bffStatus.isSuccess(initRequestData.requestStatus) ? initRequestData.requestStatus : null);\n } catch (error) {\n errors.BFF(error, setModal);\n }\n }\n determineButtonsToShow();\n };\n dataProcessingAsync().catch((error) => {\n console.error('Error during dataProcessingAsync:', error);\n });\n return () => {\n sources.forEach((source) => source.cancel());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n if (doc && doc.fciDetail) {\n const isAllAnimalsFciCompliant = typeof doc.fciDetail?.isAllAnimalsFciCompliant === 'boolean' || typeof doc.fciDetail?.isAllAnimalsFCICompliant === 'boolean';\n const recordFCI = doc.fciDetail && isAllAnimalsFciCompliant ? constants.option.recordFCI.yes : constants.option.recordFCI.no;\n setFciData({\n recordFCI,\n animalsSatisfy: recordFCI === constants.option.recordFCI.yes ? helpers.extract.animalsSatisfy(doc.fciDetail) : null,\n holdingRestrictions: doc.fciDetail.holdingRestrictions,\n id: doc.fciDetail?.id, // Not currently used\n nonComplianceReason: doc.fciDetail.nonCompliantReason,\n withdrawalPeriod: helpers.extract.withdrawalPeriod(doc.fciDetail, metFCIWithdrawalPeriods),\n unfitAnimals: doc.fciDetail.nonCompliantDevices\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [doc, metFCIWithdrawalPeriods]);\n\n React.useEffect(() => {\n helpers.scrollToTop(document.getElementById('appContent'));\n }, []);\n\n React.useEffect(() => {\n const source = axios.CancelToken.source();\n\n if (location.state?.data && location.state.data.isPreMovement !== undefined && location.state.data.movementPendingId !== undefined && location.state.data.movementId !== undefined) {\n setLoadPending((prevState) => ({\n ...prevState,\n movementAnimals: {\n ...prevState.movementAnimals,\n requestSent: true\n }\n }));\n\n bff\n .get('/movementAnimals', {\n cancelToken: source.token,\n params: {\n isPreMovement: location.state.data.isPreMovement,\n movementPendingId: location.state.data.movementPendingId,\n movementId: location.state.data.movementId\n }\n })\n .then((res) => {\n setData((prevState) => ({\n ...prevState,\n devices: res.data.data.devices.map((device) => ({\n tagNumber: device.tagNumber\n })),\n batches: res.data.data.batches.map((batch) => ({\n animalTotal: batch.animalTotal,\n batchNumber: batch.batchNumber,\n batchMovementId: batch.batchMovementId\n }))\n }));\n setLoadPending((prevState) => ({\n ...prevState,\n movementAnimals: {\n ...prevState.movementAnimals,\n pending: false\n }\n }));\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n }\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const displayErrorOrWarnings = (title, listOfStatus, bottomBorder) => {\n const newList = helpers.error.consolidate(listOfStatus);\n return (ready &&\n
    \n
    \n {title}\n
    \n {newList.map((status, index) => (\n
    \n {status.code + ' - ' + helpers.error.mapping(status.message)}\n
    \n ))}\n
    \n );\n };\n\n const buttons = {\n confirmButtonWithChecked: () => (\n item.requestSent && item.pending) || !arrivalDate || arrivalDateError !== ''}\n id=\"submitConfirmMovementButton\"\n label=\"button.submitConfirmation\"\n onClick={handleSubmission.submitConfirm}\n />\n ),\n\n confirmButton: () => (\n item.requestSent && item.pending)}\n id=\"confirmMovementButton\"\n label=\"button.confirmMovement\"\n onClick={onClick.confirmMovement}\n />\n ),\n\n undoButton: () => (\n item.requestSent && item.pending)}\n id=\"undoReviewButton\"\n label=\"button.undoReview\"\n onClick={() => setShowConfirmModal({\n action: handleSubmission.submitUndo,\n label: 'boApp.label.confirmUndoReview'\n })}\n />\n ),\n\n undoReviewButton: () => (\n item.requestSent && item.pending)}\n id=\"undoReviewButton\"\n label=\"button.undoReview\"\n onClick={() => setShowConfirmModal({\n action: handleSubmission.submitUndoReview,\n label: 'boApp.label.confirmUndoReview'\n })}\n />\n ),\n\n amendButton: () => (\n item.requestSent && item.pending)}\n id=\"amendMovementButton\"\n label=\"button.amendMovement\"\n onClick={onClick.amendMovement}\n />\n ),\n\n deleteButton: () => (\n item.requestSent && item.pending)}\n id=\"deleteButton\"\n label=\"button.deleteMovement\"\n name=\"deleteButton\"\n onClick={() => setShowConfirmModal({\n action: handleSubmission.submitUndoDelete,\n label: data.confirmed ? 'boApp.label.confirmDeleteMovement' : 'boApp.label.confirmDeleteUnconfirmedMovement'\n })}\n />\n ),\n\n cancelButton: () => (\n \n ),\n\n backSearchButton: () => (\n \n ),\n\n rejectButton: () => (\n item.requestSent && item.pending)}\n id=\"rejectReviewButton\"\n label=\"button.rejectMovementReview\"\n name=\"rejectReviewButton\"\n onClick={() => setShowConfirmModal({\n action: handleSubmission.submitReject,\n label: 'boApp.label.confirmRejectMovementReview'\n })}\n />\n )\n };\n\n const isMovementHandshake = helpers.option.requestType.isMovementHandshake(requestType);\n const crossBorderMove = data.crossBorderMove !== null && data.crossBorderMove !== undefined ? data.crossBorderMove : false;\n const moreThan1Record = data.confirmed ?? false;\n const isCancelledMove = data.cancelledMove ?? false;\n const isReviewedAndRejected = data.reviewStatus === 'ReviewedAndRejected';\n const isXBReportMove = data.userHolding && holdingHelper.cph.isNotEnglish(data.userHolding);\n const isCPHUnknown = holdingHelper.cph.isUnknownCph(data.fromHolding) || holdingHelper.cph.isUnknownCph(data.toHolding);\n // As crossBorderMove in line 1516 is not returning Value hence implementated below condition for US 93422\n const isCrossBorderMove = location?.state?.data?.movementStatus === 'XB';\n const isReportEnglish = data.userHolding !== null && data.userHolding !== undefined ? (data.userHolding && holdingHelper.cph.isEnglish(data.userHolding))\n : data.sourceHolding !== null && data.sourceHolding !== undefined ? (data.sourceHolding && holdingHelper.cph.isEnglish(data.sourceHolding)) : false;\n\n let movementStatus = location?.state?.data?.movementStatus ? location.state.data.movementStatus : constants.option.messageStatus.default;\n // unconfirmed movement and correct movement type (i.e. amended movement)\n if (helpers.option.requestType.isCorrectedMovement(requestType) && helpers.messageStatus.isUnconfirmed(movementStatus)) {\n movementStatus = constants.option.messageStatus.amended;\n } else if (isReviewedAndRejected) {\n movementStatus = constants.option.messageStatus.rejectedMovementReview;\n }\n\n return (\n <>\n {ready &&\n <>\n {(!submitted ||\n (\n submitted &&\n !submitPending &&\n pageErrors?.length > 0\n )\n ) &&\n <>\n {submitted && !submitPending && pageErrors?.length > 0 && // Submission error\n \n }\n\n {showConfirmModal &&\n setShowConfirmModal(null)}\n modalConfirm={showConfirmModal.action}\n modalMessage={showConfirmModal.label}\n modalTitle=\"button.confirm\"\n />\n }\n {movementRef && requestType &&\n \n }\n {!isEmpty(data) &&\n
    \n \n\n {movementReferences?.map((movementReference, key) => (\n movementReference.value &&\n
    \n
    {t(movementReference.label)}
    \n
    {movementReference.value}
    \n
    \n ))\n }\n\n {(arrivalDate || (data.movementDocument?.departureDetail?.departureDateTime)) &&\n \n }\n\n {isPermitMovement\n ? \n : \n }\n\n {processingFlags && processingFlags.exemptions && processingFlags.exemptions?.length > 0 &&\n <>\n \n\n \n \n }\n\n \n\n \n\n \n \n\n \n \n\n {(viewErrors?.length > 0 || viewWarnings?.length > 0) &&\n <>\n \n {viewErrors?.length > 0 && displayErrorOrWarnings(t('boApp.sectionTitles.errors'), viewErrors, viewWarnings?.length === 0)}\n {viewWarnings?.length > 0 && displayErrorOrWarnings(t('boApp.sectionTitles.warnings'), viewWarnings, false)}\n \n }\n\n {!isEmpty(data) &&\n
    \n
    \n {!confirmMode &&\n <>\n {(\n (\n crossBorderMove &&\n !isCancelledMove\n ) ||\n (\n !isPermitMovement &&\n !crossBorderMove &&\n !isMovementHandshake &&\n !moreThan1Record &&\n !isCancelledMove &&\n !isReviewedAndRejected &&\n !isInBusinessMovement &&\n !isCPHUnknown &&\n !(isCrossBorderMove && isReportEnglish)\n )\n ) &&\n buttons.confirmButton()\n }\n {isMovementHandshake && !crossBorderMove && !isCancelledMove && buttons.undoButton()}\n\n {isReviewedAndRejected && buttons.undoReviewButton()}\n\n {(\n (\n (isPermitMovement || isInBusinessMovement) &&\n !isCancelledMove\n ) ||\n (\n !crossBorderMove &&\n !isMovementHandshake &&\n !moreThan1Record &&\n !isCancelledMove\n ) ||\n (\n !isPermitMovement &&\n !crossBorderMove &&\n !isMovementHandshake &&\n !moreThan1Record &&\n !isCancelledMove &&\n !isReviewedAndRejected &&\n !isInBusinessMovement &&\n showAmendButton\n )\n ) &&\n !isXBReportMove &&\n !isReviewedAndRejected &&\n buttons.amendButton()\n }\n \n }\n
    \n\n
    \n {confirmMode\n ? <>\n {buttons.confirmButtonWithChecked()}\n {buttons.cancelButton()}\n \n : <>\n {(isPermitMovement || isInBusinessMovement) && !isCancelledMove && !isXBReportMove && buttons.deleteButton()}\n {crossBorderMove && !isCancelledMove && buttons.rejectButton()}\n {!isPermitMovement && !crossBorderMove && !isMovementHandshake && !moreThan1Record && !isCancelledMove && !isReviewedAndRejected && !isInBusinessMovement && !isXBReportMove && buttons.deleteButton()}\n {buttons.backSearchButton()}\n \n }\n
    \n
    \n }\n
    \n }\n \n }\n\n {submitted && submitPending &&\n \n }\n\n {submitted && !submitPending && pageErrors?.length === 0 &&\n <>\n {helpers.postType.isConfirm(action) && confirmedConfirmation()}\n {helpers.postType.isDelete(action) && deleteConfirmation()}\n {helpers.postType.isReject(action) && rejectedConfirmation()}\n {helpers.postType.isUndo(action) && undoConfirmation()}\n \n }\n \n }\n \n );\n};\n\nBoViewMovement.propTypes = {\n location: PropTypes.object,\n setModal: PropTypes.func.isRequired\n};\n\nexport default BoViewMovement;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport { bffStatus } from 'services/bff';\nimport axios from 'axios';\nimport classes from 'backOffice/viewRequestId/viewRequestId.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport AddressSummary from 'backOfficeComponents/summary/addressSummary/addressSummary';\nimport AnimalSummary from 'components/animalSummary/animalSummary';\nimport Button from 'backOfficeComponents/base/button/button';\nimport DateSummary from 'components/summary/dateSummary/dateSummary';\nimport ExemptionSummary from 'backOfficeComponents/summary/exemptionSummary/exemptionSummary';\nimport FciSummary from 'backOfficeComponents/summary/fciSummary/fciSummary';\nimport PageTitle from 'backOfficeComponents/base/pageTitle/pageTitle';\nimport SectionTitleBar from 'backOfficeComponents/base/sectionTitleBar/sectionTitleBar';\nimport TransportSummary from 'backOfficeComponents/summary/transportSummary/transportSummary';\nimport moment from 'moment/moment';\nimport he from 'he';\nconst sprintf = require('util').format;\n\nconst BoViewRequestId = ({\n location,\n setModal\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const [processingFlags, setProcessingFlags] = React.useState([]);\n const [metFCIWithdrawalPeriods, setMetFCIWithdrawalPeriods] = React.useState([]);\n const [eventDate, setEventDate] = React.useState(null);\n const [hideAnimalDetails, setHideAnimalDetails] = React.useState(false);\n const [batches, setBatches] = React.useState([]);\n const [individualAnimals, setIndividualAnimals] = React.useState([]);\n const [extraData, setExtraData] = React.useState({});\n\n const data = location.state.data;\n const dataContent = data.content ?? data;\n const requestStatus = !bffStatus.isSuccess(data.requestStatus) ? data.requestStatus : null;\n const isMovement = (\n (\n helpers.option.requestType.isMovement(data.requestTypeId) ||\n helpers.option.requestType.isCorrectedMovement(data.requestTypeId) ||\n helpers.option.requestType.isPaperMovementAdd(data.requestTypeId) ||\n helpers.option.requestType.isPaperMovementEdit(data.requestTypeId)\n ) && (\n dataContent.movementDocument ||\n dataContent.reviewMovement\n )\n ) ||\n helpers.option.requestType.isMovementHandshake(data.requestTypeId);\n\n let sourceHolding;\n let destinationHolding;\n let departureDate;\n let arrivalDate;\n let totalBatchAnimals;\n let totalBatchAnimalsRejected;\n let totalIndividualAnimals;\n let totalIndividualAnimalsRejected;\n let recordFCI;\n let isPermitMove = false;\n\n if (isMovement) {\n sourceHolding = dataContent.sourceHolding ?? (dataContent.movementDocument?.departureDetail?.holding ?? dataContent.holding);\n destinationHolding = dataContent.destinationHolding ?? (dataContent.movementDocument?.destinationDetail?.holding ?? null);\n\n departureDate = dataContent.movementDocument?.departureDetail?.departureDateTime ?? (dataContent.movementDocument?.departureDetail?.departureDate ? helpers.date.toDate(dataContent.movementDocument.departureDetail.departureDate.year, dataContent.movementDocument.departureDetail.departureDate.month, dataContent.movementDocument.departureDetail.departureDate.day) : (dataContent.reviewMovement?.departureDate ?? null));\n arrivalDate = dataContent.movementDocument?.destinationDetail?.arrivalDateTime ?? (dataContent.movementDocument?.destinationDetail?.arrivalDate ? helpers.date.toDate(dataContent.movementDocument.destinationDetail.arrivalDate.year, dataContent.movementDocument.destinationDetail.arrivalDate.month, dataContent.movementDocument.destinationDetail.arrivalDate.day) : (dataContent.reviewMovement?.arrivalDate ?? null));\n\n if (sourceHolding === destinationHolding || sourceHolding === constants.cph.none || destinationHolding === constants.cph.none) {\n isPermitMove = true;\n destinationHolding = 'movements.permitMove.title';\n }\n }\n\n if (helpers.option.requestType.isMovement(data.requestTypeId) || helpers.option.requestType.isCorrectedMovement(data.requestTypeId) || helpers.option.requestType.isPaperMovementAdd(data.requestTypeId)) {\n const isAllAnimalsFciCompliant = typeof dataContent.movementDocument?.fciDetail?.isAllAnimalsFciCompliant === 'boolean' || typeof dataContent.movementDocument?.fciDetail?.isAllAnimalsFCICompliant === 'boolean';\n\n totalBatchAnimals = dataContent.movementGroups?.[0]?.batches?.reduce((total, batch) => total + parseInt(batch.animalTotal), 0) || 0;\n\n totalIndividualAnimals = dataContent.movementGroups?.[0]?.devices?.length || 0;\n recordFCI = dataContent.movementDocument?.fciDetail && isAllAnimalsFciCompliant ? constants.option.recordFCI.yes : constants.option.recordFCI.no;\n } else if (helpers.option.requestType.isMovementHandshake(data.requestTypeId) && !data.isFullUndone) {\n totalBatchAnimals = dataContent.reviewMovement.acceptedBatches?.reduce((total, batch) => total + parseInt(batch.animalTotal), 0) || 0;\n totalBatchAnimalsRejected = dataContent.reviewMovement.rejectedBatches?.reduce((total, batch) => total + parseInt(batch.animalTotal), 0) || 0;\n totalIndividualAnimals = dataContent.reviewMovement.acceptedDevices?.length || 0;\n totalIndividualAnimalsRejected = dataContent.reviewMovement.rejectedDevices?.length || 0;\n }\n\n const get = {\n tagNumber: (string) => {\n return string && string.tagNumber ? string.tagNumber : t('label.notSpecified');\n }\n };\n\n const createBirthList = (applicationItems) => {\n if (applicationItems) {\n return applicationItems.filter((item) => item).map((item) => ({\n tagNumber: get.tagNumber(item.device),\n dob: helpers.date.formatJSDate(item.dateOfBirthRange_Start, helpers.date.is.same(item.dateOfBirthRange_Start, item.dateOfBirthRange_End) ? 'DD/MM/YYYY' : 'YY'),\n breed: item.breed ? item.breed : t('label.notSpecified'),\n genderName: item.gender ? t('recentDetails.' + item.gender) : t('label.notSpecified'),\n geneticDamId: get.tagNumber(item.geneticDam),\n damId: get.tagNumber(item.birthDam),\n sireId: get.tagNumber(item.sire)\n }));\n }\n\n return [];\n };\n\n const getRequestTypeLabel = () => {\n\n const requestTypeLabels = {\n 4: 'label.movement',\n 10: 'label.tagApplication',\n 14: 'label.replacementTags',\n 15: 'label.amendedMovement',\n 31: 'label.death',\n 141: 'label.annualInventoryCreate',\n 142: 'label.annualInventoryDelete',\n 145: 'label.reviewedMovement',\n 165: 'label.birth',\n 229: 'label.paperMovement',\n 238: 'label.paperMovementEdit',\n 240: 'label.adjacentMovementCreate',\n 241: 'label.holdingProductionTypeCreate',\n 242: 'label.holdingProductionTypeDelete',\n 243: 'label.adjacentMovementDelete',\n 244: 'label.adjacentMovementEdit',\n 246: 'label.animalsAddedToHolding'\n };\n\n let cancelled;\n let followingAnAmendment;\n\n if (data.isFullUndone && !helpers.option.requestType.isUndo(data.requestTypeId)) {\n cancelled = t('label.status-Cancelled') + ' ';\n }\n\n if (dataContent.movementReferenceCorrected) {\n followingAnAmendment = ' ' + t('label.followingAnAmendment');\n }\n\n const sourceHolding = dataContent.sourceHolding ?? (dataContent.movementDocument?.departureDetail?.holding ?? dataContent.holding);\n const destinationHolding = dataContent.destinationHolding ?? (dataContent.movementDocument?.destinationDetail?.holding ?? null);\n\n if (isPermitMove) {\n const requestTypeLabel = t('label.permitMove').toLowerCase();\n return cancelled ? cancelled + requestTypeLabel : (requestTypeLabel.charAt(0).toUpperCase() + requestTypeLabel.slice(1));\n }\n\n if (destinationHolding?.toUpperCase() === constants.cph.unknown) {\n return cancelled ? cancelled + t('menu.missing').toLowerCase() : t('menu.missing');\n }\n\n if (sourceHolding?.toUpperCase() === constants.cph.unknown) {\n return cancelled ? cancelled + t('menu.found').toLowerCase() : t('menu.found');\n }\n\n if (Object.keys(requestTypeLabels).includes(data.requestTypeId.toString())) {\n const requestTypeLabel = dataContent.movementReferenceCorrected\n ? t(requestTypeLabels[4]).toLowerCase() + followingAnAmendment\n : t(requestTypeLabels[data.requestTypeId]).toLowerCase();\n return cancelled ? cancelled + requestTypeLabel : (requestTypeLabel.charAt(0).toUpperCase() + requestTypeLabel.slice(1));\n }\n\n const requestTypeName = storeService.session.get.requestTypes().find((item) => item.id === data.requestTypeId);\n const requestTypeLabel = requestTypeName ? requestTypeName.name.toLowerCase() : '';\n\n return cancelled ? cancelled + requestTypeLabel : (requestTypeLabel.charAt(0).toUpperCase() + requestTypeLabel.slice(1));\n };\n\n const navigateToReqId = (reqId) => {\n storeService.session.set.tableFiltersRequestId({\n requestId: reqId,\n newRequest: true\n });\n history.push(Routing.boSearchRequestId);\n };\n\n const requestHasData = () => {\n if (isMovement) {\n return (\n Boolean(\n data.receivedDate ||\n dataContent.movementDocument ||\n dataContent.movementReferenceUndone ||\n dataContent.movementReferenceCorrected ||\n dataContent.sourceHolding ||\n dataContent.destinationHolding ||\n dataContent.movementGroups?.[0]?.batches.length > 0 ||\n dataContent.movementGroups?.[0]?.devices.length > 0 ||\n dataContent.reviewMovement?.departureDate ||\n dataContent.reviewMovement?.arrivalDate ||\n dataContent.reviewMovement?.rejectedBatches.length > 0 ||\n dataContent.reviewMovement?.rejectedDevices.length > 0\n )\n );\n }\n\n if (\n helpers.option.requestType.isTagApplication(data.requestTypeId) ||\n helpers.option.requestType.isTagReplacement(data.requestTypeId) ||\n helpers.option.requestType.isBirth(data.requestTypeId)\n ) {\n return (\n Boolean(\n eventDate ||\n dataContent.holding ||\n dataContent.comment ||\n extraData.dob ||\n extraData.breed ||\n extraData.gender ||\n extraData.genotype ||\n batches?.length > 0 ||\n individualAnimals?.length > 0\n )\n );\n }\n\n if (helpers.option.requestType.isDeath(data.requestTypeId)) {\n return (\n Boolean(\n eventDate ||\n dataContent.disposalDate ||\n dataContent.holding ||\n dataContent.disposalHolding ||\n dataContent.comment ||\n batches?.length > 0 ||\n individualAnimals?.length > 0\n )\n );\n }\n\n if (helpers.option.requestType.isAnimalsAdded(data.requestTypeId)) {\n return (\n Boolean(\n dataContent.dateAnimalsWereLocated ||\n dataContent.holding ||\n individualAnimals?.length > 0\n )\n );\n }\n\n if (\n helpers.option.requestType.isAdjacentMovement(data.requestTypeId) ||\n helpers.option.requestType.isAnnualInventoryCreate(data.requestTypeId) ||\n helpers.option.requestType.isAnnualInventoryDelete(data.requestTypeId) ||\n helpers.option.requestType.isHoldingProductionTypeCreate(data.requestTypeId) ||\n helpers.option.requestType.isHoldingProductionTypeDelete(data.requestTypeId)\n ) {\n return Boolean(dataContent.requestDate);\n }\n\n return false;\n };\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n if (\n !data.isFullUndone &&\n dataContent.species &&\n (\n helpers.option.requestType.isMovement(data.requestTypeId) ||\n helpers.option.requestType.isCorrectedMovement(data.requestTypeId) ||\n helpers.option.requestType.isMovementHandshake(data.requestTypeId) ||\n helpers.option.requestType.isPaperMovementAdd(data.requestTypeId) ||\n helpers.option.requestType.isPaperMovementEdit(data.requestTypeId)\n )\n ) {\n helpers.get.processingFlags(source.token, constants.option.requestType.movement, helpers.species.nameToId(dataContent.species))\n .then((r) => {\n const processingFlags = dataContent.processingFlags ?? data.processingFlags;\n\n if (helpers.response.isValid(r.data, setModal)) {\n setProcessingFlags(processingFlags.map((item) => ({\n id: item.processingFlagId,\n label: helpers.extract.processingLabel(r.data, item.processingFlagId),\n name: helpers.extract.processingName(r.data, item.processingFlagId),\n value: true\n })));\n }\n });\n\n helpers.get.metFciWithdrawalPeriods(source.token)\n .then((r) => {\n if (helpers.response.isValid(r.data, setModal)) {\n setMetFCIWithdrawalPeriods(r.data);\n }\n });\n }\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n let tempBatches = [];\n let tempIndividualAnimals = [];\n let dob;\n let isSheepOrGoats;\n\n switch (data.requestTypeId) {\n case constants.option.requestType.animalsAdded:\n setEventDate(dataContent.dateAnimalsWereLocated);\n tempIndividualAnimals = helpers.animal.addDobAndAgeForDisplay(\n dataContent?.devicesWithDetail?.map((animal) => ({\n ...animal,\n tagNumber: animal.device.tagNumber,\n breedName: animal.breed,\n genderName: animal.gender\n }))\n );\n setIndividualAnimals(tempIndividualAnimals);\n break;\n\n case constants.option.requestType.birth:\n setEventDate(dataContent.dateOfApplication);\n tempBatches = [];\n tempIndividualAnimals = createBirthList(dataContent.applicationItems);\n\n setBatches(tempBatches);\n setIndividualAnimals(tempIndividualAnimals.map((item) => ({\n ...item,\n genotype: dataContent.genotype\n })));\n break;\n\n case constants.option.requestType.death:\n setEventDate(dataContent.killDate);\n if (dataContent.deathofUntaggedAnimals && dataContent.deathofUntaggedAnimals.animalTotal > 0) {\n setHideAnimalDetails(true);\n } else {\n tempBatches = dataContent.batchDetails;\n }\n tempIndividualAnimals = dataContent.killedDevices;\n\n setBatches(tempBatches);\n setIndividualAnimals(tempIndividualAnimals);\n break;\n\n case constants.option.requestType.tagApplication:\n isSheepOrGoats = dataContent?.species?.toLowerCase() === constants.species.animalTypes.SHEEP || dataContent?.species?.toLowerCase() === constants.species.animalTypes.GOATS;\n tempBatches = dataContent?.batches;\n tempIndividualAnimals = dataContent?.devices;\n dob = isSheepOrGoats && dataContent?.dateOfBirthRangeStart ? moment(dataContent.dateOfBirthRangeStart).year() : (dataContent?.dateOfBirthRangeStart ? helpers.date.format(dataContent.dateOfBirthRangeStart) : null);\n\n setEventDate(dataContent?.dateOfApplication);\n setExtraData({\n dob,\n breed: dataContent?.breed,\n gender: dataContent?.gender,\n genotype: dataContent?.genotype\n });\n\n setBatches(tempBatches);\n setIndividualAnimals(tempIndividualAnimals);\n break;\n\n case constants.option.requestType.tagReplacement:\n setEventDate(dataContent.replacementDate);\n dataContent.replaceItems.forEach((item) => {\n if (item.batchReplacing) {\n tempBatches.push({\n animalTotal: item.batchReplacing.animalTotal,\n oldBatchNumber: item.batchReplaced ? item.batchReplaced.batchNumber : t('label.unknown'),\n replacedBy: t('tagging.replacement.replacedBy'),\n newBatchNumber: item.batchReplacing.batchNumber\n });\n } else if (item.deviceReplacing) {\n if (item.batchReplaced) {\n tempIndividualAnimals.push({\n oldTagNumber: item.batchReplaced.batchNumber,\n newTagNumber: item.deviceReplacing.tagNumber\n });\n } else if (item.deviceReplaced) {\n tempIndividualAnimals.push({\n oldTagNumber: item.deviceReplaced.tagNumber,\n newTagNumber: item.deviceReplacing.tagNumber\n });\n } else {\n tempIndividualAnimals.push({\n oldTagNumber: constants.unknown,\n newTagNumber: item.deviceReplacing.tagNumber\n });\n }\n }\n\n setBatches(tempBatches);\n setIndividualAnimals(tempIndividualAnimals);\n });\n break;\n\n default:\n break;\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ready && data &&\n <>\n \n\n
    \n {(data.isFullUndone || !requestHasData()) &&\n <>\n {data.isFullUndone &&\n
    \n
    {t('label.isUndone')}
    \n
    {t('label.yes')}
    \n
    \n }\n\n {data.requestDate && !requestHasData() &&\n
    \n
    {t('label.reportedDate')}
    \n
    {helpers.date.format(data.requestDate)}
    \n
    \n }\n\n {data.userName && !requestHasData() &&\n
    \n
    {t('label.username')}
    \n
    {data.userName}
    \n
    \n }\n\n {data.undoRequestId &&\n
    \n
    {data.errors.length === 0 ? t('label.undoneRequestId') : t('label.unsuccessfulUndoRequestId')}
    \n
    \n navigateToReqId(data.undoRequestId)}\n />\n
    \n
    \n }\n \n }\n\n {requestHasData() &&\n <>\n {isMovement &&\n <>\n {(!sourceHolding || !destinationHolding || !departureDate) &&\n
    {t('label.originalPaperMovementDeleted')}
    \n }\n\n \n\n {data.requestDate &&\n
    \n
    {t('label.reportedDate')}
    \n
    {helpers.date.format(data.requestDate)}
    \n
    \n }\n\n {data.userName &&\n
    \n
    {t('label.username')}
    \n
    {data.userName}
    \n
    \n }\n\n {data.receivedDate && !helpers.option.requestType.isMovementHandshake(data.requestTypeId) &&\n
    \n
    {t('label.documentReceivedByBackOffice')}
    \n
    {helpers.date.format(data.receivedDate)}
    \n
    \n }\n\n {dataContent.movementDocument?.movementDocumentRef &&\n
    \n
    {t('label.movementRef')}
    \n
    {dataContent.movementDocument.movementDocumentRef}
    \n
    \n }\n\n {dataContent.movementReferenceUndone &&\n
    \n
    {t('label.originalMovementReference')}
    \n
    {dataContent.movementReferenceUndone}
    \n
    \n }\n\n {dataContent.movementReferenceCorrected &&\n
    \n
    {t('label.movementRefNew')}
    \n
    {dataContent.movementReferenceCorrected}
    \n
    \n }\n\n {(departureDate || arrivalDate) &&\n \n }\n\n {(sourceHolding || destinationHolding) &&\n \n }\n\n {!helpers.option.requestType.isMovementHandshake(data.requestTypeId) &&\n <>\n \n 0 ? constants.option.exemption.yes : constants.option.exemption.no,\n exemptions: processingFlags\n }}\n label=\"movementDetails.searchResults.typeExemptions\"\n />\n \n }\n\n {(dataContent.movementGroups?.[0]?.batches || dataContent.movementGroups?.[0]?.devices || dataContent.reviewMovement.acceptedBatches || dataContent.reviewMovement.acceptedDevices) &&\n <>\n \n \n \n }\n\n {helpers.option.requestType.isMovementHandshake(data.requestTypeId) &&\n (dataContent.reviewMovement?.rejectedBatches || dataContent.reviewMovement?.rejectedDevices) &&\n \n }\n\n {!helpers.option.requestType.isMovementHandshake(data.requestTypeId) &&\n <>\n \n \n \n }\n\n {dataContent.movementDocument?.transportDetail &&\n <>\n \n \n \n }\n \n }\n\n {(\n helpers.option.requestType.isTagApplication(data.requestTypeId) ||\n helpers.option.requestType.isTagReplacement(data.requestTypeId) ||\n helpers.option.requestType.isBirth(data.requestTypeId) ||\n helpers.option.requestType.isDeath(data.requestTypeId) ||\n helpers.option.requestType.isAnimalsAdded(data.requestTypeId)\n ) &&\n <>\n \n\n {data.requestDate &&\n
    \n
    {t('label.reportedDate')}
    \n
    {helpers.date.format(data.requestDate)}
    \n
    \n }\n\n {data.userName &&\n
    \n
    {t('label.username')}
    \n
    {data.userName}
    \n
    \n }\n\n {eventDate &&\n \n }\n\n {dataContent.holding &&\n \n }\n\n {dataContent.disposalHolding &&\n \n }\n\n {dataContent.approvedDisposalRoute &&\n
    \n
    {t('label.carcassLocation')}
    \n
    {dataContent.approvedDisposalRoute}
    \n
    \n }\n\n {dataContent.comment &&\n
    \n
    {t('label.comment')}
    \n
    {dataContent.comment}
    \n
    \n }\n\n {(batches?.length > 0 || individualAnimals?.length > 0) &&\n <>\n \n {!helpers.option.requestType.isBirth(data.requestTypeId) && extraData.dob &&\n
    \n
    {extraData.dob.toString().length === 4 ? t('label.yearOfBirth') : t('recentDetails.dateOfBirth')}
    \n
    {extraData.dob}
    \n
    \n }\n {!helpers.option.requestType.isBirth(data.requestTypeId) && extraData.breed &&\n
    \n
    {t('recentDetails.breed')}
    \n
    {extraData.breed}
    \n
    \n }\n {!helpers.option.requestType.isBirth(data.requestTypeId) && extraData.gender &&\n
    \n
    {t('recentDetails.gender')}
    \n
    {t('recentDetails.' + extraData.gender)}
    \n
    \n }\n {!helpers.option.requestType.isBirth(data.requestTypeId) && extraData.genotype &&\n
    \n
    {t('recentDetails.genotype')}
    \n
    {extraData?.genotype ? he.decode(extraData.genotype) : ''}
    \n
    \n }\n \n \n }\n \n }\n\n {(\n helpers.option.requestType.isAdjacentMovement(data.requestTypeId) ||\n helpers.option.requestType.isAnnualInventoryCreate(data.requestTypeId) ||\n helpers.option.requestType.isAnnualInventoryDelete(data.requestTypeId) ||\n helpers.option.requestType.isHoldingProductionTypeCreate(data.requestTypeId) ||\n helpers.option.requestType.isHoldingProductionTypeDelete(data.requestTypeId)\n ) &&\n <>\n
    \n
    {t(helpers.option.requestType.isAnnualInventoryDelete(data.requestTypeId) || helpers.option.requestType.isHoldingProductionTypeDelete(data.requestTypeId) ? 'label.dateDeleted' : 'label.reportedDate')}
    \n
    {helpers.date.format(data.requestDate)}
    \n
    \n
    \n
    {t('label.username')}
    \n
    {data.userName}
    \n
    \n \n }\n \n }\n\n {(data.errors?.length > 0 || data.warnings?.length > 0) &&\n <>\n \n\n {data.errors?.length > 0 &&\n
    0 ? classes.marginBottom : null].join(' ').trim()}>\n
    {t('label.errors')}
    \n {helpers.error.consolidate(data.errors).map((itemValue, itemKey) => (\n
    {itemValue.code + ' - ' + itemValue.message}
    )\n )}\n
    \n }\n\n {data.warnings?.length > 0 &&\n
    \n
    {t('label.warnings')}
    \n {helpers.error.consolidate(data.warnings).map((itemValue, itemKey) => (\n
    {itemValue.code + ' - ' + itemValue.message}
    )\n )}\n
    \n }\n \n }\n\n
    \n
    \n
    \n history.push(Routing.boSearchRequestId)}\n />\n
    \n
    \n
    \n \n }\n \n );\n};\n\nBoViewRequestId.propTypes = {\n location: PropTypes.object,\n setModal: PropTypes.func.isRequired\n};\n\nexport default BoViewRequestId;\n","import React from 'react';\nimport bff, { isCancel } from 'services/bff';\nimport Button from 'components/base/button/button';\n\nconst ConnectionCheck = () => {\n const [pending, setPending] = React.useState(false);\n const [connectionOK, setConnectionOK] = React.useState(null);\n\n const checkConnection = () => {\n setPending(true);\n setConnectionOK(null);\n\n bff\n .get('/requestTypes')\n .then(() => {\n setPending(false);\n setConnectionOK(true);\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setPending(false);\n setConnectionOK(false);\n }\n });\n };\n\n return (\n <>\n \n {connectionOK === true &&\n

    Connection OK

    \n }\n {connectionOK === false &&\n

    Connection OK - 401 Unauthorised

    \n }\n \n );\n};\nexport default ConnectionCheck;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { isCancel } from 'services/bff';\nimport classes from 'components/addBatch/addBatch.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Button from 'components/base/button/button';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport Hint from 'components/base/hint/hint';\nimport Legend from 'components/base/legend/legend';\nimport NumberEntry from 'components/base/numberEntry/numberEntry';\nimport TextEntry from 'components/base/textEntry/textEntry';\n\nconst AddBatch = ({\n animalTotalLabel,\n batchHeader,\n batchList,\n batchNumberOptional,\n buttonLabel,\n isTagReplacement,\n pending,\n resetForm,\n setBatchTotal,\n setModal,\n setPending,\n species,\n updateBatchList\n}) => {\n const { ready, t } = useTranslation();\n\n const speciesLabel = t('label.batchNumber' + species.id);\n const replacementErrorLabel = 'movements.animal-selection.batch.warning-desc' + species.id;\n const batchOptionalLabel = 'label.batchOptional' + species.id;\n\n const [totalAnimalsError, setTotalAnimalsError] = useState('');\n const [batch, setBatch] = useState({\n batchNumber: '',\n animalTotal: ''\n });\n\n const validate = {\n totalAnimals: (input) => {\n const regex = /^[0-9]*$/;\n\n if (!regex.test(input)) {\n setTotalAnimalsError('movements.animal-selection.batch.input-field-two-error1');\n return false;\n }\n\n if (parseInt(input) > config.MAX_TOTAL_ANIMAL_RANGE) {\n setTotalAnimalsError('movements.animal-selection.batch.input-field-two-error2');\n return false;\n }\n\n return true;\n }\n };\n\n const handleChanges = {\n batchNumber: (input) => {\n setBatch({\n ...batch,\n batchNumber: input.trim()\n });\n },\n\n totalAnimals: (input) => {\n if (validate.totalAnimals(input)) {\n setTotalAnimalsError('');\n setBatch({\n ...batch,\n animalTotal: parseInt(input)\n });\n }\n }\n };\n\n const submitBatch = () => {\n if (batch.batchNumber) {\n setPending(true);\n\n helpers.validate.tagNumbers(species.name, [batch.batchNumber.trim()])\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setPending)) {\n const validatedBatchNumber = res.data.batchNumbers.find((item) => item.originalBatchNumber === batch.batchNumber.trim());\n\n setPending(false);\n\n updateBatchList([\n ...batchList,\n {\n animalTotal: batch.animalTotal,\n batchNumber: validatedBatchNumber.formattedBatchNumber ? validatedBatchNumber.formattedBatchNumber : validatedBatchNumber.originalBatchNumber,\n valid: validatedBatchNumber.state\n }\n ]);\n\n setBatch({\n batchNumber: '',\n animalTotal: ''\n });\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setPending(false);\n errors.BFF(error, setModal);\n }\n });\n } else {\n updateBatchList([\n ...batchList,\n {\n animalTotal: batch.animalTotal,\n batchNumber: '',\n valid: constants.tag.valid\n }\n ]);\n\n setBatch({\n batchNumber: '',\n animalTotal: ''\n });\n }\n };\n\n const isDisabled = () => {\n if (batchNumberOptional) {\n return (\n !batch.animalTotal ||\n totalAnimalsError ||\n pending\n );\n }\n\n return (\n !batch.batchNumber ||\n !batch.animalTotal ||\n totalAnimalsError ||\n pending\n );\n };\n\n useEffect(() => {\n let totalNumberOfAnimals = 0;\n batchList.forEach((batch) => {\n if (batch.animalTotal) {\n totalNumberOfAnimals += parseInt(batch.animalTotal);\n }\n });\n\n // Not all calls to this component pass down a setBatchTotal prop so checking it exists before calling it\n if (typeof setBatchTotal === 'function') {\n setBatchTotal(totalNumberOfAnimals);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [setBatchTotal, batchList]);\n\n useEffect(() => {\n setBatch({\n batchNumber: '',\n animalTotal: ''\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resetForm]);\n\n return (\n <>\n {ready &&\n
    \n \n\n {batch.batchNumber?.length > 0 &&\n batch.animalTotal?.length > 0 &&\n !isTagReplacement &&\n \n }\n\n {batchNumberOptional &&\n \n }\n
    \n
    \n handleChanges.totalAnimals(event.target.value)}\n value={batch.animalTotal}\n />\n
    \n
    \n handleChanges.batchNumber(event.target.value)}\n optional={batchNumberOptional}\n value={batch.batchNumber}\n />\n
    \n \n isTagReplacement\n ? updateBatchList(batch.batchNumber, batch.animalTotal)\n : submitBatch()\n }\n />\n
    \n
    \n }\n \n );\n};\n\nAddBatch.propTypes = {\n animalTotalLabel: PropTypes.string,\n batchHeader: PropTypes.string,\n batchList: PropTypes.array,\n batchNumberOptional: PropTypes.bool,\n buttonLabel: PropTypes.string,\n isTagReplacement: PropTypes.func,\n pending: PropTypes.bool,\n resetForm: PropTypes.bool,\n setBatchTotal: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n setPending: PropTypes.func,\n species: PropTypes.object,\n updateBatchList: PropTypes.func\n};\n\nexport default AddBatch;\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { isCancel } from 'services/bff';\nimport PropTypes from 'prop-types';\nimport classes from 'components/manualTagEntry/manualTagEntry.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport Button from 'components/base/button/button';\nimport Legend from 'components/base/legend/legend';\nimport TextEntry from 'components/base/textEntry/textEntry';\n\nconst ManualTagEntry = ({\n addAnimals,\n addDisabled,\n animalsToChange,\n breed,\n description,\n dob,\n genderName,\n id,\n notes,\n pending,\n resetForm,\n setModal,\n setPending,\n species,\n title,\n tooltip,\n type\n}) => {\n const { ready, t } = useTranslation();\n\n const [textFieldTags, setTextFieldTags] = useState('');\n\n const submitManual = () => {\n setPending(true);\n\n helpers.validate.tagNumbers(species.name, [], [...new Set(textFieldTags.trim().replace(/\\s\\s+/g, ' ').split(/[\\n,]+/))])\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setPending)) {\n setTextFieldTags('');\n setPending(false);\n\n const newTags = [];\n\n res.data.tagNumbers.forEach((tag) => {\n const newTagNumber = tag.formattedDevice.tagNumber ? tag.formattedDevice.tagNumber : tag.originalIdentifier;\n\n if (!animalsToChange.find((animal) => animal.tagNumber === newTagNumber)) {\n if (type === constants.option.movement.newMovement && (!animalsToChange || animalsToChange.length === 0 || !animalsToChange.some((animal) => animal.tagNumber === newTagNumber))) {\n newTags.push({\n tagNumber: newTagNumber,\n animalTotal: 1,\n available: true,\n valid: tag.state,\n breedId: breed,\n genderName,\n dob\n });\n } else if (type === constants.option.movement.reviewMovement) {\n newTags.push({\n beginBirthPeriod: null,\n breed: null,\n endBirthPeriod: null,\n freezeBrand: null,\n rfid: null,\n animalTotal: 1,\n tagNumber: newTagNumber,\n valid: tag.state\n });\n }\n }\n });\n\n addAnimals(newTags);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setPending(false);\n errors.BFF(error, setModal);\n }\n });\n };\n\n useEffect(() => {\n setTextFieldTags('');\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resetForm]);\n\n return (\n <>\n {ready &&\n
    \n \n {description &&\n

    {t(description)}

    \n }\n\n
    \n setTextFieldTags(event.target.value)}\n rows={config.ROWS_TEXTAREA}\n value={textFieldTags}\n />\n
    \n {notes &&
    {notes}
    }\n
    \n \n
    \n
    \n }\n \n );\n};\n\nManualTagEntry.propTypes = {\n addAnimals: PropTypes.func,\n addDisabled: PropTypes.bool,\n animalsToChange: PropTypes.array,\n breed: PropTypes.string,\n description: PropTypes.string,\n dob: PropTypes.string,\n genderName: PropTypes.string,\n id: PropTypes.string,\n notes: PropTypes.string,\n pending: PropTypes.bool,\n resetForm: PropTypes.bool,\n setModal: PropTypes.func.isRequired,\n setPending: PropTypes.func,\n species: PropTypes.object,\n title: PropTypes.string,\n tooltip: PropTypes.string,\n type: PropTypes.string\n};\n\nexport default ManualTagEntry;\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport breedsHelper from 'services/breedsHelper';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport AddBatch from 'components/addBatch/addBatch';\nimport Button from 'components/base/button/button';\nimport CheckBox from 'components/base/checkbox/checkbox';\nimport DropdownBreeds from 'components/dropdownBreeds/dropdownBreeds';\nimport DropdownDamIds from 'components/dropdownDamIds/dropdownDamIds';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport InputDate from 'components/base/inputDate/inputDate';\nimport ManualTagEntry from 'components/manualTagEntry/manualTagEntry';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport Table from 'components/table/table';\nconst sprintf = require('util').format;\n\nconst DeathsStep1 = ({\n setDataChanged,\n setDeathData,\n setModal\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const sessionSpecies = storeService.session.get.species();\n const speciesId = sessionSpecies ? sessionSpecies.id : '';\n const sessionHolding = storeService.session.get.holding();\n const cph = sessionHolding ? sessionHolding.value : '';\n const isCattle = helpers.species.isCattleId(speciesId);\n\n const desc2Label = helpers.species.idToName(speciesId) === 'Sheep' || helpers.species.idToName(speciesId) === 'Goats'\n ? 'about.deaths.desc2-' + speciesId\n : sprintf(t('about.deaths.desc2-3'), helpers.species.idToName(speciesId));\n\n const [animalsOnHolding, setAnimalsOnHolding] = React.useState([]);\n const [animalsBeingMoved, setAnimalsBeingMoved] = React.useState([]);\n const [identificationType, setIdentificationType] = React.useState(isCattle ? constants.option.identification.breedingTags : null);\n const [selectionType, setSelectionType] = React.useState(null);\n const [deathDate, setDeathDate] = React.useState(null);\n const [deathDateError, setDeathDateError] = React.useState('');\n const [deathDateWarning, setDeathDateWarning] = React.useState('');\n\n const [birthDate, setBirthDate] = React.useState(null);\n const [birthDateError, setBirthDateError] = React.useState('');\n const [birthDateWarning, setBirthDateWarning] = React.useState('');\n\n const [pending, setPending] = React.useState(false);\n const [batchList, setBatchList] = React.useState([]);\n const [batchTotal, setBatchTotal] = React.useState(0);\n const [calfDiedBeforeTagging, setCalfDiedBeforeTagging] = React.useState(false);\n const [birthDamId, setBirthDamId] = useState(null);\n const [breedId, setBreedId] = useState(null);\n const [breedName, setBreedName] = useState(null);\n const [birthDamIdError] = useState('');\n const [disableCalfBefore, setDisableClfBefore] = React.useState(false);\n const [submitDisabled, setSubmitDisabled] = useState(true);\n const [renderTable, setRenderTable] = useState();\n const [refreshFilters, setRefreshFilters] = useState({});\n const [paginationParams, setPaginationParams] = useState({\n batch: {\n ...constants.pagination.defaultParams,\n [constants.pagination.bottom]: {\n ...constants.pagination.defaultParams[constants.pagination.bottom],\n totalLabel: 'label.totalBatches'\n }\n },\n individual: constants.pagination.defaultParams\n });\n\n const handleChanges = {\n addAnimals: (tags) => {\n const uniqueNewTags = tags.filter((tag) => !animalsBeingMoved.find((tagItem) => tagItem.tagNumber === tag.tagNumber));\n const animalsBeingMovedCopy = [\n ...animalsBeingMoved,\n ...uniqueNewTags\n ].map((item) => ({\n ...item,\n tagNumber: item.tagNumber\n }));\n\n setDeathData((prevState) => ({\n ...prevState,\n animalsBeingMoved: animalsBeingMovedCopy\n }));\n setAnimalsBeingMoved(animalsBeingMovedCopy);\n storeService.session.set.deathAnimalsBeingMoved(animalsBeingMovedCopy);\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n addAnimalsAll: (rows) => {\n setDeathData((prevState) => {\n const newAnimalsBeingMoved = [\n ...(prevState.animalsBeingMoved ? prevState.animalsBeingMoved : []),\n ...rows.filter((item) => !item.added)\n ];\n\n return {\n ...prevState,\n animalsBeingMoved: newAnimalsBeingMoved\n };\n });\n\n setAnimalsBeingMoved((prevState) => {\n const newAnimalsBeingMoved = [\n ...prevState,\n ...rows.filter((item) => !item.added)\n ];\n\n storeService.session.set.deathAnimalsBeingMoved(newAnimalsBeingMoved);\n\n return newAnimalsBeingMoved;\n });\n\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n batchList: (batchList) => {\n setDeathData((prevState) => ({\n ...prevState,\n batchList\n }));\n setBatchList(batchList);\n storeService.session.set.deathBatchList(batchList);\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n birthDamId: (event) => {\n setDeathData((prevState) => ({\n ...prevState,\n birthDamId: event.target.value\n }));\n setBirthDamId(event.target.value);\n storeService.session.set.deathBirthDamId(event.target.value);\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n breed: (event) => {\n const breedId = event.target.value;\n const breedName = breedsHelper.getBreedName(breedId);\n\n setDeathData((prevState) => ({\n ...prevState,\n breed: {\n id: breedId,\n name: breedName\n }\n }));\n setBreedId(breedId);\n setBreedName(breedName);\n storeService.session.set.deathBreed({\n id: breedId,\n name: breedName\n });\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n calfDiedBeforeTagging: () => {\n if (calfDiedBeforeTagging) {\n storeService.session.remove.deathDiedBeforeTagging();\n storeService.session.remove.deathBirthDate();\n storeService.session.remove.deathBirthDamId();\n storeService.session.remove.deathBreed();\n } else {\n storeService.session.set.deathDiedBeforeTagging(true);\n }\n\n setDeathData((prevState) => ({\n ...prevState,\n diedBeforeTagging: !calfDiedBeforeTagging\n }));\n setCalfDiedBeforeTagging(!calfDiedBeforeTagging);\n setBirthDate(null);\n setBirthDamId(null);\n setBreedId(null);\n setAnimalsOnHolding(animalsBeingMoved);\n setAnimalsBeingMoved([]);\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n date: (date, whichDate) => {\n if (helpers.dateType.isDeath(whichDate)) {\n setDeathData((prevState) => ({\n ...prevState,\n deathDate: date\n }));\n setDeathDate(date);\n storeService.session.set.deathDate(date);\n validateDate(date, whichDate);\n storeService.session.set.dataChanged(true);\n\n setRefreshFilters({\n refresh: true,\n params: {\n date\n }\n });\n\n if (helpers.option.tagMethod.isSelectFromLists(selectionType)) {\n storeService.session.removeAll.searchResults();\n setAnimalsOnHolding([]);\n setRenderTable(true);\n }\n\n setDataChanged(true);\n } else if (helpers.dateType.isBirth(whichDate)) {\n setDeathData((prevState) => ({\n ...prevState,\n birthDate: date\n }));\n setBirthDate(date);\n storeService.session.set.deathBirthDate(date);\n validateDate(date, whichDate);\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n }\n },\n\n identificationType: (event) => {\n setDeathData((prevState) => ({\n ...prevState,\n identificationType: event.target.value\n }));\n setAnimalsOnHolding([]);\n\n setIdentificationType(event.target.value);\n storeService.session.set.deathIdentificationType(event.target.value);\n\n setSelectionType(null);\n storeService.session.remove.deathSelectionType();\n\n storeService.session.removeAll.searchResults();\n storeService.session.removeAll.tableFilters();\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n removeAnimal: (animal) => {\n setDeathData((prevState) => {\n const newAnimalsBeingMoved = helpers.tag.remove(prevState.animalsBeingMoved, animal);\n\n return {\n ...prevState,\n animalsBeingMoved: newAnimalsBeingMoved\n };\n });\n\n setAnimalsBeingMoved((prevState) => {\n const newState = helpers.tag.remove(prevState, animal);\n\n if (newState?.length === 0) {\n storeService.session.remove.deathAnimalsBeingMoved();\n } else {\n storeService.session.set.deathAnimalsBeingMoved(newState);\n }\n\n return newState;\n });\n\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n removeAnimalsAll: () => {\n setDeathData((prevState) => ({\n ...prevState,\n animalsBeingMoved: []\n }));\n setAnimalsBeingMoved([]);\n storeService.session.remove.deathAnimalsBeingMoved();\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n removeAnimalsAllInvalid: () => {\n const newAnimalsBeingMoved = helpers.animal.removeAllInvalid(animalsBeingMoved);\n\n setDeathData((prevState) => ({\n ...prevState,\n animalsBeingMoved: newAnimalsBeingMoved\n }));\n setAnimalsBeingMoved(newAnimalsBeingMoved);\n storeService.session.set.deathAnimalsBeingMoved(newAnimalsBeingMoved);\n },\n\n removeBatch: (batch) => {\n setDeathData((prevState) => {\n const newBatchList = helpers.batch.remove(prevState.batchList, batch);\n\n return {\n ...prevState,\n batchList: newBatchList\n };\n });\n\n setBatchList((prevState) => {\n const newState = helpers.batch.remove(prevState, batch);\n\n if (newState?.length === 0) {\n storeService.session.remove.deathBatchList();\n } else {\n storeService.session.set.deathBatchList(newState);\n }\n\n return newState;\n });\n\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n selectionType: (event) => {\n setDeathData((prevState) => ({\n ...prevState,\n selectionType: event.target.value\n }));\n setAnimalsOnHolding([]);\n setSelectionType(event.target.value);\n storeService.session.set.deathSelectionType(event.target.value);\n storeService.session.removeAll.searchResults();\n storeService.session.removeAll.tableFilters();\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n toggleAnimal: (animal) => {\n const newAnimal = {\n ...animal,\n animalTotal: 1,\n added: !animal.added\n };\n\n if (animal.tagNumber !== '') {\n if (animal.added) {\n setDeathData((prevState) => {\n const newAnimalsBeingMoved = helpers.tag.remove(prevState.animalsBeingMoved, animal);\n\n return {\n ...prevState,\n animalsBeingMoved: newAnimalsBeingMoved\n };\n });\n\n setAnimalsBeingMoved((prevState) => {\n const newState = helpers.tag.remove(prevState, animal);\n\n if (newState?.length === 0) {\n storeService.session.remove.deathAnimalsBeingMoved();\n } else {\n storeService.session.set.deathAnimalsBeingMoved(newState);\n }\n\n return newState;\n });\n } else {\n setDeathData((prevState) => ({\n ...prevState,\n animalsBeingMoved: prevState.animalsBeingMoved\n ? [\n ...prevState.animalsBeingMoved,\n newAnimal\n ]\n : [newAnimal]\n }));\n\n setAnimalsBeingMoved((prevState) => {\n storeService.session.set.deathAnimalsBeingMoved([\n ...prevState,\n newAnimal\n ]);\n\n return [\n ...prevState,\n newAnimal\n ];\n });\n }\n\n const sessionSearchResults = storeService.session.get.searchResultsAnimalsOnHolding();\n const sessionAnimalToToggle = sessionSearchResults.data.find((item) => item.tagNumber === animal.tagNumber);\n sessionAnimalToToggle.added = !sessionAnimalToToggle.added;\n storeService.session.set.searchResultsAnimalsOnHolding(sessionSearchResults);\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n }\n }\n };\n\n const getDates = {\n deathMax: () => {\n const today = new Date();\n\n return helpers.date.formatYYYYMMDD(today);\n },\n\n birthMax: () => {\n const today = new Date();\n\n if (deathDate) {\n return helpers.date.formatYYYYMMDD(\n helpers.date.momentToJSDate(\n helpers.date.momentMinDate(\n helpers.date.stringDateToMoment(deathDate),\n helpers.date.todayEndOfDay()\n )\n )\n );\n }\n\n return helpers.date.formatYYYYMMDD(today);\n }\n };\n\n const tableParams = {\n request: {\n url: '/animals',\n params: {\n speciesId: speciesId,\n cph,\n onHoldingDate: deathDate ? helpers.date.endOfDay(deathDate) : helpers.date.endOfDay(helpers.date.now())\n },\n processData: (data) => helpers.animal.addDobAndAgeForDisplay(data)\n }\n };\n\n const display = {\n birthDatePicker: () => {\n return (\n
    \n handleChanges.date(event.target.value, constants.dateTypes.birth)}\n setError={setBirthDateError}\n value={birthDate}\n warning={birthDateWarning}\n yearLength={4}\n />\n
    \n );\n },\n\n calfDiedBeforeTaggingCheckbox: () => {\n return (\n
    \n \n
    \n );\n },\n\n deathDatePicker: () => {\n return (\n
    \n handleChanges.date(event.target.value, constants.dateTypes.death)}\n setError={setDeathDateError}\n value={deathDate}\n warning={deathDateWarning}\n yearLength={4}\n />\n
    \n );\n },\n\n deathDateStaticText: () => {\n return (\n
    \n \n {t('deaths.dateOfDeath') + ': '}\n \n {deathDate\n ? helpers.date.format(deathDate)\n : t('label.noDeathDateEntered')}\n
    \n );\n },\n\n identificationTypeOption: () => {\n return (\n <>\n

    {t('deaths.select-animals-heading')}

    \n\n
    \n \n
    \n \n );\n },\n\n manualTags: () => {\n return (\n \n );\n },\n\n optionsForCattleDiedBeforeTagging: () => {\n return (\n <>\n
    \n
    \n \n
    \n
    \n
    \n \n
    \n \n );\n },\n\n selectedBatches: () => {\n return (\n <>\n {batchList.length > 0 &&\n <>\n {batchList.some((batch) => helpers.batch.isInvalid(batch)) &&\n \n }\n\n ({\n ...item,\n batchNumber: item.batchNumber ? item.batchNumber : t('label.notSupplied')\n }))}\n dataProvided={true}\n initialSortBy={initialSorting.deathsMissingAndFound.batch.accessor}\n initialSortDirection={initialSorting.deathsMissingAndFound.batch.direction}\n paginationParams={paginationParams.batch}\n setData={setBatchList}\n setModal={setModal}\n title={{\n title: helpers.text.pluralCheck(batchList?.reduce((total, item) => total + parseInt(item.animalTotal), 0), 'table.title.batchesSelected'),\n data: [\n batchList?.reduce((total, item) => total + parseInt(item.animalTotal), 0)\n ]\n }}\n />\n \n }\n \n );\n },\n\n selectedIndividualAnimals: () => {\n return (\n <>\n {animalsBeingMoved?.length > 0 &&\n <>\n {helpers.tag.hasNonEidTagsSheep(speciesId, animalsBeingMoved) &&\n \n }\n\n {animalsBeingMoved.some((tag) => helpers.tag.isInvalid(tag)) &&\n \n }\n\n \n \n }\n \n );\n },\n\n selectFromHolding: () => {\n return (\n \n animalsBeingMoved.find((item2) => item2.tagNumber === item1.tagNumber)\n ? { ...item1, added: true }\n : { ...item1, added: false }\n )}\n filtersComponents={{\n [constants.filters.inside]: 'AnimalsOnHolding'\n }}\n initialSortBy={initialSorting.deathsMissingAndFound.individual.accessor}\n initialSortDirection={initialSorting.deathsMissingAndFound.individual.direction}\n params={tableParams}\n refreshFilters={refreshFilters}\n renderTable={renderTable}\n setData={setAnimalsOnHolding}\n setModal={setModal}\n store={{\n filters: 'AnimalsOnHolding',\n data: 'AnimalsOnHolding'\n }}\n title=\"label.animalsOnHolding\"\n />\n );\n },\n\n selectionType: () => {\n return (\n
    \n \n
    \n );\n },\n\n slaughterTags: () => {\n return (\n
    \n \n
    \n );\n }\n };\n\n const submitStep = () => {\n if (isCattle && birthDamId !== '' && animalsBeingMoved?.length === 0) {\n storeService.session.set.deathAnimalsBeingMoved([{\n dob: birthDate,\n birthDamId,\n animalTotal: 1,\n batchNumber: null,\n breedName,\n genderName: null\n }]);\n }\n };\n\n const nextPage = () => {\n submitStep();\n history.push(Routing.deathsStep2);\n helpers.scrollToTop();\n };\n\n const validateDate = (date, whichDate) => {\n let hasError = false;\n\n setDeathDateError('');\n setDeathDateWarning('');\n setBirthDateError('');\n setBirthDateWarning('');\n\n if (helpers.dateType.isDeath(whichDate)) {\n const deathDateIsInTheFuture = helpers.date.is.inTheFuture(date, whichDate);\n const deathDateIsOverSevenDaysAgo = isCattle ? helpers.date.is.overSevenDaysAgo(date) : null;\n\n if (!hasError && deathDateIsInTheFuture) {\n setDeathDateError(deathDateIsInTheFuture);\n\n hasError = true;\n }\n\n if (!hasError && deathDateIsOverSevenDaysAgo) {\n setDeathDateWarning(deathDateIsOverSevenDaysAgo);\n }\n } else if (helpers.dateType.isBirth(whichDate)) {\n const birthDateIsInTheFuture = helpers.date.is.inTheFuture(date, whichDate);\n const birthDateIsOverSevenDaysAgo = isCattle ? helpers.date.is.overSevenDaysAgo(date) : null;\n const birthDateIsAfterDeathDate = helpers.date.is.afterDate(date, deathDate);\n\n if (!hasError && birthDateIsAfterDeathDate) {\n setBirthDateError('error.dateOfBirthAfterDateOfDeath');\n\n hasError = true;\n }\n\n if (!hasError && birthDateIsInTheFuture) {\n setBirthDateError(birthDateIsInTheFuture);\n\n hasError = true;\n }\n\n if (!hasError && birthDateIsOverSevenDaysAgo) {\n setBirthDateWarning(birthDateIsOverSevenDaysAgo);\n }\n }\n };\n\n useEffect(() => {\n const sessionDeathDate = storeService.session.get.deathDate();\n const sessionIdentificationType = storeService.session.get.deathIdentificationType();\n const sessionSelectionType = storeService.session.get.deathSelectionType();\n const sessionBatchList = storeService.session.get.deathBatchList();\n const sessionAnimalsBeingMoved = storeService.session.get.deathAnimalsBeingMoved();\n\n if (sessionDeathDate) {\n setDeathDate(sessionDeathDate);\n validateDate(sessionDeathDate, constants.dateTypes.death);\n }\n\n if (sessionIdentificationType) {\n setIdentificationType(sessionIdentificationType);\n }\n\n if (sessionSelectionType) {\n setSelectionType(sessionSelectionType);\n }\n\n if (sessionBatchList) {\n setBatchList(sessionBatchList);\n }\n\n if (sessionAnimalsBeingMoved) {\n setAnimalsBeingMoved(sessionAnimalsBeingMoved);\n }\n\n if (helpers.species.isCattleId(speciesId)) {\n const sessionCalfDiedBeforeTagging = storeService.session.get.deathDiedBeforeTagging();\n const sessionBirthDate = storeService.session.get.deathBirthDate();\n const sessionBirthDamId = storeService.session.get.deathBirthDamId();\n const sessionBreed = storeService.session.get.deathBreed();\n\n if (sessionCalfDiedBeforeTagging) {\n setCalfDiedBeforeTagging(true);\n }\n\n if (sessionBirthDate) {\n setBirthDate(sessionBirthDate);\n validateDate(sessionBirthDate, constants.dateTypes.birth);\n }\n\n if (sessionBirthDamId) {\n setBirthDamId(sessionBirthDamId);\n }\n\n if (sessionBreed) {\n setBreedId(sessionBreed.id);\n setBreedName(sessionBreed.name);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (deathDate && deathDateError === '') {\n setDisableClfBefore(false);\n } else {\n setDisableClfBefore(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [deathDate, deathDateError]);\n\n useEffect(() => {\n if (deathDate && birthDate) {\n if (helpers.date.is.afterDate(birthDate, deathDate)) {\n setBirthDateError('error.dateOfBirthAfterDateOfDeath');\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [deathDate, birthDate]);\n\n useEffect(() => {\n let disableFlag = false;\n\n if (pending) {\n disableFlag = true;\n } else if (batchList?.some((batch) => helpers.batch.isInvalid(batch)) || animalsBeingMoved?.some((tag) => helpers.tag.isInvalid(tag))) {\n disableFlag = true;\n } else if (!deathDate || deathDateError !== '') {\n disableFlag = true;\n } else if (calfDiedBeforeTagging) {\n if (!birthDate || birthDateError !== '') {\n disableFlag = true;\n } else if (helpers.date.is.afterDate(birthDate, deathDate) || birthDamId === null || breedId === null) {\n disableFlag = true;\n }\n } else if (animalsBeingMoved?.length === 0 && batchList?.length === 0) {\n disableFlag = true;\n }\n\n setSubmitDisabled(disableFlag);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pending, deathDate, deathDateError, birthDate, birthDateError, birthDamId, breedId, calfDiedBeforeTagging, animalsBeingMoved, batchList]);\n\n useEffect(() => {\n if (renderTable) {\n setRenderTable();\n }\n }, [renderTable]);\n\n useEffect(() => {\n if (refreshFilters.refresh) {\n setRefreshFilters({});\n }\n }, [refreshFilters]);\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n individual: {\n ...prevState.individual,\n [constants.pagination.bottom]: {\n ...prevState.individual[constants.pagination.bottom],\n total: animalsBeingMoved?.length\n }\n }\n }));\n }, [animalsBeingMoved]);\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n batch: {\n ...prevState.batch,\n [constants.pagination.bottom]: {\n ...prevState.batch[constants.pagination.bottom],\n total: batchList?.length\n }\n }\n }));\n }, [batchList]);\n\n return (\n <>\n {ready &&\n <>\n

    {t('deaths.date-and-animal-details')}

    \n\n \n\n
    \n
    \n {calfDiedBeforeTagging ? display.deathDateStaticText() : display.deathDatePicker()}\n {isCattle ? display.calfDiedBeforeTaggingCheckbox() : display.identificationTypeOption()}\n {calfDiedBeforeTagging && display.birthDatePicker()}\n {!calfDiedBeforeTagging && helpers.option.identificationType.isBreedingTags(identificationType) && display.selectionType()}\n {isCattle && calfDiedBeforeTagging && display.optionsForCattleDiedBeforeTagging()}\n
    \n
    \n\n {!calfDiedBeforeTagging &&\n
    \n
    \n {helpers.option.identificationType.isBreedingTags(identificationType) &&\n <>\n {helpers.option.tagMethod.isSelectFromLists(selectionType) && display.selectFromHolding()}\n {helpers.option.tagMethod.isTagsManually(selectionType) && display.manualTags()}\n \n }\n {helpers.option.identificationType.isSlaughterTags(identificationType) && display.slaughterTags()}\n {display.selectedIndividualAnimals()}\n {display.selectedBatches()}\n
    \n
    \n }\n\n \n \n }\n \n );\n};\n\nDeathsStep1.propTypes = {\n setDataChanged: PropTypes.func,\n setDeathData: PropTypes.func,\n setModal: PropTypes.func.isRequired\n};\n\nexport default DeathsStep1;\n","import React from 'react';\nimport { holdingHelper } from 'services/holdingHelper';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport DropdownSearch from 'components/base/dropdownSearch/dropdownSearch';\n\nconst DropdownHoldings = ({\n error,\n label,\n name,\n onChange\n}) => {\n const currentHolding = storeService.session.get.holding();\n const allHoldings = storeService.session.get.holdings();\n\n const otherHoldings = () => {\n return Object.values(allHoldings)\n .filter((holding) => holdingHelper.region.isEngland(holding.region))\n .filter((holding) => holding.value !== currentHolding.value)\n .map((holding) => ({\n label: holding.value,\n name: holding.value,\n value: holding.value\n }));\n };\n\n return (\n \n );\n};\n\nDropdownHoldings.propTypes = {\n error: PropTypes.string,\n label: PropTypes.string,\n name: PropTypes.string,\n onChange: PropTypes.func\n};\n\nexport default DropdownHoldings;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { isCancel } from 'services/bff';\nimport axios from 'axios';\nimport classes from 'components/otherHoldingSelection/otherHoldingSelection.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport searchHelper from 'services/searchHelper';\nimport storeService from 'services/storeService';\nimport { holdingHelper } from 'services/holdingHelper';\nimport { tableColumns } from 'services/tableColumns';\nimport Button from 'components/base/button/button';\nimport CPHField from 'components/base/cphField/cphField';\nimport DropdownHoldings from 'components/dropdownHoldings/dropdownHoldings';\nimport DropdownSearch from 'components/base/dropdownSearch/dropdownSearch';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport FieldLabel from 'components/base/fieldLabel/fieldLabel';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport Table from 'components/table/table';\nimport Tabs from 'components/base/tabs/tabs';\nimport TextEntry from 'components/base/textEntry/textEntry';\n\nconst RecentHoldings = ({\n currentHolding,\n inBusinessMovement,\n isDeath,\n movementType,\n otherHolding,\n ownHoldingKeys,\n ownHoldings,\n recentlyUsedDeathHoldings,\n recentlyUsedDepartureHoldings,\n recentlyUsedDestinationHoldings,\n setOtherHolding\n}) => {\n const { ready, t } = useTranslation();\n\n const removeUsersHoldings = (recentlyUsedHoldings, myOwnHoldingKeys) => Object.keys(recentlyUsedHoldings)\n .filter((key) => !myOwnHoldingKeys.includes(key))\n .reduce((obj, key) => ({ ...obj, [key]: recentlyUsedHoldings[key] }), {});\n\n let holdings = [];\n\n if (isDeath) {\n holdings = recentlyUsedDeathHoldings;\n } else if (inBusinessMovement) {\n holdings = ownHoldings;\n } else if (helpers.option.movement.isOn(movementType)) {\n // Removes all the users holdings from the recently used departure holdings\n if (recentlyUsedDepartureHoldings) {\n holdings = removeUsersHoldings(recentlyUsedDepartureHoldings, ownHoldingKeys);\n }\n } else if (helpers.option.movement.isOff(movementType)) {\n // Removes all the users holdings from the recently used destination holdings\n if (recentlyUsedDestinationHoldings) {\n holdings = removeUsersHoldings(recentlyUsedDestinationHoldings, ownHoldingKeys);\n }\n }\n\n //Removes the users current holding from the recently used array\n if (holdings && currentHolding && currentHolding.value) {\n delete holdings[currentHolding.value];\n }\n\n if (holdings && Object.entries(holdings)?.length > 0) {\n return (\n
    \n
    \n {\n const address = helpers.address.formatLine(holding.address);\n const label = `${holding.value}${address ? ' - ' + address : ''}`;\n\n return {\n id: holding.value,\n label\n };\n })}\n label={t(inBusinessMovement ? 'label.myHoldings' : 'label.selectHolding')}\n name=\"otherHolding\"\n onChange={(event) => setOtherHolding({ value: event.target.value })}\n suppressHint={true}\n value={otherHolding?.value}\n />\n
    \n
    \n );\n }\n\n return (\n <>\n {ready &&\n
    \n \n
    \n }\n \n );\n};\n\nconst OtherHoldingSelection = ({\n autoSelect,\n currentHolding,\n inBusinessMovement,\n isDeath,\n isGathering,\n movementType,\n otherHolding,\n setInBusinessMovement,\n setModal,\n setMovementType,\n setOtherHolding,\n setSubmitDisabled\n}) => {\n const { ready, t } = useTranslation();\n\n const sessionTabId = storeService.session.get.activeTabIdOtherHoldingSelection();\n const recentTabId = isDeath ? constants.tabs.recentLocations : constants.tabs.recentHoldings;\n const recentTabLabel = isDeath ? 'label.recentlyUsedLocations' : 'label.recentlyUsedHoldings';\n\n const [activeTabId, setActiveTabId] = React.useState(sessionTabId ? sessionTabId : constants.tabs.enterHolding);\n const [searchValue, setSearchValue] = React.useState('');\n const [buttonDisabled, setButtonDisabled] = React.useState(true);\n const [includesOwnHoldingsError, setIncludesOwnHoldingsError] = React.useState(true);\n const [sameHoldingError, setSameHoldingError] = React.useState(true);\n const [knowCPHNumber, setKnowCPHNumber] = React.useState(null);\n const [searchType, setSearchType] = React.useState(isDeath ? constants.option.knowCPHNumber.cph : null);\n const [searchNoResults, setSearchNoResults] = React.useState(false);\n const [searched, setSearched] = React.useState(false);\n\n const [cphNumber, setCphNumber] = React.useState('');\n const [cphNumberError, setCphNumberError] = React.useState('');\n const [fsaNumber, setFsaNumber] = React.useState('');\n const [holdingTypes, setHoldingTypes] = React.useState([]);\n const [holdingType, setHoldingType] = React.useState('');\n const [holdingName, setHoldingName] = React.useState('');\n const [holdingPostcode, setHoldingPostcode] = React.useState('');\n const [loadPending, setLoadPending] = React.useState(false);\n const [holdingTable, setHoldingTable] = React.useState([]);\n const [totalRecords, setTotalRecords] = React.useState(0);\n\n const recentlyUsedDeathHoldings = storeService.local.get.recentlyUsedDeathHoldings();\n const recentlyUsedDepartureHoldings = storeService.local.get.recentlyUsedDepartureHoldings();\n const recentlyUsedDestinationHoldings = storeService.local.get.recentlyUsedDestinationHoldings();\n const ownHoldings = storeService.session.get.holdings();\n const ownHoldingKeys = Object.keys(ownHoldings);\n const isAbattoir = helpers.userRole.isAbattoir(storeService.session.get.permissions());\n\n const clearAllInputs = () => {\n setSearchType(isDeath ? constants.option.knowCPHNumber.cph : null);\n setCphNumber('');\n setFsaNumber('');\n setHoldingType('');\n setHoldingName('');\n setHoldingPostcode('');\n setSameHoldingError(false);\n };\n\n const updateTab = (tabId) => {\n storeService.session.set.activeTabIdOtherHoldingSelection(tabId);\n setActiveTabId(tabId);\n clearAllInputs();\n setHoldingTable([]);\n setTotalRecords(0);\n };\n\n const recentHoldingPresent = (recentlyUsedHoldings, holding) => Boolean(recentlyUsedHoldings && recentlyUsedHoldings[holding]);\n\n const searchForHolding = (isGathering) => {\n setHoldingTable([]);\n setTotalRecords(0);\n setSameHoldingError(false);\n const holding = storeService.session.get.holding();\n if (holding?.value === cphNumber) {\n setSameHoldingError(true);\n return;\n }\n setIncludesOwnHoldingsError(false);\n let query = {};\n if (helpers.cph.knownCPH.isYes(knowCPHNumber)) {\n // validate the CPH or FSA search field\n if (cphNumber && helpers.validate.cphNumber(cphNumber)) {\n query.cph = cphNumber;\n } else if (fsaNumber && helpers.validate.fsaNumber(fsaNumber)) {\n query.fsa = fsaNumber;\n }\n } else if (cphNumber && helpers.validate.cphNumber(cphNumber)) {\n query.cph = cphNumber;\n } else {\n query = { holdingType, holdingName, holdingPostcode };\n }\n\n searchHelper.searchCPH(query, setSearched, setSearchNoResults)\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n const searchByCPH = query.cph || query.fsa;\n\n const resData = searchByCPH ? res.data.data?.[0] : res.data.data;\n\n const buildHoldingItem = (holding) => ({\n cph: helpers.replaceNull(holding.id),\n keeperName: [holding.title, holding.firstName, holding.lastName].filter(Boolean).join(' '),\n holdingName: helpers.replaceNull(holding.propertyName),\n holdingAddress: [holding.address1, holding.address2, holding.town, holding.county, holding.postCode].filter(Boolean).join(', '),\n holdingAddressObject: {\n propertyName: holding.propertyName,\n address1: holding.address1,\n address2: holding.address2,\n town: holding.town,\n county: holding.county,\n postCode: holding.postCode\n },\n holdingPostcode: helpers.replaceNull(holding.postCode),\n holdingType: helpers.replaceNull(holding.holdingType.fullName)\n });\n\n if (isGathering && res.data.error === constants.error.addressMessage && searchByCPH) {\n if (helpers.cph.knownCPH.isCph(searchType) || helpers.cph.knownCPH.isFsa(searchType) || !searchType) {\n setOtherHolding({\n value: searchByCPH,\n address: { address1: t('label.cphNotFound') }\n });\n setSearchNoResults(false);\n }\n } else if (resData) {\n const holdingResult = searchByCPH ? [buildHoldingItem(resData)] : resData.map((holding) => buildHoldingItem(holding));\n\n setTotalRecords(res.data.count);\n\n const filteredResult = holdingResult.filter((holding) => holding.cph !== currentHolding.value);\n\n setHoldingTable(filteredResult);\n if (filteredResult?.length === 0) {\n if (searchByCPH) {\n setIncludesOwnHoldingsError(holdingResult?.length === 1);\n } else {\n setSearchNoResults(true);\n }\n }\n\n if ((autoSelect && helpers.cph.knownCPH.isYes(knowCPHNumber)) ||\n (filteredResult?.length === 0 && ownHoldings[filteredResult[0].cph])) {\n handleChanges.selectHolding(filteredResult[0], filteredResult);\n }\n } else {\n setSearchNoResults(true);\n }\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setSearchNoResults(true);\n }\n });\n };\n\n const confirmSearchCorrect = (holding, isManual, allResults) => {\n const updateHolding = holding.value ? holding.value.trim() : null;\n\n if (updateHolding) {\n setOtherHolding(isManual ? { ...holding, isManual: true } : holding);\n\n if (isDeath && !recentHoldingPresent(recentlyUsedDeathHoldings, holding.value)) {\n storeService.local.set.recentlyUsedDeathHoldings({\n ...recentlyUsedDeathHoldings,\n [updateHolding]: {\n ...holding,\n address: allResults ? allResults.find((item) => item.cph === holding.value)?.holdingAddressObject : holdingTable.find((item) => item.cph === holding.value)?.holdingAddressObject,\n isManual\n }\n });\n if (setSubmitDisabled && typeof setSubmitDisabled === 'function') {\n setSubmitDisabled(false);\n }\n } else if (helpers.option.movement.isOn(movementType) && !recentHoldingPresent(recentlyUsedDepartureHoldings, holding.value)) {\n storeService.local.set.recentlyUsedDepartureHoldings({\n ...recentlyUsedDepartureHoldings,\n [updateHolding]: {\n ...holding,\n address: allResults ? allResults.find((item) => item.cph === holding.value)?.holdingAddressObject : holdingTable.find((item) => item.cph === holding.value)?.holdingAddressObject\n }\n });\n } else if (helpers.option.movement.isOff(movementType) && !recentHoldingPresent(recentlyUsedDestinationHoldings, holding.value)) {\n storeService.local.set.recentlyUsedDestinationHoldings({\n ...recentlyUsedDestinationHoldings,\n [updateHolding]: {\n ...holding,\n address: allResults ? allResults.find((item) => item.cph === holding.value)?.holdingAddressObject : holdingTable.find((item) => item.cph === holding.value)?.holdingAddressObject\n }\n });\n }\n\n setSearchValue('');\n updateTab(activeTabId);\n }\n };\n\n const handleChanges = {\n selectHolding: (row, allResults) => {\n const selectedCPH = row.cph;\n if (!inBusinessMovement && ownHoldings[selectedCPH] && setMovementType) {\n setInBusinessMovement(true);\n storeService.session.set.movementInBusiness(true);\n } else {\n setSearchValue(selectedCPH);\n confirmSearchCorrect({ value: selectedCPH }, false, allResults);\n }\n\n clearAllInputs();\n setOtherHolding({\n value: selectedCPH,\n address: row.holdingAddressObject\n });\n },\n\n updateCPHFSAFlag: (cphFsaFlag) => {\n setSameHoldingError(false);\n setKnowCPHNumber(cphFsaFlag);\n setIncludesOwnHoldingsError(false);\n\n if (helpers.cph.knownCPH.isNo(cphFsaFlag)) {\n setSearchType(null);\n setFsaNumber('');\n setCphNumber('');\n setButtonDisabled(true);\n } else if (helpers.cph.knownCPH.isYes(cphFsaFlag)) {\n setSearchType(null);\n setHoldingType('');\n setHoldingName('');\n setHoldingPostcode('');\n setButtonDisabled(true);\n }\n\n setHoldingTable([]);\n setTotalRecords(0);\n setSearched(false);\n },\n\n updateSearchType: (searchTypeFlag) => {\n setSameHoldingError(false);\n setIncludesOwnHoldingsError(false);\n setSearchType(searchTypeFlag);\n setSearched(false);\n setFsaNumber('');\n setCphNumber('');\n setButtonDisabled(true);\n },\n\n updateCphNumber: (cph) => {\n const status = helpers.validate.cphNumber(cph);\n setCphNumberError('');\n setSearchNoResults(false);\n setCphNumber(cph);\n setTotalRecords(0);\n setButtonDisabled(!status);\n },\n\n updateFsaNumber: (newFsaNumber) => {\n const status = helpers.validate.fsaNumber(newFsaNumber);\n setFsaNumber(newFsaNumber);\n setButtonDisabled(!status);\n },\n\n updateHoldingType: (newHoldingType) => {\n const status = holdingName?.length > 0 || holdingPostcode?.length >= 2;\n setHoldingType(newHoldingType);\n setButtonDisabled(!status);\n },\n\n updateHoldingName: (newHoldingName) => {\n const status = newHoldingName?.length > 0 || holdingPostcode?.length >= 2;\n setHoldingName(newHoldingName);\n setButtonDisabled(!status);\n },\n\n updateHoldingPostcode: (newHoldingPostcode) => {\n const status = holdingName?.length > 0 || newHoldingPostcode?.length >= 2;\n setHoldingPostcode(newHoldingPostcode);\n setButtonDisabled(!status);\n }\n };\n\n // const getClassNames = (holding) => {\n // const results = [classes.holdingListRow];\n // if (otherHolding && otherHolding.value === holding[1].value) {\n // results.push(classes.holdingListRowSelected);\n // }\n // return results.join(' ').trim();\n // };\n\n // const updateAddressInStore = (cph, address) => {\n // if (isDeath) {\n // recentlyUsedDeathHoldings[cph] = { value: cph, address };\n // storeService.local.set.recentlyUsedDeathHoldings(recentlyUsedDeathHoldings);\n // } else if (helpers.option.movement.isOn(movementType)) {\n // if (recentlyUsedDepartureHoldings) {\n // recentlyUsedDepartureHoldings[cph] = { value: cph, address };\n // storeService.local.set.recentlyUsedDepartureHoldings(recentlyUsedDepartureHoldings);\n // }\n // } else if (helpers.option.movement.isOff(movementType)) {\n // if (recentlyUsedDestinationHoldings) {\n // recentlyUsedDestinationHoldings[cph] = { value: cph, address };\n // storeService.local.set.recentlyUsedDestinationHoldings(recentlyUsedDestinationHoldings);\n // }\n // }\n // };\n\n // const getAddressFromStore = (cph) => {\n // if (isDeath) {\n // return recentlyUsedDeathHoldings[cph] ? recentlyUsedDeathHoldings[cph].address : null;\n // } else if (helpers.option.movement.isOn(movementType)) {\n // return recentlyUsedDepartureHoldings && recentlyUsedDepartureHoldings[cph] ? recentlyUsedDepartureHoldings[cph].address : null;\n // } else if (helpers.option.movement.isOff(movementType)) {\n // return recentlyUsedDestinationHoldings && recentlyUsedDestinationHoldings[cph] ? recentlyUsedDestinationHoldings[cph].address : null;\n // }\n // return null;\n // };\n\n const display = {\n searchByCphFsa: (isMovement) => {\n const viewType = (isMovement) ? searchType : constants.option.knowCPHNumber.cph;\n\n return (\n
    \n
    \n {(\n helpers.cph.knownCPH.isCph(viewType) || isAbattoir\n ) &&\n
    \n \n
    \n }\n\n {helpers.cph.knownCPH.isFsa(viewType) &&\n
    \n handleChanges.updateFsaNumber(event.target.value)}\n type=\"text\"\n value={fsaNumber}\n />\n
    \n }\n\n {(\n viewType !== null || isAbattoir\n ) &&\n
    \n searchForHolding(isGathering)}\n />\n
    \n }\n
    \n
    \n );\n },\n\n searchByHoldingDetail: (isMovement) => {\n return (\n
    \n {isMovement &&\n
    \n handleChanges.updateHoldingType(event.target.value)}\n optional={true}\n optionList={holdingTypes}\n placeholder=\"prompt.pleaseSelect\"\n value={holdingType}\n />\n
    \n }\n
    \n handleChanges.updateHoldingName(event.target.value)}\n type=\"text\"\n value={holdingName}\n />\n
    \n
    \n handleChanges.updateHoldingPostcode(event.target.value)}\n tooltip=\"movements.destination.holding-postcode-hint\"\n type=\"text\"\n value={holdingPostcode}\n />\n
    \n
    \n searchForHolding(false)}\n />\n
    \n
    \n );\n },\n\n searchManual: () => {\n return (\n
    \n
    \n
    \n \n
    \n
    \n searchForHolding(isGathering)}\n />\n
    \n
    \n
    \n {sameHoldingError &&\n \n }\n
    \n
    \n );\n },\n\n searchResults: () => {\n return (\n <>\n {includesOwnHoldingsError &&\n \n }\n\n {searched &&\n <>\n {searchNoResults &&\n \n }\n {totalRecords > 50 &&\n
    \n \n
    \n }\n {holdingTable?.length > 0 &&\n \n }\n \n }\n \n );\n }\n };\n\n useEffect(() => {\n if (!loadPending) {\n const storeHoldingTypes = null;\n if (storeHoldingTypes?.length > 0) {\n setHoldingTypes(storeHoldingTypes);\n } else {\n helpers.get.holdingTypes(\n setModal,\n axios.CancelToken.source(),\n setLoadPending,\n setHoldingTypes\n );\n if (holdingTypes?.length > 0) {\n storeService.local.set.holdingTypesDropdown(holdingTypes);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [holdingTypes]);\n\n useEffect(() => {\n const holding = storeService.session.get.holding();\n if (searchValue && holding?.value === searchValue) {\n setSameHoldingError(true);\n setIncludesOwnHoldingsError(false);\n setButtonDisabled(true);\n } else {\n setSameHoldingError(false);\n const isOwnHolding = searchValue && ownHoldingKeys.includes(searchValue);\n\n setIncludesOwnHoldingsError(!isDeath && isOwnHolding);\n setButtonDisabled(!searchValue || (!isDeath && isOwnHolding));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchValue]);\n\n useEffect(() => {\n setCphNumberError('');\n\n if (helpers.option.movement.isOff(movementType) && Object.keys(ownHoldings).find((holding) => holding === cphNumber && !holdingHelper.cph.isEnglish(holding))) {\n setCphNumberError('error.xBorderInBusinessOffMovement');\n setButtonDisabled(true);\n } else {\n const status = helpers.validate.cphNumber(cphNumber);\n setButtonDisabled(!status);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [movementType, cphNumber]);\n\n return (\n <>\n {ready &&\n <>\n {inBusinessMovement &&\n
    \n setOtherHolding({\n value: event.target.value.trim()\n })}\n />\n
    \n }\n\n {!inBusinessMovement &&\n \n
    \n
    \n handleChanges.updateCPHFSAFlag(event.target.value)}\n suppressHint={true}\n suppressLabel={false}\n value={knowCPHNumber}\n />\n
    \n\n {helpers.cph.knownCPH.isYes(knowCPHNumber) &&\n <>\n {!isDeath && !isAbattoir &&\n
    \n handleChanges.updateSearchType(event.target.value)}\n value={searchType}\n />\n
    \n }\n\n {display.searchByCphFsa(!isDeath)}\n \n }\n\n {helpers.cph.knownCPH.isNo(knowCPHNumber) &&\n
    \n {display.searchByHoldingDetail(!isDeath)}\n
    \n }\n\n {sameHoldingError && !isDeath &&\n \n }\n {sameHoldingError && isDeath &&\n \n }\n {display.searchResults()}\n
    \n\n {!isGathering &&\n
    \n \n
    \n }\n\n {isGathering &&\n
    \n
    \n {display.searchManual()}\n\n {display.searchResults()}\n
    \n
    \n }\n\n {isDeath &&\n
    \n \n
    \n
    \n {\n if (isDeath && setSubmitDisabled && typeof setSubmitDisabled === 'function') {\n setSubmitDisabled(true);\n }\n setSearchValue(event.target.value);\n }}\n type=\"text\"\n value={searchValue}\n />\n
    \n confirmSearchCorrect({ value: searchValue }, true)}\n />\n
    \n {includesOwnHoldingsError &&\n \n }\n {sameHoldingError &&\n \n }\n
    \n }\n
    \n }\n \n }\n \n );\n};\n\nOtherHoldingSelection.propTypes = {\n autoSelect: PropTypes.bool,\n currentHolding: PropTypes.object,\n inBusinessMovement: PropTypes.bool,\n isDeath: PropTypes.bool,\n isGathering: PropTypes.bool,\n movementType: PropTypes.string,\n otherHolding: PropTypes.object,\n setInBusinessMovement: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n setMovementType: PropTypes.func,\n setOtherHolding: PropTypes.func.isRequired,\n setSubmitDisabled: PropTypes.func\n};\n\nexport default OtherHoldingSelection;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport AddressSummary from 'components/summary/addressSummary/addressSummary';\nimport Button from 'components/base/button/button';\nimport OtherHoldingSelection from 'components/otherHoldingSelection/otherHoldingSelection';\n\nconst DeathsStep2 = ({\n deathData,\n setDeathData,\n setModal\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const sessionCurrentHolding = storeService.session.get.holding();\n const sessionOtherHolding = storeService.session.get.deathOtherHolding();\n\n const [otherHolding, setOtherHolding] = React.useState(sessionOtherHolding);\n const [submitDisabled, setSubmitDisabled] = React.useState(false);\n\n const nextPage = () => {\n history.push(Routing.deathsSummary);\n helpers.scrollToTop();\n };\n\n const handleChanges = {\n otherHolding: (holding) => {\n const recentlyUsedHolding = storeService.local.get.recentlyUsedDeathHoldings()[holding.value];\n const isManual = recentlyUsedHolding\n ? recentlyUsedHolding.isManual\n : holding\n ? holding.isManual\n : false;\n\n setDeathData({\n ...deathData,\n otherHolding: {\n ...holding,\n isManual\n }\n });\n setOtherHolding({\n ...holding,\n isManual\n });\n\n storeService.session.set.deathOtherHolding({\n ...holding,\n isManual\n });\n }\n };\n\n return (\n <>\n {ready &&\n <>\n
    \n
    \n

    {t('label.locationOfCarcassOptional')}

    \n

    \n {' '}\n {t('deaths.selectLocationOfCarcass')}\n

    \n {!otherHolding &&\n \n }\n\n {otherHolding &&\n {\n storeService.session.remove.deathOtherHolding();\n setOtherHolding(null);\n }}\n queryKeeper={true}\n setModal={setModal}\n />\n }\n
    \n
    \n
    \n \n \n }\n \n );\n};\n\nDeathsStep2.propTypes = {\n deathData: PropTypes.object,\n setDeathData: PropTypes.func,\n setModal: PropTypes.func.isRequired\n};\n\nexport default DeathsStep2;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/summary/animalSummary/animalSummary.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport { tableColumns } from 'services/tableColumns';\nimport Button from 'components/base/button/button';\nimport Table from 'components/table/table';\n\nconst AnimalSummary = ({\n animalsData,\n batchesDataProp,\n label,\n onClick,\n setAnimalsData,\n setModal,\n tagOnly = false\n}) => {\n const { ready, t } = useTranslation();\n\n const speciesId = storeService.session.get.species().id;\n\n const [paginationParams, setPaginationParams] = React.useState({\n batch: {\n ...constants.pagination.defaultParams,\n [constants.pagination.bottom]: {\n ...constants.pagination.defaultParams[constants.pagination.bottom],\n totalLabel: 'label.totalBatches'\n }\n },\n individual: constants.pagination.defaultParams\n });\n\n const numberOfAnimalsInBatches = animalsData?.batchList?.length > 0 ? animalsData.batchList.reduce((total, item) => total + parseInt(item.animalTotal), 0) : 0;\n const numberOfIndividualAnimals = animalsData?.animalsBeingMoved ? animalsData.animalsBeingMoved.length : (animalsData?.animalsToChange ? animalsData.animalsToChange.length : 0);\n const totalAnimalsInMovement = numberOfAnimalsInBatches + numberOfIndividualAnimals;\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n batch: {\n ...prevState.batch,\n [constants.pagination.bottom]: {\n ...prevState.batch[constants.pagination.bottom],\n total: animalsData?.batchList?.length\n }\n },\n individual: {\n ...prevState.individual,\n [constants.pagination.bottom]: {\n ...prevState.individual[constants.pagination.bottom],\n total: animalsData?.animalsBeingMoved ? animalsData.animalsBeingMoved.length : (animalsData?.animalsToChange ? animalsData.animalsToChange.length : 0)\n }\n }\n }));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animalsData]);\n\n return (\n <>\n {ready &&\n <>\n
    \n
    \n

    {t('label.animalDetails')}

    \n
    \n\n {onClick &&\n
    \n \n
    \n }\n
    \n
    \n {animalsData &&\n <>\n {numberOfAnimalsInBatches > 0 &&\n
    \n \n {numberOfAnimalsInBatches}{' '}\n {t(helpers.text.pluralCheck(numberOfAnimalsInBatches, 'label.animalIdentifiedByBatch'))}\n \n
    \n total + parseInt(item.animalTotal), 0), 'table.title.batches'),\n data: [\n animalsData.batchList?.reduce((total, item) => total + parseInt(item.animalTotal), 0)\n ]\n }}\n />\n
    \n
    \n }\n\n {numberOfIndividualAnimals > 0 &&\n
    \n \n {numberOfIndividualAnimals}{' '}\n {t(helpers.text.pluralCheck(numberOfIndividualAnimals, 'label.animalIdentifiedIndividually'))}\n \n
    \n \n
    \n
    \n }\n \n }\n\n {((animalsData &&\n numberOfAnimalsInBatches > 0 &&\n numberOfIndividualAnimals > 0) ||\n !animalsData) &&\n <>\n {totalAnimalsInMovement} {t(label)}\n \n }\n
    \n \n }\n \n );\n};\n\nAnimalSummary.propTypes = {\n animalsData: PropTypes.object,\n batchesDataProp: PropTypes.string.isRequired,\n label: PropTypes.string,\n onClick: PropTypes.func,\n setAnimalsData: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n tagOnly: PropTypes.bool\n};\n\nexport default AnimalSummary;\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport bff, { bffResponse } from 'services/bff';\nimport classes from 'frontEnd/deaths/summary/summary.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport AddressSummary from 'components/summary/addressSummary/addressSummary';\nimport AnimalSummary from 'components/summary/animalSummary/animalSummary';\nimport Button from 'components/base/button/button';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport DateSummary from 'components/summary/dateSummary/dateSummary';\n\nconst Summary = ({\n currentHolding,\n deathData,\n missingOrFound,\n missingOrFoundData,\n setData,\n setDataChanged,\n setMissingOrFound,\n setModal\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const [numberOfDeadAnimals, setNumberOfDeadAnimals] = useState();\n const [numberOfMissingOrFoundAnimals, setNumberOfMissingOrFoundAnimals] = useState();\n const [holdingInfo, setHoldingInfo] = useState();\n const [pending, setPending] = useState(false);\n const species = storeService.session.get.species();\n\n const dateMissingLabel = 'deaths.dateOfMissing' + species.id;\n const dateFoundLabel = 'deaths.dateOfFound' + species.id;\n\n const componentClassNames = [\n 'row',\n classes.summary\n ].join(' ').trim();\n\n const nextPage = () => {\n setPending(true);\n\n if (deathData) {\n postDeathData();\n } else {\n postMissingOrFoundData();\n }\n };\n\n const postDeathData = () => {\n if (\n (deathData.animalsBeingMoved?.length > 0) ||\n (deathData.batchList?.length > 0)\n ) {\n const data = {\n poll: config.POLLS_ENABLED,\n ...deathData,\n deathDate: deathData.deathDate,\n speciesName: species.name,\n holding: currentHolding.value\n };\n delete data.otherHolding;\n delete data.batches;\n\n if (deathData.otherHolding) {\n if (deathData.otherHolding.isManual) {\n data.approvedDisposalRoute = deathData.otherHolding.value;\n } else {\n data.disposalHolding = deathData.otherHolding.value;\n }\n }\n\n bff\n .post('/death', data)\n .then((res) => {\n const { data } = res;\n\n storeService.session.set.confirmRequestId(bffResponse.requestId(data));\n storeService.session.set.confirmPollingStatus(bffResponse.status(data));\n storeService.session.set.confirmPollingErrors(bffResponse.errors(data));\n storeService.session.set.confirmPollingWarnings(bffResponse.warnings(data));\n\n storeService.session.remove.dataChanged();\n\n history.push(Routing.deathsConfirm);\n\n setData(null);\n setDataChanged(false);\n setPending(false);\n })\n .catch((error) => {\n errors.BFF(error, setModal);\n setPending(false);\n });\n }\n };\n\n const postMissingOrFoundData = () => {\n const data = {\n poll: config.POLLS_ENABLED,\n ...missingOrFoundData,\n date: missingOrFoundData.date,\n animalCount: numberOfMissingOrFoundAnimals,\n speciesName: species.name\n };\n\n delete data.reportType;\n\n let endpoint;\n let redirect;\n if (helpers.option.reportType.isMissing(missingOrFound)) {\n endpoint = '/missing';\n redirect = Routing.missingConfirm;\n\n data.poll = true;\n data.holding = currentHolding.value;\n } else if (helpers.option.reportType.isFound(missingOrFound)) {\n endpoint = '/found';\n redirect = Routing.foundConfirm;\n\n data.poll = true;\n data.holding = config.UNKNOWN;\n data.destinationHolding = currentHolding.value;\n }\n\n bff\n .post(endpoint, data)\n .then((res) => {\n const { data } = res;\n\n storeService.session.set.confirmRequestId(bffResponse.requestId(data));\n storeService.session.set.confirmPollingStatus(bffResponse.status(data));\n storeService.session.set.confirmPollingErrors(bffResponse.errors(data));\n storeService.session.set.confirmPollingWarnings(bffResponse.warnings(data));\n storeService.session.set.confirmMovementReference(bffResponse.movementRef(data));\n\n storeService.session.remove.dataChanged();\n\n history.push(redirect);\n\n setData(null);\n setMissingOrFound(null);\n setDataChanged(false);\n })\n .catch((error) => {\n errors.BFF(error, setModal);\n setPending(false);\n });\n };\n\n useEffect(() => {\n const holding = storeService.session.get.holding();\n if (holding) {\n setHoldingInfo(holding);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (deathData) {\n if (typeof deathData.animalsBeingMoved === 'string') {\n setNumberOfDeadAnimals(1);\n return;\n }\n\n if (deathData.batchList?.length > 0) {\n const result = deathData.batchList.reduce((total, item) => total + parseInt(item.animalTotal), 0);\n setNumberOfDeadAnimals(result);\n } else {\n setNumberOfDeadAnimals(deathData.animalsBeingMoved.length);\n }\n }\n\n if (helpers.option.reportType.isFound(missingOrFound)) {\n if (missingOrFoundData.batchList?.length > 0) {\n const result = missingOrFoundData.batchList.reduce((total, item) => total + parseInt(item.animalTotal), 0);\n setNumberOfMissingOrFoundAnimals(result);\n } else {\n setNumberOfMissingOrFoundAnimals(missingOrFoundData.animalsBeingMoved.length);\n }\n }\n\n if (helpers.option.reportType.isMissing(missingOrFound)) {\n if (missingOrFoundData.batchList?.length > 0) {\n const result = missingOrFoundData.batchList.reduce((total, item) => total + parseInt(item.animalTotal), 0);\n setNumberOfMissingOrFoundAnimals(result);\n } else {\n setNumberOfMissingOrFoundAnimals(missingOrFoundData.animalsBeingMoved.length);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [holdingInfo, deathData, missingOrFoundData]);\n\n const redirectDeath = (path) => {\n storeService.session.set.deathAmend(true);\n history.push(path);\n };\n\n return (\n <>\n {ready &&\n <>\n {pending &&\n \n }\n\n {!pending &&\n <>\n

    {deathData\n ? t('deaths.deathSummary')\n : helpers.option.reportType.isMissing(missingOrFound)\n ? t('deaths.missingSummary')\n : t('deaths.foundSummary')}\n

    \n
    \n
    \n {\n deathData\n ? redirectDeath(Routing.deathsStep1)\n : history.push(Routing.missingFoundStep1);\n }}\n />\n {deathData &&\n redirectDeath(Routing.deathsStep2)}\n queryKeeper={true}\n setModal={setModal}\n />\n }\n {\n numberOfDeadAnimals\n ? redirectDeath(Routing.deathsStep1)\n : history.push(Routing.missingFoundStep1);\n }}\n setAnimalsData={setData}\n setModal={setModal}\n />\n
    \n
    \n\n
    \n
    \n \n
    \n
    \n history.push(Routing.keeperHolding)}\n />\n
    \n
    \n \n }\n \n }\n \n );\n};\n\nSummary.propTypes = {\n currentHolding: PropTypes.object,\n deathData: PropTypes.object,\n missingOrFound: PropTypes.string,\n missingOrFoundData: PropTypes.object,\n setData: PropTypes.func.isRequired,\n setDataChanged: PropTypes.func,\n setMissingOrFound: PropTypes.func,\n setModal: PropTypes.func.isRequired\n};\n\nexport default Summary;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory, Redirect } from 'react-router-dom';\nimport { Prompt } from 'react-router';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport { bffStatus } from 'services/bff';\nimport navigation from 'services/navigation';\nimport userRoleType from 'services/userRoleType';\nimport permissions from 'services/permissions';\nimport storeService from 'services/storeService';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport DeathsStep1 from 'frontEnd/deaths/step1/deathsStep1';\nimport DeathsStep2 from 'frontEnd/deaths/step2/deathsStep2';\nimport Summary from 'frontEnd/deaths/summary/summary';\nimport TabsNavigational from 'components/base/tabsNavigational/tabsNavigational';\nimport constants from 'services/constants';\n\nconst promptPathList = [\n Routing.home,\n Routing.keeperHolding,\n Routing.movements,\n Routing.movementsStep1,\n Routing.missingFound,\n Routing.animals,\n Routing.taggingApplications,\n Routing.holdingRegisterDetails,\n Routing.logout\n];\n\nconst STEP_01 = '1';\nconst STEP_02 = '2';\n\nconst Deaths = ({\n location,\n setModal,\n setPermission\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const holding = storeService.session.get.holding();\n\n const sessionDeathData = storeService.session.get.death();\n const sessionDataChanged = storeService.session.get.dataChanged();\n const role = storeService.session.get.permissions();\n\n const [deathData, setDeathData] = React.useState(sessionDeathData ?? null);\n\n const [dataChanged, setDataChanged] = React.useState(sessionDataChanged ?? false);\n\n const confirmation = {\n viewSummary: (requestId, requestType) => ({\n id: 'viewSummary',\n label: 'button.viewSummary',\n onClick: () => {\n setPermission(userRoleType.GENERIC);\n storeService.session.set.permissions(userRoleType.GENERIC);\n storeService.session.remove.holding();\n\n setTimeout(() => {\n history.push({\n pathname: Routing.activityDetails + requestId,\n state: {\n data: {\n requestId,\n requestType,\n current: {\n returnUrl: permissions.isKeeper() ? Routing.deaths : Routing.userActivity,\n permissions: role,\n holding\n }\n }\n }\n });\n }, [100]);\n }\n }),\n\n returnToUserActivity: () => ({\n id: 'returnToUserActivity',\n label: 'button.returnToUserActivity',\n onClick: () => {\n storeService.session.remove.dataChanged();\n storeService.session.set.permissions(userRoleType.GENERIC);\n setPermission(userRoleType.GENERIC);\n history.push(Routing.userActivity);\n }\n })\n };\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.deaths.length) !== Routing.deaths) {\n storeService.session.remove.dataChanged();\n storeService.session.removeAll.confirm();\n storeService.session.removeAll.death();\n storeService.session.removeAll.searchResults();\n storeService.session.removeAll.tableFilters();\n unListen();\n }\n });\n\n window.onpopstate = () => {\n if (storeService.session.get.confirm()) {\n history.push(Routing.deaths);\n }\n };\n }, [history]);\n\n const stepPicker = (pathname) => {\n const routingsNeedDeathData = [Routing.deathsStep2, Routing.deathsSummary];\n\n if (routingsNeedDeathData.includes(pathname) && !deathData) {\n return ;\n }\n\n switch (pathname) {\n case Routing.deathsStep1:\n default: {\n storeService.session.removeAll.confirm();\n\n return (\n \n
    \n \n {t('deaths.step-heading')}\n {STEP_01}\n {t('deaths.step-heading-pages')}\n \n \n
    \n
    \n \n );\n }\n\n case Routing.deathsStep2: {\n return (\n <>\n \n {t('deaths.step-heading')}\n {STEP_02}\n {t('deaths.step-heading-pages')}\n \n \n \n );\n }\n\n case Routing.deathsSummary: {\n storeService.session.remove.deathAmend();\n return (\n \n );\n }\n\n case Routing.deathsConfirm: {\n const requestId = storeService.session.get.confirmRequestId();\n const pollingStatus = storeService.session.get.confirmPollingStatus();\n const pollingErrors = storeService.session.get.confirmPollingErrors();\n const pollingWarnings = storeService.session.get.confirmPollingWarnings();\n\n if (!requestId) {\n return ;\n }\n\n return (\n item)}\n confirm={{\n id: requestId,\n label: 'label.reference',\n onClick: confirmation.returnToUserActivity().onClick\n }}\n errors={pollingErrors}\n isUnamendable={true}\n label=\"label.deathReportSubmitted\"\n setModal={setModal}\n status={pollingStatus}\n warnings={pollingWarnings}\n />\n );\n }\n }\n };\n\n React.useEffect(() => {\n const unListen = history.listen((path) => {\n const amend = storeService.session.get.deathAmend() ?? false;\n if (path.pathname === Routing.deathsStep1 && amend === false) {\n storeService.session.remove.dataChanged();\n storeService.session.removeAll.death();\n storeService.session.removeAll.confirm();\n unListen();\n }\n });\n\n window.onpopstate = () => {\n if (storeService.session.get.confirm()) {\n history.push(navigation.deaths());\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [history]);\n\n return (\n <>\n {ready &&\n <>\n {\n const amend = storeService.session.get.deathAmend() ?? false;\n return (!storeService.session.get.idle() && dataChanged && ((amend !== true && params.pathname === Routing.deathsStep1) ||\n promptPathList.includes(params.pathname))\n ) ? t('warning.unsavedChanges2') : true;\n }}\n />\n

    {t('label.deaths')}

    \n {/* {location.pathname === Routing.deathsStep2 &&

    {t(recordDeathLabel)}

    } */}\n {stepPicker(location.pathname)}\n \n }\n \n );\n};\n\nDeaths.propTypes = {\n location: PropTypes.object.isRequired,\n setModal: PropTypes.func.isRequired\n};\n\nexport default Deaths;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport helpers from 'services/helpers';\nimport classes from 'components/summary/animalDetails/animalDetails.module.scss';\nimport constants from 'services/constants';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport AddBatch from 'components/addBatch/addBatch';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport ManualTagEntry from 'components/manualTagEntry/manualTagEntry';\nimport Table from 'components/table/table';\n\nconst AnimalDetails = ({\n addAnimals,\n data,\n label,\n pending,\n removeAnimal,\n removeAnimalsAll,\n removeAnimalsAllInvalid,\n removeBatch,\n removeBatchesAll,\n removeBatchesAllInvalid,\n restoreAnimal,\n restoreBatch,\n setData,\n setModal,\n setPending,\n updateBatchList\n}) => {\n const { ready, t } = useTranslation();\n\n const species = storeService.session.get.species();\n const speciesId = species ? species.id : '';\n\n const reviewDevices = data.reviewDevices.filter((device) => !device.removed);\n const removedDevices = data.reviewDevices.filter((device) => device.removed);\n const reviewBatches = data.reviewBatches.filter((batch) => !batch.removed);\n const removedBatches = data.reviewBatches.filter((batch) => batch.removed);\n\n const [paginationParams, setPaginationParams] = useState({\n batch: {\n ...constants.pagination.defaultParams,\n [constants.pagination.bottom]: {\n ...constants.pagination.defaultParams[constants.pagination.bottom],\n totalLabel: 'label.totalBatches'\n }\n },\n batchRemoved: {\n ...constants.pagination.defaultParams,\n [constants.pagination.bottom]: {\n ...constants.pagination.defaultParams[constants.pagination.bottom],\n totalLabel: 'label.totalBatches'\n }\n },\n individual: constants.pagination.defaultParams,\n individualRemoved: constants.pagination.defaultParams\n });\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n batch: {\n ...prevState.batch,\n [constants.pagination.bottom]: {\n ...prevState.batch[constants.pagination.bottom],\n total: reviewBatches?.length\n }\n },\n batchRemoved: {\n ...prevState.batchRemoved,\n [constants.pagination.bottom]: {\n ...prevState.batchRemoved[constants.pagination.bottom],\n total: removedBatches?.length\n }\n },\n individual: {\n ...prevState.individual,\n [constants.pagination.bottom]: {\n ...prevState.individual[constants.pagination.bottom],\n total: reviewDevices?.length\n }\n },\n individualRemoved: {\n ...prevState.individualRemoved,\n [constants.pagination.bottom]: {\n ...prevState.individualRemoved[constants.pagination.bottom],\n total: removedDevices?.length\n }\n }\n }));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data]);\n\n return (\n <>\n {ready &&\n <>\n

    {t(label)}

    \n
    \n
    \n \n\n {reviewDevices.length > 0 &&\n <>\n {reviewDevices.some((tag) => helpers.tag.isInvalid(tag)) &&\n \n }\n\n \n \n }\n\n {removedDevices.length > 0 &&\n <>\n \n \n }\n\n \n\n {reviewBatches.length > 0 &&\n <>\n {reviewBatches.some((batch) => helpers.batch.isInvalid(batch)) &&\n \n }\n\n total + parseInt(item.animalTotal), 0), 'table.title.batches'),\n data: [\n reviewBatches?.reduce((total, item) => total + parseInt(item.animalTotal), 0)\n ]\n }}\n />\n \n }\n\n {removedBatches.length > 0 &&\n <>\n total + parseInt(item.animalTotal), 0), 'table.title.batchesRemoved'),\n data: [\n removedBatches?.reduce((total, item) => total + parseInt(item.animalTotal), 0)\n ]\n }}\n />\n \n }\n\n {!helpers.species.isCattleId(speciesId) &&\n \n }\n
    \n
    \n \n }\n \n );\n};\n\nAnimalDetails.propTypes = {\n addAnimals: PropTypes.func,\n data: PropTypes.object,\n label: PropTypes.string,\n pending: PropTypes.bool,\n removeAnimal: PropTypes.func,\n removeAnimalsAll: PropTypes.func,\n removeAnimalsAllInvalid: PropTypes.func,\n removeBatch: PropTypes.func,\n removeBatchesAll: PropTypes.func,\n removeBatchesAllInvalid: PropTypes.func,\n restoreAnimal: PropTypes.func,\n restoreBatch: PropTypes.func,\n setData: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setPending: PropTypes.func,\n updateBatchList: PropTypes.func\n};\n\nexport default AnimalDetails;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/movementDates/movementDates.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport moment from 'moment';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport InputDate from 'components/base/inputDate/inputDate';\n\nconst MovementDates = ({\n arrivalDate,\n arrivalDateError,\n departureDate,\n isMovementOn,\n label,\n movementDate,\n setArrivalDate,\n setArrivalDateError\n}) => {\n const { ready, t } = useTranslation();\n\n const arrivalDateFormatted = arrivalDate ? moment(arrivalDate).format('DD/MM/YYYY') : '';\n const departureDateFormatted = departureDate ? moment(departureDate).format('DD/MM/YYYY') : '';\n\n let movementDateString;\n if (movementDate?.entryDay && movementDate.entryMonth && movementDate.entryYear) {\n movementDateString = moment().year(movementDate.entryYear).month(movementDate.entryMonth - 1).date(movementDate.entryDay);\n } else if (movementDate) {\n movementDateString = movementDate;\n }\n\n const getDates = {\n arrivalMin: () => {\n return helpers.date.formatYYYYMMDD(new Date(movementDateString));\n },\n\n arrivalMax: () => {\n return helpers.date.formatYYYYMMDD(\n helpers.date.momentToJSDate(\n helpers.date.momentMinDate(\n helpers.date.addPeriod(movementDate, 1, constants.period.days),\n helpers.date.todayEndOfDay()\n )\n )\n );\n }\n };\n\n return (\n <>\n {ready &&\n <>\n {isMovementOn &&\n

    {t(label)}

    \n }\n\n {isMovementOn &&\n
    \n
    {isMovementOn ? t('label.departureDate') : t('label.movementDate')}
    \n
    {movementDateString ? moment(movementDateString).format('DD/MM/YYYY') : ''}
    \n
    \n }\n\n {!isMovementOn &&\n <>\n
    \n
    {t('label.departureDate')}
    \n
    {departureDateFormatted}
    \n
    \n {departureDateFormatted !== arrivalDateFormatted &&\n
    \n
    {t('label.arrivalDate')}
    \n
    {arrivalDateFormatted}
    \n
    \n }\n \n }\n\n {isMovementOn &&\n
    \n
    {t('label.arrivalDate')}
    \n
    \n setArrivalDate(event.target.value)}\n setError={setArrivalDateError}\n value={arrivalDate}\n yearLength={4}\n />\n
    \n {!arrivalDate &&\n \n }\n
    \n }\n \n }\n \n );\n};\n\nMovementDates.propTypes = {\n arrivalDate: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string\n ]),\n arrivalDateError: PropTypes.string,\n departureDate: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string\n ]),\n isMovementOn: PropTypes.bool,\n label: PropTypes.string,\n movementDate: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string\n ]),\n setArrivalDate: PropTypes.func,\n setArrivalDateError: PropTypes.func\n};\n\nexport default MovementDates;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport classes from 'components/summary/transportInformationBox/transportInformationBox.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport Address from 'components/address/address';\n\nconst TransportInformationBox = ({\n movementData,\n numberBeingMoved,\n setModal,\n speciesName\n}) => {\n const { ready, t } = useTranslation();\n\n const displayCPH = () => {\n if (!movementData) {\n return null;\n }\n\n if (movementData.otherHolding) {\n return ;\n }\n\n return {t('label.notSpecified')};\n };\n\n return (\n <>\n {ready &&\n
    \n
    {numberBeingMoved}
    \n
    \n {' '}{speciesName}{' '}\n {movementData && helpers.option.movement.isOn(movementData.movementType)\n ? t('movements.transport-information.destination-holding-on')\n : t('movements.transport-information.destination-holding-off')}\n {' '}\n {movementData && helpers.option.movement.isPermitMove(movementData.movementType)\n ? \n : displayCPH()\n }\n
    \n
    \n }\n \n );\n};\n\nTransportInformationBox.propTypes = {\n movementData: PropTypes.object,\n numberBeingMoved: PropTypes.number,\n setModal: PropTypes.func.isRequired,\n speciesName: PropTypes.string\n};\n\nexport default TransportInformationBox;\n","import React, { useState } from 'react';\nimport { Prompt } from 'react-router';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport axios from 'axios';\nimport bff, { bffResponse, bffStatus, isCancel } from 'services/bff';\nimport classes from 'frontEnd/holdingSummary/handshake/handshake.module.scss';\nimport constants from 'services/constants';\nimport config from 'config';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport moment from 'moment';\nimport permissions from 'services/permissions';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport userRoleType from 'services/userRoleType';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport AddressSummary from 'components/summary/addressSummary/addressSummary';\nimport AnimalDetails from 'components/summary/animalDetails/animalDetails';\nimport Button from 'components/base/button/button';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport Linker from 'components/base/linker/linker';\nimport ModalConfirm from 'components/base/modalConfirm/modalConfirm';\nimport MovementDates from 'components/movementDates/movementDates';\nimport TransportInformationBox from 'components/summary/transportInformationBox/transportInformationBox';\nimport { cloneDeep } from 'lodash';\n\nconst Handshake = ({\n location,\n match,\n setModal,\n setPermission\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const sessionDataChanged = storeService.session.get.dataChanged();\n const sessionArrivalDate = storeService.session.get.movementNotificationArrivalDate();\n const role = storeService.session.get.permissions();\n const holding = storeService.session.get.holding();\n const handShakeData = sessionStorage.getItem('handshakeData') !== null ? JSON.parse(sessionStorage.getItem('handshakeData')) : {};\n if (location.state === undefined) {\n location.state = { data: handShakeData };\n }\n\n if (!Object.prototype.hasOwnProperty.call(location.state.data, 'reviewBatches') && Object.prototype.hasOwnProperty.call(handShakeData, 'reviewBatches')) {\n Object.assign(location.state.data, { reviewBatches: handShakeData.reviewBatches }, { reviewDevices: handShakeData.reviewDevices });\n }\n const cph = storeService.session.get.holding().value;\n const originalData = location.state?.data;\n const species = storeService.session.get.species();\n\n const isMovementOn = cph === location.state?.data?.destinationHolding;\n\n const [data, setData] = React.useState(originalData);\n sessionStorage.setItem('handshakeData', JSON.stringify(data));\n const [page, setPage] = React.useState(0);\n const [accept, setAccept] = React.useState(null);\n const [requestId, setRequestId] = React.useState(parseInt(match.params.handshakeId));\n const [dataChanged, setDataChanged] = React.useState(sessionDataChanged ? sessionDataChanged : false);\n const [animalDataChanged, setAnimalDataChanged] = React.useState(sessionDataChanged ? sessionDataChanged : false);\n const [loadPending, setLoadPending] = React.useState(true);\n const [submitPending, setSubmitPending] = React.useState(false);\n const [pollingStatus, setPollingStatus] = React.useState(null);\n const [arrivalDate, setArrivalDate] = useState(sessionArrivalDate ? sessionArrivalDate : data.arrivalDateTime);\n const [arrivalDateError, setArrivalDateError] = useState('');\n const [movementRef, setMovementRef] = React.useState(null);\n const [pollingErrors, setPollingErrors] = React.useState([]);\n const [pollingWarnings, setPollingWarnings] = React.useState([]);\n const [animalsAddedOrRemoved, setAnimalsAddedOrRemoved] = React.useState(false);\n const [showRejectModal, setShowRejectModal] = React.useState(false);\n const [sessionAnimalTotal, setSessionAnimalTotal] = React.useState(0);\n\n const formatInfoData = (inData) => {\n const movementType = cph === inData.destinationHolding ? constants.option.movement.on : constants.option.movement.off;\n\n return {\n movementType,\n otherHolding: {\n value: helpers.option.movement.isOn(movementType) ? inData.sourceHolding : inData.destinationHolding\n }\n };\n };\n\n const confirmation = {\n button: {\n viewSummary: (requestId, requestType) => ({\n id: 'viewSummary',\n label: 'button.viewSummary',\n onClick: () => {\n setPermission(userRoleType.GENERIC);\n storeService.session.set.permissions(userRoleType.GENERIC);\n storeService.session.remove.holding();\n\n setTimeout(() => {\n history.push({\n pathname: Routing.activityDetails + requestId,\n state: {\n data: {\n requestId,\n requestType,\n current: {\n returnUrl: permissions.isKeeper() ? Routing.handshake : Routing.userActivity,\n permissions: role,\n holding\n }\n }\n }\n });\n }, [100]);\n }\n }),\n\n returnToHoldingSummary: () => ({\n id: 'returnToHoldingSummary',\n label: 'button.returnToHoldingSummary',\n onClick: () => {\n storeService.session.remove.dataChanged();\n history.push(Routing.keeperHolding);\n }\n }),\n\n returnToUserActivity: () => ({\n id: 'returnToUserActivity',\n label: 'button.returnToUserActivity',\n onClick: () => {\n storeService.session.remove.dataChanged();\n storeService.session.set.permissions(userRoleType.GENERIC);\n setPermission(userRoleType.GENERIC);\n history.push(Routing.userActivity);\n }\n })\n },\n\n link: {\n viewMovementDocument: (speciesId, ref) => ({\n label: helpers.species.isSheepId(speciesId) || helpers.species.isGoatId(speciesId) ? 'button.viewMovementDocument' : null,\n param: ref,\n type: constants.linkTypes.pdfButton\n })\n }\n };\n\n const postMovement = (params) => {\n setSubmitPending(true);\n\n bff\n .post('/movement', params)\n .then((res) => {\n const { data } = res;\n\n setRequestId(bffResponse.requestId(data));\n setPollingStatus(bffResponse.status(data));\n setPollingErrors(bffResponse.errors(data));\n setPollingWarnings(bffResponse.warnings(data));\n setMovementRef(bffResponse.movementRef(data));\n\n // postHandshake(outData);\n storeService.session.remove.dataChanged();\n setDataChanged(false);\n setPage(1);\n })\n .catch((error) => {\n errors.BFF(error, setModal);\n setAccept(null);\n setShowRejectModal(false);\n })\n .finally(() => {\n setSubmitPending(false);\n });\n };\n\n const postHandshake = (outData) => {\n setSubmitPending(true);\n\n bff\n .post('/handshake', outData)\n .then((res) => {\n const { data } = res;\n\n storeService.session.remove.dataChanged();\n setDataChanged(false);\n\n setRequestId(bffResponse.requestId(data));\n setPollingStatus(bffResponse.status(data));\n setPollingErrors(bffResponse.errors(data));\n setPollingWarnings(bffResponse.warnings(data));\n setMovementRef(bffResponse.movementRef(data));\n\n setPage(1);\n })\n .catch((error) => {\n errors.BFF(error, setModal);\n setAccept(null);\n setShowRejectModal(false);\n })\n .finally(() => {\n setSubmitPending(false);\n });\n };\n\n const processResponse = () => {\n const inData = cloneDeep(data);\n\n inData.addedDevices = inData.reviewDevices.filter((device) => device.added).map((device) => ({ tagNumber: device.tagNumber }));\n inData.removedDevices = inData.reviewDevices.filter((device) => device.removed).map((device) => ({ tagNumber: device.tagNumber }));\n inData.reviewDevices = inData.reviewDevices.map((device) => ({ tagNumber: device.tagNumber })).filter((reviewDevice) => !inData.addedDevices.some((addedDevice) => addedDevice.tagNumber === reviewDevice.tagNumber) && !inData.removedDevices.some((removedDevice) => removedDevice.tagNumber === reviewDevice.tagNumber));\n\n inData.addedBatches = inData.reviewBatches.filter((batch) => batch.added).map((batch) => ({ batchMovementId: batch.batchMovementId, animalTotal: batch.animalTotal, batchNumber: batch.batchNumber }));\n inData.removedBatches = inData.reviewBatches.filter((batch) => batch.removed).map((batch) => ({ batchMovementId: batch.batchMovementId, animalTotal: batch.animalTotal, batchNumber: batch.batchNumber }));\n inData.reviewBatches = inData.reviewBatches.map((batch) => ({ batchMovementId: batch.batchMovementId, animalTotal: batch.animalTotal, batchNumber: batch.batchNumber })).filter((reviewBatch) => !inData.addedBatches.some((addedBatch) => addedBatch.batchNumber === reviewBatch.batchNumber) && !inData.removedBatches.some((removedBatch) => removedBatch.batchNumber === reviewBatch.batchNumber));\n\n const animalsAdded = inData.addedDevices.length > 0 || inData.addedBatches.length > 0;\n const animalsRemoved = inData.removedDevices.length > 0 || inData.removedBatches.length > 0;\n setAnimalsAddedOrRemoved(animalsAdded || animalsRemoved);\n\n let isAccepted = accept;\n if (isAccepted) {\n isAccepted = (inData.reviewDevices.length > 0 || inData.reviewBatches.length > 0) && !animalsAdded;\n }\n\n let arrivalDateTime = null;\n if (arrivalDate) {\n arrivalDateTime = helpers.date.appendTime(arrivalDate, moment(originalData.departureDateTime).hours(), moment(originalData.departureDateTime).minutes(), moment(originalData.departureDateTime).seconds());\n\n if (helpers.date.is.inTheFuture(arrivalDateTime)) {\n arrivalDateTime = helpers.date.appendTime(arrivalDate, moment().hours(), moment().minutes(), moment().seconds());\n }\n }\n\n const outData = {\n poll: config.POLLS_ENABLED,\n requestId,\n isAccepted,\n data: {\n ...cloneDeep(inData),\n cph\n }\n };\n\n delete outData.data.arrivalDateTime;\n\n if (isMovementOn) {\n outData.data.arrivalDate = arrivalDate;\n }\n\n delete outData.addedDevices;\n delete outData.addedBatches;\n\n if (inData.addedDevices.length > 0 || inData.addedBatches.length > 0) {\n outData.data.removedDevices = originalData.reviewDevices;\n outData.data.reviewDevices = [];\n outData.data.addedDevices = [];\n\n outData.data.removedBatches = originalData.reviewBatches;\n outData.data.reviewBatches = [];\n outData.data.addedBatches = [];\n\n let animalsBeingMoved = [];\n let batchList = [];\n let numberOfAnimals = 0;\n\n if (inData.reviewDevices.length > 0) {\n animalsBeingMoved = inData.reviewDevices.map((animal) => ({ tagNumber: animal.tagNumber }));\n numberOfAnimals += inData.reviewDevices.length;\n }\n if (inData.addedDevices.length > 0) {\n animalsBeingMoved = animalsBeingMoved.concat(inData.addedDevices.map((animal) => ({ tagNumber: animal.tagNumber })));\n numberOfAnimals += inData.addedDevices.length;\n }\n\n if (inData.reviewBatches.length > 0) {\n batchList = inData.reviewBatches;\n numberOfAnimals += inData.reviewBatches.reduce((total, batch) => total + parseInt(batch.animalTotal), 0);\n }\n if (inData.addedBatches.length > 0) {\n batchList = batchList.concat(inData.addedBatches);\n numberOfAnimals += inData.addedBatches.reduce((total, batch) => total + parseInt(batch.animalTotal), 0);\n }\n\n const uniqueBatches = batchList.reduce((unique, reduceItem) => {\n const existingItem = unique.find((findItem) => findItem.batchNumber === reduceItem.batchNumber);\n\n if (existingItem) {\n return [\n ...unique.map((mapItem) => {\n if (mapItem.batchNumber === reduceItem.batchNumber) {\n return ({\n ...mapItem,\n animalTotal: mapItem.animalTotal + reduceItem.animalTotal\n });\n }\n\n return mapItem;\n })\n ];\n }\n\n return [...unique, reduceItem];\n }, []);\n\n let arrivalDate = null;\n if (arrivalDateTime) {\n // arrival date should be the date part of user entered arrival date\n arrivalDate = helpers.date.formatForSubmission(arrivalDateTime, false);\n // If the date part of departure and arrival are the same, then use the departure date instead\n if (arrivalDate === helpers.date.formatForSubmission(originalData.departureDateTime, false)) {\n arrivalDate = originalData.departureDateTime;\n }\n }\n const newMovementOutData = {\n poll: config.POLLS_ENABLED,\n movementType: cph === originalData.sourceHolding ? constants.option.movement.off : constants.option.movement.on,\n trackingId: '',\n userHolding: cph,\n sourceHolding: originalData.sourceHolding,\n destinationHolding: originalData.destinationHolding,\n animalCount: numberOfAnimals,\n species: species.name,\n departureDate: originalData.departureDateTime,\n arrivalDate,\n fciData: {},\n transportInformation: {},\n finalAnimalDetails: {\n animalsBeingMoved,\n batchList: uniqueBatches,\n numberOfAnimalsSelected: numberOfAnimals,\n recordAnimalDetails: null,\n recordAnimalTagAllocationDetails: null\n }\n };\n\n postMovement(newMovementOutData);\n } else {\n postHandshake(outData);\n }\n };\n\n const acceptHandshake = () => {\n if (data.reviewDevices?.length > 0 || data.reviewBatches?.length > 0) {\n setAccept(true);\n setSubmitPending(true);\n }\n };\n\n const rejectHandshake = () => {\n setData((prevState) => {\n const newData = cloneDeep(prevState);\n\n newData.reviewDevices = newData.reviewDevices.map((item) => ({\n ...item,\n removed: true,\n added: false\n }));\n newData.reviewBatches = newData.reviewBatches.map((item) => ({\n ...item,\n removed: true,\n added: false\n }));\n\n return newData;\n });\n\n setAccept(false);\n setSubmitPending(true);\n };\n\n const getConfirmLabel = () => {\n if (accept) {\n return animalsAddedOrRemoved ? 'handshake.acceptWithAmendments' : 'handshake.accept';\n }\n\n return 'handshake.reject';\n };\n\n const handleChanges = {\n addAnimals: (animals) => {\n const newData = cloneDeep(data);\n let animalsPresent = newData.reviewDevices.length;\n\n newData.reviewDevices.push(\n ...animals.map((animal) => ({\n ...animal,\n added: true,\n index: animalsPresent++\n }))\n );\n\n setData(newData);\n setDataChanged(true);\n setAnimalDataChanged(true);\n\n const sessionAddedAnimals = storeService.session.get.movementNotificationAddedAnimals();\n storeService.session.set.movementNotificationAddedAnimals([\n ...(sessionAddedAnimals ? sessionAddedAnimals : []),\n ...animals\n ]);\n storeService.session.set.dataChanged(true);\n },\n\n batchList: (batchList) => {\n const newData = cloneDeep(data);\n let batchesPresent = newData.reviewBatches.length - 1;\n\n newData.reviewBatches = batchList.map((batch) => ({\n ...batch,\n added: batch.added !== undefined ? batch.added : true,\n index: batchesPresent++\n }));\n\n setData(newData);\n setDataChanged(true);\n setAnimalDataChanged(true);\n\n const sessionAddedBatches = storeService.session.get.movementNotificationAddedBatches();\n storeService.session.set.movementNotificationAddedBatches([\n ...(sessionAddedBatches ? sessionAddedBatches : []),\n ...batchList.filter((batch) => batch.added === undefined)\n ]);\n storeService.session.set.dataChanged(true);\n },\n\n removeAnimal: (animal) => {\n setData((prevState) => {\n if (animal.added) {\n const newDeviceList = helpers.tag.remove([...prevState.reviewDevices], animal);\n\n const sessionAddedAnimals = storeService.session.get.movementNotificationAddedAnimals();\n storeService.session.set.movementNotificationAddedAnimals(helpers.tag.remove([...sessionAddedAnimals], animal));\n\n return {\n ...prevState,\n reviewDevices: newDeviceList\n };\n }\n\n const newDeviceList = cloneDeep(prevState.reviewDevices);\n const animalToRemove = newDeviceList.find((item) => item.tagNumber === animal.tagNumber);\n\n animalToRemove.removed = true;\n\n const sessionRemovedAnimals = storeService.session.get.movementNotificationRemovedAnimals();\n storeService.session.set.movementNotificationRemovedAnimals([\n ...(sessionRemovedAnimals ? sessionRemovedAnimals : []),\n animal\n ]);\n\n return {\n ...prevState,\n reviewDevices: newDeviceList\n };\n });\n\n setDataChanged(true);\n setAnimalDataChanged(true);\n storeService.session.set.dataChanged(true);\n },\n\n removeAnimalsAll: () => {\n const newData = cloneDeep(data);\n newData.reviewDevices = data.reviewDevices.filter((device) => !device.added).map((device) => ({\n ...device,\n removed: true\n }));\n setData(newData);\n setDataChanged(true);\n setAnimalDataChanged(true);\n\n const sessionRemovedAnimals = storeService.session.get.movementNotificationRemovedAnimals();\n storeService.session.set.movementNotificationRemovedAnimals([\n ...(sessionRemovedAnimals ? sessionRemovedAnimals : []),\n ...data.reviewDevices.filter((device) => !device.added)\n ]);\n storeService.session.set.movementNotificationAddedAnimals([]);\n storeService.session.set.dataChanged(true);\n },\n\n removeAnimalsAllInvalid: () => {\n const invalidAnimals = data.reviewDevices.filter((animal) => helpers.tag.isInvalid(animal)).map((animal) => animal.tagNumber);\n\n const newData = cloneDeep(data);\n newData.reviewDevices = data.reviewDevices.filter((device) => helpers.tag.isValid(device));\n setData(newData);\n\n const sessionAddedAnimals = storeService.session.get.movementNotificationAddedAnimals();\n storeService.session.set.movementNotificationAddedAnimals([\n ...sessionAddedAnimals.filter((tag) => !invalidAnimals.includes(tag.tagNumber))\n ]);\n },\n\n removeBatch: (batch) => {\n setData((prevState) => {\n if (batch.added) {\n const newBatchList = helpers.batch.remove([...prevState.reviewBatches], batch);\n\n const sessionAddedBatches = storeService.session.get.movementNotificationAddedBatches();\n storeService.session.set.movementNotificationAddedBatches(helpers.batch.remove([...sessionAddedBatches], batch));\n\n return {\n ...prevState,\n reviewBatches: newBatchList\n };\n }\n\n const newBatchList = cloneDeep(prevState.reviewBatches);\n const batchToRemove = newBatchList.find((item) => item.batchNumber === batch.batchNumber);\n\n batchToRemove.removed = true;\n\n const sessionRemovedBatches = storeService.session.get.movementNotificationRemovedBatches();\n storeService.session.set.movementNotificationRemovedBatches([\n ...(sessionRemovedBatches ? sessionRemovedBatches : []),\n batch\n ]);\n\n return {\n ...prevState,\n reviewBatches: newBatchList\n };\n });\n\n setDataChanged(true);\n setAnimalDataChanged(true);\n storeService.session.set.dataChanged(true);\n },\n\n removeBatchesAll: () => {\n const newData = cloneDeep(data);\n newData.reviewBatches = data.reviewBatches.filter((batch) => !batch.added).map((batch) => ({\n ...batch,\n removed: true\n }));\n setData(newData);\n setDataChanged(true);\n setAnimalDataChanged(true);\n\n const sessionRemovedBatches = storeService.session.get.movementNotificationRemovedBatches();\n storeService.session.set.movementNotificationRemovedBatches([\n ...(sessionRemovedBatches ? sessionRemovedBatches : []),\n ...data.reviewBatches.filter((batch) => !batch.added).map((batch) => batch.batchNumber)\n ]);\n storeService.session.set.movementNotificationAddedBatches([]);\n storeService.session.set.dataChanged(true);\n },\n\n removeBatchesAllInvalid: () => {\n const invalidBatches = data.reviewBatches.filter((batch) => helpers.batch.isInvalid(batch)).map((batch) => batch.batchNumber);\n\n const newData = cloneDeep(data);\n newData.reviewBatches = data.reviewBatches.filter((batch) => helpers.batch.isValid(batch));\n setData(newData);\n\n const sessionAddedBatches = storeService.session.get.movementNotificationAddedBatches();\n storeService.session.set.movementNotificationAddedBatches([\n ...sessionAddedBatches.filter((batch) => !invalidBatches.includes(batch.batchNumber))\n ]);\n },\n\n restoreAnimal: (animal) => {\n setData((prevState) => {\n const newDeviceList = cloneDeep(prevState.reviewDevices);\n const animalToRemove = newDeviceList.find((item) => item.tagNumber === animal.tagNumber);\n\n delete animalToRemove.removed;\n\n const sessionRemovedDevices = storeService.session.get.movementNotificationRemovedAnimals();\n storeService.session.set.movementNotificationRemovedAnimals(helpers.tag.remove([...sessionRemovedDevices], animal));\n\n return {\n ...prevState,\n reviewDevices: newDeviceList\n };\n });\n\n setDataChanged(true);\n setAnimalDataChanged(true);\n storeService.session.set.dataChanged(true);\n },\n\n restoreBatch: (batch) => {\n setData((prevState) => {\n const newBatchList = cloneDeep(prevState.reviewBatches);\n const batchToRemove = newBatchList.find((item) => item.batchNumber === batch.batchNumber);\n\n delete batchToRemove.removed;\n\n const sessionRemovedBatches = storeService.session.get.movementNotificationRemovedBatches();\n storeService.session.set.movementNotificationRemovedBatches(helpers.batch.remove([...sessionRemovedBatches], batch));\n\n return {\n ...prevState,\n reviewBatches: newBatchList\n };\n });\n\n setDataChanged(true);\n setAnimalDataChanged(true);\n storeService.session.set.dataChanged(true);\n },\n\n setMovementDateArrival: (value) => {\n setArrivalDate(value);\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n }\n };\n\n React.useEffect(() => {\n if (accept !== null && submitPending) {\n processResponse();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [submitPending, accept]);\n\n React.useEffect(() => {\n if (arrivalDate) {\n const today = helpers.date.todayEndOfDay();\n const departureDateMoment = helpers.date.isoToMomentDate(data.movementDate);\n const arrivalDateMoment = helpers.date.stringDateToMoment(arrivalDate);\n\n if (helpers.date.is.beforeDate(arrivalDateMoment, departureDateMoment)) {\n setArrivalDateError('error.arrivalDateBeforeDepartureDate');\n } else if (helpers.date.is.xPeriodAfterDate(arrivalDateMoment, departureDateMoment, 2, constants.period.days)) {\n setArrivalDateError('movements.arrival.moreThan1DayAfterDeparture');\n } else if (helpers.date.is.afterDate(arrivalDateMoment, today)) {\n setArrivalDateError('error.arrivalDateInTheFuture');\n } else {\n setArrivalDateError('');\n storeService.session.set.movementNotificationArrivalDate(arrivalDate);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [arrivalDate]);\n\n /**\n * Making an API call to get and update 'Data' state value.\n **/\n React.useEffect(() => {\n const source = axios.CancelToken.source();\n\n setLoadPending(true);\n\n bff\n .get('/movementAnimals', {\n cancelToken: source.token,\n params: {\n isPreMovement: location.state.data.isPreMovement,\n movementPendingId: location.state.data.movementPendingId,\n movementId: location.state.data.movementId\n }\n })\n .then((res) => {\n setLoadPending(false);\n setData((prevState) => ({\n ...prevState,\n reviewDevices: res.data.data.devices.map((item, index) => ({\n ...item,\n index,\n added: false,\n removed: false,\n ageToDisplay: helpers.animal.ageToDisplay(item.beginBirthPeriod, item.endBirthPeriod),\n dobToDisplay: helpers.animal.dobToDisplay(item.beginBirthPeriod, item.endBirthPeriod)\n })),\n reviewBatches: res.data.data.batches.map((item, index) => ({\n ...item,\n index,\n added: false,\n removed: false\n }))\n }));\n retainedData();\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n\n return () => {\n // Check if \"handshakeData\" is present, then remove it while unmounting\n if (sessionStorage.getItem('handshakeData') !== null) {\n sessionStorage.removeItem('handshakeData');\n }\n source.cancel();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /**\n * retainedData function retain back all previous user's action, if any.\n **/\n const retainedData = () => {\n if (data) {\n const sessionAddedAnimals = storeService.session.get.movementNotificationAddedAnimals();\n const sessionAddedBatches = storeService.session.get.movementNotificationAddedBatches();\n const sessionRemovedAnimals = storeService.session.get.movementNotificationRemovedAnimals();\n const sessionRemovedBatches = storeService.session.get.movementNotificationRemovedBatches();\n\n if (sessionAddedAnimals || sessionAddedBatches || sessionRemovedAnimals || sessionRemovedBatches) {\n\n // Refining Duplicate Entries.\n data.reviewDevices = data.reviewDevices.filter((item) => {\n return item.added !== true;\n });\n data.reviewBatches = data.reviewBatches.filter((item) => {\n return item.added !== true;\n });\n\n const newData = cloneDeep(data);\n\n // Checking Added animals\n if (sessionAddedAnimals) {\n let animalsPresent = newData.reviewDevices.length;\n\n newData.reviewDevices.push(\n ...sessionAddedAnimals.map((animal) => ({\n ...animal,\n added: true,\n index: animalsPresent++\n }))\n );\n }\n\n // Checking Added Batches\n if (sessionAddedBatches) {\n newData.reviewBatches.push(\n ...sessionAddedBatches.map((batch) => ({\n ...batch,\n added: true\n }))\n );\n }\n\n // Checking Removed Animals\n if (sessionRemovedAnimals) {\n sessionRemovedAnimals.forEach((removedAnimal) => {\n newData.reviewDevices.find((animal) => animal.tagNumber === removedAnimal.tagNumber).removed = true;\n });\n }\n\n // Checking Removed Batches\n if (sessionRemovedBatches) {\n sessionRemovedBatches.forEach((removedBatch) => {\n newData.reviewBatches.find((batch) => batch.batchNumber === removedBatch.batchNumber).removed = true;\n });\n }\n\n // Updating 'Data' state variable\n setData(newData);\n }\n }\n };\n\n React.useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.keeperHandshakeDetails.length) !== Routing.keeperHandshakeDetails) {\n storeService.session.remove.movementNotification();\n storeService.session.remove.dataChanged();\n unListen();\n }\n });\n\n window.onpopstate = () => {\n if (storeService.session.get.confirm()) {\n history.push(Routing.keeperHolding);\n }\n };\n }, [history]);\n\n React.useEffect(() => {\n helpers.scrollToTop();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n const sessionAnimalTotalBatches = data.reviewBatches?.reduce((total, batch) => total + parseInt(batch.removed ? 0 : batch.animalTotal), 0);\n const sessionAnimalTotalIndividual = data.reviewDevices?.reduce((total, individual) => total + parseInt(individual.removed ? 0 : 1), 0);\n\n setSessionAnimalTotal(sessionAnimalTotalBatches + sessionAnimalTotalIndividual);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data]);\n\n return (\n <>\n {ready &&\n <>\n {\n return (!storeService.session.get.idle() && dataChanged && params.pathname.substring(0, Routing.handshake.length) !== Routing.handshake) ? 'warning.unsavedChanges1' : true;\n }}\n />\n {submitPending &&\n \n }\n {!submitPending && page === 0 &&\n <>\n \n\n

    {t('label.movementNotification')}

    \n\n \n\n

    {t('label.movementRef')} {data.documentRef}

    \n\n
    \n
    \n \n \n \n
    \n
    \n\n {data.reviewDevices && data.reviewBatches &&\n \n }\n\n
    \n
    \n helpers.batch.isInvalid(batch))) ||\n (data && data.reviewDevices && data.reviewDevices.some((tag) => helpers.tag.isInvalid(tag))) ||\n (isMovementOn && (!arrivalDate || arrivalDateError !== ''))\n }\n label={animalDataChanged ? 'button.submitAmendmentMovement' : 'button.acceptMovement'}\n onClick={acceptHandshake}\n />\n
    \n
    \n setShowRejectModal(true)}\n />\n
    \n
    \n history.push(Routing.keeperHolding)}\n />\n
    \n
    \n\n {showRejectModal &&\n setShowRejectModal(false)}\n modalConfirm={rejectHandshake}\n modalMessage=\"warning.handshakeRejectConfirm\"\n modalTitle=\"label.rejectMovement\"\n />\n }\n \n }\n {!submitPending && page === 1 &&\n <>\n {requestId && !movementRef && // Submission successful but polling timed out\n \n }\n {movementRef && // Submission and polling successful\n 0 ||\n storeService.session.get.movementNotificationAddedBatches()?.length > 0\n ? constants.option.requestType.movement\n : constants.option.requestType.movementHandshake\n )\n : null\n ].filter((item) => item)}\n confirm={{\n id: movementRef,\n label: 'label.movementRef'\n }}\n errors={pollingErrors}\n label={getConfirmLabel()}\n links={[\n confirmation.link.viewMovementDocument(species.id, { movementRef, requestId })\n ]}\n setModal={setModal}\n status={pollingStatus}\n warnings={pollingWarnings}\n />\n }\n \n }\n \n }\n \n );\n};\n\nHandshake.propTypes = {\n location: PropTypes.object,\n match: PropTypes.object,\n setModal: PropTypes.func.isRequired\n};\n\nexport default Handshake;\n","import React, { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'frontEnd/holdingSummary/holdingSummary.module.scss';\nimport navigation from 'services/navigation';\nimport permissions from 'services/permissions';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport Table from 'components/table/table';\nconst sprintf = require('util').format;\n\nconst HoldingSummary = ({\n setModal\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const speciesName = storeService.session.get.species().name;\n const cph = storeService.session.get.holding().value;\n\n const [data, setData] = React.useState([]);\n const [loadPending, setLoadPending] = React.useState(true);\n\n const tableParams = {\n request: {\n url: '/notifications',\n params: {\n cph,\n speciesName\n },\n processData: (data) => data.map((row) => ({\n ...row,\n actionRequired: t('handshake.tableDefaultAction'),\n summary: sprintf(\n '%d %s %s %s',\n row.animalTotal,\n row.species.toLowerCase(),\n t(cph === row.destinationHolding ? 'label.ontoHolding' : 'label.offHolding'),\n cph === row.destinationHolding ? row.sourceHolding : row.destinationHolding\n ),\n reference: row.requestId\n }))\n }\n };\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.keeperHolding.length) !== Routing.keeperHolding &&\n path.pathname.substring(0, Routing.handshake.length) !== Routing.handshake\n ) {\n storeService.session.removeAll.tableFilters();\n unListen();\n }\n });\n }, [history]);\n\n return (\n <>\n {ready && !permissions.isBackOffice() &&\n <>\n

    {t('menu.holdingSummary')}

    \n \n\n {data.length > 0 &&\n
    \n \n {t('label.notificationsRequiringAction')}\n
    \n }\n\n navigation.handshakeDetails(),\n accessor: 'requestId'\n }}\n setData={setData}\n setLoadPending={setLoadPending}\n setModal={setModal}\n store={{\n filters: 'HoldingSummary',\n data: 'HoldingSummary'\n }}\n />\n \n }\n \n );\n};\n\nHoldingSummary.propTypes = {\n setModal: PropTypes.func.isRequired\n};\n\nexport default HoldingSummary;\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport constants from 'services/constants';\nimport classes from 'components/header/navBarSub/navBarSub.module.scss';\nimport helpers from 'services/helpers';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\n\nconst NavBarSub = () => {\n const { ready, t } = useTranslation();\n\n const species = storeService.session.get.species();\n\n const componentClassNames = [\n classes.navSub,\n 'd-lg-block',\n 'd-block'\n ].join(' ').trim();\n\n const menuItems = [\n {\n id: 'holdingDetails',\n linkTo: Routing.holdingRegisterDetails\n },\n helpers.species.isDeerId(species.id) ? null : {\n id: 'tagReplacements',\n linkTo: Routing.holdingRegisterTaggingReplacement,\n hideForSpecies: [\n constants.species.internalLabel.CATTLE,\n constants.species.internalLabel.PIGS,\n constants.species.internalLabel.DEER\n ]\n },\n helpers.species.isDeerId(species.id) ? null : {\n id: 'tagApplications',\n linkTo: Routing.holdingRegisterTaggingApplications,\n hideForSpecies: [\n constants.species.internalLabel.CATTLE,\n constants.species.internalLabel.PIGS,\n constants.species.internalLabel.DEER\n ]\n },\n helpers.species.isDeerId(species.id) ? null : {\n id: 'births',\n linkTo: Routing.holdingRegisterBirths,\n showForSpecies: [\n constants.species.internalLabel.CATTLE\n ]\n },\n {\n id: 'movementsOff',\n linkTo: Routing.holdingRegisterMovementsOff\n },\n {\n id: 'movementsOn',\n linkTo: Routing.holdingRegisterMovementsOn\n },\n {\n id: 'adjacentMoves',\n linkTo: Routing.holdingRegisterAdjacentMovements\n },\n helpers.species.isDeerId(species.id) ? null : {\n id: 'deaths',\n linkTo: Routing.holdingRegisterDeaths\n },\n helpers.species.isDeerId(species.id) ? null : {\n id: 'annualInventory',\n linkTo: Routing.holdingRegisterAnnualInventory\n },\n {\n id: 'download',\n linkTo: Routing.holdingRegisterDownload\n }\n ].filter((item) => item);\n\n const menuLabel = (id) => {\n return t('subMenu.' + id);\n };\n\n const checkMenuItemVisibility = (menuItemKey) => {\n let isVisible = true;\n if (!species) {\n isVisible = false;\n } else if (menuItems[menuItemKey].showForSpecies) {\n isVisible = menuItems[menuItemKey].showForSpecies.includes(species.name);\n } else if (menuItems[menuItemKey].hideForSpecies) {\n isVisible = !menuItems[menuItemKey].hideForSpecies.includes(species.name);\n }\n\n return isVisible;\n };\n\n return (\n <>\n {ready &&\n \n }\n \n );\n};\n\nexport default NavBarSub;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport axios from 'axios';\nimport bff, { isCancel } from 'services/bff';\nimport classes from 'components/base/modal/modal.module.scss';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport storeService from 'services/storeService';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport Button from 'components/base/button/button';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport CheckboxGroup from 'components/base/checkboxGroup/checkboxGroup';\n\nconst ModalProductionTypes = ({\n holdingProductionTypes,\n modalClose,\n setModal,\n setModalHasChanges,\n setProductionTypesSubmitted\n}) => {\n const { ready, t } = useTranslation();\n\n const [productionTypes, setProductionTypes] = React.useState([]);\n const [initialProductionTypes, setInitialProductionTypes] = React.useState([]);\n\n const [showConfirmation, setShowConfirmation] = useState(false);\n\n const [loadPending, setLoadPending] = useState(true);\n const [submitPending, setSubmitPending] = useState(false);\n const [disabled, setDisabled] = useState(true);\n\n const handleChanges = {\n productionTypes: (event) => {\n const selectedTypes = productionTypes.map((o) => ({\n ...o,\n value: (event.target.id === String(o.id)) ? !o.value : o.value\n }));\n\n setModalHasChanges(true);\n setDisabled(false);\n\n setProductionTypes(selectedTypes);\n }\n };\n\n const submit = () => {\n setSubmitPending(true);\n\n const params = {\n holding: storeService.session.get.holding().value,\n productionTypes: productionTypes.filter((item1) => {\n const initialItemStatus = initialProductionTypes.find((item2) => item2.id === item1.id && item2.label === item1.label).value;\n\n return item1.value !== initialItemStatus;\n })\n };\n\n bff\n .post('/productionTypes', params)\n .then(() => {\n setShowConfirmation(true);\n setSubmitPending(false);\n setModalHasChanges(false);\n setProductionTypesSubmitted(true);\n })\n .catch((error) => {\n setSubmitPending(false);\n errors.BFF(error, setModal);\n });\n };\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n bff\n .get('/productionTypes', {\n cancelToken: source.token\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setLoadPending)) {\n const initProdTypes = res.data.map((item) => {\n const returnData = {\n id: item.id,\n label: item.name,\n value: Boolean(holdingProductionTypes.find((type) => type.name === item.name))\n };\n\n if (item.holdingProductionTypeId) {\n returnData.holdingProductionTypeId = item.holdingProductionTypeId;\n }\n\n return returnData;\n });\n\n setProductionTypes(initProdTypes);\n setInitialProductionTypes(initProdTypes);\n setLoadPending(false);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ready &&\n <>\n
    \n {showConfirmation &&\n \n }\n {!showConfirmation &&\n <>\n

    {t('label.productionTypes')}

    \n
    \n
    \n ({\n id: item.id,\n label: item.label,\n value: item.value\n }))}\n onChange={handleChanges.productionTypes}\n pending={loadPending}\n />\n
    \n
    \n \n
    \n
    \n \n }\n
    \n
    \n
    \n
    \n {!showConfirmation &&\n \n }\n \n
    \n
    \n \n }\n \n );\n};\n\nModalProductionTypes.propTypes = {\n holdingProductionTypes: PropTypes.arrayOf(\n PropTypes.exact({\n id: PropTypes.number,\n name: PropTypes.string,\n value: PropTypes.bool\n })\n ),\n modalClose: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n setModalHasChanges: PropTypes.func,\n setProductionTypesSubmitted: PropTypes.func\n};\n\nexport default ModalProductionTypes;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport axios from 'axios';\nimport bff, { isCancel } from 'services/bff';\nimport classes from 'frontEnd/holdingRegister/holdingDetails/holdingDetails.module.scss';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport Address from 'components/address/address';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport NavBarSub from 'components/header/navBarSub/navBarSub';\nimport Button from 'components/base/button/button';\nimport Modal from 'components/base/modal/modal';\nimport ModalConfirm from 'components/base/modalConfirm/modalConfirm';\nimport ModalProductionTypes from 'components/modalProductionTypes/modalProductionTypes';\n\nconst HoldingRegisterDetails = ({\n setModal\n}) => {\n const { ready, t } = useTranslation();\n\n const sessionHolding = storeService.session.get.holding();\n\n const [holding, setHolding] = React.useState(null);\n const [pending, setPending] = React.useState(true);\n const [batches, setBatches] = React.useState([]);\n const [productionTypes, setProductionTypes] = React.useState([]);\n const [modalVisible, setModalVisible] = React.useState(false);\n const [modalHasChanges, setModalHasChanges] = React.useState(false);\n const [productionTypesSubmitted, setProductionTypesSubmitted] = React.useState(false);\n const [confirmCloseModal, setConfirmCloseModal] = React.useState(false);\n\n const getData = (source, sessionHolding) => {\n setPending(true);\n\n bff\n .get('/holdingProductionTypes', {\n cancelToken: source.token,\n params: {\n cph: sessionHolding.value\n }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setPending)) {\n setBatches(res.data.holdingRegisterHoldingBatchNumbers);\n setProductionTypes(res.data.holdingRegisterProductionTypes);\n setPending(false);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setPending(false);\n errors.BFF(error, setModal);\n }\n });\n };\n\n const modal = {\n closeAndReset: () => {\n setModalVisible(false);\n setModalHasChanges(false);\n },\n\n getContent: () => {\n return (\n ({\n id: item.productionType.id,\n name: item.productionType.name\n }))}\n modalClose={modal.hide}\n setModal={setModal}\n setModalHasChanges={setModalHasChanges}\n setProductionTypesSubmitted={setProductionTypesSubmitted}\n />\n );\n },\n\n getHeaderContent: () => {\n return t('label.productionTypes');\n },\n\n hide: (confirmClose) => {\n if (modalHasChanges && !confirmClose) {\n setConfirmCloseModal(true);\n } else if (confirmClose) {\n setConfirmCloseModal(false);\n modal.closeAndReset();\n } else {\n modal.closeAndReset();\n }\n },\n\n show: () => {\n setModalVisible(true);\n }\n };\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n if (sessionHolding) {\n setHolding(storeService.session.get.holding());\n\n getData(source, sessionHolding);\n }\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n if (productionTypesSubmitted) {\n getData(source, sessionHolding);\n setProductionTypesSubmitted(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [productionTypesSubmitted]);\n\n return (\n <>\n {ready &&\n <>\n {modalVisible &&\n <>\n modal.hide(false)}\n >\n {modal.getContent()}\n \n\n {confirmCloseModal &&\n setConfirmCloseModal(false)}\n modalConfirm={() => modal.hide(true)}\n modalMessage=\"warning.unsavedChanges2\"\n modalTitle=\"warning.youHaveUnsavedChanges\"\n />\n }\n \n }\n\n

    {t('reports.holdingRegister')}

    \n \n

    {t('subMenu.holdingDetails')}

    \n \n\n {holding &&\n <>\n
    \n
    {t('label.nameOfRegisteredKeeper')}
    \n
    \n \n
    \n
    \n
    \n
    {t('label.addressOfHolding')}
    \n
    \n \n
    \n
    \n
    \n
    {t('label.holdingIdentifier')}
    \n
    \n {holding.value}\n
    \n
    \n
    \n
    {t('label.additionalIdentifiers')}
    \n
    \n {pending &&\n

    {t('label.fetchingData')}

    \n }\n {!pending &&\n

    ---

    \n }\n
    \n
    \n
    \n
    {t('label.flockHerdNumber')}
    \n
    \n {pending &&\n

    {t('label.fetchingData')}

    \n }\n {!pending &&\n <>\n {batches?.length > 0 && batches.map((batch) => (\n
    {batch.holdingBatchNumber.holdingBatchNumberId}
    \n ))}\n {batches?.length === 0 &&\n

    ---

    \n }\n \n }\n
    \n
    \n
    \n
    {t('label.species')}
    \n
    \n {holding.animalTypes.map((animalType) => (\n
    {t('animal.' + animalType.id)}
    \n ))}\n
    \n
    \n
    \n
    {t('label.typesOfProduction')}
    \n
    \n {pending &&\n

    {t('label.fetchingData')}

    \n }\n {!pending &&\n <>\n {productionTypes?.length > 0 && productionTypes.map((type) => (\n
    {type.productionType.name}
    \n ))}\n {productionTypes?.length === 0 &&\n

    ---

    \n }\n \n }\n
    \n
    \n \n
    \n
    \n
    \n
    {t('label.addressOfKeeper')}
    \n
    \n {pending &&\n

    {t('label.fetchingData')}

    \n }\n {!pending &&\n \n }\n
    \n
    \n \n }\n \n }\n \n );\n};\n\nHoldingRegisterDetails.propTypes = {\n setModal: PropTypes.func.isRequired\n};\n\nexport default HoldingRegisterDetails;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/base/modal/modal.module.scss';\nimport bff, { isCancel } from 'services/bff';\nimport helpers from 'services/helpers';\nimport errors from 'services/errors';\nimport constants from 'services/constants';\nimport axios from 'axios';\nimport storeService from 'services/storeService';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport Button from 'components/base/button/button';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport CPHField from 'components/base/cphField/cphField';\nimport DropdownSearch from 'components/base/dropdownSearch/dropdownSearch';\nimport InputDate from 'components/base/inputDate/inputDate';\nconst sprintf = require('util').format;\n\nconst ModalAdjacentMovements = ({\n modalClose,\n modalData,\n modalMode,\n setConfirmAction,\n setDeleteData,\n setModal,\n setModalHasChanges,\n setModalSubmitted\n}) => {\n const { ready, t } = useTranslation();\n\n const speciesId = storeService.session.get.species().id;\n const currentCph = storeService.session.get.holding().value;\n const holdings = storeService.session.get.holdings();\n\n const [adjacentHolding, setAdjacentHolding] = React.useState('');\n const [frequency, setFrequency] = React.useState(null);\n\n const [fromDate, setFromDate] = React.useState(null);\n const [toDate, setToDate] = React.useState(null);\n\n const [adjacentMovementId, setAdjacentMovementId] = React.useState(null);\n\n const [adjacentHoldingError, setAdjacentHoldingError] = React.useState('');\n const [fromDateError, setFromDateError] = React.useState('');\n const [toDateError, setToDateError] = useState('');\n\n const [holdingLinkTypeId, setHoldingLinkTypeId] = React.useState([]);\n const [frequencyList, setFrequencyList] = React.useState([]);\n\n const [showConfirmation, setShowConfirmation] = useState(false);\n\n const [action, setAction] = useState(null);\n const [pending, setPending] = useState(true);\n const [submitPending, setSubmitPending] = useState(false);\n const [submitStatus, setSubmitStatus] = useState(null);\n const [submitError, setSubmitError] = useState('');\n const [disabled, setDisabled] = useState(true);\n\n const validate = {\n date: (which, date) => {\n let hasError = false;\n\n setFromDateError('');\n setToDateError('');\n\n if (helpers.flags.isFrom(which)) {\n const fromDateIsOver1DayInTheFuture = helpers.date.is.xDaysInTheFutureOverLimit(date, 1);\n const fromDateIsAfterToDate = helpers.date.is.afterDate(date, toDate);\n\n if (!hasError && fromDateIsOver1DayInTheFuture) {\n setFromDateError(fromDateIsOver1DayInTheFuture);\n\n hasError = true;\n }\n\n if (!hasError && fromDateIsAfterToDate) {\n setFromDateError('error.fromDateCannotBeAfterToDate');\n }\n } else if (helpers.flags.isTo(which)) {\n const toDateIsOver1DayInTheFuture = helpers.date.is.xDaysInTheFutureOverLimit(date, 1);\n const toDateIsBeforeFromDate = helpers.date.is.beforeDate(date, fromDate);\n\n if (!hasError && toDateIsOver1DayInTheFuture) {\n setToDateError(toDateIsOver1DayInTheFuture);\n\n hasError = true;\n }\n\n if (!hasError && toDateIsBeforeFromDate) {\n setToDateError('error.toDateCannotBeBeforeFromDate');\n }\n }\n }\n };\n\n const handleChanges = {\n adjacentHolding: (cph) => {\n setAdjacentHoldingError('');\n setAdjacentHolding(cph);\n setModalHasChanges(true);\n },\n\n date: (which, date) => {\n if (helpers.flags.isFrom(which)) {\n setFromDate(date);\n } else if (helpers.flags.isTo(which)) {\n setToDate(date);\n }\n validate.date(which, date);\n setModalHasChanges(true);\n },\n\n frequency: (frequency) => {\n setFrequency(frequency);\n\n const emptyFrequency = frequencyList.find((item) => item.label === '' && item.name === '' && item.value === '');\n\n if (emptyFrequency) {\n const options = [...frequencyList];\n setFrequencyList(options);\n }\n setModalHasChanges(true);\n }\n };\n\n const getDates = {\n fromMax: () => {\n const today = new Date();\n\n if (toDate) {\n return helpers.date.formatYYYYMMDD(toDate);\n }\n\n return helpers.date.formatYYYYMMDD(helpers.date.addPeriod(today, 1, constants.period.days));\n },\n\n toMin: () => {\n return fromDate;\n },\n\n toMax: () => {\n const today = new Date();\n\n return helpers.date.formatYYYYMMDD(helpers.date.addPeriod(today, 1, constants.period.days));\n }\n };\n\n const get = {\n confirmation: () => {\n switch (action) {\n case constants.modalActions.edit:\n return submitStatus === constants.status.error ? t('error.adjacentMovementUpdate') : t('label.adjacentMovementUpdated');\n case constants.modalActions.delete:\n return submitStatus === constants.status.error ? t('error.adjacentMovementDelete') : t('label.adjacentMovementDeleted');\n case constants.modalActions.add:\n default:\n return submitStatus === constants.status.error ? t('error.adjacentMovementSubmit') : t('label.adjacentMovementSubmitted');\n }\n },\n\n title: () => {\n switch (modalMode) {\n case constants.modalActions.edit:\n return t('label.updateAdjacentMovement');\n case constants.modalActions.view:\n return t('label.viewAdjacentMovement');\n case constants.modalActions.add:\n default:\n return t('label.recordAdjacentMovement');\n }\n }\n };\n\n const submitAdjacentMovement = () => {\n setSubmitPending(true);\n\n const params = {\n speciesId,\n holding: currentCph,\n adjacentHolding,\n startDate: fromDate,\n endDate: toDate,\n holdingLinkTypeId,\n holdingLinkTypeOptionId: frequency\n };\n\n if (Object.keys(holdings).includes(adjacentHolding)) {\n params.inBusiness = true;\n }\n\n if (adjacentMovementId) {\n setAction(constants.modalActions.edit);\n\n params.id = adjacentMovementId;\n params.fromDate = modalData.fromDate;\n } else {\n setAction(constants.modalActions.add);\n }\n\n bff\n .post('/adjacentMovement', params)\n .then(() => {\n storeService.session.removeAll.searchResults();\n\n setSubmitStatus(constants.status.success);\n setShowConfirmation(true);\n setSubmitPending(false);\n setModalHasChanges(false);\n setModalSubmitted(true);\n })\n .catch((error) => {\n const data = error.response && error.response.data ? error.response.data : undefined;\n let errorMessage = data && data.errorMessage ? data.errorMessage : data && data.message ? data.message : error;\n\n if (errorMessage.includes('already exists')) {\n errorMessage = sprintf(t('label.adjacentMovementExists'), currentCph, adjacentHolding, helpers.date.format(fromDate));\n }\n\n setSubmitStatus(constants.status.error);\n setSubmitError({\n code: error?.response?.status,\n message: errorMessage ? errorMessage : error?.response?.statusText\n });\n setModalHasChanges(false);\n setShowConfirmation(true);\n setSubmitPending(false);\n });\n };\n\n useEffect(() => {\n setDisabled(\n !(\n fromDate && !fromDateError &&\n (\n !toDate ||\n (toDate && !toDateError)\n ) &&\n frequency &&\n adjacentHolding && helpers.validate.cphNumber(adjacentHolding)\n )\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fromDate, fromDateError, toDate, toDateError, frequency, adjacentHolding]);\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n bff\n .get('/frequencyOptions', {\n cancelToken: source.token\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setPending)) {\n const options = res.data.map((item) => ({\n label: item.name,\n name: item.name,\n value: item.id\n }));\n\n setHoldingLinkTypeId(res.data[0].holdingLinkTypeId);\n setFrequencyList(options);\n\n setPending(false);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (modalData) {\n setAdjacentMovementId(modalData.id);\n setFromDate(helpers.date.formatForSubmission(modalData.startDate));\n setAdjacentHolding(modalData.adjacentHolding);\n setFrequency(modalData?.holdingLinkTypeOption?.id ? modalData.holdingLinkTypeOption.id : modalData.holdingLinkTypeOptionId);\n\n const tempToDate = helpers.date.formatForSubmission(modalData.endDate);\n if (tempToDate !== '9999-12-31') {\n setToDate(tempToDate);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [modalData]);\n\n return (\n <>\n {ready &&\n <>\n
    \n {showConfirmation &&\n \n }\n {!showConfirmation &&\n <>\n

    {get.title()}

    \n
    \n
    \n
    \n handleChanges.date(constants.flags.from, event.target.value)}\n setError={setFromDateError}\n value={fromDate}\n yearLength={4}\n />\n
    \n
    \n \n
    \n
    \n handleChanges.frequency(event.target.value)}\n optionList={frequencyList}\n pending={pending}\n placeholder=\"prompt.pleaseSelect\"\n value={frequency}\n />\n
    \n
    \n handleChanges.date(constants.flags.to, event.target.value)}\n optional={true}\n setError={setToDateError}\n value={toDate}\n yearLength={4}\n />\n
    \n
    \n
    \n \n
    \n
    \n \n }\n
    \n
    \n
    \n
    \n {!showConfirmation &&\n <>\n {(modalMode === constants.modalActions.edit || modalMode === constants.modalActions.view) &&\n {\n setDeleteData({\n adjacentMovementId,\n currentCph,\n adjacentHolding,\n holdingLinkTypeId,\n holdings,\n setAction,\n setShowConfirmation,\n setSubmitStatus\n });\n setConfirmAction(constants.modalActions.delete);\n }}\n type=\"submit\"\n />\n }\n {(modalMode === constants.modalActions.edit || modalMode === constants.modalActions.add) &&\n \n }\n \n }\n\n \n
    \n
    \n \n }\n \n );\n};\n\nModalAdjacentMovements.propTypes = {\n modalClose: PropTypes.func,\n modalData: PropTypes.any,\n modalMode: PropTypes.string,\n setConfirmAction: PropTypes.func.isRequired,\n setDeleteData: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setModalHasChanges: PropTypes.func,\n setModalSubmitted: PropTypes.func\n};\n\nexport default ModalAdjacentMovements;\n","import React from 'react';\nimport constants from 'services/constants';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport DropdownSearch from 'components/base/dropdownSearch/dropdownSearch';\n\nconst buildYearsList = (doNotAllowCurrentYear) => {\n const yearsArray = [];\n const now = moment();\n const numberOfYears = doNotAllowCurrentYear ? 16 : 15;\n\n for (let i = 1; i <= numberOfYears; i++) {\n const year = now.format('YYYY');\n\n if (!doNotAllowCurrentYear || (doNotAllowCurrentYear && Number(year) !== moment().year())) {\n yearsArray.push({\n value: year,\n name: year\n });\n }\n\n now.subtract(1, constants.period.years);\n }\n\n return yearsArray;\n};\n\nconst DropdownYear = ({\n className,\n doNotAllowCurrentYear,\n error,\n label,\n name,\n onChange,\n previouslySubmittedYears,\n value\n}) => {\n const [itemList, setItemList] = React.useState(buildYearsList(doNotAllowCurrentYear));\n\n React.useEffect(() => {\n if (previouslySubmittedYears) {\n setItemList((prevState) => prevState.filter((year) => !previouslySubmittedYears.includes(year.value)));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n );\n};\n\nDropdownYear.propTypes = {\n className: PropTypes.string,\n doNotAllowCurrentYear: PropTypes.bool,\n error: PropTypes.string,\n label: PropTypes.string,\n name: PropTypes.string,\n onChange: PropTypes.func,\n previouslySubmittedYears: PropTypes.arrayOf(\n PropTypes.string\n ),\n value: PropTypes.string\n};\n\nexport default DropdownYear;\n","import React, { useEffect } from 'react';\nimport axios from 'axios';\nimport bff, { isCancel } from 'services/bff';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport { useTranslation } from 'react-i18next';\nimport DropdownYear from 'components/dropdownYear/dropdownYear';\nimport FieldLabel from 'components/base/fieldLabel/fieldLabel';\nimport Hint from 'components/base/hint/hint';\nimport TextEntry from 'components/base/textEntry/textEntry';\n\nconst AnnualYear = ({\n displayName,\n groupHint,\n groupLabel,\n label,\n month,\n name,\n onChange,\n previouslySubmittedYears,\n setLoadPending,\n setModal,\n setModalHasChanges,\n value\n}) => {\n const { ready, t } = useTranslation();\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n bff\n .get('/annualDate', {\n cancelToken: source.token,\n params: {\n cph: storeService.session.get.holding().value,\n species: storeService.session.get.species().name\n }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setLoadPending)) {\n const mth = parseInt(res.data.month) - 1;\n const today = moment();\n const incoming = moment().month(mth).date(res.data.day);\n let theYear = parseInt(today.format('YYYY'));\n if (today.diff(incoming, constants.period.days) < 0) {\n theYear -= 1;\n }\n const monthUi = t('reports.annualInventory.firstDate') + ' ' + t('months.' + (mth + 1).toString());\n onChange({ target: { name: displayName, value: monthUi } });\n if (!previouslySubmittedYears.includes(theYear.toString())) {\n onChange({ target: { name: name, value: theYear.toString() } });\n }\n onChange({ target: { name: 'day', value: res.data.day } });\n onChange({ target: { name: 'month', value: res.data.month } });\n onChange({ target: { name: 'stockType', value: res.data.stockType } });\n setLoadPending(false);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ready &&\n <>\n \n \n
    \n
    \n \n
    \n
    \n {\n setModalHasChanges(true);\n onChange(event);\n }}\n previouslySubmittedYears={previouslySubmittedYears}\n value={value}\n />\n
    \n
    \n \n }\n \n );\n};\n\nAnnualYear.propTypes = {\n displayName: PropTypes.string.isRequired,\n groupHint: PropTypes.string.isRequired,\n groupLabel: PropTypes.string.isRequired,\n label: PropTypes.string,\n month: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n previouslySubmittedYears: PropTypes.arrayOf(\n PropTypes.string\n ).isRequired,\n setLoadPending: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setModalHasChanges: PropTypes.func,\n value: PropTypes.string.isRequired\n};\n\nexport default AnnualYear;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport bff from 'services/bff';\nimport classes from 'components/base/modal/modal.module.scss';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport storeService from 'services/storeService';\nimport { useTranslation } from 'react-i18next';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport AnnualYear from 'components/annualYear/annualYear';\nimport Button from 'components/base/button/button';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport InputDate from 'components/base/inputDate/inputDate';\nimport NumberEntry from 'components/base/numberEntry/numberEntry';\n\nconst ModalAnnualInventory = ({\n modalClose,\n previouslySubmittedYears,\n setModal,\n setModalHasChanges,\n setModalSubmitted\n}) => {\n const { ready, t } = useTranslation();\n\n const speciesId = storeService.session.get.species().id;\n\n const numberHint = 'reports.annualInventory.totalNumberHint' + speciesId;\n const numberLabel = 'reports.annualInventory.totalNumber' + speciesId;\n\n const [reportDate, setReportDate] = React.useState(null);\n const [inventoryMonth, setInventoryMonth] = React.useState('');\n const [inventoryYear, setInventoryYear] = React.useState('DEFAULT');\n const [totalNumber, setTotalNumber] = React.useState('');\n\n const [entryDateError, setEntryDateError] = useState('');\n const [day, setDay] = useState();\n const [month, setMonth] = useState();\n\n const [showConfirmation, setShowConfirmation] = useState(false);\n const [stockType, setStockType] = useState('');\n const [requestId, setRequestId] = useState(null);\n\n const [loadPending, setLoadPending] = useState(true);\n const [submitPending, setSubmitPending] = useState(false);\n const [disabled, setDisabled] = useState(true);\n\n const validateDate = (date) => {\n let hasError = false;\n\n setEntryDateError('');\n\n const inventoryDate = helpers.date.formatYYYYMMDD(new Date(inventoryYear, month - 1, day));\n\n const dateIsInTheFuture = helpers.date.is.inTheFuture(date, 'annualInventory');\n const dateIsBeforeInventoryDate = helpers.date.is.beforeDate(date, inventoryDate);\n const dateIs31DaysAfterInventoryDate = helpers.date.is.xPeriodAfterDate(date, inventoryDate, 31, constants.period.days);\n\n if (!hasError && dateIsBeforeInventoryDate) {\n setEntryDateError('error.inventoryDateBelowRange');\n\n hasError = true;\n }\n\n if (!hasError && dateIs31DaysAfterInventoryDate) {\n setEntryDateError('error.inventoryDateAboveRange');\n\n hasError = true;\n }\n\n if (!hasError && dateIsInTheFuture) {\n setEntryDateError(dateIsInTheFuture);\n }\n };\n\n const handleChanges = {\n reportDate: (date) => {\n setReportDate(date);\n validateDate(date);\n setModalHasChanges(true);\n },\n\n inventoryDate: (event) => {\n switch (event.target.name) {\n case 'inventoryMonth':\n setInventoryMonth(event.target.value);\n break;\n case 'inventoryYear':\n setInventoryYear(event.target.value);\n break;\n case 'day':\n setDay(event.target.value);\n break;\n case 'month':\n setMonth(event.target.value);\n break;\n case 'stockType':\n setStockType(event.target.value);\n break;\n default:\n break;\n }\n },\n\n totalNumber: (event) => {\n setModalHasChanges(true);\n\n setTotalNumber(event.target.value);\n }\n };\n\n const getDates = {\n reportMin: () => {\n return helpers.date.formatYYYYMMDD(new Date(inventoryYear, month - 1, day));\n },\n\n reportMax: () => {\n const inventoryDate = helpers.date.formatYYYYMMDD(new Date(inventoryYear, month - 1, day));\n\n return helpers.date.formatYYYYMMDD(\n helpers.date.momentToJSDate(\n helpers.date.momentMinDate(\n helpers.date.addPeriod(inventoryDate, 30, constants.period.days),\n helpers.date.todayEndOfDay()\n )\n )\n );\n }\n };\n\n const submit = () => {\n setSubmitPending(true);\n\n bff\n .post('/annualInventory', {\n cph: storeService.session.get.holding().value,\n species: storeService.session.get.species().name,\n dateReported: reportDate,\n totalAnimals: totalNumber,\n day: day,\n month: month,\n year: inventoryYear,\n stockType: stockType\n })\n .then((res) => {\n storeService.session.removeAll.searchResults();\n\n setRequestId(String(res.data.requestId));\n setShowConfirmation(true);\n setSubmitPending(false);\n setModalHasChanges(false);\n setModalSubmitted(true);\n })\n .catch((error) => {\n setSubmitPending(false);\n errors.BFF(error, setModal);\n });\n };\n\n useEffect(() => {\n setDisabled(Boolean(!reportDate || entryDateError || !totalNumber || inventoryYear === 'DEFAULT'));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reportDate, entryDateError, totalNumber, inventoryYear]);\n\n return (\n <>\n {ready &&\n <>\n
    \n {showConfirmation &&\n \n }\n {!showConfirmation &&\n <>\n

    {t('reports.annualInventory.title')}

    \n

    {t('reports.annualInventory.desc')}

    \n

    {t('reports.annualInventory.subDesc')}

    \n
    \n
    \n
    \n
    \n
    \n \n
    \n handleChanges.reportDate(event.target.value)}\n setError={setEntryDateError}\n value={reportDate}\n yearLength={4}\n />\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n }\n
    \n
    \n
    \n
    \n {!showConfirmation &&\n \n }\n \n
    \n
    \n \n }\n \n );\n};\n\nModalAnnualInventory.propTypes = {\n modalClose: PropTypes.func,\n previouslySubmittedYears: PropTypes.arrayOf(\n PropTypes.string\n ).isRequired,\n setModal: PropTypes.func.isRequired,\n setModalHasChanges: PropTypes.func,\n setModalSubmitted: PropTypes.func\n};\n\nexport default ModalAnnualInventory;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport bff from 'services/bff';\nimport classes from 'frontEnd/holdingRegister/holdingRegister.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport userRoleType from 'services/userRoleType';\nimport { initialSorting } from 'services/tableColumns';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport Button from 'components/base/button/button';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport Modal from 'components/base/modal/modal';\nimport ModalAdjacentMovements from 'components/modalAdjacentMovements/modalAdjacentMovements';\nimport ModalAnnualInventory from 'components/modalAnnualInventory/modalAnnualInventory';\nimport ModalConfirm from 'components/base/modalConfirm/modalConfirm';\nimport NavBarSub from 'components/header/navBarSub/navBarSub';\nimport Table from 'components/table/table';\n\nconst HoldingRegister = ({\n location,\n setModal,\n setPermission\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const sessionHolding = storeService.session.get.holding();\n const sessionSpecies = storeService.session.get.species();\n const speciesId = sessionSpecies ? sessionSpecies.id : '';\n const sessionPermissions = storeService.session.get.permissions();\n\n const [eventType, setEventType] = React.useState({ current: '', previous: '' });\n const [returnUrl, setReturnUrl] = React.useState('');\n const [data, setData] = React.useState([]);\n const [modalVisible, setModalVisible] = React.useState(false);\n const [modalData, setModalData] = React.useState({});\n const [modalMode, setModalMode] = React.useState(constants.modalActions.add);\n const [modalHasChanges, setModalHasChanges] = React.useState(false);\n const [modalSubmitted, setModalSubmitted] = React.useState(false);\n const [confirmAction, setConfirmAction] = React.useState(false);\n const [deleteData, setDeleteData] = React.useState({});\n const [deletePending, setDeletePending] = React.useState(false);\n const [deleteConfirmed, setDeleteConfirmed] = React.useState(false);\n const [rowToDelete, setRowToDelete] = React.useState(null);\n const [polling, setPolling] = useState({\n requestId: '',\n status: '',\n errors: [],\n warnings: []\n });\n\n const getEndDate = (date) => {\n const formattedDate = helpers.date.format(date);\n return date && formattedDate !== '31/12/9999' ? formattedDate : null;\n };\n\n const supportedRequestTypes = [\n constants.option.requestType.birth,\n constants.option.requestType.correctTransfer,\n constants.option.requestType.death,\n constants.option.requestType.movement,\n constants.option.requestType.movementHandshake,\n constants.option.requestType.tagApplication,\n constants.option.requestType.tagReplacement\n ];\n\n const handleChanges = {\n deleteAdjacentMovement: () => {\n deleteData.setAction(constants.modalActions.delete);\n setDeletePending(true);\n setConfirmAction(false);\n\n const params = {\n params: {\n id: deleteData.adjacentMovementId,\n speciesId,\n holding: deleteData.currentCph,\n adjacentHolding: deleteData.adjacentHolding,\n fromDate: modalData.fromDate,\n holdingLinkTypeId: deleteData.holdingLinkTypeId\n }\n };\n\n if (Object.keys(deleteData.holdings).includes(deleteData.adjacentHolding)) {\n params.params.inBusiness = true;\n }\n\n bff\n .delete('/deleteAdjacentMovement', params)\n .then(() => {\n storeService.session.removeAll.searchResults();\n setEventType((prevState) => ({\n ...prevState,\n refresh: true\n }));\n\n deleteData.setSubmitStatus(constants.status.success);\n deleteData.setShowConfirmation(true);\n setDeletePending(false);\n setDeleteData({});\n })\n .catch((error) => {\n deleteData.setSubmitStatus(constants.status.error);\n errors.BFF(error, setModal);\n setDeletePending(false);\n });\n },\n\n deleteAnnualInventory: () => {\n setDeleteConfirmed(true);\n setDeletePending(true);\n setConfirmAction(false);\n\n const params = {\n cph: sessionHolding.value,\n date: rowToDelete?.inventoryDate,\n poll: config.POLLS_ENABLED,\n species: sessionSpecies.name\n };\n\n bff\n .post('/deleteAnnualInventory', params)\n .then((response) => {\n storeService.session.removeAll.searchResults();\n setEventType((prevState) => ({\n ...prevState,\n refresh: true\n }));\n\n setPolling({\n requestId: String(response.data.requestId),\n status: response.data.poll ? response.data.poll.requestStatus : constants.status.claPending,\n errors: response.data.poll ? response.data.poll.errors : [],\n warnings: response.data.poll ? response.data.poll.warnings : []\n });\n setDeletePending(false);\n })\n .catch((error) => {\n errors.BFF(error, setModal);\n setDeletePending(false);\n });\n }\n };\n\n const modal = {\n closeAndReset: () => {\n setConfirmAction(false);\n setModalVisible(false);\n setModalHasChanges(false);\n setDeleteConfirmed(false);\n },\n\n getContent: () => {\n if (helpers.holdingRegister.types.isAdjacentMovement(eventType.current)) {\n return (\n modalHasChanges ? setConfirmAction(constants.modalActions.close) : modal.hide()}\n modalData={modalData}\n modalMode={modalMode}\n setConfirmAction={setConfirmAction}\n setDeleteData={setDeleteData}\n setModal={setModal}\n setModalHasChanges={setModalHasChanges}\n setModalSubmitted={setModalSubmitted}\n />\n );\n }\n\n if (helpers.holdingRegister.types.isAnnualInventory(eventType.current)) {\n if (deleteConfirmed) {\n if (deletePending && (!polling.requestId || !polling.status)) {\n return (\n \n );\n }\n\n return (\n \n );\n }\n\n return (\n modalHasChanges ? setConfirmAction(constants.modalActions.close) : modal.hide()}\n previouslySubmittedYears={data.map((item) => item.inventoryDate.substring(0, 4))}\n setModal={setModal}\n setModalHasChanges={setModalHasChanges}\n setModalSubmitted={setModalSubmitted}\n />\n );\n }\n },\n\n getHeaderContent: () => {\n if (helpers.holdingRegister.types.isAdjacentMovement(eventType.current)) {\n switch (modalMode) {\n case constants.modalActions.edit:\n return t('label.updateAdjacentMovement');\n case constants.modalActions.view:\n return t('label.viewAdjacentMovement');\n case constants.modalActions.add:\n default:\n return t('label.recordAdjacentMovement');\n }\n } else if (helpers.holdingRegister.types.isAnnualInventory(eventType.current)) {\n return t('label.recordAnnualInventory');\n }\n },\n\n hide: () => {\n if (modalHasChanges) {\n setConfirmAction(false);\n } else {\n modal.closeAndReset();\n }\n },\n\n show: (mode, data) => {\n setModalMode(mode);\n setModalData(data);\n setModalVisible(true);\n }\n };\n\n const tableRowLinks = {\n getHint: (row) => {\n if (row.isBoConfirmOrAmend) {\n return t('label.submittedByLisCustomerSupport');\n }\n\n if (!helpers.holdingRegister.types.isAdjacentMovement(eventType.current) && !supportedRequestTypes.includes(row.requestTypeId)) {\n return t('label.summaryNotAvailable');\n }\n\n return null;\n },\n\n getLinkIf: (row) => {\n return (\n helpers.holdingRegister.types.isAdjacentMovement(eventType.current) ||\n (\n supportedRequestTypes.includes(row.requestTypeId) &&\n (\n (\n !helpers.holdingRegister.types.isMovementOff(eventType.current) &&\n !helpers.holdingRegister.types.isMovementOn(eventType.current)\n ) ||\n (\n helpers.holdingRegister.types.isMovementOff(eventType.current) &&\n row.destinationHolding !== constants.cph.none &&\n !row.isBoConfirmOrAmend\n ) ||\n (\n helpers.holdingRegister.types.isMovementOff(eventType.current) &&\n row.destinationHolding === constants.cph.none &&\n !row.isBoConfirmOrAmend &&\n helpers.option.requestType.isMovement(row.requestTypeId)\n ) ||\n (\n helpers.holdingRegister.types.isMovementOn(eventType.current) &&\n row.sourceHolding !== constants.cph.none &&\n !row.isBoConfirmOrAmend\n ) ||\n (\n helpers.holdingRegister.types.isMovementOn(eventType.current) &&\n row.sourceHolding === constants.cph.none &&\n !row.isBoConfirmOrAmend &&\n helpers.option.requestType.isMovement(row.requestTypeId)\n )\n )\n )\n );\n },\n\n getOnClick: (row) => {\n if (helpers.holdingRegister.types.isAdjacentMovement(eventType.current)) {\n modal.show(getEndDate(row.endDate) ? 'view' : 'edit', row);\n } else {\n setPermission(userRoleType.GENERIC);\n storeService.session.set.permissions(userRoleType.GENERIC);\n storeService.session.remove.holding();\n }\n },\n\n getState: (row) => {\n return {\n requestId: row.requestId,\n requestType: row.requestTypeId,\n current: {\n returnUrl,\n permissions: sessionPermissions,\n holding: sessionHolding\n }\n };\n },\n\n getUrl: (row) => {\n return supportedRequestTypes.includes(row.requestTypeId) ? Routing.activityDetails : null;\n }\n };\n\n const tableParams = {\n request: {\n url: '/holdingRegister',\n params: {\n cph: sessionHolding?.value,\n speciesId\n }\n }\n };\n\n useEffect(() => {\n const pathname = location.pathname.slice(25, -1);\n\n setData([]);\n storeService.session.removeAll.searchResults();\n\n switch (pathname) {\n case 'adjacent-movements':\n setEventType((prevState) => ({\n current: constants.holdingRegister.type.adjacentMovements,\n previous: prevState.current\n }));\n setReturnUrl(Routing.holdingRegisterAdjacentMovements);\n break;\n case 'annual-inventory':\n setEventType((prevState) => ({\n current: constants.holdingRegister.type.annualInventory,\n previous: prevState.current\n }));\n setReturnUrl(Routing.holdingRegisterAnnualInventory);\n break;\n case 'births':\n setEventType((prevState) => ({\n current: constants.holdingRegister.type.births,\n previous: prevState.current\n }));\n setReturnUrl(Routing.holdingRegisterBirths);\n break;\n case 'deaths':\n setEventType((prevState) => ({\n current: constants.holdingRegister.type.deaths,\n previous: prevState.current\n }));\n setReturnUrl(Routing.holdingRegisterDeaths);\n break;\n case 'download':\n setEventType((prevState) => ({\n current: constants.holdingRegister.type.download,\n previous: prevState.current\n }));\n setReturnUrl(Routing.holdingRegisterDownload);\n break;\n case 'movements-off':\n setEventType((prevState) => ({\n current: constants.holdingRegister.type.movementsOff,\n previous: prevState.current\n }));\n setReturnUrl(Routing.holdingRegisterMovementsOff);\n break;\n case 'movements-on':\n setEventType((prevState) => ({\n current: constants.holdingRegister.type.movementsOn,\n previous: prevState.current\n }));\n setReturnUrl(Routing.holdingRegisterMovementsOn);\n break;\n case 'tagging-applications':\n setEventType((prevState) => ({\n current: constants.holdingRegister.type.tagApplications,\n previous: prevState.current\n }));\n setReturnUrl(Routing.holdingRegisterTaggingApplications);\n break;\n case 'tagging-replacement':\n setEventType((prevState) => ({\n current: constants.holdingRegister.type.tagReplacements,\n previous: prevState.current\n }));\n setReturnUrl(Routing.holdingRegisterTaggingReplacement);\n break;\n default:\n setEventType({\n current: '',\n previous: ''\n });\n break;\n }\n }, [location]);\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.holdingRegister.length) !== Routing.holdingRegister &&\n path.pathname.substring(0, Routing.activityDetails.length) !== Routing.activityDetails\n ) {\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n unListen();\n }\n });\n }, [history]);\n\n useEffect(() => {\n if (modalSubmitted) {\n setModalSubmitted(false);\n setEventType((prevState) => ({\n ...prevState,\n refresh: true\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [modalSubmitted]);\n\n return (\n <>\n {ready &&\n <>\n {modalVisible &&\n modalHasChanges ? setConfirmAction(constants.modalActions.close) : modal.hide()}\n >\n {modal.getContent()}\n \n }\n\n {confirmAction &&\n setConfirmAction(false)}\n modalConfirm={() => {\n if (confirmAction === constants.modalActions.close) {\n modal.closeAndReset();\n } else if (helpers.holdingRegister.types.isAdjacentMovement(eventType.current)) {\n handleChanges.deleteAdjacentMovement();\n } else if (helpers.holdingRegister.types.isAnnualInventory(eventType.current)) {\n handleChanges.deleteAnnualInventory();\n }\n }}\n modalMessage={confirmAction === constants.modalActions.delete\n ? (helpers.holdingRegister.types.isAdjacentMovement(eventType.current)\n ? 'warning.deleteAdjacentMovement'\n : 'warning.deleteAnnualInventory'\n )\n : 'warning.unsavedChanges2'\n }\n modalTitle={confirmAction === constants.modalActions.delete\n ? 'label.deleteRecord'\n : 'warning.youHaveUnsavedChanges'\n }\n />\n }\n\n {deleteConfirmed &&\n modal.hide()}\n showConfirmation={true}\n submitChanges={() => {}}\n submitPending={deletePending}\n >\n {modal.getContent()}\n \n }\n\n

    {t('reports.holdingRegister')}

    \n \n

    {t(`subMenu.${eventType.current?.charAt(0).toLowerCase() + eventType.current?.slice(1)}`)}

    \n\n {(helpers.holdingRegister.types.isMovementOff(eventType.current) || helpers.holdingRegister.types.isMovementOn(eventType.current)) &&\n \n }\n\n {helpers.holdingRegister.types.isAnnualInventory(eventType.current) &&\n \n }\n\n {eventType.current &&\n <>\n
    \n {\n setRowToDelete(row);\n setConfirmAction(constants.modalActions.delete);\n },\n speciesId\n }}\n data={data}\n eventType={eventType}\n filtersComponents={{\n [constants.filters.outside]: 'HoldingRegister'\n }}\n hidePagination={helpers.holdingRegister.types.isAnnualInventory(eventType.current)}\n initialSortBy={helpers.holdingRegister.types.isDownload(eventType.current) ? undefined : initialSorting.holdingRegister[eventType.current].accessor}\n initialSortDirection={helpers.holdingRegister.types.isDownload(eventType.current) ? undefined : initialSorting.holdingRegister[eventType.current].direction}\n params={tableParams}\n renderTable={helpers.holdingRegister.types.isDownload(eventType.current) ? false : undefined}\n rowLinks={{\n linkIf: tableRowLinks.getLinkIf,\n hint: tableRowLinks.getHint,\n url: tableRowLinks.getUrl,\n accessor: 'requestId',\n onClick: tableRowLinks.getOnClick,\n state: tableRowLinks.getState\n }}\n setData={setData}\n setEventType={setEventType}\n setModal={setModal}\n store={{\n filters: constants.holdingRegister.table[eventType.current],\n data: constants.holdingRegister.table[eventType.current]\n }}\n />\n\n
    \n {helpers.holdingRegister.types.isAdjacentMovement(eventType.current) &&\n modal.show(constants.modalActions.add)}\n />\n }\n {helpers.holdingRegister.types.isAnnualInventory(eventType.current) &&\n \n }\n
    \n
    \n \n }\n \n }\n \n );\n};\n\nHoldingRegister.propTypes = {\n location: PropTypes.object.isRequired,\n setModal: PropTypes.func.isRequired,\n setPermission: PropTypes.func.isRequired\n};\n\nexport default HoldingRegister;\n","import React, { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport constants from 'services/constants';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport { initialSorting } from 'services/tableColumns';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport Table from 'components/table/table';\n\nconst UserActivity = ({\n setModal\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const sessionUserActivity = storeService.session.get.searchResultsUserActivity();\n\n const [data, setData] = React.useState(sessionUserActivity ? sessionUserActivity.data : []);\n const [requestTypes, setRequestTypes] = React.useState([]);\n const [renderTable, setRenderTable] = React.useState(false);\n\n const tableParams = {\n request: {\n url: '/userActivity'\n }\n };\n\n useEffect(() => {\n const sessionRequestTypes = storeService.session.get.requestTypes();\n if (sessionRequestTypes) {\n setRequestTypes(sessionRequestTypes);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sessionStorage.getItem('requestTypes'), setRequestTypes]);\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.holdings.length) !== Routing.holdings &&\n path.pathname.substring(0, Routing.userActivity.length) !== Routing.userActivity &&\n path.pathname.substring(0, Routing.movementsSummary.length) !== Routing.movementsSummary &&\n path.pathname.substring(0, Routing.activityDetails.length) !== Routing.activityDetails &&\n path.pathname.substring(0, Routing.abattoirMovements.length) !== Routing.abattoirMovements &&\n path.pathname.substring(0, Routing.assemblyMovements.length) !== Routing.assemblyMovements &&\n path.pathname.substring(0, Routing.collectionMovements.length) !== Routing.collectionMovements &&\n path.pathname.substring(0, Routing.marketMovements.length) !== Routing.marketMovements &&\n path.pathname.substring(0, Routing.showMovements.length) !== Routing.showMovements\n ) {\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n unListen();\n }\n });\n }, [history]);\n\n return (\n <>\n {ready &&\n <>\n

    {t('label.userActivity')}

    \n \n\n {requestTypes.length > 0 &&\n 0}\n rowLinks={{\n url: () => Routing.activityDetails,\n accessor: 'requestId',\n linkIf: (row) =>\n row.status.toLowerCase() !== constants.status.processing.toLowerCase() &&\n row.status.toLowerCase() !== constants.status.pending.toLowerCase() &&\n row.status.toLowerCase() !== constants.status.claPending.toLowerCase()\n }}\n setData={setData}\n setModal={setModal}\n setRenderTable={setRenderTable}\n store={{\n filters: 'UserActivity',\n data: 'UserActivity'\n }}\n />\n }\n \n }\n \n );\n};\n\nUserActivity.propTypes = {\n setModal: PropTypes.func.isRequired\n};\n\nexport default UserActivity;\n","import React, { useEffect } from 'react';\nimport permissions from 'services/permissions';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport { orderBy } from 'lodash';\nimport { ReactComponent as CattleIcon } from 'images/svg/icon-cattle.svg';\nimport { ReactComponent as SheepIcon } from 'images/svg/icon-sheep.svg';\nimport { ReactComponent as GoatIcon } from 'images/svg/icon-goat.svg';\nimport { ReactComponent as PigIcon } from 'images/svg/icon-pig.svg';\nimport { ReactComponent as DeerIcon } from 'images/svg/icon-deer.svg';\nimport { holdingHelper } from 'services/holdingHelper';\nimport axios from 'axios';\nimport bff, { isCancel } from 'services/bff';\nimport userRoleType from 'services/userRoleType';\nimport breedsHelper from 'services/breedsHelper';\nimport classes from 'frontEnd/home/home.module.scss';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport navigation from 'services/navigation';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport Address from 'components/address/address';\nimport TabsNavigational from 'components/base/tabsNavigational/tabsNavigational';\nimport UserActivity from 'frontEnd/home/userActivity/userActivity';\nconst sprintf = require('util').format;\n\nconst HoldingButton = ({\n children,\n className,\n holdingKey,\n id,\n onClick\n}) => {\n return (\n \n {children}\n \n );\n};\n\nconst Home = ({\n loading,\n location,\n setModal,\n setPermission\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const myHoldingTabActive = location.pathname === Routing.holdings;\n const userActivityTabActive = location.pathname === Routing.userActivity;\n\n const [totalNotifications, setTotalNotifications] = React.useState(0);\n const [holdings, setHoldings] = React.useState([]);\n const [loadPending, setLoadPending] = React.useState(true);\n const [numHoldings, setNumHoldings] = React.useState([]);\n const [bannerClasses, setBannerClasses] = React.useState([classes.notificationsBanner, 'loading'].join(' '));\n const [disableHoldingAccess, setDisableHoldingAccess] = React.useState(false);\n\n storeService.session.remove.holding();\n storeService.session.remove.species();\n\n const hasKeeperHoldings = holdings.some((holding) => holding.role === userRoleType.KEEPER);\n\n const noteClassname = (animalType) => {\n return animalType.notifications > 0 ? [classes.holding, classes.error].join(' ') : classes.holding;\n };\n\n const selectHolding = (holdingId, speciesId) => {\n if (disableHoldingAccess) {\n setModal({\n modalMessage: 'uiFeatures.featureDisabled',\n modalTitle: 'uiFeatures.featureDisabledTitle'\n });\n } else {\n const selectedHolding = holdings.find((holding) => holding.value === holdingId);\n storeService.session.set.holding(selectedHolding);\n storeService.session.set.permissions(selectedHolding.role);\n setPermission(selectedHolding.role);\n\n if (selectedHolding.animalTypes?.length) {\n storeService.session.set.animals(selectedHolding.animalTypes.map((animal) => animal.name));\n breedsHelper.fetchBreedsOnHolding(null, setModal, holdingId, speciesId);\n breedsHelper.update(selectedHolding.animalTypes.find((animal) => animal.id === speciesId));\n } else {\n storeService.session.set.animals(['none']);\n }\n\n if (permissions.isKeeper()) {\n history.push(Routing.keeperHolding);\n } else if (permissions.isAbattoir()) {\n history.push(navigation.search());\n } else {\n history.push(navigation.movements());\n }\n }\n\n };\n\n const toggleHolding = (holding) => {\n Array.from(document.getElementsByClassName('accordion')).forEach((item) => {\n if (item.id !== 'holding' + holding) {\n item.removeAttribute('open');\n }\n });\n };\n\n useEffect(() => {\n setPermission(userRoleType.GENERIC);\n\n bff\n .get('/rha')\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n setDisableHoldingAccess(JSON.parse(res.data.statusText));\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setDisableHoldingAccess(false);\n }\n });\n\n const sourcesArray = [];\n const sessionHoldings = storeService.session.get.holdings();\n const numberOfHoldings = sessionHoldings ? Object.entries(sessionHoldings)?.length : 0;\n setNumHoldings(numberOfHoldings);\n\n if (sessionHoldings && numberOfHoldings > 0) {\n const sortedHoldings = orderBy(sessionHoldings, 'value').filter((holding) => holdingHelper.region.isEngland(holding.region));\n\n sortedHoldings.forEach((holding) => {\n if (helpers.userRole.isKeeper(holding.role)) {\n holding.loadPending = true;\n }\n holding.notifications = 0;\n holding.isShown = false;\n holding.animalTypes.sort((a, b) => constants.species.order.indexOf(a.id) - constants.species.order.indexOf(b.id));\n });\n\n setHoldings(sortedHoldings);\n\n sortedHoldings.forEach((holding) => {\n if (helpers.userRole.isKeeper(holding.role)) {\n const source = axios.CancelToken.source();\n sourcesArray.push(source);\n const cph = holding.value;\n const holdingsQueryString = holding.animalTypes.map((species) => ({ cph, species: species.name }));\n\n bff\n .get('/notificationsCount', {\n cancelToken: source.token,\n params: {\n holdings: JSON.stringify(holdingsQueryString)\n }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n const specificHolding = res.data.data[holding.value];\n holding.animalTypes.forEach((species) => {\n species.notifications = specificHolding[species.name];\n });\n\n const numberOfNotifications = holding.animalTypes.reduce((total, species) => total + species.notifications, 0);\n holding.notifications = numberOfNotifications;\n holding.loadPending = false;\n\n setHoldings([...sortedHoldings]);\n setTotalNotifications(totalNotifications + numberOfNotifications);\n\n const animalTypesNotifications = {};\n holding.animalTypes.forEach((species) => {\n animalTypesNotifications[species.name] = species.notifications;\n });\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n holding.loadPending = false;\n holding.error = true;\n errors.BFF(error, setModal);\n }\n });\n }\n });\n }\n\n return () => {\n sourcesArray.forEach((source) => source.cancel());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const pending = holdings?.length > 0 ? holdings.some((holding) => holding.loadPending) : true;\n const notifications = holdings.reduce((total, item) => total + item.notifications, 0);\n setLoadPending(pending);\n\n setTotalNotifications(notifications);\n\n if (pending) {\n setBannerClasses([classes.notificationsBanner, classes.notificationsLoading].join(' '));\n } else if (notifications > 0) {\n setBannerClasses([classes.notificationsBanner, classes.notificationsPresent].join(' '));\n } else {\n setBannerClasses([classes.notificationsBanner, classes.notificationsNotPresent].join(' '));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [holdings, loadPending, totalNotifications]);\n\n return (\n <>\n {ready && permissions.isLoggedIn && !permissions.isBackOffice() &&\n
    \n

    {t('menu.home')}

    \n \n\n \n
    \n {hasKeeperHoldings &&\n
    \n

    {t('label.notifications')}

    \n
      \n {loadPending &&\n
    • {t('label.fetchingNotifications')}
    • \n }\n {!loadPending &&\n <>\n {totalNotifications === 0 &&\n
    • {t('label.youHave0Notification')}
    • \n }\n {totalNotifications > 0 &&\n <>\n
    • {sprintf(t(totalNotifications === 1 ? 'label.youHave1Notification' : 'label.youHaveXNotifications'), totalNotifications)}
    • \n
    • {t('label.notificationsDescription')}
    • \n \n }\n \n }\n
    \n
    \n }\n {loading.holdings &&\n

    {t('label.fetchingHoldings')}

    \n }\n\n {!loading.holdings &&\n <>\n {holdings?.length === 0 &&\n <>\n

    {t('label.noHoldings')}

    \n

    \n \n }\n\n {holdings?.length > 0 &&\n <>\n

    {t('label.selectAHolding')}

    \n\n {holdings.map((holding) => {\n const strippedHolding = (holding.value).replace(/\\//g, '');\n\n return (\n toggleHolding(strippedHolding)}\n open={numHoldings === 1}\n >\n \n

    \n \n \n \n\n {helpers.userRole.isKeeper(holding.role) &&\n <>\n {holding.loadPending &&\n {t('label.fetchingNotifications')}\n }\n {!holding.loadPending && holding.notifications > 0 &&\n \n {holding.notifications}{' '}\n {t(helpers.text.pluralCheck(holding.notifications, 'label.unactionedNotification'))}\n \n }\n {!holding.loadPending && holding.error &&\n {t('error.unableToRetrieve')}\n }\n \n }\n

    \n
    \n
    \n {holding.animalTypes.map((animalType) => (\n selectHolding(holding.value, animalType.id)}\n >\n
    \n {helpers.species.isCattleId(animalType.id) &&\n \n }\n {helpers.species.isSheepId(animalType.id) &&\n \n }\n {helpers.species.isGoatId(animalType.id) &&\n \n }\n {helpers.species.isPigId(animalType.id) &&\n \n }\n {helpers.species.isDeerId(animalType.id) &&\n \n }\n
    \n
    0 ? classes.notifications : ''\n ].join(' ').trim()}>\n

    {t('label.species')}: {t('animal.' + animalType.id)}

    \n {helpers.userRole.isKeeper(holding.role) &&\n <>\n {holding.loadPending &&\n {t('label.fetchingNotifications')}\n }\n {!holding.loadPending &&\n 0 ? classes.bold : classes.normal}>{t('label.notifications')} ({animalType.notifications})\n }\n {!holding.loadPending && holding.error &&\n {t('error.unableToRetrieve')}\n }\n \n }\n
    \n \n ))}\n
    \n \n );\n })}\n \n }\n \n }\n
    \n
    0 ? [] : ['hidden']} id={constants.tabs.userActivity} label=\"label.userActivity\" url={holdings?.length > 0 ? navigation.userActivity() : null}>\n {!loading.holdings && holdings?.length > 0 &&\n \n }\n
    \n
    \n
    \n }\n \n );\n};\n\nHome.propTypes = {\n location: PropTypes.object.isRequired,\n setModal: PropTypes.func.isRequired,\n setPermission: PropTypes.func.isRequired\n};\n\nexport default Home;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n AuthenticatedTemplate,\n UnauthenticatedTemplate,\n useMsal\n} from '@azure/msal-react';\nimport { loginRequest } from 'services/b2cService';\nimport classes from 'components/authNavigation/authNavigation.module.scss';\nimport Button from 'components/base/button/button';\n\nconst AuthNavigation = ({ landingVar }) => {\n const { instance } = useMsal();\n\n return (\n
    \n \n \n instance.logoutRedirect({ postLogoutRedirectUri: '/' })\n }\n />\n \n \n instance.loginRedirect(loginRequest)}\n />\n \n
    \n );\n};\n\nAuthNavigation.propTypes = {\n landingVar: PropTypes.bool\n};\n\nexport default AuthNavigation;\n","import React from 'react';\nimport {\n AuthenticatedTemplate,\n UnauthenticatedTemplate,\n useMsal\n} from '@azure/msal-react'; // Import MsalProvider and useMsal\nimport { vetSignUpRequest } from 'services/b2cService';\nimport classes from 'components/vetAuthNavigation/vetAuthNavigation.module.scss';\nimport Button from 'components/base/button/button';\n\nconst VetAuthNavigation = () => {\n const { instance } = useMsal();\n\n const redirectToLogin = () => {\n instance.loginRedirect(vetSignUpRequest);\n };\n\n return (\n
    \n \n \n instance.logoutRedirect({ postLogoutRedirectUri: '/' })\n }\n />\n \n \n \n \n
    \n );\n};\n\nexport default VetAuthNavigation;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/footer/footer.module.scss';\n\nconst Footer = () => {\n const { ready, t } = useTranslation();\n\n return (\n <>\n {ready &&\n \n }\n \n );\n};\n\nexport default Footer;\n","import React from 'react';\nimport classes from 'pages/landing/landingModal/landingModal.module.scss';\nimport PropTypes from 'prop-types';\n\nconst LandingModal = ({\n children,\n onClick,\n open = false\n}) => {\n return (\n \n e.stopPropagation()}\n >\n \n \n \n
    {children}
    \n
    \n
    \n );\n};\n\nLandingModal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(\n PropTypes.node\n ),\n PropTypes.node\n ]),\n onClick: PropTypes.func,\n open: PropTypes.bool\n};\n\nexport default LandingModal;\n","import React from 'react';\nimport classes from 'components/welcomeBanner/welcomeBanner.module.scss';\nimport PropTypes from 'prop-types';\n\nconst WelcomeBanner = ({\n children,\n intro,\n title\n}) => {\n return (\n
    \n
    \n

    {title}

    \n

    {intro}

    \n
    {children}
    \n
    \n
    \n );\n};\n\nWelcomeBanner.propTypes = {\n children: PropTypes.string,\n intro: PropTypes.string,\n title: PropTypes.string\n};\n\nexport default WelcomeBanner;\n","import React from 'react';\nimport Cookies from 'js-cookie';\nimport { useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { UnauthenticatedTemplate } from '@azure/msal-react';\nimport { useMsal } from '@azure/msal-react';\nimport { loginRequest } from 'services/b2cService';\nimport bff, { isCancel } from 'services/bff';\nimport classes from 'pages/landing/landing.module.scss';\nimport featureToggles from 'services/featureToggles';\nimport helpers from 'services/helpers';\nimport initialise from 'services/initialise';\nimport navigation from 'services/navigation';\nimport permissions from 'services/permissions';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport userRoleType from 'services/userRoleType';\nimport AuthNavigation from 'components/authNavigation/authNavigation';\nimport VetAuthNavigation from 'components/vetAuthNavigation/vetAuthNavigation';\nimport Button from 'components/base/button/button';\nimport Footer from 'components/footer/footer';\nimport LandingModal from 'pages/landing/landingModal/landingModal';\nimport WelcomeBanner from 'components/welcomeBanner/welcomeBanner';\n\nconst Landing = ({\n eventError,\n setEventError,\n setLoading,\n setModal,\n setPermission\n}) => {\n const { ready, t } = useTranslation();\n const { instance } = useMsal();\n const [landingVar, setLandingVar] = React.useState(false);\n const [open, setOpen] = React.useState(true);\n const [isCookieExist, setIsCookieExist] = React.useState(Boolean(storeService.cookie.get.cookieConsent()));\n\n const closeModal = () => {\n setOpen(!open);\n };\n const history = useHistory();\n\n const checkCookieTime = 1000;\n\n const checkMsalStatusCookie = () => {\n const msalStatus = Cookies.get('msal.interaction.status');\n const msalStatusExisting = msalStatus !== null && msalStatus !== undefined;\n if (msalStatusExisting) {\n Cookies.remove('msal.interaction.status');\n }\n //setDisabledLogin(msalStatusExisting);\n setTimeout(\n () => checkMsalStatusCookie(),\n msalStatusExisting ? checkCookieTime * 2 : checkCookieTime\n );\n };\n\n setTimeout(\n () => checkMsalStatusCookie(),\n checkCookieTime\n );\n\n const LoginUI = React.lazy(() => import('themeWrappers/loginUI'));\n\n React.useEffect(() => {\n bff\n .get('/lv')\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n setLandingVar(JSON.parse(res.data.statusText));\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setLandingVar(false);\n }\n });\n\n if (storeService.session.get.idle()) {\n setModal({\n modalMessage: 'uiError.401',\n modalTitle: 'uiError.401title'\n });\n storeService.session.remove.idle();\n }\n\n const redirectPage = navigation.home();\n\n featureToggles.init(setModal); // toggles not available after login if not called.\n\n if (permissions.isNonBO() && redirectPage !== undefined && !permissions.isRCVSVet()) {\n if (\n storeService.session.get.breedsAll() ||\n storeService.session.get.features() ||\n storeService.session.get.holdings() ||\n storeService.session.get.requestTypes()\n ) {\n setPermission(userRoleType.GENERIC);\n storeService.session.set.permissions(userRoleType.GENERIC);\n window.location.href = redirectPage;\n } else {\n initialise(setModal, setLoading, history, userRoleType.GENERIC);\n }\n }\n if (permissions.isRCVSVet()) {\n setPermission(userRoleType.RCVSVET);\n storeService.session.set.permissions(userRoleType.RCVSVET);\n initialise(setModal, setLoading, history, userRoleType.RCVSVET);\n }\n if (permissions.isBackOffice()) {\n window.location.href = Routing.boVerifyCustomer;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n if (eventError?.title && eventError?.message) {\n setModal({\n modalClose: setEventError(null),\n modalMessage: eventError.message,\n modalTitle: eventError.title\n });\n }\n }, [eventError, setEventError, setModal]);\n\n const LandingLink = ({ children, externalWindow, url }) => {\n return (\n \n \n {children}\n \n );\n };\n\n const setCookie = (cookieValue) => {\n storeService.cookie.set.cookieConsent(cookieValue, { expires: 365 }); // expires value interpreted as days\n setIsCookieExist(true);\n };\n\n return (\n <>\n {ready &&\n <>\n }>\n \n \n \n
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n

    {t('landing.content1.subHeading')}

    \n

    {t('landing.content1.content')}

    \n

    {t('landing.content2.subHeading')}

    \n

    {t('landing.content2.content')}

    \n

    {t('landing.content3.lowerContent')}

    \n

    {t('landing.content3.subHeading')}

    \n

    {t('landing.content3.content')}

    \n \n

    {t('landing.content4.subHeading')}

    \n

    {t('landing.content4.content')}

    \n \n
    \n
    \n

    {t('landing.linkContent1.heading')}

    \n
      \n
    • \n \n {t('landing.linkContent1.link1')}\n \n
    • \n
    • \n \n {t('landing.linkContent1.link2')}\n \n
    • \n
    \n

    \n {t('landing.linkContent2.heading')}\n

    \n
      \n
    • \n \n {t('landing.linkContent2.link1')}\n \n
    • \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n {landingVar && (\n {\n closeModal();\n }}\n open={open}\n >\n

    {t('landing.landingVariationModal.heading')}

    \n

    {t('landing.landingVariationModal.content')}

    \n

    {t('landing.landingVariationModal.content2')}

    \n instance.loginRedirect(loginRequest)}\n />\n
    \n

    {t('landing.landingVariationModal.linkHeading')}

    \n \n {t('landing.landingVariationModal.link')}\n \n
    \n \n )}\n\n {!isCookieExist &&\n
    \n
    \n
    \n
    \n

    {t('cookie.content1')}
    {t('cookie.content2')}\n {t('cookie.click')} {t('cookie.here')} {t('cookie.content3')}

    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n }\n\n
    \n
    \n \n }\n \n );\n};\n\nLanding.propTypes = {\n eventError: PropTypes.object,\n setEventError: PropTypes.func.isRequired,\n setLoading: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setPermission: PropTypes.func.isRequired\n};\n\nexport default Landing;\n","import { useEffect } from 'react';\nimport { useMsal } from '@azure/msal-react';\nimport storeService from 'services/storeService';\n\nconst Logout = () => {\n const { instance } = useMsal();\n\n useEffect(() => {\n storeService.cookie.removeAll.all();\n storeService.local.removeAll.all();\n storeService.session.removeAll.all();\n\n // call msal to logout and redirect UI to root\n instance.logoutRedirect({ postLogoutRedirectUri: '/' })\n .catch((error) => {\n console.error(error); //eslint-disable-line\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return null;\n};\n\nexport default Logout;\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport AddBatch from 'components/addBatch/addBatch';\nimport Button from 'components/base/button/button';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport InputDate from 'components/base/inputDate/inputDate';\nimport ManualTagEntry from 'components/manualTagEntry/manualTagEntry';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport Table from 'components/table/table';\n\nconst MissingAndFoundStep1 = ({\n missingOrFound,\n setDataChanged,\n setMissingOrFound,\n setMissingOrFoundData,\n setModal\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const sessionSpecies = storeService.session.get.species();\n const speciesId = sessionSpecies ? sessionSpecies.id : '';\n const sessionHolding = storeService.session.get.holding();\n const cph = sessionHolding ? sessionHolding.value : '';\n const isCattle = helpers.species.isCattleId(speciesId);\n\n const dateFoundLabel = 'deaths.dateFound' + speciesId;\n const dateLostLabel = 'deaths.dateMissing' + speciesId;\n const missingFoundLabel = 'deaths.missingReportedFound' + speciesId;\n\n const [animalsOnHolding, setAnimalsOnHolding] = useState([]);\n const [animalsBeingMoved, setAnimalsBeingMoved] = useState([]);\n const [selectionMethod, setSelectionMethod] = useState(null);\n const [entryDate, setEntryDate] = useState(null);\n const [entryDateError, setEntryDateError] = useState('');\n const [entryDateWarning, setEntryDateWarning] = useState('');\n const [pending, setPending] = useState(false);\n const [batchList, setBatchList] = useState([]);\n const [batchTotal, setBatchTotal] = useState(0);\n const [submitDisabled, setSubmitDisabled] = useState(true);\n const [renderTable, setRenderTable] = useState();\n const [refreshFilters, setRefreshFilters] = useState({});\n const [paginationParams, setPaginationParams] = useState({\n batch: {\n ...constants.pagination.defaultParams,\n [constants.pagination.bottom]: {\n ...constants.pagination.defaultParams[constants.pagination.bottom],\n totalLabel: 'label.totalBatches'\n }\n },\n individual: constants.pagination.defaultParams\n });\n\n const nextPage = () => {\n history.push(Routing.missingFoundSummary);\n helpers.scrollToTop();\n };\n\n const validateDate = (date) => {\n let hasError = false;\n\n setEntryDateError('');\n setEntryDateWarning('');\n\n const dateIsInTheFuture = helpers.date.is.inTheFuture(date, constants.option.missingOrFound.found);\n const dateIsOverAYearAgo = helpers.date.is.overAYearAgo(date);\n\n if (!hasError && dateIsInTheFuture) {\n setEntryDateError(dateIsInTheFuture);\n\n hasError = true;\n }\n\n if (!hasError && dateIsOverAYearAgo) {\n setEntryDateWarning(dateIsOverAYearAgo);\n }\n };\n\n const handleChanges = {\n addAnimal: (animal) => {\n const newAnimal = { ...animal, animalTotal: 1 };\n const newAnimalsOnHolding = [...animalsOnHolding];\n if (animal.tagNumber !== '') {\n const indexToRemove = newAnimalsOnHolding.findIndex((item) => item.tagNumber === animal.tagNumber);\n newAnimalsOnHolding.splice(indexToRemove, 1);\n setAnimalsOnHolding(newAnimalsOnHolding);\n }\n setMissingOrFoundData((prevState) => ({\n ...prevState,\n animalsBeingMoved: [...animalsBeingMoved, newAnimal]\n }));\n setAnimalsBeingMoved([...animalsBeingMoved, newAnimal]);\n storeService.session.set.missingAndFoundAnimalsBeingMoved([...animalsBeingMoved, newAnimal]);\n },\n\n addAnimals: (tags) => {\n const uniqueNewTags = tags.filter((tag) => !animalsBeingMoved.find((tagItem) => tagItem.tagNumber === tag.tagNumber));\n const newAnimalsBeingMoved = [\n ...animalsBeingMoved,\n ...uniqueNewTags\n ].map((item) => ({\n ...item,\n tagNumber: item.tagNumber\n }));\n\n setMissingOrFoundData((prevState) => ({\n ...prevState,\n animalsBeingMoved: newAnimalsBeingMoved\n }));\n\n setAnimalsBeingMoved(newAnimalsBeingMoved);\n storeService.session.set.missingAndFoundAnimalsBeingMoved(newAnimalsBeingMoved);\n },\n\n addAnimalsAll: (rows) => {\n const newAnimalsBeingMoved = [\n ...animalsBeingMoved,\n ...rows.filter((item) => !item.added)\n ];\n\n setMissingOrFoundData((prevState) => ({\n ...prevState,\n animalsBeingMoved: newAnimalsBeingMoved\n }));\n setAnimalsBeingMoved(newAnimalsBeingMoved);\n storeService.session.set.missingAndFoundAnimalsBeingMoved(newAnimalsBeingMoved);\n setAnimalsOnHolding(animalsOnHolding.filter((animal) => !rows.includes(animal)));\n },\n\n batchList: (batch) => {\n setMissingOrFoundData((prevState) => ({\n ...prevState,\n batchList: batch\n }));\n setBatchList(batch);\n storeService.session.set.missingAndFoundBatchList(batch);\n },\n\n date: (date) => {\n setMissingOrFoundData((prevState) => ({\n ...prevState,\n date\n }));\n setEntryDate(date);\n storeService.session.set.missingAndFoundDate(date);\n validateDate(date);\n\n setRefreshFilters({\n refresh: true,\n params: {\n date\n }\n });\n\n if (helpers.option.reportType.isMissing(missingOrFound) && helpers.option.selectionMethod.isIndividual(selectionMethod)) {\n storeService.session.removeAll.searchResults();\n setAnimalsOnHolding([]);\n setRenderTable(true);\n }\n\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n identificationType: (type) => {\n setMissingOrFoundData((prevState) => ({\n ...prevState,\n batchList: [],\n animalsBeingMoved: [],\n selectionMethod: type\n }));\n\n setSelectionMethod(type);\n setAnimalsBeingMoved([]);\n setAnimalsOnHolding([]);\n setBatchList([]);\n setBatchTotal(0);\n storeService.session.set.missingAndFoundIdentificationType(type);\n storeService.session.remove.missingAndFoundAnimalsBeingMoved();\n storeService.session.remove.missingAndFoundBatchList();\n },\n\n removeAnimal: (animal) => {\n setMissingOrFoundData((prevState) => {\n const newAnimalsBeingMoved = helpers.tag.remove(prevState.animalsBeingMoved, animal);\n\n return {\n ...prevState,\n animalsBeingMoved: newAnimalsBeingMoved\n };\n });\n\n setAnimalsBeingMoved((prevState) => {\n const newState = helpers.tag.remove(prevState, animal);\n\n if (newState?.length === 0) {\n storeService.session.remove.missingAndFoundAnimalsBeingMoved();\n } else {\n storeService.session.set.missingAndFoundAnimalsBeingMoved(newState);\n }\n\n return newState;\n });\n\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n removeAnimalsAll: () => {\n setMissingOrFoundData((prevState) => ({\n ...prevState,\n animalsBeingMoved: []\n }));\n setAnimalsBeingMoved([]);\n storeService.session.remove.missingAndFoundAnimalsBeingMoved();\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n removeAnimalsAllInvalid: () => {\n const newAnimalsBeingMoved = helpers.animal.removeAllInvalid(animalsBeingMoved);\n setMissingOrFoundData((prevState) => ({\n ...prevState,\n animalsBeingMoved: newAnimalsBeingMoved\n }));\n setAnimalsBeingMoved(newAnimalsBeingMoved);\n storeService.session.set.missingAndFoundAnimalsBeingMoved(newAnimalsBeingMoved);\n },\n\n removeBatch: (batch) => {\n setMissingOrFoundData((prevState) => {\n const newBatchList = helpers.batch.remove(prevState.batchList, batch);\n\n return {\n ...prevState,\n batchList: newBatchList\n };\n });\n\n setBatchList((prevState) => {\n const newState = helpers.batch.remove(prevState, batch);\n\n if (newState?.length === 0) {\n storeService.session.remove.missingAndFoundBatchList();\n } else {\n storeService.session.set.missingAndFoundBatchList(newState);\n }\n\n return newState;\n });\n },\n\n reportType: (event) => {\n setMissingOrFound(event.target.value);\n storeService.session.set.missingAndFoundReportType(event.target.value);\n\n setEntryDate(null);\n setSelectionMethod(null);\n setAnimalsBeingMoved([]);\n setAnimalsOnHolding([]);\n setBatchList([]);\n setBatchTotal(0);\n setMissingOrFoundData(null);\n\n storeService.session.remove.missingAndFoundDate();\n storeService.session.remove.missingAndFoundIdentificationType();\n storeService.session.remove.missingAndFoundAnimalsBeingMoved();\n storeService.session.remove.missingAndFoundBatchList();\n\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n },\n\n toggleAnimal: (animal) => {\n const newAnimal = { ...animal, animalTotal: 1 };\n\n if (animal.tagNumber !== '') {\n if (animal.added) {\n setMissingOrFoundData((prevState) => {\n const newAnimalsBeingMoved = helpers.tag.remove(prevState.animalsBeingMoved, animal);\n\n return {\n ...prevState,\n animalsBeingMoved: newAnimalsBeingMoved\n };\n });\n\n setAnimalsBeingMoved((prevState) => {\n const newState = helpers.tag.remove(prevState, animal);\n\n if (newState?.length === 0) {\n storeService.session.remove.missingAndFoundAnimalsBeingMoved();\n } else {\n storeService.session.set.missingAndFoundAnimalsBeingMoved(newState);\n }\n\n return newState;\n });\n } else {\n setMissingOrFoundData((prevState) => ({\n ...prevState,\n animalsBeingMoved: prevState.animalsBeingMoved\n ? [\n ...prevState.animalsBeingMoved,\n newAnimal\n ]\n : [newAnimal]\n }));\n\n setAnimalsBeingMoved((prevState) => {\n storeService.session.set.missingAndFoundAnimalsBeingMoved([\n ...prevState,\n newAnimal\n ]);\n\n return [\n ...prevState,\n newAnimal\n ];\n });\n }\n\n const sessionSearchResults = storeService.session.get.searchResultsAnimalsOnHolding();\n const sessionAnimalToToggle = sessionSearchResults.data.find((item) => item.tagNumber === animal.tagNumber);\n sessionAnimalToToggle.added = !sessionAnimalToToggle.added;\n storeService.session.set.searchResultsAnimalsOnHolding(sessionSearchResults);\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n }\n }\n };\n\n const getDates = {\n dateMax: () => {\n const today = new Date();\n\n return helpers.date.formatYYYYMMDD(today);\n }\n };\n\n const tableParams = {\n request: {\n url: '/animals',\n params: {\n speciesId: speciesId,\n cph,\n onHoldingDate: entryDate ? helpers.date.endOfDay(entryDate) : helpers.date.endOfDay(helpers.date.now())\n },\n processData: (data) => helpers.animal.addDobAndAgeForDisplay(data)\n }\n };\n\n const display = {\n aboutContent: () => {\n switch (true) {\n case (helpers.option.reportType.isFound(missingOrFound)): {\n return ('about.missing.desc1-found');\n }\n case (helpers.option.reportType.isMissing(missingOrFound)): {\n return ('about.missing.desc1-missing');\n }\n default:\n return null;\n }\n },\n\n addBatch: () => {\n return (\n
    \n \n\n {batchList?.some((batch) => helpers.batch.isInvalid(batch)) &&\n \n }\n\n {batchList.length > 0 &&\n total + parseInt(item.animalTotal), 0), 'table.title.batchesSelected'),\n data: [\n batchList?.reduce((total, item) => total + parseInt(item.animalTotal), 0)\n ]\n }}\n />\n }\n
    \n );\n },\n\n manualTags: () => {\n return (\n <>\n
    \n \n
    \n\n {animalsBeingMoved?.length > 0 &&\n <>\n {helpers.tag.hasNonEidTagsSheep(speciesId, animalsBeingMoved) &&\n \n }\n\n {animalsBeingMoved.some((tag) => helpers.tag.isInvalid(tag)) &&\n \n }\n\n
    \n \n
    \n \n }\n \n );\n },\n\n selectFromHolding: () => {\n return (\n <>\n \n animalsBeingMoved.find((item2) => item2.tagNumber === item1.tagNumber) ? { ...item1, added: true } : { ...item1, added: false }\n )}\n filtersComponents={{\n [constants.filters.inside]: 'AnimalsOnHolding'\n }}\n initialSortBy={initialSorting.deathsMissingAndFound.individual.accessor}\n initialSortDirection={initialSorting.deathsMissingAndFound.individual.direction}\n params={tableParams}\n refreshFilters={refreshFilters}\n renderTable={renderTable}\n setData={setAnimalsOnHolding}\n setModal={setModal}\n store={{\n filters: 'AnimalsOnHolding',\n data: 'AnimalsOnHolding'\n }}\n title=\"table.title.animalsOnHolding\"\n />\n\n {animalsBeingMoved?.length > 0 &&\n \n }\n \n );\n }\n };\n\n useEffect(() => {\n const status =\n !pending &&\n entryDate &&\n entryDateError === '' &&\n (\n (\n batchList?.length > 0 &&\n !batchList.some((batch) => helpers.batch.isInvalid(batch))\n ) ||\n (\n animalsBeingMoved?.length > 0 &&\n !animalsBeingMoved.some((tag) => helpers.tag.isInvalid(tag))\n )\n );\n setSubmitDisabled(!status);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pending, entryDate, entryDateError, batchList, animalsBeingMoved]);\n\n useEffect(() => {\n const sessionReportType = storeService.session.get.missingAndFoundReportType();\n\n if (sessionReportType) {\n const sessionEntryDate = storeService.session.get.missingAndFoundDate();\n const sessionIdentificationType = storeService.session.get.missingAndFoundIdentificationType();\n\n setMissingOrFound(sessionReportType);\n\n if (sessionEntryDate) {\n setEntryDate(sessionEntryDate);\n validateDate(sessionEntryDate);\n }\n\n if (sessionIdentificationType) {\n const sessionAnimalsBeingMoved = storeService.session.get.missingAndFoundAnimalsBeingMoved();\n const sessionBatchList = storeService.session.get.missingAndFoundBatchList();\n\n setSelectionMethod(sessionIdentificationType);\n\n if (sessionAnimalsBeingMoved) {\n setAnimalsBeingMoved(sessionAnimalsBeingMoved);\n }\n\n if (sessionBatchList) {\n setBatchList(sessionBatchList);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (renderTable) {\n setRenderTable();\n }\n }, [renderTable]);\n\n useEffect(() => {\n if (refreshFilters.refresh) {\n setRefreshFilters({});\n }\n }, [refreshFilters]);\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n individual: {\n ...prevState.individual,\n [constants.pagination.bottom]: {\n ...prevState.individual[constants.pagination.bottom],\n total: animalsBeingMoved?.length\n }\n }\n }));\n }, [animalsBeingMoved]);\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n batch: {\n ...prevState.batch,\n [constants.pagination.bottom]: {\n ...prevState.batch[constants.pagination.bottom],\n total: batchList?.length\n }\n }\n }));\n }, [batchList]);\n\n return (\n <>\n {ready &&\n <>\n

    {t('label.missing&Found')}

    \n\n {missingOrFound &&\n \n }\n\n
    \n \n
    \n\n {missingOrFound &&\n <>\n
    \n handleChanges.date(event.target.value)}\n setError={setEntryDateError}\n value={entryDate}\n warning={entryDateWarning}\n yearLength={4}\n />\n
    \n {helpers.option.reportType.isFound(missingOrFound) &&\n

    {t(missingFoundLabel)}

    \n }\n
    \n handleChanges.identificationType(event.target.value)}\n value={selectionMethod}\n />\n
    \n \n }\n\n {helpers.option.reportType.isMissing(missingOrFound) && helpers.option.selectionMethod.isIndividual(selectionMethod) && display.selectFromHolding()}\n {helpers.option.selectionMethod.isManualTagNumbers(selectionMethod) && display.manualTags()}\n {helpers.option.selectionMethod.isBatch(selectionMethod) && !isCattle && display.addBatch()}\n\n
    \n \n
    \n \n }\n \n );\n};\n\nMissingAndFoundStep1.propTypes = {\n missingOrFound: PropTypes.string,\n setDataChanged: PropTypes.func,\n setMissingOrFound: PropTypes.func,\n setMissingOrFoundData: PropTypes.func,\n setModal: PropTypes.func.isRequired\n};\n\nexport default MissingAndFoundStep1;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory, Redirect } from 'react-router-dom';\nimport { Prompt } from 'react-router';\nimport { bffStatus } from 'services/bff';\nimport userRoleType from 'services/userRoleType';\nimport permissions from 'services/permissions';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport helpers from 'services/helpers';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport MissingAndFoundStep1 from 'frontEnd/deaths/missingAndFound/step1/missingAndFoundStep1';\nimport Summary from 'frontEnd/deaths/summary/summary';\nimport TabsNavigational from 'components/base/tabsNavigational/tabsNavigational';\nimport constants from 'services/constants';\n\nconst MissingAndFound = ({\n location,\n setModal,\n setPermission\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const sessionMissingAndFoundData = storeService.session.get.missingAndFound();\n const sessionDataChanged = storeService.session.get.dataChanged();\n const role = storeService.session.get.permissions();\n const holding = storeService.session.get.holding();\n\n const [missingOrFound, setMissingOrFound] = useState(sessionMissingAndFoundData ? sessionMissingAndFoundData.reportType : null);\n const [missingOrFoundData, setMissingOrFoundData] = useState(sessionMissingAndFoundData ? sessionMissingAndFoundData : null);\n const [dataChanged, setDataChanged] = React.useState(sessionDataChanged ? sessionDataChanged : false);\n const sessionSpecies = storeService.session.get.species();\n const speciesId = sessionSpecies ? sessionSpecies.id : '';\n\n const confirmation = {\n viewSummary: (requestId, requestType) => ({\n id: 'viewSummary',\n label: 'button.viewSummary',\n onClick: () => {\n setPermission(userRoleType.GENERIC);\n storeService.session.set.permissions(userRoleType.GENERIC);\n storeService.session.remove.holding();\n\n setTimeout(() => {\n history.push({\n pathname: Routing.activityDetails + requestId,\n state: {\n data: {\n requestId,\n requestType,\n current: {\n returnUrl: permissions.isKeeper() ? Routing.missingFound : Routing.userActivity,\n permissions: role,\n holding\n }\n }\n }\n });\n }, [100]);\n }\n })\n };\n\n const stepPicker = (pathname) => {\n switch (pathname) {\n case Routing.missingFoundStep1:\n default: {\n storeService.session.removeAll.confirm();\n\n return (\n \n
    \n
    \n \n
    \n \n );\n }\n\n case Routing.missingFoundSummary: {\n if (!missingOrFoundData) {\n return ;\n }\n\n return (\n \n );\n }\n\n case Routing.missingConfirm:\n case Routing.foundConfirm: {\n const requestId = storeService.session.get.confirmRequestId();\n const pollingStatus = storeService.session.get.confirmPollingStatus();\n const pollingErrors = storeService.session.get.confirmPollingErrors();\n const pollingWarnings = storeService.session.get.confirmPollingWarnings();\n const movementRef = storeService.session.get.confirmMovementReference();\n\n if (!requestId) {\n return ;\n }\n\n return (\n item)}\n confirm={{\n id: movementRef ? movementRef : requestId,\n label: movementRef ? 'label.movementRef' : 'label.reference'\n }}\n errors={pollingErrors}\n isUnamendable={true}\n label={pathname === Routing.missingConfirm ? 'label.missing' : 'label.found'}\n setModal={setModal}\n status={pollingStatus}\n warnings={pollingWarnings}\n />\n );\n }\n }\n };\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.missingFound.length) !== Routing.missingFound) {\n storeService.session.remove.dataChanged();\n storeService.session.removeAll.confirm();\n storeService.session.removeAll.missingAndFound();\n storeService.session.removeAll.searchResults();\n storeService.session.removeAll.tableFilters();\n unListen();\n }\n });\n\n window.onpopstate = () => {\n if (storeService.session.get.confirm()) {\n history.push(Routing.missingFound);\n }\n };\n }, [history]);\n\n const summaryDescription = ((helpers.option.reportType.isMissing(missingOrFound)) ? 'deaths.missingSummaryDesc' : 'deaths.foundSummaryDesc') + speciesId;\n const title = (missingOrFound === null) ? 'menu.missing&Found'\n : (helpers.option.reportType.isMissing(missingOrFound)) ? 'menu.missing' : 'menu.found';\n\n return (\n <>\n {ready &&\n <>\n {\n return (!storeService.session.get.idle() && dataChanged && (params.pathname.substring(0, Routing.missingFound.length) !== Routing.missingFound || params.pathname === Routing.missingFound)) ? t('warning.unsavedChanges2') : true;\n }}\n />\n

    {t(title)}

    \n {location.pathname === Routing.missingFoundSummary &&

    {t(summaryDescription)}

    }\n {stepPicker(location.pathname)}\n \n }\n \n );\n};\n\nMissingAndFound.propTypes = {\n location: PropTypes.object.isRequired,\n setModal: PropTypes.func.isRequired\n};\n\nexport default MissingAndFound;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport permissions from 'services/permissions';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport AddBatch from 'components/addBatch/addBatch';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport Table from 'components/table/table';\n\nconst AnimalsBatches = ({\n batchList,\n batchListValidation,\n batchTotal,\n pending,\n resetForm,\n setBatchList,\n setBatchTotal,\n setModal,\n setPending,\n updateBatchList\n}) => {\n const { ready, t } = useTranslation();\n\n const isAbattoir = permissions.isAbattoir();\n const sessionSpecies = storeService.session.get.species();\n\n const [paginationParams, setPaginationParams] = React.useState({\n ...constants.pagination.defaultParams,\n [constants.pagination.bottom]: {\n ...constants.pagination.defaultParams[constants.pagination.bottom],\n totalLabel: 'label.totalBatches'\n }\n });\n\n const handleChanges = {\n removeAllInvalid: () => {\n updateBatchList(helpers.animal.removeAllInvalid(batchList));\n },\n\n removeBatch: (batch) => {\n setBatchList((prevState) => {\n const newBatchList = helpers.batch.remove([...prevState], batch);\n\n if (newBatchList.length === 0) {\n storeService.session.remove.movementBatchList();\n } else {\n storeService.session.set.movementBatchList(newBatchList);\n }\n\n return newBatchList;\n });\n\n setTimeout(() => {\n document.activeElement.blur();\n }, 1);\n },\n\n removeBatchesAll: () => {\n updateBatchList([]);\n }\n };\n\n const warningDisplay = () => {\n return (\n
    \n \n
    \n );\n };\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n [constants.pagination.bottom]: {\n ...prevState[constants.pagination.bottom],\n total: batchList?.length\n }\n }));\n }, [batchList]);\n\n return (\n <>\n {ready &&\n
    0}>\n \n

    {t('movementDetails.animalsMoved.heading') + (batchTotal ? ' (' + batchTotal + ')' : '')}

    \n
    \n
    \n {isAbattoir && warningDisplay()}\n\n
    \n \n
    \n\n {batchTotal > 0 &&\n <>\n {batchList?.some((batch) => helpers.batch.isInvalid(batch)) &&\n \n }\n total + parseInt(item.animalTotal), 0), 'table.title.batches'),\n data: [\n batchList?.reduce((total, item) => total + parseInt(item.animalTotal), 0)\n ]\n }}\n />\n \n }\n
    \n
    \n }\n \n );\n};\n\nAnimalsBatches.propTypes = {\n batchList: PropTypes.array,\n batchListValidation: PropTypes.number,\n batchTotal: PropTypes.number,\n pending: PropTypes.bool,\n resetForm: PropTypes.bool,\n setBatchList: PropTypes.func.isRequired,\n setBatchTotal: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n setPending: PropTypes.func,\n updateBatchList: PropTypes.func\n};\n\nexport default AnimalsBatches;\n","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport bff, { isCancel } from 'services/bff';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport DropdownSearch from 'components/base/dropdownSearch/dropdownSearch';\n\nconst DropdownBatchNumbersAvailable = ({\n className,\n label,\n name,\n onChange,\n setModal,\n tooltip,\n validationPending,\n value\n}) => {\n const [itemList, setItemList] = useState([]);\n const [pending, setPending] = useState(true);\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n bff\n .get('/availableBatches', {\n cancelToken: source.token,\n params: {\n speciesId: storeService.session.get.species().id,\n cph: storeService.session.get.holding().value\n }\n })\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setPending)) {\n setItemList((prevState) => {\n return helpers.sortArrayOfObjects([\n ...prevState,\n ...res.data.map((item) => ({\n label: item,\n name: item,\n value: item\n }))\n ], 'holdingRegisterId', constants.sorting.ascending);\n });\n\n if (res.data?.length === 1) {\n onChange({\n target: {\n name: name,\n type: 'select',\n value: res.data[0]\n }\n });\n }\n\n setPending(false);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setPending(false);\n errors.BFF(error, setModal);\n }\n });\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n );\n};\n\nDropdownBatchNumbersAvailable.propTypes = {\n className: PropTypes.string,\n label: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n validationPending: PropTypes.bool,\n value: PropTypes.string\n};\n\nexport default DropdownBatchNumbersAvailable;\n","import React, { useState, useEffect } from 'react';\nimport { isCancel } from 'services/bff';\nimport classes from 'components/addTagRange/addTagRange.module.scss';\nimport config from 'config';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Button from 'components/base/button/button';\nimport DropdownBatchNumbersAvailable from 'components/dropdownBatchNumbersAvailable/dropdownBatchNumbersAvailable';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport Hint from 'components/base/hint/hint';\nimport Legend from 'components/base/legend/legend';\nimport NumberEntry from 'components/base/numberEntry/numberEntry';\nimport TextEntry from 'components/base/textEntry/textEntry';\n\nconst AddTagRange = ({\n isDropdown,\n isGatheringMovement,\n setAnimalsToChange,\n setModal,\n species\n}) => {\n const [quantityLimitError, setQuantityLimitError] = useState(false);\n const [batchNumber, setBatchNumber] = useState('');\n const [batchNumberValid, setBatchNumberValid] = useState(false);\n const [batchNumberNonEid, setBatchNumberNonEid] = useState(false);\n const [startNumber, setStartNumber] = useState('');\n const [quantity, setQuantity] = useState('');\n const [pending, setPending] = useState(false);\n\n const tagRangeSubTitle = isGatheringMovement ? 'tagging.application.tagRangeSubTitle' + species.id : 'tooltips.movements.tagNumberRange';\n const batchNumberLabel = 'label.batchNumber' + species.id;\n\n const validate = {\n batchNumber: () => {\n return helpers.species.isSheepId(species.id) && batchNumber.substr(0, 2).toUpperCase() === 'UK' && (batchNumber.substr(2).length === 6 || batchNumber.substr(2).length === 7);\n },\n\n batchNumberEid: (input) => {\n setBatchNumberNonEid(helpers.species.isSheepId(species.id) && input.substr(0, 2).toUpperCase() === 'UK' && input.substr(2).length === 6);\n },\n\n quantityLimit: (input) => {\n const validResult = parseInt(input) > 0 && parseInt(input) <= config.MAX_TOTAL_ANIMAL_RANGE;\n setQuantityLimitError(!validResult);\n return validResult;\n }\n };\n\n const handleChanges = {\n padStartNumber: (batch, tag) => {\n if (!batchNumberNonEid) {\n setStartNumber(helpers.tag.zerosPadLeft(species.id, batch, tag));\n }\n }\n };\n\n const submitRange = () => {\n const batchNum = helpers.tag.trim(batchNumber);\n const startNum = helpers.tag.trim(startNumber);\n\n if (!validate.quantityLimit(quantity)) {\n setQuantityLimitError(true);\n } else {\n setQuantityLimitError(false);\n setPending(true);\n\n const tagNumbers = [];\n\n for (let i = 0; i < quantity; i++) {\n const tagNumber = parseInt(startNum) + i;\n let strLength;\n\n if (batchNumberNonEid) {\n strLength = startNum.length;\n }\n\n const fullTagNumber = batchNum + ' ' + helpers.tag.zerosPadLeft(species.id, batchNum, tagNumber, strLength);\n\n tagNumbers.push(fullTagNumber);\n }\n\n helpers.validate.tagNumbers(species.name, [], tagNumbers)\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal, setPending)) {\n setPending(false);\n setBatchNumberValid(false);\n setBatchNumberNonEid(false);\n\n setBatchNumber('');\n setStartNumber('');\n setQuantity('');\n\n const listOfTags = res.data.tagNumbers.map((tag) => ({\n tagNumber: tag.formattedDevice.tagNumber ? tag.formattedDevice.tagNumber : tag.originalIdentifier,\n valid: tag.state\n }));\n\n setAnimalsToChange(listOfTags);\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setPending(false);\n errors.BFF(error, setModal);\n }\n });\n }\n };\n\n const isDisabled = () => {\n return (\n pending ||\n (isDropdown && (!batchNumber || !startNumber || !quantity)) ||\n (!isDropdown && (!batchNumber || !quantity))\n );\n };\n\n useEffect(() => {\n if (batchNumber && validate.batchNumber()) {\n setBatchNumberValid(true);\n } else {\n setBatchNumberValid(false);\n }\n }, [batchNumber, validate]);\n\n return (\n <>\n
    \n \n\n {quantityLimitError &&\n \n }\n {isDropdown &&\n \n }\n
    \n {isDropdown &&\n
    \n setBatchNumber(event.target.value)}\n setModal={setModal}\n validationPending={pending}\n value={batchNumber}\n />\n
    \n }\n {!isDropdown &&\n
    \n {\n validate.batchNumberEid(event.target.value);\n handleChanges.padStartNumber(event.target.value, startNumber);\n }}\n onChange={(event) => setBatchNumber(event.target.value)}\n value={batchNumber}\n width={config.WIDTH_BATCH_NUMBER}\n />\n
    \n }\n
    \n handleChanges.padStartNumber(batchNumber, event.target.value)}\n onChange={(event) => setStartNumber(event.target.value)}\n value={startNumber}\n />\n
    \n
    \n setQuantity(event.target.value)}\n value={quantity}\n width={config.WIDTH_TOTAL_NUMBER}\n />\n
    \n
    \n \n
    \n
    \n {batchNumberValid && batchNumberNonEid &&\n \n\n }\n
    \n \n );\n};\n\nAddTagRange.propTypes = {\n isDropdown: PropTypes.bool,\n isGatheringMovement: PropTypes.bool,\n setAnimalsToChange: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n species: PropTypes.object\n};\n\nexport default AddTagRange;\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport AddTagRange from 'components/addTagRange/addTagRange';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport FileUpload from 'components/base/fileUpload/fileUpload';\nimport ManualTagEntry from 'components/manualTagEntry/manualTagEntry';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport Table from 'components/table/table';\n\nconst AnimalsIndividuals = ({\n addAnimals,\n animalDetails,\n animalDetailsValidation,\n pending,\n removeAllInvalid,\n removeAnimal,\n removeAnimalsAll,\n resetForm,\n setAnimalDetails,\n setAnimalDetailsValidation,\n setModal,\n setPending,\n species,\n uploadAnimalDetails\n}) => {\n const { ready, t } = useTranslation();\n\n const [selectionMethod, setSelectionMethod] = useState(constants.option.selectionMethod.manualTagNumbers);\n const [hasWarning, setHasWarning] = useState(false);\n const [paginationParams, setPaginationParams] = React.useState(constants.pagination.defaultParams);\n\n useEffect(() => {\n if (resetForm !== undefined) {\n setSelectionMethod(constants.option.selectionMethod.manualTagNumbers);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resetForm]);\n\n useEffect(() => {\n const errorAnimals = animalDetails.filter((item) => item.status && helpers.response.isError(item.status.type));\n const warningAnimals = animalDetails.filter((item) => item.status && helpers.response.isWarning(item.status.type));\n\n if (errorAnimals.length > 0 || warningAnimals.length > 0) {\n setHasWarning(true);\n setAnimalDetailsValidation(animalDetailsValidation + 1);\n } else {\n setHasWarning(false);\n }\n\n if (animalDetails.length === 0) {\n setSelectionMethod(constants.option.selectionMethod.manualTagNumbers);\n }\n\n setPaginationParams((prevState) => ({\n ...prevState,\n [constants.pagination.bottom]: {\n ...prevState[constants.pagination.bottom],\n total: animalDetails?.length\n }\n }));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animalDetails]);\n\n return (\n <>\n {ready &&\n
    0 && hasWarning}>\n \n

    {t('movementDetails.animalsMovedTags.header') + (animalDetails.length ? ' (' + animalDetails.length + ')' : '')}

    \n
    \n
    \n
    \n setSelectionMethod(event.target.value)}\n reduceSpace={true}\n value={selectionMethod}\n />\n
    \n\n {helpers.option.selectionMethod.isUploadFile(selectionMethod) &&\n \n }\n\n {helpers.option.selectionMethod.isTagNumberRange(selectionMethod) &&\n
    \n \n
    \n }\n\n {helpers.option.selectionMethod.isManualTagNumbers(selectionMethod) &&\n \n }\n {animalDetails.length > 0 &&\n
    \n {animalDetails && helpers.tag.hasNonEidTagsSheep(species.id, animalDetails) &&\n \n }\n {animalDetails?.some((tag) => helpers.tag.isInvalid(tag)) &&\n \n }\n \n
    \n }\n
    \n
    \n }\n \n );\n};\n\nAnimalsIndividuals.propTypes = {\n addAnimals: PropTypes.func,\n animalDetails: PropTypes.array,\n animalDetailsValidation: PropTypes.number,\n pending: PropTypes.bool.isRequired,\n removeAllInvalid: PropTypes.func,\n removeAnimal: PropTypes.func,\n removeAnimalsAll: PropTypes.func,\n resetForm: PropTypes.bool,\n setAnimalDetails: PropTypes.func.isRequired,\n setAnimalDetailsValidation: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n setPending: PropTypes.func.isRequired,\n species: PropTypes.object,\n uploadAnimalDetails: PropTypes.func\n};\n\nexport default AnimalsIndividuals;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { isCancel } from 'services/bff';\nimport axios from 'axios';\nimport errors from 'services/errors';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport CheckboxGroup from 'components/base/checkboxGroup/checkboxGroup';\n\nconst findPermitExemption = (mandatoryExemption, id) => Object.values(mandatoryExemption).some((exemption) => exemption.id === id) || false;\n\nconst Exemptions = ({\n groupLabel,\n isAmend,\n options,\n panelTitle,\n resetForm,\n setDataChanged,\n setModal,\n setOptions,\n speciesId\n}) => {\n const { ready, t } = useTranslation();\n\n const exemptionChange = (event) => {\n setDataChanged();\n setOptions(options.map((o) => ({\n id: o.id,\n label: o.label,\n name: o.name,\n value: (event.target.id === String(o.id)) ? !o.value : o.value,\n disabled: findPermitExemption(constants.permitMovesMandatory, o.id)\n })));\n };\n\n useEffect(() => {\n if (resetForm !== undefined) {\n if (isAmend) {\n const sessionOriginalExemptions = storeService.session.get.originalMovementExemptions();\n\n setOptions((prevState) => prevState.map((o) => ({\n ...o,\n value: Boolean(sessionOriginalExemptions.find((ex) => ex.id === o.id && ex.value)),\n disabled: findPermitExemption(constants.permitMovesMandatory, o.id)\n })));\n } else {\n setOptions((prevState) => prevState.map((o) => ({\n ...o,\n value: false,\n disabled: findPermitExemption(constants.permitMovesMandatory, o.id)\n })));\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resetForm]);\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n const sessionExemptions = storeService.session.get.movementExemptions();\n\n helpers.get.processingFlags(source.token, constants.option.requestType.movement, speciesId)\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n setOptions(res.data.map((item) => {\n const isPermitMoveExemption = Object.values(constants.permitMovesMandatory).some((mandatoryExemption) => mandatoryExemption.id === item.id);\n\n return {\n ...item,\n value: sessionExemptions ? Boolean(sessionExemptions.find((ex) => ex.id === item.id && ex.value)) : false,\n disabled: isPermitMoveExemption || false\n };\n }));\n }\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ready && options?.length > 0 &&\n
    \n \n

    {t(panelTitle)}

    \n
    \n
    \n \n
    \n
    \n }\n \n );\n};\n\nExemptions.propTypes = {\n groupLabel: PropTypes.string,\n isAmend: PropTypes.bool,\n options: PropTypes.array,\n panelTitle: PropTypes.string,\n resetForm: PropTypes.bool,\n setDataChanged: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setOptions: PropTypes.func,\n speciesId: PropTypes.number\n};\n\nexport default Exemptions;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'frontEnd/movementsGatherings/foodChainInformation/foodChainInformation.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport he from 'he';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport TextEntry from 'components/base/textEntry/textEntry';\nimport FoodChainInformationHelper from 'components/foodChainInformationHelper/foodChainInformationHelper';\n\nconst FoodChainInformation = ({\n animals,\n batchList,\n choiceDisabled,\n disabledIcon,\n fciData,\n metFCIWithdrawalPeriods,\n panelTitle,\n setAnimals,\n setDataChanged,\n setFciData,\n setModal,\n speciesId\n}) => {\n const { ready } = useTranslation();\n\n const [recordFCI, setRecordFCI] = React.useState(choiceDisabled ? null : constants.option.recordFCI.no);\n const [withdrawalPeriod, setWithdrawalPeriod] = React.useState(null);\n const [doAnimalsSatisfy, setDoAnimalsSatisfy] = React.useState(constants.option.animalsSatisfy.doSatisfy);\n const [unfitAnimalTagNumbers, setUnfitAnimalTagNumbers] = React.useState([]);\n const [nonComplianceReason, setNonComplianceReason] = React.useState();\n const [holdingRestrictions, setHoldingRestrictions] = React.useState();\n\n const paginationParams = constants.pagination.defaultParams;\n paginationParams[constants.pagination.bottom].total = animals?.length;\n\n const dataHasChanged = () => {\n storeService.session.set.dataChanged(true);\n setDataChanged(true);\n };\n\n const handleChanges = {\n\n changeHoldingRestrictions: (event) => {\n storeService.session.set.movementFciHoldingRestrictions(event.target.value);\n setHoldingRestrictions(event.target.value);\n\n setFciData((prevState) => ({\n ...prevState,\n holdingRestrictions: event.target.value\n }));\n\n dataHasChanged();\n },\n\n nonComplianceReason: (event) => {\n storeService.session.set.movementFciNonComplianceReason(event.target.value);\n setNonComplianceReason(event.target.value);\n\n setFciData((prevState) => ({\n ...prevState,\n nonComplianceReason: event.target.value\n }));\n\n dataHasChanged();\n }\n };\n\n useEffect(() => {\n const sessionRecordFCI = storeService.session.get.movementFciRecordFci();\n\n if (sessionRecordFCI) {\n setRecordFCI(sessionRecordFCI);\n\n if (helpers.option.fci.doRecord(sessionRecordFCI)) {\n const sessionAnimalsSatisfy = storeService.session.get.movementFciAnimalsSatisfy();\n if (sessionAnimalsSatisfy) {\n setDoAnimalsSatisfy(sessionAnimalsSatisfy);\n\n if (helpers.option.animals.doNotSatisfy(sessionAnimalsSatisfy)) {\n const sessionUnfitAnimals = storeService.session.get.movementFciUnfitAnimals();\n const sessionNonComplianceReason = storeService.session.get.movementFciNonComplianceReason();\n const sessionWithdrawalPeriod = storeService.session.get.movementFciWithdrawalPeriod();\n const sessionHoldingRestrictions = storeService.session.get.movementFciHoldingRestrictions();\n\n if (sessionUnfitAnimals.length > 0) {\n setUnfitAnimalTagNumbers(sessionUnfitAnimals);\n }\n if (sessionNonComplianceReason) {\n setNonComplianceReason(sessionNonComplianceReason);\n }\n if (sessionWithdrawalPeriod) {\n setWithdrawalPeriod(sessionWithdrawalPeriod);\n }\n if (sessionHoldingRestrictions) {\n setHoldingRestrictions(sessionHoldingRestrictions);\n }\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setWithdrawalPeriod(fciData.withdrawalPeriod);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fciData.withdrawalPeriod]);\n\n return (\n <>\n {ready &&\n
    \n \n
    \n {recordFCI === constants.option.recordFCI.yes &&\n <>\n {doAnimalsSatisfy === constants.option.animalsSatisfy.doNotSatisfy &&\n <>\n
    \n
    \n \n
    \n\n
    \n \n
    \n
    \n \n }\n \n }\n
    \n
    \n }\n \n );\n};\n\nFoodChainInformation.propTypes = {\n animals: PropTypes.array,\n batchList: PropTypes.array,\n choiceDisabled: PropTypes.bool,\n disabledIcon: PropTypes.bool,\n fciData: PropTypes.object,\n panelTitle: PropTypes.string,\n setAnimals: PropTypes.func,\n setDataChanged: PropTypes.func,\n setFciData: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n speciesId: PropTypes.number\n};\n\nexport default FoodChainInformation;\n","import React from 'react';\nimport constants from 'services/constants';\nimport permissions from 'services/permissions';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport CheckBox from 'components/base/checkbox/checkbox';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\n\nconst MovementType = ({\n inBusinessMovement,\n isAmend,\n movementType,\n setInBusinessMovement,\n setMovementType\n}) => {\n const holdings = storeService.session.get.holdings();\n const numberOfHoldings = holdings ? Object.keys(holdings).length : 0;\n\n return (\n <>\n
    \n setMovementType(event.target.value)}\n value= {movementType}\n />\n
    \n {numberOfHoldings > 1 &&\n
    \n setInBusinessMovement(!inBusinessMovement)}\n tooltip=\"label.movementTypeTooltip\"\n value={inBusinessMovement}\n />\n
    \n }\n \n );\n};\n\nMovementType.propTypes = {\n inBusinessMovement: PropTypes.bool.isRequired,\n isAmend: PropTypes.bool,\n movementType: PropTypes.string.isRequired,\n setInBusinessMovement: PropTypes.func.isRequired,\n setMovementType: PropTypes.func.isRequired\n};\n\nexport default MovementType;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'frontEnd/movementsGatherings/transportDetails/transportDetails.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport permissions from 'services/permissions';\nimport PropTypes from 'prop-types';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport TextEntry from 'components/base/textEntry/textEntry';\n\nconst TransportDetails = ({\n haulierNameError,\n panelTitle,\n setAuthorisationNumber,\n setTransportedBy,\n setTransporterName,\n setVehicleRegistrationNumber,\n transportAuthNumberError,\n transportDetails,\n transportDetailsError,\n vehicleRegNoError\n}) => {\n const { ready, t } = useTranslation();\n\n const optional = !permissions.isBackOffice();\n\n return (\n <>\n {ready &&\n
    \n \n

    {t(panelTitle)}

    \n
    \n
    \n
    \n setTransportedBy(event.target.value)}\n reduceSpace={true}\n value={transportDetails.transportedBy}\n warning={helpers.response.isWarning(transportDetailsError.type) ? transportDetailsError.value : ''}\n />\n
    \n {transportDetails.transportedBy &&\n
    \n
    \n setVehicleRegistrationNumber(event.target.value)}\n optional={optional}\n value={transportDetails.vehicleRegistrationNumber}\n width=\"full\"\n />\n
    \n\n
    \n setTransporterName(event.target.value)}\n optional={optional}\n value={transportDetails.transporterName}\n warningLabel={helpers.response.isWarning(haulierNameError.type) ? haulierNameError.value : ''}\n width=\"full\"\n />\n
    \n\n
    \n setAuthorisationNumber(event.target.value)}\n optional={optional}\n value={transportDetails.transportAuthorisationNumber}\n warningLabel={helpers.response.isWarning(transportAuthNumberError.type) ? transportAuthNumberError.value : ''}\n width=\"full\"\n />\n
    \n
    \n }\n
    \n
    \n }\n \n );\n};\n\nTransportDetails.propTypes = {\n haulierNameError: PropTypes.object,\n panelTitle: PropTypes.string,\n setAuthorisationNumber: PropTypes.func.isRequired,\n setTransportedBy: PropTypes.func.isRequired,\n setTransporterName: PropTypes.func.isRequired,\n setVehicleRegistrationNumber: PropTypes.func.isRequired,\n transportAuthNumberError: PropTypes.object,\n transportDetails: PropTypes.object,\n transportDetailsError: PropTypes.object,\n vehicleRegNoError: PropTypes.string\n};\n\nexport default TransportDetails;\n","import React from 'react';\nimport axios from 'axios';\nimport { useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Prompt } from 'react-router';\nimport bff, { bffStatus } from 'services/bff';\nimport classes from 'frontEnd/movementsGatherings/movementsGatherings.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport navigation from 'services/navigation';\nimport permissions from 'services/permissions';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport userRoleType from 'services/userRoleType';\nimport AddressSummary from 'components/summary/addressSummary/addressSummary';\nimport AnimalsBatches from 'frontEnd/movementsGatherings/animalsBatches/animalsBatches';\nimport AnimalsIndividuals from 'frontEnd/movementsGatherings/animalsIndividuals/animalsIndividuals';\nimport Button from 'components/base/button/button';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport DropdownHoldings from 'components/dropdownHoldings/dropdownHoldings';\nimport Exemptions from 'frontEnd/movementsGatherings/exemptions/exemptions';\nimport FoodChainInformation from 'frontEnd/movementsGatherings/foodChainInformation/foodChainInformation';\nimport InputDate from 'components/base/inputDate/inputDate';\nimport MovementType from 'frontEnd/movementsGatherings/movementType/movementType';\nimport OtherHoldingSelection from 'components/otherHoldingSelection/otherHoldingSelection';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport TransportDetails from 'frontEnd/movementsGatherings/transportDetails/transportDetails';\nimport { cloneDeep, isEqual } from 'lodash';\nimport configHelper from 'services/configHelper';\n\nconst MovementsGatherings = ({\n location,\n setModal,\n setPermission\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const role = storeService.session.get.permissions();\n const sessionMovement = storeService.session.get.movement();\n const sessionDataChanged = storeService.session.get.dataChanged();\n\n const isAbattoir = permissions.isAbattoir();\n const isMarket = permissions.isMarket();\n const isGathering = permissions.isGathering();\n const species = storeService.session.get.species();\n const holding = storeService.session.get.holding();\n const holdings = storeService.session.get.holdings();\n const numberOfHoldings = holdings ? Object.keys(holdings).length : 0;\n const departureDaysAhead = configHelper.get.offMoveMaxDays(species.id);\n\n const ERR_TEMPLATE = { type: '', value: '' };\n\n const [inBusinessMovement, setInBusinessMovement] = React.useState(false);\n\n const [movementType, setMovementType] = React.useState(sessionMovement?.movementType ?? constants.option.movement.on);\n const [marketType, setMarketType] = React.useState(constants.option.market.green);\n const [validateErrors, setValidateErrors] = React.useState([]);\n\n const [options, setOptions] = React.useState([]);\n const [batchTotal, setBatchTotal] = React.useState(0);\n const [animalDetails, setAnimalDetails] = React.useState([]);\n\n const [animalDetailsValidation, setAnimalDetailsValidation] = React.useState(0);\n const sessionRequestId = storeService.session.get.confirmRequestId();\n const [requestId, setRequestId] = React.useState(sessionRequestId ?? null);\n\n const [departData, setDepartData] = React.useState({\n CPH: helpers.option.movement.isOff(movementType) ? holding.value : '',\n date: '',\n manualCPH: ''\n });\n const [arriveData, setArriveData] = React.useState({\n CPH: helpers.option.movement.isOn(movementType) ? holding.value : '',\n date: '',\n manualCPH: ''\n });\n\n const [transportDetails, setTransportDetails] = React.useState({\n transportedBy: '',\n vehicleRegistrationNumber: '',\n transporterName: '',\n transportAuthorisationNumber: ''\n });\n\n const [departureDateError, setDepartureDateError] = React.useState(ERR_TEMPLATE);\n const [arrivalDateError, setArrivalDateError] = React.useState(ERR_TEMPLATE);\n const [batchList, setBatchList] = React.useState([]);\n const [transportDetailsError, setTransportDetailsError] = React.useState(ERR_TEMPLATE);\n const [haulierNameError, setHaulierNameError] = React.useState(ERR_TEMPLATE);\n const [transportAuthNumberError, setTransportAuthNumberError] = React.useState(ERR_TEMPLATE);\n const [vehicleRegNoError, setVehicleRegNoError] = React.useState('');\n const [fciData, setFciData] = React.useState({});\n const [metFCIWithdrawalPeriods, setMetFCIWithdrawalPeriods] = React.useState([]);\n const [resetForm, setResetForm] = React.useState(false);\n\n const [submitDisabled, setSubmitDisabled] = React.useState(false);\n\n const sessionStatus = storeService.session.get.confirmPollingStatus();\n const [pollingStatus, setPollingStatus] = React.useState(sessionStatus ?? null);\n\n const sessionMovementReference = storeService.session.get.confirmMovementReference();\n const [movementRef, setMovementRef] = React.useState(sessionMovementReference ?? null);\n const [submitted, setSubmitted] = React.useState(Boolean(sessionMovementReference) || Boolean(requestId));\n const [validationError, setValidationError] = React.useState(false);\n const [pending, setPending] = React.useState(false);\n\n const [dataChanged, setDataChanged] = React.useState(sessionDataChanged ?? false);\n const [isAmend, setIsAmend] = React.useState(sessionMovement?.amend ?? false);\n const [amendChangedData, setAmendChangedData] = React.useState(false);\n // const [choiceDisabled, setChoiceDisabled] = React.useState(false);\n\n const [departAddress, setDepartAddress] = React.useState({});\n const [arriveAddress, setArriveAddress] = React.useState({});\n\n const dataHasChanged = () => {\n setDataChanged(true);\n storeService.session.set.dataChanged(true);\n };\n\n const resetAddresses = () => {\n setDepartAddress({});\n setArriveAddress({});\n };\n\n const setDataFromSessionStorage = (session) => {\n if (session.movementType) {\n setMovementType(session.movementType);\n } else {\n storeService.session.set.movementType(constants.option.movement.on);\n }\n\n if (session.movementInBusiness) {\n setInBusinessMovement(true);\n }\n\n if (session.departureDate) {\n setDepartData((prevState) => ({\n ...prevState,\n date: session.departureDate\n }));\n validate.date(constants.flags.departure, session.departureDate);\n }\n\n if (session.arrivalDate) {\n setArriveData((prevState) => ({\n ...prevState,\n date: session.arrivalDate\n }));\n validate.date(constants.flags.destination, session.arrivalDate);\n }\n\n if (session.otherHolding) {\n const type = session.movementType ?? storeService.session.get.movementType();\n\n if (helpers.option.movement.isOff(type)) {\n setDepartData((prevState) => ({\n ...prevState,\n CPH: holding.value\n }));\n setArriveData((prevState) => ({\n ...prevState,\n CPH: session.otherHolding.value\n }));\n } else if (helpers.option.movement.isOn(type)) {\n setDepartData((prevState) => ({\n ...prevState,\n CPH: session.otherHolding.value\n }));\n setArriveData((prevState) => ({\n ...prevState,\n CPH: holding.value\n }));\n }\n }\n\n if (helpers.option.transporter.isDepartureKeeper(session.transportedBy)) {\n setTransportDetails((prevState) => ({\n ...prevState,\n transportedBy: session.transportedBy,\n transporterName: ''\n }));\n } else if (helpers.option.transporter.isDestinationKeeper(session.transportedBy)) {\n setTransportDetails((prevState) => ({\n ...prevState,\n transportedBy: session.transportedBy,\n transporterName: ''\n }));\n } else {\n if (session.transportedBy) {\n setTransportDetails((prevState) => ({\n ...prevState,\n transportedBy: session.transportedBy\n }));\n }\n\n if (session.transporter) {\n setTransportDetails((prevState) => ({\n ...prevState,\n transporterName: session.transporter\n }));\n }\n }\n\n if (session.vehicleRegistrationNumber) {\n setTransportDetails((prevState) => ({\n ...prevState,\n vehicleRegistrationNumber: session.vehicleRegistrationNumber\n }));\n }\n\n if (session.authorisationNumber) {\n setTransportDetails((prevState) => ({\n ...prevState,\n transportAuthorisationNumber: session.authorisationNumber\n }));\n }\n\n if (session.batchList) {\n setBatchList(session.batchList);\n setBatchTotal(session.batchList.reduce((total, batch) => total + batch.animalTotal, 0));\n }\n\n if (session.individualAnimals) {\n setAnimalDetails(session.individualAnimals);\n }\n\n if (session.fciData) {\n setFciData(session.fciData);\n\n setAnimalDetails((prevState) => prevState.map((animal) => ({\n ...animal,\n unfit: session.fciData.unfitAnimals?.includes(animal.tagNumber)\n })));\n }\n };\n\n const clear = {\n errors: () => {\n setValidateErrors([]);\n setDepartureDateError(ERR_TEMPLATE);\n setArrivalDateError(ERR_TEMPLATE);\n setTransportDetailsError(ERR_TEMPLATE);\n setHaulierNameError(ERR_TEMPLATE);\n setTransportAuthNumberError(ERR_TEMPLATE);\n }\n };\n\n const validate = {\n date: (whichDate, date) => {\n let hasError = false;\n\n if (helpers.flags.isDeparture(whichDate)) {\n setDepartureDateError(ERR_TEMPLATE);\n } else if (helpers.flags.isDestination(whichDate)) {\n setArrivalDateError(ERR_TEMPLATE);\n }\n\n if (helpers.flags.isDeparture(whichDate)) {\n const dateIsXDayAheadOverLimit = helpers.date.is.xDaysInTheFutureOverLimit(date, departureDaysAhead);\n const departureDateFromIsAfterDestinationDate = helpers.date.is.afterDate(date, arriveData.date);\n const departureDateIsMoreThanOneDayBeforeArrivalDate = helpers.date.is.xPeriodAfterDate(arriveData.date, date, 1, constants.period.days);\n\n if (!hasError && dateIsXDayAheadOverLimit) {\n setDepartureDateError({ type: constants.errorAndWarning.error, value: dateIsXDayAheadOverLimit });\n\n hasError = true;\n }\n\n if (!hasError && departureDateFromIsAfterDestinationDate) {\n setDepartureDateError({ type: constants.errorAndWarning.error, value: 'error.departureDateCannotBeAfterArrivalDate' });\n\n hasError = true;\n }\n\n if (!hasError && departureDateIsMoreThanOneDayBeforeArrivalDate) {\n setDepartureDateError({ type: constants.errorAndWarning.error, value: 'movements.departure.moreThan1DayBeforeArrival' });\n }\n } else if (helpers.flags.isDestination(whichDate)) {\n const destinationDateIsInTheFuture = helpers.date.is.inTheFuture(date);\n const destinationDateIsBeforeDepartureDate = helpers.date.is.beforeDate(date, departData.date);\n const destinationDateIsMoreThanOneDayAfterDepartureDate = helpers.date.is.xPeriodAfterDate(date, departData.date, 1, constants.period.days);\n\n if (!hasError && destinationDateIsInTheFuture) {\n setArrivalDateError({ type: constants.errorAndWarning.error, value: destinationDateIsInTheFuture });\n\n hasError = true;\n }\n\n if (!hasError && destinationDateIsBeforeDepartureDate) {\n setArrivalDateError({ type: constants.errorAndWarning.error, value: 'error.arrivalDateCannotBeBeforeDepartureDate' });\n\n hasError = true;\n }\n\n if (!hasError && destinationDateIsMoreThanOneDayAfterDepartureDate) {\n setArrivalDateError({ type: constants.errorAndWarning.error, value: 'movements.arrival.moreThan1DayAfterDeparture' });\n }\n }\n },\n\n registrationNumber: (regNum) => {\n if (regNum && !regNum.match(/^[a-z0-9\\s]+$/i)) {\n setVehicleRegNoError('error.registrationNumber');\n } else {\n setVehicleRegNoError('');\n }\n }\n };\n\n const getDates = {\n departureMin: () => {\n if (arriveData.date) {\n return helpers.date.formatYYYYMMDD(\n helpers.date.momentToJSDate(\n helpers.date.momentMinDate(\n helpers.date.subtractPeriod(arriveData.date, 1, constants.period.days),\n helpers.date.todayEndOfDay()\n )\n )\n );\n }\n\n return null;\n },\n\n departureMax: () => {\n if (helpers.option.movement.isOff(movementType)) {\n const daysAhead = new Date();\n daysAhead.setDate(daysAhead.getDate() + departureDaysAhead);\n\n return helpers.date.formatYYYYMMDD(daysAhead);\n }\n\n if (arriveData.date) {\n return helpers.date.formatYYYYMMDD(new Date(arriveData.date));\n }\n\n return helpers.date.formatYYYYMMDD(new Date());\n }\n };\n\n const pageContent = {\n animalBatch: () => {\n return (\n \n );\n },\n\n departure: {\n location: () => {\n return (\n <>\n {!departData.CPH &&\n <>\n {(!inBusinessMovement || numberOfHoldings === 1) &&\n \n }\n\n {inBusinessMovement && numberOfHoldings > 1 &&\n
    \n handleChanges.departureCph(event.target.value.trim())}\n />\n
    \n }\n \n }\n\n {departData.CPH &&\n {\n storeService.session.remove.movementOtherHolding();\n setDepartData((prevState) => ({\n ...prevState,\n CPH: '',\n manualCPH: ''\n }));\n }}\n queryKeeper={true}\n setAddress1={setDepartAddress}\n setAddress2={setArriveAddress}\n setModal={setModal}\n storeIn1=\"movementOtherHoldingAddress\"\n storeIn2=\"holdingAddress\"\n />\n }\n \n );\n },\n\n date: () => {\n return (\n
    \n handleChanges.departureDate(event.target.value)}\n setError={setDepartureDateError}\n value={departData.date}\n yearLength={4}\n />\n
    \n );\n }\n },\n\n destination: {\n location: () => {\n return (\n <>\n {!arriveData.CPH &&\n <>\n {(!inBusinessMovement || numberOfHoldings === 1) &&\n \n }\n\n {inBusinessMovement && numberOfHoldings > 1 &&\n
    \n handleChanges.destinationCph(event.target.value.trim())}\n />\n
    \n }\n \n }\n\n {arriveData.CPH &&\n {\n storeService.session.remove.movementOtherHolding();\n setArriveData((prevState) => ({\n ...prevState,\n CPH: ''\n }));\n }}\n queryKeeper={true}\n setAddress1={setArriveAddress}\n setAddress2={setDepartAddress}\n setModal={setModal}\n storeIn1=\"holdingAddress\"\n storeIn2=\"movementOtherHoldingAddress\"\n />\n }\n \n );\n },\n\n date: () => {\n return (\n
    \n handleChanges.arrivalDate(event.target.value)}\n setError={setArrivalDateError}\n value={arriveData.date}\n yearLength={4}\n />\n
    \n );\n }\n },\n\n exemptions: () => {\n return (\n \n );\n },\n\n fciDetails: () => {\n return (\n \n );\n },\n\n individualAnimals: () => {\n return (\n \n );\n },\n\n marketType: () => {\n return (\n
    \n handleChanges.marketType(event.target.value)}\n value={marketType}\n />\n
    \n );\n },\n\n movementType: () => {\n return (\n \n );\n },\n\n transportInformation: () => {\n return (\n \n );\n },\n\n validationErrors: () => {\n const getErrorMessage = (inValue) => inValue > 0\n ? ' ' + inValue + ' ' + (inValue > 1 ? t('label.errors').toLowerCase() : t('label.error'))\n : '';\n\n return (\n
    \n

    {t('label.youHave')}{ } {getErrorMessage(validateErrors.length)}

    \n {validateErrors.map((error, index) => (\n

    {error.code}{' : '}{error.message}

    \n ))}\n
    \n );\n }\n };\n\n const handleChanges = {\n addAnimals: (tags) => {\n const uniqueNewTags = tags.filter((tag) => !animalDetails.find((tagItem) => tagItem.tagNumber === tag.tagNumber));\n const animalDetailsCopy = [...animalDetails, ...uniqueNewTags].map((item) => ({\n ...item,\n tagNumber: item.tagNumber\n }));\n storeService.session.set.movementAnimalsBeingMoved(animalDetailsCopy);\n setAnimalDetails(animalDetailsCopy.map((animal) => ({\n ...animal,\n unfit: false\n })));\n\n dataHasChanged();\n },\n\n arrivalDate: (date) => {\n storeService.session.set.movementArrivalDate(date);\n setArriveData((prevState) => ({\n ...prevState,\n date\n }));\n validate.date(constants.flags.destination, date);\n\n dataHasChanged();\n },\n\n authorisationNumber: (authNum) => {\n storeService.session.set.movementAuthorisationNumber(authNum);\n setTransportDetails((prevState) => ({\n ...prevState,\n transportAuthorisationNumber: authNum\n }));\n\n dataHasChanged();\n },\n\n batchList: (batches) => {\n storeService.session.set.movementBatchList(batches.map((batch) => ({\n ...batch,\n added: true\n })));\n setBatchList(batches.map((batch) => ({\n ...batch,\n added: true\n })));\n\n dataHasChanged();\n },\n\n clearTransporterName: () => {\n setTransportDetails((prevState) => ({\n ...prevState,\n transporterName: ''\n }));\n },\n\n departureCph: (cph) => {\n storeService.session.set.movementOtherHolding(cph);\n setDepartData((prevState) => ({\n ...prevState,\n CPH: cph.value ?? cph\n }));\n\n resetAddresses();\n dataHasChanged();\n\n if (transportDetails.transportedBy) {\n if (helpers.option.transporter.isDepartureKeeper(transportDetails.transportedBy)) {\n const addressCheck = setInterval(() => {\n if (storeService.session.get.movementOtherHoldingAddress()) {\n handleChanges.transportedBy(transportDetails.transportedBy);\n clearInterval(addressCheck);\n }\n }, 500);\n } else if (helpers.option.transporter.isDestinationKeeper(transportDetails.transportedBy)) {\n const addressCheck = setInterval(() => {\n if (storeService.session.get.holding()?.address) {\n handleChanges.transportedBy(transportDetails.transportedBy);\n clearInterval(addressCheck);\n }\n }, 500);\n }\n }\n },\n\n departureDate: (date) => {\n storeService.session.set.movementDepartureDate(date);\n setDepartData((prevState) => ({\n ...prevState,\n date\n }));\n validate.date(constants.flags.departure, date);\n\n dataHasChanged();\n },\n\n destinationCph: (cph) => {\n storeService.session.set.movementOtherHolding(cph);\n setArriveData((prevState) => ({\n ...prevState,\n CPH: cph.value ?? cph\n }));\n\n resetAddresses();\n dataHasChanged();\n\n if (transportDetails.transportedBy) {\n if (helpers.option.transporter.isDepartureKeeper(transportDetails.transportedBy)) {\n const addressCheck = setInterval(() => {\n if (storeService.session.get.holding()?.address) {\n handleChanges.transportedBy(transportDetails.transportedBy);\n clearInterval(addressCheck);\n }\n }, 500);\n } else if (helpers.option.transporter.isDestinationKeeper(transportDetails.transportedBy)) {\n const addressCheck = setInterval(() => {\n if (storeService.session.get.movementOtherHoldingAddress()) {\n handleChanges.transportedBy(transportDetails.transportedBy);\n clearInterval(addressCheck);\n }\n }, 500);\n }\n }\n },\n\n exemptions: (exemptionsList) => {\n setOptions(exemptionsList);\n if (Array.isArray(exemptionsList)) {\n const selectedExemption = exemptionsList.filter((item) => item.value).map((item) => item);\n\n if (selectedExemption.length > 0) {\n storeService.session.set.movementExemptions(exemptionsList);\n dataHasChanged();\n }\n }\n },\n\n inBusinessMovement: (inBusiness) => {\n if (inBusiness) {\n storeService.session.set.movementInBusiness(true);\n } else {\n storeService.session.remove.movementInBusiness();\n }\n storeService.session.remove.movementOtherHolding();\n setDepartData({\n CPH: helpers.option.movement.isOff(movementType) ? holding.value : '',\n date: '',\n manualCPH: ''\n });\n setArriveData({\n CPH: helpers.option.movement.isOn(movementType) ? holding.value : '',\n date: ''\n });\n setInBusinessMovement(inBusiness);\n\n dataHasChanged();\n },\n\n marketType: (type) => {\n storeService.session.set.movementMarketType(type);\n setMarketType(type);\n\n dataHasChanged();\n },\n\n movementType: (type) => {\n storeService.session.set.movementType(type);\n setMovementType(type);\n\n dataHasChanged();\n\n if (helpers.option.movement.isOff(type) && !inBusinessMovement) {\n storeService.session.remove.movementArrivalDate();\n setArriveData((prevState) => ({\n ...prevState,\n date: ''\n }));\n setArrivalDateError(ERR_TEMPLATE);\n }\n\n if (!isAmend) {\n const oldDepartCPH = departData.CPH;\n const oldArriveCPH = arriveData.CPH;\n\n setDepartData((prevState) => ({\n ...prevState,\n CPH: oldArriveCPH\n }));\n\n if (helpers.option.movement.isOff(movementType) && !inBusinessMovement) {\n setArriveData((prevState) => ({\n ...prevState,\n CPH: oldDepartCPH,\n date: ''\n }));\n } else {\n setArriveData((prevState) => ({\n ...prevState,\n CPH: oldDepartCPH\n }));\n }\n }\n },\n\n removeAnimal: (animal) => {\n setAnimalDetails((prevState) => {\n const newAnimalsDetails = helpers.tag.remove([...prevState], animal);\n\n if (newAnimalsDetails.length === 0) {\n storeService.session.remove.movementAnimalsBeingMoved();\n } else {\n storeService.session.set.movementAnimalsBeingMoved(newAnimalsDetails);\n }\n\n return newAnimalsDetails;\n });\n\n dataHasChanged();\n\n setTimeout(() => {\n document.activeElement.blur();\n }, 1);\n },\n\n removeAnimalsAll: () => {\n storeService.session.set.movementAnimalsBeingMoved([]);\n setAnimalDetails([]);\n\n dataHasChanged();\n },\n\n removeAllInvalid: () => {\n const animalDetailsCopy = helpers.animal.removeAllInvalid(animalDetails);\n storeService.session.set.movementAnimalsBeingMoved(animalDetailsCopy);\n setAnimalDetails(animalDetailsCopy);\n\n dataHasChanged();\n },\n\n transportedBy: (transportedBy) => {\n storeService.session.set.movementTransportedBy(transportedBy);\n setTransportDetails((prevState) => ({\n ...prevState,\n transportedBy\n }));\n\n dataHasChanged();\n\n handleChanges.clearTransporterName();\n },\n\n transporter: (transporter) => {\n storeService.session.set.movementTransporter(transporter);\n setTransportDetails((prevState) => ({\n ...prevState,\n transporterName: transporter\n }));\n\n dataHasChanged();\n },\n\n vehicleRegistrationNumber: (regNum) => {\n storeService.session.set.movementVehicleRegistrationNumber(regNum);\n setTransportDetails((prevState) => ({\n ...prevState,\n vehicleRegistrationNumber: regNum\n }));\n\n validate.registrationNumber(regNum);\n\n dataHasChanged();\n },\n\n withdrawalPeriod: (period) => {\n storeService.session.set.movementFciWithdrawalPeriod(period);\n\n dataHasChanged();\n }\n };\n\n const confirmation = {\n button: {\n recordAnother: () => ({\n id: 'recordAnother',\n label: 'button.recordAnotherMovement',\n onClick: () => {\n setSubmitted(false);\n setIsAmend(false);\n setValidationError(false);\n setValidateErrors([]);\n resetPage();\n history.push(navigation.movements());\n }\n }),\n\n returnToHomePage: () => ({\n id: 'returnToHomePage',\n label: 'button.returnToHomePage',\n onClick: returnTo.homePage\n }),\n\n returnToUserActivity: () => ({\n id: 'returnToUserActivity',\n label: 'button.returnToUserActivity',\n onClick: returnTo.userActivity\n }),\n\n viewSummary: (requestId, movementRef, requestType) => ({\n id: 'viewSummary',\n label: 'button.viewSummary',\n onClick: () => {\n setPermission(userRoleType.GENERIC);\n storeService.session.set.permissions(userRoleType.GENERIC);\n storeService.session.remove.holding();\n\n setTimeout(() => {\n history.push({\n pathname: Routing.activityDetails + requestId,\n state: {\n data: {\n requestId,\n movementDocumentRef: movementRef,\n requestType,\n current: {\n returnUrl: permissions.isKeeper() ? Routing.keeperHolding : navigation.movements(),\n permissions: role,\n holding\n }\n }\n }\n });\n }, [100]);\n }\n })\n },\n\n link: {\n pdf: (speciesId, ref) => (\n {\n label: helpers.species.isSheepId(speciesId) || helpers.species.isGoatId(speciesId) ? 'button.printMovementDocument' : null,\n param: ref,\n type: constants.linkTypes.pdfButton\n }\n )\n }\n };\n\n const returnTo = {\n homePage: () => {\n storeService.session.remove.dataChanged();\n storeService.session.set.permissions(userRoleType.GENERIC);\n setPermission(userRoleType.GENERIC);\n history.push(Routing.home);\n },\n\n movementSummary: () => {\n history.push(location.state.returnUrl, {\n data: location.state.data,\n searchState: location.state.searchState\n });\n },\n\n userActivity: () => {\n setIsAmend(false);\n setValidationError(false);\n setValidateErrors([]);\n resetPage();\n storeService.session.set.permissions(userRoleType.GENERIC);\n setPermission(userRoleType.GENERIC);\n history.push(Routing.userActivity);\n }\n };\n\n const resetPage = () => {\n setPending(false);\n setMovementRef(null);\n setPollingStatus(null);\n setDataChanged(false);\n setAmendChangedData(false);\n\n if (!submitted && isAmend) {\n const sessionMovementOriginal = storeService.session.get.originalMovement();\n storeService.session.set.movement(sessionMovementOriginal);\n\n const sessionMovementType = sessionMovementOriginal.movementType;\n const sessionMovementInBusiness = sessionMovementOriginal.movementInBusiness;\n const sessionDepartureDate = sessionMovementOriginal.departureDate;\n const sessionArrivalDate = sessionMovementOriginal.arrivalDate;\n const sessionOtherHolding = sessionMovementOriginal.otherHolding;\n const sessionTransportedBy = sessionMovementOriginal.transportInformation.transportedBy;\n const sessionTransporter = sessionMovementOriginal.transportInformation.transporter;\n const sessionVehicleRegistrationNumber = sessionMovementOriginal.transportInformation.vehicleRegistrationNumber;\n const sessionAuthorisationNumber = sessionMovementOriginal.transportInformation.authorisationNumber;\n const sessionBatchList = sessionMovementOriginal.selectedAnimalDetails.batchList;\n const sessionIndividualAnimals = sessionMovementOriginal.selectedAnimalDetails.animalsBeingMoved;\n const sessionFciData = sessionMovementOriginal.fci;\n\n setMarketType(constants.option.market.green);\n\n setDataFromSessionStorage({\n arrivalDate: sessionArrivalDate,\n authorisationNumber: sessionAuthorisationNumber,\n batchList: sessionBatchList,\n departureDate: sessionDepartureDate,\n fciData: sessionFciData,\n individualAnimals: sessionIndividualAnimals,\n movementInBusiness: sessionMovementInBusiness,\n movementType: sessionMovementType,\n otherHolding: sessionOtherHolding,\n transportedBy: sessionTransportedBy,\n transporter: sessionTransporter,\n vehicleRegistrationNumber: sessionVehicleRegistrationNumber\n });\n } else {\n setMarketType(constants.option.market.green);\n setMovementType(constants.option.movement.on);\n setInBusinessMovement(false);\n\n setDepartData({\n CPH: '',\n date: '',\n manualCPH: ''\n });\n setArriveData({\n CPH: holding.value,\n date: ''\n });\n setTransportDetails({\n transportedBy: '',\n transportVehicleRegistrationNo: '',\n transporterName: '',\n transportAuthorisationNumber: ''\n });\n setBatchList([]);\n setBatchTotal(0);\n setAnimalDetails([]);\n\n setSubmitted(false);\n setIsAmend(false);\n storeService.session.remove.activeTabId();\n storeService.session.removeAll.movement();\n storeService.session.removeAll.original();\n\n const dateFromField = document.getElementById('dateFrom');\n const dateToField = document.getElementById('dateTo');\n if (dateFromField) {\n dateFromField.value = '';\n }\n if (dateToField) {\n dateToField.value = '';\n }\n }\n\n resetAddresses();\n setResetForm(!resetForm);\n setValidateErrors([]);\n setValidationError(false);\n };\n\n const submitMovement = (e) => {\n e.preventDefault();\n clear.errors();\n setSubmitted(true);\n setPending(true);\n setValidationError(false);\n setValidateErrors([]);\n storeService.session.removeAll.confirm();\n\n const mapResponse = (processArea) => {\n if (processArea) {\n storeService.session.set.confirmRequestType(isAmend ? constants.option.requestType.correctTransfer : constants.option.requestType.movement);\n const responseRequestId = processArea.requestId !== undefined ? String(processArea.requestId) : null;\n storeService.session.set.confirmRequestId(responseRequestId);\n setRequestId(responseRequestId);\n const responseStatus = bffStatus.getStatus(processArea.requestStatus);\n storeService.session.set.confirmPollingStatus(responseStatus);\n setPollingStatus(responseStatus);\n storeService.session.set.confirmPollingErrors(processArea.errors ?? []);\n storeService.session.set.confirmPollingWarnings(processArea.warnings ?? []);\n const responseMovementRef = processArea.content?.movementDocument?.movementDocumentRef ? String(processArea.content.movementDocument.movementDocumentRef) : null;\n storeService.session.set.confirmMovementReference(responseMovementRef);\n setMovementRef(responseMovementRef);\n }\n };\n\n const transportInformation = (transportDetails && transportDetails.transportedBy !== '')\n ? {\n recordTransportInformation: 'yes',\n transportedBy: transportDetails.transportedBy,\n transporter: transportDetails.transporterName,\n vehicleRegistrationNumber: transportDetails.vehicleRegistrationNumber,\n authorisationNumber: transportDetails.transportAuthorisationNumber\n } : {\n recordTransportInformation: 'no'\n };\n\n const tempParams = {\n poll: config.POLLS_ENABLED,\n altErrors: true,\n inBusinessMovement,\n movementType: inBusinessMovement ? constants.option.movement.on : movementType,\n userHolding: inBusinessMovement ? arriveData.CPH : holding.value,\n animalCount: String(batchTotal + animalDetails.length),\n species: species.name,\n departureDate: departData.date,\n arrivalDate: arriveData.date,\n transportInformation: transportInformation,\n finalAnimalDetails: {\n animalsBeingMoved: animalDetails,\n batchList: batchList,\n numberOfAnimalsSelected: String(batchTotal + animalDetails.length)\n },\n fciData,\n exemptions: options.filter((o) => o.value),\n sourceHolding: departData.CPH ?? (helpers.species.isCattleId(species.id) ? config.UNKNOWN : ''),\n destinationHolding: arriveData.CPH\n };\n\n if (isAmend) {\n tempParams.amend = true;\n tempParams.originalMovementId = sessionMovement.movementId;\n } else {\n tempParams.amend = false;\n }\n\n bff\n .post('/movement', tempParams)\n .then((res) => {\n storeService.session.remove.dataChanged();\n const { data } = res;\n const { poll } = data;\n\n if (data.errorCode && data.errorCode === 400) {\n setValidationError(true);\n setValidateErrors(data.errors ?? []);\n setPollingStatus(constants.status.error);\n } else if (poll?.requestStatus) {\n mapResponse(res.data.poll);\n } else if (data.requestStatus) {\n mapResponse(res.data);\n } else {\n setPollingStatus(null);\n storeService.session.set.confirmPollingStatus(null);\n }\n setPending(false);\n })\n .catch((error) => {\n setPending(false);\n errors.BFF(error, setModal);\n });\n };\n\n const submissionConfirmation = () => {\n const sessionErrors = storeService.session.get.confirmPollingErrors();\n const sessionWarnings = storeService.session.get.confirmPollingWarnings();\n const withErrorsOrWarnings = !validationError && (sessionErrors?.length > 0 || sessionWarnings?.length > 0);\n const requestType = isAmend ? constants.option.requestType.correctTransfer : constants.option.requestType.movement;\n\n return (\n item)}\n confirm={{\n id: movementRef,\n label: 'label.movementRef',\n onClick: bffStatus.isPending(pollingStatus) || bffStatus.isClaPending(pollingStatus)\n ? () => {\n storeService.session.remove.dataChanged();\n storeService.session.set.permissions(userRoleType.GENERIC);\n setPermission(userRoleType.GENERIC);\n history.push(Routing.userActivity);\n }\n : null\n }}\n errors={sessionErrors ?? []}\n label={bffStatus.isClaPending(pollingStatus)\n ? 'label.submissionPending'\n : (sessionErrors?.length > 0\n ? 'label.submissionError'\n : (isAmend\n ? 'label.movementAmendmentSubmitted'\n : 'label.movementSubmitted'\n )\n )\n }\n links={[\n movementRef ? confirmation.link.pdf(species.id, { movementRef, requestId }) : null\n ].filter((item) => item)}\n setModal={setModal}\n status={pollingStatus}\n warnings={sessionWarnings ? sessionWarnings : []}\n />\n );\n };\n\n const checkSubmitButtonStatus = () => {\n if (isAmend) {\n const origMovementData = cloneDeep(storeService.session.get.originalMovement());\n const tempMovementData = cloneDeep(storeService.session.get.movement());\n\n let hasErrors = false;\n\n if (tempMovementData) {\n delete tempMovementData.marketType;\n\n // if (tempMovementData?.selectedAnimalDetails?.batchList?.length > 0) {\n // tempMovementData.selectedAnimalDetails.batchList.forEach((batch) => delete batch.added);\n // helpers.sortArrayOfObjects(tempMovementData.selectedAnimalDetails.batchList, 'batchNumber', constants.sorting.ascending);\n // }\n // if (tempMovementData?.selectedAnimalDetails?.animalsBeingMoved?.length > 0) {\n // tempMovementData.selectedAnimalDetails.animalsBeingMoved.forEach((animal) => delete animal.added);\n // helpers.sortArrayOfObjects(tempMovementData.selectedAnimalDetails.animalsBeingMoved, 'tagNumber', constants.sorting.ascending);\n // }\n\n if (tempMovementData?.otherHolding) {\n delete tempMovementData.otherHolding.address;\n }\n\n const selectedTempExemption = tempMovementData.exemptions.filter((item) => item.value).map((item) => item);\n if (tempMovementData?.exemptions && selectedTempExemption.length > 0) {\n // eslint-disable-next-line no-unused-vars\n tempMovementData.exemptions = tempMovementData.exemptions.map(({ disabled, ...item }) => item);\n }\n if (origMovementData?.exemptions) {\n // eslint-disable-next-line no-unused-vars\n origMovementData.exemptions = origMovementData.exemptions.map(({ disabled, ...item }) => item);\n }\n\n if (tempMovementData?.transportDetails?.transportVehicleRegistrationNo && vehicleRegNoError) {\n hasErrors = true;\n }\n\n // helpers.checkObjectEquality(origMovementData, tempMovementData);\n\n const changesPresent = !isEqual(origMovementData, tempMovementData);\n setAmendChangedData(changesPresent);\n\n if (changesPresent && !hasErrors) {\n setSubmitDisabled(false);\n } else {\n setSubmitDisabled(true);\n }\n }\n } else if (\n departData.CPH &&\n departData.date &&\n !departureDateError.value &&\n arriveData.CPH &&\n (\n !transportDetails.transportVehicleRegistrationNo ||\n (\n transportDetails.transportVehicleRegistrationNo &&\n !vehicleRegNoError\n )\n ) &&\n (\n (\n helpers.option.movement.isOff(movementType) &&\n !inBusinessMovement\n ) ||\n (\n (\n helpers.option.movement.isOn(movementType) ||\n (\n helpers.option.movement.isOff(movementType) &&\n inBusinessMovement\n )\n ) &&\n arriveData.date &&\n !arrivalDateError.value\n )\n ) &&\n (\n (\n batchList.length > 0 &&\n !batchList.some((batch) => helpers.batch.isInvalid(batch))\n ) ||\n (\n animalDetails.length > 0 &&\n !animalDetails.some((batch) => helpers.batch.isInvalid(batch))\n )\n ) &&\n (\n !fciData.recordFCI || helpers.option.fci.doNotRecord(fciData.recordFCI) ||\n (\n helpers.option.fci.doRecord(fciData.recordFCI) &&\n (\n helpers.option.animals.doSatisfy(fciData.animalsSatisfy) ||\n (\n helpers.option.animals.doNotSatisfy(fciData.animalsSatisfy) &&\n fciData.withdrawalPeriod?.code &&\n fciData.nonComplianceReason &&\n fciData.unfitAnimals?.length > 0\n )\n )\n )\n )\n ) {\n setSubmitDisabled(false);\n } else {\n setSubmitDisabled(true);\n }\n };\n\n React.useEffect(() => {\n checkSubmitButtonStatus();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n marketType,\n movementType,\n inBusinessMovement,\n departData,\n arriveData,\n transportDetails,\n options,\n batchList,\n animalDetails,\n fciData\n ]);\n\n React.useEffect(() => {\n const source = axios.CancelToken.source();\n\n helpers.get.metFciWithdrawalPeriods(source.token)\n .then(({ data }) => {\n if (helpers.response.isValid(data, setModal)) {\n setMetFCIWithdrawalPeriods(data);\n }\n });\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n const routing = Routing[role + 'Movements'];\n if (routing) {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, routing.length) !== Routing[role + 'Movements']) {\n storeService.session.remove.activeTabId();\n storeService.session.remove.dataChanged();\n storeService.session.removeAll.confirm();\n storeService.session.removeAll.movement();\n storeService.session.removeAll.original();\n unListen();\n }\n });\n }\n\n window.onpopstate = () => {\n if (storeService.session.get.confirm()) {\n history.push(routing);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [history]);\n\n React.useEffect(() => {\n validate.registrationNumber(transportDetails.transportVehicleRegistrationNo);\n\n checkSubmitButtonStatus();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [transportDetails.transportVehicleRegistrationNo]);\n\n React.useEffect(() => {\n helpers.scrollToTop();\n }, []);\n\n React.useEffect(() => {\n const sessionMovementType = storeService.session.get.movementType();\n const sessionMovementInBusiness = storeService.session.get.movementInBusiness();\n const sessionDepartureDate = storeService.session.get.movementDepartureDate();\n const sessionArrivalDate = storeService.session.get.movementArrivalDate();\n const sessionOtherHolding = storeService.session.get.movementOtherHolding();\n const sessionTransportedBy = storeService.session.get.movementTransportedBy();\n const sessionTransporter = storeService.session.get.movementTransporter();\n const sessionVehicleRegistrationNumber = storeService.session.get.movementVehicleRegistrationNumber();\n const sessionAuthorisationNumber = storeService.session.get.movementAuthorisationNumber();\n const sessionBatchList = storeService.session.get.movementBatchList();\n const sessionIndividualAnimals = storeService.session.get.movementAnimalsBeingMoved();\n const sessionFciData = storeService.session.get.movementFci();\n\n setDataFromSessionStorage({\n arrivalDate: sessionArrivalDate,\n authorisationNumber: sessionAuthorisationNumber,\n batchList: sessionBatchList,\n departureDate: sessionDepartureDate,\n fciData: sessionFciData,\n individualAnimals: sessionIndividualAnimals,\n movementInBusiness: sessionMovementInBusiness,\n movementType: sessionMovementType,\n otherHolding: sessionOtherHolding,\n transportedBy: sessionTransportedBy,\n transporter: sessionTransporter,\n vehicleRegistrationNumber: sessionVehicleRegistrationNumber\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ready &&\n <>\n {(!submitted ||\n (\n submitted && !pending && validateErrors.length > 0\n )\n ) &&\n <>\n {\n const message = isAmend ? 'warning.wantToExitAmendment' : 'warning.unsavedChanges2';\n return (!storeService.session.get.idle() && ((!isAmend && dataChanged) || (isAmend && amendChangedData && location.pathname !== Routing[role + 'MovementConfirm'])) && params.pathname.substring(0, Routing[role + 'Movements'].length) !== Routing[role + 'Movements']) ? t(message) : true;\n }}\n />\n\n {submitted && !pending && validateErrors.length > 0 && // Submission error\n \n }\n\n

    \n {t('menu.movements')}\n {isAmend &&\n <> ({t('label.amendment')})\n }\n

    \n\n {isMarket && pageContent.marketType()}\n {isGathering && pageContent.movementType()}\n\n

    \n {helpers.option.movement.isOn(movementType)\n ? t('movements.departure.title')\n : t('movements.destination.title')}\n

    \n\n {!inBusinessMovement &&\n

    \n {helpers.option.movement.isOn(movementType)\n ? t('movements.departure.descOffGathering')\n : t('movements.destination.descOnGathering')\n }\n

    \n }\n\n {helpers.option.movement.isOn(movementType) && pageContent.departure.location()}\n {helpers.option.movement.isOff(movementType) && pageContent.destination.location()}\n\n
    \n {pageContent.departure.date()}\n {(helpers.option.movement.isOn(movementType) || inBusinessMovement) && pageContent.destination.date()}\n
    \n\n {pageContent.transportInformation()}\n {pageContent.exemptions()}\n {((isAbattoir && !helpers.species.isCattleId(species.id)) || isGathering) &&\n pageContent.animalBatch()\n }\n {pageContent.individualAnimals()}\n {pageContent.fciDetails()}\n

    {t('label.animalTotal')} {String(batchTotal + animalDetails.length)}

    \n {validateErrors?.length > 0 && pageContent.validationErrors()}\n\n
    \n
    \n \n
    \n
    \n setModal({\n labelCancel: 'button.cancel',\n modalTitle: 'label.revertChanges',\n modalMessage: 'label.revertChangesConfirm',\n modalConfirm: () => {\n resetPage();\n setModal(null);\n },\n modalClose: () => false\n })}\n />\n\n {isAmend &&\n \n }\n
    \n
    \n \n }\n\n {submitted && pending &&\n \n }\n\n {submitted && !pending && !validationError && submissionConfirmation()}\n \n }\n \n );\n};\n\nMovementsGatherings.propTypes = {\n location: PropTypes.object.isRequired,\n setModal: PropTypes.func.isRequired,\n setPermission: PropTypes.func.isRequired\n};\n\nexport default MovementsGatherings;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport config from 'config';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport Routing from 'routing';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport AddressSummary from 'components/summary/addressSummary/addressSummary';\nimport Button from 'components/base/button/button';\nimport CheckBox from 'components/base/checkbox/checkbox';\nimport CheckboxGroup from 'components/base/checkboxGroup/checkboxGroup';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport InputDate from 'components/base/inputDate/inputDate';\nimport OtherHoldingSelection from 'components/otherHoldingSelection/otherHoldingSelection';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport TextEntry from 'components/base/textEntry/textEntry';\nimport configHelper from 'services/configHelper';\n\nconst MovementStep1 = ({\n actions,\n currentHolding,\n fromSummary,\n inBusinessMovement,\n isAmend,\n movementData,\n movementType,\n setDataChanged,\n setInBusinessMovement,\n setIsAmend,\n setModal,\n setMovementData,\n setMovementType,\n species\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const speciesId = species.id;\n const holdings = storeService.session.get.holdings();\n const numberOfHoldings = holdings ? Object.keys(holdings).length : 0;\n const departureDaysAhead = configHelper.get.offMoveMaxDays(speciesId);\n\n const [movementExempt, setMovementExempt] = React.useState(constants.option.exemption.no);\n const [submitDisabled, setSubmitDisabled] = React.useState(true);\n const [recordCPH, setRecordCPH] = React.useState(constants.option.recordCPH.no);\n const [showExemptions, setShowExemptions] = React.useState(false);\n const [otherHolding, setOtherHolding] = React.useState(null);\n const [departureDate, setDepartureDate] = React.useState(null);\n const [arrivalDate, setArrivalDate] = React.useState(null);\n const [departureDateError, setDepartureDateError] = React.useState('');\n const [departureDateWarning, setDepartureDateWarning] = useState('');\n const [arrivalDateError, setArrivalDateError] = React.useState('');\n const [holdingSelectionError, setHoldingSelectionError] = React.useState(false);\n const [arrivalDateDisabled, setArrivalDateDisabled] = React.useState(true);\n const [comment, setComment] = React.useState('');\n const [isMoveToCommonGround, setIsMoveToCommonGround] = React.useState(false);\n\n const validateDate = (type, whichDate, date, businessMove) => {\n if (helpers.flags.isDeparture(whichDate)) {\n setDepartureDateError('');\n setDepartureDateWarning('');\n } else if (helpers.flags.isDestination(whichDate)) {\n setArrivalDateError('');\n }\n\n const dateIsInTheFuture = helpers.date.is.inTheFuture(date, 'movement');\n const isDeparture = helpers.flags.isDeparture(whichDate);\n const isOff = helpers.option.movement.isOff(type);\n const isOn = helpers.option.movement.isOn(type);\n const isPermitMove = helpers.option.movement.isPermitMove(type);\n\n if (isDeparture && (isMoveToCommonGround || (businessMove && isOff) || isOn || isPermitMove) && dateIsInTheFuture !== null) {\n setDepartureDateError('error.departureDateInTheFuture');\n return;\n }\n\n const isDestination = helpers.flags.isDestination(whichDate);\n if (isDestination && helpers.date.is.beforeDate(date, departureDate)) {\n setArrivalDateError('movements.arrival.earlierThanDeparture');\n return;\n }\n\n if (isDestination && helpers.date.is.xPeriodAfterDate(date, departureDate, 1, constants.period.days)) {\n setArrivalDateError('movements.arrival.moreThan1DayAfterDeparture');\n return;\n }\n\n const dateIsOverThreeDaysAgo = helpers.date.is.overThreeDaysAgo(date);\n if (isDeparture && dateIsOverThreeDaysAgo) {\n setDepartureDateWarning(dateIsOverThreeDaysAgo);\n return;\n }\n\n const isCattle = helpers.species.isCattleId(speciesId);\n if (isCattle && dateIsInTheFuture) {\n if (isDeparture) {\n setDepartureDateError(dateIsInTheFuture);\n } else if (isDestination) {\n setArrivalDateError(dateIsInTheFuture);\n }\n return;\n }\n\n const dateIsXDayAhead = helpers.date.is.xDaysInTheFuture(date, departureDaysAhead);\n if (!isCattle && dateIsXDayAhead !== null) {\n if (isOn || isMoveToCommonGround) {\n if (isDeparture) {\n setDepartureDateError(dateIsXDayAhead);\n } else if (isDestination) {\n setArrivalDateError(dateIsXDayAhead);\n }\n }\n return;\n }\n\n const dateIsXDayAheadOverLimit = helpers.date.is.xDaysInTheFutureOverLimit(date, departureDaysAhead);\n if (!isCattle && dateIsXDayAheadOverLimit !== null) {\n if (isDeparture) {\n setDepartureDateError(dateIsXDayAheadOverLimit);\n } else if (isDestination) {\n setArrivalDateError(dateIsXDayAheadOverLimit);\n }\n }\n };\n\n const submitValues = () => {\n const movementDetails = {\n ...movementData,\n arrivalDate,\n comment: comment,\n departureDate,\n otherHolding: !helpers.species.isCattleId(speciesId) || (helpers.species.isCattleId(speciesId) && recordCPH) ? otherHolding : null,\n movementType,\n inBusinessMovement,\n exempt: movementExempt,\n exemptions: movementData?.exemptions\n };\n\n setMovementData(movementDetails);\n };\n\n const nextPage = () => {\n submitValues();\n history.push(fromSummary ? Routing.movementsSummary : Routing.movementsStep2);\n helpers.scrollToTop();\n };\n\n const findPermitExemption = (mandatoryExemption, id) => Object.values(mandatoryExemption).some((exemption) => exemption.id === id);\n\n const render = {\n comment: () => (\n handleChanges.comment(event.target.value)}\n placeholder={helpers.option.movement.isPermitMove(movementType) ? t('movements.permitMove.comment.placeholder') : t('label.userCommentPlaceholder')}\n value={comment}\n width=\"full\"\n />\n )\n };\n\n const handleChanges = {\n arrivalDate: (date) => {\n setArrivalDate(date);\n storeService.session.set.movementArrivalDate(date);\n validateDate(movementType, constants.flags.destination, date, inBusinessMovement);\n },\n\n comment: (comment) => {\n const validatePermitMoveComment = (input) => {\n // eslint-disable-next-line no-useless-escape\n const regex = /^[a-zA-Z0-9\\s\\,\\.]*$/;\n return regex.test(input);\n };\n\n if (comment === '') {\n setComment('');\n storeService.session.remove.movementComment();\n } else if (helpers.option.movement.isPermitMove(movementType) && validatePermitMoveComment(comment)) {\n setComment(comment);\n storeService.session.set.movementComment(comment);\n } else {\n setComment(comment);\n storeService.session.set.movementComment(comment);\n }\n },\n\n departureDate: (date) => {\n setDepartureDate(date);\n storeService.session.set.movementDepartureDate(date);\n validateDate(movementType, constants.flags.departure, date, inBusinessMovement);\n\n if (helpers.option.movement.isPermitMove(movementType)) {\n setArrivalDate(date);\n storeService.session.set.movementArrivalDate(date);\n } else {\n setArrivalDate(null);\n setArrivalDateError('');\n storeService.session.remove.movementArrivalDate();\n }\n },\n\n inBusinessMovement: (inBusiness) => {\n if (inBusiness) {\n storeService.session.set.movementInBusiness(true);\n } else {\n storeService.session.remove.movementInBusiness();\n }\n setInBusinessMovement(inBusiness);\n storeService.session.remove.movementOtherHolding();\n setOtherHolding(null);\n setDataChanged();\n validateDate(movementType, constants.flags.departure, departureDate, inBusiness);\n },\n\n otherHolding: (holding) => {\n setOtherHolding(holding);\n storeService.session.set.movementOtherHolding(holding);\n\n setDataChanged();\n },\n\n openOrHiddenExemptionList: (isOpen) => {\n if (isOpen) {\n setShowExemptions(true);\n } else {\n setShowExemptions(false);\n setMovementExempt(constants.option.exemption.no);\n storeService.session.set.movementExempt(constants.option.exemption.no);\n\n const clearedExemptions = movementData.exemptions.map((o) => ({\n ...o,\n value: false,\n disabled: !inBusinessMovement\n ? findPermitExemption(constants.permitMovesMandatory, o.id)\n : false\n }));\n\n setMovementData((prevState) => ({ ...prevState, exemptions: clearedExemptions }));\n storeService.session.set.movementExemptions(clearedExemptions);\n }\n },\n\n exemption: (event) => {\n const selectedExemptions = movementData.exemptions.map((o) => ({\n ...o,\n value: (event.target.id === String(o.id)) ? !o.value : o.value,\n disabled: helpers.option.movement.isPermitMove(movementType) || !inBusinessMovement\n ? findPermitExemption(constants.permitMovesMandatory, o.id)\n : false\n }));\n\n const exemptionSelected = selectedExemptions.some((e) => e.value === true);\n\n if (exemptionSelected) {\n setMovementExempt(constants.option.exemption.yes);\n storeService.session.set.movementExempt(constants.option.exemption.yes);\n } else {\n setMovementExempt(constants.option.exemption.no);\n storeService.session.set.movementExempt(constants.option.exemption.no);\n }\n\n setMovementData((prevState) => ({ ...prevState, exemptions: selectedExemptions }));\n storeService.session.set.movementExemptions(selectedExemptions);\n\n setDataChanged();\n },\n\n movementType: (type) => {\n setMovementType(type);\n storeService.session.set.movementType(type);\n\n if (helpers.option.movement.isOff(type)) {\n setArrivalDate(null);\n setArrivalDateError('');\n storeService.session.remove.movementArrivalDate();\n }\n\n if (helpers.species.isCattleId(speciesId)) {\n if (!storeService.session.get.movementRecordCPH()) {\n storeService.session.set.movementRecordCPH(constants.option.recordCPH.no);\n }\n }\n\n if (!storeService.session.get.movementExempt()) {\n storeService.session.set.movementExempt(constants.option.exemption.no);\n }\n\n if (helpers.option.movement.isPermitMove(type)) {\n setInBusinessMovement(false);\n storeService.session.remove.movementInBusiness();\n\n if (departureDate) {\n setArrivalDate(departureDate);\n setArrivalDateError('');\n storeService.session.set.movementArrivalDate(departureDate);\n }\n\n if (comment) {\n setComment('');\n storeService.session.remove.movementComment();\n }\n\n setOtherHolding(null);\n storeService.session.remove.movementOtherHolding();\n storeService.session.remove.activeTabIdOtherHoldingSelection();\n\n const permitMoveExemptions = movementData.exemptions.map((o) => {\n const isPermitMoveExemption = findPermitExemption(constants.permitMovesMandatory, o.id);\n\n return {\n ...o,\n value: isPermitMoveExemption,\n disabled: isPermitMoveExemption\n };\n });\n\n setMovementData((prevState) => ({ ...prevState, exemptions: permitMoveExemptions }));\n storeService.session.set.movementExemptions(permitMoveExemptions);\n\n setShowExemptions(true);\n setMovementExempt(constants.option.exemption.yes);\n storeService.session.set.movementExempt(constants.option.exemption.yes);\n } else {\n setArrivalDate(null);\n setArrivalDateError('');\n storeService.session.remove.movementArrivalDate();\n\n setComment('');\n storeService.session.remove.movementComment();\n\n setShowExemptions(false);\n setMovementExempt(constants.option.exemption.no);\n storeService.session.set.movementExempt(constants.option.exemption.no);\n }\n validateDate(type, constants.flags.arrivalDate, arrivalDate, inBusinessMovement);\n validateDate(type, constants.flags.departure, departureDate, inBusinessMovement);\n\n setDataChanged();\n },\n\n recordCPH: (record) => {\n setRecordCPH(record);\n storeService.session.set.movementRecordCPH(record);\n\n if (record === constants.option.recordCPH.no) {\n setOtherHolding(null);\n }\n\n setDataChanged();\n }\n };\n\n const getDates = {\n arrivalMin: () => {\n const date = helpers.date.formatYYYYMMDD(new Date(departureDate));\n return date;\n },\n\n arrivalMax: () => {\n const date = helpers.date.formatYYYYMMDD(\n helpers.date.momentToJSDate(\n helpers.date.momentMinDate(\n helpers.date.addPeriod(departureDate, 1, constants.period.days),\n helpers.date.todayEndOfDay()\n )\n )\n );\n return date;\n },\n\n departureMax: () => {\n const daysAhead = new Date();\n if (helpers.option.movement.isOff(movementType) && !isMoveToCommonGround && !inBusinessMovement) {\n daysAhead.setDate(daysAhead.getDate() + departureDaysAhead);\n }\n return helpers.date.formatYYYYMMDD(daysAhead);\n }\n };\n\n useEffect(() => {\n const sessionMovement = storeService.session.get.movement();\n\n const sessionDepartureDate = storeService.session.get.movementDepartureDate();\n const sessionArrivalDate = storeService.session.get.movementArrivalDate();\n const sessionRecordCph = storeService.session.get.movementRecordCPH();\n const sessionMovementExempt = storeService.session.get.movementExempt();\n const sessionOtherHolding = storeService.session.get.movementOtherHolding();\n const sessionComment = storeService.session.get.movementComment();\n const sessionShowExemptions = sessionMovementExempt === 'yes';\n\n if (!sessionMovement) {\n setIsAmend(false);\n }\n\n if (sessionDepartureDate) {\n setDepartureDate(sessionDepartureDate);\n validateDate(movementType, constants.flags.departure, sessionDepartureDate, inBusinessMovement);\n }\n\n if (sessionArrivalDate) {\n setArrivalDate(sessionArrivalDate);\n validateDate(movementType, constants.flags.destination, sessionArrivalDate, inBusinessMovement);\n }\n\n if (sessionOtherHolding) {\n setOtherHolding(sessionOtherHolding);\n }\n\n if (sessionRecordCph) {\n setRecordCPH(sessionRecordCph);\n }\n\n if (sessionMovementExempt) {\n setMovementExempt(sessionMovementExempt);\n setShowExemptions(sessionShowExemptions);\n }\n\n if (sessionComment) {\n setComment(sessionComment);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (otherHolding && otherHolding.value === currentHolding.value) {\n setHoldingSelectionError(true);\n } else {\n setHoldingSelectionError(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [otherHolding, currentHolding]);\n\n useEffect(() => {\n const exemptionOptionsSelected = () => {\n return movementData.exemptions?.some((item) => item.value);\n };\n\n setSubmitDisabled(\n ((helpers.option.movement.isOn(movementType) || inBusinessMovement) && (!arrivalDate || arrivalDateError !== '')) ||\n !departureDate ||\n departureDateError !== '' ||\n (helpers.species.isCattleId(speciesId) && recordCPH === constants.option.recordCPH.yes && !otherHolding) ||\n (!helpers.species.isCattleId(speciesId) && (!otherHolding && !helpers.option.movement.isPermitMove(movementType))) ||\n holdingSelectionError ||\n (helpers.option.movement.isExempt(movementExempt) && !exemptionOptionsSelected()) ||\n (!comment && helpers.option.movement.isPermitMove(movementType)) ||\n (isMoveToCommonGround && (!arrivalDate || arrivalDateError !== ''))\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [movementType, arrivalDate, arrivalDateError, comment, departureDate, departureDateError, speciesId, otherHolding, holdingSelectionError, movementExempt, movementData, isMoveToCommonGround]);\n\n useEffect(() => {\n setArrivalDateDisabled(!departureDate || departureDateError !== '');\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [departureDate, departureDateError]);\n\n useEffect(() => {\n if (movementData?.exemptions) {\n setMovementData((prevState) => {\n const selectedExemptions = prevState.exemptions.map((o) => ({\n ...o,\n disabled: helpers.option.movement.isPermitMove(movementType) || !inBusinessMovement\n ? findPermitExemption(constants.permitMovesMandatory, o.id)\n : false\n }));\n\n storeService.session.set.movementExemptions(selectedExemptions);\n\n return {\n ...prevState,\n exemptions: selectedExemptions\n };\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inBusinessMovement, showExemptions]);\n\n useEffect(() => {\n if (helpers.option.movement.isMoveToCommonGround(movementType, otherHolding?.value)) {\n setIsMoveToCommonGround(true);\n\n if (helpers.date.is.inTheFuture(departureDate)) {\n setDepartureDateError('error.departureDateInTheFuture');\n }\n } else {\n setIsMoveToCommonGround(false);\n\n validateDate(movementType, constants.flags.departure, departureDate, inBusinessMovement);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [otherHolding]);\n\n return (\n <>\n {ready &&\n <>\n

    {t('movements.movement-date.title')}

    \n\n \n\n
    \n
    \n
    \n

    {t('movements.title-type')}

    \n {inBusinessMovement && movementType === null &&\n \n }\n handleChanges.movementType(event.target.value)}\n suppressLabel={true}\n value={movementType}\n />\n
    \n\n {numberOfHoldings > 1 && !helpers.option.movement.isPermitMove(movementType)\n ?
    \n handleChanges.inBusinessMovement(!inBusinessMovement)}\n tooltip=\"label.movementTypeTooltip\"\n value={inBusinessMovement}\n />\n\n {inBusinessMovement &&\n \n }\n
    \n : \n }\n\n {movementType !== null &&\n <>\n

    {t('movements.title-date')}

    \n
    \n handleChanges.departureDate(event.target.value)}\n setError={setDepartureDateError}\n value={departureDate}\n warning={departureDateWarning}\n yearLength={4}\n />\n
    \n\n {(helpers.option.movement.isOn(movementType) || inBusinessMovement || isMoveToCommonGround) &&\n
    \n handleChanges.arrivalDate(event.target.value)}\n setError={setArrivalDateError}\n value={arrivalDate}\n yearLength={4}\n />\n
    \n }\n \n }\n
    \n
    \n\n {movementType && !helpers.option.movement.isPermitMove(movementType) &&\n \n {render.comment()}\n \n }\n\n {helpers.option.movement.isPermitMove(movementType) &&\n
    \n {render.comment()}\n
    \n }\n\n {movementType !== null &&\n <>\n {helpers.species.isCattleId(speciesId) && !helpers.option.movement.isPermitMove(movementType) &&\n
    \n handleChanges.recordCPH(event.target.value)}\n value={recordCPH}\n />\n
    \n }\n\n {(!helpers.species.isCattleId(speciesId) || (helpers.species.isCattleId(speciesId) && recordCPH === constants.option.recordCPH.yes)) && !helpers.option.movement.isPermitMove(movementType) &&\n <>\n {!otherHolding &&\n <>\n

    {helpers.option.movement.isOn(movementType)\n ? t('movements.departure.title')\n : t('movements.destination.title')}\n

    \n\n {!inBusinessMovement &&\n

    \n {helpers.option.movement.isOn(movementType)\n ? t('movements.departure.descOff')\n : t('movements.destination.descOn')\n }\n

    \n }\n\n {holdingSelectionError &&\n \n }\n\n \n \n }\n\n {otherHolding &&\n
    \n {\n storeService.session.remove.movementOtherHolding();\n setOtherHolding(null);\n }}\n setModal={setModal}\n storeIn1=\"holdingAddress\"\n storeIn2=\"movementOtherHoldingAddress\"\n />\n
    \n }\n \n }\n\n {movementData?.exemptions?.length > 0 &&\n <>\n

    {t('movements.standstillExemptions.title')}

    \n

    \n\n handleChanges.openOrHiddenExemptionList(event.target.open)}\n open={showExemptions}\n title=\"about.genericTitle.viewAndSelect\"\n />\n\n {showExemptions &&\n

    \n \n
    \n }\n \n }\n\n \n \n }\n \n }\n \n );\n};\n\nMovementStep1.propTypes = {\n actions: PropTypes.object,\n currentHolding: PropTypes.object.isRequired,\n fromSummary: PropTypes.bool,\n inBusinessMovement: PropTypes.bool.isRequired,\n isAmend: PropTypes.bool,\n movementData: PropTypes.object.isRequired,\n movementType: PropTypes.string,\n setDataChanged: PropTypes.func.isRequired,\n setInBusinessMovement: PropTypes.func.isRequired,\n setIsAmend: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setMovementData: PropTypes.func.isRequired,\n setMovementType: PropTypes.func.isRequired,\n species: PropTypes.object.isRequired\n};\n\nexport default MovementStep1;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/modalAddBatch/modalAddBatch.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport { tableColumns } from 'services/tableColumns';\nimport AddBatch from 'components/addBatch/addBatch';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport Table from 'components/table/table';\n\nconst ModalAddBatch = ({\n batchList,\n clearAll,\n modalAnimals,\n pending,\n removeAllInvalid,\n removeBatch,\n setModal,\n setModalAnimals,\n setPending,\n species,\n updateBatchList\n}) => {\n const { ready } = useTranslation();\n\n const [paginationParams, setPaginationParams] = useState({\n ...constants.pagination.defaultParams,\n [constants.pagination.bottom]: {\n ...constants.pagination.defaultParams[constants.pagination.bottom],\n totalLabel: 'label.totalBatches'\n }\n });\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n [constants.pagination.bottom]: {\n ...prevState[constants.pagination.bottom],\n total: modalAnimals?.length\n }\n }));\n }, [modalAnimals]);\n\n return (\n <>\n {ready &&\n
    \n
    \n \n
    \n\n {modalAnimals?.some((batch) => helpers.batch.isInvalid(batch)) &&\n \n }\n\n {modalAnimals?.length > 0 &&\n
    \n
    \n total + parseInt(item.animalTotal), 0), 'table.title.batches'),\n data: [\n modalAnimals?.reduce((total, item) => total + parseInt(item.animalTotal), 0)\n ]\n }}\n />\n
    \n
    \n }\n
    \n }\n \n );\n};\n\nModalAddBatch.propTypes = {\n batchList: PropTypes.array.isRequired,\n clearAll: PropTypes.func,\n modalAnimals: PropTypes.array.isRequired,\n pending: PropTypes.bool.isRequired,\n removeAllInvalid: PropTypes.func,\n removeBatch: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setModalAnimals: PropTypes.func.isRequired,\n setPending: PropTypes.func.isRequired,\n species: PropTypes.exact({\n id: PropTypes.number,\n name: PropTypes.string,\n notifications: PropTypes.number,\n errorFound: PropTypes.number\n }).isRequired,\n updateBatchList: PropTypes.func.isRequired\n};\n\nexport default ModalAddBatch;\n","import React, { useEffect } from 'react';\nimport classes from 'components/modalAnimalsOnHolding/modalAnimalsOnHolding.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport { initialSorting, tableColumns } from 'services/tableColumns';\nimport Table from 'components/table/table';\n\nconst ModalAnimalsOnHolding = ({\n addAll,\n animalsToChange,\n clearAll,\n departureDate,\n modalAnimals,\n setModal,\n setModalAnimals,\n setModalAnimalsInitial,\n toggleAllAnimals,\n toggleAnimal\n}) => {\n const sessionSpecies = storeService.session.get.species();\n const speciesId = sessionSpecies ? sessionSpecies.id : '';\n const sessionHolding = storeService.session.get.holding();\n const cph = sessionHolding ? sessionHolding.value : '';\n\n const [animalsOnHolding, setAnimalsOnHolding] = React.useState([]);\n const [numberOfAnimalsOnHolding, setNumberOfAnimalsOnHolding] = React.useState(0);\n\n const tableParams = {\n request: {\n url: '/animals',\n params: {\n speciesId,\n cph,\n onHoldingDate: helpers.date.endOfDay(departureDate)\n },\n processData: (data) => helpers.animal.addDobAndAgeForDisplay(data)\n }\n };\n\n useEffect(() => {\n const animalsToChangeOnHoldingsOnly = JSON.parse(JSON.stringify(animalsToChange.filter((item) => item.onHolding)));\n\n setModalAnimalsInitial(animalsToChangeOnHoldingsOnly);\n setModalAnimals(animalsToChangeOnHoldingsOnly);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n
    \n
    \n
    \n toggleAllAnimals(animalsOnHolding, true) : null}\n clearAll={clearAll}\n columns={tableColumns.movements.modalAnimalsOnHolding({ actionType: 'toggle', actionFunction: toggleAnimal, sortable: true })}\n data={animalsOnHolding.map((item1) =>\n modalAnimals.find((item2) => item2.tagNumber === item1.tagNumber)\n ? { ...item1, added: true }\n : { ...item1, added: false }\n )}\n filtersComponents={{\n [constants.filters.inside]: 'AnimalsOnHolding'\n }}\n initialSortBy={initialSorting.movements.modalAnimalsOnHolding.accessor}\n initialSortDirection={initialSorting.movements.modalAnimalsOnHolding.direction}\n params={tableParams}\n setData={setAnimalsOnHolding}\n setDataTotal={setNumberOfAnimalsOnHolding}\n setModal={setModal}\n store={{\n filters: 'AnimalsOnHolding',\n data: 'AnimalsOnHolding'\n }}\n title=\"table.title.animalsOnHolding\"\n />\n
    \n
    \n
    \n );\n};\n\nModalAnimalsOnHolding.propTypes = {\n addAll: PropTypes.func.isRequired,\n animalsToChange: PropTypes.array.isRequired,\n clearAll: PropTypes.func.isRequired,\n departureDate: PropTypes.string.isRequired,\n modalAnimals: PropTypes.array.isRequired,\n setModal: PropTypes.func.isRequired,\n setModalAnimals: PropTypes.func.isRequired,\n setModalAnimalsInitial: PropTypes.func.isRequired,\n toggleAllAnimals: PropTypes.func.isRequired,\n toggleAnimal: PropTypes.func.isRequired\n};\n\nexport default ModalAnimalsOnHolding;\n","import React, { useEffect, useState } from 'react';\nimport classes from 'components/modalFileUpload/modalFileUpload.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport { tableColumns } from 'services/tableColumns';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport FileUpload from 'components/base/fileUpload/fileUpload';\nimport Table from 'components/table/table';\n\nconst ModalFileUpload = ({\n clearAll,\n isTagLimitExeed,\n maxTagsAllowed,\n modalAnimals,\n notes,\n pending,\n removeAllInvalid,\n removeAnimal,\n setModal,\n setModalAnimals,\n setPending,\n species,\n upload,\n uploadInPopup\n}) => {\n const [paginationParams, setPaginationParams] = useState(constants.pagination.defaultParams);\n const [uploadFile, setuploadFile] = useState(false);\n\n useEffect(() => {\n setuploadFile(uploadInPopup ? 'uploadInPage' : '');\n setPaginationParams((prevState) => ({\n ...prevState,\n [constants.pagination.bottom]: {\n ...prevState[constants.pagination.bottom],\n total: modalAnimals?.length\n }\n }));\n }, [modalAnimals]);\n\n return (\n
    \n
    \n \n
    \n\n {modalAnimals && helpers.tag.hasNonEidTagsSheep(species.id, modalAnimals) &&\n \n }\n\n {modalAnimals?.some((tag) => helpers.tag.isInvalid(tag)) &&\n \n }\n\n {isTagLimitExeed &&\n \n }\n\n {!pending && modalAnimals?.length > 0 &&\n
    \n
    \n \n
    \n
    \n }\n
    \n );\n};\n\nModalFileUpload.propTypes = {\n clearAll: PropTypes.func.isRequired,\n isTagLimitExeed: PropTypes.bool,\n maxTagsAllowed: PropTypes.number,\n modalAnimals: PropTypes.array.isRequired,\n notes: PropTypes.string,\n pending: PropTypes.bool.isRequired,\n removeAllInvalid: PropTypes.func.isRequired,\n removeAnimal: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setModalAnimals: PropTypes.func.isRequired,\n setPending: PropTypes.func.isRequired,\n species: PropTypes.exact({\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n notifications: PropTypes.number,\n errorFound: PropTypes.number\n }),\n upload: PropTypes.func.isRequired,\n uploadInPopup: PropTypes.bool\n};\n\nexport default ModalFileUpload;\n","import React, { useEffect, useState } from 'react';\nimport classes from 'components/modalTagNumberRange/modalTagNumberRange.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport { tableColumns } from 'services/tableColumns';\nimport AddTagRange from 'components/addTagRange/addTagRange';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport Table from 'components/table/table';\n\nconst ModalTagNumberRange = ({\n addRange,\n clearAll,\n modalAnimals,\n removeAllInvalid,\n removeAnimal,\n setModal,\n setModalAnimals,\n species\n}) => {\n const [paginationParams, setPaginationParams] = useState(constants.pagination.defaultParams);\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n [constants.pagination.bottom]: {\n ...prevState[constants.pagination.bottom],\n total: modalAnimals?.length\n }\n }));\n }, [modalAnimals]);\n\n return (\n
    \n
    \n \n
    \n\n {modalAnimals?.some((tag) => helpers.tag.isInvalid(tag)) &&\n \n }\n\n {modalAnimals?.length > 0 &&\n
    \n
    \n \n
    \n
    \n }\n
    \n );\n};\n\nModalTagNumberRange.propTypes = {\n addRange: PropTypes.func.isRequired,\n clearAll: PropTypes.func.isRequired,\n modalAnimals: PropTypes.array.isRequired,\n removeAllInvalid: PropTypes.func.isRequired,\n removeAnimal: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setModalAnimals: PropTypes.func.isRequired,\n species: PropTypes.exact({\n id: PropTypes.number,\n name: PropTypes.string,\n notifications: PropTypes.number,\n errorFound: PropTypes.number\n }).isRequired\n};\n\nexport default ModalTagNumberRange;\n","import React, { useEffect, useState } from 'react';\nimport classes from 'components/modalManualTagNumbers/modalManualTagNumbers.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport { tableColumns } from 'services/tableColumns';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport ManualTagEntry from 'components/manualTagEntry/manualTagEntry';\nimport Table from 'components/table/table';\n\nconst ModalManualTagNumbers = ({\n addAnimals,\n animalsToChange,\n clearAll,\n modalAnimals,\n pending,\n removeAllInvalid,\n removeAnimal,\n setModal,\n setModalAnimals,\n setPending,\n species\n}) => {\n const [paginationParams, setPaginationParams] = useState(constants.pagination.defaultParams);\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n [constants.pagination.bottom]: {\n ...prevState[constants.pagination.bottom],\n total: modalAnimals?.length\n }\n }));\n }, [modalAnimals]);\n\n return (\n
    \n
    \n \n
    \n\n {modalAnimals && helpers.tag.hasNonEidTagsSheep(species.id, modalAnimals) &&\n \n }\n\n {modalAnimals?.some((tag) => helpers.tag.isInvalid(tag)) &&\n \n }\n\n {modalAnimals?.length > 0 &&\n
    \n
    \n \n
    \n
    \n }\n
    \n );\n};\n\nModalManualTagNumbers.propTypes = {\n addAnimals: PropTypes.func.isRequired,\n animalsToChange: PropTypes.array.isRequired,\n clearAll: PropTypes.func.isRequired,\n modalAnimals: PropTypes.array.isRequired,\n pending: PropTypes.bool.isRequired,\n removeAllInvalid: PropTypes.func.isRequired,\n removeAnimal: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setModalAnimals: PropTypes.func.isRequired,\n setPending: PropTypes.func.isRequired,\n species: PropTypes.exact({\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n notifications: PropTypes.number,\n errorFound: PropTypes.number\n })\n};\n\nexport default ModalManualTagNumbers;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport bff, { isCancel } from 'services/bff';\nimport breedsHelper from 'services/breedsHelper';\nimport classes from 'frontEnd/movements/step2/movementStep2.module.scss';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport Button from 'components/base/button/button';\nimport Modal from 'components/base/modal/modal';\nimport ModalAddBatch from 'components/modalAddBatch/modalAddBatch';\nimport ModalAnimalsOnHolding from 'components/modalAnimalsOnHolding/modalAnimalsOnHolding';\nimport ModalConfirm from 'components/base/modalConfirm/modalConfirm';\nimport ModalFileUpload from 'components/modalFileUpload/modalFileUpload';\nimport ModalTagNumberRange from 'components/modalTagNumberRange/modalTagNumberRange';\nimport ModalManualTagNumbers from 'components/modalManualTagNumbers/modalManualTagNumbers';\n// import RecordAnimalDetails from 'frontEnd/movements/step2/recordAnimalDetails/recordAnimalDetails';\nimport RecordAnimalTagAllocation from 'frontEnd/movements/step2/recordAnimalTagAllocation/recordAnimalTagAllocation';\nimport Table from 'components/table/table';\nimport { cloneDeep, isEqual } from 'lodash';\nimport axios from 'axios';\nconst sprintf = require('util').format;\n\nconst MovementStep2 = ({\n fromSummary,\n isAmend,\n movementData,\n setAnimalDetails,\n setDataChanged,\n setModal,\n species\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const cph = storeService.session.get.holding().value;\n\n const [addByBatchOrIndividual, setAddByBatchOrIndividual] = React.useState(null);\n const [modalVisible, setModalVisible] = React.useState(false);\n const [selectionMethod, setSelectionMethod] = React.useState(null);\n const [batchList, setBatchList] = React.useState([]);\n const [animalsToChange, setAnimalsToChange] = React.useState([]);\n\n const [modalAnimals, setModalAnimals] = React.useState([]);\n const [pending, setPending] = React.useState(false);\n const [breedId, setBreedId] = React.useState();\n // const [recordAnimalDetails, setRecordAnimalDetails] = React.useState(false);\n const [recordAnimalTagAllocationDetails, setRecordAnimalTagAllocationDetails] = React.useState(false);\n const [yearOfBirth, setYearOfBirth] = React.useState();\n // const [gender, setGender] = React.useState(null);\n const [applicationDate, setApplicationDate] = React.useState();\n const [dateError, setDateError] = React.useState(false);\n const [modalHasChanges, setModalHasChanges] = React.useState(false);\n const [confirmCloseModal, setConfirmCloseModal] = React.useState(false);\n const [modalAnimalsInitial, setModalAnimalsInitial] = React.useState([]);\n const [paginationParams, setPaginationParams] = React.useState({\n batch: {\n ...constants.pagination.defaultParams,\n [constants.pagination.bottom]: {\n ...constants.pagination.defaultParams[constants.pagination.bottom],\n totalLabel: 'label.totalBatches'\n }\n },\n individual: constants.pagination.defaultParams\n });\n\n const iconBatch = 'bi bi-tags';\n const iconIndividual = 'bi bi-tag';\n const iconHolding = 'bi bi-house-door';\n const iconFile = 'bi bi-file-earmark';\n const iconTagRange = 'bi bi-arrows-expand';\n const iconManualEntry = 'bi bi-list-check';\n\n const modal = {\n addAll: (tableParams, setLoadPending, cancelTokenSource, setCancelTokenSource) => {\n setLoadPending(true);\n\n bff\n .get(tableParams.request.url, {\n cancelToken: cancelTokenSource.token,\n params: {\n ...tableParams.request.params,\n ...tableParams.filters,\n pageSize: 'all'\n }\n })\n .then((res) => {\n setCancelTokenSource(axios.CancelToken.source());\n setModalAnimals((prevState) => [\n ...prevState,\n ...res.data.data\n .filter((animal1) => !prevState.some((animal2) => animal2.tagNumber === animal1.tagNumber))\n .map((animal) => ({\n ...animal,\n added: true\n }))\n ]);\n setModalHasChanges(true);\n setLoadPending(false);\n })\n .catch((error) => {\n if (!isCancel(error)) {\n setCancelTokenSource(axios.CancelToken.source());\n errors.BFF(error, setModal);\n setLoadPending(false);\n }\n });\n },\n\n clearAll: () => {\n setModalAnimals([]);\n setModalHasChanges(false);\n },\n\n closeAndReset: () => {\n const modalAnimalsCopy = modalAnimals.map((item) => ({\n ...item,\n added: false\n }));\n setModalAnimals(modalAnimalsCopy);\n\n setModalVisible(false);\n setModalHasChanges(false);\n setSelectionMethod(null);\n setAddByBatchOrIndividual(null);\n storeService.session.removeAll.searchResults();\n storeService.session.removeAll.tableFilters();\n },\n\n getContent: () => {\n switch (selectionMethod) {\n case constants.option.selectionMethod.batch:\n return (\n \n );\n\n case constants.option.selectionMethod.holding:\n return (\n \n );\n\n case constants.option.selectionMethod.uploadFile:\n return (\n !animalsToChange.some((item2) => item1.tagNumber === item2.tagNumber))}\n pending={pending}\n removeAllInvalid={modal.removeAllInvalid}\n removeAnimal={modal.removeAnimal}\n setModal={setModal}\n setModalAnimals={setModalAnimals}\n setPending={setPending}\n species={species}\n upload={handleChanges.upload}\n />\n );\n\n case constants.option.selectionMethod.tagNumberRange:\n return (\n !animalsToChange.some((item2) => item1.tagNumber === item2.tagNumber))}\n removeAllInvalid={modal.removeAllInvalid}\n removeAnimal={modal.removeAnimal}\n setModal={setModal}\n setModalAnimals={setModalAnimals}\n species={species}\n />\n );\n\n case constants.option.selectionMethod.manualTagNumbers:\n return (\n \n );\n\n default:\n return null;\n }\n },\n\n getFooterContent: () => {\n const summaryTotal = modalAnimals.filter((item) => item.added).length;\n\n let batchesString;\n let animalsString;\n let batchesTotal;\n let summaryText;\n\n switch (selectionMethod) {\n case constants.option.selectionMethod.batch:\n batchesString = summaryTotal === 1 ? t('label.batchSelected') : t('label.batchesSelected');\n\n batchesTotal = modalAnimals.filter((item) => item.added).reduce((sum, item) => sum + parseInt(item.animalTotal), 0);\n if (batchesTotal > 0) {\n animalsString = t(batchesTotal === 1 ? 'label.animal' : 'label.animals');\n batchesString += ' (' + batchesTotal + ' ' + animalsString + ')';\n }\n\n summaryText = batchesString;\n\n return (\n
    \n );\n\n case constants.option.selectionMethod.holding:\n case constants.option.selectionMethod.uploadFile:\n case constants.option.selectionMethod.manualTagNumbers:\n case constants.option.selectionMethod.tagNumberRange:\n // summaryText = modalAnimals.filter((item) => item.available && item.added).length === 1 ? t('label.animalSelected') : t('label.animalsSelected');\n summaryText = summaryTotal === 1 ? t('label.animalSelected') : t('label.animalsSelected');\n\n return (\n
    \n );\n\n default:\n return '';\n }\n },\n\n getHeaderContent: () => {\n switch (selectionMethod) {\n case constants.option.selectionMethod.batch:\n return (\n <>\n \n {t('label.addBatch')}\n \n );\n\n case constants.option.selectionMethod.holding:\n return (\n <>\n \n {sprintf(t('label.animalsOnHoldingCPH'), cph)}\n \n );\n\n case constants.option.selectionMethod.uploadFile:\n return (\n <>\n \n {t('label.uploadAFile')}\n \n );\n\n case constants.option.selectionMethod.tagNumberRange:\n return (\n <>\n \n {t('label.addATagNumberRange')}\n \n );\n\n case constants.option.selectionMethod.manualTagNumbers:\n return (\n <>\n \n {t('label.enterTagNumbersManually')}\n \n );\n\n default:\n return null;\n }\n },\n\n getModalId: () => {\n switch (selectionMethod) {\n case constants.option.selectionMethod.batch:\n return 'modalAddAnimalsBatches';\n\n case constants.option.selectionMethod.holding:\n return 'modalAddAnimalsOnHolding';\n\n case constants.option.selectionMethod.uploadFile:\n return 'modalAddAnimalsUploadFile';\n\n case constants.option.selectionMethod.tagNumberRange:\n return 'modalAddAnimalsTagNumberRange';\n\n case constants.option.selectionMethod.manualTagNumbers:\n return 'modalAddAnimalsManualTagNumbers';\n\n default:\n return null;\n }\n },\n\n hide: (confirmClose) => {\n if (modalHasChanges && !confirmClose) {\n setConfirmCloseModal(true);\n } else if (confirmClose) {\n setConfirmCloseModal(false);\n modal.closeAndReset();\n } else {\n modal.closeAndReset();\n }\n },\n\n removeAllInvalid: () => {\n setModalAnimals(helpers.animal.removeAllInvalid(modalAnimals));\n },\n\n removeAnimal: (animal) => {\n setModalAnimals((prevState) => {\n const newModalAnimals = helpers.tag.remove([...prevState], animal);\n\n if (newModalAnimals.length === 0) {\n setModalHasChanges(false);\n }\n\n return newModalAnimals;\n });\n\n setTimeout(() => {\n document.activeElement.blur();\n }, 1);\n },\n\n removeBatch: (batch) => {\n setModalAnimals((prevState) => {\n const newModalAnimals = helpers.batch.remove([...prevState], batch);\n\n if (newModalAnimals.length === 0) {\n setModalHasChanges(false);\n }\n\n return newModalAnimals;\n });\n\n setTimeout(() => {\n document.activeElement.blur();\n }, 1);\n },\n\n saveDisabled: () => {\n if (helpers.option.selectionMethod.isHolding(selectionMethod)) {\n return pending || !modalHasChanges || modalAnimals.some((item) => helpers.tag.isInvalid(item) && item.added);\n }\n\n return pending || !modalAnimals.some((item) => item.added) || modalAnimals.some((item) => helpers.tag.isInvalid(item) && item.added);\n },\n\n show: (which) => {\n if (!helpers.option.selectionMethod.isHolding(selectionMethod)) {\n setModalAnimals([]);\n }\n setSelectionMethod(which);\n setModalVisible(true);\n },\n\n // toggleAnimal: (animal, id) => {\n // const modalAnimalsCopy = cloneDeep(modalAnimals);\n //\n // const animalToToggle = modalAnimalsCopy.find((item) => item.tagNumber === animal.tagNumber);\n //\n // if (animalToToggle && helpers.tag.isInvalid(animalToToggle)) {\n // const indexToRemove = modalAnimalsCopy.findIndex((item) => item.tagNumber === animal.tagNumber);\n // modalAnimalsCopy.splice(indexToRemove, 1);\n // } else {\n // animalToToggle.added = !animalToToggle.added;\n // }\n //\n // setModalAnimals(modalAnimalsCopy);\n //\n // if (modalAnimalsCopy.some((item) => item.added)) {\n // setModalHasChanges(true);\n // } else {\n // setModalHasChanges(false);\n // }\n //\n // setTimeout(() => {\n // const elementToFocus = document.getElementById(id);\n //\n // if (elementToFocus) {\n // elementToFocus.focus();\n // } else {\n // document.activeElement.blur();\n // }\n // }, 1);\n // },\n\n toggleAnimalOnHolding: (animal, added) => {\n animal.added = added !== undefined ? added : !animal.added;\n\n if (animal.added) {\n if (!modalAnimals.find((item) => item.tagNumber === animal.tagNumber)) {\n setModalAnimals((prevState) => [\n ...prevState,\n animal\n ]);\n }\n } else {\n setModalAnimals((prevState) => prevState.filter((item) => item.tagNumber !== animal.tagNumber));\n }\n },\n\n toggleAllAnimalsOnHolding: (rows, added) => {\n rows.forEach((animal) => {\n modal.toggleAnimalOnHolding(animal, added);\n });\n }\n };\n\n const handleChanges = {\n addAnimals: (tags) => {\n const uniqueNewTags = tags.filter((tag) => !modalAnimals.find((tagItem) => helpers.tag.trim(tagItem.tagNumber) === helpers.tag.trim(tag.tagNumber)));\n const newModalAnimals = [\n ...modalAnimals,\n ...uniqueNewTags.map((item) => ({\n rfid: helpers.tag.convertToRfid(item.tagNumber),\n tagNumber: helpers.tag.trim(item.tagNumber),\n added: true,\n valid: item.valid\n }))\n ];\n setModalHasChanges(true);\n setModalAnimals(newModalAnimals);\n },\n\n addRange: (tags) => {\n let uniqueNewTags;\n uniqueNewTags = tags.filter((tag) => !animalsToChange.find((tagItem) => helpers.tag.trim(tagItem.tagNumber) === helpers.tag.trim(tag.tagNumber)));\n uniqueNewTags = uniqueNewTags.filter((tag) => !modalAnimals.find((tagItem) => helpers.tag.trim(tagItem.tagNumber) === helpers.tag.trim(tag.tagNumber)));\n const newModalAnimals = [...modalAnimals, ...uniqueNewTags].map((item) => ({\n ...item,\n tagNumber: helpers.tag.trim(item.tagNumber),\n added: true\n }));\n setModalHasChanges(true);\n setModalAnimals(newModalAnimals);\n },\n\n addAnimalsByBatchOrIndividual: (method) => {\n setAddByBatchOrIndividual(method);\n },\n\n batchList: (batchList) => {\n const batchListCopy = batchList.reduce((reducedBatchList, item) => {\n const foundItem = reducedBatchList.find((elem) => helpers.tag.trim(elem.batchNumber) === helpers.tag.trim(item.batchNumber));\n\n if (foundItem && foundItem.added) {\n foundItem.animalTotal += item.animalTotal;\n } else if (foundItem && !foundItem.added) {\n foundItem.animalTotal = item.animalTotal;\n foundItem.added = true;\n } else {\n const existingItem = modalAnimals.find((elem) => helpers.tag.trim(elem.batchNumber) === helpers.tag.trim(item.batchNumber));\n\n reducedBatchList.push({\n ...item,\n batchNumber: helpers.tag.trim(item.batchNumber),\n added: existingItem ? existingItem.added : true\n });\n }\n\n return reducedBatchList;\n }, []);\n\n setModalHasChanges(true);\n setModalAnimals(batchListCopy);\n },\n\n breedId: (breedId) => {\n setBreedId(breedId);\n\n storeService.session.set.movementBreed({\n id: breedId,\n name: breedsHelper.getBreedName(breedId)\n });\n },\n\n // gender: (gender) => {\n // setGender(gender);\n // storeService.session.set.movementGender(gender);\n // },\n\n // recordAnimalDetails: (recordAnimalDetails) => {\n // setRecordAnimalDetails(recordAnimalDetails);\n // storeService.session.set.movementRecordAnimalDetails(recordAnimalDetails);\n\n // if (!recordAnimalDetails) {\n // clearTaggingAndAnimalAllocationDetails();\n // }\n // },\n\n recordTagAllocationDetails: (recordTagAllocationDetails) => {\n setRecordAnimalTagAllocationDetails(recordTagAllocationDetails);\n storeService.session.set.movementRecordTagAllocationDetails(recordTagAllocationDetails);\n\n if (!recordTagAllocationDetails) {\n clearTaggingAndAnimalAllocationDetails();\n }\n },\n\n removeAnimal: (animal) => {\n setAnimalsToChange((prevState) => {\n const newAnimalsToChange = helpers.tag.remove([...prevState], animal);\n\n if (newAnimalsToChange.length === 0) {\n setRecordAnimalTagAllocationDetails(null);\n // setRecordAnimalDetails(null);\n setApplicationDate(null);\n setYearOfBirth(null);\n setBreedId(null);\n // setGender(null);\n storeService.session.set.movementAnimalsBeingMoved([]);\n storeService.session.remove.movementRecordAnimalDetails();\n storeService.session.remove.movementRecordTagAllocationDetails();\n storeService.session.remove.movementTagApplicationDate();\n storeService.session.remove.movementYearOfBirth();\n storeService.session.remove.movementBreed();\n storeService.session.remove.movementGender();\n } else {\n storeService.session.set.movementAnimalsBeingMoved(newAnimalsToChange);\n }\n\n handleChanges.ResetfciData(newAnimalsToChange);\n return newAnimalsToChange;\n });\n\n setTimeout(() => {\n document.activeElement.blur();\n }, 1);\n },\n\n removeAnimalsAll: () => {\n setAnimalsToChange([]);\n storeService.session.set.movementAnimalsBeingMoved([]);\n storeService.session.remove.movementRecordTagAllocationDetails();\n storeService.session.remove.movementTagApplicationDate();\n storeService.session.remove.movementYearOfBirth();\n storeService.session.remove.movementBreed();\n storeService.session.remove.movementGender();\n\n setRecordAnimalTagAllocationDetails(null);\n handleChanges.ResetfciData();\n // setRecordAnimalDetails(null);\n },\n\n ResetfciData: (newAnimalsToChange) => {\n const movementFci = storeService.session.get.movementFci();\n\n newAnimalsToChange = newAnimalsToChange !== undefined ? newAnimalsToChange : storeService.session.get.movementAnimalsBeingMoved();\n\n if (newAnimalsToChange?.filter((item) => item.unfit).length === 0 && movementFci?.animalsSatisfy && movementFci?.animalsSatisfy !== 'satisfy') {\n storeService.session.set.movementFciAnimalsSatisfy('satisfy');\n\n if (helpers.option.animals.doSatisfy('satisfy')) {\n storeService.session.remove.movementFciNonComplianceReason();\n storeService.session.remove.movementFciHoldingRestrictions();\n storeService.session.remove.movementFciWithdrawalPeriod();\n }\n }\n },\n removeBatch: (batch) => {\n setBatchList((prevState) => {\n const newBatchList = helpers.batch.remove([...prevState], batch);\n\n if (newBatchList.length === 0) {\n storeService.session.remove.movementBatchList();\n } else {\n storeService.session.set.movementBatchList(newBatchList);\n }\n\n return newBatchList;\n });\n\n setTimeout(() => {\n document.activeElement.blur();\n }, 1);\n },\n\n removeBatchesAll: () => {\n setBatchList([]);\n storeService.session.set.movementBatchList([]);\n },\n\n saveChanges: () => {\n if (addByBatchOrIndividual === 'batch') {\n const selectedBatches = modalAnimals.filter((item) => item.added);\n const newBatchList = cloneDeep(batchList);\n\n selectedBatches.forEach((batch1) => {\n const existingBatch = newBatchList.find((batch2) => helpers.tag.trim(batch2.batchNumber) === helpers.tag.trim(batch1.batchNumber));\n if (existingBatch) {\n existingBatch.animalTotal += batch1.animalTotal;\n } else {\n newBatchList.push({\n ...batch1,\n batchNumber: helpers.tag.trim(batch1.batchNumber)\n });\n }\n });\n\n setBatchList(newBatchList);\n storeService.session.set.movementBatchList(newBatchList);\n } else if (helpers.option.selectionMethod.isIndividual(addByBatchOrIndividual)) {\n if (helpers.option.selectionMethod.isHolding(selectionMethod)) {\n const removedAnimals = modalAnimalsInitial\n .filter((item1) => !modalAnimals.find((item2) => item2.tagNumber === item1.tagNumber));\n\n const addedAnimals = modalAnimals\n .filter((item1) => !modalAnimalsInitial.find((item2) => item2.tagNumber === item1.tagNumber))\n .filter((item1) => !animalsToChange.find((item2) => item2.tagNumber === item1.tagNumber));\n\n const newAnimalsToChange = [\n ...animalsToChange.filter((item1) => !removedAnimals.find((item2) => item2.tagNumber === item1.tagNumber)),\n ...addedAnimals.map((item) => ({\n ...item,\n onHolding: true\n }))\n ];\n\n setAnimalsToChange(newAnimalsToChange);\n storeService.session.set.movementAnimalsBeingMoved(newAnimalsToChange);\n } else {\n // let selectedAnimals;\n // if (helpers.option.selectionMethod.isTagNumberRange(selectionMethod)) {\n // selectedAnimals = modalAnimals.filter((item) => item.available && item.added);\n // } else {\n // selectedAnimals = modalAnimals.filter((item) => item.added);\n // }\n const selectedAnimals = modalAnimals.filter((item) => item.added);\n const newAnimalsToChange = cloneDeep(animalsToChange);\n\n selectedAnimals.forEach((animal1) => {\n const existingAnimal = newAnimalsToChange.find((animal2) => helpers.tag.trim(animal2.tagNumber) === helpers.tag.trim(animal1.tagNumber));\n if (!existingAnimal) {\n newAnimalsToChange.push({\n ...animal1,\n tagNumber: helpers.tag.trim(animal1.tagNumber)\n });\n }\n });\n\n setAnimalsToChange(newAnimalsToChange);\n storeService.session.set.movementAnimalsBeingMoved(newAnimalsToChange);\n }\n }\n\n modal.closeAndReset();\n },\n\n tagApplicationDate: (date) => {\n setApplicationDate(date);\n },\n\n yearOfBirth: (year) => {\n setYearOfBirth(year);\n storeService.session.set.movementYearOfBirth(year);\n },\n\n upload: (uploadedTags) => {\n setModalHasChanges(true);\n\n setModalAnimals([\n ...modalAnimals,\n ...uploadedTags\n .filter((el) => animalsToChange && !animalsToChange.some((animal) => animal.tagNumber === el))\n .filter((el) => !modalAnimals.some((animal) => animal.tagNumber === el.tagNumber))\n .map((animal) => ({\n ...animal,\n added: true\n }))\n ]);\n }\n };\n\n // const tagAllocationEnabled = () => helpers.option.movement.isOff(movementData.movementType) &&\n // !helpers.species.isCattleId(species.id) &&\n // !helpers.species.isDeerId(species.id) &&\n // animalsToChange.length > 0 ;\n\n const tagAllocationEnabled = () => false;\n\n const userCannotContinue = () => {\n if ((!batchList || batchList.length === 0) && (!animalsToChange || animalsToChange.length === 0)) {\n return true;\n }\n\n if (\n (\n recordAnimalTagAllocationDetails &&\n moment(applicationDate).isAfter(movementData.departureDate)\n ) ||\n yearOfBirth > moment(applicationDate, 'DD/MM/YYYY').year() ||\n dateError\n ) {\n return true;\n }\n\n // return (\n // recordAnimalDetails &&\n // yearOfBirth > moment(applicationDate, 'DD/MM/YYYY').year()\n // ) ||\n // dateError;\n };\n\n const submitValues = () => {\n setAnimalDetails(storeService.session.get.movementSelectedAnimalDetails());\n };\n\n const nextPage = () => {\n submitValues();\n setDataChanged();\n\n history.push(fromSummary ? Routing.movementsSummary : Routing.movementsStep3);\n helpers.scrollToTop();\n };\n\n const clearTaggingAndAnimalAllocationDetails = () => {\n setApplicationDate(null);\n setYearOfBirth(null);\n setBreedId(null);\n // setGender(null);\n storeService.session.remove.movementRecordAnimalDetails();\n storeService.session.remove.movementRecordTagAllocationDetails();\n storeService.session.remove.movementTagApplicationDate();\n storeService.session.remove.movementYearOfBirth();\n storeService.session.remove.movementBreed();\n storeService.session.remove.movementGender();\n };\n\n useEffect(() => {\n const sessionBatchList = storeService.session.get.movementBatchList();\n const sessionRecordAnimalDetails = storeService.session.get.movementRecordAnimalDetails();\n const sessionRecordTagAllocationDetails = storeService.session.get.movementRecordTagAllocationDetails();\n const selectedAnimalSessionData = storeService.session.get.movementAnimalsBeingMoved();\n\n if (selectedAnimalSessionData) {\n setAnimalsToChange(selectedAnimalSessionData);\n }\n\n if (sessionBatchList) {\n setBatchList(sessionBatchList);\n }\n\n // if (sessionRecordAnimalDetails) {\n // setRecordAnimalDetails(true);\n // }\n\n if (sessionRecordTagAllocationDetails) {\n setRecordAnimalTagAllocationDetails(true);\n }\n\n if (sessionRecordAnimalDetails || sessionRecordTagAllocationDetails) {\n const sessionTagApplicationDate = storeService.session.get.movementTagApplicationDate();\n const sessionYearOfBirth = storeService.session.get.movementYearOfBirth();\n const sessionBreed = storeService.session.get.movementBreed();\n // const sessionGender = storeService.session.get.movementGender();\n\n setApplicationDate(sessionTagApplicationDate);\n setYearOfBirth(sessionYearOfBirth);\n setBreedId(sessionBreed && sessionBreed.id ? sessionBreed.id : null);\n // setGender(sessionGender);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setModalHasChanges(!isEqual(\n modalAnimals.map((item) => item.tagNumber).sort(),\n modalAnimalsInitial.map((item) => item.tagNumber).sort()\n ));\n }, [modalAnimals, modalAnimalsInitial]);\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n batch: {\n ...prevState.batch,\n [constants.pagination.bottom]: {\n ...prevState.batch[constants.pagination.bottom],\n total: batchList?.length\n }\n }\n }));\n }, [batchList]);\n\n useEffect(() => {\n setPaginationParams((prevState) => ({\n ...prevState,\n individual: {\n ...prevState.individual,\n [constants.pagination.bottom]: {\n ...prevState.individual[constants.pagination.bottom],\n total: animalsToChange?.length\n }\n }\n }));\n }, [animalsToChange]);\n\n return (\n <>\n {ready &&\n <>\n {modalVisible &&\n <>\n modal.hide(false)}\n submitChanges={handleChanges.saveChanges}\n submitDisabled={modal.saveDisabled()}\n >\n {modal.getContent()}\n \n\n {confirmCloseModal &&\n setConfirmCloseModal(false)}\n modalConfirm={() => modal.hide(true)}\n modalMessage=\"warning.unsavedChanges2\"\n modalTitle=\"warning.youHaveUnsavedChanges\"\n />\n }\n \n }\n\n

    {t('label.addAnimals')}

    \n\n \n\n {(batchList.length > 0 || animalsToChange.length > 0) &&\n
    \n
    \n {t('label.totalAnimals')}: {batchList.reduce((sum, item) => {\n sum += parseInt(item.animalTotal);\n return sum;\n }, 0) + animalsToChange.length}\n
    \n\n {batchList.length > 0 &&\n
    \n \n

    {sprintf(\n t('label.batchAnimalsInMovement'),\n batchList.reduce((total, batch) => total + parseInt(batch.animalTotal), 0))\n }

    \n
    \n
    \n \n
    \n
    \n }\n\n {animalsToChange.length > 0 &&\n
    \n \n

    {sprintf(\n t('label.individualAnimalsInMovement'),\n animalsToChange.length)\n }

    \n
    \n
    \n \n
    \n
    \n }\n
    \n }\n\n {(batchList.length === 0 && animalsToChange.length === 0) &&\n

    {t('label.howDoYouWantToAddAnimals')}

    \n }\n {(batchList.length > 0 || animalsToChange.length > 0) &&\n

    {t('label.addMoreAnimals')}

    \n }\n\n
    \n {!helpers.species.isCattleId(species.id) &&\n {\n handleChanges.addAnimalsByBatchOrIndividual('batch');\n modal.show(constants.option.selectionMethod.batch);\n }}\n />\n }\n handleChanges.addAnimalsByBatchOrIndividual(constants.option.selectionMethod.individual)}\n />\n
    \n\n {helpers.option.selectionMethod.isIndividual(addByBatchOrIndividual) &&\n <>\n
    \n

    {t('label.howDoYouWantToEnterIndividualAnimals')}

    \n {!helpers.option.movement.isOn(movementData.movementType) &&\n modal.show(constants.option.selectionMethod.holding)}\n />\n }\n modal.show(constants.option.selectionMethod.uploadFile)}\n />\n {!helpers.species.isCattleId(species.id) &&\n modal.show(constants.option.selectionMethod.tagNumberRange)}\n />\n }\n modal.show(constants.option.selectionMethod.manualTagNumbers)}\n />\n
    \n \n }\n\n {/*{helpers.option.movement.isOn(movementData.movementType) &&*/}\n {/* !helpers.species.isCattleId(species.id) &&*/}\n {/* !helpers.species.isDeerId(species.id) &&*/}\n {/* animalsToChange.length > 0 &&*/}\n {/* */}\n {/*}*/}\n\n {tagAllocationEnabled() &&\n \n }\n\n
    \n \n \n }\n \n );\n};\n\nMovementStep2.propTypes = {\n fromSummary: PropTypes.bool,\n isAmend: PropTypes.bool,\n movementData: PropTypes.object,\n setAnimalDetails: PropTypes.func,\n setDataChanged: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n species: PropTypes.object\n};\n\nexport default MovementStep2;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport FieldLabel from 'components/base/fieldLabel/fieldLabel';\nimport Hint from 'components/base/hint/hint';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/base/dropdown/dropdown.module.scss';\n\nconst Dropdown = ({\n error,\n hint,\n id,\n label,\n name,\n onChange,\n optional,\n optionList,\n value\n}) => {\n const { ready, t } = useTranslation();\n\n const options = [...optionList];\n\n if (value === null) {\n options.unshift({\n label: t('prompt.pleaseSelect'),\n value: null\n });\n }\n\n const selectOption = (event) => {\n options.shift();\n onChange(event);\n };\n\n return (\n <>\n {ready &&\n <>\n \n \n \n selectOption(event)}\n placeholder=\"prompt.pleaseSelect\"\n >\n {options.map((option, index) => (\n \n {option.label}\n \n ))}\n \n \n }\n \n );\n};\n\nDropdown.propTypes = {\n error: PropTypes.string,\n hint: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.string.isRequired,\n name: PropTypes.string,\n onChange: PropTypes.func,\n optionList: PropTypes.arrayOf(\n PropTypes.exact({\n label: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.string\n })\n ),\n optional: PropTypes.bool,\n value: PropTypes.any\n};\n\nexport default Dropdown;\n","import React from 'react';\nimport DatePicker from 'react-datepicker';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport classes from 'frontEnd/movements/step3/durationInputFields/durationInputFields.module.scss';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport FieldLabel from 'components/base/fieldLabel/fieldLabel';\nimport NumberEntry from 'components/base/numberEntry/numberEntry';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\n\nconst DurationInput = ({\n hoursError,\n id,\n isTimePicker,\n label,\n maxTime,\n minTime,\n minutesError,\n setHoursError,\n setMinutesError,\n setTime,\n time\n}) => {\n const handleChanges = {\n timePicker: (input) => {\n setTime({\n hours: input ? moment(input).hours() : null,\n minutes: input ? moment(input).minutes() : null\n });\n },\n\n days: (input, prevState) => {\n setTime({ ...prevState, days: parseInt(input) });\n },\n\n hours: (input, prevState) => {\n if (!isNaN(input) && input <= 23) {\n setTime({ ...prevState, hours: parseInt(input) });\n setHoursError(false);\n } else {\n setHoursError(true);\n }\n },\n\n minutes: (input, prevState) => {\n if (!isNaN(input) && input <= 59) {\n setTime({ ...prevState, minutes: parseInt(input) });\n setMinutesError(false);\n } else {\n setMinutesError(true);\n }\n }\n };\n\n return (\n <>\n {(hoursError || minutesError) &&\n \n }\n\n {isTimePicker &&\n <>\n \n
    \n \n
    \n \n }\n\n {!isTimePicker &&\n <>\n {/**/}\n
    \n
    \n handleChanges.days(event.target.value, time)}\n onChange={(event) => setTime({ ...time, days: event.target.value })}\n value={time ? time.days : ''}\n />\n
    \n
    \n handleChanges.hours(event.target.value, time)}\n onChange={(event) => setTime({ ...time, hours: event.target.value })}\n value={time ? time.hours : ''}\n />\n
    \n
    \n handleChanges.minutes(event.target.value, time)}\n onChange={(event) => setTime({ ...time, minutes: event.target.value })}\n value={time ? time.minutes : ''}\n />\n
    \n
    \n \n }\n \n );\n};\n\nDurationInput.propTypes = {\n hoursError: PropTypes.bool,\n id: PropTypes.string,\n isTimePicker: PropTypes.bool,\n label: PropTypes.string,\n maxTime: PropTypes.object,\n minTime: PropTypes.object,\n minutesError: PropTypes.bool,\n setHoursError: PropTypes.func,\n setMinutesError: PropTypes.func,\n setTime: PropTypes.func,\n time: PropTypes.object\n};\n\nexport default DurationInput;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport axios from 'axios';\nimport classes from 'frontEnd/movements/step3/transportDetailsForm/transportDetailsForm.module.scss';\nimport config from 'config';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport moment from 'moment';\nimport storeService from 'services/storeService';\nimport Address from 'components/address/address';\nimport Dropdown from 'components/base/dropdown/dropdown';\nimport DurationInput from 'frontEnd/movements/step3/durationInputFields/durationInputFields';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport Legend from 'components/base/legend/legend';\nimport TextEntry from 'components/base/textEntry/textEntry';\nimport { isEqual } from 'lodash';\n\nconst TransportDetailsForm = ({\n authorisationNumber,\n contactDetailsIndex,\n contactPhone,\n contactPhoneError,\n departureDate,\n departureTime,\n driverFirstName,\n driverFirstNameError,\n driverLastName,\n driverLastNameError,\n durationOfJourney,\n hoursError,\n minutesError,\n movementData,\n movementType,\n ownerFirstName,\n ownerFirstNameError,\n ownerLastName,\n ownerLastNameError,\n setAuthorisationNumber,\n setContactDetailsIndex,\n setContactPhone,\n setContactPhoneError,\n setDepartureTime,\n setDriverFirstName,\n setDriverFirstNameError,\n setDriverLastName,\n setDriverLastNameError,\n setDurationOfJourney,\n setHoursError,\n setMinutesError,\n setModal,\n setOwnerFirstName,\n setOwnerFirstNameError,\n setOwnerLastName,\n setOwnerLastNameError,\n setTransporter,\n setTransportError,\n setVehicleRegistrationNumber,\n transportedBy,\n transporter,\n transportError,\n vehicleRegistrationNumber,\n vehicleRegistrationNumberError\n}) => {\n const { ready, t } = useTranslation();\n\n const holding = storeService.session.get.holding();\n\n const [dropdownOptions, setDropdownOptions] = React.useState([]);\n\n let depTime;\n if (departureTime && Number.isInteger(departureTime.hours) && Number.isInteger(departureTime.minutes)) {\n depTime = new Date();\n depTime.setHours(departureTime.hours);\n depTime.setMinutes(departureTime.minutes);\n }\n\n const getContactLabel = (contact) => {\n const items = [];\n\n if ((contact.driverFirstName && contact.driverFirstName !== '') || (contact.driverLastName && contact.driverLastName !== '')) {\n contact = {\n ...contact,\n name: contact.driverFirstName + ' ' + contact.driverLastName\n };\n }\n if (contact.haulier && contact.haulier !== '') {\n items.push(contact.haulier.trim());\n }\n if (contact.name && contact.name !== '') {\n items.push(contact.name.trim());\n }\n if (contact.phone && contact.phone !== '') {\n items.push(contact.phone.trim());\n }\n if (contact.vehicle && contact.vehicle !== '') {\n items.push(contact.vehicle.trim());\n }\n return items.join(', ');\n };\n\n const createContactsDropdownOptions = (contactList) => {\n return contactList !== null\n ? contactList.map((contact, index) => ({ value: String(index), label: getContactLabel(contact) }))\n : [];\n };\n\n const validate = {\n name: (input, whoseName, firstOrLast) => {\n if (input.length > 0) {\n if (whoseName === 'driver') {\n if (firstOrLast === 'first') {\n if (validate.text(input)) {\n setDriverFirstNameError(false);\n } else {\n setDriverFirstNameError(true);\n }\n } else if (firstOrLast === 'last') {\n if (validate.text(input)) {\n setDriverLastNameError(false);\n } else {\n setDriverLastNameError(true);\n }\n }\n } else if (whoseName === 'owner') {\n if (firstOrLast === 'first') {\n if (validate.text(input)) {\n setOwnerFirstNameError(false);\n } else {\n setOwnerFirstNameError(true);\n }\n } else if (firstOrLast === 'last') {\n if (validate.text(input)) {\n setOwnerLastNameError(false);\n } else {\n setOwnerLastNameError(true);\n }\n }\n }\n }\n },\n\n phoneNumber: (input) => {\n // eslint-disable-next-line no-useless-escape\n // const regex = /^(?:(?:\\(?(?:00|\\+)([1-4]\\d\\d|[1-9]\\d?)\\)?)?[\\-.\\ \\\\\\/]?)?((?:\\(?\\d{1,}\\)?[\\-\\.\\ \\\\\\/]?){0,})(?:[\\-.\\ \\\\\\/]?(?:#|ext\\.?|extension|x)[\\-\\.\\ \\\\\\/]?(\\d+))?$/;\n const regex = /^[\\d\\s]*$/;\n if (regex.test(input)) {\n setContactPhoneError('');\n setContactPhone(input);\n return true;\n }\n setContactPhoneError(t('error.incorrectPhoneFormat'));\n return false;\n },\n\n text: (input) => {\n const minLength = 2;\n const maxLength = 32;\n\n return !(input.length < minLength || input.length > maxLength);\n },\n\n transporter: (input) => {\n setTransporter(input);\n\n if (validate.text(input)) {\n setTransportError(false);\n } else {\n setTransportError(true);\n }\n }\n };\n\n const onSelectContactDetails = (event) => {\n const selectedIndex = parseInt(event.target.value);\n let localStoreGetter;\n\n switch (transportedBy) {\n case constants.option.transporter.departureKeeper:\n localStoreGetter = !helpers.option.movement.isOn(movementType) ? 'recentlyUsedDepartureTransportDetail' : 'recentlyUsedDestinationTransportDetail';\n break;\n case constants.option.transporter.destinationKeeper:\n localStoreGetter = !helpers.option.movement.isOn(movementType) ? 'recentlyUsedDestinationTransportDetail' : 'recentlyUsedDepartureTransportDetail';\n break;\n case constants.option.transporter.haulier:\n localStoreGetter = 'recentlyUsedHaulierTransportDetail';\n break;\n default:\n break;\n }\n\n const storedContact = storeService.local.get[localStoreGetter]()[selectedIndex];\n\n if (storedContact) {\n if (selectedIndex !== undefined && selectedIndex !== null) {\n setContactDetailsIndex(selectedIndex);\n }\n if (storedContact.phone) {\n setContactPhone(storedContact.phone);\n }\n if (storedContact.driverFirstName) {\n setDriverFirstName(storedContact.driverFirstName);\n }\n if (storedContact.driverLastName) {\n setDriverLastName(storedContact.driverLastName);\n }\n if (storedContact.vehicle) {\n setVehicleRegistrationNumber(storedContact.vehicle);\n }\n if (storedContact.authNumber) {\n setAuthorisationNumber(storedContact.authNumber);\n }\n if (storedContact.ownerFirstName) {\n setOwnerFirstName(storedContact.ownerFirstName);\n }\n if (storedContact.ownerLastName) {\n setOwnerLastName(storedContact.ownerLastName);\n }\n\n if (helpers.option.transporter.isHaulier(transportedBy)) {\n setTransporter(storedContact.haulier);\n document.getElementById('haulierInput').value = storedContact.haulier;\n }\n } else {\n setContactDetailsIndex(null);\n }\n };\n\n const get = {\n maxTime: () => {\n const maxTime = new Date();\n\n if (\n (helpers.option.movement.isOff(movementType) && helpers.date.is.tomorrow(departureDate)) ||\n (!helpers.option.movement.isOff(movementType) && helpers.date.is.today(departureDate))\n ) {\n maxTime.setHours(moment().hours());\n maxTime.setMinutes(moment().minutes());\n } else {\n maxTime.setHours(23);\n maxTime.setMinutes(59);\n }\n\n return maxTime;\n },\n\n minTime: () => {\n const minTime = new Date();\n minTime.setHours(0);\n minTime.setMinutes(0);\n\n return minTime;\n },\n\n transporterHolding: () => {\n if (helpers.option.movement.isOn(movementType)) {\n if (helpers.option.transporter.isDepartureKeeper(transportedBy)) {\n return movementData.otherHolding.value;\n }\n\n return holding.value;\n }\n\n if (helpers.option.movement.isOff(movementType)) {\n if (helpers.option.transporter.isDepartureKeeper(transportedBy)) {\n return holding.value;\n }\n\n return movementData.otherHolding.value;\n }\n }\n };\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n let storedDropdownOptions;\n switch (transportedBy) {\n case constants.option.transporter.departureKeeper:\n storedDropdownOptions = !helpers.option.movement.isOn(movementType)\n ? createContactsDropdownOptions(storeService.local.get.recentlyUsedDepartureTransportDetail())\n : createContactsDropdownOptions(storeService.local.get.recentlyUsedDestinationTransportDetail());\n if (!isEqual(dropdownOptions, storedDropdownOptions)) {\n setDropdownOptions(storedDropdownOptions);\n }\n break;\n\n case constants.option.transporter.destinationKeeper:\n storedDropdownOptions = !helpers.option.movement.isOn(movementType)\n ? createContactsDropdownOptions(storeService.local.get.recentlyUsedDestinationTransportDetail())\n : createContactsDropdownOptions(storeService.local.get.recentlyUsedDepartureTransportDetail());\n if (!isEqual(dropdownOptions, storedDropdownOptions)) {\n setDropdownOptions(storedDropdownOptions);\n }\n break;\n\n case constants.option.transporter.haulier:\n storedDropdownOptions = createContactsDropdownOptions(storeService.local.get.recentlyUsedHaulierTransportDetail());\n if (!isEqual(dropdownOptions, storedDropdownOptions)) {\n setDropdownOptions(storedDropdownOptions);\n }\n break;\n\n default:\n break;\n }\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [transportedBy]);\n\n return (\n <>\n {ready &&\n <>\n
    \n
    \n \n {helpers.option.transporter.isHaulier(transportedBy) && dropdownOptions?.length > 0 &&\n
    \n onSelectContactDetails(event)}\n optional={true}\n optionList={dropdownOptions}\n value={contactDetailsIndex}\n />\n
    \n }\n\n {transportError &&\n \n }\n\n {!helpers.option.transporter.isHaulier(transportedBy) &&\n
    \n \n
    \n }\n\n {helpers.option.transporter.isHaulier(transportedBy) &&\n
    \n validate.transporter(event.target.value)}\n optional={helpers.option.transporter.isHaulier(transportedBy)}\n value={transporter}\n />\n
    \n }\n\n {!helpers.option.transporter.isHaulier(transportedBy) && dropdownOptions?.length > 0 &&\n
    \n onSelectContactDetails(event)}\n optional={true}\n optionList={dropdownOptions}\n value={contactDetailsIndex}\n />\n
    \n }\n\n {contactPhoneError &&\n \n }\n\n
    \n validate.phoneNumber(event.target.value)}\n onChange={(event) => setContactPhone(event.target.value)}\n optional={true}\n value={contactPhone}\n />\n
    \n\n
    \n

    {t('movements.transport-information.transport-details.driverName')}

    \n\n {(driverFirstNameError || driverLastNameError) &&\n \n }\n\n
    \n
    \n validate.name(event.target.value, 'driver', 'first')}\n onChange={(event) => setDriverFirstName(event.target.value)}\n optional={true}\n value={driverFirstName}\n />\n
    \n\n
    \n validate.name(event.target.value, 'driver', 'last')}\n onChange={(event) => setDriverLastName(event.target.value)}\n optional={true}\n value={driverLastName}\n />\n
    \n
    \n
    \n\n
    \n setVehicleRegistrationNumber(event.target.value)}\n optional={true}\n value={vehicleRegistrationNumber}\n />\n
    \n\n
    \n setAuthorisationNumber(event.target.value)}\n optional={true}\n value={authorisationNumber}\n width={config.WIDTH_TRANSPORTER_AUTH}\n />\n
    \n\n

    {t('movements.transport-information.transport-details.ownerName')}

    \n\n {(ownerFirstNameError || ownerLastNameError) &&\n \n }\n\n
    \n
    \n validate.name(event.target.value, 'owner', 'first')}\n onChange={(event) => setOwnerFirstName(event.target.value)}\n optional={true}\n value={ownerFirstName}\n />\n
    \n\n
    \n validate.name(event.target.value, 'owner', 'last')}\n onChange={(event) => setOwnerLastName(event.target.value)}\n optional={true}\n value={ownerLastName}\n />\n
    \n
    \n
    \n
    \n\n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n \n \n
    \n
    \n \n }\n \n );\n};\n\nTransportDetailsForm.propTypes = {\n authorisationNumber: PropTypes.string,\n contactDetailsIndex: PropTypes.number,\n contactPhone: PropTypes.string,\n contactPhoneError: PropTypes.string,\n departureDate: PropTypes.string,\n departureTime: PropTypes.object,\n driverFirstName: PropTypes.string,\n driverFirstNameError: PropTypes.bool,\n driverLastName: PropTypes.string,\n driverLastNameError: PropTypes.bool,\n durationOfJourney: PropTypes.object,\n hoursError: PropTypes.bool,\n minutesError: PropTypes.bool,\n movementData: PropTypes.object,\n movementType: PropTypes.string,\n ownerFirstName: PropTypes.string,\n ownerFirstNameError: PropTypes.bool,\n ownerLastName: PropTypes.string,\n ownerLastNameError: PropTypes.bool,\n setAuthorisationNumber: PropTypes.func,\n setContactDetailsIndex: PropTypes.func,\n setContactPhone: PropTypes.func,\n setContactPhoneError: PropTypes.func,\n setDepartureTime: PropTypes.func,\n setDriverFirstName: PropTypes.func,\n setDriverFirstNameError: PropTypes.func,\n setDriverLastName: PropTypes.func,\n setDriverLastNameError: PropTypes.func,\n setDurationOfJourney: PropTypes.func,\n setHoursError: PropTypes.func,\n setMinutesError: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n setOwnerFirstName: PropTypes.func,\n setOwnerFirstNameError: PropTypes.func,\n setOwnerLastName: PropTypes.func,\n setOwnerLastNameError: PropTypes.func,\n setTransportError: PropTypes.func,\n setTransporter: PropTypes.func,\n setVehicleRegistrationNumber: PropTypes.func,\n transportError: PropTypes.bool,\n transportedBy: PropTypes.string,\n transporter: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string\n ]),\n vehicleRegistrationNumber: PropTypes.string,\n vehicleRegistrationNumberError: PropTypes.string\n};\n\nexport default TransportDetailsForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport constants from 'services/constants';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport TransportDetailsForm from 'frontEnd/movements/step3/transportDetailsForm/transportDetailsForm';\n\nconst TransportDetails = ({\n authorisationNumber,\n authorisationNumberError,\n contactDetailsIndex,\n contactPhone,\n contactPhoneError,\n departureDate,\n departureTime,\n driverFirstName,\n driverFirstNameError,\n driverLastName,\n driverLastNameError,\n durationOfJourney,\n durationOfJourneyError,\n hoursError,\n minutesError,\n movementData,\n movementType,\n ownerFirstName,\n ownerFirstNameError,\n ownerLastName,\n ownerLastNameError,\n setAuthorisationNumber,\n setAuthorisationNumberError,\n setContactDetailsIndex,\n setContactPhone,\n setContactPhoneError,\n setDepartureTime,\n setDriverFirstName,\n setDriverFirstNameError,\n setDriverLastName,\n setDriverLastNameError,\n setDurationOfJourney,\n setDurationOfJourneyError,\n setHoursError,\n setMinutesError,\n setModal,\n setOwnerFirstName,\n setOwnerFirstNameError,\n setOwnerLastName,\n setOwnerLastNameError,\n setTransportedBy,\n setTransporter,\n setTransportError,\n setVehicleRegistrationNumber,\n transportedBy,\n transporter,\n transportError,\n vehicleRegistrationNumber,\n vehicleRegistrationNumberError\n}) => {\n return (\n <>\n
    \n setTransportedBy(event.target.value)}\n value={transportedBy}\n />\n
    \n {transportedBy &&\n \n }\n \n );\n};\n\nTransportDetails.propTypes = {\n authorisationNumber: PropTypes.string,\n authorisationNumberError: PropTypes.string,\n contactDetailsIndex: PropTypes.number,\n contactPhone: PropTypes.string,\n contactPhoneError: PropTypes.string,\n departureDate: PropTypes.string,\n departureTime: PropTypes.object,\n driverFirstName: PropTypes.string,\n driverFirstNameError: PropTypes.bool,\n driverLastName: PropTypes.string,\n driverLastNameError: PropTypes.bool,\n durationOfJourney: PropTypes.object,\n durationOfJourneyError: PropTypes.string,\n hoursError: PropTypes.bool,\n minutesError: PropTypes.bool,\n movementData: PropTypes.object,\n movementType: PropTypes.string,\n ownerFirstName: PropTypes.string,\n ownerFirstNameError: PropTypes.bool,\n ownerLastName: PropTypes.string,\n ownerLastNameError: PropTypes.bool,\n setAuthorisationNumber: PropTypes.func,\n setAuthorisationNumberError: PropTypes.func,\n setContactDetailsIndex: PropTypes.func,\n setContactPhone: PropTypes.func,\n setContactPhoneError: PropTypes.func,\n setDepartureTime: PropTypes.func,\n setDriverFirstName: PropTypes.func,\n setDriverFirstNameError: PropTypes.func,\n setDriverLastName: PropTypes.func,\n setDriverLastNameError: PropTypes.func,\n setDurationOfJourney: PropTypes.func,\n setDurationOfJourneyError: PropTypes.func,\n setHoursError: PropTypes.func,\n setMinutesError: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n setOwnerFirstName: PropTypes.func,\n setOwnerFirstNameError: PropTypes.func,\n setOwnerLastName: PropTypes.func,\n setOwnerLastNameError: PropTypes.func,\n setTransportError: PropTypes.func,\n setTransportedBy: PropTypes.func,\n setTransporter: PropTypes.func,\n setVehicleRegistrationNumber: PropTypes.func,\n transportError: PropTypes.bool,\n transportedBy: PropTypes.string,\n transporter: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string\n ]),\n vehicleRegistrationNumber: PropTypes.string,\n vehicleRegistrationNumberError: PropTypes.string\n};\n\nexport default TransportDetails;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport classes from 'frontEnd/movements/step3/movementStep3.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport storeService from 'services/storeService';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport Button from 'components/base/button/button';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport TransportInformationBox from 'components/summary/transportInformationBox/transportInformationBox';\nimport TransportDetails from 'frontEnd/movements/step3/transportDetails/transportDetails';\nimport { remove } from 'lodash';\n\nconst MovementStep3 = ({\n animalDetails,\n fromSummary,\n movementData,\n movementType,\n numberBeingMoved,\n setDataChanged,\n setModal,\n setTransportDetails,\n species\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const [recordTransportInformation, setRecordTransportInformation] = React.useState(null);\n const [transportedBy, setTransportedBy] = React.useState();\n const [contactDetailsIndex, setContactDetailsIndex] = React.useState(null);\n const [transportError, setTransportError] = React.useState(false);\n const [transporter, setTransporter] = React.useState('');\n\n const [contactPhone, setContactPhone] = React.useState('');\n const [contactPhoneError, setContactPhoneError] = React.useState('');\n\n const [driverFirstName, setDriverFirstName] = React.useState('');\n const [driverFirstNameError, setDriverFirstNameError] = React.useState(false);\n const [driverLastName, setDriverLastName] = React.useState('');\n const [driverLastNameError, setDriverLastNameError] = React.useState(false);\n\n const [vehicleRegistrationNumber, setVehicleRegistrationNumber] = React.useState('');\n const [vehicleRegistrationNumberError, setVehicleRegistrationNumberError] = React.useState('');\n const [authorisationNumber, setAuthorisationNumber] = React.useState('');\n\n const [ownerFirstName, setOwnerFirstName] = React.useState('');\n const [ownerFirstNameError, setOwnerFirstNameError] = React.useState(false);\n const [ownerLastName, setOwnerLastName] = React.useState('');\n const [ownerLastNameError, setOwnerLastNameError] = React.useState(false);\n\n const [departureTime, setDepartureTime] = React.useState({\n hours: null,\n minutes: null\n });\n const [durationOfJourney, setDurationOfJourney] = React.useState({\n days: '',\n hours: '',\n minutes: ''\n });\n const [durationOfJourneyError, setDurationOfJourneyError] = React.useState(null);\n\n const [hoursError, setHoursError] = React.useState(false);\n const [minutesError, setMinutesError] = React.useState(false);\n\n const [submitDisabled, setSubmitDisabled] = React.useState(false);\n\n const validate = {\n registrationNumber: (input) => {\n if (input && !input.match(/^[a-z0-9\\s]+$/i)) {\n setVehicleRegistrationNumberError('error.registrationNumber');\n } else {\n setVehicleRegistrationNumberError('');\n }\n }\n };\n\n const updateTransportDetail = (getStoredDetails, setStoredDetails, drvFirstName, drvLastName, ownFirstName, ownLastName, phone, vehicle, authNumber, transporter) => {\n const tempDrvFirstName = drvFirstName ? drvFirstName.trim() : '';\n const tempDrvLastName = drvLastName ? drvLastName.trim() : '';\n const tempOwnFirstName = ownFirstName ? ownFirstName.trim() : '';\n const tempOwnLastName = ownLastName ? ownLastName.trim() : '';\n const tempPhone = phone ? phone.trim() : '';\n const tempVehicle = vehicle ? vehicle.trim() : '';\n const tempAuthNumber = authNumber ? authNumber.trim() : '';\n const tempHaulier = transporter ? transporter.trim() : '';\n\n if (tempDrvFirstName !== '' ||\n tempDrvLastName !== '' ||\n tempOwnFirstName !== '' ||\n tempOwnLastName !== '' ||\n tempPhone !== '' ||\n tempVehicle !== '' ||\n tempAuthNumber !== '' ||\n tempHaulier !== '') {\n let details = getStoredDetails();\n details = details !== null ? details : [];\n const newRecord = {\n driverFirstName: tempDrvFirstName,\n driverLastName: tempDrvLastName,\n ownerFirstName: tempOwnFirstName,\n ownerLastName: tempOwnLastName,\n phone: tempPhone,\n vehicle: tempVehicle,\n authNumber: tempAuthNumber\n };\n\n if (tempHaulier !== '') {\n newRecord.haulier = tempHaulier;\n }\n\n const existingElement = remove(details, newRecord)[0];\n\n if (existingElement) {\n details.unshift(existingElement);\n } else {\n details.unshift(newRecord);\n }\n\n setStoredDetails(details);\n }\n };\n\n const submitValues = () => {\n if (helpers.option.transporter.isDepartureKeeper(transportedBy)) {\n if (!helpers.option.movement.isOn(movementType)) {\n updateTransportDetail(\n storeService.local.get.recentlyUsedDepartureTransportDetail,\n storeService.local.set.recentlyUsedDepartureTransportDetail,\n driverFirstName, driverLastName,\n ownerFirstName, ownerLastName,\n contactPhone, vehicleRegistrationNumber, authorisationNumber\n );\n } else {\n updateTransportDetail(\n storeService.local.get.recentlyUsedDestinationTransportDetail,\n storeService.local.set.recentlyUsedDestinationTransportDetail,\n driverFirstName, driverLastName,\n ownerFirstName, ownerLastName,\n contactPhone, vehicleRegistrationNumber, authorisationNumber\n );\n }\n } else if (helpers.option.transporter.isDestinationKeeper(transportedBy)) {\n if (!helpers.option.movement.isOn(movementType)) {\n updateTransportDetail(\n storeService.local.get.recentlyUsedDestinationTransportDetail,\n storeService.local.set.recentlyUsedDestinationTransportDetail,\n driverFirstName, driverLastName,\n ownerFirstName, ownerLastName,\n contactPhone, vehicleRegistrationNumber, authorisationNumber\n );\n } else {\n updateTransportDetail(\n storeService.local.get.recentlyUsedDepartureTransportDetail,\n storeService.local.set.recentlyUsedDepartureTransportDetail,\n driverFirstName, driverLastName,\n ownerFirstName, ownerLastName,\n contactPhone, vehicleRegistrationNumber, authorisationNumber\n );\n }\n } else if (helpers.option.transporter.isHaulier(transportedBy)) {\n updateTransportDetail(\n storeService.local.get.recentlyUsedHaulierTransportDetail,\n storeService.local.set.recentlyUsedHaulierTransportDetail,\n driverFirstName, driverLastName,\n ownerFirstName, ownerLastName,\n contactPhone, vehicleRegistrationNumber, authorisationNumber, transporter\n );\n }\n\n setTransportDetails(storeService.session.get.movementTransportInformation());\n };\n\n const nextPage = () => {\n submitValues();\n setDataChanged();\n history.push(fromSummary ? Routing.movementsSummary : Routing.movementsStep4);\n helpers.scrollToTop();\n };\n\n const checkSubmitButtonStatus = () => {\n if (recordTransportInformation === constants.option.recordTransportInformation.no) {\n setSubmitDisabled(false);\n } else if (recordTransportInformation === constants.option.recordTransportInformation.yes) {\n if (transportedBy === constants.option.transporter.haulier) {\n setSubmitDisabled(\n Boolean(\n !(transporter || transportedBy) ||\n vehicleRegistrationNumberError ||\n transportError ||\n driverFirstNameError ||\n driverLastNameError ||\n ownerFirstNameError ||\n ownerLastNameError ||\n durationOfJourneyError ||\n Boolean(contactPhoneError) ||\n hoursError ||\n minutesError\n )\n );\n } else {\n setSubmitDisabled(\n Boolean(\n !transportedBy ||\n vehicleRegistrationNumberError ||\n transportError ||\n driverFirstNameError ||\n driverLastNameError ||\n ownerFirstNameError ||\n ownerLastNameError ||\n durationOfJourneyError ||\n Boolean(contactPhoneError) ||\n hoursError ||\n minutesError\n )\n );\n }\n }\n\n return true;\n };\n\n const clearTransportDetails = () => {\n setContactDetailsIndex(null);\n setTransporter('');\n setContactPhone('');\n setDriverFirstName('');\n setDriverLastName('');\n setVehicleRegistrationNumber('');\n setAuthorisationNumber('');\n setOwnerFirstName('');\n setOwnerLastName('');\n\n storeService.session.remove.movementTransporter();\n storeService.session.remove.movementContactPhone();\n storeService.session.remove.movementDriverFirstName();\n storeService.session.remove.movementDriverLastName();\n storeService.session.remove.movementVehicleRegistrationNumber();\n storeService.session.remove.movementAuthorisationNumber();\n storeService.session.remove.movementOwnerFirstName();\n storeService.session.remove.movementOwnerLastName();\n };\n\n const handleChanges = {\n authorisationNumber: (authNum) => {\n setAuthorisationNumber(authNum);\n storeService.session.set.movementAuthorisationNumber(authNum);\n },\n\n contactPhone: (phone) => {\n setContactPhone(phone);\n storeService.session.set.movementContactPhone(phone);\n },\n\n departureTime: (time) => {\n setDepartureTime(time);\n storeService.session.set.movementDepartureTime(time);\n },\n\n driverFirstName: (firstName) => {\n setDriverFirstName(firstName);\n storeService.session.set.movementDriverFirstName(firstName);\n },\n\n driverLastName: (lastName) => {\n setDriverLastName(lastName);\n storeService.session.set.movementDriverLastName(lastName);\n },\n\n durationOfJourney: (duration) => {\n setDurationOfJourney(duration);\n storeService.session.set.movementDurationOfJourney(duration);\n },\n\n ownerFirstName: (firstName) => {\n setOwnerFirstName(firstName);\n storeService.session.set.movementOwnerFirstName(firstName);\n },\n\n ownerLastName: (lastName) => {\n setOwnerLastName(lastName);\n storeService.session.set.movementOwnerLastName(lastName);\n },\n\n recordTransportInformation: (record) => {\n setRecordTransportInformation(record);\n storeService.session.set.movementRecordTransportInformation(record);\n\n if (record === constants.option.recordTransportInformation.no) {\n storeService.session.remove.movementTransportedBy();\n clearTransportDetails();\n\n setDepartureTime({\n hours: null,\n minutes: null\n });\n setDurationOfJourney({\n days: '',\n hours: '',\n minutes: ''\n });\n\n storeService.session.remove.movementDurationOfJourney();\n storeService.session.remove.movementDepartureTime();\n }\n },\n\n transportedBy: (transportedBy) => {\n setTransportedBy(transportedBy);\n storeService.session.set.movementTransportedBy(transportedBy);\n\n clearTransportDetails();\n },\n\n transporter: (transporter) => {\n setTransporter(transporter);\n storeService.session.set.movementTransporter(transporter);\n },\n\n vehicleRegistrationNumber: (regNum) => {\n setVehicleRegistrationNumber(regNum);\n storeService.session.set.movementVehicleRegistrationNumber(regNum);\n\n validate.registrationNumber(regNum);\n }\n };\n\n useEffect(() => {\n const sessionRecordTransportInformation = storeService.session.get.movementRecordTransportInformation();\n\n if (sessionRecordTransportInformation) {\n setRecordTransportInformation(sessionRecordTransportInformation);\n\n if (sessionRecordTransportInformation === constants.option.recordTransportInformation.yes) {\n const sessionTransportedBy = storeService.session.get.movementTransportedBy();\n\n if (sessionTransportedBy) {\n setTransportedBy(sessionTransportedBy);\n\n const sessionTransporter = storeService.session.get.movementTransporter();\n const sessionContactPhone = storeService.session.get.movementContactPhone();\n const sessionDriverFirstName = storeService.session.get.movementDriverFirstName();\n const sessionDriverLastName = storeService.session.get.movementDriverLastName();\n const sessionVehicleRegistrationNumber = storeService.session.get.movementVehicleRegistrationNumber();\n const sessionAuthorisationNumber = storeService.session.get.movementAuthorisationNumber();\n const sessionOwnerFirstName = storeService.session.get.movementOwnerFirstName();\n const sessionOwnerLastName = storeService.session.get.movementOwnerLastName();\n const sessionDepartureTime = storeService.session.get.movementDepartureTime();\n const sessionDurationOfJourney = storeService.session.get.movementDurationOfJourney();\n\n const hasOnlyZeros = (obj) => Object.values(obj).every((val) => val === 0);\n\n if (sessionTransporter) {\n setTransporter(sessionTransporter);\n }\n if (sessionContactPhone) {\n setContactPhone(sessionContactPhone);\n }\n if (sessionDriverFirstName) {\n setDriverFirstName(sessionDriverFirstName);\n }\n if (sessionDriverLastName) {\n setDriverLastName(sessionDriverLastName);\n }\n if (sessionVehicleRegistrationNumber) {\n setVehicleRegistrationNumber(sessionVehicleRegistrationNumber);\n validate.registrationNumber(sessionVehicleRegistrationNumber);\n }\n if (sessionAuthorisationNumber) {\n setAuthorisationNumber(sessionAuthorisationNumber);\n }\n if (sessionOwnerFirstName) {\n setOwnerFirstName(sessionOwnerFirstName);\n }\n if (sessionOwnerLastName) {\n setOwnerLastName(sessionOwnerLastName);\n }\n if (sessionDepartureTime && !hasOnlyZeros(sessionDepartureTime)) {\n setDepartureTime(sessionDepartureTime);\n }\n if (sessionDurationOfJourney && !hasOnlyZeros(sessionDurationOfJourney)) {\n setDurationOfJourney(sessionDurationOfJourney);\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n checkSubmitButtonStatus();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n authorisationNumber,\n contactPhone,\n contactPhoneError,\n departureTime,\n durationOfJourney,\n durationOfJourneyError,\n driverFirstName,\n driverFirstNameError,\n driverLastName,\n driverLastNameError,\n hoursError,\n minutesError,\n ownerFirstName,\n ownerFirstNameError,\n ownerLastName,\n ownerLastNameError,\n recordTransportInformation,\n transportedBy,\n transporter,\n transportError,\n vehicleRegistrationNumber,\n vehicleRegistrationNumberError\n ]);\n\n return (\n <>\n {ready &&\n <>\n

    {t('label.transportInformation')}

    \n\n \n\n \n
    \n
    \n
    \n handleChanges.recordTransportInformation(event.target.value)}\n value={recordTransportInformation}\n />\n
    \n
    \n
    \n
    \n {recordTransportInformation === constants.option.recordTransportInformation.yes &&\n \n }\n \n
    \n \n }\n \n );\n};\n\nMovementStep3.propTypes = {\n animalDetails: PropTypes.object,\n fromSummary: PropTypes.bool,\n movementData: PropTypes.object,\n movementType: PropTypes.string,\n numberBeingMoved: PropTypes.number,\n setDataChanged: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n setTransportDetails: PropTypes.func,\n species: PropTypes.object\n};\n\nexport default MovementStep3;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\nimport TextEntry from 'components/base/textEntry/textEntry';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport config from 'config';\nimport helpers from 'services/helpers';\n\nconst FciFormFields = ({\n holdingRestrictions,\n metFCIWithdrawalPeriods,\n nonComplianceReason,\n setHoldingRestrictions,\n setNonComplianceReason,\n setWithdrawalPeriod,\n speciesId,\n withdrawalPeriod\n}) => {\n const { ready } = useTranslation();\n\n const handleChanges = {\n changeHoldingRestrictions: (event) => {\n setHoldingRestrictions(event.target.value);\n },\n\n nonComplianceReason: (event) => {\n setNonComplianceReason(event.target.value);\n },\n\n withdrawalPeriod: (eventTarget) => {\n metFCIWithdrawalPeriods.forEach((withdrawalPeriod) => {\n if (withdrawalPeriod.code === eventTarget.value) {\n setWithdrawalPeriod(withdrawalPeriod);\n }\n });\n }\n };\n\n return (\n <>\n {ready &&\n <>\n {metFCIWithdrawalPeriods &&\n
    \n ({\n id: item.code,\n label: item.name\n }))}\n name=\"medicineWithdrawal\"\n onChange={(event) => handleChanges.withdrawalPeriod(event.target)}\n value={withdrawalPeriod ? withdrawalPeriod.code : null}\n />\n
    \n }\n {!metFCIWithdrawalPeriods &&\n \n }\n\n
    \n
    \n setNonComplianceReason(event.target.value)}\n rows={config.ROWS_FCI_NON_COMPLIANCE}\n value={nonComplianceReason}\n width=\"full\"\n />\n
    \n\n
    \n setHoldingRestrictions(event.target.value)}\n rows={config.ROWS_HOLDING_RESTRICTIONS}\n value={holdingRestrictions}\n width=\"full\"\n />\n
    \n
    \n \n }\n \n );\n};\n\nFciFormFields.propTypes = {\n holdingRestrictions: PropTypes.string,\n metFCIWithdrawalPeriods: PropTypes.array,\n nonComplianceReason: PropTypes.string,\n setHoldingRestrictions: PropTypes.func,\n setNonComplianceReason: PropTypes.func,\n setWithdrawalPeriod: PropTypes.func,\n speciesId: PropTypes.number,\n withdrawalPeriod: PropTypes.object\n};\n\nexport default FciFormFields;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classes from 'components/base/infoContainer/infoContainer.module.scss';\nimport { useTranslation } from 'react-i18next';\n\nconst InfoContainer = ({\n content,\n title\n}) => {\n const { ready, t } = useTranslation();\n\n const infoTitle = t(title);\n\n return (\n <>\n {ready &&\n
    \n {title &&\n

    {infoTitle}

    \n }\n {content &&\n
    \n }\n
    \n }\n \n );\n};\n\nInfoContainer.propTypes = {\n content: PropTypes.string,\n title: PropTypes.string\n};\n\nexport default InfoContainer;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport axios from 'axios';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport { tableColumns, initialSorting } from 'services/tableColumns';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport Button from 'components/base/button/button';\nimport FciFormFields from 'frontEnd/movements/step4/fciFormFields/fciFormFields';\nimport InfoContainer from 'components/base/infoContainer/infoContainer';\nimport RadioButtons from 'components/base/radioButtons/radioButtons';\nimport Table from 'components/table/table';\nimport TransportInformationBox from 'components/summary/transportInformationBox/transportInformationBox';\n\nconst MovementStep4 = ({\n animalsToChange,\n movementData,\n numberBeingMoved,\n setAnimalsToChange,\n setDataChanged,\n setFCIData,\n setModal,\n species\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const speciesId = storeService.session.get.species().id;\n\n const [doAnimalsSatisfy, setDoAnimalsSatisfy] = React.useState('');\n const [recordFCI, setRecordFCI] = React.useState(null);\n const [choiceDisabled, setChoiceDisabled] = React.useState(true);\n const [nonComplianceReason, setNonComplianceReason] = React.useState('');\n const [withdrawalPeriod, setWithdrawalPeriod] = React.useState();\n const [holdingRestrictions, setHoldingRestrictions] = React.useState('');\n const [metFCIWithdrawalPeriods, setMetFCIWithdrawalPeriods] = React.useState();\n\n const paginationParams = constants.pagination.defaultParams;\n paginationParams[constants.pagination.bottom].total = animalsToChange === undefined ? 0 : animalsToChange.animalsBeingMoved === undefined ? 0 : animalsToChange.animalsBeingMoved?.length;\n\n const submitValues = () => {\n setFCIData(storeService.session.get.movementFci());\n };\n\n const nextPage = () => {\n submitValues();\n setDataChanged();\n history.push(Routing.movementsSummary);\n helpers.scrollToTop();\n };\n\n const canUserContinue = () => {\n if (choiceDisabled || helpers.option.fci.doNotRecord(recordFCI) || helpers.option.animals.doSatisfy(doAnimalsSatisfy)) {\n return false;\n }\n return (\n !recordFCI || !nonComplianceReason || !withdrawalPeriod || !animalsToChange.animalsBeingMoved.filter((item) => item.unfit).length > 0\n );\n };\n\n const handleChanges = {\n animalSelected: (animal) => {\n if (animal.unfit) {\n setAnimalsToChange((prevState) => {\n const newAnimalsBeingMoved = prevState.animalsBeingMoved?.map((item) => item.tagNumber === animal.tagNumber\n ? { ...item, unfit: false }\n : item\n );\n\n const newAnimalsToChange = {\n ...prevState,\n animalsBeingMoved: newAnimalsBeingMoved\n };\n\n storeService.session.set.movementAnimalsBeingMoved(newAnimalsBeingMoved);\n\n return newAnimalsToChange;\n });\n } else {\n setAnimalsToChange((prevState) => {\n const newAnimalsBeingMoved = prevState.animalsBeingMoved?.map((item) => item.tagNumber === animal.tagNumber\n ? { ...item, unfit: true }\n : item\n );\n\n const newAnimalsToChange = {\n ...prevState,\n animalsBeingMoved: newAnimalsBeingMoved\n };\n\n storeService.session.set.movementAnimalsBeingMoved(newAnimalsBeingMoved);\n\n return newAnimalsToChange;\n });\n }\n },\n\n holdingRestriction: (restrictions) => {\n setHoldingRestrictions(restrictions);\n storeService.session.set.movementFciHoldingRestrictions(restrictions);\n },\n\n nonComplianceReason: (reason) => {\n setNonComplianceReason(reason);\n storeService.session.set.movementFciNonComplianceReason(reason);\n },\n\n recordFCI: (record) => {\n setRecordFCI(record);\n storeService.session.set.movementFciRecordFci(record);\n\n if (helpers.option.fci.doNotRecord(record)) {\n setAnimalsToChange((prevState) => ({\n ...prevState,\n // eslint-disable-next-line no-unused-vars\n animalsBeingMoved: prevState.animalsBeingMoved?.map(({ unfit, ...item }) => item)\n }));\n\n setDoAnimalsSatisfy(null);\n storeService.session.remove.movementFciAnimalsSatisfy();\n } else if (\n animalsToChange.batchList?.length > 0 &&\n (\n !animalsToChange.animalsBeingMoved ||\n animalsToChange.animalsBeingMoved?.length === 0\n )\n ) {\n setDoAnimalsSatisfy(constants.option.animalsSatisfy.doSatisfy);\n storeService.session.set.movementFciAnimalsSatisfy(constants.option.animalsSatisfy.doSatisfy);\n }\n },\n\n satisfy: (animalsSatisfy) => {\n setDoAnimalsSatisfy(animalsSatisfy);\n storeService.session.set.movementFciAnimalsSatisfy(animalsSatisfy);\n\n if (helpers.option.animals.doSatisfy(animalsSatisfy)) {\n setNonComplianceReason('');\n setHoldingRestrictions('');\n storeService.session.remove.movementFciNonComplianceReason();\n storeService.session.remove.movementFciHoldingRestrictions();\n\n setAnimalsToChange((prevState) => ({\n ...prevState,\n // eslint-disable-next-line no-unused-vars\n animalsBeingMoved: prevState.animalsBeingMoved.map(({ unfit, ...item }) => item)\n }));\n }\n },\n\n withdrawalPeriod: (period) => {\n setWithdrawalPeriod(period);\n storeService.session.set.movementFciWithdrawalPeriod(period);\n }\n };\n\n useEffect(() => {\n if (\n animalsToChange?.animalsBeingMoved?.length > 0 ||\n animalsToChange?.batchList?.length > 0\n ) {\n setChoiceDisabled(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animalsToChange]);\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n\n helpers.get.metFciWithdrawalPeriods(source.token)\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n setMetFCIWithdrawalPeriods(res.data);\n }\n });\n\n const sessionRecordFCI = storeService.session.get.movementFciRecordFci();\n\n if (sessionRecordFCI) {\n setRecordFCI(sessionRecordFCI);\n\n if (helpers.option.fci.doRecord(sessionRecordFCI)) {\n const sessionAnimalsSatisfy = storeService.session.get.movementFciAnimalsSatisfy();\n\n if (sessionAnimalsSatisfy) {\n setDoAnimalsSatisfy(sessionAnimalsSatisfy);\n\n if (helpers.option.animals.doNotSatisfy(sessionAnimalsSatisfy)) {\n const sessionNonComplianceReason = storeService.session.get.movementFciNonComplianceReason();\n const sessionWithdrawalPeriod = storeService.session.get.movementFciWithdrawalPeriod();\n const sessionHoldingRestrictions = storeService.session.get.movementFciHoldingRestrictions();\n\n if (sessionNonComplianceReason) {\n setNonComplianceReason(sessionNonComplianceReason);\n }\n if (sessionWithdrawalPeriod) {\n setWithdrawalPeriod(sessionWithdrawalPeriod);\n }\n if (sessionHoldingRestrictions) {\n setHoldingRestrictions(sessionHoldingRestrictions);\n }\n }\n }\n }\n }\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ready &&\n <>\n

    {t('movements.fci-information.title')}

    \n\n \n\n \n
    \n
    \n
    \n handleChanges.recordFCI(event.target.value)}\n value={recordFCI}\n />\n
    \n
    \n
    \n\n {helpers.option.fci.doRecord(recordFCI) &&\n <>\n \n\n
    \n 0 &&\n (\n !animalsToChange.animalsBeingMoved ||\n animalsToChange.animalsBeingMoved?.length === 0\n )\n ? [constants.option.animalsSatisfy.doNotSatisfy]\n : []\n )}\n hint={animalsToChange.batchList?.length > 0 ? 'hint2' : 'hint1'}\n ids={[\n constants.option.animalsSatisfy.doSatisfy,\n constants.option.animalsSatisfy.doNotSatisfy\n ]}\n name=\"doAnimalsSatisfy\"\n onChange={(event) => handleChanges.satisfy(event.target.value)}\n value={doAnimalsSatisfy}\n />\n
    \n\n {helpers.option.animals.doNotSatisfy(doAnimalsSatisfy) &&\n <>\n
    \n \n\n

    {t('movements.fci-information.fciAnimalsSelect')}

    \n\n
    \n ({\n ...item,\n unfit: Boolean(item.unfit)\n }))}\n dataProvided={true}\n initialSortBy={initialSorting.movements.fci.accessor}\n initialSortDirection={initialSorting.movements.fci.direction}\n paginationParams={paginationParams}\n setData={setAnimalsToChange}\n setDataProp=\"animalsBeingMoved\"\n setModal={setModal}\n />\n
    \n\n
    \n \n
    \n
    \n \n }\n \n }\n \n \n }\n \n );\n};\n\nMovementStep4.propTypes = {\n animalsToChange: PropTypes.object,\n movementData: PropTypes.object,\n numberBeingMoved: PropTypes.number,\n setAnimalsToChange: PropTypes.func.isRequired,\n setDataChanged: PropTypes.func,\n setFCIData: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n species: PropTypes.object\n};\n\nexport default MovementStep4;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport classes from 'frontEnd/movements/summary/summary.module.scss';\nimport helpers from 'services/helpers';\nimport navigation from 'services/navigation';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport AboutPanel from 'components/base/aboutPanel/aboutPanel';\nimport AddressSummary from 'components/summary/addressSummary/addressSummary';\nimport AnimalSummary from 'components/summary/animalSummary/animalSummary';\nimport Button from 'components/base/button/button';\nimport DateSummary from 'components/summary/dateSummary/dateSummary';\nimport ExemptionSummary from 'components/summary/exemptionSummary/exemptionSummary';\nimport FciSummary from 'components/summary/fciSummary/fciSummary';\nimport TransportInformationBox from 'components/summary/transportInformationBox/transportInformationBox';\nimport TransportSummary from 'components/summary/transportSummary/transportSummary';\nimport UserComment from 'components/summary/userComment/userComment';\nimport storeService from 'services/storeService';\n\nconst Summary = ({\n amend,\n amendChangedData,\n currentHolding,\n fciData,\n finalAnimalDetails,\n location,\n movementData,\n pending,\n setActions,\n setFinalAnimalDetails,\n setFromSummary,\n setModal,\n species,\n submitMovement,\n transportInformation\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const numberBeingMoved = finalAnimalDetails && finalAnimalDetails.numberOfAnimalsSelected;\n const fciStoredData = storeService.session.get.movementFci();\n fciData = fciData?.animalsSatisfy !== fciStoredData?.animalsSatisfy ? fciStoredData : fciData;\n\n const returnToPreviousUrl = () => {\n let returnUrl = navigation.userActivity();\n let movementDetails = '';\n\n if (location?.state?.data?.current?.returnUrl) {\n returnUrl = location.state.data.current.returnUrl;\n }\n\n if (location?.state?.data && location.state.returnUrl) {\n const data = location.state.data;\n returnUrl = location.state.returnUrl;\n\n movementDetails = {\n data: { ...data }\n };\n }\n\n history.push(returnUrl, movementDetails);\n };\n\n return (\n <>\n {ready &&\n <>\n

    {t('label.movementSummary')}

    \n\n \n\n \n
    \n
    \n {\n setActions({ userCommentEdit: false });\n setFromSummary(true);\n history.push(Routing.movementsStep1);\n }}\n />\n {helpers.option.movement.isPermitMove(movementData.movementType)\n ? {\n setActions({ userCommentEdit: false });\n setFromSummary(true);\n history.push(Routing.movementsStep1);\n }}\n queryKeeper={true}\n setModal={setModal}\n />\n : {\n setActions({ userCommentEdit: false });\n setFromSummary(true);\n history.push(Routing.movementsStep1);\n }}\n queryKeeper={true}\n setModal={setModal}\n />\n }\n {!helpers.option.movement.isPermitMove(movementData.movementType) &&\n {\n setActions({ userCommentEdit: true });\n setFromSummary(true);\n history.push(Routing.movementsStep1);\n }}\n />\n }\n {\n setActions({ userCommentEdit: false });\n setFromSummary(true);\n history.push(Routing.movementsStep1);\n }}\n />\n {\n setActions({ userCommentEdit: false });\n setFromSummary(true);\n history.push(Routing.movementsStep2);\n }}\n setAnimalsData={setFinalAnimalDetails}\n setModal={setModal}\n />\n {\n setActions({ userCommentEdit: false });\n setFromSummary(true);\n history.push(Routing.movementsStep3);\n }}\n transportInformation={transportInformation}\n />\n {!helpers.species.isCattleId(species.id) && finalAnimalDetails &&\n {\n setActions({ userCommentEdit: false });\n setFromSummary(true);\n history.push(Routing.movementsStep4);\n }}\n />\n }\n
    \n
    \n\n
    \n
    \n \n
    \n {!amend &&\n
    \n history.push(Routing.keeperHolding)}\n />\n
    \n }\n\n {amend &&\n
    \n \n
    \n }\n
    \n \n }\n \n );\n};\n\nSummary.propTypes = {\n amend: PropTypes.bool,\n amendChangedData: PropTypes.bool,\n currentHolding: PropTypes.object,\n fciData: PropTypes.object,\n finalAnimalDetails: PropTypes.object,\n location: PropTypes.object.isRequired,\n movementData: PropTypes.object,\n pending: PropTypes.bool,\n setActions: PropTypes.func,\n setFinalAnimalDetails: PropTypes.func.isRequired,\n setFromSummary: PropTypes.func,\n setModal: PropTypes.func.isRequired,\n species: PropTypes.object,\n submitMovement: PropTypes.func,\n transportInformation: PropTypes.object\n};\n\nexport default Summary;\n","import React, { useEffect } from 'react';\nimport Routing from 'routing';\nimport PropTypes from 'prop-types';\nimport { Prompt } from 'react-router';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory, Redirect } from 'react-router-dom';\nimport { cloneDeep, isEqual, isEmpty } from 'lodash';\nimport axios from 'axios';\nimport bff, { bffResponse, bffStatus, isCancel } from 'services/bff';\nimport config from 'config';\nimport constants from 'services/constants';\nimport errors from 'services/errors';\nimport helpers from 'services/helpers';\nimport navigation from 'services/navigation';\nimport permissions from 'services/permissions';\nimport storeService from 'services/storeService';\nimport userRoleType from 'services/userRoleType';\nimport Confirmation from 'components/base/confirmation/confirmation';\nimport MovementStep1 from 'frontEnd/movements/step1/movementStep1';\nimport MovementStep2 from 'frontEnd/movements/step2/movementStep2';\nimport MovementStep3 from 'frontEnd/movements/step3/movementStep3';\nimport MovementStep4 from 'frontEnd/movements/step4/movementStep4';\nimport Summary from 'frontEnd/movements/summary/summary';\n\nconst Movements = ({\n location,\n setModal,\n setPermission\n}) => {\n const { ready, t } = useTranslation();\n const history = useHistory();\n\n const species = storeService.session.get.species();\n const role = storeService.session.get.permissions();\n const holding = storeService.session.get.holding();\n\n const sessionMovement = storeService.session.get.movement();\n const sessionMovementOriginal = storeService.session.get.originalMovement();\n const sessionOtherHolding = storeService.session.get.movementOtherHolding();\n const sessionDataChanged = storeService.session.get.dataChanged();\n\n const [movementData, setMovementData] = React.useState(sessionMovement ? { ...sessionMovement, otherHolding: sessionOtherHolding } : {});\n const [transportDetails, setTransportDetails] = React.useState(sessionMovement?.transportInformation ? sessionMovement.transportInformation : null);\n const [fciData, setFCIData] = React.useState(sessionMovement?.fci ? sessionMovement.fci : null);\n const [animalSelectionDetails, setAnimalSelectionDetails] = React.useState(sessionMovement?.selectedAnimalDetails ? sessionMovement.selectedAnimalDetails : null);\n const [finalAnimalDetails, setFinalAnimalDetails] = React.useState();\n const [movementType, setMovementType] = React.useState(null);\n const [dataChanged, setDataChanged] = React.useState(sessionDataChanged ? sessionDataChanged : false);\n const [exemptionsLoaded, setExemptionsLoaded] = React.useState(sessionMovement?.exemptions?.length > 0);\n const [isAmend, setIsAmend] = React.useState(sessionMovement?.amend ? sessionMovement.amend : false);\n const [inBusinessMovement, setInBusinessMovement] = React.useState(false);\n\n const [pending, setPending] = React.useState(false);\n const [submitted, setSubmitted] = React.useState(false);\n const [fromSummary, setFromSummary] = React.useState(false);\n const [actions, setActions] = React.useState({});\n\n const STEP_01 = '1';\n const STEP_02 = '2';\n const STEP_03 = '3';\n const STEP_04 = '4';\n const STEP_05 = '5';\n\n const confirmation = {\n button: {\n recordAnother: () => ({\n id: 'recordAnother',\n label: 'button.recordAnotherMovement',\n onClick: () => {\n storeService.session.remove.dataChanged();\n setDataChanged(false);\n setInBusinessMovement(false);\n setMovementType(null);\n setMovementData({ exemptions: [] });\n setIsAmend(false);\n setFromSummary(false);\n setActions({});\n history.push(Routing.movementsStep1);\n }\n }),\n\n returnToHomePage: () => ({\n id: 'returnToHomePage',\n label: 'button.returnToHomePage',\n onClick: () => {\n storeService.session.remove.dataChanged();\n storeService.session.set.permissions(userRoleType.GENERIC);\n setPermission(userRoleType.GENERIC);\n history.push(Routing.home);\n }\n }),\n\n returnToUserActivity: () => ({\n id: 'returnToUserActivity',\n label: 'button.returnToUserActivity',\n onClick: () => {\n storeService.session.remove.dataChanged();\n storeService.session.set.permissions(userRoleType.GENERIC);\n setPermission(userRoleType.GENERIC);\n history.push(Routing.userActivity);\n }\n }),\n\n viewSummary: (requestId, movementRef, requestType) => ({\n id: 'viewSummary',\n label: 'button.viewSummary',\n onClick: () => {\n const isKeeper = permissions.isKeeper();\n const movementsUrl = navigation.movements();\n\n setPermission(userRoleType.GENERIC);\n storeService.session.set.permissions(userRoleType.GENERIC);\n storeService.session.remove.holding();\n\n setTimeout(() => {\n history.push({\n pathname: Routing.activityDetails + requestId,\n state: {\n data: {\n requestId,\n movementDocumentRef: movementRef,\n requestType,\n current: {\n returnUrl: isKeeper ? Routing.keeperHolding : movementsUrl,\n permissions: role,\n holding\n }\n }\n }\n });\n }, [100]);\n }\n })\n },\n\n link: {\n pdf: (speciesId, ref) => ({\n label: helpers.species.isSheepId(speciesId) || helpers.species.isGoatId(speciesId) ? 'button.viewMovementDocument' : null,\n param: ref,\n type: constants.linkTypes.pdfButton\n })\n }\n };\n\n const amendChangedData = () => {\n const tempMovementData = cloneDeep(storeService.session.get.movement());\n if (tempMovementData?.selectedAnimalDetails?.batchList?.length > 0) {\n tempMovementData.selectedAnimalDetails.batchList.forEach((batch) => delete batch.added);\n helpers.sortArrayOfObjects(tempMovementData.selectedAnimalDetails.batchList, 'batchNumber', constants.sorting.ascending);\n }\n if (tempMovementData?.selectedAnimalDetails?.animalsBeingMoved?.length > 0) {\n tempMovementData.selectedAnimalDetails.animalsBeingMoved.forEach((animal) => delete animal.added);\n helpers.sortArrayOfObjects(tempMovementData.selectedAnimalDetails.animalsBeingMoved, 'tagNumber', constants.sorting.ascending);\n }\n\n return !isEqual(sessionMovementOriginal, tempMovementData);\n };\n\n const pageTitle = () => {\n if (inBusinessMovement) {\n return 'movements.title-bus';\n }\n\n switch (movementType) {\n case constants.option.movement.on:\n return 'movements.title-on';\n case constants.option.movement.off:\n return 'movements.title-off';\n case constants.option.movement.permit:\n return 'movements.permitMove.title';\n default:\n return 'menu.movements';\n }\n };\n\n const submitMovement = () => {\n setSubmitted(true);\n setPending(true);\n\n const numberBeingMoved = finalAnimalDetails && finalAnimalDetails.numberOfAnimalsSelected;\n const storedfci = storeService.session.get.movementFci();\n\n const tempParams = {\n poll: config.POLLS_ENABLED,\n animalCount: numberBeingMoved,\n comment: movementData.comment !== '' ? movementData.comment : null,\n departureDate: helpers.date.formatForSubmission(movementData.departureDate),\n exemptions: movementData.exemptions ? movementData.exemptions.filter((o) => o.value) : [],\n fciData: fciData?.animalsSatisfy !== storedfci?.animalsSatisfy ? { animalsSatisfy: 'satisfy', recordFCI: 'yes' } : {\n ...fciData,\n unfitAnimals: finalAnimalDetails.animalsBeingMoved?.filter((item) => item.unfit).map((item) => item.tagNumber)\n },\n finalAnimalDetails,\n inBusinessMovement,\n movementType: inBusinessMovement ? constants.option.movement.on : movementData.movementType,\n species: species.name,\n transportInformation: transportDetails,\n userHolding: inBusinessMovement && helpers.option.movement.isOff(movementData.movementType) ? movementData.otherHolding.value : holding.value\n };\n\n if (movementData.arrivalDate) {\n tempParams.arrivalDate = helpers.date.formatForSubmission(movementData.arrivalDate);\n }\n\n if (helpers.option.movement.isOff(movementData.movementType)) {\n tempParams.sourceHolding = holding.value;\n tempParams.destinationHolding = movementData.otherHolding ? movementData.otherHolding.value : config.UNKNOWN;\n } else if (helpers.option.movement.isPermitMove(movementData.movementType)) {\n tempParams.userHolding = holding.value;\n tempParams.sourceHolding = holding.value;\n tempParams.destinationHolding = holding.value;\n tempParams.arrivalDate = helpers.date.formatForSubmission(movementData.arrivalDate);\n } else {\n tempParams.sourceHolding = movementData.otherHolding ? movementData.otherHolding.value : config.UNKNOWN;\n tempParams.destinationHolding = holding.value;\n }\n\n if (isAmend) {\n tempParams.amend = true;\n tempParams.originalMovementId = movementData.movementId;\n }\n\n bff\n .post('/movement', tempParams)\n .then((res) => {\n storeService.session.remove.dataChanged();\n\n const { data } = res;\n storeService.session.set.confirmRequestId(bffResponse.requestId(data));\n\n storeService.session.set.confirmPollingErrors(bffResponse.errors(data));\n storeService.session.set.confirmPollingWarnings(bffResponse.warnings(data));\n storeService.session.set.confirmMovementReference(bffResponse.movementRef(data));\n storeService.session.set.confirmPollingStatus(bffResponse.status(data));\n\n history.push(Routing.movementsConfirm);\n\n setSubmitted(false);\n setPending(false);\n setDataChanged(false);\n setMovementType(null);\n setInBusinessMovement(false);\n setMovementData({ exemptions: [] });\n helpers.scrollToTop();\n })\n .catch((error) => {\n errors.BFF(error, setModal);\n setPending(false);\n });\n };\n\n const dataHasChanged = () => {\n setDataChanged(true);\n storeService.session.set.dataChanged(true);\n };\n\n const stepPicker = (pathname) => {\n const routingsNeedMovementData = [Routing.movementsStep2, Routing.movementsStep3, Routing.movementsStep4, Routing.movementsSummary];\n\n if (routingsNeedMovementData.includes(pathname) && isEmpty(movementData)) {\n return ;\n }\n\n switch (pathname) {\n case Routing.movementsStep1:\n default: {\n storeService.session.removeAll.confirm();\n\n return (\n <>\n

    {t('movements.subtitle')}

    \n \n {t('movements.step-heading')}\n {STEP_01}\n {t('movements.step-heading-pages')}\n \n \n \n );\n }\n\n case Routing.movementsStep2: {\n return (\n <>\n

    {t('movements.subtitle')}

    \n \n {t('movements.step-heading')}\n {STEP_02}\n {t('movements.step-heading-pages')}\n \n \n \n );\n }\n\n case Routing.movementsStep3: {\n return (\n <>\n

    {t('movements.subtitle')}

    \n \n {t('movements.step-heading')}\n {STEP_03}\n {t('movements.step-heading-pages')}\n \n \n \n );\n }\n\n case Routing.movementsStep4: {\n return (\n <>\n

    {t('movements.subtitle')}

    \n \n {t('movements.step-heading')}\n {STEP_04}\n {t('movements.step-heading-pages')}\n \n \n \n );\n }\n\n case Routing.movementsSummary: {\n return (\n <>\n {(!submitted || (submitted && !pending)) &&\n <>\n {submitted && !pending && // Submission error\n \n }\n

    {t('movements.subtitle')}

    \n \n {t('movements.step-heading')}\n {STEP_05}\n {t('movements.step-heading-pages')}\n \n \n \n }\n {submitted && pending &&\n \n }\n \n );\n }\n\n case Routing.movementsConfirm: {\n const requestId = storeService.session.get.confirmRequestId();\n const movementRef = storeService.session.get.confirmMovementReference();\n const pollingStatus = storeService.session.get.confirmPollingStatus();\n const pollingErrors = storeService.session.get.confirmPollingErrors();\n const pollingWarnings = storeService.session.get.confirmPollingWarnings();\n const withErrorsOrWarnings = pollingErrors?.length > 0 || pollingWarnings?.length > 0;\n const amendWithErrors = isAmend && pollingErrors?.length > 0;\n const requestType = sessionMovementOriginal?.requestType ? sessionMovementOriginal.requestType : constants.option.requestType.movement;\n\n return (\n <>\n {!requestId && // Not yet submitted\n \n }\n\n {requestId && !movementRef && // Submission successful but polling timed out\n item)}\n confirm={{ id: requestId, label: 'label.requestId', onClick: confirmation.button.returnToUserActivity().onClick }}\n errors={pollingErrors}\n label={bffStatus.isClaPending(pollingStatus) ? 'label.submissionPending' : (pollingErrors?.length > 0 ? 'label.submissionError' : (isAmend ? 'label.movementAmendmentSubmitted' : 'label.movementSubmitted'))}\n setModal={setModal}\n status={pollingStatus}\n warnings={pollingWarnings}\n />\n }\n\n {movementRef && // Submission and polling successful\n 0 ? 'label.submissionError' : (isAmend ? 'label.movementAmendmentSubmitted' : 'label.movementSubmitted')}\n links={[\n confirmation.link.pdf(species.id, { movementRef, requestId })\n ]}\n setModal={setModal}\n status={pollingStatus}\n warnings={pollingWarnings}\n />\n }\n \n );\n }\n }\n };\n\n useEffect(() => {\n const source = axios.CancelToken.source();\n const sessionMovementType = storeService.session.get.movementType();\n const sessionMovementInBusiness = storeService.session.get.movementInBusiness();\n\n if (sessionMovementType) {\n setMovementType(sessionMovementType);\n }\n\n if (sessionMovementInBusiness) {\n setInBusinessMovement(sessionMovementInBusiness);\n }\n\n if (storeService.session.get.movementExemptions() === null) {\n setExemptionsLoaded(false);\n }\n\n if (!exemptionsLoaded) {\n helpers.get.processingFlags(source.token, constants.option.requestType.movement, species.id)\n .then((res) => {\n if (helpers.response.isValid(res.data, setModal)) {\n const sessionMovementExemptions = storeService.session.get.movementExemptions();\n\n if (sessionMovementExemptions) {\n const newExemptions = res.data.map((item) => {\n const foundExemption = sessionMovementExemptions.find((ex) => ex.id === item.id);\n const isPermitMoveExemption = Object.values(constants.permitMovesMandatory).some((mandatoryExemption) => mandatoryExemption.id === item.id);\n\n return {\n ...item,\n value: foundExemption ? foundExemption.value : false,\n disabled: isPermitMoveExemption || false\n };\n });\n\n storeService.session.set.movementExemptions(newExemptions);\n if (isAmend) {\n storeService.session.set.originalMovementExemptions(newExemptions);\n }\n setMovementData((prevState) => ({ ...prevState, exemptions: newExemptions }));\n } else {\n storeService.session.set.movementExemptions(res.data);\n if (isAmend) {\n storeService.session.set.originalMovementExemptions(res.data);\n }\n setMovementData((prevState) => ({ ...prevState, exemptions: res.data }));\n }\n }\n\n setExemptionsLoaded(true);\n })\n .catch((error) => {\n if (!isCancel(error)) {\n errors.BFF(error, setModal);\n }\n });\n }\n\n return () => source.cancel();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [movementData]);\n\n useEffect(() => {\n let numberOfAnimalsSelected = 0;\n\n if (animalSelectionDetails) {\n if (animalSelectionDetails.batchList) {\n animalSelectionDetails.batchList.forEach((batch) => {\n numberOfAnimalsSelected += parseInt(batch.animalTotal);\n });\n }\n\n if (animalSelectionDetails.animalsBeingMoved) {\n animalSelectionDetails.animalsBeingMoved.forEach(() => {\n numberOfAnimalsSelected++;\n });\n }\n\n setFinalAnimalDetails({\n ...animalSelectionDetails,\n numberOfAnimalsSelected\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animalSelectionDetails]);\n\n useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.movements.length) !== Routing.movements || (isAmend && path.pathname === Routing.movements)) {\n storeService.session.remove.activeTabId();\n storeService.session.remove.dataChanged();\n storeService.session.removeAll.confirm();\n storeService.session.removeAll.movement();\n storeService.session.removeAll.original();\n storeService.session.remove.searchResultsMovements();\n storeService.session.remove.tableFiltersMovements();\n unListen();\n }\n });\n\n window.onpopstate = () => {\n if (storeService.session.get.confirm()) {\n history.push(navigation.movements());\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [history]);\n\n return (\n <>\n {ready &&\n <>\n {\n const message = isAmend ? 'warning.wantToExitAmendment' : 'warning.unsavedChanges2';\n return (\n !storeService.session.get.idle() &&\n (\n (!isAmend && dataChanged) ||\n (isAmend && amendChangedData() && (\n location.pathname !== Routing.movementsConfirm ||\n location.pathname === Routing.movements\n ))\n ) &&\n (\n params.pathname.substring(0, Routing.movements.length) !== Routing.movements || params.pathname === Routing.movements\n )\n )\n ? t(message)\n : true;\n }}\n />\n

    \n {t(pageTitle())}\n {isAmend &&\n <> ({t('label.amendment')})\n }\n

    \n {stepPicker(location.pathname)}\n \n }\n \n );\n};\n\nMovements.propTypes = {\n location: PropTypes.object.isRequired,\n setModal: PropTypes.func.isRequired,\n setPermission: PropTypes.func.isRequired\n};\n\nexport default Movements;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport constants from 'services/constants';\nimport navigation from 'services/navigation';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport Table from 'components/table/table';\n\nconst MovementSearchGatherings = ({\n setModal\n}) => {\n const { ready } = useTranslation();\n const history = useHistory();\n\n const sessionSearchResults = storeService.session.get.searchResultsMovements();\n const [data, setData] = React.useState(sessionSearchResults ? sessionSearchResults : []);\n const [renderTable, setRenderTable] = React.useState(false);\n\n React.useEffect(() => {\n const unListen = history.listen((path) => {\n if (path.pathname.substring(0, Routing.abattoirSearch.length) !== Routing.abattoirSearch &&\n path.pathname.substring(0, Routing.abattoirMovementDetails.length) !== Routing.abattoirMovementDetails &&\n path.pathname.substring(0, Routing.assemblySearch.length) !== Routing.assemblySearch &&\n path.pathname.substring(0, Routing.assemblyMovementDetails.length) !== Routing.assemblyMovementDetails &&\n path.pathname.substring(0, Routing.collectionSearch.length) !== Routing.collectionSearch &&\n path.pathname.substring(0, Routing.collectionMovementDetails.length) !== Routing.collectionMovementDetails &&\n path.pathname.substring(0, Routing.marketSearch.length) !== Routing.marketSearch &&\n path.pathname.substring(0, Routing.marketMovementDetails.length) !== Routing.marketMovementDetails &&\n path.pathname.substring(0, Routing.showSearch.length) !== Routing.showSearch &&\n path.pathname.substring(0, Routing.showMovementDetails.length) !== Routing.showMovementDetails\n ) {\n storeService.session.removeAll.searchResults();\n storeService.session.removeAll.tableFilters();\n unListen();\n }\n });\n }, [history]);\n\n return (\n <>\n {ready &&\n <>\n 0}\n rowLinks={{\n url: () => navigation.movementDetails(),\n accessor: 'requestId',\n state: (row) => ({\n data: {\n ...row,\n activeTabId: storeService.session.get.tableFiltersGatheringSearch().activeTabId\n }\n })\n }}\n setData={setData}\n setModal={setModal}\n setRenderTable={setRenderTable}\n store={{\n filters: 'GatheringSearch',\n data: 'GatheringSearch'\n }}\n />\n \n }\n \n );\n};\n\nMovementSearchGatherings.propTypes = {\n setModal: PropTypes.func.isRequired\n};\n\nexport default MovementSearchGatherings;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'pages/error/error.module.scss';\nimport PropTypes from 'prop-types';\nimport ErrorLabel from 'components/base/errorLabel/errorLabel';\n\nconst ErrorPage = ({\n error,\n showError\n}) => {\n const { ready, t } = useTranslation();\n\n return (\n <>\n {ready &&\n
    \n

    {t('error.unexpectedError1')}

    \n

    {t('error.unexpectedError2')}

    \n {showError &&\n \n }\n
    \n }\n \n );\n};\n\nErrorPage.propTypes = {\n error: PropTypes.object.isRequired,\n showError: PropTypes.bool.isRequired\n};\n\nexport default ErrorPage;\n","import React, { useRef, useEffect } from 'react';\nimport { Link } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\n\nimport CompanyLogo from 'images/svg/logo-livestock.svg';\nimport CompanyPrintLogo from 'images/svg/logo-livestock-blue.svg';\nimport storeService from 'services/storeService';\nimport classes from 'components/header/banner/banner.module.scss';\nimport Routing from 'routing';\n\nconst useOutsideAlerter = (ref, toggleUserDropdown) => {\n useEffect(() => {\n const handleClickOutside = (event) => {\n if (ref.current && !ref.current.contains(event.target)) {\n toggleUserDropdown(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref]);\n};\n\nconst Banner = ({\n setShowNav,\n showNav\n}) => {\n const { ready, t } = useTranslation();\n\n const wrapperRef = useRef(null);\n\n const username = storeService.cookie.get.username();\n const toggleClassname = classes.toggleNav + ' ' + classes.close;\n\n const [userDropDown, setUserDropDown] = React.useState(false);\n\n const toggleUserDropdown = (state) => {\n if (state !== undefined) {\n setUserDropDown(state);\n } else {\n setUserDropDown(!userDropDown);\n }\n };\n\n useOutsideAlerter(wrapperRef, toggleUserDropdown);\n\n return (\n <>\n {ready &&\n <>\n
    \n \n
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n \n \n \n {username}\n\n {userDropDown &&\n
    \n {/**/}\n {/* {t('label.changePassword')}*/}\n {/**/}\n \n \n {t('label.logout')}\n \n
    \n }\n
    \n
    \n\n {showNav &&\n {\n event.preventDefault();\n setShowNav(false);\n }}\n />\n }\n {!showNav &&\n {\n event.preventDefault();\n setShowNav(true);\n }}\n />\n }\n
    \n
    \n \n \n }\n \n );\n};\n\nBanner.propTypes = {\n setShowNav: PropTypes.func,\n showNav: PropTypes.bool\n};\n\nexport default Banner;\n","import React from 'react';\nimport classes from 'components/base/loading/loading.module.scss';\n\nconst Loading = () => {\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n );\n};\n\nexport default Loading;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ReactComponent as CattleIcon } from 'images/svg/icon-cattle.svg';\nimport { ReactComponent as SheepIcon } from 'images/svg/icon-sheep.svg';\nimport { ReactComponent as GoatIcon } from 'images/svg/icon-goat.svg';\nimport { ReactComponent as PigIcon } from 'images/svg/icon-pig.svg';\nimport { ReactComponent as DeerIcon } from 'images/svg/icon-deer.svg';\nimport classes from 'components/header/holding/holding.module.scss';\nimport constants from 'services/constants';\nimport helpers from 'services/helpers';\nimport PropTypes from 'prop-types';\nimport storeService from 'services/storeService';\nimport Address from 'components/address/address';\nimport Loading from 'components/base/loading/loading';\n\nconst Holding = ({\n setModal,\n setPermission\n}) => {\n const { ready, t } = useTranslation();\n\n const [holding, setHolding] = React.useState(storeService.session.get.holding());\n const [species, setSpecies] = React.useState(storeService.session.get.species());\n\n useEffect(() => {\n const interval = setInterval(() => {\n const sessionHolding = storeService.session.get.holding();\n const sessionSpecies = storeService.session.get.species();\n\n if (sessionHolding && sessionSpecies) {\n clearInterval(interval);\n setHolding(sessionHolding);\n setSpecies(sessionSpecies);\n setPermission(sessionHolding.role);\n }\n }, 500);\n }, [setPermission]);\n\n return (\n <>\n {ready &&\n
    \n
    \n {(!holding || !species) &&\n
    \n }\n\n {holding && species &&\n <>\n
    \n {helpers.species.isCattleId(species.id) &&\n \n }\n {helpers.species.isSheepId(species.id) &&\n \n }\n {helpers.species.isGoatId(species.id) &&\n \n }\n {helpers.species.isPigId(species.id) &&\n \n }\n {helpers.species.isDeerId(species.id) &&\n \n }\n
    \n\n
    \n {t('label.holdingId')}\n {holding.value}\n
    \n
    \n {t('label.holdingPanel')}\n \n
    \n\n
    \n {t('label.species')}\n {species.name}\n
    \n \n }\n
    \n
    \n }\n \n );\n};\n\nHolding.propTypes = {\n setModal: PropTypes.func.isRequired,\n setPermission: PropTypes.func\n};\n\nexport default Holding;\n","import React, { useState } from 'react';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'components/header/navBar/navBar.module.scss';\nimport constants from 'services/constants';\nimport navigation from 'services/navigation';\nimport permissions from 'services/permissions';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport useRoleType from 'services/userRoleType';\n\nconst NavBar = ({\n permission,\n resetErrorBoundaries,\n setShowNav,\n showNav\n}) => {\n const { ready, t } = useTranslation();\n const location = useLocation();\n\n const species = storeService.session.get.species();\n const isGathering = permissions.gatheringRoles.includes(permission);\n\n const menuItems = {\n animalsOnHolding: {\n id: 'animalsOnHolding',\n linkTo: Routing.animals,\n showIf: permission === useRoleType.KEEPER,\n hideIf: location.pathname.includes(Routing.home)\n },\n births: {\n id: 'births',\n linkTo: Routing.births,\n showIf: permission === useRoleType.KEEPER,\n hideIf: location.pathname.includes(Routing.home),\n showForSpecies: [\n constants.species.internalLabel.CATTLE\n ]\n },\n boMovements: {\n id: 'movements',\n linkTo: Routing.boMovements,\n showIf: permission === useRoleType.BACKOFFICE\n },\n changePassword: {\n id: 'changePassword',\n linkTo: Routing.changePassword,\n showIf: true,\n alwaysShow: true\n },\n deaths: {\n id: 'deaths',\n linkTo: Routing.deathsStep1,\n showIf: permission === useRoleType.KEEPER,\n hideIf: location.pathname.includes(Routing.home),\n hideForSpecies: [\n constants.species.internalLabel.PIGS,\n constants.species.internalLabel.DEER\n ],\n activeIf: location.pathname.substring(0, Routing.missingFound.length) === Routing.missingFound\n },\n holdingRegister: {\n id: 'holdingRegister',\n linkTo: Routing.holdingRegisterDetails,\n showIf: permission === useRoleType.KEEPER,\n hideIf: location.pathname.includes(Routing.home),\n activeIf: (\n location.pathname.substring(0, Routing.holdingRegisterDetails.length) === Routing.holdingRegisterDetails ||\n location.pathname.substring(0, Routing.holdingRegisterTaggingReplacement.length) === Routing.holdingRegisterTaggingReplacement ||\n location.pathname.substring(0, Routing.holdingRegisterTaggingApplications.length) === Routing.holdingRegisterTaggingApplications ||\n location.pathname.substring(0, Routing.holdingRegisterMovementsOff.length) === Routing.holdingRegisterMovementsOff ||\n location.pathname.substring(0, Routing.holdingRegisterMovementsOn.length) === Routing.holdingRegisterMovementsOn ||\n location.pathname.substring(0, Routing.holdingRegisterDeaths.length) === Routing.holdingRegisterDeaths ||\n location.pathname.substring(0, Routing.holdingRegisterAnnualInventory.length) === Routing.holdingRegisterAnnualInventory ||\n location.pathname.substring(0, Routing.holdingRegisterBirths.length) === Routing.holdingRegisterBirths ||\n location.pathname.substring(0, Routing.holdingRegisterDownload.length) === Routing.holdingRegisterDownload\n )\n },\n holdingSummary: {\n id: 'holdingSummary',\n linkTo: Routing.keeperHolding,\n showIf: permission === useRoleType.KEEPER,\n hideIf: location.pathname.includes(Routing.home)\n },\n home: {\n id: 'home',\n linkTo: navigation.home(),\n showIf: permission !== useRoleType.BACKOFFICE,\n hideIf: location.pathname.includes(Routing.home)\n },\n logout: {\n id: 'logout',\n linkTo: Routing.logout,\n showIf: true,\n alwaysShow: true\n },\n abattoirAttestation: {\n id: 'abattoirAttestation',\n linkTo: navigation.abattoirAttestation(),\n showIf: permission === useRoleType.ABATTOIR,\n hideIf: location.pathname.includes(Routing.home)\n },\n movements: {\n id: permission === useRoleType.KEEPER ? 'movements' : 'reportMovements',\n linkTo: navigation.movements(),\n showIf: permission !== useRoleType.BACKOFFICE,\n hideIf: location.pathname.includes(Routing.home)\n },\n search: {\n id: 'search',\n linkTo: navigation.getSearchURL(permission),\n showIf: permission !== useRoleType.KEEPER || isGathering,\n hideIf: location.pathname.includes(Routing.home)\n },\n tagging: {\n id: 'tagging',\n linkTo: Routing.taggingApplications,\n showIf: permission === useRoleType.KEEPER,\n hideIf: location.pathname.includes(Routing.home),\n hideForSpecies: [\n constants.species.internalLabel.CATTLE,\n constants.species.internalLabel.PIGS,\n constants.species.internalLabel.DEER\n ],\n activeIf: location.pathname.substring(0, Routing.taggingReplacements.length) === Routing.taggingReplacements\n }\n };\n\n const menuItemsByUserRole = {\n [useRoleType.ABATTOIR]: [\n menuItems.home,\n menuItems.search,\n menuItems.movements,\n menuItems.abattoirAttestation,\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.AICENTRE]: [\n menuItems.home,\n menuItems.movements,\n menuItems.search,\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.ASSEMBLY]: [\n menuItems.home,\n menuItems.movements,\n menuItems.search,\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.COLLECTION]: [\n menuItems.home,\n menuItems.movements,\n menuItems.search,\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.COMMON]: [\n menuItems.home,\n menuItems.movements,\n menuItems.search,\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.GENERIC]: [\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.KEEPER]: [\n menuItems.home,\n menuItems.holdingSummary,\n menuItems.animalsOnHolding,\n menuItems.births,\n menuItems.tagging,\n menuItems.movements,\n menuItems.deaths,\n menuItems.holdingRegister,\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.MARKET]: [\n menuItems.home,\n menuItems.movements,\n menuItems.search,\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.OTHER]: [\n menuItems.home,\n menuItems.movements,\n menuItems.search,\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.PORT]: [\n menuItems.home,\n menuItems.movements,\n menuItems.search,\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.QUARANTINE]: [\n menuItems.home,\n menuItems.movements,\n menuItems.search,\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.SHOW]: [\n menuItems.home,\n menuItems.movements,\n menuItems.search,\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.SLAUGHTERMARKET]: [\n menuItems.home,\n menuItems.movements,\n menuItems.search,\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.STOREMARKET]: [\n menuItems.home,\n menuItems.movements,\n menuItems.search,\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.VET]: [\n menuItems.home,\n menuItems.movements,\n menuItems.search,\n menuItems.changePassword,\n menuItems.logout\n ],\n [useRoleType.RCVSVET]: [\n menuItems.changePassword,\n menuItems.logout\n ]\n };\n\n const [menu, setMenu] = useState(menuItemsByUserRole[permission]);\n\n const menuLabel = (id) => t('menu.' + id);\n\n const checkMenuItemVisibility = (menuItemKey) => {\n if (permission === useRoleType.KEEPER) {\n const currentMenu = menuItemsByUserRole[permission][menuItemKey];\n\n if (currentMenu && !currentMenu.alwaysShow) {\n if (!species) {\n return false;\n } else if (currentMenu.showForSpecies) {\n return currentMenu.showForSpecies.includes(species.name);\n } else if (currentMenu.hideForSpecies) {\n return !currentMenu.hideForSpecies.includes(species.name);\n }\n }\n }\n\n return true;\n };\n\n React.useEffect(() => {\n setMenu(menuItemsByUserRole[permission]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [permission, location.pathname]);\n\n return (\n <>\n {ready &&\n \n }\n \n );\n};\n\nNavBar.propTypes = {\n permission: PropTypes.string.isRequired,\n resetErrorBoundaries: PropTypes.func.isRequired,\n setShowNav: PropTypes.func.isRequired,\n showNav: PropTypes.bool.isRequired\n};\n\nexport default NavBar;\n","import React, { useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport permissions from 'services/permissions';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport Banner from 'components/header/banner/banner';\nimport Holding from 'components/header/holding/holding';\nimport NavBar from 'components/header/navBar/navBar';\n\nconst Header = ({\n permission,\n resetErrorBoundaries,\n setModal,\n setPermission\n}) => {\n const { pathname } = useLocation();\n const isLoggedIn = permissions.isLoggedIn();\n\n const [showNav, setShowNav] = useState(false);\n\n return (\n <>\n {isLoggedIn &&\n \n }\n\n \n\n {permissions.isNonBO() && !permissions.isRCVSVet() && !pathname.includes(Routing.home) &&\n !pathname.includes(Routing.abattoirAttestationDeclaration) && !pathname.includes(Routing.abattoirAttestationDeclarationTags) &&\n \n }\n \n );\n};\n\nHeader.propTypes = {\n permission: PropTypes.string.isRequired,\n resetErrorBoundaries: PropTypes.func.isRequired,\n setModal: PropTypes.func.isRequired,\n setPermission: PropTypes.func.isRequired\n};\n\nexport default Header;\n","import React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport classes from 'backOfficeComponents/header/headerBackOffice.module.scss';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\n\nconst useOutsideAlerter = (ref, toggleUserDropdown) => {\n useEffect(() => {\n const handleClickOutside = (event) => {\n if (ref.current && !ref.current.contains(event.target)) {\n toggleUserDropdown(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref]);\n};\n\nconst HeaderBackOffice = ({\n menuOpen\n}) => {\n const { ready, t } = useTranslation();\n\n const wrapperRef = useRef(null);\n\n const username = storeService.cookie.get.username();\n\n const [userDropDown, setUserDropDown] = React.useState(false);\n\n const toggleUserDropdown = (state) => {\n if (state !== undefined) {\n setUserDropDown(state);\n } else {\n setUserDropDown(!userDropDown);\n }\n };\n\n useOutsideAlerter(wrapperRef, toggleUserDropdown);\n\n return (\n <>\n {ready &&\n
    \n
    \n
    \n
    \n
    \n
    \n \n \n {username}\n\n {userDropDown &&\n
    \n {/**/}\n {/* {t('label.changePassword')}*/}\n {/**/}\n \n \n {t('label.logout')}\n \n
    \n }\n
    \n
    \n
    \n
    \n }\n \n );\n};\n\nHeaderBackOffice.propTypes = {\n menuOpen: PropTypes.bool.isRequired\n};\n\nexport default HeaderBackOffice;\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport classes from 'backOfficeComponents/header/navBar/navBar.module.scss';\nimport PropTypes from 'prop-types';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\n\nconst NavBar = ({\n menuOpen,\n resetErrorBoundaries,\n setMenu\n}) => {\n const { ready, t } = useTranslation();\n\n const menuItems = [\n {\n id: 'movements',\n icon: 'bi bi-arrows-move',\n linkTo: Routing.boMovements\n },\n {\n id: 'search_movements',\n icon: 'bi bi-search',\n linkTo: Routing.boSearchMovements,\n onClick: () => {\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n storeService.session.remove.activeTabId();\n }\n },\n {\n id: 'search_request_id',\n icon: 'bi bi-search',\n linkTo: Routing.boSearchRequestId,\n onClick: () => {\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n }\n },\n {\n id: 'holding_activity',\n icon: 'bi bi-search',\n linkTo: Routing.boHoldingActivity,\n onClick: () => {\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n }\n },\n {\n id: 'user_activity',\n icon: 'bi bi-search',\n linkTo: Routing.boUserActivity,\n onClick: () => {\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n }\n },\n {\n id: 'animal_activity',\n icon: 'bi bi-search',\n linkTo: Routing.boAnimalActivity,\n onClick: () => {\n storeService.session.removeAll.tableFilters();\n storeService.session.removeAll.searchResults();\n }\n },\n {\n id: 'verify_customers',\n icon: 'bi bi-person-check-fill',\n linkTo: Routing.boVerifyCustomer\n },\n {\n id: 'change_password',\n icon: 'bi bi-pencil-fill',\n linkTo: Routing.changePassword\n },\n {\n id: 'logout',\n icon: 'bi bi-power',\n linkTo: Routing.logout\n }\n ];\n\n const toggleMenu = () => {\n setMenu(!menuOpen);\n };\n\n return (\n <>\n {ready &&\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n \n
    \n }\n \n );\n};\n\nNavBar.propTypes = {\n menuOpen: PropTypes.bool,\n resetErrorBoundaries: PropTypes.func,\n setMenu: PropTypes.func\n};\n\nexport default NavBar;\n","import React, { useEffect } from 'react';\nimport { Redirect, Route, useHistory } from 'react-router-dom';\nimport { useErrorBoundary } from 'use-error-boundary';\nimport permissions from 'services/permissions';\nimport PropTypes from 'prop-types';\nimport IdleTimer from 'react-idle-timer';\nimport config from 'config';\nimport Routing from 'routing';\nimport storeService from 'services/storeService';\nimport userRoleType from 'services/userRoleType';\nimport ErrorPage from 'pages/error/error';\nimport Footer from 'components/footer/footer';\nimport Header from 'components/header/header';\nimport HeaderBackOffice from 'backOfficeComponents/header/headerBackOffice';\nimport NavBar from 'backOfficeComponents/header/navBar/navBar';\n\nconst LoginUI = React.lazy(() => import('themeWrappers/loginUI'));\nconst BackOfficeUI = React.lazy(() => import('themeWrappers/backOfficeUI'));\nconst PublicUI = React.lazy(() => import('themeWrappers/publicUI'));\n\nconst ProtectedRoute = ({\n exact,\n loading,\n MountComponent,\n path,\n permission,\n setModal,\n setPermission,\n usersAllowed\n}) => {\n const { didCatch, error, ErrorBoundary, reset } = useErrorBoundary();\n const history = useHistory();\n //Resolved component style issue.\n const isLogin = !permissions.isLoggedIn();\n const isBackOffice = permissions.isBackOffice();\n const idleTimerRef = React.useRef(null);\n\n const [isUserIdle, setIsUserIdle] = React.useState(false);\n const [menuOpen, setMenu] = React.useState(false);\n\n const userActivity = {\n onIdle: () => {\n setIsUserIdle(true);\n storeService.session.set.idle(true);\n history.push(Routing.logout);\n },\n\n onActive: () => {\n setIsUserIdle(false);\n }\n };\n\n const getScreenSize = () => {\n setMenu(window.innerWidth < 576);\n };\n\n useEffect(() => {\n if (isBackOffice) {\n window.addEventListener('load', getScreenSize);\n window.addEventListener('resize', getScreenSize);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (permissions.isUserAllowed(usersAllowed)) {\n return (\n <>\n {!isUserIdle &&\n userActivity.onActive()}\n onIdle={() => userActivity.onIdle()}\n ref={idleTimerRef}\n timeout={config.TIMEOUT}\n />\n }\n }>\n {isLogin && }\n {isBackOffice && }\n {!isLogin && !isBackOffice && }\n \n\n {!isBackOffice &&\n <>\n \n\n
    \n
    \n
    \n (\n <>\n {didCatch\n ? (\n \n )\n : (\n (\n \n )}\n />\n )\n }\n \n )}\n />\n
    \n
    \n
    \n\n {permissions.isLoggedIn() &&