import axiosClient from '../axios/axios'; import { API_ROUTES } from '@/constants/apiRoutes'; import type { Tenant, TenantCreateRequest, TenantListParams, TenantListResponse, TenantUpdateRequest, } from '@/types'; function toCreatePayload(payload: TenantCreateRequest) { return { name: payload.name, slug: payload.slug, client_id: payload.client_id, plan_id: payload.plan_id, domain: payload.domain || undefined, description: payload.description || undefined, admin: { first_name: payload.admin.first_name, last_name: payload.admin.last_name, email: payload.admin.email, phone_number: payload.admin.phone_number || undefined, }, }; } function toUpdatePayload(payload: TenantUpdateRequest) { return { name: payload.name, slug: payload.slug, client_id: payload.client_id, plan_id: payload.plan_id, domain: payload.domain || undefined, description: payload.description || undefined, }; } export const tenantService = { getTenants: async ( params?: TenantListParams, ): Promise => { const response = await axiosClient.get( API_ROUTES.TENANTS.BASE, { params: { skip: params?.skip ?? 0, limit: params?.limit ?? 10, search_term: params?.search_term, is_active: params?.is_active, sort_by: params?.sort_by, sort_order: params?.sort_order, }, }, ); return response.data; }, createTenant: async (payload: TenantCreateRequest): Promise => { const response = await axiosClient.post( API_ROUTES.TENANTS.BASE, toCreatePayload(payload), ); return response.data; }, updateTenant: async (payload: TenantUpdateRequest): Promise => { const response = await axiosClient.put( API_ROUTES.TENANTS.DETAIL(payload.id), toUpdatePayload(payload), ); return response.data; }, deleteTenant: async (id: number): Promise => { await axiosClient.delete(API_ROUTES.TENANTS.DETAIL(id)); }, };