import type { TeamMemberCreateInput, TeamMemberDto, TeamMemberGetListQuery, TeamMemberUpdateInput, } from './account-types'; import type { FlPagedResult } from './types'; import { requestClient } from '#/api/request'; const PATH = '/team-member'; function toPhoneNumber(v: string | number | null | undefined): number | null { if (v === null || v === undefined || v === '') { return null; } const s = String(v).trim(); if (!s) { return null; } return Number(s.replace(/\D/g, '')) || 0; } function scopeIdsForApi(ids: string[] | undefined): string[] | undefined { const list = [ ...new Set((ids ?? []).map((x) => String(x).trim()).filter(Boolean)), ]; return list.length ? list : undefined; } function buildCreatePayload(input: TeamMemberCreateInput) { const phoneVal = input.phone != null && input.phone !== '' ? toPhoneNumber(String(input.phone)) : null; const partnerId = (input.partnerId ?? '').trim() || undefined; const regionIds = scopeIdsForApi(input.regionIds); return { fullName: input.fullName, userName: input.userName, password: input.password, email: input.email ?? null, phone: phoneVal, roleId: input.roleId, partnerId, partnerIds: partnerId ? [partnerId] : undefined, regionIds, groupIds: regionIds, locationIds: input.locationIds, locations: input.locationIds, state: input.state, }; } function buildUpdatePayload(input: TeamMemberUpdateInput) { const phoneVal = input.phone != null && input.phone !== '' ? toPhoneNumber(String(input.phone)) : null; const partnerId = (input.partnerId ?? '').trim() || undefined; const regionIds = scopeIdsForApi(input.regionIds); const payload: Record = { fullName: input.fullName, userName: input.userName, email: input.email ?? null, phone: phoneVal, roleId: input.roleId, partnerId, partnerIds: partnerId ? [partnerId] : undefined, regionIds, groupIds: regionIds, locationIds: input.locationIds, locations: input.locationIds, state: input.state, }; if (input.password) { payload.password = input.password; } return payload; } export function teamMemberList(params?: TeamMemberGetListQuery) { return requestClient.get>(PATH, { params, errorMessageMode: 'message', }); } export function teamMemberInfo(id: string) { return requestClient.get( `${PATH}/${encodeURIComponent(id)}`, { errorMessageMode: 'message' }, ); } export function teamMemberAdd(data: TeamMemberCreateInput) { return requestClient.postWithMsg( PATH, buildCreatePayload(data), ); } export function teamMemberUpdate(id: string, data: TeamMemberUpdateInput) { return requestClient.putWithMsg( `${PATH}/${encodeURIComponent(id)}`, buildUpdatePayload(data), ); } export function teamMemberRemove(id: string) { return requestClient.deleteWithMsg( `${PATH}/${encodeURIComponent(id)}`, ); }