-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathorderRouter.js
126 lines (117 loc) · 3.88 KB
/
orderRouter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
const express = require('express');
const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');
const bodyParser = require('body-parser');
const Order = require('../models/order');
const multer = require('multer');
const upload = multer({ storage: multer.memoryStorage() });
const { decodeToken } = require('../middleware/isLoggedIn.js');
const router = express.Router();
router.get('/', (req, res) => {
res.render('order', { class: req.query.class });
});
router.post(
'/',
upload.array('pdf'),
bodyParser.urlencoded({ extended: true }),
async (req, res) => {
const {
subject,
othersubject,
type,
size,
sizeSpecifier,
spacing,
deadline,
instructions,
} = req.body;
let id = decodeToken(req.cookies.access_token).id;
//const buffer = Buffer.from(file.buffer, 'binary');
//console.log(req.files);
const className = req.query.class;
let error = '';
let yourOrders = await Order.find({ userid: id, completed: false });
if (yourOrders.length >= 5) {
error = '*You can only place up to 5 orders';
} else if (
subject.length < 1 ||
type.length < 1 ||
size.length < 1 ||
deadline.length < 1 ||
spacing.length < 1 ||
instructions.length < 1
) {
error = '*You must fill out all details';
} else if (subject == 'Other' && othersubject == '') {
error = '*You must specify the subject';
} else if (req.files.length > 4) {
error = '*You can only upload up to 4 files';
} else if (req.files != null) {
let size = 0;
req.files.every((file) => {
if (
!file.mimetype.startsWith('image/') &&
!(file.mimetype == 'application/pdf')
) {
error = '*You can only upload Images or PDFs as a file';
return false;
}
size += file.size;
return true;
});
if (size > 15000000) {
error = '*Max file upload size is 15 mb';
}
}
if (error != '') {
const form = {
subject: subject,
type: type,
size: size,
deadline: deadline,
instructions: instructions,
spacing: spacing,
sizeSpecifier: sizeSpecifier,
};
res.render('order', {
class: className,
error: error,
form: form,
order: 'selected',
});
} else {
if (subject == 'Other' && othersubject != '') {
var submitSubj = othersubject;
} else {
var submitSubj = subject;
}
if (sizeSpecifier == 'pages') {
var submitSpacing = spacing;
} else {
var submitSpacing = 'NA';
}
let files = req.files.map((file) => file.buffer);
let fileTypes = req.files.map((file) => file.mimetype);
const order = new Order({
userid: id,
class: submitSubj,
type: type,
size: size,
sizeSpecifier: sizeSpecifier,
spacing: submitSpacing,
deadline: deadline,
instructions: instructions,
open: true,
completed: false,
files: files,
fileTypes: fileTypes,
reviewLeft: false,
});
order.save().catch((err) => {
console.log(err);
});
res.redirect('/orders');
}
}
);
module.exports = router;