mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
@@ -20,10 +20,10 @@ exports.getCategories = async (req, res) => {
|
||||
include: withBadge,
|
||||
order: [['rank', 'ASC']],
|
||||
});
|
||||
return R.success(res, 'Tier categories retrieved.', categories);
|
||||
return R.success(res, 'Subscription categories retrieved.', categories);
|
||||
} catch (err) {
|
||||
console.error('[ADMIN][GET TIER CATEGORIES]', err);
|
||||
return R.error(res, 'Could not retrieve tier categories.', 500);
|
||||
return R.error(res, 'Could not retrieve subscription categories.', 500);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -32,11 +32,11 @@ exports.getCategories = async (req, res) => {
|
||||
exports.getCategory = async (req, res) => {
|
||||
try {
|
||||
const cat = await mdl_TierCategories.findByPk(req.params.id, { include: withBadge });
|
||||
if (!cat) return R.error(res, 'Tier category not found.', 404);
|
||||
return R.success(res, 'Tier category retrieved.', cat);
|
||||
if (!cat) return R.error(res, 'Subscription category not found.', 404);
|
||||
return R.success(res, 'Subscription category retrieved.', cat);
|
||||
} catch (err) {
|
||||
console.error('[ADMIN][GET TIER CATEGORY]', err);
|
||||
return R.error(res, 'Could not retrieve tier category.', 500);
|
||||
return R.error(res, 'Could not retrieve subscription category.', 500);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -48,10 +48,10 @@ exports.createCategory = async (req, res) => {
|
||||
if (!slug || !name) return R.error(res, 'slug and name are required.', 400);
|
||||
|
||||
const parsedRank = Number(rank ?? 1);
|
||||
if (parsedRank <= 0) return R.error(res, 'Non-default tier categories must have rank greater than 0.', 400);
|
||||
if (parsedRank <= 0) return R.error(res, 'Non-default subscription categories must have rank greater than 0.', 400);
|
||||
|
||||
const exists = await mdl_TierCategories.findOne({ where: { slug } });
|
||||
if (exists) return R.error(res, `A tier category with slug "${slug}" already exists.`, 409);
|
||||
if (exists) return R.error(res, `A subscription category with slug "${slug}" already exists.`, 409);
|
||||
|
||||
const cat = await mdl_TierCategories.create({
|
||||
slug, name,
|
||||
@@ -69,10 +69,10 @@ exports.createCategory = async (req, res) => {
|
||||
logActivity(req.user?.user_id, 'create_tier_category', { entityType: 'tier_category', details: { slug, name } });
|
||||
|
||||
const result = await mdl_TierCategories.findByPk(cat.tier_category_id, { include: withBadge });
|
||||
return R.success(res, 'Tier category created.', result, 201);
|
||||
return R.success(res, 'Subscription category created.', result, 201);
|
||||
} catch (err) {
|
||||
console.error('[ADMIN][CREATE TIER CATEGORY]', err);
|
||||
return R.error(res, 'Could not create tier category.', 500);
|
||||
return R.error(res, 'Could not create subscription category.', 500);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -81,13 +81,13 @@ exports.createCategory = async (req, res) => {
|
||||
exports.updateCategory = async (req, res) => {
|
||||
try {
|
||||
const cat = await mdl_TierCategories.findByPk(req.params.id);
|
||||
if (!cat) return R.error(res, 'Tier category not found.', 404);
|
||||
if (!cat) return R.error(res, 'Subscription category not found.', 404);
|
||||
|
||||
const { name, description, rank, color, badge_asset_id, badge_icon, badge_label, is_active, is_special } = req.body;
|
||||
|
||||
if (!cat.is_default && rank !== undefined) {
|
||||
const parsedRank = Number(rank);
|
||||
if (parsedRank <= 0) return R.error(res, 'Non-default tier categories must have rank greater than 0.', 400);
|
||||
if (parsedRank <= 0) return R.error(res, 'Non-default subscription categories must have rank greater than 0.', 400);
|
||||
}
|
||||
|
||||
await cat.update({
|
||||
@@ -106,10 +106,10 @@ exports.updateCategory = async (req, res) => {
|
||||
logActivity(req.user?.user_id, 'update_tier_category', { entityType: 'tier_category', details: { id: cat.tier_category_id, slug: cat.slug } });
|
||||
|
||||
const result = await mdl_TierCategories.findByPk(cat.tier_category_id, { include: withBadge });
|
||||
return R.success(res, 'Tier category updated.', result);
|
||||
return R.success(res, 'Subscription category updated.', result);
|
||||
} catch (err) {
|
||||
console.error('[ADMIN][UPDATE TIER CATEGORY]', err);
|
||||
return R.error(res, 'Could not update tier category.', 500);
|
||||
return R.error(res, 'Could not update subscription category.', 500);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -118,8 +118,8 @@ exports.updateCategory = async (req, res) => {
|
||||
exports.deleteCategory = async (req, res) => {
|
||||
try {
|
||||
const cat = await mdl_TierCategories.findByPk(req.params.id);
|
||||
if (!cat) return R.error(res, 'Tier category not found.', 404);
|
||||
if (cat.is_default) return R.error(res, 'The default (Free) tier category cannot be deleted.', 400);
|
||||
if (!cat) return R.error(res, 'Subscription category not found.', 404);
|
||||
if (cat.is_default) return R.error(res, 'The default (Free) subscription category cannot be deleted.', 400);
|
||||
|
||||
// Block deletion if active plans still reference this category
|
||||
const activePlans = await mdl_TierPlans.count({
|
||||
@@ -130,9 +130,9 @@ exports.deleteCategory = async (req, res) => {
|
||||
|
||||
await cat.destroy();
|
||||
logActivity(req.user?.user_id, 'delete_tier_category', { entityType: 'tier_category', details: { slug: cat.slug } });
|
||||
return R.success(res, 'Tier category deleted.');
|
||||
return R.success(res, 'Subscription category deleted.');
|
||||
} catch (err) {
|
||||
console.error('[ADMIN][DELETE TIER CATEGORY]', err);
|
||||
return R.error(res, 'Could not delete tier category.', 500);
|
||||
return R.error(res, 'Could not delete subscription category.', 500);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user