CentralBackend/controller/abonemments/AbonemmentController.js
2025-12-13 11:15:20 +01:00

114 lines
3.7 KiB
JavaScript

const AbonemmentService = require('../../services/abonemments/AbonemmentService');
const service = new AbonemmentService();
module.exports = {
async subscribe(req, res) {
try {
const result = await service.subscribeOrder({
userId: req.user?.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: req.user,
referredBy: req.body.referred_by, // NEW: Pass referred_by from frontend
});
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 data = await service.pause({ abonementId: req.params.id, actorUser: req.user });
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 data = await service.resume({ abonementId: req.params.id, actorUser: req.user });
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 data = await service.cancel({ abonementId: req.params.id, actorUser: req.user });
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 data = await service.adminRenew({ abonementId: req.params.id, actorUser: req.user });
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 data = await service.getMyAbonements({ userId: req.user.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 {
const data = await service.getHistory({ abonementId: req.params.id });
return res.json({ success: true, data });
} catch (err) {
console.error('[ABONEMENT HISTORY]', err);
return res.status(400).json({ success: false, message: err.message });
}
},
async adminList(req, res) {
try {
const data = await service.adminList({ status: req.query.status });
return res.json({ success: true, data });
} catch (err) {
console.error('[ABONEMENT ADMIN LIST]', err);
return res.status(403).json({ success: false, message: err.message });
}
},
async getReferredSubscriptions(req, res) {
try {
const data = await service.getReferredSubscriptions({
userId: req.user.id,
email: req.user.email,
});
return res.json({ success: true, data });
} catch (err) {
console.error('[ABONEMENT REFERRED SUBSCRIPTIONS]', err);
return res.status(400).json({ success: false, message: err.message });
}
},
};