lib/client/services/lineItem/lineItem.service.ts (38 lines of code) (raw):
import type { Client } from "soap";
import type { Statement, UpdateResult } from "../../../common/types";
import type { LineItemAction } from "./lineItem.action";
import type { LineItem, LineItemPage } from "./lineItem.type";
import type { LineItemServiceOperations } from "./lineItemService.interface";
export class LineItemService implements LineItemServiceOperations {
private _client: Client;
constructor(client: Client) {
this._client = client;
}
async createLineItems(lineItems: Partial<LineItem>[]): Promise<LineItem[]> {
return this._client.createLineItems({ lineItems });
}
async getLineItemsByStatement(
filterStatement: Statement,
): Promise<LineItemPage> {
return this._client.getLineItemsByStatement({
filterStatement,
});
}
async performLineItemAction(
lineItemAction: LineItemAction,
filterStatement: Statement,
): Promise<UpdateResult> {
return this._client.performLineItemAction({
lineItemAction: {
attributes: {
"xsi:type": lineItemAction.constructor.name,
},
...lineItemAction.buildAttributes(),
},
filterStatement,
});
}
async updateLineItems(lineItems: LineItem[]): Promise<LineItem[]> {
return this._client.updateLineItems({ lineItems });
}
}