TODO: change api.conf URL references to use environment variables and add these variables to the docker-compose configuration for host domain
231 lines
5.0 KiB
JavaScript
231 lines
5.0 KiB
JavaScript
|
|
const member = require("../controllers/Member.controller.js");
|
|
|
|
const db = require("..");
|
|
|
|
var router = require("express").Router();
|
|
|
|
// Create a new Member
|
|
router.post("/", member.create);
|
|
// Retrieve all Members
|
|
router.get("/", member.findAll);
|
|
|
|
// GET MEMBER
|
|
router.get("/:id", async (req, res) => {
|
|
const id = req.params.id;
|
|
if (!id) {
|
|
res.status(400).send({
|
|
message: "Member id cannot be empty!"
|
|
});
|
|
return
|
|
}
|
|
return db.Member.findByPk(id)
|
|
.then(async (member) => {
|
|
if (member === null) {
|
|
res.status(404).send({
|
|
message: `Member with id=${id} was not found!`
|
|
});
|
|
return
|
|
}
|
|
res.send(member)
|
|
})
|
|
.catch(err => {
|
|
res.status(500).send({
|
|
message:
|
|
err.message || "Some error occurred while retrieving members."
|
|
})
|
|
})
|
|
});
|
|
|
|
// GET MEMBER DETAILS
|
|
router.get("/:id/details", async (req, res) => {
|
|
const id = req.params.id;
|
|
if (!id) {
|
|
res.status(400).send({
|
|
message: "Member id cannot be empty!"
|
|
});
|
|
return
|
|
}
|
|
return db.Member.findByPk(id, {
|
|
include: [
|
|
'rank',
|
|
'status',
|
|
'awards',
|
|
'coursesSMEFor',
|
|
'coursesTaught',
|
|
'coursesAttended'
|
|
]
|
|
})
|
|
.then(async (member) => {
|
|
if (member === null) {
|
|
res.status(404).send({
|
|
message: `Member with id=${id} was not found!`
|
|
});
|
|
return
|
|
}
|
|
res.send(member)
|
|
})
|
|
.catch(err => {
|
|
res.status(500).send({
|
|
message:
|
|
err.message || "Some error occurred while retrieving members."
|
|
})
|
|
})
|
|
});
|
|
|
|
|
|
// COURSES TAUGHT
|
|
router.get("/:id/courses/taught", async (req, res) => {
|
|
const id = req.params.id;
|
|
if (!id) {
|
|
res.status(400).send({
|
|
message: "Member id cannot be empty!"
|
|
});
|
|
return
|
|
}
|
|
return db.Member.findByPk(id)
|
|
.then(async (member) => {
|
|
if (member === null) {
|
|
res.status(404).send({
|
|
message: `Member with id=${id} was not found!`
|
|
});
|
|
return
|
|
}
|
|
const courses = await member.getCoursesSMEFor()
|
|
res.send(courses)
|
|
})
|
|
.catch(err => {
|
|
res.status(500).send({
|
|
message:
|
|
err.message || "Some error occurred while retrieving members."
|
|
})
|
|
})
|
|
});
|
|
|
|
// COURSES ATTENDED
|
|
router.get("/:id/courses/attended", async (req, res) => {
|
|
const id = req.params.id;
|
|
if (!id) {
|
|
res.status(400).send({
|
|
message: "Member id cannot be empty!"
|
|
});
|
|
return
|
|
}
|
|
return db.Member.findByPk(id)
|
|
.then(async (member) => {
|
|
if (member === null) {
|
|
res.status(404).send({
|
|
message: `Member with id=${id} was not found!`
|
|
});
|
|
return
|
|
}
|
|
const courses = await member.getCoursesAttended()
|
|
res.send(courses)
|
|
})
|
|
.catch(err => {
|
|
res.status(500).send({
|
|
message:
|
|
err.message || "Some error occurred while retrieving members."
|
|
})
|
|
})
|
|
});
|
|
|
|
// COURSES SME FOR
|
|
router.get("/:id/courses/sme", async (req, res) => {
|
|
const id = req.params.id;
|
|
if (!id) {
|
|
res.status(400).send({
|
|
message: "Member id cannot be empty!"
|
|
});
|
|
return
|
|
}
|
|
return db.Member.findByPk(id)
|
|
.then(async (member) => {
|
|
if (member === null) {
|
|
res.status(404).send({
|
|
message: `Member with id=${id} was not found!`
|
|
});
|
|
return
|
|
}
|
|
const courses = await member.getCoursesSMEFor()
|
|
res.send(courses)
|
|
})
|
|
.catch(err => {
|
|
res.status(500).send({
|
|
message:
|
|
err.message || "Some error occurred while retrieving members."
|
|
})
|
|
})
|
|
});
|
|
|
|
|
|
// UPDATE MEMBER
|
|
router.put("/:id", async (req, res) => {
|
|
const id = req.params.id;
|
|
if (!id) {
|
|
res.status(400).send({
|
|
message: "Member id cannot be empty!"
|
|
});
|
|
return
|
|
}
|
|
return db.Member.findByPk(id)
|
|
.then(async (member) => {
|
|
if (member === null) {
|
|
res.status(404).send({
|
|
message: `Member with id=${id} was not found!`
|
|
});
|
|
return
|
|
}
|
|
member.set(req.body)
|
|
await member.save()
|
|
res.send(member)
|
|
})
|
|
.catch(err => {
|
|
res.status(500).send({
|
|
message:
|
|
err.message || "Some error occurred while retrieving members.",
|
|
error: err
|
|
})
|
|
})
|
|
});
|
|
|
|
|
|
// Delete a Member with id
|
|
router.delete("/:id", async (req, res) => {
|
|
const id = req.params.id;
|
|
if (!id) {
|
|
res.status(400).send({
|
|
message: "Member id cannot be empty!"
|
|
});
|
|
return
|
|
}
|
|
return db.Member.findByPk(id)
|
|
.then(async (member) => {
|
|
if (member === null) {
|
|
res.status(404).send({
|
|
message: `Member with id=${id} was not found!`
|
|
});
|
|
return
|
|
}
|
|
await member.destroy()
|
|
res.send({
|
|
deleted: member,
|
|
message: `Member with id=${id} was deleted!`
|
|
})
|
|
})
|
|
.catch(err => {
|
|
res.status(500).send({
|
|
message:
|
|
err.message || "Some error occurred while retrieving members.",
|
|
error: err
|
|
})
|
|
})
|
|
});
|
|
|
|
// Delete all Members
|
|
// router.delete("/", member.deleteAll);
|
|
|
|
module.exports = {
|
|
apiPath: "/api/members",
|
|
apiRouter: router
|
|
}; |