@qite/tide-client
Version:
Frontend client for Tide
177 lines (159 loc) • 4.65 kB
text/typescript
import { createParams } from "../services/odata.service";
import {
AgentInvoiceItem,
AgentPrintAction,
AgentPrintActionRequest,
ChangeEntryAgentSurchargeAction,
Column,
CustomEntryStatusItem,
DossierViewResult,
EntryTotals,
FilterItem,
NumberStringPair,
PageResult,
PrintActionGroup,
TideClientConfig,
} from "../types";
import { post } from "./api";
import { get } from "./common-client";
const ENDPOINT = "/api/web/agent";
const ENDPOINT_GET_PRINT_ACTIONS = `${ENDPOINT}/print-action`;
const ENDPOINT_PRINT = `${ENDPOINT}/print-action`;
const ENDPOINT_CUSTOM_ENTRY_STATUS = `${ENDPOINT}/custom-entry-status`;
const ENDPOINT_ENUM_ENTRY_STATUS = `${ENDPOINT}/enum/entry-status`;
const ENDPOINT_CHANGE_ENTRY_AGENT_SURCHARGE = `${ENDPOINT}/entry/change-agent-surcharge`;
/**
* api/web/agent/print-action/{print-action-group}
* @param config
* @param printActionGroup
* @param signal
* @returns print actions that are available for agents for given group.
*/
export const getPrintActions = (
config: TideClientConfig,
printActionGroup: PrintActionGroup,
signal?: AbortSignal
): Promise<AgentPrintAction[]> => {
const url = `${config.host}${ENDPOINT_GET_PRINT_ACTIONS}/${printActionGroup}`;
const apiKey = config.apiKey;
return get<AgentPrintAction[]>(url, apiKey, config.token, signal, true);
};
/**
* api/web/agent/print-action
* @param config
* @param request
* @param signal
* @returns pdf as stream.
*/
export const print = (
config: TideClientConfig,
request: AgentPrintActionRequest,
signal?: AbortSignal
): Promise<Response> => {
const url = `${config.host}${ENDPOINT_PRINT}`;
const apiKey = config.apiKey;
const body = JSON.stringify(request);
return post(url, apiKey, body, config.token, signal, undefined);
};
export const getEntryList = (
config: TideClientConfig,
filterItem: FilterItem,
gridColumns?: Column[],
signal?: AbortSignal
): Promise<PageResult<DossierViewResult>> => {
const params = createParams(filterItem, false, gridColumns);
const queryString = Object.keys(params)
.map(
(key) => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`
)
.join("&");
const url = `${config.host}${ENDPOINT}/entry/list?${queryString}`;
const apiKey = config.apiKey;
return get<PageResult<DossierViewResult>>(
url,
apiKey,
config.token,
signal,
true
);
};
export const getEntryTotals = (
config: TideClientConfig,
filterItem: FilterItem,
gridColumns?: Column[],
signal?: AbortSignal
): Promise<EntryTotals> => {
const params = createParams(filterItem, false, gridColumns);
const queryString = Object.keys(params)
.map(
(key) => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`
)
.join("&");
const url = `${config.host}${ENDPOINT}/entry/total?${queryString}`;
const apiKey = config.apiKey;
return get<EntryTotals>(url, apiKey, config.token, signal, true);
};
export const getInvoiceList = (
config: TideClientConfig,
filterItem: FilterItem,
gridColumns?: Column[],
signal?: AbortSignal
): Promise<PageResult<AgentInvoiceItem>> => {
const params = createParams(filterItem, false, gridColumns);
const queryString = Object.keys(params)
.map(
(key) => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`
)
.join("&");
const url = `${config.host}${ENDPOINT}/invoice/list?${queryString}`;
const apiKey = config.apiKey;
return get<PageResult<AgentInvoiceItem>>(
url,
apiKey,
config.token,
signal,
true
);
};
export const getCustomEntryStatus = (
config: TideClientConfig,
signal?: AbortSignal,
languageCode?: string
): Promise<CustomEntryStatusItem[]> => {
const url = `${config.host}${ENDPOINT_CUSTOM_ENTRY_STATUS}`;
const apiKey = config.apiKey;
return get<CustomEntryStatusItem[]>(
url,
apiKey,
config.token,
signal,
true,
languageCode
);
};
export const getEntryStatus = (
config: TideClientConfig,
signal?: AbortSignal,
languageCode?: string
): Promise<NumberStringPair[]> => {
const url = `${config.host}${ENDPOINT_ENUM_ENTRY_STATUS}`;
const apiKey = config.apiKey;
return get<NumberStringPair[]>(
url,
apiKey,
config.token,
signal,
true,
languageCode
);
};
export const changeEntryAgentSurcharge = (
config: TideClientConfig,
request: ChangeEntryAgentSurchargeAction,
signal?: AbortSignal
) => {
const url = `${config.host}${ENDPOINT_CHANGE_ENTRY_AGENT_SURCHARGE}`;
const apiKey = config.apiKey;
const body = JSON.stringify(request);
return post(url, apiKey, body, config.token, signal);
};