43 lines
1.6 KiB
JavaScript
43 lines
1.6 KiB
JavaScript
|
|
const express = require('express');
|
||
|
|
const db = require('../db');
|
||
|
|
const { requireAuth } = require('../auth');
|
||
|
|
const { resolveActingProfile } = require('../lib/account');
|
||
|
|
const { loadBusinesses } = require('../lib/queries');
|
||
|
|
|
||
|
|
const router = express.Router();
|
||
|
|
router.use(requireAuth);
|
||
|
|
|
||
|
|
const BUSINESS_TYPES = ['small_business', 'company', 'authority'];
|
||
|
|
|
||
|
|
async function acting(req) {
|
||
|
|
const profileId = (req.body && req.body.profileId) || req.query.profileId;
|
||
|
|
return resolveActingProfile(req.account, profileId);
|
||
|
|
}
|
||
|
|
|
||
|
|
// GET /api/businesses?profileId=
|
||
|
|
router.get('/businesses', async (req, res) => {
|
||
|
|
const { profile } = await acting(req);
|
||
|
|
res.json({ businesses: await loadBusinesses(profile ? profile.id : 0) });
|
||
|
|
});
|
||
|
|
|
||
|
|
// POST /api/business/status {profileId, status: open|closed} -> eigenes Gewerbe schalten
|
||
|
|
router.post('/business/status', async (req, res) => {
|
||
|
|
const { profile } = await acting(req);
|
||
|
|
if (!profile) return res.status(400).json({ error: 'no_profile' });
|
||
|
|
if (!BUSINESS_TYPES.includes(profile.profile_type) || !profile.can_edit_profile) {
|
||
|
|
return res.status(403).json({ error: 'not_allowed' });
|
||
|
|
}
|
||
|
|
const status = req.body.status === 'open' ? 'open' : req.body.status === 'closed' ? 'closed' : null;
|
||
|
|
if (!status) return res.status(400).json({ error: 'invalid_status' });
|
||
|
|
|
||
|
|
await db.exec(
|
||
|
|
`INSERT INTO bleeter_business_status (profile_id, status, source)
|
||
|
|
VALUES (?, ?, 'web')
|
||
|
|
ON DUPLICATE KEY UPDATE status = VALUES(status), source = VALUES(source)`,
|
||
|
|
[profile.id, status]
|
||
|
|
);
|
||
|
|
res.json({ ok: true, status });
|
||
|
|
});
|
||
|
|
|
||
|
|
module.exports = router;
|