CentralBackend/controller/companyStamp/CompanyStampController.js
2025-09-08 16:05:37 +02:00

73 lines
2.1 KiB
JavaScript

const CompanyStampService = require('../../services/stamp/company/CompanyStampService');
const { logger } = require('../../middleware/logger');
exports.upload = async (req, res) => {
try {
const { base64, mimeType, label, activate } = req.body || {};
if (!base64) return res.status(400).json({ error: 'Missing base64' });
const stamp = await CompanyStampService.uploadStamp({
user: req.user,
base64,
mimeType,
label,
activate: !!activate
});
res.status(201).json(stamp);
} catch (e) {
if (e.code === 'PRIMARY_STAMP_EXISTS') {
return res.status(409).json({
error: e.message,
existing: e.existing
? {
id: e.existing.id,
mime_type: e.existing.mime_type,
label: e.existing.label,
created_at: e.existing.created_at,
is_active: e.existing.is_active,
previewDataUri: `data:${e.existing.mime_type};base64,${e.existing.image_base64}`
}
: null
});
}
logger.error('CompanyStampController.upload:error', e.message);
res.status(400).json({ error: e.message });
}
};
exports.listMine = async (req, res) => {
try {
const list = await CompanyStampService.listCompanyStamps(req.user);
res.json(list);
} catch (e) {
res.status(403).json({ error: e.message });
}
};
exports.activeMine = async (req, res) => {
try {
const stamp = await CompanyStampService.getMyActive(req.user);
res.json(stamp || null);
} catch (e) {
res.status(403).json({ error: e.message });
}
};
exports.activate = async (req, res) => {
try {
const updated = await CompanyStampService.activateStamp(req.params.id, req.user);
res.json(updated);
} catch (e) {
res.status(e.message === 'Not found' ? 404 : 403).json({ error: e.message });
}
};
exports.delete = async (req, res) => {
try {
const ok = await CompanyStampService.deleteStamp(req.params.id, req.user);
if (!ok) return res.status(404).json({ error: 'Not found' });
res.status(204).end();
} catch (e) {
res.status(403).json({ error: e.message });
}
};