import { APIClient } from "./ApiClient"; export type Balances = Record; export interface MovementUpdate { account_id: number; time: number; label: string; file_id?: number; amount: number; checked: boolean; } export interface Movement { id: number; account_id: number; time: number; label: string; file_id?: number; amount: number; checked: boolean; time_create: number; time_update: number; } export class MovementApi { /** * Get all accounts balances */ static async GetAllBalances(): Promise { return ( await APIClient.exec({ uri: `/accounts/balances`, method: "GET", }) ).data; } /** * Create a new movement */ static async Create(q: MovementUpdate): Promise { await APIClient.exec({ uri: `/movement`, method: "POST", jsonData: q, }); } /** * Get all the movements of an account */ static async GetAccountMovements( account_id: number, filters?: { amount_min?: number; amount_max?: number; time_min?: number; time_max?: number; label?: string; limit?: number; } ): Promise { let filtersS = new URLSearchParams(); if (filters) { if (filters.amount_min) filtersS.append("amount_min", filters.amount_min.toString()); if (filters.amount_max) filtersS.append("amount_max", filters.amount_max.toString()); if (filters.time_min) filtersS.append("time_min", filters.time_min.toString()); if (filters.time_max) filtersS.append("time_max", filters.time_max.toString()); if (filters.label) filtersS.append("label", filters.label); if (filters.limit) filtersS.append("limit", filters.limit); } return ( await APIClient.exec({ uri: `/account/${account_id}/movements?${filtersS}`, method: "GET", }) ).data; } /** * Get a single movement information */ static async GetSingleMovement(movement_id: number): Promise { return ( await APIClient.exec({ uri: `/movement/${movement_id}`, method: "GET", }) ).data; } /** * Update a movement information */ static async Update(movement: Movement): Promise { return ( await APIClient.exec({ uri: `/movement/${movement.id}`, method: "PUT", jsonData: movement, }) ).data; } /** * Delete a movement */ static async Delete(movement: Movement): Promise { await APIClient.exec({ uri: `/movement/${movement.id}`, method: "DELETE", }); } }