adjust advanced search for logged in user

This commit is contained in:
2022-01-27 14:02:46 +00:00
parent cb9bc970b6
commit f5c80bb5e7
7 changed files with 553 additions and 29 deletions
+18 -16
View File
@@ -1,15 +1,17 @@
ACCESS_TOKEN_ENDPOINT = https://login.microsoftonline.com/
TENANT = a8d860de-d5e1-45af-8376-d93f02e6b502
//TENANT = 9ac1a5ab-cd58-409e-a1b6-6b10422a68f5
//ESNR Tenant
//TENANT = a8d860de-d5e1-45af-8376-d93f02e6b502
//WGO Tenant
TENANT = 9ac1a5ab-cd58-409e-a1b6-6b10422a68f5
GRANT_TYPE = "client_credentials"
HASHKEY = 028ffbae928d7191c0017f298260995f901d78eabde1436c0af0423459cc3715832136d84f68818d3a96399467b52143e273d4f3bf4ae190848891535421cd6c
NEXT_PUBLIC_HASHKEY = 028ffbae928d7191c0017f298260995f901d78eabde1436c0af0423459cc3715832136d84f68818d3a96399467b52143e273d4f3bf4ae190848891535421cd6c
//Dev oauth
//Dev oauth ESNR
//CLIENT_ID = e082def0-3453-461f-9a5e-f4ab127dc015
//CLIENT_SECRET = qW.7Q~TSr3sZmLEnJQJPXEdOckb_yo2t1yJmY
//RELAY_ROOT = https://dev-pedw-ns.servicebus.windows.net/dev-pedw-hc/
@@ -17,7 +19,7 @@ NEXT_PUBLIC_HASHKEY = 028ffbae928d7191c0017f298260995f901d78eabde1436c0af0423459
//RELAYPATH = "dev-pedw-hc"
//Test Oauth
//Test Oauth ESNR
CLIENT_ID = 6619ad85-c908-490d-811b-de8c93c0f2aa
CLIENT_SECRET = qKo7Q~5QvLEplbwnBbint_I5lXqx_-kDm8Vj-
RELAY_ROOT = https://test-pedw-ns.servicebus.windows.net/test-pedw-hc/
@@ -25,21 +27,21 @@ RELAYURI = "test-pedw-ns.servicebus.windows.net"
RELAYPATH = "test-pedw-hc"
//Preprod Oauth
//CLIENT_ID = ab6c4678-b31a-4eb3-b429-e039120e488a
//CLIENT_SECRET = Ioo7Q~RJfhWsE45wPsuHm1CzRk1SppnNN3lZF
//RELAY_ROOT = https://pp-pedw-ns.servicebus.windows.net/pp-pedw-hc/
//RELAYURI = "pp-pedw-ns.servicebus.windows.net"
//RELAYPATH = "pp-pedw-hc"
//Preprod Oauth WGO
CLIENT_ID = ab6c4678-b31a-4eb3-b429-e039120e488a
CLIENT_SECRET = Ioo7Q~RJfhWsE45wPsuHm1CzRk1SppnNN3lZF
RELAY_ROOT = https://pp-pedw-ns.servicebus.windows.net/pp-pedw-hc/
RELAYURI = "pp-pedw-ns.servicebus.windows.net"
RELAYPATH = "pp-pedw-hc"
//Prod Oauth
//CLIENT_ID = 01904c07-9035-4cf9-a535-3945f6e470d2
//CLIENT_SECRET = PRo7Q~GQoKSdARRqF-NOXQDx2Ka8UCINyvagk
//RELAY_ROOT = https://prod-pedw-ns.servicebus.windows.net/prod-pedw-hc/
//RELAYURI = "prod-pedw-ns.servicebus.windows.net"
//RELAYPATH = "prod-pedw-hc"
//Prod Oauth WGO
CLIENT_ID = 3e4141a3-1fbd-454e-98f0-7f3a4f14a3cc
CLIENT_SECRET = mJN7Q~lFu.xFGa5KCc.zwIm_fJAWxajyQaFo~
RELAY_ROOT = https://prod-pedw-ns.servicebus.windows.net/prod-pedw-hc/
RELAYURI = "prod-pedw-ns.servicebus.windows.net"
RELAYPATH = "prod-pedw-hc"
GOOGLE_TAG_MANAGER = GTM-T78CBC3
+7 -1
View File
@@ -217,7 +217,13 @@ const CaseSummary = (props) => {
{t("case:summary-description-label")}
</dt>
<dd className="govuk-summary-list__value">
{casesObj.description || "not entered"}
{casesObj.description.indexOf(";") < 0
? casesObj.description
: router.locale == "cy"
? casesObj.description.split(";")[1]
: casesObj.description.split(
";"
)[0]}
</dd>
</div>
)}
+513
View File
@@ -0,0 +1,513 @@
import Link from "next/link";
import { useState } from "react";
import { useRouter } from "next/router";
import useTranslation from "next-translate/useTranslation";
import { reduxForm, formValueSelector, Field } from "redux-form";
import { useDispatch, useSelector, shallowEqual, connect } from "react-redux";
import jsonpath from "jsonpath";
import data from "../../data/collections.json";
import LoadingOverlay from "react-loading-overlay";
import transLookup from "../../data/lookuptranslations.json";
const required = (errorMsg) => (value) =>
value || typeof value === "number" ? undefined : errorMsg;
export const minLength = (errorMsg) => (value) =>
value && value.length < 4
? errorMsg //`Must be ${min} characters or more`
: undefined;
let AdvancedSearch = (props) => {
let { t } = useTranslation();
const router = useRouter();
const { locale } = router;
const { LPAData, onSubmit, handleSubmit } = props;
console.log("props here:", props.props);
const appealOptionsObj = _.isEmpty(props)
? [{}]
: _.isEmpty(props.appealType)
? [{}]
: _.isEmpty(props.appealType.appealTypeOptions)
? [{}]
: _.isEmpty(props.appealType.appealTypeOptions.value)
? [{}]
: props.appealType.appealTypeOptions.value;
let lpaOptionsObj = _.isEmpty(props)
? [{}]
: _.isEmpty(props.LPAData)
? [{}]
: _.isEmpty(props.LPAData.LPAData)
? [{}]
: _.isEmpty(props.LPAData.LPAData)
? [{}]
: props.LPAData.LPAData.value;
const RenderTextfield = ({
id,
className,
rows,
datafieldname,
name,
label,
input,
hint1,
hint2,
hint3,
meta: { touched, error },
...custom
}) => {
return (
<>
<div className="govuk-form-group">
<div id="basicSearch-hint" className="govuk-hint ">
<label className="govuk-label" htmlFor="caseRef">
{t("search:casereference-label")}
</label>
</div>
<div>
<input
{...input}
className={className}
name={name}
id={id}
/>
{touched && error && (
<span
id={id + "-error"}
className="govuk-error-message govuk-form-group--error"
>
<span className="govuk-visually-hidden">
Error:
</span>{" "}
{error}
</span>
)}
</div>
</div>
</>
);
};
const RenderLPAList = ({
name,
id,
input,
optionsObj,
meta: { touched, error },
label,
errormsg,
}) => {
return (
<>
<div
className={
touched && error
? "govuk-form-group govuk-form-group--error"
: "govuk-form-group "
}
>
{" "}
<label className="govuk-label" htmlFor={id}>
{label}
</label>
{touched && error && (
<span
id={id + "-error"}
className="govuk-error-message"
>
<span className="govuk-visually-hidden">
Error:
</span>{" "}
{errormsg}
</span>
)}
<div>
<select
{...input}
className="govuk-select govuk-input--error"
id={id}
name={name}
//onChange={(e) => props.onChangeSelectLPA(e)}
>
<option value="" disabled defaultValue>
{t("common:drop-down-select")}
</option>
{_.isEmpty(optionsObj)
? ""
: Object.keys(optionsObj).map((key, index) => {
return (
<option
key={key}
value={optionsObj[key].accountid}
>
{/* {optionsObj[key].name} */}
{router.locale == "cy"
? jsonpath.query(
transLookup,
'$..[?(@.value=="' +
optionsObj[key]
.name +
'")].value_cy'
)
: optionsObj[key].name ||
t(
"case:summary-no-date-entered-label"
)}
</option>
);
})}
</select>
</div>
</div>
</>
);
};
const RenderAppealTypeList = ({
name,
id,
input,
optionsObj,
meta: { touched, error },
label,
errormsg,
}) => {
return (
<>
<div
className={
touched && error
? "govuk-form-group govuk-form-group--error"
: "govuk-form-group "
}
>
<label className="govuk-label" htmlFor={id}>
{label}
{name}
</label>
{touched && error && (
<span
id="passport-issued-error"
className="govuk-error-message"
>
<span className="govuk-visually-hidden">
Error:
</span>{" "}
{errormsg}
</span>
)}
<div>
<select
{...input}
className="govuk-select"
id={id}
name={name}
//onChange={(e) => props.onChangeSelectAppealType(e)}
>
<option value="" disabled defaultValue>
{t("common:drop-down-select")}
</option>
{_.isEmpty(optionsObj)
? ""
: Object.keys(optionsObj).map((key, index) => {
return (
<option
key={key}
value={
_.isEmpty(optionsObj[key])
? ""
: _.isEmpty(
optionsObj[key]
)
? ""
: _.isEmpty(
optionsObj[key]
.value
)
? ""
: optionsObj[key]
.attributevalue +
"," +
optionsObj[key].value
.replace(
/(\band|[\s\-\+\(\)\,\&])/g,
""
)
.toLowerCase()
}
>
{_.isEmpty(optionsObj[key])
? ""
: _.isEmpty(optionsObj[key])
? ""
: _.isEmpty(
optionsObj[key].value
)
? ""
: router.locale == "cy"
? jsonpath.query(
transLookup,
'$..[?(@.value=="' +
optionsObj[key]
.value +
'")].value_cy'
)
: optionsObj[key].value ||
t(
"case:summary-no-date-entered-label"
)}
</option>
);
})}
</select>
</div>
</div>
</>
);
};
// const [showSpinnerState, setShowSpinnerState] = useState(false);
// let spinnerState = () => {
// showSpinnerState == true
// ? setShowSpinnerState(false)
// : setShowSpinnerState(true);
// };
const onHandleSubmit = (values) => {
event.preventDefault();
//spinnerState();
var searchString = "";
searchString +=
values.caseRef != null ? "?q=" + values.caseRef.trim() : "";
searchString +=
values.lpaTypes != null
? (typeof values.caseRef == "undefined" ? "?" : "&") +
"lpa=" +
values.lpaTypes
: "";
searchString +=
values.appealTypes != null
? (typeof values.caseRef == "undefined" &&
typeof values.lpaTypes == "undefined"
? "?"
: "&") +
("apt=" + values.appealTypes.split(",")[0])
: "";
router.replace(
(router.locale == "cy"
? "/fymhorth/canlyniadauchwiliouwch"
: "/myportal/advancedsearchresults") + searchString,
null,
{
shallow: true,
}
);
};
return (
<>
<div>
<form onSubmit={handleSubmit(onHandleSubmit)}>
<div className="govuk-grid-row">
<div className="govuk-grid-column-full">
<div className="card" id="searchforcase-card">
<div className="card-body">
<div className="govuk-body-m ">
<legend className="govuk-fieldset__legend govuk-fieldset__legend--l">
<h1 className="govuk-fieldset__heading govuk-heading-m">
{t("search:search-title-label")}
</h1>
</legend>
<Field
validate={[
minLength(
t(
"myportal:searchcases-validation-minlength"
)
),
]}
className="govuk-input govuk-!-width-two-thirds"
component={RenderTextfield}
id="caseRef"
name="caseRef"
type="text"
aria-describedby="caseRef-hint"
hint1={t(
"myportal:searchcases-card-search-hint"
)}
hint2={t(
"myportal:searchcases-card-search-example-label-1"
)}
hint3={t(
"myportal:searchcases-card-search-example-label-2"
)}
/>
<Field
name="appealTypes"
id="appealTypes"
component={RenderAppealTypeList}
optionsObj={appealOptionsObj}
// validate={[required]}
label={t("search:appealtype-label")}
errormsg="Appeal type is required"
/>
<Field
name="lpaTypes"
id="lpaTypes"
component={RenderLPAList}
optionsObj={lpaOptionsObj}
//validate={[required]}
label={t("search:lpa-label")}
errormsg="Local authority is required"
/>
{/* <fieldset className="govuk-fieldset">
<legend className="govuk-fieldset__legend govuk-fieldset__legend--l">
<h3 className="govuk-heading-m">
{t(
"search:sitelocation-legend"
)}
</h3>
</legend>
<div className="govuk-form-group">
<label
className="govuk-label"
htmlFor="address-line-1"
>
{t(
"search:address-line-one-label"
)}
</label>
<input
className="govuk-input"
id="address-line-1"
name="address-line-1"
type="text"
autoComplete="address-line1"
onChange={handleParam(
setQuery
)}
/>
</div>
<div className="govuk-form-group">
<label
className="govuk-label"
htmlFor="address-town"
>
{t("search:town-label")}
</label>
<input
className="govuk-input govuk-!-width-two-thirds"
id="address-town"
name="address-town"
type="text"
autoComplete="address-level2"
/>
</div>
<div className="govuk-form-group">
<label
className="govuk-label"
htmlFor="address-county"
>
{t("search:county-label")}
</label>
<input
className="govuk-input govuk-!-width-two-thirds"
id="address-county"
name="address-county"
type="text"
/>
</div>
<div className="govuk-form-group">
<label
className="govuk-label"
htmlFor="address-postcode"
>
{t("search:postcode-label")}
</label>
<input
className="govuk-input govuk-input--width-10"
id="address-postcode"
name="address-postcode"
type="text"
autoComplete="postal-code"
/>
</div>
</fieldset>
*/}
</div>
</div>
</div>
</div>
</div>
<div className="govuk-grid-row">
<div className="govuk-grid-column-full">
<div className="govuk-form-group">
<button
type="submit"
name="search"
className="govuk-button"
>
{t("common:search-button")}
</button>
</div>
</div>
</div>
</form>
</div>
{/* <LoadingOverlay
active={showSpinnerState}
spinner
text={t("common:spinner-searching")}
/> */}
</>
);
};
const mapStateToProps = (state) => {
return {
currentView: state.currentView,
search: state.search,
searchResultsObj: state.searchResultsObj,
formData: state.formData,
appealType: state.appealType,
LPAData: state.LPAData,
//form: state.form,
myCases: state.myCases,
watchedCases: state.watchedCases,
myRepresentations: state.myRepresentations,
awaitingSubmission: state.awaitingSubmission,
};
};
const mapDispatchToProps = (dispatch) => {
return {};
};
const selector = formValueSelector("advancedSearchForm"); // <-- same as form name
export default connect(
mapStateToProps,
mapDispatchToProps
)(
reduxForm({
form: "advancedSearchForm",
destroyOnUnmount: false,
})(AdvancedSearch)
);
+3 -2
View File
@@ -5,11 +5,12 @@ import useTranslation from "next-translate/useTranslation";
import SearchForCase from "./search/searchforcase";
import AdvancedSearch from "./search/advancedsearch";
export default function Search({ children, pages }) {
export default function Search(props) {
let { t } = useTranslation();
const router = useRouter();
const { locale } = router;
console.log("props here:", props.myportal || false);
return (
<main
@@ -17,7 +18,7 @@ export default function Search({ children, pages }) {
id="main-content"
role="main"
>
<AdvancedSearch />
<AdvancedSearch myportal={props.myportal || false} />
</main>
);
}
+8 -8
View File
@@ -23,7 +23,7 @@ let AdvancedSearch = (props) => {
const router = useRouter();
const { locale } = router;
const { LPAData, onSubmit, handleSubmit } = props;
const { LPAData, onSubmit, handleSubmit, myportal } = props;
const appealOptionsObj = _.isEmpty(props)
? [{}]
@@ -304,13 +304,13 @@ let AdvancedSearch = (props) => {
: "";
router.replace(
(router.locale == "cy"
? "/fymhorth/canlyniadauchwiliouwch"
: "/myportal/advancedsearchresults") + searchString,
null,
{
shallow: true,
}
router.locale == "cy"
? (myportal == true ? "/fymhorth" : "") +
"/canlyniadauchwiliouwch" +
searchString
: (myportal == true ? "/myportal" : "") +
"/advancedsearchresults" +
searchString
);
};
+3 -2
View File
@@ -13,8 +13,9 @@ module.exports = {
"/": ["common", "home"],
"/myportal": ["myportal"],
"/myportal/viewall": ["search"],
"/myportal/advancedsearch": ["search"],
"/myportal/searchresults": ["search"],
"/myportal/advancedsearch": ["search", "myportal"],
"/myportal/advancedsearchresults": ["search", "myportal"],
"/myportal/searchresults": ["search", "myportal"],
"/myportal/case": ["case"],
"/advancedsearch": ["search", "myportal"],
"/advancedsearchresults": ["search"],
+1
View File
@@ -49,6 +49,7 @@ const Home = (props) => {
<Search
lpadata={props.LPAData}
appealType={props.appealType}
myportal={true}
/>
)}
</div>