CentralBackend/controller/abonemments/AbonemmentController.js
2025-12-15 16:58:55 +01:00

126 lines
4.7 KiB
JavaScript

const AbonemmentService = require('../../services/abonemments/AbonemmentService');
const service = new AbonemmentService();
module.exports = {
async subscribe(req, res) {
try {
const rawUser = req.user || {};
console.log('[CONTROLLER SUBSCRIBE] Raw req.user:', { id: rawUser.id, userId: rawUser.userId, email: rawUser.email, role: rawUser.role });
const actorUser = { ...rawUser, id: rawUser.id ?? rawUser.userId ?? null };
console.log('[CONTROLLER SUBSCRIBE] Normalized actorUser:', { id: actorUser.id, email: actorUser.email, role: actorUser.role });
const result = await service.subscribeOrder({
userId: actorUser.id || null,
items: req.body.items,
billingInterval: req.body.billing_interval,
intervalCount: req.body.interval_count,
isAutoRenew: req.body.is_auto_renew,
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
street: req.body.street,
postalCode: req.body.postalCode,
city: req.body.city,
country: req.body.country,
frequency: req.body.frequency,
startDate: req.body.startDate,
actorUser, // normalized to include id
referredBy: req.body.referred_by,
});
return res.json({ success: true, data: result });
} catch (err) {
console.error('[ABONEMENT SUBSCRIBE]', err);
return res.status(400).json({ success: false, message: err.message });
}
},
async pause(req, res) {
try {
const rawUser = req.user || {};
const actorUser = { ...rawUser, id: rawUser.id ?? rawUser.userId ?? null };
const data = await service.pause({ abonementId: req.params.id, actorUser });
return res.json({ success: true, data });
} catch (err) {
console.error('[ABONEMENT PAUSE]', err);
return res.status(400).json({ success: false, message: err.message });
}
},
async resume(req, res) {
try {
const rawUser = req.user || {};
const actorUser = { ...rawUser, id: rawUser.id ?? rawUser.userId ?? null };
const data = await service.resume({ abonementId: req.params.id, actorUser });
return res.json({ success: true, data });
} catch (err) {
console.error('[ABONEMENT RESUME]', err);
return res.status(400).json({ success: false, message: err.message });
}
},
async cancel(req, res) {
try {
const rawUser = req.user || {};
const actorUser = { ...rawUser, id: rawUser.id ?? rawUser.userId ?? null };
const data = await service.cancel({ abonementId: req.params.id, actorUser });
return res.json({ success: true, data });
} catch (err) {
console.error('[ABONEMENT CANCEL]', err);
return res.status(400).json({ success: false, message: err.message });
}
},
async renew(req, res) {
try {
const rawUser = req.user || {};
const actorUser = { ...rawUser, id: rawUser.id ?? rawUser.userId ?? null };
const data = await service.adminRenew({ abonementId: req.params.id, actorUser });
return res.json({ success: true, data });
} catch (err) {
console.error('[ABONEMENT RENEW]', err);
return res.status(403).json({ success: false, message: err.message });
}
},
async getMine(req, res) {
try {
const rawUser = req.user || {};
const id = rawUser.id ?? rawUser.userId;
console.log('[CONTROLLER GET MINE] Using user id:', id);
const data = await service.getMyAbonements({ userId: id });
return res.json({ success: true, data });
} catch (err) {
console.error('[ABONEMENT MINE]', err);
return res.status(500).json({ success: false, message: 'Internal error' });
}
},
async getHistory(req, res) {
try {
return res.json({ success: true, data: await service.getHistory({ abonementId: req.params.id }) });
} catch (err) {
console.error('[ABONEMENT HISTORY]', err);
return res.status(400).json({ success: false, message: err.message });
}
},
async adminList(req, res) {
try {
return res.json({ success: true, data: await service.adminList({ status: req.query.status }) });
} catch (err) {
console.error('[ABONEMENT ADMIN LIST]', err);
return res.status(403).json({ success: false, message: err.message });
}
},
async getReferredSubscriptions(req, res) {
try {
const rawUser = req.user || {};
const id = rawUser.id ?? rawUser.userId;
return res.json({ success: true, data: await service.getReferredSubscriptions({ userId: id, email: rawUser.email }) });
} catch (err) {
console.error('[ABONEMENT REFERRED SUBSCRIPTIONS]', err);
return res.status(400).json({ success: false, message: err.message });
}
},
};