Files
17th-Battalion-Tracker/api/db/controllers/Member.controller.js
IndigoFox 9f2473801c Initial commit
TODO: change api.conf URL references to use environment variables and add these variables to the docker-compose configuration for host domain
2023-03-28 00:08:50 -07:00

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."
});
});
};