Files
miriamgemeinde/controllers/institutionController.js
Torsten Schulz 61653ff407 inital commit
2024-06-15 23:01:46 +02:00

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
};