From 21e6759a707d531bc418f22eb61614bfb6c515e1 Mon Sep 17 00:00:00 2001 From: GotPPay Date: Mon, 21 May 2018 17:21:23 +0200 Subject: [PATCH] Show validation errors on eligibility check --- .../Shared/ValidationErrorsInfoDialog.js | 59 +++++++++++++++++++ .../steppers/components/VerticalNonLinear.js | 55 +---------------- .../eligibility/components/eligibility.js | 26 ++++++-- 3 files changed, 81 insertions(+), 59 deletions(-) create mode 100644 src/components/Shared/ValidationErrorsInfoDialog.js diff --git a/src/components/Shared/ValidationErrorsInfoDialog.js b/src/components/Shared/ValidationErrorsInfoDialog.js new file mode 100644 index 0000000..c42fd6f --- /dev/null +++ b/src/components/Shared/ValidationErrorsInfoDialog.js @@ -0,0 +1,59 @@ +import React, { Component } from 'react'; +import Dialog from 'material-ui/Dialog'; +import FlatButton from 'material-ui/FlatButton'; + +export class ValidationErrorsInfoDialog extends React.Component { + + state = { + open: this.props.open, + } + + componentWillReceiveProps(newProps){ + this.setState({open: newProps.open}); + } + + handleOpen = () => { + this.setState({ open: true }); + }; + + handleClose = () => { + this.setState({ open: false }); + this.props.onDismiss(); + }; + + render() { + + const actions = [ + , + ]; + + return ( +
+ + {this.props.errorMessages.map(errorMessage => { + return ( +
+ {errorMessage.message} +
+
+ ); + })} +
+
+ ); + } + } + + module.exports = ValidationErrorsInfoDialog; \ No newline at end of file diff --git a/src/routes/app/routes/forms/routes/steppers/components/VerticalNonLinear.js b/src/routes/app/routes/forms/routes/steppers/components/VerticalNonLinear.js index 480b70d..01c4470 100644 --- a/src/routes/app/routes/forms/routes/steppers/components/VerticalNonLinear.js +++ b/src/routes/app/routes/forms/routes/steppers/components/VerticalNonLinear.js @@ -30,6 +30,7 @@ import Close from 'material-ui/svg-icons/navigation/close' import CommunicationCall from 'material-ui/svg-icons/communication/call' import Message from 'material-ui/svg-icons/communication/message' import Instance from '../../../../../../../components/Connection'; +import ValidationErrorsInfoDialog from '../../../../../../../components/Shared/ValidationErrorsInfoDialog'; import Checkbox from 'material-ui/Checkbox'; import Popover from 'material-ui/Popover'; @@ -41,60 +42,6 @@ const roundingTime = 1000 * 60 * 5; //5 minutes DateTimeFormat = global.Intl.DateTimeFormat; -export class ValidationErrorsInfoDialog extends React.Component { - - state = { - open: this.props.open, - } - - componentWillReceiveProps(newProps){ - this.setState({open: newProps.open}); - } - - handleOpen = () => { - this.setState({ open: true }); - }; - - handleClose = () => { - this.setState({ open: false }); - this.props.onDismiss(); - }; - - render() { - - const actions = [ - , - ]; - - return ( -
- - {this.props.errorMessages.map(errorMessage => { - return ( - - ); - })} - -
- ); - } -} - export class DialogExampleSimple extends React.Component { state = { diff --git a/src/routes/app/routes/pages/routes/eligibility/components/eligibility.js b/src/routes/app/routes/pages/routes/eligibility/components/eligibility.js index f922094..ab0a29e 100644 --- a/src/routes/app/routes/pages/routes/eligibility/components/eligibility.js +++ b/src/routes/app/routes/pages/routes/eligibility/components/eligibility.js @@ -14,6 +14,7 @@ import RaisedButton from 'material-ui/RaisedButton'; import SelectField from 'material-ui/SelectField'; import Checkbox from 'material-ui/Checkbox'; import Instance from '../../../../../../../components/Connection'; +import ValidationErrorsInfoDialog from '../../../../../../../components/Shared/ValidationErrorsInfoDialog'; class SignUp extends React.Component { constructor(props) { @@ -34,7 +35,9 @@ class SignUp extends React.Component { gender: null, agreedTerms: false, validated: false, - memberType:"S" + memberType:"S", + showValidationErrors: false, + validationErrors:[] } componentDidMount = () => { @@ -58,7 +61,10 @@ class SignUp extends React.Component { "member": this.state.member, "email": this.state.email, "phonenumber": this.state.phonenumber, - "birthdate": this.state.birthdate.toISOString() + "birthdate": this.state.birthdate.toISOString(), + "consent" : this.state.agreedTerms, + "type": this.state.memberType + // "eligibility": { // "tracking_id": "1234567", // "payer": { @@ -99,9 +105,14 @@ class SignUp extends React.Component { // alert('NO benefits found for this member'); // } }).catch(function (err) { - console.log('Error to get eligibility: ', err); - alert('NO benefits found for this member'); - this.handleRequestClose(); + if (err.response.status === 422){ + //Unprocessable Entity (validation failed) + state.setState(Object.assign(state.state, {showValidationErrors:true, validationErrors:err.response.data.data})) + }else{ + console.log('Error to get eligibility: ', err); + alert('NO benefits found for this member'); + this.handleRequestClose(); + } }); } @@ -173,10 +184,15 @@ class SignUp extends React.Component { this.setState(Object.assign(this.state, { validated: validated })); } + handleValidationErrosDialogDismiss(){ + this.setState(Object.assign(this.state, {showValidationErrors:false})); + } + render() { return (
+