import axiosClient from '../axios/axios'; import { API_ROUTES } from '@/constants/apiRoutes'; import type { Plan, PlanListParams, PlanListResponse, PlanRequest, } from '@/types'; function toPlanPayload(payload: PlanRequest) { return { name: payload.name, slug: payload.slug, description: payload.description, price: payload.price, billing_cycle: payload.billing_cycle, trial_days: payload.trial_days, max_projects: payload.max_projects, max_organizations: payload.max_organizations, max_users: payload.max_users, max_roles: payload.max_roles, permission_ids: payload.permission_ids, is_active: payload.is_active, is_custom: payload.is_custom, }; } export const planService = { getPlans: async (params?: PlanListParams): Promise => { const response = await axiosClient.get( API_ROUTES.PLANS.BASE, { params: { skip: params?.skip ?? 0, limit: params?.limit ?? 10, search_term: params?.search_term, name: params?.name, slug: params?.slug, is_active: params?.is_active, is_custom: params?.is_custom, sort_by: params?.sort_by, sort_order: params?.sort_order, }, }, ); return response.data; }, savePlan: async (payload: PlanRequest): Promise => { const requestPayload = toPlanPayload(payload); const response = payload.id ? await axiosClient.put( API_ROUTES.PLANS.DETAIL(payload.id), requestPayload, ) : await axiosClient.post(API_ROUTES.PLANS.BASE, requestPayload); return response.data; }, updatePlanStatus: async (id: number, isActive: boolean): Promise => { const response = await axiosClient.patch( API_ROUTES.PLANS.STATUS(id), { is_active: isActive, }, ); return response.data; }, };