Files
wedding/src/routes/admin/index.js
2017-03-04 19:00:13 +00:00

68 lines
1.8 KiB
JavaScript

import React from 'react';
import Layout from '../../components/Layout';
import fetchQL from '../../core/fetchQL';
import fetch from '../../core/fetch';
import { starters, mains } from '../../config';
const title = 'Admin';
export default {
path: '/admin',
async action() {
const resp = await fetchQL('{getAllPersons{key,firstname,lastname,email,password,completed,starter,main}}');
const configResp = await fetch('/config.json', {
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
credentials: 'include',
});
const settingsResp = await fetchQL('{settings{slack,email}}');
const { data } = await resp.json();
const config = await configResp.json();
let settings = await settingsResp.json();
if (settings && settings.data && settings.data.settings && settings.data.settings[0]) {
settings = settings.data.settings[0];
} else {
settings = {
slack: false,
email: false,
};
}
const people = data.getAllPersons || [];
const food = {
starters: starters.map((name, index) => {
const total = people.filter(person => person.starter === `${index}`).length;
return { name, total };
}),
mains: mains.map((name, index) => {
const total = people.filter(person => person.main === `${index}`).length;
return { name, total };
}),
};
const Admin = await new Promise((resolve) => {
require.ensure([], (require) => resolve(require('./Admin').default), 'admin');
});
return {
title,
chunk: 'admin',
component: <Layout><Admin
title={title}
people={people}
starters={food.starters}
mains={food.mains}
build={config.build}
settings={settings}
/></Layout>,
};
},
};