refactor(FE-177-166-167): separate table repeater component and adjust data types with new API Payload

This commit is contained in:
randy-ar
2025-11-16 23:19:28 +07:00
parent 3fdb10ec7f
commit d3c4706d87
16 changed files with 593 additions and 496 deletions
+46
View File
@@ -9,6 +9,17 @@ import {
UpdateSalesOrderPayload,
} from '@/types/api/marketing/marketing';
/**
* 💡 Helper untuk membuat respons dummy
* @param data Data yang akan dimasukkan ke dalam body respons
*/
const createDummyResponse = <T>(data: T): BaseApiResponse<T> => ({
code: 200,
status: 'success',
message: 'Data retrieved successfully (MOCK)',
data: data,
});
export class MarketingService extends BaseApiService<
Marketing,
CreateSalesOrderPayload,
@@ -18,6 +29,41 @@ export class MarketingService extends BaseApiService<
super(basePath);
}
/**
* Override: Mengambil semua data Marketing dari dummyMarketings
*/
async getAllFetcher(endpoint: string): Promise<BaseApiResponse<Marketing[]>> {
// Simulasi delay jaringan
await sleep(500);
// Filter data marketing yang valid (jika menggunakan BaseMarketing[])
const data = dummyMarketings as Marketing[];
return createDummyResponse<Marketing[]>(data);
}
/**
* Override: Mengambil satu data Marketing berdasarkan ID dari dummyMarketings
*/
async getSingle(id: number): Promise<BaseApiResponse<Marketing> | undefined> {
// Simulasi delay jaringan
await sleep(300);
const foundData = dummyMarketings.find((m) => m.id == id);
if (foundData) {
// Data ditemukan, kembalikan respons sukses
return createDummyResponse<Marketing>(foundData as Marketing);
} else {
// Data tidak ditemukan, simulasi respons error
return {
code: 404,
status: 'error',
message: 'Marketing data not found (MOCK)',
};
}
}
/**
* Approve single marketing data
*/