77 lines
2.0 KiB
JavaScript
77 lines
2.0 KiB
JavaScript
const { Institution, ContactPerson } = require('../models');
|
|
|
|
const getAllInstitutions = async (req, res) => {
|
|
try {
|
|
const institutions = await Institution.findAll({
|
|
include: [
|
|
{
|
|
model: ContactPerson,
|
|
as: 'contactPersons',
|
|
through: { attributes: [] }
|
|
}
|
|
]
|
|
});
|
|
res.json(institutions);
|
|
} catch (error) {
|
|
res.status(500).json({ error: 'Failed to fetch institutions' });
|
|
console.error(error);
|
|
}
|
|
};
|
|
|
|
const createInstitution = async (req, res) => {
|
|
try {
|
|
const { contactPersonIds, ...institutionData } = req.body;
|
|
const institution = await Institution.create(institutionData);
|
|
if (contactPersonIds) {
|
|
await institution.setContactPersons(contactPersonIds);
|
|
}
|
|
res.status(201).json(institution);
|
|
} catch (error) {
|
|
res.status(500).json({ error: 'Failed to create institution' });
|
|
console.error(error);
|
|
}
|
|
};
|
|
|
|
const updateInstitution = async (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
const { contactPersonIds, ...institutionData } = req.body;
|
|
const institution = await Institution.findByPk(id);
|
|
if (!institution) {
|
|
return res.status(404).json({ error: 'Institution not found' });
|
|
}
|
|
await institution.update(institutionData);
|
|
if (contactPersonIds) {
|
|
await institution.setContactPersons(contactPersonIds);
|
|
}
|
|
res.status(200).json(institution);
|
|
} catch (error) {
|
|
res.status(500).json({ error: 'Failed to update institution' });
|
|
console.error(error);
|
|
}
|
|
};
|
|
|
|
const deleteInstitution = async (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
const deleted = await Institution.destroy({
|
|
where: { id: id }
|
|
});
|
|
if (deleted) {
|
|
res.status(204).json();
|
|
} else {
|
|
res.status(404).json({ error: 'Institution not found' });
|
|
}
|
|
} catch (error) {
|
|
res.status(500).json({ error: 'Failed to delete institution' });
|
|
console.error(error);
|
|
}
|
|
};
|
|
|
|
module.exports = {
|
|
getAllInstitutions,
|
|
createInstitution,
|
|
updateInstitution,
|
|
deleteInstitution
|
|
};
|