TODO: change api.conf URL references to use environment variables and add these variables to the docker-compose configuration for host domain
100 lines
2.3 KiB
JavaScript
100 lines
2.3 KiB
JavaScript
const db = require("..");
|
|
const Member = db.Member;
|
|
const Op = db.Sequelize.Op;
|
|
|
|
// Create and Save a new Member
|
|
exports.create = (req, res) => {
|
|
// Validate
|
|
if (!req.body) {
|
|
res.status(400).send({
|
|
message: "Body content can not be empty!"
|
|
});
|
|
return;
|
|
}
|
|
|
|
// Create
|
|
const members = []
|
|
|
|
if (Array.isArray(req.body)) {
|
|
members.push(...req.body)
|
|
} else {
|
|
members.push(req.body)
|
|
}
|
|
|
|
// Save
|
|
const promises = members.map(member => {
|
|
return Member.create(member)
|
|
.then(memberObj => {
|
|
if (req.body.rankId) {
|
|
db.Rank.findByPk(req.body.rankId)
|
|
.then(rank => {
|
|
memberObj.setRank(rank)
|
|
})
|
|
}
|
|
if (req.body.statusId) {
|
|
db.MemberStatus.findByPk(req.body.statusId)
|
|
.then(status => {
|
|
memberObj.setStatus(status)
|
|
})
|
|
}
|
|
return memberObj
|
|
})
|
|
});
|
|
|
|
// Create
|
|
const successes = []
|
|
const failures = []
|
|
Promise.allSettled(promises)
|
|
.then(data => {
|
|
if (data.every(result => result.status === 'fulfilled')) {
|
|
res.status(201).send({
|
|
message: "All members were created successfully.",
|
|
successes: data.map(result => result.value),
|
|
failures: [],
|
|
})
|
|
return;
|
|
}
|
|
|
|
data.forEach(result => {
|
|
if (result.status === 'fulfilled') {
|
|
successes.push(result.value)
|
|
} else {
|
|
failures.push(result.reason.errors)
|
|
}
|
|
})
|
|
if (successes.length === 0) {
|
|
res.status(500).send({
|
|
message:
|
|
"Failed to create any Members.",
|
|
failures: failures,
|
|
successes: successes,
|
|
});
|
|
return;
|
|
}
|
|
res.status(207).send({
|
|
message: "Some Members were created successfully.",
|
|
successes: successes,
|
|
failures: failures,
|
|
})
|
|
})
|
|
.catch(err => {
|
|
res.status(500).send({
|
|
message:
|
|
err.message || "Some error occurred while creating the Member.",
|
|
});
|
|
});
|
|
};
|
|
|
|
// Retrieve all Members from the database.
|
|
exports.findAll = (req, res) => {
|
|
Member.findAll()
|
|
.then(data => {
|
|
res.send(data);
|
|
})
|
|
.catch(err => {
|
|
res.status(500).send({
|
|
message:
|
|
err.message || "Some error occurred while retrieving members."
|
|
});
|
|
});
|
|
}; |