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 }); } }, };