import axios from "axios"; import { CustomError } from "@nimee/error-handler"; import { IAccountModel, IPaymeUpdateOrCreateSellerWebhookPayload } from "@nimee/shared-types"; const port = process.env.USER_PORT; const basePath = process.env.IS_LOCAL === "true" ? `http://127.0.0.1:${port}` : "http://user"; const accountUrl = `${basePath}/user/account`; export class AccountClient { async updateAccountByCreateSellerWebhook(params: { jwt: string; webhookData: IPaymeUpdateOrCreateSellerWebhookPayload }) { const { webhookData, jwt } = params; if (!jwt || !webhookData) { throw new CustomError("param_are_missing_in_updateAccountByCreateSellerWebhook", 400, `webhookData is: ${webhookData}`); } const response = await axios.post(`${accountUrl}/updateAccountByCreateSellerWebhook`, { webhookData }, { headers: { jwt } }); return response?.data; } async getAccountById(params: { jwt: string; accountId: string }) { const { accountId, jwt } = params; if (!jwt || !accountId) { throw new CustomError("param_are_missing_in_GET_ACCOUNT_BY_ID", 400, `params are: ${accountId}`); } const response = await axios.get(`${accountUrl}/${accountId}`, { headers: { jwt } }); return response?.data; } async getAccountByHandler(params: { handler: string }) { const { handler } = params; if (!handler) { throw new CustomError("param_are_missing_in_GET_ACCOUNT_BY_HANDLER", 400, "params are missing"); } const response = await axios.get(`${accountUrl}/getByHandler/${handler}`); return response?.data; } async updateAccountById(params: { jwt: string; accountId: string; accountData: IAccountModel }) { const { accountId, jwt, accountData } = params; if (!jwt || !accountId) { throw new CustomError("param_are_missing_in_update_account_by_id", 400, `params are: ${params}`); } const response = await axios.put(`${accountUrl}/updateAccount/${accountId}`, accountData, { headers: { jwt } }); return response?.data; } async getSubAccountsByParentId(params: { jwt: string; accountId: string }) { const { jwt, accountId } = params; if (!jwt || !accountId) { throw new CustomError("param_are_missing_in_update_account_by_id", 400, `params are: ${params}`); } const response = await axios.get(`${accountUrl}/subAccountsByParentId/${accountId}`, { headers: { jwt } }); return response?.data; } // Daily Z-report cron: list all accounts with zReport.enabled=true (minimal projection). async getZReportEnabledAccounts(params: { jwt: string }) { const { jwt } = params; if (!jwt) { throw new CustomError("param_are_missing_in_get_z_report_enabled_accounts", 400, "jwt is missing"); } const response = await axios.get(`${basePath}/user/accounts/z-report-enabled`, { headers: { jwt } }); return response?.data; } }