79 lines
2.2 KiB
JavaScript
79 lines
2.2 KiB
JavaScript
const { ContactPerson, Position } = require('../models');
|
|
|
|
const getAllContactPersons = async (req, res) => {
|
|
try {
|
|
const contactPersons = await ContactPerson.findAll({
|
|
include: [
|
|
{
|
|
model: Position,
|
|
as: 'positions',
|
|
through: { attributes: [] }
|
|
}
|
|
]
|
|
});
|
|
res.json(contactPersons);
|
|
} catch (error) {
|
|
res.status(500).json({ error: 'Failed to fetch contact persons' });
|
|
console.error(error);
|
|
}
|
|
};
|
|
|
|
const createContactPerson = async (req, res) => {
|
|
try {
|
|
const { positions, ...contactPersonData } = req.body;
|
|
const contactPerson = await ContactPerson.create(contactPersonData);
|
|
if (positions && positions.length > 0) {
|
|
const positionIds = positions.map(position => position.id);
|
|
await contactPerson.setPositions(positionIds);
|
|
}
|
|
res.status(201).json(contactPerson);
|
|
} catch (error) {
|
|
res.status(500).json({ error: 'Failed to create contact person' });
|
|
console.error(error);
|
|
}
|
|
};
|
|
|
|
const updateContactPerson = async (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
const { positions, ...contactPersonData } = req.body;
|
|
const contactPerson = await ContactPerson.findByPk(id);
|
|
if (!contactPerson) {
|
|
return res.status(404).json({ error: 'Contact person not found' });
|
|
}
|
|
await contactPerson.update(contactPersonData);
|
|
if (positions && positions.length > 0) {
|
|
const positionIds = positions.map(position => position.id);
|
|
await contactPerson.setPositions(positionIds);
|
|
}
|
|
res.status(200).json(contactPerson);
|
|
} catch (error) {
|
|
res.status(500).json({ error: 'Failed to update contact person' });
|
|
console.error(error);
|
|
}
|
|
};
|
|
|
|
const deleteContactPerson = async (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
const deleted = await ContactPerson.destroy({
|
|
where: { id: id }
|
|
});
|
|
if (deleted) {
|
|
res.status(204).json();
|
|
} else {
|
|
res.status(404).json({ error: 'Contact person not found' });
|
|
}
|
|
} catch (error) {
|
|
res.status(500).json({ error: 'Failed to delete contact person' });
|
|
console.error(error);
|
|
}
|
|
};
|
|
|
|
module.exports = {
|
|
getAllContactPersons,
|
|
createContactPerson,
|
|
updateContactPerson,
|
|
deleteContactPerson
|
|
};
|