Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Grace ricky joseph/view customers #20

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/client/src/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ function App() {
{false && <ReactQueryDevtools />}
<main>
<Switch>
<PublicRoute exact path="/" component={ViewCustomersPage} />
<PublicRoute exact path="/" component={IndexPage} />
<PublicRoute exact path="/login" component={LoginPage} />
<PublicRoute exact path="/register" component={RegisterPage} />
<PublicRoute exact path="/tab" component={MainTabPage} />
Expand Down
10 changes: 8 additions & 2 deletions src/client/src/components/DropdownComponent.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const Container = styled.div`
}
`;

function DropdownComponent({ name, options }) {
function DropdownComponent({ name, options, setSelectedFilter }) {
const optionList = options.map((option) => <option>{option.name}</option>);

var bodyContent;
Expand All @@ -33,11 +33,17 @@ function DropdownComponent({ name, options }) {
bodyContent = optionList;
}

const handleChange = (event) => {
setSelectedFilter(event.target.value);
};

return (
<Container>
<h1>{name}</h1>
<div class="select">
<select>{bodyContent}</select>
<select onChange={handleChange}>
<select>{bodyContent}</select>
</select>
</div>
</Container>
);
Expand Down
30 changes: 26 additions & 4 deletions src/client/src/components/UserFilter.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,37 @@ const Wrapper = styled.div`
width: 100%;
`;

function UserFilter({ name1, options1, name2, options2, name3, options3 }) {
function UserFilter({
name1,
options1,
setCertFilter,
name2,
options2,
setRenewalFilter,
name3,
options3,
setProgramFilter,
}) {
return (
<div>
<Wrapper>
<SearchBar />
<Container>
<DropdownComponent name={name1} options={options1} />
<DropdownComponent name={name2} options={options2} />
<DropdownComponent name={name3} options={options3} />
<DropdownComponent
setSelectedFilter={setCertFilter}
name={name1}
options={options1}
/>
<DropdownComponent
setSelectedFilter={setRenewalFilter}
name={name2}
options={options2}
/>
<DropdownComponent
setSelectedFilter={setProgramFilter}
name={name3}
options={options3}
/>
</Container>
</Wrapper>
</div>
Expand Down
3 changes: 1 addition & 2 deletions src/client/src/components/routing/PublicRoute.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@ import { AuthContext } from '../../context';
const PublicRoute = (props) => {
const auth = useContext(AuthContext);

// fix this
return auth.isAuthenticated ? (
<Route path={props.path} exact={props.exact} component={props.component} />
<Redirect to="/dashboard" />
) : (
<Route path={props.path} exact={props.exact} component={props.component} />
);
Expand Down
121 changes: 120 additions & 1 deletion src/client/src/pages/ViewCustomersPage.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
import React, { useState, useEffect } from 'react';
import Table from '../components/Table';
import React, { useState } from 'react';
import UserFilter from '../components/UserFilter';
<<<<<<< HEAD
import api from '../api/index';
=======
import styled from 'styled-components';
>>>>>>> master

const options1 = [
{
name: 'No filter selected',
},
{
name: 'Due in 6 months',
},
Expand All @@ -21,6 +28,9 @@ const options1 = [
const name1 = 'Recertification';

const options2 = [
{
name: 'No filter selected',
},
{
name: 'Due in 2 months',
},
Expand All @@ -34,6 +44,9 @@ const options2 = [
const name2 = 'Membership Renewal';

const options3 = [
{
name: 'No filter selected',
},
{
name: 'Childbirth Educator',
},
Expand Down Expand Up @@ -187,8 +200,61 @@ const placeholderCustomers = [
const PageContainter = styled.div``;

function ViewCustomersPage() {
const [data, setData] = useState([]);
const [filterCert, setCertFilter] = useState({});
const [filterRenewal, setRenewalFilter] = useState({});
const [filterProgram, setProgramFilter] = useState({});
const [pageNumber, setPageNumber] = useState(1);

const setCert = (selectedFilter) => {
setCertFilter(selectedFilter);
};

const setRenewal = (selectedFilter) => {
setRenewalFilter(selectedFilter);
};

const setProgram = (selectedFilter) => {
setProgramFilter(selectedFilter);
};

const setPage = (pageNumber) => {
setPageNumber(pageNumber);
};

const { isLoading, error, data } = useQuery('users', () =>
api.get('/api/users').then((res) => {
console.log(res);
return res.data;
})
);

const fetchData = async () => {
// function
// make the api calls
// set the current data with the api data
// /api/customer -> pass in filters and query and page number
// api paramerters
// pageNumber -> int
// query: {
// first_name, last_name, email, phone_number
//}
// filters : {
// recertification:number, membersp:nunber
// }
const result = await api.get('/api/users').then((res) => {
console.log(res);
return res.data;
});

setData(result);
};

useEffect(async () => {
fetchData();
}, [filter]);
// rerun whenver filters

const increasePage = () => {
if (pageNumber < maxPageNumber) {
const newPageNumber = pageNumber + 1;
Expand Down Expand Up @@ -218,6 +284,58 @@ function ViewCustomersPage() {
};

return (
<<<<<<< HEAD
<div className="container">
<UserFilter
name1={name1}
options1={options1}
setCertFilter={setCert}
name2={name2}
options2={options2}
setRenewalFilter={setRenewal}
name3={name3}
options3={options3}
setProgamFilter={setProgram}
/>
<Table
setPage={setPage}
headerColumns={['Name', 'Email', 'Phone Number']}
dataColumns={['Name', 'Email', 'PhoneNumber']}
data={placeholderCustomers.filter(getEntriesOnPage)}
hoverable={true}
rowLink={() => console.log('clicked')}
></Table>
<div>
<div class="columns is-mobile is-centered">
<div
onClick={goToStart}
style={{ cursor: 'pointer' }}
class="column is-narrow"
>
{'<<'}
</div>
<div
onClick={decreasePage}
style={{ cursor: 'pointer' }}
class="column is-narrow"
>
{'<'}
</div>
<div class="column is-narrow">{pageNumber}</div>
<div
onClick={increasePage}
style={{ cursor: 'pointer' }}
class="column is-narrow"
>
{'>'}
</div>
<div
onClick={goToEnd}
style={{ cursor: 'pointer' }}
class="column is-narrow"
>
{'>>'}
=======
<PageContainter>
<div className="container">
<UserFilter
Expand Down Expand Up @@ -266,6 +384,7 @@ function ViewCustomersPage() {
>
{'>>'}
</div>
>>>>>>> master
</div>
</div>
</div>
Expand Down
10 changes: 5 additions & 5 deletions src/client/src/pages/authflow/RegisterPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -142,24 +142,24 @@ function RegisterPage() {
<Container3 className="container"></Container3>
<Container2 className="container">
<FormField
name="first_name"
type="first_name"
name="firstName"
type="firstName"
placeholder="First Name"
placeholderTextColor="#969696"
errors={errors}
/>
</Container2>
<Container4 className="container">
<FormField
name="last_name"
type="last_name"
name="lastName"
type="lastName"
placeholder="Last Name"
placeholderTextColor="#969696"
errors={errors}
/>
</Container4>
<FormField
name="email"
name="name=email"
type="email"
placeholder="Email"
placeholderTextColor="#969696"
Expand Down
12 changes: 6 additions & 6 deletions src/routes/user.api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ const saltRounds = 10;

/* account signup endpoint */
router.post('/signup', async (req, res) => {
const { first_name } = req.body;
const { last_name } = req.body;
const { firstName } = req.body;
const { lastName } = req.body;
const { email } = req.body;
const type = 'user';
const { company } = req.body;
const { password } = req.body;

if (await User.findOne({ email })) {
Expand All @@ -31,10 +31,10 @@ router.post('/signup', async (req, res) => {
}

const newUser = new User({
first_name,
last_name,
firstName,
lastName,
email,
type,
institutionName: company,
password: hashedPassword,
});

Expand Down