feat: filter loyalty cards by program type and include membership details in controller response

This commit is contained in:
Suherdy Yacob 2026-06-15 15:46:41 +07:00
parent b2a14520ab
commit 4981764a5f

View File

@ -168,9 +168,15 @@ class AppNotificationController(http.Controller):
user = request.env.user
partner = user.partner_id
# Get all loyalty cards for this partner
cards = request.env['loyalty.card'].sudo().search([('partner_id', '=', partner.id)])
card_ids = cards.ids
# Get loyalty cards for this partner (only multi-level membership and subscription programs)
cards = request.env['loyalty.card'].sudo().search([
('partner_id', '=', partner.id),
'|',
('program_id.multi_level_membership', '=', True),
('program_id.program_type', '=', 'subscription')
])
card_data = {c.id: {'program_type': c.program_id.program_type, 'program_name': c.program_id.name} for c in cards}
card_ids = list(card_data.keys())
if not card_ids:
return {'status': 'success', 'data': []}
@ -250,6 +256,11 @@ class AppNotificationController(http.Controller):
else:
order_ref = rec.get('description') or ''
card_id_val = rec['card_id'][0] if isinstance(rec.get('card_id'), (list, tuple)) else rec.get('card_id')
card_info = card_data.get(card_id_val, {})
program_type = card_info.get('program_type') or 'loyalty'
program_name = card_info.get('program_name') or ''
result.append({
'id': rec['id'],
'date': str(rec.get('create_date') or ''),
@ -257,7 +268,9 @@ class AppNotificationController(http.Controller):
'type': point_type,
'order_ref': order_ref,
'pos_name': pos_name,
'card_id': rec['card_id'][0] if isinstance(rec.get('card_id'), (list, tuple)) else rec.get('card_id'),
'card_id': card_id_val,
'program_type': program_type,
'program_name': program_name,
})
return {'status': 'success', 'data': result}