feat(FE-366): create FinanceApiService with dummy data

This commit is contained in:
ValdiANS
2025-12-10 11:13:53 +07:00
parent e6c4a731b1
commit d1b918bcbf
+279
View File
@@ -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<Finance[]> = {
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<BaseApiResponse<Finance[]>> {
// return await httpClientFetcher<BaseApiResponse<Finance[]>>(endpoint);
await sleep(1000);
return dummyFinanceListResponse;
}
}
export const FinanceApi = new FinanceApiService('/finance');