import { apiClient } from './client'; import { Reminder, CreateReminderData, UpdateReminderData, ApiResponse } from '@/types/reminder'; export const remindersApi = { // Get all reminders for a package getReminders: async (packageName: string, token: string): Promise => { return apiClient.get(`/package-names/${packageName}/reminders`, token); }, // Get single reminder getReminder: async (packageName: string, reminderId: number, token: string): Promise => { return apiClient.get(`/package-names/${packageName}/reminders/${reminderId}`, token); }, // Create new reminder createReminder: async (packageName: string, data: CreateReminderData, 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 === 'data' && typeof value === 'object') { formData.append(key, JSON.stringify(value)); } else { formData.append(key, String(value)); } } }); return apiClient.post>(`/package-names/${packageName}/reminders`, formData, token); }, // Update reminder (using PUT) updateReminder: async (packageName: string, reminderId: number, data: UpdateReminderData, token: string): Promise> => { return apiClient.put>( `/package-names/${packageName}/reminders/${reminderId}`, data, token ); }, // Delete reminder deleteReminder: async (packageName: string, reminderId: number, token: string): Promise> => { return apiClient.delete>(`/package-names/${packageName}/reminders/${reminderId}`, undefined, token); }, // Alternative update method using POST with _method spoofing (if PUT is not supported) updateReminderWithSpoof: async (packageName: string, reminderId: number, data: UpdateReminderData, token: string): Promise> => { const formData = new FormData(); formData.append('_method', 'PUT'); Object.entries(data).forEach(([key, value]) => { if (value !== null && value !== undefined) { if (key === 'data' && typeof value === 'object') { formData.append(key, JSON.stringify(value)); } else { formData.append(key, String(value)); } } }); return apiClient.post>(`/package-names/${packageName}/reminders/${reminderId}`, formData, token); } };