appointment_system/backend/src/services/homeService.js
2025-12-15 23:42:31 +08:00

49 lines
1.2 KiB
JavaScript

/**
* Home content service
*/
const Banner = require('../models/Banner');
const HotService = require('../models/HotService');
/**
* Get active banners (sorted by sort_order)
*/
exports.getActiveBanners = async () => {
const banners = await Banner.findAll({
where: { is_active: true },
attributes: ['id', 'image_url', 'link_url', 'sort_order'],
order: [
['sort_order', 'ASC'],
['id', 'ASC'],
],
});
return banners;
};
/**
* Get active hot services (sorted by sort_order)
*/
exports.getActiveHotServices = async (lang = 'zh') => {
const services = await HotService.findAll({
where: { is_active: true },
attributes: ['id', 'name_zh', 'name_en', 'name_pt', 'image_url', 'detail_image', 'link_url', 'sort_order'],
order: [
['sort_order', 'ASC'],
['id', 'ASC'],
],
});
// Map name based on language
return services.map((service) => {
const nameField = lang === 'en' ? 'name_en' : lang === 'pt' ? 'name_pt' : 'name_zh';
return {
id: service.id,
name: service[nameField],
image_url: service.image_url,
detail_image: service.detail_image,
link_url: service.link_url,
sort_order: service.sort_order,
};
});
};