import Link from "next/link"; import { useRouter } from "next/router"; import useTranslation from "next-translate/useTranslation"; import { currentViewActionTypes, setCurrentReference, } from "../../store/currentView/action"; import { connect } from "react-redux"; import jsonpath from "jsonpath"; import _ from "lodash"; import transLookup from "../../data/lookuptranslations.json"; import { getBasicSearchPaged, getSearchDocumentDetails, getBasicSearchDetailsPaged, getAdvancedSearchPaged, } from "../../actions"; import data from "../../data/collections.json"; import { useState } from "react"; import LoadingOverlay from "react-loading-overlay"; import { setSearchResults, setSearchDetails, } from "../../store/searchOutput/action"; import { useEffect } from "react"; import PaginationControl from "./pagination"; import { getSearchDetailsPaged } from "../utils"; const SearchResults = (props) => { const { searchString, searchResultsObj, searchDetailsObj, setCurrentReference, setSearchResults, setSearchDetails, advancedSearch, } = props; let { t } = useTranslation(); const router = useRouter(); const { locale } = router; var resultsArr = searchResultsObj.value || []; const [showSpinnerState, setShowSpinnerState] = useState(false); let spinnerState = () => { showSpinnerState == true ? setShowSpinnerState(false) : setShowSpinnerState(true); }; const ResultsView = (resultsArr) => { return ( <>
{t("search:searchresults-case-reference-label")}
{t("search:searchresults-site-address-label")}
{t("search:searchresults-applicant-label")}
{t("search:searchresults-authority-label")}
{t("search:searchresults-case-type-label")}
{t("search:searchresults-status-label")}
{resultsArr.map((item, key) => { let detailsObj = jsonpath.query( searchDetailsObj, "$..value[?(@.pinswg_name=='" + item.title + "')]" ); detailsObj = detailsObj[0]; return (
{ setCurrentReference({ "currentReference": item.title, "currentType": "searchResultsObj", "incidentid": item.incidentid, }); }} > {t( "search:searchresults-case-reference-label" )} : {item.title}
{t( "search:searchresults-site-address-label" )} : {_.has( detailsObj, "pinswg_siteaddressline1" ) ? detailsObj.pinswg_siteaddressline1 : ""} {/* {detailsObj.pinswg_siteaddressline1 != null &&
} */} {_.has( detailsObj, "pinswg_siteaddressline1" ) && detailsObj.pinswg_siteaddressline1 != null &&
} {_.has( detailsObj, "pinswg_siteaddressline1" ) ? detailsObj.pinswg_siteaddressline2 : ""} {_.has( detailsObj, "pinswg_siteaddressline2" ) && detailsObj.pinswg_siteaddressline2 != null &&
} {_.has(detailsObj, "pinswg_siteaddresstown") ? detailsObj.pinswg_siteaddresstown : ""} {_.has( detailsObj, "pinswg_siteaddresstown" ) && detailsObj.pinswg_siteaddresstown != null &&
} {_.has( detailsObj, "pinswg_siteaddresscounty" ) ? detailsObj.pinswg_siteaddresscounty : ""} {_.has( detailsObj, "pinswg_siteaddresscounty" ) && detailsObj.pinswg_siteaddresscounty != null &&
} {_.has( detailsObj, "pinswg_siteaddresspostcode" ) ? detailsObj.pinswg_siteaddresspostcode : ""}
{t( "search:searchresults-applicant-label" )} : {_.has(detailsObj, [ "_pinswg_appellant_value@OData.Community.Display.V1.FormattedValue", ]) ? detailsObj[ "_pinswg_appellant_value@OData.Community.Display.V1.FormattedValue" ] : ""}
{t( "search:searchresults-authority-label" )} : {_.has(item, [ "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue", ]) ? router.locale == "cy" ? jsonpath.query( transLookup, '$..[?(@.value=="' + item[ "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue" ] + '")].value_cy' ) : item[ "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue" ] || "N/A" : ""}
{t( "search:searchresults-case-type-label" )} : {router.locale == "cy" ? jsonpath.query( transLookup, '$..[?(@.value=="' + item[ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" ] + '")].value_cy' ) : item[ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" ] || "N/A"}
{t("search:searchresults-status-label")} : {router.locale == "cy" ? jsonpath.query( transLookup, '$..[?(@.value=="' + item[ "statuscode@OData.Community.Display.V1.FormattedValue" ] + '")].value_cy' ) : item[ "statuscode@OData.Community.Display.V1.FormattedValue" ] || "N/A"}
); })}
); }; const pagesCount = Math.ceil(searchResultsObj["@odata.count"] / 10); let currentPage = 0; currentPage = decodeURI(searchResultsObj["@odata.nextLink"]).split( "skiptoken=" )[1]; currentPage = typeof currentPage != "undefined" ? parseInt( decodeURI(currentPage) .split('pagenumber="')[1] .slice( 0, decodeURI(currentPage) .split('pagenumber="')[1] .indexOf('"') ) - 1 ) : pagesCount; const getSearchPageResults = (pageNumber) => { //console.log(advancedSearch, searchString, pageNumber); if (advancedSearch) { var searchoObj = Object.assign( ...searchString.map(([key, val]) => ({ [key]: val })) ); getAdvancedSearchPaged(searchoObj, pageNumber) .then((data) => { //console.log(data); setSearchResults(data); return data; }) .then((data) => { //console.log("getting details", data); return getSearchDetailsPaged(data).then((data) => { setSearchDetails(data); setShowSpinnerState(false); }); }); } else { getBasicSearchPaged(searchString, pageNumber) .then((data) => { //console.log(data); setSearchResults(data); return data; }) .then((data) => { //console.log("getting details", data); return getSearchDetailsPaged(data).then((data) => { setSearchDetails(data); setShowSpinnerState(false); }); }); } }; return ( <>

{t("search:searchresults-title-label")}

{resultsArr.length > 200 ? t("search:searchresults-max-count-label") : t("search:searchresults-count-label", { count: searchResultsObj["@odata.count"], })} . {advancedSearch != true ? ( <> {t("search:searchresults-case-count-label")}{" "} {" "} "{searchString}" ) : ( "" )}

{resultsArr.length > 0 ? ( ResultsView(resultsArr) ) : (

{t("search:searchresults-no-records-label")}

)}
); }; const mapDispatchToProps = (dispatch) => { return { setCurrentReference: (currentReference) => { dispatch(setCurrentReference(currentReference)); }, setSearchResults: (searchResultsObj) => { dispatch(setSearchResults(searchResultsObj)); }, setSearchDetails: (searchDetailsObj) => { dispatch(setSearchDetails(searchDetailsObj)); }, }; }; export default connect(null, mapDispatchToProps)(SearchResults);