diff --git a/client/src/components/Search.js b/client/src/components/Search.js
index abc26baac..3271649ff 100644
--- a/client/src/components/Search.js
+++ b/client/src/components/Search.js
@@ -1,7 +1,7 @@
import React from 'react'
import UserSearch from './UserSearch'
-const Browse = () => {
+const Search = () => {
return (
@@ -9,4 +9,4 @@ const Browse = () => {
)
}
-export default Browse
+export default Search
diff --git a/client/src/components/UserSearch.js b/client/src/components/UserSearch.js
index 1cb851429..ae01d1b5e 100644
--- a/client/src/components/UserSearch.js
+++ b/client/src/components/UserSearch.js
@@ -1,6 +1,6 @@
import React, { Component } from 'react';
import {graphql, compose} from 'react-apollo';
-import {getUsersQuery} from '../queries/queries';
+import {getUsersBySearchFields} from '../queries/queries';
// Materia UI
@@ -64,15 +64,22 @@ const styles = theme => ({
marginLeft: '10%',
marginTop: 40
},
+ button: {
+ margin: theme.spacing.unit,
+ marginTop: theme.spacing.unit * 3
+ }
});
class UserSearch extends Component {
constructor(props){
super(props);
+
this.state = {
- selected: null,
- open: false
+ alias: '',
+ firstName: '',
+ middleName: '',
+ lastName: ''
}
}
@@ -86,7 +93,14 @@ class UserSearch extends Component {
submitForm (e) {
e.preventDefault()
- }
+
+ this.props.getUsersBySearchFields.variables.alias = this.state.alias;
+ this.props.getUsersBySearchFields.variables.firstName = this.state.firstName;
+ this.props.getUsersBySearchFields.variables.middleName = this.state.middleName;
+ this.props.getUsersBySearchFields.variables.lastName = this.state.lastName;
+
+ this.props.getUsersBySearchFields.refetch({})
+}
handleTextField (e) {
/*
@@ -127,18 +141,22 @@ class UserSearch extends Component {
default:
}
}
-
+
displayUsers(){
- let data = this.props.getUsersQuery;
+ let data = this.props.getUsersBySearchFields;
const { classes } = this.props;
if(data.loading){
return (
Loading Users...
);
} else {
- return data.users.map(user => {
-
+ if(data.usersSearch === undefined) {
+ return (
No Users to Display
)
+ } else {
+
+ return data.usersSearch.map(user => {
+
return (
-
+
{
this.setState({ selected: user.id});
@@ -172,6 +190,7 @@ class UserSearch extends Component {
)
});
}
+ }
}
render() {
@@ -183,7 +202,7 @@ class UserSearch extends Component {
Use any of these fileds to search for users.
-
+
-
+
-
+
+
+
+
+
+
+
{this.displayUsers()}
-
+
);
@@ -235,6 +260,6 @@ class UserSearch extends Component {
}
export default compose(
- graphql(getUsersQuery, {name: "getUsersQuery"}),
+ graphql(getUsersBySearchFields, {name: 'getUsersBySearchFields'}),
withStyles(styles)
) (UserSearch); // This technique binds more than one query to a single component.
diff --git a/client/src/queries/queries.js b/client/src/queries/queries.js
index 344958d63..ecd4feeb6 100644
--- a/client/src/queries/queries.js
+++ b/client/src/queries/queries.js
@@ -58,6 +58,23 @@ query($authId: String){
}
`
+const getUsersBySearchFields = gql`
+query(
+ $alias: String,
+ $firstName: String,
+ $middleName: String,
+ $lastName: String
+){
+ usersSearch (alias: $alias, firstName: $firstName, middleName: $middleName, lastName: $lastName){
+ id
+ alias
+ firstName
+ middleName
+ lastName
+ }
+}
+`
+
const getRolesQuery = gql`
{
roles {
@@ -116,4 +133,12 @@ mutation(
}
}
`
-export {getUsersQuery, getUserByAuthIdQuery, getRolesQuery, getUserProfileQuery, updateUserMutation, updateUserImagesMutation}
+export {
+ getUsersQuery,
+ getUserByAuthIdQuery,
+ getRolesQuery,
+ getUserProfileQuery,
+ getUsersBySearchFields,
+ updateUserMutation,
+ updateUserImagesMutation
+}
diff --git a/server/schema/schema.js b/server/schema/schema.js
index 4d0561156..f18a4de51 100644
--- a/server/schema/schema.js
+++ b/server/schema/schema.js
@@ -141,6 +141,8 @@ const RootQuery = new GraphQLObjectType({
if (args.middleName !== null && args.middleName !== '') { mongoQuery.$or.push({middleName: args.middleName}) }
if (args.lastName !== null && args.lastName !== '') { mongoQuery.$or.push({lastName: args.lastName}) }
+ if (mongoQuery.$or.length === 0) { mongoQuery = {} }
+
return User.find(mongoQuery)
}
}