126 lines
4.7 KiB
JavaScript
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 });
|
|
}
|
|
},
|
|
}; |