UNPKG

@qite/tide-client

Version:
177 lines (159 loc) 4.65 kB
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); };