import { api } from '@/lib/api' import type { Redemption, ApiResponse, GetRedemptionsParams, GetRedemptionsResponse, SearchRedemptionsParams, RedemptionFormData, } from './types' // ============================================================================ // Redemption Code Management // ============================================================================ // Get paginated redemption codes list export async function getRedemptions( params: GetRedemptionsParams = {} ): Promise { const { p = 1, page_size = 10 } = params const res = await api.get(`/api/redemption/?p=${p}&page_size=${page_size}`) return res.data } // Search redemption codes by keyword export async function searchRedemptions( params: SearchRedemptionsParams ): Promise { const { keyword = '', p = 1, page_size = 10 } = params const res = await api.get( `/api/redemption/search?keyword=${keyword}&p=${p}&page_size=${page_size}` ) return res.data } // Get single redemption code by ID export async function getRedemption( id: number ): Promise> { const res = await api.get(`/api/redemption/${id}`) return res.data } // Create redemption code(s) export async function createRedemption( data: RedemptionFormData ): Promise> { const res = await api.post('/api/redemption/', data) return res.data } // Update redemption code export async function updateRedemption( data: RedemptionFormData & { id: number } ): Promise> { const res = await api.put('/api/redemption/', data) return res.data } // Update redemption code status (enable/disable) export async function updateRedemptionStatus( id: number, status: number ): Promise> { const res = await api.put('/api/redemption/?status_only=true', { id, status }) return res.data } // Delete a single redemption code export async function deleteRedemption(id: number): Promise { const res = await api.delete(`/api/redemption/${id}/`) return res.data } // Delete invalid redemption codes (used, disabled, expired) export async function deleteInvalidRedemptions(): Promise> { const res = await api.delete('/api/redemption/invalid') return res.data }