partner.ts 1.64 KB
import type {
  PartnerDto,
  PartnerGetListQuery,
  PartnerUpsertInput,
} from './account-types';
import type { FlPagedResult } from './types';

import { requestClient } from '#/api/request';

const PATH = '/partner';

function trimOrNull(v: string | null | undefined): string | null {
  const t = (v ?? '').trim();
  return t || null;
}

function buildPartnerBody(input: PartnerUpsertInput) {
  return {
    partnerName: input.partnerName.trim(),
    contactEmail: trimOrNull(input.contactEmail ?? undefined),
    phoneNumber: trimOrNull(input.phoneNumber ?? undefined),
    state: input.state ?? true,
    street: trimOrNull(input.street ?? undefined),
    city: trimOrNull(input.city ?? undefined),
    stateCode: trimOrNull(input.stateCode ?? undefined),
    country: trimOrNull(input.country ?? undefined),
    zipCode: trimOrNull(input.zipCode ?? undefined),
  };
}

export function partnerList(params?: PartnerGetListQuery) {
  return requestClient.get<FlPagedResult<PartnerDto>>(PATH, {
    params,
    errorMessageMode: 'message',
  });
}

export function partnerInfo(id: string) {
  return requestClient.get<PartnerDto>(`${PATH}/${encodeURIComponent(id)}`, {
    errorMessageMode: 'message',
  });
}

export function partnerAdd(data: PartnerUpsertInput) {
  return requestClient.postWithMsg<PartnerDto>(PATH, buildPartnerBody(data));
}

export function partnerUpdate(id: string, data: PartnerUpsertInput) {
  return requestClient.putWithMsg<PartnerDto>(
    `${PATH}/${encodeURIComponent(id)}`,
    buildPartnerBody(data),
  );
}

export function partnerRemove(id: string) {
  return requestClient.deleteWithMsg<void>(
    `${PATH}/${encodeURIComponent(id)}`,
  );
}