Compare commits
6 Commits
master
...
make-error
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ec447fb376 | ||
|
|
330a59edc7 | ||
|
|
4ae32afae6 | ||
|
|
0ec2b0cbe4 | ||
|
|
b06a6f3488 | ||
|
|
5202f91954 |
863
package-lock.json
generated
863
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -66,7 +66,6 @@
|
||||
"react-helmet": "^5.1.3",
|
||||
"react-hot-loader": "^3.0.0-beta.6",
|
||||
"react-imgix": "^7.1.1",
|
||||
"react-input-mask": "^2.0.1",
|
||||
"react-jquery-datatables": "^0.7.1",
|
||||
"react-materialui-notifications": "^0.5.1",
|
||||
"react-onclickoutside": "^5.10.0",
|
||||
|
||||
@@ -8,10 +8,6 @@ import { Router, hashHistory, browserHistory } from 'react-router';
|
||||
import { syncHistoryWithStore, routerMiddleware } from 'react-router-redux';
|
||||
import reducers from './reducers';
|
||||
import Instance from './components/Connection';
|
||||
import {
|
||||
loggedUser,
|
||||
visitReporter,
|
||||
} from 'utils/authorization';
|
||||
|
||||
const middleware = routerMiddleware(hashHistory);
|
||||
const store = createStore(
|
||||
@@ -33,8 +29,8 @@ const isFunction = (functionToCheck) => {
|
||||
};
|
||||
|
||||
const requireAuth = (nextState, replace, next) => {
|
||||
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.toLowerCase() === '/selfRegister' || (replace.location.pathname.indexOf('/ride') > -1 && replace.params.ride_uuid !== undefined && replace.params.user_uuid !== undefined)))) {
|
||||
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)
|
||||
|| (!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)))) {
|
||||
next();
|
||||
}
|
||||
|
||||
@@ -59,15 +55,7 @@ const rootRoute = {
|
||||
onChange: requireAuth,
|
||||
onEnter: requireAuth,
|
||||
component: require('./containers/App'),
|
||||
indexRoute: {
|
||||
onEnter: (nextState, replace) => {
|
||||
if (loggedUser.anyOf(visitReporter)) {
|
||||
replace('/app/form/visit/' + loggedUser.useruuid)
|
||||
} else {
|
||||
replace('/app/table/rides');
|
||||
}
|
||||
}
|
||||
},
|
||||
indexRoute: { onEnter: (nextState, replace) => replace('/app/table/rides') },
|
||||
childRoutes: [
|
||||
require('./routes/app'),
|
||||
require('./routes/404'),
|
||||
|
||||
@@ -6,9 +6,6 @@ const Instance = () => {
|
||||
const apiUrl = process.env.NODE_ENV === 'production'
|
||||
? 'https://portal-api.bcbsinstitute.com'
|
||||
: 'https://portal-api.dev.bcbsinstitute.com';
|
||||
|
||||
// const apiUrl = 'http://localhost:5100';
|
||||
|
||||
window.localStorage.setItem('App', '8a266a40-ed2e-4be2-bdfc-459a507bf02e');
|
||||
|
||||
let instance = axios.create({
|
||||
@@ -64,25 +61,11 @@ const Instance = () => {
|
||||
return setToken(token);
|
||||
};
|
||||
|
||||
const getAPIUrl = (url) => {
|
||||
if (!url) {
|
||||
return instance;
|
||||
} else {
|
||||
const token = getCookie('token');
|
||||
return axios.create({
|
||||
baseURL: url,
|
||||
timeout: 60000,
|
||||
headers: { App: window.localStorage.getItem('App'), Token: `Bearer ${token}`, Token: `Bearer ${token}` },
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const getRawConn = () => {
|
||||
const token = getCookie('token');
|
||||
if (token && token !== null && token !== '') {
|
||||
return instance;
|
||||
}
|
||||
|
||||
window.location.href = '/#/login';
|
||||
return null;
|
||||
};
|
||||
@@ -97,7 +80,6 @@ const Instance = () => {
|
||||
getConnection,
|
||||
setToken,
|
||||
getRawConn,
|
||||
getAPIUrl,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -4,13 +4,6 @@ import MenuItem from 'material-ui/MenuItem';
|
||||
import IconButton from 'material-ui/IconButton/IconButton';
|
||||
import { hashHistory } from 'react-router';
|
||||
|
||||
import {
|
||||
loggedUser,
|
||||
planScheduler,
|
||||
providerScheduler,
|
||||
visitReporter,
|
||||
} from 'utils/authorization';
|
||||
|
||||
const ImgIconButtonStyle = {
|
||||
width: '60px',
|
||||
height: '60px'
|
||||
@@ -35,7 +28,6 @@ class NavRightList extends React.Component {
|
||||
handleChange = (event, value) => {
|
||||
hashHistory.push(value);
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
const user = JSON.parse(localStorage.getItem('loggedUser'));
|
||||
if (user) {
|
||||
@@ -48,8 +40,6 @@ class NavRightList extends React.Component {
|
||||
<ul className="list-unstyled float-right">
|
||||
<li>
|
||||
|
||||
|
||||
|
||||
<IconMenu
|
||||
|
||||
iconButtonElement={<IconButton style={ImgIconButtonStyle}><img src="assets/images/ic_account_circle_white_48dp_1x.png" alt="" className="rounded-circle img30_30" /></IconButton>}
|
||||
@@ -58,35 +48,20 @@ class NavRightList extends React.Component {
|
||||
targetOrigin={{ horizontal: 'right', vertical: 'top' }}
|
||||
menuStyle={{ minWidth: '150px' }}
|
||||
>
|
||||
{!loggedUser.anyOf(visitReporter) &&
|
||||
<MenuItem
|
||||
onTouchTap={(e) => this.handleChange(e, `/app/authorizedusers/${this.state.useruuid}`)}
|
||||
primaryText="Profile"
|
||||
style={{ fontSize: '14px', lineHeight: '48px' }}
|
||||
innerDivStyle={listItemStyle}
|
||||
leftIcon={<i className="material-icons">account_circle</i>}
|
||||
/>
|
||||
}
|
||||
{loggedUser.anyOf(visitReporter) &&
|
||||
<MenuItem
|
||||
onTouchTap={(e) => this.handleChange(e, `/app/form/visit/${this.state.useruuid}`)}
|
||||
primaryText="Create Visit"
|
||||
innerDivStyle={listItemStyle}
|
||||
style={{ fontSize: '14px', lineHeight: '48px' }}
|
||||
leftIcon={<i className="material-icons">mode_edit</i>}
|
||||
/>
|
||||
}
|
||||
|
||||
{!loggedUser.anyOf(visitReporter) &&
|
||||
<MenuItem
|
||||
onTouchTap={(e) => this.handleChange(e, `/app/form/steppers/${this.state.useruuid}`)}
|
||||
primaryText="Book Ride"
|
||||
innerDivStyle={listItemStyle}
|
||||
style={{ fontSize: '14px', lineHeight: '48px' }}
|
||||
leftIcon={<i className="material-icons">mode_edit</i>}
|
||||
/>
|
||||
}
|
||||
|
||||
<MenuItem
|
||||
onTouchTap={(e) => this.handleChange(e, `/app/authorizedusers/${this.state.useruuid}`)}
|
||||
primaryText="Profile"
|
||||
style={{ fontSize: '14px', lineHeight: '48px' }}
|
||||
innerDivStyle={listItemStyle}
|
||||
leftIcon={<i className="material-icons">account_circle</i>}
|
||||
/>
|
||||
<MenuItem
|
||||
onTouchTap={(e) => this.handleChange(e, `/app/form/steppers/${this.state.useruuid}`)}
|
||||
primaryText="Book Ride"
|
||||
innerDivStyle={listItemStyle}
|
||||
style={{ fontSize: '14px', lineHeight: '48px' }}
|
||||
leftIcon={<i className="material-icons">mode_edit</i>}
|
||||
/>
|
||||
<MenuItem
|
||||
onTouchTap={(e) => this.handleChange(e, `/login`)}
|
||||
primaryText="Log Out"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import React, { Component } from 'react';
|
||||
import FlatButton from 'material-ui/FlatButton';
|
||||
import MaterialDialog from 'material-ui/Dialog';
|
||||
import Dialog from './draggable-dialog';
|
||||
|
||||
import './draggable-dialog/css/index.css';
|
||||
@@ -9,89 +8,59 @@ const defaultDialogHeight = 100; //px
|
||||
const dialogHeightPerLine = 25; //px
|
||||
|
||||
export class ValidationErrorsInfoDialog extends React.Component {
|
||||
constructor(props) {
|
||||
super(props)
|
||||
this.props = props;
|
||||
this.state = {
|
||||
|
||||
state = {
|
||||
open: this.props.open,
|
||||
title: "Errors",
|
||||
}
|
||||
|
||||
componentWillReceiveProps(newProps){
|
||||
this.setState({open: newProps.open});
|
||||
}
|
||||
|
||||
handleOpen = () => {
|
||||
this.setState({ open: true });
|
||||
};
|
||||
|
||||
handleClose = () => {
|
||||
this.setState({ open: false });
|
||||
this.props.onDismiss();
|
||||
};
|
||||
|
||||
render() {
|
||||
|
||||
const actions = [
|
||||
<FlatButton
|
||||
label="Dismiss"
|
||||
primary={true}
|
||||
onClick={this.handleClose}
|
||||
/>,
|
||||
];
|
||||
|
||||
return (
|
||||
<div className="container">
|
||||
{
|
||||
this.state.open &&
|
||||
<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 => {
|
||||
return (
|
||||
<div>
|
||||
<a>{errorMessage.message}</a>
|
||||
<br/>
|
||||
</div>
|
||||
);})
|
||||
}
|
||||
</Dialog>
|
||||
}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
componentWillReceiveProps(newProps) {
|
||||
let title = this.state.title;
|
||||
if (newProps.errorTitle) {
|
||||
title = newProps.errorTitle;
|
||||
}
|
||||
|
||||
this.setState({ open: newProps.open, title: title });
|
||||
}
|
||||
|
||||
handleOpen = () => {
|
||||
this.setState({ open: true });
|
||||
};
|
||||
|
||||
handleClose = () => {
|
||||
this.setState({ open: false });
|
||||
this.props.onDismiss();
|
||||
};
|
||||
|
||||
render() {
|
||||
|
||||
const actions = [
|
||||
<FlatButton
|
||||
label="Dismiss"
|
||||
primary={true}
|
||||
onClick={this.handleClose}
|
||||
/>,
|
||||
];
|
||||
|
||||
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 (
|
||||
<div className="container">
|
||||
{this.state.open && this.props.draggable && draggableDialog }
|
||||
{this.state.open && !this.props.draggable && normalDialog}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ValidationErrorsInfoDialog;
|
||||
module.exports = ValidationErrorsInfoDialog;
|
||||
|
||||
@@ -102,17 +102,9 @@ class SidebarContent extends React.Component {
|
||||
return (
|
||||
<ul className="nav" ref={(c) => { this.nav = c; }}>
|
||||
{loggedUser.anyOf(visitReporter) &&
|
||||
<li>
|
||||
<FlatButton href="#/app/chart"><i className="nav-icon material-icons">schedule</i><span className="nav-text">Visits</span></FlatButton>
|
||||
<ul>
|
||||
<li><FlatButton className="prepend-icon" href={"#/app/form/visit/" + this.state.user.useruuid}><span>Add Visit</span></FlatButton></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><FlatButton className="prepend-icon" href={"#/app/form/visit/" + this.state.user.useruuid}><span>Create Visit</span></FlatButton></li>
|
||||
}
|
||||
|
||||
|
||||
{!loggedUser.anyOf(visitReporter) &&
|
||||
|
||||
<li>
|
||||
<FlatButton href="#/app/form"><i className="nav-icon material-icons cyan-text text-lighter-4">directions_car</i><span className="nav-text">Rides</span></FlatButton>
|
||||
<ul>
|
||||
@@ -166,8 +158,6 @@ class SidebarContent extends React.Component {
|
||||
}
|
||||
|
||||
<li className="nav-divider" />
|
||||
<li><FlatButton className="prepend-icon" href={"#/login"}><span>Log Out</span></FlatButton></li>
|
||||
|
||||
</ul>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -5,10 +5,6 @@ import Footer from 'components/Footer';
|
||||
import Notifications from 'components/Notifications';
|
||||
import Notification from 'components/Shared/Notification';
|
||||
import GeolocationService from './Geolocation';
|
||||
import {
|
||||
loggedUser,
|
||||
visitReporter,
|
||||
} from 'utils/authorization';
|
||||
|
||||
class MainApp extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -57,9 +53,8 @@ class MainApp extends React.Component {
|
||||
<Footer />
|
||||
</div>
|
||||
</section>
|
||||
{!loggedUser.anyOf(visitReporter) &&
|
||||
<Notifications user={this.state.user} onRideUpdate={this.handleRide} />
|
||||
}
|
||||
<Notifications user={this.state.user} onRideUpdate={this.handleRide} />
|
||||
{/* <Notification user={this.state.user} onRideUpdate={this.handleRide} /> */}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -151,9 +151,7 @@ export class NEMTLocation extends React.Component {
|
||||
long: 0,
|
||||
name: '',
|
||||
address: '',
|
||||
},
|
||||
searchingProvider: false,
|
||||
providerList: [],
|
||||
}
|
||||
}
|
||||
|
||||
this.addCustomLabel = this.addCustomLabel.bind(this);
|
||||
@@ -207,7 +205,7 @@ export class NEMTLocation extends React.Component {
|
||||
long = geo.long;
|
||||
}
|
||||
|
||||
if ((lat === undefined || long === undefined) || (lat === 0 || long === 0)) {
|
||||
if (lat === 0 || long === 0) {
|
||||
lat = 41.886406;
|
||||
long = -87.624225;
|
||||
}
|
||||
@@ -216,8 +214,8 @@ export class NEMTLocation extends React.Component {
|
||||
}
|
||||
|
||||
locateNearby = (lat, long) => {
|
||||
this.setState(Object.assign(this.state, { nearbyPlaces: [], providers: [], providerList: [] }));
|
||||
if ((lat === undefined || long === undefined) || (lat === 0 || long === 0)) {
|
||||
|
||||
if (lat === 0 || long === 0) {
|
||||
lat = 41.886406;
|
||||
long = -87.624225;
|
||||
}
|
||||
@@ -259,7 +257,7 @@ export class NEMTLocation extends React.Component {
|
||||
return p;
|
||||
});
|
||||
|
||||
this.setState(Object.assign(this.state, { nearbyPlaces: nearByPlaces, providers: providers, providerList: nearByPlaces }));
|
||||
this.setState(Object.assign(this.state, { nearbyPlaces: nearByPlaces, providers: providers }));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@@ -338,14 +336,14 @@ export class NEMTLocation extends React.Component {
|
||||
self.props.onPlaceChanged(name);
|
||||
}
|
||||
|
||||
//self.locateNearby(name.lat, name.lng);
|
||||
self.locateNearby(name.lat, name.lng);
|
||||
|
||||
let buttonText = name.name;
|
||||
if (buttonText.length > self.state.textSize) {
|
||||
buttonText = buttonText.substring(0, self.state.textSize);
|
||||
buttonText += '...';
|
||||
}
|
||||
self.setState(Object.assign(self.state, { buttonValue: buttonText, inputValue: name.name, searchingProvider: false, providerList: [] }));
|
||||
self.setState(Object.assign(self.state, { buttonValue: buttonText, inputValue: name.address }));
|
||||
}).catch(console.error);
|
||||
}
|
||||
|
||||
@@ -404,16 +402,6 @@ export class NEMTLocation extends React.Component {
|
||||
objConf.currentSelection = objConf.address
|
||||
objConf.buttonValue = objConf.address.name
|
||||
objConf.inputValue = objConf.address.name
|
||||
|
||||
// let centerLocation = this.state.centerLocation;
|
||||
// if ((centerLocation.lat === undefined || centerLocation.long === undefined) || (centerLocation.lat === 0 || centerLocation.long === 0)) {
|
||||
// objConf.centerLocation = objConf.address
|
||||
// objConf.locationValue = objConf.address.name
|
||||
|
||||
// if (objConf.address.lat !== 0 && objConf.address.lng !== 0) {
|
||||
// this.locateNearby(objConf.address.lat, objConf.address.lng)
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
if (!objConf.buttonValue) {
|
||||
@@ -425,6 +413,16 @@ export class NEMTLocation extends React.Component {
|
||||
objConf.buttonValue += '...';
|
||||
}
|
||||
|
||||
// if (self.state.user.useruuid === '') {
|
||||
// if (objConf.data.user && objConf.data.user !== null && objConf.data.user.useruuid !== '') {
|
||||
// let url = `/v1/nemt/users/member/` + objConf.data.user.useruuid
|
||||
// instance.get(url).then(res => {
|
||||
// let user = res.data;
|
||||
// self.setState(Object.assign(self.state, { user: user }));
|
||||
// }).catch(console.error);
|
||||
// }
|
||||
// }
|
||||
|
||||
this.setState(Object.assign(this.state, objConf));
|
||||
|
||||
if (this.state.type === "flat") {
|
||||
@@ -467,13 +465,13 @@ export class NEMTLocation extends React.Component {
|
||||
objConf.buttonValue += '...';
|
||||
}
|
||||
|
||||
// if (nextProps.address) {
|
||||
// let centerLocation = this.state.centerLocation;
|
||||
// if ((centerLocation.lat === undefined || centerLocation.long === undefined) || (centerLocation.lat === 0 || centerLocation.long === 0)) {
|
||||
// objConf.centerLocation = nextProps.address
|
||||
// objConf.locationValue = nextProps.address.name
|
||||
|
||||
// this.locateNearby(nextProps.address.lat, nextProps.address.lng)
|
||||
// if (self.state.user.useruuid === '' || self.state.user.useruuid !== objConf.data.user.useruuid) {
|
||||
// if (objConf.data.user && objConf.data.user !== null && objConf.data.user.useruuid !== '') {
|
||||
// let url = `/v1/nemt/users/member/` + objConf.data.user.useruuid
|
||||
// instance.get(url).then(res => {
|
||||
// let user = res.data;
|
||||
// self.setState(Object.assign(self.state, { user: user }));
|
||||
// }).catch(console.error);
|
||||
// }
|
||||
// }
|
||||
|
||||
@@ -542,7 +540,7 @@ export class NEMTLocation extends React.Component {
|
||||
long = geo.long;
|
||||
}
|
||||
|
||||
if ((lat === undefined || long === undefined) || (lat === 0 || long === 0)) {
|
||||
if (lat === 0 || long === 0) {
|
||||
lat = 41.886406;
|
||||
long = -87.624225;
|
||||
}
|
||||
@@ -569,15 +567,9 @@ export class NEMTLocation extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
updateTextSearch(event) {
|
||||
const searchText = event.target.value;
|
||||
updateTextSearch(searchText, dtSource, params) {
|
||||
let self = this;
|
||||
self.setState(Object.assign(self.state, { inputValue: searchText, searchingProvider: true }));
|
||||
|
||||
if (searchText.length === 0) {
|
||||
self.setState(Object.assign(self.state, { searchingProvider: false }));
|
||||
}
|
||||
|
||||
self.setState(Object.assign(self.state, { inputValue: searchText }));
|
||||
if (searchText.length >= 3) {
|
||||
let lat = 0;
|
||||
let long = 0;
|
||||
@@ -590,7 +582,7 @@ export class NEMTLocation extends React.Component {
|
||||
long = geo.long;
|
||||
}
|
||||
|
||||
if ((lat === undefined || long === undefined) || (lat === 0 || long === 0)) {
|
||||
if (lat === 0 || long === 0) {
|
||||
lat = 41.886406;
|
||||
long = -87.624225;
|
||||
}
|
||||
@@ -626,11 +618,10 @@ export class NEMTLocation extends React.Component {
|
||||
clickResult.npi = p.fivePartKeyGroups[0].providerNum;
|
||||
}
|
||||
|
||||
var listItem = (<ListItem primaryText={p.providerName} secondaryText={clickResult.address} key={p.mukId} rightIcon={<MapsLocalHospital />} onClick={(event) => this.handlePlaceChanged(clickResult)} />)
|
||||
return listItem;
|
||||
return p;
|
||||
});
|
||||
|
||||
this.setState(Object.assign(this.state, { providerList: providers }));
|
||||
this.setState(Object.assign(this.state, { providers: providers }));
|
||||
dtSource = self.state.providers;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@@ -679,7 +670,7 @@ export class NEMTLocation extends React.Component {
|
||||
long = geo.long;
|
||||
}
|
||||
|
||||
if ((lat === undefined || long === undefined) || (lat === 0 || long === 0)) {
|
||||
if (lat === 0 || long === 0) {
|
||||
lat = 41.886406;
|
||||
long = -87.624225;
|
||||
}
|
||||
@@ -1054,7 +1045,7 @@ export class NEMTLocation extends React.Component {
|
||||
long = geo.long;
|
||||
}
|
||||
|
||||
if ((lat === undefined || long === undefined) || (lat === 0 || long === 0)) {
|
||||
if (lat === 0 || long === 0) {
|
||||
lat = 41.886406;
|
||||
long = -87.624225;
|
||||
}
|
||||
@@ -1340,16 +1331,14 @@ export class NEMTLocation extends React.Component {
|
||||
{customAddresses}
|
||||
<ListItem primaryText="Add Custom Shortcut" rightIcon={<ArrowDropRight />} leftIcon={<MapsLocalHospital />} onClick={(e) => this.handleAddAddress(e, 'custom')} />
|
||||
</List>)
|
||||
autosuggest = (<TextField fullWidth={true} onChange={this.updateTextSearch} floatingLabelText={"Enter the Provider's name or address"} value={this.state.inputValue} />)
|
||||
//autosuggest = (<AutoComplete dataSourceConfig={datasourceConfig} dataSource={this.state.providers} filter={this.filterResults} maxSearchResults={50} onUpdateInput={this.updateTextSearch} fullWidth={true} floatingLabelText="Enter the Provider's name or address" onNewRequest={this.handleAutocomplete} searchText={this.state.inputValue} />)
|
||||
autosuggest = (<AutoComplete dataSourceConfig={datasourceConfig} dataSource={this.state.providers} filter={this.filterResults} maxSearchResults={5} onUpdateInput={this.updateTextSearch} fullWidth={true} floatingLabelText="Enter the Provider's name or address" onNewRequest={this.handleAutocomplete} searchText={this.state.inputValue} />)
|
||||
} else {
|
||||
autosuggest = (<TextField fullWidth={true} onChange={this.updateTextSearch} floatingLabelText={"Enter the Member's address or a nearby intersection or public place"} value={this.state.inputValue} />)
|
||||
//autosuggest = (<AutoComplete dataSourceConfig={datasourceConfig} dataSource={this.state.providers} filter={this.filterResults} maxSearchResults={50} onUpdateInput={this.updateTextSearch} fullWidth={true} floatingLabelText="Enter the Member's address or a nearby intersection or public place" onNewRequest={this.handleAutocomplete} searchText={this.state.inputValue} />)
|
||||
autosuggest = (<AutoComplete dataSourceConfig={datasourceConfig} dataSource={this.state.providers} filter={this.filterResults} maxSearchResults={5} onUpdateInput={this.updateTextSearch} fullWidth={true} floatingLabelText="Enter the Member's address or a nearby intersection or public place" onNewRequest={this.handleAutocomplete} searchText={this.state.inputValue} />)
|
||||
}
|
||||
|
||||
let listItem = (
|
||||
<div className="" id="container">
|
||||
<AutoComplete dataSourceConfig={datasourceConfig} dataSource={this.state.locations} filter={this.filterResults} maxSearchResults={50} onUpdateInput={this.updateLocationValue} fullWidth={true} floatingLabelText="Center Location" onNewRequest={this.handleAutoCompleteLocation} searchText={this.state.locationValue} />
|
||||
<AutoComplete dataSourceConfig={datasourceConfig} dataSource={this.state.locations} filter={this.filterResults} maxSearchResults={5} onUpdateInput={this.updateLocationValue} fullWidth={true} floatingLabelText="Center Location" onNewRequest={this.handleAutoCompleteLocation} searchText={this.state.locationValue} />
|
||||
{autosuggest}
|
||||
<List>
|
||||
{this.state.currentLocation}
|
||||
@@ -1363,21 +1352,8 @@ export class NEMTLocation extends React.Component {
|
||||
<List style={customListStyle}>
|
||||
{this.state.nearbyPlaces}
|
||||
</List>
|
||||
</div>
|
||||
</div >
|
||||
)
|
||||
|
||||
if (this.state.searchingProvider) {
|
||||
listItem = (
|
||||
<div className="" id="container">
|
||||
<AutoComplete dataSourceConfig={datasourceConfig} dataSource={this.state.locations} filter={this.filterResults} maxSearchResults={50} onUpdateInput={this.updateLocationValue} fullWidth={true} floatingLabelText="Center Location" onNewRequest={this.handleAutoCompleteLocation} searchText={this.state.locationValue} />
|
||||
{autosuggest}
|
||||
<List style={customListStyle}>
|
||||
{this.state.providerList}
|
||||
</List>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
if (this.state.addLocation) {
|
||||
listItem = (
|
||||
<div className="" id="container">
|
||||
|
||||
@@ -405,8 +405,8 @@ class VerticalNonLinear extends React.Component {
|
||||
},
|
||||
return_time: new Date(),
|
||||
pickupTimeHide: false,
|
||||
showValidationErrors: false,
|
||||
validationErrors: []
|
||||
showValidationErrors:false,
|
||||
validationErrors:[]
|
||||
};
|
||||
}
|
||||
|
||||
@@ -502,7 +502,6 @@ class VerticalNonLinear extends React.Component {
|
||||
eta: 0,
|
||||
trip_type: state.state.trip_type,
|
||||
return_time: state.state.return_time,
|
||||
raw_provider: state.state.destination.raw,
|
||||
};
|
||||
|
||||
if (self.state.eta.distance_miles) requestRide.distance = self.state.eta.distance_miles;
|
||||
@@ -518,9 +517,6 @@ class VerticalNonLinear extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
console.log(JSON.stringify(requestRide));
|
||||
return false;
|
||||
|
||||
Instance.getRawConn().post('/v1/nemt/rides', requestRide).then(function (res) {
|
||||
self.handleRequestClose(self);
|
||||
window.location.href = '/#/app/page/map/' + res.data.ride_uuid;
|
||||
@@ -528,8 +524,8 @@ class VerticalNonLinear extends React.Component {
|
||||
if (error.response.status === 422) {
|
||||
//Unprocessable Entity (validation failed)
|
||||
self.setState(Object.assign(self.state, {
|
||||
showValidationErrors: true,
|
||||
validationErrors: error.response.data.data
|
||||
showValidationErrors:true,
|
||||
validationErrors:error.response.data.data
|
||||
}));
|
||||
}
|
||||
});
|
||||
@@ -719,10 +715,8 @@ class VerticalNonLinear extends React.Component {
|
||||
name: res.name,
|
||||
lat: res.lat,
|
||||
lng: res.lng,
|
||||
address: res.address,
|
||||
raw: res.raw,
|
||||
address: res.address
|
||||
}
|
||||
|
||||
const name = res.name;
|
||||
|
||||
if (self.state.origin && self.state.origin.lat && self.state.origin.lng) {
|
||||
@@ -902,8 +896,8 @@ class VerticalNonLinear extends React.Component {
|
||||
<div className="box-body padding-xs">
|
||||
|
||||
<div style={{ maxWidth: 380, margin: 'auto' }}>
|
||||
<ValidationErrorsInfoDialog title={'Errors'} open={this.state.showValidationErrors} draggable={true} modal={false} errorMessages={this.state.validationErrors} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)} />
|
||||
|
||||
<ValidationErrorsInfoDialog title={'Errors'} open = {this.state.showValidationErrors} draggable={true} modal={false} errorMessages = {this.state.validationErrors} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)}/>
|
||||
|
||||
<Stepper
|
||||
activeStep={this.state.stepIndex}
|
||||
linear={false}
|
||||
|
||||
@@ -33,10 +33,9 @@ import Instance from '../../../../../../../components/Connection';
|
||||
import Checkbox from 'material-ui/Checkbox';
|
||||
import Popover from 'material-ui/Popover';
|
||||
import ValidationErrorsInfoDialog from '../../../../../../../components/Shared/ValidationErrorsInfoDialog';
|
||||
import InputMask from 'react-input-mask';
|
||||
|
||||
let DateTimeFormat;
|
||||
const roundingTime = 1000 * 60 * 5; //5 minutes
|
||||
|
||||
|
||||
DateTimeFormat = global.Intl.DateTimeFormat;
|
||||
|
||||
@@ -45,10 +44,6 @@ class SignUp extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.props = props;
|
||||
|
||||
this.state = {
|
||||
birthdate: null,
|
||||
}
|
||||
}
|
||||
|
||||
componentWillReceiveProps = (nextProps) => {
|
||||
@@ -107,8 +102,6 @@ class SignUp extends React.Component {
|
||||
handleDate = (event, date) => {
|
||||
const user = this.props.user;
|
||||
user.birthdate = date;
|
||||
|
||||
this.setState(Object.assign(this.state, { birthdate: date }));
|
||||
if (this.props.onUserChanged) {
|
||||
this.props.onUserChanged(user);
|
||||
}
|
||||
@@ -164,7 +157,7 @@ class SignUp extends React.Component {
|
||||
|
||||
handlePhone = (event) => {
|
||||
const user = this.props.user;
|
||||
user.phonenumber = event.target.value;
|
||||
user.phonenumber = event.target.value;;
|
||||
if (this.props.onUserChanged) {
|
||||
this.props.onUserChanged(user);
|
||||
}
|
||||
@@ -226,19 +219,16 @@ class SignUp extends React.Component {
|
||||
onChange={this.handleMember}
|
||||
/>
|
||||
|
||||
<DatePicker width="115" hintText="Member Birth Date" container="inline" style={{ width: 115 }}
|
||||
value={this.state.birthdate} onChange={this.handleDate} />
|
||||
<DatePicker width="115" hintText="Birth Date" container="inline" style={{ width: 115 }}
|
||||
value={this.props.user.birthdate} onChange={this.handleDate} />
|
||||
|
||||
<TextField
|
||||
style={{ maxWidth: 115 }}
|
||||
ref="phone"
|
||||
floatingLabelText="Mobile Phone"
|
||||
type="telephone"
|
||||
value={this.props.user.phonenumber}
|
||||
onChange={this.handlePhone}
|
||||
floatingLabelText="Mobile Phone"
|
||||
>
|
||||
<InputMask mask="(999) 999-9999" maskChar={null} value={this.props.user.phonenumber} />
|
||||
</TextField>
|
||||
/>
|
||||
|
||||
<Checkbox
|
||||
label="Member has consented to terms"
|
||||
@@ -574,18 +564,16 @@ class VerticalNonLinear extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
let dateNow = new Date();
|
||||
|
||||
this.state = {
|
||||
stepIndex: 0,
|
||||
rideTypeValue: 0,
|
||||
providerID: 0,
|
||||
providerName: '',
|
||||
visitDate: new Date(),
|
||||
visitTime: new Date(Math.round(dateNow.getTime() / roundingTime) * roundingTime),
|
||||
visitTime: new Date(),
|
||||
pickupLocation: null,
|
||||
pickupTime: new Date(Math.round(dateNow.getTime() / roundingTime) * roundingTime),
|
||||
pickupTimeReturn: new Date(Math.round(dateNow.getTime() / roundingTime) * roundingTime),
|
||||
pickupTime: new Date(),
|
||||
pickupTimeReturn: new Date(),
|
||||
pickupTimeReturnDisplayMode: 'none',
|
||||
open: false,
|
||||
message: 'Adding Visit',
|
||||
@@ -604,7 +592,6 @@ class VerticalNonLinear extends React.Component {
|
||||
email: "",
|
||||
phonenumber: "",
|
||||
type: "",
|
||||
agreedTerms: false,
|
||||
},
|
||||
showUserSelection: true,
|
||||
userSelectionText: '',
|
||||
@@ -626,17 +613,42 @@ class VerticalNonLinear extends React.Component {
|
||||
pickupTimeHide: false,
|
||||
validationErrors: [],
|
||||
showValidationErrors: false,
|
||||
userValidated: false,
|
||||
};
|
||||
|
||||
this.handleUser = this.handleUser.bind(this);
|
||||
this.validateUser = this.validateUser.bind(this);
|
||||
this.lastStep = this.lastStep.bind(this);
|
||||
this.handleReset = this.handleReset.bind(this);
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
this.handleReset()
|
||||
const loggedUser = JSON.parse(localStorage.getItem("loggedUser"));
|
||||
let state = this;
|
||||
|
||||
let user = {
|
||||
useruuid: this.props.params.uuid
|
||||
}
|
||||
|
||||
if (user.useruuid !== loggedUser.useruuid) {
|
||||
Instance.getRawConn().get(`/v1/nemt/users/member/${user.useruuid}`)
|
||||
.then(function (res) {
|
||||
state.setState(Object.assign(state.state, { user: res.data, showUserSelection: true, userSelectionText: `${res.data.member} - ${res.data.name}` }));
|
||||
})
|
||||
.catch(err => {
|
||||
if (err.response.status !== 422) {
|
||||
console.error(err);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
let visitTime = new Date(new Date().getTime() + (1 * 60 * 60 * 1000));
|
||||
let visitDate = visitTime;
|
||||
let pickupTime = new Date(visitTime.getTime() - (0.5 * 60 * 60 * 1000));
|
||||
let pickupTimeReturn = new Date(visitTime.getTime() - (0.5 * 60 * 60 * 1000));
|
||||
|
||||
this.setState(Object.assign(this.state, {
|
||||
visitDate: visitDate,
|
||||
visitTime: visitTime,
|
||||
pickupTime: pickupTime,
|
||||
pickupTimeReturn: pickupTimeReturn,
|
||||
}));
|
||||
}
|
||||
//for snackbar
|
||||
handleTouchTap() {
|
||||
@@ -656,67 +668,45 @@ class VerticalNonLinear extends React.Component {
|
||||
let self = state;
|
||||
const { stepIndex } = self.state;
|
||||
|
||||
//console.log('Step Index: ', stepIndex)
|
||||
switch (stepIndex) {
|
||||
case 1:
|
||||
self.setState(Object.assign(self.state, {
|
||||
message: ('Verifying Member\'s Eligibility'),
|
||||
open: true,
|
||||
}));
|
||||
|
||||
const eligibility = {
|
||||
"raw_provider": self.state.destination.raw,
|
||||
"user": {
|
||||
"name": `${self.state.user.first} ${self.state.user.last}`,
|
||||
"first": self.state.user.first,
|
||||
"last": self.state.user.last,
|
||||
"gender": self.state.user.gender,
|
||||
"member": self.state.user.member,
|
||||
"birthdate": self.state.user.birthdate,
|
||||
"type": self.state.user.type,
|
||||
"email": self.state.user.email,
|
||||
"phonenumber": self.state.user.phonenumber,
|
||||
"consent": self.state.user.agreedTerms,
|
||||
"provider": {
|
||||
"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": self.state.user,
|
||||
}
|
||||
};
|
||||
|
||||
if (self.state.user.phonenumber && self.state.user.phonenumber.length > 0) {
|
||||
eligibility.user.phonenumber = eligibility.user.phonenumber.replace('(', '').replace(')', '').replace('-', '').replace(' ', '').trim()
|
||||
}
|
||||
|
||||
console.log(JSON.stringify(eligibility));
|
||||
Instance.getRawConn().post('/v1/nemt/eligibility', eligibility).then(function (res) {
|
||||
self.setState(Object.assign(self.state, { stepIndex: stepIndex + 1, message: '', open: false }));
|
||||
}).catch(error => {
|
||||
|
||||
self.setState(Object.assign(self.state, {
|
||||
message: '',
|
||||
open: false,
|
||||
}));
|
||||
|
||||
if (error.response.status === 422 && error.response.data.data) {
|
||||
self.setState(Object.assign(self.state, { stepIndex: stepIndex + 1, user: res.data }));
|
||||
}).catch(err => {
|
||||
if (err.response.status === 403) {
|
||||
self.setState(Object.assign(self.state, {
|
||||
showValidationErrors: true,
|
||||
validationErrors: error.response.data.data,
|
||||
message: '',
|
||||
open: false
|
||||
validationErrors: [err.response.data],
|
||||
}));
|
||||
} else {
|
||||
self.setState(Object.assign(self.state, {
|
||||
showValidationErrors: true,
|
||||
validationErrors: [error.response.data],
|
||||
message: '',
|
||||
open: false
|
||||
}));
|
||||
console.error(err);
|
||||
}
|
||||
});
|
||||
break;
|
||||
case 2:
|
||||
self.handleTouchTap();
|
||||
|
||||
self.setState(Object.assign(self.state, {
|
||||
message: 'Adding Visit',
|
||||
open: true,
|
||||
}));
|
||||
|
||||
const visit = {
|
||||
"user": {
|
||||
"name": `${self.state.user.first} ${self.state.user.last}`,
|
||||
@@ -727,64 +717,17 @@ class VerticalNonLinear extends React.Component {
|
||||
"birthdate": self.state.user.birthdate,
|
||||
"type": self.state.user.type,
|
||||
"email": self.state.user.email,
|
||||
"phonenumber": self.state.user.phonenumber,
|
||||
"consent": self.state.user.agreedTerms,
|
||||
"phonenumber": self.state.user.phonenumber
|
||||
},
|
||||
"visit_datetime": self.state.visitTime,
|
||||
"pickup_datetime": self.state.pickupTime,
|
||||
"external_id": self.state.visit_external_id,
|
||||
"raw_provider": self.state.destination.raw
|
||||
"provider": self.state.destination.raw
|
||||
};
|
||||
|
||||
if (self.state.user.phonenumber && self.state.user.phonenumber.length > 0) {
|
||||
visit.user.phonenumber = visit.user.phonenumber.replace('(', '').replace(')', '').replace('-', '').replace(' ', '').trim()
|
||||
}
|
||||
|
||||
Instance.getRawConn().post('/v1/nemt/visits/', visit).then(function (res) {
|
||||
self.setState(Object.assign(self.state, {
|
||||
message: '',
|
||||
open: false,
|
||||
}));
|
||||
|
||||
const returnMessage = [
|
||||
{
|
||||
message: `Member: ${visit.user.name} (${visit.user.member})`
|
||||
},
|
||||
{
|
||||
message: `Gender: ${visit.user.gender}`
|
||||
},
|
||||
{
|
||||
message: `Birth date: ${visit.user.type}`
|
||||
},
|
||||
{
|
||||
message: `Member Type: ${visit.user.birthdate}`
|
||||
},
|
||||
{
|
||||
message: `Provider: ${visit.raw_provider.providerName}`
|
||||
},
|
||||
{
|
||||
message: `Date: ${visit.visit_datetime}`
|
||||
}]
|
||||
|
||||
self.setState(Object.assign(self.state, {
|
||||
showValidationErrors: true,
|
||||
validationErrors: returnMessage,
|
||||
errorTitle: "Visit Added"
|
||||
}));
|
||||
self.handleReset();
|
||||
}).catch(error => {
|
||||
if (error.response.status === 422 && error.response.data.data) {
|
||||
self.setState(Object.assign(self.state, {
|
||||
showValidationErrors: true,
|
||||
validationErrors: error.response.data.data
|
||||
}));
|
||||
} else {
|
||||
self.setState(Object.assign(self.state, {
|
||||
showValidationErrors: true,
|
||||
validationErrors: [error.response.data]
|
||||
}));
|
||||
}
|
||||
});
|
||||
window.location.href = '/#/app/table/visits';
|
||||
}).catch(console.error);
|
||||
break;
|
||||
default:
|
||||
if (stepIndex < 3) {
|
||||
@@ -825,10 +768,10 @@ class VerticalNonLinear extends React.Component {
|
||||
|
||||
handleDate(event, date, state) {
|
||||
let self = state
|
||||
let visitTime = new Date(Math.round((date.getTime() + (1 * 60 * 60 * 1000)) / roundingTime) * roundingTime);
|
||||
let visitTime = new Date(date.getTime() + (1 * 60 * 60 * 1000));
|
||||
let visitDate = date;
|
||||
let pickupTime = new Date(Math.round((visitTime.getTime() - (0.5 * 60 * 60 * 1000)) / roundingTime) * roundingTime);
|
||||
let pickupTimeReturn = new Date(Math.round((visitTime.getTime() - (0.5 * 60 * 60 * 1000)) / roundingTime) * roundingTime);
|
||||
let pickupTime = new Date(visitTime.getTime() - (0.5 * 60 * 60 * 1000));
|
||||
let pickupTimeReturn = new Date(visitTime.getTime() - (0.5 * 60 * 60 * 1000));
|
||||
|
||||
self.setState(Object.assign(self.state, {
|
||||
visitDate: visitDate,
|
||||
@@ -893,75 +836,19 @@ class VerticalNonLinear extends React.Component {
|
||||
let trip_type = {
|
||||
key: value.selectField,
|
||||
}
|
||||
|
||||
// console.log(event, index, value, state);
|
||||
// console.log(trip_type);
|
||||
|
||||
|
||||
self.setState(Object.assign(self.state, { pickupTimeReturnDisplayMode: value.pickupTimeReturnDisplayMode, trip_type: trip_type, pickupTimeHide: value.pickupTimeHide }));
|
||||
}
|
||||
|
||||
handleReset() {
|
||||
const loggedUser = JSON.parse(localStorage.getItem("loggedUser"));
|
||||
let state = this;
|
||||
|
||||
let user = {
|
||||
useruuid: this.props.params.uuid
|
||||
}
|
||||
|
||||
if (user.useruuid !== loggedUser.useruuid) {
|
||||
Instance.getRawConn().get(`/v1/nemt/users/member/${user.useruuid}`)
|
||||
.then(function (res) {
|
||||
res.data.agreedTerms = false;
|
||||
state.setState(Object.assign(state.state, { user: res.data, showUserSelection: true, userSelectionText: `${res.data.member} - ${res.data.name}` }));
|
||||
})
|
||||
.catch(err => {
|
||||
if (err.response.status !== 422) {
|
||||
console.error(err);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
let date = new Date();
|
||||
|
||||
let visitTime = new Date(Math.round((date.getTime() + (1 * 60 * 60 * 1000)) / roundingTime) * roundingTime);
|
||||
let visitDate = date;
|
||||
let pickupTime = new Date(Math.round((visitTime.getTime() - (0.5 * 60 * 60 * 1000)) / roundingTime) * roundingTime);
|
||||
let pickupTimeReturn = new Date(Math.round((visitTime.getTime() - (0.5 * 60 * 60 * 1000)) / roundingTime) * roundingTime);
|
||||
|
||||
this.setState(Object.assign(this.state, {
|
||||
visitDate: visitDate,
|
||||
visitTime: visitTime,
|
||||
pickupTime: pickupTime,
|
||||
pickupTimeReturn: pickupTimeReturn,
|
||||
stepIndex: 0,
|
||||
providerID: '',
|
||||
providerName: '',
|
||||
visit_external_id: '',
|
||||
buttonProviderText: 'Choose Provider',
|
||||
destination: {
|
||||
id: '',
|
||||
name: '',
|
||||
lat: 0,
|
||||
lng: 0,
|
||||
address: '',
|
||||
raw: null
|
||||
},
|
||||
user: {
|
||||
name: "",
|
||||
first: "",
|
||||
last: "",
|
||||
gender: "",
|
||||
member: "",
|
||||
birthdate: new Date(),
|
||||
email: "",
|
||||
phonenumber: "",
|
||||
type: "",
|
||||
agreedTerms: false,
|
||||
},
|
||||
}));
|
||||
}
|
||||
|
||||
renderStepActions(step, state) {
|
||||
let self = state;
|
||||
return (
|
||||
<div style={{ margin: '12px 0' }}>
|
||||
{step === 1 && (
|
||||
{step !== 2 && (
|
||||
<RaisedButton
|
||||
label="Next"
|
||||
disableTouchRipple
|
||||
@@ -971,43 +858,23 @@ class VerticalNonLinear extends React.Component {
|
||||
style={{ marginRight: 12 }}
|
||||
/>
|
||||
)}
|
||||
{step === 0 && (
|
||||
<RaisedButton
|
||||
label="Next"
|
||||
disableTouchRipple
|
||||
disableFocusRipple
|
||||
primary
|
||||
onTouchTap={() => self.handleNext(self)}
|
||||
style={{ marginRight: 12 }}
|
||||
disabled={!this.state.userValidated}
|
||||
/>
|
||||
)}
|
||||
{step !== 1 && (
|
||||
<FlatButton
|
||||
label="Back"
|
||||
disableTouchRipple
|
||||
disableFocusRipple
|
||||
onTouchTap={() => self.handlePrev(self)}
|
||||
/>
|
||||
)}
|
||||
{step === 2 && (
|
||||
<RaisedButton
|
||||
label="Add Visit"
|
||||
label="Confirm"
|
||||
disableTouchRipple
|
||||
disableFocusRipple
|
||||
primary
|
||||
onTouchTap={() => self.handleNext(self)}
|
||||
style={{ marginRight: 12 }}
|
||||
href=""
|
||||
disabled={!this.state.userValidated}
|
||||
/>
|
||||
)}
|
||||
{step === 2 && (
|
||||
{step > 0 && (
|
||||
<FlatButton
|
||||
label="Reset"
|
||||
label="Back"
|
||||
disableTouchRipple
|
||||
disableFocusRipple
|
||||
onTouchTap={() => self.handleReset()}
|
||||
onTouchTap={() => self.handlePrev(self)}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
@@ -1155,52 +1022,6 @@ class VerticalNonLinear extends React.Component {
|
||||
|
||||
handleUser(user) {
|
||||
this.setState(Object.assign(this.state, { user: user }));
|
||||
this.validateUser();
|
||||
}
|
||||
|
||||
validateUser() {
|
||||
let userValidated = true;
|
||||
const genderList = ["M", "F", "U"]
|
||||
const memberTypeList = ["S", "D", "U"]
|
||||
|
||||
userValidated = !(!this.state.user.first || this.state.user.first.trim().length === 0);
|
||||
if (!userValidated) {
|
||||
this.setState(Object.assign(this.state, { userValidated: userValidated }));
|
||||
return userValidated
|
||||
}
|
||||
userValidated = !(!this.state.user.last || this.state.user.last.trim().length === 0);
|
||||
if (!userValidated) {
|
||||
this.setState(Object.assign(this.state, { userValidated: userValidated }));
|
||||
return userValidated
|
||||
}
|
||||
userValidated = !(!this.state.user.member || this.state.user.member.trim().length === 0);
|
||||
if (!userValidated) {
|
||||
this.setState(Object.assign(this.state, { userValidated: userValidated }));
|
||||
return userValidated
|
||||
}
|
||||
userValidated = !(!this.state.user.gender || genderList.indexOf(this.state.user.gender) === -1);
|
||||
if (!userValidated) {
|
||||
this.setState(Object.assign(this.state, { userValidated: userValidated }));
|
||||
return userValidated
|
||||
}
|
||||
userValidated = !(!this.state.user.type || memberTypeList.indexOf(this.state.user.type) === -1);
|
||||
if (!userValidated) {
|
||||
this.setState(Object.assign(this.state, { userValidated: userValidated }));
|
||||
return userValidated
|
||||
}
|
||||
userValidated = !(!this.state.user.birthdate || this.state.user.birthdate === null || isNaN(this.state.user.birthdate.getTime()))
|
||||
if (!userValidated) {
|
||||
this.setState(Object.assign(this.state, { userValidated: userValidated }));
|
||||
return userValidated
|
||||
}
|
||||
userValidated = !(!this.state.user.agreedTerms)
|
||||
if (!userValidated) {
|
||||
this.setState(Object.assign(this.state, { userValidated: userValidated }));
|
||||
return userValidated
|
||||
}
|
||||
|
||||
this.setState(Object.assign(this.state, { userValidated: userValidated }));
|
||||
return userValidated
|
||||
}
|
||||
|
||||
handleValidationErrosDialogDismiss() {
|
||||
@@ -1209,10 +1030,6 @@ class VerticalNonLinear extends React.Component {
|
||||
}));
|
||||
}
|
||||
|
||||
lastStep = () => {
|
||||
if (this.state.userValidated) this.setState({ stepIndex: 2 });
|
||||
}
|
||||
|
||||
render() {
|
||||
// const { stepIndex } = this.state;
|
||||
this.getLocation();
|
||||
@@ -1276,7 +1093,7 @@ class VerticalNonLinear extends React.Component {
|
||||
<div className="box-body padding-xs">
|
||||
|
||||
<div style={{ maxWidth: 380, margin: 'auto' }}>
|
||||
<ValidationErrorsInfoDialog open={this.state.showValidationErrors} draggable={true} errorMessages={this.state.validationErrors} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)} />
|
||||
<ValidationErrorsInfoDialog open={this.state.showValidationErrors} errorMessages={this.state.validationErrors} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)} />
|
||||
<Stepper
|
||||
activeStep={this.state.stepIndex}
|
||||
linear={false}
|
||||
@@ -1309,7 +1126,7 @@ class VerticalNonLinear extends React.Component {
|
||||
</StepContent>
|
||||
</Step>
|
||||
<Step>
|
||||
<StepButton onClick={() => this.lastStep()}>
|
||||
<StepButton onClick={() => this.setState({ stepIndex: 2 })}>
|
||||
Visit Details
|
||||
</StepButton>
|
||||
<StepContent>
|
||||
@@ -1339,7 +1156,7 @@ class VerticalNonLinear extends React.Component {
|
||||
|
||||
|
||||
{/* <TabsSection /> */}
|
||||
{this.renderStepActions(2, this)}
|
||||
{this.renderStepActions(1, this)}
|
||||
</StepContent>
|
||||
</Step>
|
||||
|
||||
@@ -1366,7 +1183,7 @@ class VerticalNonLinear extends React.Component {
|
||||
/>
|
||||
|
||||
</div>
|
||||
</article >
|
||||
</article>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,6 @@ import Instance from '../../../../../../../components/Connection';
|
||||
import ValidationErrorsInfoDialog from '../../../../../../../components/Shared/ValidationErrorsInfoDialog';
|
||||
import Checkbox from 'material-ui/Checkbox';
|
||||
import Popover from 'material-ui/Popover';
|
||||
import InputMask from 'react-input-mask';
|
||||
|
||||
let DateTimeFormat;
|
||||
const roundingTime = 1000 * 60 * 5; //5 minutes
|
||||
@@ -71,7 +70,6 @@ class SignUp extends React.Component {
|
||||
if (this.props.onUserChanged) {
|
||||
const user = this.props.user;
|
||||
user.phonenumber = event.target.value;
|
||||
user.phonenumber = user.phonenumber.replace('(','').replace(')','').replace('-','').replace(' ','').trim();
|
||||
this.props.onUserChanged(user);
|
||||
}
|
||||
};
|
||||
@@ -136,14 +134,11 @@ class SignUp extends React.Component {
|
||||
|
||||
<TextField
|
||||
style={{ maxWidth: 115 }}
|
||||
ref="phone"
|
||||
type="telephone"
|
||||
floatingLabelText="Mobile Phone"
|
||||
type="telephone"
|
||||
value={this.props.user.phonenumber}
|
||||
onChange={this.handlePhone}
|
||||
>
|
||||
<InputMask mask="(999) 999-9999" maskChar={null} value={this.props.user.phonenumber} />
|
||||
</TextField>
|
||||
/>
|
||||
</fieldset>
|
||||
</form>
|
||||
);
|
||||
@@ -510,7 +505,6 @@ class VerticalNonLinear extends React.Component {
|
||||
};
|
||||
|
||||
this.handleUser = this.handleUser.bind(this);
|
||||
this.handlePickupChanged = this.handlePickupChanged.bind(this);
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
@@ -524,28 +518,7 @@ class VerticalNonLinear extends React.Component {
|
||||
const visit = res.data;
|
||||
visit.user.birthdate = new Date(visit.user.birthdate);
|
||||
visit.visit_datetime = new Date(visit.visit_datetime);
|
||||
|
||||
if(visit.user.phonenumber && visit.user.phonenumber.length > 9) {
|
||||
visit.user.phonenumber = visit.user.phonenumber.replace('+1', '').replace(' ', '').trim();
|
||||
}
|
||||
|
||||
if (visit.user.addresses) {
|
||||
visit.user.addresses.forEach(a => {
|
||||
if (a.address_type === 'home') {
|
||||
const origin = {
|
||||
id: a.address_uuid,
|
||||
name: a.address_type_name,
|
||||
lat: a.lat,
|
||||
lng: a.lng,
|
||||
address: a.address
|
||||
};
|
||||
|
||||
self.setState(Object.assign(self.state, { origin: origin, buttonPickupText: a.address_type_name }));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
self.setState(Object.assign(self.state, { visit: visit, user: visit.user }));
|
||||
self.setState(Object.assign(self.state, { visit: visit }));
|
||||
})
|
||||
.catch(err => {
|
||||
if (err.response.status !== 422) {
|
||||
@@ -582,8 +555,6 @@ class VerticalNonLinear extends React.Component {
|
||||
pickup_time: self.state.pickupTime,
|
||||
return_time: self.state.return_time,
|
||||
notes: self.state.notes,
|
||||
origin: self.state.origin,
|
||||
user: self.state.visit.user,
|
||||
};
|
||||
|
||||
if (self.diffMinutes(self.state.pickupTime, new Date()) > 10) {
|
||||
@@ -742,22 +713,8 @@ class VerticalNonLinear extends React.Component {
|
||||
const visit = this.state.visit;
|
||||
visit.user = user;
|
||||
this.setState(Object.assign(this.state, { visit: visit }));
|
||||
}
|
||||
|
||||
handlePickupChanged = (res) => {
|
||||
let origin = {
|
||||
id: res.address_uuid ? res.address_uuid : res.id,
|
||||
name: res.name,
|
||||
lat: res.lat,
|
||||
lng: res.lng,
|
||||
address: res.address
|
||||
}
|
||||
|
||||
const name = res.name;
|
||||
this.setState(Object.assign(this.state, {
|
||||
buttonPickupText: name,
|
||||
origin: origin
|
||||
}));
|
||||
console.log(user);
|
||||
}
|
||||
|
||||
render() {
|
||||
@@ -830,7 +787,7 @@ class VerticalNonLinear extends React.Component {
|
||||
<div className="box-body padding-xs">
|
||||
|
||||
<div style={{ maxWidth: 380, margin: 'auto' }}>
|
||||
<ValidationErrorsInfoDialog open={this.state.showValidationErrors} draggable={true} errorMessages={this.state.validationErrors} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)} />
|
||||
<ValidationErrorsInfoDialog open={this.state.showValidationErrors} errorMessages={this.state.validationErrors} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)} />
|
||||
|
||||
<Stepper
|
||||
activeStep={this.state.stepIndex}
|
||||
@@ -844,8 +801,6 @@ class VerticalNonLinear extends React.Component {
|
||||
<StepContent>
|
||||
<form role="form">
|
||||
<SignUp user={this.state.visit.user} onUserChanged={this.handleUser} />
|
||||
<div className="divider" />
|
||||
<NEMTLocation type="flat" floatingLabelText='Choose Member Location' hintText="Choose Member Location" data={this.state} title={"Member Address"} value={""} buttonvalue={this.state.buttonPickupText} onPlaceChanged={(provider) => this.handlePickupChanged(provider, this)} fontSize={12} loadSuggestion={true} address={this.state.origin} />
|
||||
</form>
|
||||
{this.renderStepActions(0, this)}
|
||||
</StepContent>
|
||||
|
||||
@@ -37,8 +37,7 @@ class SignUp extends React.Component {
|
||||
validated: false,
|
||||
memberType:"S",
|
||||
showValidationErrors: false,
|
||||
validationErrors:[],
|
||||
draggableDialog:false
|
||||
validationErrors:[]
|
||||
}
|
||||
|
||||
componentDidMount = () => {
|
||||
@@ -64,8 +63,7 @@ class SignUp extends React.Component {
|
||||
"phonenumber": this.state.phonenumber,
|
||||
"birthdate": this.state.birthdate.toISOString(),
|
||||
"consent" : this.state.agreedTerms,
|
||||
"type": this.state.memberType,
|
||||
"useruuid": "1234567"
|
||||
"type": this.state.memberType
|
||||
|
||||
// "eligibility": {
|
||||
// "tracking_id": "1234567",
|
||||
@@ -107,26 +105,13 @@ class SignUp extends React.Component {
|
||||
// alert('NO benefits found for this member');
|
||||
// }
|
||||
}).catch(function (err) {
|
||||
switch(err.response.status){
|
||||
case 403:
|
||||
//Forbidden (not eligible)
|
||||
console.log(err.response.data);
|
||||
let messageArray = [
|
||||
{
|
||||
message:err.response.data.message
|
||||
}
|
||||
]
|
||||
state.setState(Object.assign(state.state, {showValidationErrors:true, validationErrors:messageArray, draggableDialog:false}))
|
||||
break;
|
||||
case 422:
|
||||
//Unprocessable Entity (validation failed)
|
||||
state.setState(Object.assign(state.state, {showValidationErrors:true, validationErrors:err.response.data.data, draggableDialog:true}))
|
||||
break;
|
||||
|
||||
default:
|
||||
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();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -207,7 +192,7 @@ class SignUp extends React.Component {
|
||||
return (
|
||||
<form className="">
|
||||
<fieldset>
|
||||
<ValidationErrorsInfoDialog open = {this.state.showValidationErrors} errorMessages = {this.state.validationErrors} draggable={this.state.draggableDialog} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)}/>
|
||||
<ValidationErrorsInfoDialog open = {this.state.showValidationErrors} errorMessages = {this.state.validationErrors} draggable={false} modal={true} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)}/>
|
||||
<div className="form-group">
|
||||
<TextField
|
||||
floatingLabelText="First Name"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -108,8 +108,7 @@ class DatatableComponent extends React.Component {
|
||||
},
|
||||
columnDefs: [
|
||||
{ targets: [-1, -3], className: 'dt-body-right mdl-data-table__cell--non-numeric' }
|
||||
],
|
||||
order: [[0, 'desc']]
|
||||
]
|
||||
});
|
||||
state.decorateButtons();
|
||||
state.decorateSelect();
|
||||
|
||||
@@ -8,11 +8,6 @@ import Dialog from 'material-ui/Dialog';
|
||||
|
||||
import Instance from '../../../components/Connection';
|
||||
|
||||
import {
|
||||
loggedUser,
|
||||
visitReporter,
|
||||
} from 'utils/authorization';
|
||||
|
||||
class Login extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
@@ -79,15 +74,11 @@ class Login extends React.Component {
|
||||
}).then(function (res) {
|
||||
let auth = res.data;
|
||||
state.setCookie('token', auth.token, auth.valid_time);
|
||||
Instance.setToken(auth.token);
|
||||
localStorage.setItem('loggedUser', JSON.stringify(auth.user));
|
||||
loggedUser.update();
|
||||
|
||||
if (loggedUser.anyOf(visitReporter)) {
|
||||
location.href = '/#/app/form/visit/' + auth.user.useruuid;
|
||||
} else {
|
||||
location.href = '/#/app/table/rides';
|
||||
}
|
||||
Instance.setToken(auth.token);
|
||||
|
||||
location.href = '/#/';
|
||||
}).catch(function (err) {
|
||||
state.setState(Object.assign(state.state, {
|
||||
message: (err.response.data.message),
|
||||
|
||||
@@ -17,10 +17,6 @@ import Toggle from 'material-ui/Toggle';
|
||||
import Snackbar from 'material-ui/Snackbar';
|
||||
import Instance from '../../../components/Connection';
|
||||
|
||||
import Checkbox from 'material-ui/Checkbox';
|
||||
|
||||
import ValidationErrorsInfoDialog from '../../../components/Shared/ValidationErrorsInfoDialog';
|
||||
|
||||
class SignUp extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
@@ -43,8 +39,7 @@ class SignUp extends React.Component {
|
||||
"passConfirmation": "",
|
||||
"organizationType": { name: "", key: "provider", desc: "" },
|
||||
showValidationErrors: false,
|
||||
validationErrors: [],
|
||||
agreedTerms:false,
|
||||
validationErrors: []
|
||||
}
|
||||
|
||||
this.buttonValidated = this.buttonValidated.bind(this);
|
||||
@@ -61,29 +56,16 @@ class SignUp extends React.Component {
|
||||
|
||||
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 = () => {
|
||||
let validated = true;
|
||||
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.email || this.state.email === null || this.state.email === "") validated = false;
|
||||
if (!this.state.phone_number || this.state.phone_number === null || this.state.phone_number === "" || !this.isPhoneNumberFormatValid()) validated = false;
|
||||
if (!this.state.phone_number || this.state.phone_number === null || this.state.phone_number === "") 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.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.password_validated || !this.state.pass || this.state.pass === null || this.state.pass === "") validated = false;
|
||||
|
||||
this.setState(Object.assign(this.state, { validated: validated }));
|
||||
}
|
||||
|
||||
@@ -119,30 +101,16 @@ class SignUp extends React.Component {
|
||||
|
||||
handlePass = (event) => {
|
||||
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) => {
|
||||
this.setState(Object.assign(this.state, { passConfirmation: btoa(event.target.value) }));
|
||||
};
|
||||
|
||||
handleChecked = (event, checked) => {
|
||||
this.setState(Object.assign(this.state, { agreedTerms: checked }));
|
||||
this.buttonValidated();
|
||||
this.setState(Object.assign(this.state, { password_validated: this.state.pass === this.state.passConfirmation }));
|
||||
};
|
||||
|
||||
clickEvent = (event) => {
|
||||
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;
|
||||
|
||||
let user = {
|
||||
@@ -163,30 +131,42 @@ class SignUp extends React.Component {
|
||||
localStorage.removeItem('loggedUser');
|
||||
location.href = '/#/login';
|
||||
}).catch(function (err) {
|
||||
switch(err.response.status){
|
||||
case 422:
|
||||
//Unprocessable Entity (validation failed)
|
||||
state.setState(Object.assign(state.state, {
|
||||
showValidationErrors: true,
|
||||
validationErrors: err.response.data.data
|
||||
}));
|
||||
break;
|
||||
default:
|
||||
state.setState(Object.assign(state.state, {
|
||||
showValidationErrors: true,
|
||||
validationErrors: [{message:"Error processing your request"}]
|
||||
}));
|
||||
if (err.response.status === 422) {
|
||||
//Unprocessable Entity (validation failed)
|
||||
state.setState(Object.assign(state.state, {
|
||||
showValidationErrors: true,
|
||||
validationErrors: err.response.data.data
|
||||
}));
|
||||
} else {
|
||||
alert('Error to log in: ' + err.message);
|
||||
}
|
||||
console.error(err);
|
||||
});
|
||||
}
|
||||
|
||||
handleValidationErrosDialogDismiss() {
|
||||
this.setState(Object.assign(this.state, {
|
||||
showValidationErrors: false
|
||||
}));
|
||||
handleDismiss() {
|
||||
this.setState(Object.assign(this.state, { showErrorMessage: false }));
|
||||
}
|
||||
|
||||
render() {
|
||||
let validationErrors = null;
|
||||
if (this.state.showValidationErrors) {
|
||||
validationErrors = (
|
||||
<ul>
|
||||
{this.state.validationErrors.map(errorMessage => {
|
||||
const oneValidationMessage = (<li>{errorMessage.message}</li>);
|
||||
const oneValidationMessageWithTab = (<span><li style={{ marginLeft: 2 + "em" }}>{errorMessage.message}</li></span>);
|
||||
|
||||
if (errorMessage.field_name === "password-tab") {
|
||||
return oneValidationMessageWithTab;
|
||||
} else {
|
||||
return oneValidationMessage;
|
||||
}
|
||||
})}
|
||||
</ul>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="body-inner">
|
||||
|
||||
@@ -263,21 +243,17 @@ class SignUp extends React.Component {
|
||||
</div>
|
||||
<div className="divider" />
|
||||
<div className="form-group">
|
||||
<Checkbox
|
||||
label="Member has consented to terms of use"
|
||||
checked={this.state.agreedTerms}
|
||||
onCheck={this.handleChecked}
|
||||
/>
|
||||
<p className="text-small">By clicking on sign up, you agree to <a href="javascript:;"><i>terms</i></a> and <a href="javascript:;"><i>privacy policy</i></a></p>
|
||||
</div>
|
||||
<div className="divider" />
|
||||
<div className="form-group">
|
||||
<p className="text-small">By clicking on sign up, you agree to <a href="javascript:;"><i>terms</i></a> and <a href="javascript:;"><i>privacy policy</i></a></p>
|
||||
{validationErrors}
|
||||
</div>
|
||||
<ValidationErrorsInfoDialog open={this.state.showValidationErrors} errorMessages={this.state.validationErrors} onDismiss={this.handleValidationErrosDialogDismiss.bind(this)} />
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div className="card-action no-border text-right">
|
||||
<a href="#/login" className="color-gray-light">Login</a>
|
||||
<RaisedButton
|
||||
label="Sign up"
|
||||
primary={true}
|
||||
|
||||
@@ -3,11 +3,11 @@ import { contains } from 'ramda';
|
||||
|
||||
import normalizeRoles from './normalizeRoles';
|
||||
|
||||
const loggedUser = () => {
|
||||
let user = JSON.parse(window.localStorage.getItem('loggedUser'));
|
||||
const loggedUser = JSON.parse(window.localStorage.getItem('loggedUser'));
|
||||
|
||||
const anyOf = (...profiles) => {
|
||||
const userRole = user.profiles[0];
|
||||
if (loggedUser) {
|
||||
loggedUser.anyOf = (...profiles) => {
|
||||
const userRole = loggedUser.profiles[0];
|
||||
const userOrgType = userRole.organization.type.key;
|
||||
const roles = normalizeRoles(profiles);
|
||||
|
||||
@@ -22,18 +22,7 @@ const loggedUser = () => {
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
const update = () => {
|
||||
user = JSON.parse(window.localStorage.getItem('loggedUser'));
|
||||
return user;
|
||||
}
|
||||
|
||||
return {
|
||||
user,
|
||||
anyOf: anyOf,
|
||||
update: update,
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export default loggedUser();
|
||||
export default loggedUser;
|
||||
|
||||
Reference in New Issue
Block a user