import { apiClient } from './client'; import { Promotion, CreatePromotionData, UpdatePromotionData, ApiResponse } from '@/types/promotion'; export const promotionsApi = { // Get all promotions getPromotions: async (token: string): Promise => { return apiClient.get('/promotions', token); }, // Get single promotion getPromotion: async (id: number, token: string): Promise => { return apiClient.get(`/promotions/${id}`, token); }, // Create new promotion createPromotion: async (data: CreatePromotionData, token: string): Promise> => { const formData = new FormData(); // Append all fields to FormData Object.entries(data).forEach(([key, value]) => { if (value !== null && value !== undefined) { if (key === 'image' && value instanceof File) { formData.append('image', value); } else { formData.append(key, String(value)); } } }); return apiClient.post>('/promotions', formData, token); }, // Update promotion updatePromotion: async (id: number, data: UpdatePromotionData, token: string): Promise> => { const formData = new FormData(); // Add method spoofing for Laravel // formData.append('_method', 'PUT'); // Append all fields to FormData Object.entries(data).forEach(([key, value]) => { if (value !== null && value !== undefined) { if (key === 'image' && value instanceof File) { formData.append('image', value); } else if (key === 'is_active') { formData.append(key, value ? '1' : '0'); } else { formData.append(key, String(value)); } } }); return apiClient.post>(`/promotions/${id}`, formData, token); }, // Delete promotion deletePromotion: async (id: number, token: string): Promise> => { return apiClient.delete>(`/promotions/${id}`, undefined, token); }, // Toggle promotion active status toggleActive: async (id: number, isActive: boolean, token: string): Promise> => { return apiClient.put>(`/promotions/${id}`, { is_active: isActive }, token); } };