Compare commits
3 Commits
self-regis
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d4bd965365 | ||
|
|
bf3f372ab4 | ||
|
|
182cde9fbb |
812
package-lock.json
generated
812
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -33,8 +33,8 @@ const isFunction = (functionToCheck) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const requireAuth = (nextState, replace, next) => {
|
const requireAuth = (nextState, replace, next) => {
|
||||||
if (nextState.location.pathname === '/login' || nextState.location.pathname === '/sign-up' || nextState.location.pathname === '/selfRegister' || (nextState.location.pathname.indexOf('/ride') > -1 && nextState.params.ride_uuid !== undefined && nextState.params.user_uuid !== undefined)
|
if (nextState.location.pathname === '/login' || nextState.location.pathname === '/sign-up' || nextState.location.pathname.toLowerCase() === '/selfregister' || (nextState.location.pathname.indexOf('/ride') > -1 && nextState.params.ride_uuid !== undefined && nextState.params.user_uuid !== undefined)
|
||||||
|| (!isFunction(replace) && (replace.location.pathname === '/login' || replace.location.pathname === '/sign-up' || nextState.location.pathname === '/selfRegister' || (replace.location.pathname.indexOf('/ride') > -1 && replace.params.ride_uuid !== undefined && replace.params.user_uuid !== undefined)))) {
|
|| (!isFunction(replace) && (replace.location.pathname === '/login' || replace.location.pathname === '/sign-up' || nextState.location.pathname.toLowerCase() === '/selfRegister' || (replace.location.pathname.indexOf('/ride') > -1 && replace.params.ride_uuid !== undefined && replace.params.user_uuid !== undefined)))) {
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import FlatButton from 'material-ui/FlatButton';
|
import FlatButton from 'material-ui/FlatButton';
|
||||||
|
import MaterialDialog from 'material-ui/Dialog';
|
||||||
import Dialog from './draggable-dialog';
|
import Dialog from './draggable-dialog';
|
||||||
|
|
||||||
import './draggable-dialog/css/index.css';
|
import './draggable-dialog/css/index.css';
|
||||||
@@ -45,30 +46,49 @@ export class ValidationErrorsInfoDialog extends React.Component {
|
|||||||
/>,
|
/>,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const dialogContent = (
|
||||||
|
this.props.errorMessages.map(errorMessage => {
|
||||||
|
const oneValidationMessage = (<span><a>{errorMessage.message}</a><br /></span>);
|
||||||
|
const oneValidationMessageWithTab = (<span><li style={{ marginLeft: 2 + "em" }}>{errorMessage.message}</li></span>);
|
||||||
|
|
||||||
|
if (errorMessage.field_name === "password-tab") {
|
||||||
|
return oneValidationMessageWithTab;
|
||||||
|
} else {
|
||||||
|
return oneValidationMessage;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
const draggableDialog =
|
||||||
|
(<Dialog
|
||||||
|
title={this.props.title ? this.props.title : 'Error'}
|
||||||
|
isDraggable={true}
|
||||||
|
buttons={actions}
|
||||||
|
hasCloseIcon={false}
|
||||||
|
modal={this.props.modal ? this.props.modal : false}
|
||||||
|
height={defaultDialogHeight + this.props.errorMessages.length * dialogHeightPerLine}>
|
||||||
|
|
||||||
|
{dialogContent}
|
||||||
|
|
||||||
|
</Dialog>
|
||||||
|
)
|
||||||
|
|
||||||
|
const normalDialog =
|
||||||
|
(<MaterialDialog
|
||||||
|
open={this.state.open}
|
||||||
|
title={this.props.title ? this.props.title : 'Error'}
|
||||||
|
onBackdropClick={()=>{console.log("Backdrop")}}
|
||||||
|
actions={actions}>
|
||||||
|
|
||||||
|
{dialogContent}
|
||||||
|
|
||||||
|
</MaterialDialog>
|
||||||
|
)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="container">
|
<div className="container">
|
||||||
{
|
{this.state.open && this.props.draggable && draggableDialog }
|
||||||
this.state.open &&
|
{this.state.open && !this.props.draggable && normalDialog}
|
||||||
<Dialog
|
|
||||||
title={this.props.title ? this.props.title : 'Error'}
|
|
||||||
isDraggable={this.props.draggable ? this.props.draggable : false}
|
|
||||||
buttons={actions}
|
|
||||||
hasCloseIcon={false}
|
|
||||||
modal={this.props.modal ? this.props.modal : false}
|
|
||||||
height={defaultDialogHeight + this.props.errorMessages.length * dialogHeightPerLine}
|
|
||||||
>
|
|
||||||
{this.props.errorMessages.map(errorMessage => {
|
|
||||||
const oneValidationMessage = (<span><a>{errorMessage.message}</a><br /></span>);
|
|
||||||
const oneValidationMessageWithTab = (<span><li style={{ marginLeft: 2 + "em" }}>{errorMessage.message}</li></span>);
|
|
||||||
|
|
||||||
if (errorMessage.field_name === "password-tab") {
|
|
||||||
return oneValidationMessageWithTab;
|
|
||||||
} else {
|
|
||||||
return oneValidationMessage;
|
|
||||||
}
|
|
||||||
})}
|
|
||||||
</Dialog>
|
|
||||||
}
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -664,22 +664,7 @@ class VerticalNonLinear extends React.Component {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
const eligibility = {
|
const eligibility = {
|
||||||
"provider": {
|
"raw_provider": self.state.destination.raw,
|
||||||
"provider_npi": self.state.destination.raw.fivePartKeyGroups[0].providerNum,
|
|
||||||
"provider_name": self.state.destination.raw.providerName
|
|
||||||
},
|
|
||||||
"subscriber": {
|
|
||||||
"patient_type": self.state.user.type,
|
|
||||||
"subscriber_id": self.state.user.member,
|
|
||||||
"name": {
|
|
||||||
"first": self.state.user.first,
|
|
||||||
"last": self.state.user.last
|
|
||||||
},
|
|
||||||
"demographic_info": {
|
|
||||||
"date_of_birth": self.state.user.birthdate,
|
|
||||||
"gender": self.state.user.gender
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"user": {
|
"user": {
|
||||||
"name": `${self.state.user.first} ${self.state.user.last}`,
|
"name": `${self.state.user.first} ${self.state.user.last}`,
|
||||||
"first": self.state.user.first,
|
"first": self.state.user.first,
|
||||||
@@ -694,13 +679,12 @@ class VerticalNonLinear extends React.Component {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
if(self.state.user.phonenumber && self.state.user.phonenumber.length > 0) {
|
if (self.state.user.phonenumber && self.state.user.phonenumber.length > 0) {
|
||||||
eligibility.user.phonenumber = eligibility.user.phonenumber.replace('(','').replace(')','').replace('-','').replace(' ','').trim()
|
eligibility.user.phonenumber = eligibility.user.phonenumber.replace('(', '').replace(')', '').replace('-', '').replace(' ', '').trim()
|
||||||
}
|
}
|
||||||
|
|
||||||
Instance.getRawConn().post('/v1/nemt/eligibility', eligibility).then(function (res) {
|
Instance.getRawConn().post('/v1/nemt/eligibility', eligibility).then(function (res) {
|
||||||
res.data.agreedTerms = true;
|
self.setState(Object.assign(self.state, { stepIndex: stepIndex + 1, message: '', open: false }));
|
||||||
self.setState(Object.assign(self.state, { stepIndex: stepIndex + 1, user: res.data, message: '', open: false }));
|
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
|
|
||||||
self.setState(Object.assign(self.state, {
|
self.setState(Object.assign(self.state, {
|
||||||
@@ -727,6 +711,12 @@ class VerticalNonLinear extends React.Component {
|
|||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
self.handleTouchTap();
|
self.handleTouchTap();
|
||||||
|
|
||||||
|
self.setState(Object.assign(self.state, {
|
||||||
|
message: 'Adding Visit',
|
||||||
|
open: true,
|
||||||
|
}));
|
||||||
|
|
||||||
const visit = {
|
const visit = {
|
||||||
"user": {
|
"user": {
|
||||||
"name": `${self.state.user.first} ${self.state.user.last}`,
|
"name": `${self.state.user.first} ${self.state.user.last}`,
|
||||||
@@ -746,29 +736,34 @@ class VerticalNonLinear extends React.Component {
|
|||||||
"raw_provider": self.state.destination.raw
|
"raw_provider": self.state.destination.raw
|
||||||
};
|
};
|
||||||
|
|
||||||
if(self.state.user.phonenumber && self.state.user.phonenumber.length > 0) {
|
if (self.state.user.phonenumber && self.state.user.phonenumber.length > 0) {
|
||||||
visit.user.phonenumber = visit.user.phonenumber.replace('(','').replace(')','').replace('-','').replace(' ','').trim()
|
visit.user.phonenumber = visit.user.phonenumber.replace('(', '').replace(')', '').replace('-', '').replace(' ', '').trim()
|
||||||
}
|
}
|
||||||
|
|
||||||
Instance.getRawConn().post('/v1/nemt/visits/', visit).then(function (res) {
|
Instance.getRawConn().post('/v1/nemt/visits/', visit).then(function (res) {
|
||||||
|
self.setState(Object.assign(self.state, {
|
||||||
|
message: '',
|
||||||
|
open: false,
|
||||||
|
}));
|
||||||
|
|
||||||
const returnMessage = [
|
const returnMessage = [
|
||||||
{
|
{
|
||||||
message: `Member: ${res.data.user.name} (${res.data.user.member})`
|
message: `Member: ${visit.user.name} (${visit.user.member})`
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
message: `Gender: ${res.data.user.gender}`
|
message: `Gender: ${visit.user.gender}`
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
message: `Birth date: ${visit.user.type}`
|
message: `Birth date: ${visit.user.type}`
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
message: `Member Type: ${res.data.user.birthdate}`
|
message: `Member Type: ${visit.user.birthdate}`
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
message: `Provider: ${res.data.provider.name}`
|
message: `Provider: ${visit.raw_provider.providerName}`
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
message: `Date: ${res.data.visit_datetime}`
|
message: `Date: ${visit.visit_datetime}`
|
||||||
}]
|
}]
|
||||||
|
|
||||||
self.setState(Object.assign(self.state, {
|
self.setState(Object.assign(self.state, {
|
||||||
@@ -1281,7 +1276,7 @@ class VerticalNonLinear extends React.Component {
|
|||||||
<div className="box-body padding-xs">
|
<div className="box-body padding-xs">
|
||||||
|
|
||||||
<div style={{ maxWidth: 380, margin: 'auto' }}>
|
<div style={{ maxWidth: 380, margin: 'auto' }}>
|
||||||
<ValidationErrorsInfoDialog open={this.state.showValidationErrors} errorMessages={this.state.validationErrors} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)} />
|
<ValidationErrorsInfoDialog open={this.state.showValidationErrors} draggable={true} errorMessages={this.state.validationErrors} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)} />
|
||||||
<Stepper
|
<Stepper
|
||||||
activeStep={this.state.stepIndex}
|
activeStep={this.state.stepIndex}
|
||||||
linear={false}
|
linear={false}
|
||||||
|
|||||||
@@ -830,7 +830,7 @@ class VerticalNonLinear extends React.Component {
|
|||||||
<div className="box-body padding-xs">
|
<div className="box-body padding-xs">
|
||||||
|
|
||||||
<div style={{ maxWidth: 380, margin: 'auto' }}>
|
<div style={{ maxWidth: 380, margin: 'auto' }}>
|
||||||
<ValidationErrorsInfoDialog open={this.state.showValidationErrors} errorMessages={this.state.validationErrors} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)} />
|
<ValidationErrorsInfoDialog open={this.state.showValidationErrors} draggable={true} errorMessages={this.state.validationErrors} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)} />
|
||||||
|
|
||||||
<Stepper
|
<Stepper
|
||||||
activeStep={this.state.stepIndex}
|
activeStep={this.state.stepIndex}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -108,7 +108,8 @@ class DatatableComponent extends React.Component {
|
|||||||
},
|
},
|
||||||
columnDefs: [
|
columnDefs: [
|
||||||
{ targets: [-1, -3], className: 'dt-body-right mdl-data-table__cell--non-numeric' }
|
{ targets: [-1, -3], className: 'dt-body-right mdl-data-table__cell--non-numeric' }
|
||||||
]
|
],
|
||||||
|
order: [[0, 'desc']]
|
||||||
});
|
});
|
||||||
state.decorateButtons();
|
state.decorateButtons();
|
||||||
state.decorateSelect();
|
state.decorateSelect();
|
||||||
|
|||||||
@@ -61,15 +61,28 @@ class SignUp extends React.Component {
|
|||||||
|
|
||||||
componentDidMount = () => { }
|
componentDidMount = () => { }
|
||||||
|
|
||||||
|
getFormattedPhoneNumber(){
|
||||||
|
if(this.state.phone_number && this.state.phone_number.length > 0) {
|
||||||
|
return this.state.phone_number.replace('+1','').replace('(','').replace(')','').replace('-','').replace(' ','').trim()
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
isPhoneNumberFormatValid() {
|
||||||
|
let formattedNumber = this.getFormattedPhoneNumber();
|
||||||
|
return !isNaN(formattedNumber) && (formattedNumber.toString().length === 10);
|
||||||
|
}
|
||||||
|
|
||||||
buttonValidated = () => {
|
buttonValidated = () => {
|
||||||
let validated = true;
|
let validated = true;
|
||||||
if (!this.state.provider_name || this.state.provider_name === null || this.state.provider_name === "") validated = false;
|
if (!this.state.provider_name || this.state.provider_name === null || this.state.provider_name === "") validated = false;
|
||||||
if (!this.state.provider_npi || this.state.provider_npi === null || this.state.provider_npi === "") validated = false;
|
if (!this.state.provider_npi || this.state.provider_npi === null || this.state.provider_npi === "") validated = false;
|
||||||
if (!this.state.email || this.state.email === null || this.state.email === "") validated = false;
|
if (!this.state.email || this.state.email === null || this.state.email === "") validated = false;
|
||||||
if (!this.state.phone_number || this.state.phone_number === null || this.state.phone_number === "") validated = false;
|
if (!this.state.phone_number || this.state.phone_number === null || this.state.phone_number === "" || !this.isPhoneNumberFormatValid()) validated = false;
|
||||||
if (!this.state.first || this.state.first === null || this.state.first === "") validated = false;
|
if (!this.state.first || this.state.first === null || this.state.first === "") validated = false;
|
||||||
if (!this.state.last || this.state.last === null || this.state.last === "") validated = false;
|
if (!this.state.last || this.state.last === null || this.state.last === "") validated = false;
|
||||||
if (!this.state.password_validated || !this.state.pass || this.state.pass === null || this.state.pass === "") validated = false;
|
if (!this.state.pass || this.state.pass === null || this.state.pass === "") validated = false;
|
||||||
|
if (!this.state.passConfirmation || this.state.passConfirmation === null || this.state.passConfirmation === "") validated = false;
|
||||||
if (!this.state.agreedTerms) validated = false;
|
if (!this.state.agreedTerms) validated = false;
|
||||||
this.setState(Object.assign(this.state, { validated: validated }));
|
this.setState(Object.assign(this.state, { validated: validated }));
|
||||||
}
|
}
|
||||||
@@ -106,12 +119,10 @@ class SignUp extends React.Component {
|
|||||||
|
|
||||||
handlePass = (event) => {
|
handlePass = (event) => {
|
||||||
this.setState(Object.assign(this.state, { pass: btoa(event.target.value) }));
|
this.setState(Object.assign(this.state, { pass: btoa(event.target.value) }));
|
||||||
this.setState(Object.assign(this.state, { password_validated: this.state.pass === this.state.passConfirmation }));
|
|
||||||
};
|
};
|
||||||
|
|
||||||
handleConfirmationPass = (event) => {
|
handleConfirmationPass = (event) => {
|
||||||
this.setState(Object.assign(this.state, { passConfirmation: btoa(event.target.value) }));
|
this.setState(Object.assign(this.state, { passConfirmation: btoa(event.target.value) }));
|
||||||
this.setState(Object.assign(this.state, { password_validated: this.state.pass === this.state.passConfirmation }));
|
|
||||||
};
|
};
|
||||||
|
|
||||||
handleChecked = (event, checked) => {
|
handleChecked = (event, checked) => {
|
||||||
@@ -121,6 +132,17 @@ class SignUp extends React.Component {
|
|||||||
|
|
||||||
clickEvent = (event) => {
|
clickEvent = (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
|
if (this.state.passConfirmation !== this.state.pass){
|
||||||
|
this.setState(Object.assign(this.state, {
|
||||||
|
showValidationErrors: true,
|
||||||
|
validationErrors: [{message:'Confirmed password does not match password'}]
|
||||||
|
}));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const state = this;
|
const state = this;
|
||||||
|
|
||||||
let user = {
|
let user = {
|
||||||
@@ -141,16 +163,20 @@ class SignUp extends React.Component {
|
|||||||
localStorage.removeItem('loggedUser');
|
localStorage.removeItem('loggedUser');
|
||||||
location.href = '/#/login';
|
location.href = '/#/login';
|
||||||
}).catch(function (err) {
|
}).catch(function (err) {
|
||||||
if (err.response.status === 422) {
|
switch(err.response.status){
|
||||||
//Unprocessable Entity (validation failed)
|
case 422:
|
||||||
state.setState(Object.assign(state.state, {
|
//Unprocessable Entity (validation failed)
|
||||||
showValidationErrors: true,
|
state.setState(Object.assign(state.state, {
|
||||||
validationErrors: err.response.data.data
|
showValidationErrors: true,
|
||||||
}));
|
validationErrors: err.response.data.data
|
||||||
} else {
|
}));
|
||||||
alert('Error to log in: ' + err.message);
|
break;
|
||||||
|
default:
|
||||||
|
state.setState(Object.assign(state.state, {
|
||||||
|
showValidationErrors: true,
|
||||||
|
validationErrors: [{message:"Error processing your request"}]
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
console.error(err);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user