From d1b918bcbf6bd62acdfd978b7edb90220a3b2335 Mon Sep 17 00:00:00 2001 From: ValdiANS Date: Wed, 10 Dec 2025 11:13:53 +0700 Subject: [PATCH] feat(FE-366): create FinanceApiService with dummy data --- src/services/api/finance.ts | 279 ++++++++++++++++++++++++++++++++++++ 1 file changed, 279 insertions(+) create mode 100644 src/services/api/finance.ts diff --git a/src/services/api/finance.ts b/src/services/api/finance.ts new file mode 100644 index 00000000..130ce8aa --- /dev/null +++ b/src/services/api/finance.ts @@ -0,0 +1,279 @@ +import { BaseApiService } from '@/services/api/base'; +import { + CreateFinancePayload, + Finance, + UpdateFinancePayload, +} from '@/types/api/finance'; + +import { BaseApiResponse } from '@/types/api/api-general'; +import { httpClientFetcher } from '@/services/http/client'; +import { sleep } from '@/lib/helper'; + +export const dummyFinanceListResponse: BaseApiResponse = { + code: 200, + status: 'success', + message: 'Finance list fetched successfully', + meta: { + page: 1, + limit: 15, + total_pages: 1, + total_results: 15, + }, + data: [ + { + id: 1, + reference_number: 'FIN-202501-001', + transaction_type: 'REVENUE', + customer_name: 'PT Sumber Makmur', + payment_date: '2025-01-05', + created_date: '2025-01-03', + payment_method: 'TRANSFER', + bank_name: 'BCA', + expense_amount: 0, + revenue_amount: 5000000, + + created_user: { + id: 1, + id_user: 101, + email: 'admin@example.com', + name: 'Admin', + }, + created_at: '2025-01-03T10:00:00Z', + updated_at: '2025-01-04T09:00:00Z', + }, + { + id: 2, + reference_number: 'FIN-202501-002', + transaction_type: 'EXPENSE', + customer_name: 'UD Sentosa Farm', + payment_date: '2025-01-06', + created_date: '2025-01-04', + payment_method: 'CASH', + bank_name: '-', + expense_amount: 1200000, + revenue_amount: 0, + + created_user: { + id: 2, + id_user: 102, + email: 'user1@example.com', + name: 'Budi Santoso', + }, + created_at: '2025-01-04T08:20:00Z', + updated_at: '2025-01-04T08:20:00Z', + }, + { + id: 3, + reference_number: 'FIN-202501-003', + transaction_type: 'REVENUE', + customer_name: 'PT Golden Egg', + payment_date: '2025-01-07', + created_date: '2025-01-05', + payment_method: 'TRANSFER', + bank_name: 'Mandiri', + expense_amount: 0, + revenue_amount: 7800000, + + created_user: { + id: 3, + id_user: 103, + email: 'user2@example.com', + name: 'Clara Wijaya', + }, + created_at: '2025-01-05T07:00:00Z', + updated_at: '2025-01-06T15:00:00Z', + }, + { + id: 4, + reference_number: 'FIN-202501-004', + transaction_type: 'EXPENSE', + customer_name: 'PT Logistic Nusantara', + payment_date: '2025-01-07', + created_date: '2025-01-05', + payment_method: 'TRANSFER', + bank_name: 'BRI', + expense_amount: 950000, + revenue_amount: 0, + + created_user: { + id: 4, + id_user: 104, + email: 'user3@example.com', + name: 'Dedi Pratama', + }, + created_at: '2025-01-05T09:00:00Z', + updated_at: '2025-01-05T09:00:00Z', + }, + { + id: 5, + reference_number: 'FIN-202501-005', + transaction_type: 'REVENUE', + customer_name: 'CV Agro Sentosa', + payment_date: '2025-01-08', + created_date: '2025-01-06', + payment_method: 'TRANSFER', + bank_name: 'BCA', + expense_amount: 0, + revenue_amount: 3200000, + + created_user: { + id: 5, + id_user: 105, + email: 'user4@example.com', + name: 'Erika Tan', + }, + created_at: '2025-01-06T10:00:00Z', + updated_at: '2025-01-07T11:00:00Z', + }, + { + id: 6, + reference_number: 'FIN-202501-006', + transaction_type: 'EXPENSE', + customer_name: 'PT Pakan Jaya', + payment_date: '2025-01-08', + created_date: '2025-01-06', + payment_method: 'TRANSFER', + bank_name: 'BNI', + expense_amount: 2300000, + revenue_amount: 0, + + created_user: { + id: 1, + id_user: 101, + email: 'admin@example.com', + name: 'Admin', + }, + created_at: '2025-01-06T12:00:00Z', + updated_at: '2025-01-06T12:00:00Z', + }, + { + id: 7, + reference_number: 'FIN-202501-007', + transaction_type: 'REVENUE', + customer_name: 'PT Telur Sejahtera', + payment_date: '2025-01-09', + created_date: '2025-01-07', + payment_method: 'CASH', + bank_name: '-', + expense_amount: 0, + revenue_amount: 5400000, + + created_user: { + id: 2, + id_user: 102, + email: 'user1@example.com', + name: 'Budi Santoso', + }, + created_at: '2025-01-07T11:00:00Z', + updated_at: '2025-01-07T11:00:00Z', + }, + { + id: 8, + reference_number: 'FIN-202501-008', + transaction_type: 'EXPENSE', + customer_name: 'CV Transport Mulia', + payment_date: '2025-01-09', + created_date: '2025-01-07', + payment_method: 'TRANSFER', + bank_name: 'Mandiri', + expense_amount: 750000, + revenue_amount: 0, + + created_user: { + id: 3, + id_user: 103, + email: 'user2@example.com', + name: 'Clara Wijaya', + }, + created_at: '2025-01-07T14:00:00Z', + updated_at: '2025-01-07T14:00:00Z', + }, + { + id: 9, + reference_number: 'FIN-202501-009', + transaction_type: 'REVENUE', + customer_name: 'PT IndoEgg', + payment_date: '2025-01-10', + created_date: '2025-01-08', + payment_method: 'TRANSFER', + bank_name: 'BCA', + expense_amount: 0, + revenue_amount: 4100000, + + created_user: { + id: 4, + id_user: 104, + email: 'user3@example.com', + name: 'Dedi Pratama', + }, + created_at: '2025-01-08T08:00:00Z', + updated_at: '2025-01-09T16:00:00Z', + }, + { + id: 10, + reference_number: 'FIN-202501-010', + transaction_type: 'EXPENSE', + customer_name: 'PT Listrik Jaya', + payment_date: '2025-01-10', + created_date: '2025-01-08', + payment_method: 'TRANSFER', + bank_name: 'BRI', + expense_amount: 1800000, + revenue_amount: 0, + + created_user: { + id: 5, + id_user: 105, + email: 'user4@example.com', + name: 'Erika Tan', + }, + created_at: '2025-01-08T09:00:00Z', + updated_at: '2025-01-08T09:00:00Z', + }, + + // Remaining 5 items for total 15: + ...Array.from({ length: 5 }).map((_, i) => { + const idx = i + 11; + return { + id: idx, + reference_number: `FIN-202501-${String(idx).padStart(3, '0')}`, + transaction_type: idx % 2 === 0 ? 'EXPENSE' : 'REVENUE', + customer_name: `Customer ${idx}`, + payment_date: `2025-01-${10 + i}`, + created_date: `2025-01-${9 + i}`, + payment_method: idx % 2 === 0 ? 'TRANSFER' : 'CASH', + bank_name: idx % 2 === 0 ? 'Mandiri' : '-', + expense_amount: idx % 2 === 0 ? 1000000 + i * 150000 : 0, + revenue_amount: idx % 2 !== 0 ? 3000000 + i * 200000 : 0, + + created_user: { + id: idx % 5, + id_user: 100 + (idx % 5), + email: `user${idx % 5}@example.com`, + name: `User ${idx % 5}`, + }, + created_at: `2025-01-${9 + i}T10:00:00Z`, + updated_at: `2025-01-${9 + i}T12:00:00Z`, + }; + }), + ], +}; + +export class FinanceApiService extends BaseApiService< + Finance, + CreateFinancePayload, + UpdateFinancePayload +> { + constructor(basePath: string) { + super(basePath); + } + + async getAllFetcher(endpoint: string): Promise> { + // return await httpClientFetcher>(endpoint); + await sleep(1000); + + return dummyFinanceListResponse; + } +} + +export const FinanceApi = new FinanceApiService('/finance');