feat: add superadmin tenant module
This commit is contained in:
@@ -37,6 +37,11 @@ export const clientService = {
|
||||
return response.data;
|
||||
},
|
||||
|
||||
getClientById: async (id: number): Promise<Client> => {
|
||||
const response = await axiosClient.get<Client>(`${CLIENTS_ENDPOINT}/${id}`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
saveClient: async (payload: ClientRequest): Promise<Client> => {
|
||||
const requestPayload = toClientPayload(payload);
|
||||
const response = payload.id
|
||||
|
||||
@@ -11,3 +11,4 @@ export * from './role.service';
|
||||
export * from './user.service';
|
||||
export * from './client.service';
|
||||
export * from './plan.service';
|
||||
export * from './tenant.service';
|
||||
|
||||
71
src/services/api/tenant.service.ts
Normal file
71
src/services/api/tenant.service.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
import axiosClient from '../axios/axios';
|
||||
import type {
|
||||
Tenant,
|
||||
TenantCreateRequest,
|
||||
TenantListParams,
|
||||
TenantListResponse,
|
||||
TenantUpdateRequest,
|
||||
} from '@/types';
|
||||
|
||||
const TENANTS_ENDPOINT = 'api/superadmin/tenants';
|
||||
|
||||
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<TenantListResponse> => {
|
||||
const response = await axiosClient.get<TenantListResponse>(TENANTS_ENDPOINT, {
|
||||
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<Tenant> => {
|
||||
const response = await axiosClient.post<Tenant>(TENANTS_ENDPOINT, toCreatePayload(payload));
|
||||
return response.data;
|
||||
},
|
||||
|
||||
updateTenant: async (payload: TenantUpdateRequest): Promise<Tenant> => {
|
||||
const response = await axiosClient.put<Tenant>(
|
||||
`${TENANTS_ENDPOINT}/${payload.id}`,
|
||||
toUpdatePayload(payload),
|
||||
);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
deleteTenant: async (id: number): Promise<void> => {
|
||||
await axiosClient.delete(`${TENANTS_ENDPOINT}/${id}`);
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user