178 lines
5.3 KiB
JavaScript
178 lines
5.3 KiB
JavaScript
|
const Top5List = require('../models/top5list-model');
|
||
|
const auth = require('../auth');
|
||
|
const User = require('../models/user-model')
|
||
|
|
||
|
createTop5List = (req, res) => {
|
||
|
const body = req.body;
|
||
|
if (!body) {
|
||
|
return res.status(400).json({
|
||
|
success: false,
|
||
|
errorMessage: 'You must provide a Top 5 List',
|
||
|
})
|
||
|
}
|
||
|
|
||
|
const top5List = new Top5List(body);
|
||
|
console.log("creating top5List: " + JSON.stringify(top5List));
|
||
|
if (!top5List) {
|
||
|
return res.status(400).json({ success: false, errorMessage: err })
|
||
|
}
|
||
|
|
||
|
top5List
|
||
|
.save()
|
||
|
.then(() => {
|
||
|
return res.status(201).json({
|
||
|
success: true,
|
||
|
top5List: top5List,
|
||
|
message: 'Top 5 List Created!'
|
||
|
})
|
||
|
})
|
||
|
.catch(error => {
|
||
|
return res.status(400).json({
|
||
|
error,
|
||
|
errorMessage : 'Top 5 List Not Created!'
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
updateTop5List = async (req, res) => {
|
||
|
let _id = '';
|
||
|
auth.verify(req, res, async function () {
|
||
|
_id = req.userId;
|
||
|
});
|
||
|
let email = await getEmail(_id);
|
||
|
const body = req.body
|
||
|
console.log("updateTop5List: " + JSON.stringify(body));
|
||
|
if (!body) {
|
||
|
return res.status(400).json({
|
||
|
success: false,
|
||
|
errorMessage: 'You must provide a body to update',
|
||
|
})
|
||
|
}
|
||
|
|
||
|
Top5List.findOne({ _id: req.params.id }, (err, top5List) => {
|
||
|
console.log("top5List found: " + JSON.stringify(top5List));
|
||
|
if (err || top5List.ownerEmail !== email) {
|
||
|
return res.status(404).json({
|
||
|
err,
|
||
|
errorMessage: 'Top 5 List not found!',
|
||
|
})
|
||
|
}
|
||
|
|
||
|
top5List.name = body.name
|
||
|
top5List.items = body.items
|
||
|
top5List
|
||
|
.save()
|
||
|
.then(() => {
|
||
|
console.log("SUCCESS!!!");
|
||
|
return res.status(200).json({
|
||
|
success: true,
|
||
|
id: top5List._id,
|
||
|
message: 'Top 5 List updated!',
|
||
|
})
|
||
|
})
|
||
|
.catch(error => {
|
||
|
console.log("FAILURE: " + JSON.stringify(error));
|
||
|
return res.status(404).json({
|
||
|
error,
|
||
|
errorMessage: 'Top 5 List not updated!',
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
deleteTop5List = async (req, res) => {
|
||
|
let _id = '';
|
||
|
auth.verify(req, res, async function () {
|
||
|
_id = req.userId;
|
||
|
});
|
||
|
let email = await getEmail(_id);
|
||
|
Top5List.findById({ _id: req.params.id }, (err, top5List) => {
|
||
|
if (err || top5List.ownerEmail !== email) {
|
||
|
return res.status(404).json({
|
||
|
err,
|
||
|
errorMessage: 'Top 5 List not found!',
|
||
|
})
|
||
|
}
|
||
|
Top5List.findOneAndDelete({ _id: req.params.id }, () => {
|
||
|
return res.status(200).json({ success: true, data: top5List })
|
||
|
}).catch(err => console.log(err))
|
||
|
})
|
||
|
}
|
||
|
|
||
|
getTop5ListById = async (req, res) => {
|
||
|
let _id = '';
|
||
|
auth.verify(req, res, async function () {
|
||
|
_id = req.userId;
|
||
|
});
|
||
|
let email = await getEmail(_id);
|
||
|
await Top5List.findById({ _id: req.params.id }, (err, list) => {
|
||
|
if (err || list.ownerEmail !== email) {
|
||
|
return res.status(400).json({ success: false, errorMessage: err });
|
||
|
}
|
||
|
return res.status(200).json({ success: true, top5List: list })
|
||
|
}).catch(err => console.log(err))
|
||
|
}
|
||
|
getTop5Lists = async (req, res) => {
|
||
|
let _id = '';
|
||
|
auth.verify(req, res, async function () {
|
||
|
_id = req.userId;
|
||
|
});
|
||
|
let email = await getEmail(_id);
|
||
|
await Top5List.find({ ownerEmail: email }, (err, top5Lists) => {
|
||
|
if (err) {
|
||
|
return res.status(400).json({ success: false, errorMessage: err })
|
||
|
}
|
||
|
if (!top5Lists.length) {
|
||
|
return res
|
||
|
.status(404)
|
||
|
.json({ success: false, errorMessage: `Top 5 Lists not found` })
|
||
|
}
|
||
|
return res.status(200).json({ success: true, data: top5Lists })
|
||
|
}).catch(err => console.log(err))
|
||
|
}
|
||
|
getTop5ListPairs = async (req, res) => {
|
||
|
let _id = '';
|
||
|
auth.verify(req, res, async function () {
|
||
|
_id = req.userId;
|
||
|
});
|
||
|
let email = await getEmail(_id);
|
||
|
await Top5List.find({ ownerEmail: email }, (err, top5Lists) => {
|
||
|
if (err) {
|
||
|
return res.status(400).json({ success: false, errorMessage: err })
|
||
|
}
|
||
|
if (!top5Lists) {
|
||
|
console.log("!top5Lists.length");
|
||
|
return res
|
||
|
.status(404)
|
||
|
.json({ success: false, errorMessage: 'Top 5 Lists not found' })
|
||
|
}
|
||
|
else {
|
||
|
// PUT ALL THE LISTS INTO ID, NAME PAIRS
|
||
|
let pairs = [];
|
||
|
for (let key in top5Lists) {
|
||
|
let list = top5Lists[key];
|
||
|
let pair = {
|
||
|
_id: list._id,
|
||
|
name: list.name
|
||
|
};
|
||
|
pairs.push(pair);
|
||
|
}
|
||
|
return res.status(200).json({ success: true, idNamePairs: pairs })
|
||
|
}
|
||
|
}).catch(err => console.log(err))
|
||
|
}
|
||
|
|
||
|
getEmail = async function (_id) {
|
||
|
const loggedInUser = await User.findOne({ _id: _id});
|
||
|
return loggedInUser.email;
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
createTop5List,
|
||
|
updateTop5List,
|
||
|
deleteTop5List,
|
||
|
getTop5Lists,
|
||
|
getTop5ListPairs,
|
||
|
getTop5ListById
|
||
|
}
|