// components/admin/tabs/AppealsTab.js import useTranslation from "next-translate/useTranslation"; import { useCallback, useState, useEffect } from "react"; import { JSONPath as jsonpath } from "jsonpath-plus"; import Link from "next/link"; import { useRouter } from "next/router"; import PaginationControl from "../../../components/search/pagination"; import { connect } from "react-redux"; import { setSearchResults, setSearchDetails, } from "../../../store/searchOutput/action"; import { getDetailsProxy, getSearchDetailsPaged } from "../../utils"; import { getAdvancedSearchPaged, getNewAppealsPage } from "../../../actions"; import { setCurrentPage, setCurrentReference, } from "../../../store/currentView/action"; function AppealsTab(props) { const [searchLoaded, setSearchLoaded] = useState(false); const [showSpinnerState, setShowSpinnerState] = useState(false); const [selectedOption, setSelectedOption] = useState(10); const [orderByState, setOrderbyState] = useState("createdon"); const [fieldSortState, setfieldSortState] = useState("desc"); const [loginToWatch, setLoginToWatch] = useState("true"); const searchDetailsObj = props.searchResultsObj.searchDetailsObj || {}; const resultsArr = props.searchResultsObj.searchResultsObj.value || []; const searchResultsObj = props.searchResultsObj.searchResultsObj; const { t } = useTranslation(); const router = useRouter(); const myportal = false; const advancedSearch = false; const searchString = ""; const spinnerState = () => { setShowSpinnerState((prev) => !prev); }; const pagesCount = Math.ceil(searchResultsObj["@odata.count"] / 10); let currentPage = 0; try { 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; } catch (e) { currentPage = pagesCount; } const getSearchPageResults = useCallback( (pageNumber, orderBy, fieldSort) => { getNewAppealsPage( searchString, pageNumber, orderBy, fieldSort, selectedOption ).then((data) => { props.setSearchResults(data); // ✅ use props, not import return getSearchDetailsPaged(data).then((details) => { props.setSearchDetails(details); // ✅ use props, not import setShowSpinnerState(false); }); }); }, [ advancedSearch, searchString, selectedOption, props.setSearchDetails, props.setSearchResults, ] ); useEffect(() => { if (searchLoaded) { if (selectedOption) { setShowSpinnerState(true); getSearchPageResults(1, orderByState, fieldSortState); } } else { setSearchLoaded(true); } }, [ selectedOption, fieldSortState, orderByState, searchLoaded, getSearchPageResults, router.query, ]); const ResultsView = (resultsArr) => { return ( <>
{t("search:searchresults-site-address-label")}
{/* {t("search:searchresults-status-label")} */}
Origin
{showSpinnerState == true ? (
{t("common:spinner-fetching-data")} {
) : ( resultsArr.map((item, key) => { let detailsObj = jsonpath({ path: '$..value[?(@ && @.ticketnumber=="' + item.ticketnumber + '")]', json: searchDetailsObj, eval: true, }); detailsObj = detailsObj[0] || {}; return (
{item.pinswg_publishtoweb == true ? ( { setCurrentReference({ "ticketnumber": item.ticketnumber, "currentReference": item.title, "currentType": "searchResultsObj", "incidentid": item.incidentid, "appealType": item.pinswg_appealcasetype, "showLoginCheck": props.showLoginCheck, "specialistProcess": detailsObj.hasOwnProperty( "pinswg_speacialistcaseprocess" ) ? detailsObj.pinswg_speacialistcaseprocess : detailsObj.hasOwnProperty( "pinswg_specialistcaseprocess" ) ? detailsObj.pinswg_specialistcaseprocess : "", }); }} > {t( "search:searchresults-case-reference-label" )} : {item.title} ) : ( item.title )}
{new Date( item.createdon ).toLocaleString()}
{t( "search:searchresults-site-address-label" )} : {_.has( detailsObj, "pinswg_projectlocation" ) ? detailsObj.pinswg_projectlocation != null ? detailsObj.pinswg_projectlocation.indexOf( ";" ) < 0 ? detailsObj.pinswg_projectlocation : router.locale == "cy" ? detailsObj.pinswg_projectlocation.split( ";" )[1] : detailsObj.pinswg_projectlocation.split( ";" )[0] : "" : ""} {_.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" )} : {item.pinswg_appellantagent == 846040001 ? item.pinswg_appellantfirstname + " " + item.pinswg_appellantlastname : _.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({ path: '$..[?(@ && @.value=="' + item[ "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue" ] + '")].value_cy', json: transLookup, eval: true, }) : item[ "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue" ] || "N/A" : ""}
{t( "search:searchresults-case-type-label" )} : {router.locale == "cy" ? jsonpath({ path: '$..[?(@ && @.value=="' + item[ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" ] + '")].value_cy', json: transLookup, eval: true, }) : item[ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" ] || "N/A"}
{t( "search:searchresults-status-label" )} : {router.locale == "cy" ? jsonpath({ path: '$..[?(@ && @.value=="' + item[ "statuscode@OData.Community.Display.V1.FormattedValue" ] + '")].value_cy', json: transLookup, eval: true, }) : item[ "statuscode@OData.Community.Display.V1.FormattedValue" ] || "N/A"}
{item[ "caseorigincode@OData.Community.Display.V1.FormattedValue" ] || "N/A"}
); }) )}
); }; return (

Appeals

{searchResultsObj["@odata.count"] > 5 && (
)} {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)); }, setCurrentPage: (currentPage) => { dispatch(setCurrentPage(currentPage)); }, }; }; const mapStateToProps = (state) => { return { searchResultsObj: state.searchResultsObj, }; }; export default connect(mapStateToProps, mapDispatchToProps)(AppealsTab);