Skip to content
Permalink
Browse files
Fixed Merge problem
  • Loading branch information
sellers3 committed Nov 26, 2019
2 parents 4e469f2 + 4022675 commit fcb8f39e7c4158a215ea41271a87233a6de4ae6c
Show file tree
Hide file tree
Showing 5 changed files with 271 additions and 223 deletions.
229 index.js
@@ -7,12 +7,12 @@ const Router = require('koa-router')
const views = require('koa-views')
const staticDir = require('koa-static')
const bodyParser = require('koa-bodyparser')
const koaBody = require('koa-body')({multipart: true, uploadDir: '.'})
const session = require('koa-session')

/* IMPORT CUSTOM MODULES */
const User = require('./modules/user')
const Order = require('./modules/order')
const User = require('./routes/user')
const Menu = require('./routes/menu')
const Order = require('./routers/order')

const app = new Koa()
const router = new Router()
@@ -26,228 +26,11 @@ app.use(views(`${__dirname}/views`, { extension: 'handlebars' }, {map: { handleb

const defaultPort = 8080
const port = process.env.PORT || defaultPort
const dbUsers = './databases/users.db'
const dbMenu = './databases/menu.db'

/**
* The secure home page.
*
* @name Home Page
* @route {GET} /
* @authentication This route requires cookie-based authentication.
*/
// eslint-disable-next-line complexity
router.get('/', async ctx => {
try {
const auth = ctx.session.authorised
if(auth !== 'Admin' || auth !== 'Kitchen' || auth !== 'Waiting') {
return ctx.redirect('/login?msg=you need to log in')
}
const data = {}
if(ctx.query.msg) data.msg = ctx.query.msg
await ctx.render('index')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})
app.use(User.routes())
app.use(Menu.routes())
app.use(Order.routers())

/**
* The user registration page.
*
* @name Register Page
* @route {GET} /register
*/
router.get('/register', async ctx => await ctx.render('register'))

/**
* The script to process new user registrations.
*
* @name Register Script
* @route {POST} /register
*/
router.post('/register', koaBody, async ctx => {
try {
// extract the data from the request
const body = ctx.request.body
// call the functions in the module
const user = await new User(dbUsers)
await user.register(body.user, body.pass, body.auth)
// redirect to the home page
ctx.redirect(`/?msg=new user "${body.name}" added`)
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.get('/login', async ctx => {
const data = {}
if(ctx.query.msg) data.msg = ctx.query.msg
if(ctx.query.user) data.user = ctx.query.user
await ctx.render('login', data)
})

router.post('/login', async ctx => {
try {
const body = ctx.request.body
const user = await new User(dbUsers)
await user.login(body.user, body.pass)
const auth = await user.getAuth(body.user)
ctx.session.authorised = auth.auth
return ctx.redirect('/mainmenu')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.get('/logout', async ctx => {
ctx.session.authorised = null
ctx.redirect('/?msg=you are now logged out')
})

router.get('/mainmenu', async ctx => {
try{
const auth = ctx.session.authorised
if(auth === 'Admin' || auth === 'Kitchen' || auth === 'Waiting') {
await ctx.render('mainmenu')
} else ctx.redirect('/login?msg=you need to log in')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.get('/order', async ctx => {
try{
const auth = ctx.session.authorised
if(auth === 'Admin' || auth === 'Waiting') {
const order = await new Order(dbMenu)
const numbers = order.createTableNumbers()
await ctx.render('order', {number: numbers})
} else await ctx.render('mainmenu')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.get('/order/:tableNumber', async ctx => {
try{
const currentTableNumber = ctx.params.tableNumber
const order = await new Order(dbMenu)
const itemNames = await order.getItemsName()
const itemAmount = await order.getAmount(currentTableNumber, itemNames)
const data = order.createItemObject(itemNames, itemAmount, currentTableNumber)
const numbers = order.createTableNumbers()
if (ctx.params.tableNumber === 'Select') {
ctx.redirect('/order/select?msg=Select a Table Number')
} else{
await ctx.render('order', {items: data, number: numbers, table: currentTableNumber})
}
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.post('/order/:tableNumber', async ctx => {
try {
const body = ctx.request.body
const order = await new Order(dbMenu)
if(body.submit === 'Add') {
await order.addToOrder(body)
} else if (body.submit === 'Remove') {
await order.removeFromOrder(body)
}
ctx.redirect(ctx.params.tableNumber)
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.get('/ready', async ctx => {
try{
const auth = ctx.session.authorised
if(auth === 'Admin' || auth === 'Kitchen') {
const order = await new Order(dbMenu)
const unready = await order.getNotReadyOrders()
const ready = await order.getReadyOrders()
await ctx.render('ready', {unreadyOrder: unready, readyOrder: ready})
} else await ctx.render('mainmenu')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.post('/ready', async ctx => {
try {
const body = ctx.request.body
const order = await new Order(dbMenu)
if (body.submit === 'Ready') {
await order.setReady(body.ID)
} else if (body.submit === 'Unready') {
await order.setUnready(body.ID)
}
await ctx.redirect('/ready')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.get('/adding', async ctx => {
try{
const auth = ctx.session.authorised
if(auth === 'Admin' || auth === 'Waiting') {
await ctx.render('adding')
} else await ctx.render('mainmenu')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.post('/adding', async ctx => {
try {
const body = ctx.request.body
const order = await new Order(dbMenu)
order.createPrice(body)
await order.addItem(body)
await ctx.redirect('/menu')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.get('/menu', async ctx => {
try{
const auth = ctx.session.authorised
if(auth === 'Admin') {
const order = await new Order(dbMenu)
const data = await order.getItemsName()
await ctx.render('menu', {items: data})
} else await ctx.redirect('/mainmenu')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.get('/edit/:itemID', async ctx => {
try{
const order = await new Order(dbMenu)
const data = await order.getItemInfo(ctx.params.itemID)
order.splitPrice(data[0])
await ctx.render('edit', {items: data})
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.post('/edit', async ctx => {
try {
const body = ctx.request.body
const order = await new Order(dbMenu)
order.createPrice(body)
await order.editItem(body)
await ctx.redirect('/menu')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

app.use(router.routes())
module.exports = app.listen(port, async() => console.log(`listening on port ${port}`))
@@ -54,4 +54,10 @@ module.exports = class User {
const record = await this.db.get(sql)
return record
}

async checkAuth(auth) {
if(auth !== 'Admin' || auth !== 'Kitchen' || auth !== 'Waiting') {
return true
} else false
}
}
@@ -0,0 +1,115 @@
'use strict'

/* MODULE IMPORTS */
const Router = require('koa-router')

const router = new Router()

const dbMenu = '../databases/menu.db'

/* MODULE IMPORTS */
const Order = require('../modules/order')

router.get('/mainmenu', async ctx => {
try{
const auth = ctx.session.authorised
if(auth === 'Admin' || auth === 'Kitchen' || auth === 'Waiting') {
await ctx.render('mainmenu')
} else ctx.redirect('/login?msg=you need to log in')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.get('/ready', async ctx => {
try{
const auth = ctx.session.authorised
if(auth === 'Admin' || auth === 'Kitchen') {
const order = await new Order(dbMenu)
const unready = await order.getNotReadyOrders()
const ready = await order.getReadyOrders()
await ctx.render('ready', {unreadyOrder: unready, readyOrder: ready})
} else await ctx.render('mainmenu')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.post('/ready', async ctx => {
try {
const body = ctx.request.body
const order = await new Order(dbMenu)
if (body.submit === 'Ready') {
await order.setReady(body.ID)
} else if (body.submit === 'Unready') {
await order.setUnready(body.ID)
}
const unready = await order.getNotReadyOrders()
const ready = await order.getReadyOrders()
await ctx.render('ready', {unreadyOrder: unready, readyOrder: ready})
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.get('/adding', async ctx => {
try{
const auth = ctx.session.authorised
if(auth === 'Admin' || auth === 'Waiting') {
await ctx.render('adding')
} else await ctx.render('mainmenu')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.post('/adding', async ctx => {
try {
const body = ctx.request.body
const order = await new Order(dbMenu)
order.createPrice(body)
await order.addItem(body)
await ctx.render('adding')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.get('/menu', async ctx => {
try{
const auth = ctx.session.authorised
if(auth === 'Admin') {
const order = await new Order(dbMenu)
const data = await order.getItemsName()
await ctx.render('menu', {items: data})
} else await ctx.render('mainmenu')
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.get('/edit/:itemID', async ctx => {
try{
const order = await new Order(dbMenu)
const data = await order.getItemInfo(ctx.params.itemID)
order.splitPrice(data[0])
await ctx.render('edit', {items: data})
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

router.post('/edit', async ctx => {
try {
const body = ctx.request.body
const order = await new Order(dbMenu)
order.createPrice(body)
await order.editItem(body)
const data = await order.getItemsName()
await ctx.render('menu', {items: data})
} catch(err) {
await ctx.render('error', {message: err.message})
}
})

module.exports = router

0 comments on commit fcb8f39

Please sign in to comment.